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

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

{
  long lVar1;
  long lVar2;
  long lVar3;
  long *plVar4;
  long *plVar5;
  long lVar6;
  long *plVar7;
  long *plVar8;
  long lVar9;
  long lVar10;
  _ValueType __value;
  
  lVar6 = (long)__last - (long)__first;
  if (0x180 < lVar6) {
    if (__depth_limit != 0) {
      plVar8 = __last;
LAB_002d572b:
      lVar6 = __first[3];
      __depth_limit = __depth_limit + -1;
      lVar10 = plVar8[-3];
      lVar9 = *__first;
      lVar1 = __first[1];
      lVar2 = __first[2];
      plVar5 = __first + ((((long)plVar8 - (long)__first >> 3) * -0x5555555555555555) / 2) * 3;
      lVar3 = *plVar5;
      if (lVar6 < lVar3) {
        if (lVar10 <= lVar3) {
          if (lVar6 < lVar10) {
LAB_002d5965:
            lVar6 = plVar8[-2];
            *__first = plVar8[-3];
            __first[1] = lVar6;
            __first[2] = plVar8[-1];
            plVar8[-1] = lVar2;
            plVar8[-3] = lVar9;
            plVar8[-2] = lVar1;
            lVar10 = __first[3];
            lVar6 = lVar9;
            goto LAB_002d57a6;
          }
          *__first = __first[3];
          __first[1] = __first[4];
LAB_002d593d:
          __first[3] = lVar9;
          __first[4] = lVar1;
          __first[2] = __first[5];
          __first[5] = lVar2;
          lVar6 = plVar8[-3];
          lVar10 = lVar9;
          goto LAB_002d57a6;
        }
        lVar6 = plVar5[1];
        *__first = *plVar5;
        __first[1] = lVar6;
      }
      else {
        if (lVar6 < lVar10) {
          *__first = __first[3];
          __first[1] = __first[4];
          goto LAB_002d593d;
        }
        if (lVar3 < lVar10) goto LAB_002d5965;
        lVar6 = plVar5[1];
        *__first = *plVar5;
        __first[1] = lVar6;
      }
      __first[2] = plVar5[2];
      *plVar5 = lVar9;
      plVar5[1] = lVar1;
      plVar5[2] = lVar2;
      lVar10 = __first[3];
      lVar6 = plVar8[-3];
LAB_002d57a6:
      lVar9 = *__first;
      plVar5 = __first + 6;
      plVar7 = plVar8;
      __last = __first + 3;
      do {
        plVar4 = plVar7;
        if (lVar9 <= lVar10) {
          plVar4 = plVar7 + -3;
          if (lVar9 < lVar6) {
            plVar7 = plVar7 + -6;
            do {
              plVar4 = plVar7;
              plVar7 = plVar4 + -3;
            } while (lVar9 < *plVar4);
          }
          if (plVar4 <= __last) goto LAB_002d5820;
          lVar6 = plVar4[1];
          lVar9 = plVar5[-2];
          lVar1 = plVar5[-1];
          plVar5[-3] = *plVar4;
          plVar5[-2] = lVar6;
          plVar5[-1] = plVar4[2];
          lVar6 = plVar4[-3];
          plVar4[2] = lVar1;
          *plVar4 = lVar10;
          plVar4[1] = lVar9;
          lVar9 = *__first;
        }
        lVar10 = *plVar5;
        __last = __last + 3;
        plVar5 = plVar5 + 3;
        plVar7 = plVar4;
      } while( true );
    }
LAB_002d584a:
    lVar10 = (lVar6 >> 3) * -0x5555555555555555;
    for (lVar6 = lVar10 + -2 >> 1;
        __adjust_heap<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_long_int,_gold::Object_merge_map::Input_merge_entry,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>
                  (__first,lVar6,lVar10), lVar6 != 0; lVar6 = lVar6 + -1) {
    }
    do {
      plVar8 = __last + -3;
      lVar6 = __first[1];
      *plVar8 = *__first;
      __last[-2] = lVar6;
      __last[-1] = __first[2];
      __adjust_heap<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_long_int,_gold::Object_merge_map::Input_merge_entry,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>
                (__first,0,((long)plVar8 - (long)__first >> 3) * -0x5555555555555555);
      __last = plVar8;
    } while (0x18 < (long)plVar8 - (long)__first);
  }
  return;
LAB_002d5820:
  __introsort_loop<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_long_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>
            (__last,plVar8,__depth_limit);
  lVar6 = (long)__last - (long)__first;
  if (lVar6 < 0x181) {
    return;
  }
  plVar8 = __last;
  if (__depth_limit == 0) goto LAB_002d584a;
  goto LAB_002d572b;
}



void FUN_002d56f0(long *param_1,long *param_2,long param_3)

{
  long lVar1;
  long lVar2;
  long lVar3;
  long *plVar4;
  long *plVar5;
  long lVar6;
  long *plVar7;
  long *plVar8;
  long lVar9;
  long lVar10;
  
  lVar6 = (long)param_2 - (long)param_1;
  if (0x180 < lVar6) {
    if (param_3 != 0) {
      plVar8 = param_2;
LAB_002d572b:
      lVar6 = param_1[3];
      param_3 = param_3 + -1;
      lVar10 = plVar8[-3];
      lVar9 = *param_1;
      lVar1 = param_1[1];
      lVar2 = param_1[2];
      plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3;
      lVar3 = *plVar5;
      if (lVar6 < lVar3) {
        if (lVar10 <= lVar3) {
          if (lVar6 < lVar10) {
LAB_002d5965:
            lVar6 = plVar8[-2];
            *param_1 = plVar8[-3];
            param_1[1] = lVar6;
            param_1[2] = plVar8[-1];
            plVar8[-1] = lVar2;
            plVar8[-3] = lVar9;
            plVar8[-2] = lVar1;
            lVar10 = param_1[3];
            lVar6 = lVar9;
            goto LAB_002d57a6;
          }
          *param_1 = param_1[3];
          param_1[1] = param_1[4];
LAB_002d593d:
          param_1[3] = lVar9;
          param_1[4] = lVar1;
          param_1[2] = param_1[5];
          param_1[5] = lVar2;
          lVar6 = plVar8[-3];
          lVar10 = lVar9;
          goto LAB_002d57a6;
        }
        lVar6 = plVar5[1];
        *param_1 = *plVar5;
        param_1[1] = lVar6;
      }
      else {
        if (lVar6 < lVar10) {
          *param_1 = param_1[3];
          param_1[1] = param_1[4];
          goto LAB_002d593d;
        }
        if (lVar3 < lVar10) goto LAB_002d5965;
        lVar6 = plVar5[1];
        *param_1 = *plVar5;
        param_1[1] = lVar6;
      }
      param_1[2] = plVar5[2];
      *plVar5 = lVar9;
      plVar5[1] = lVar1;
      plVar5[2] = lVar2;
      lVar10 = param_1[3];
      lVar6 = plVar8[-3];
LAB_002d57a6:
      lVar9 = *param_1;
      plVar5 = param_1 + 6;
      plVar7 = plVar8;
      param_2 = param_1 + 3;
      do {
        plVar4 = plVar7;
        if (lVar9 <= lVar10) {
          plVar4 = plVar7 + -3;
          if (lVar9 < lVar6) {
            plVar7 = plVar7 + -6;
            do {
              plVar4 = plVar7;
              plVar7 = plVar4 + -3;
            } while (lVar9 < *plVar4);
          }
          if (plVar4 <= param_2) goto LAB_002d5820;
          lVar6 = plVar4[1];
          lVar9 = plVar5[-2];
          lVar1 = plVar5[-1];
          plVar5[-3] = *plVar4;
          plVar5[-2] = lVar6;
          plVar5[-1] = plVar4[2];
          lVar6 = plVar4[-3];
          plVar4[2] = lVar1;
          *plVar4 = lVar10;
          plVar4[1] = lVar9;
          lVar9 = *param_1;
        }
        lVar10 = *plVar5;
        param_2 = param_2 + 3;
        plVar5 = plVar5 + 3;
        plVar7 = plVar4;
      } while( true );
    }
LAB_002d584a:
    lVar10 = (lVar6 >> 3) * -0x5555555555555555;
    for (lVar6 = lVar10 + -2 >> 1; FUN_002d5580(param_1,lVar6,lVar10), lVar6 != 0;
        lVar6 = lVar6 + -1) {
    }
    do {
      plVar8 = param_2 + -3;
      lVar6 = param_1[1];
      *plVar8 = *param_1;
      param_2[-2] = lVar6;
      param_2[-1] = param_1[2];
      FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555);
      param_2 = plVar8;
    } while (0x18 < (long)plVar8 - (long)param_1);
  }
  return;
LAB_002d5820:
  FUN_002d56f0(param_2,plVar8,param_3);
  lVar6 = (long)param_2 - (long)param_1;
  if (lVar6 < 0x181) {
    return;
  }
  plVar8 = param_2;
  if (param_3 == 0) goto LAB_002d584a;
  goto LAB_002d572b;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
MOV R12,RDX
MOV RDX,RSI
PUSH RBP
SUB RDX,RDI
PUSH RBX
SUB RSP,0x28
CMP RDX,0x180
JLE 0x002d591c
MOV RBX,RDI
MOV RBP,RSI
TEST R12,R12
JZ 0x002d584a
LEA R14,[RDI + 0x18]
LEA R13,[RDI + 0x30]
MOV RAX,RSI
MOV RCX,qword ptr [RBX + 0x18]
SUB R12,0x1
MOV R9,qword ptr [RSI + -0x18]
SUB RAX,RBX
MOV RDI,qword ptr [RBX]
MOV R11,qword ptr [RBX + 0x8]
MOV RDX,-0x5555555555555555
SAR RAX,0x3
MOV R10,qword ptr [RBX + 0x10]
IMUL RDX,RAX
MOV RAX,RDX
SHR RAX,0x3f
ADD RAX,RDX
SAR RAX,0x1
LEA RAX,[RAX + RAX*0x2]
LEA RAX,[RBX + RAX*0x8]
MOV RDX,qword ptr [RAX]
CMP RCX,RDX
JGE 0x002d5930
CMP RDX,R9
JGE 0x002d5960
MOVDQU XMM4,xmmword ptr [RAX]
MOVUPS xmmword ptr [RBX],XMM4
MOV RDX,qword ptr [RAX + 0x10]
MOV qword ptr [RBX + 0x10],RDX
MOV qword ptr [RAX],RDI
MOV qword ptr [RAX + 0x8],R11
MOV qword ptr [RAX + 0x10],R10
MOV RDI,qword ptr [RBX + 0x18]
MOV R10,qword ptr [RSI + -0x18]
MOV R9,qword ptr [RBX]
MOV RCX,R13
MOV R15,R14
MOV RDX,RSI
NOP word ptr [RAX + RAX*0x1]
MOV RBP,R15
CMP R9,RDI
JG 0x002d580f
LEA RAX,[RDX + -0x18]
CMP R9,R10
JGE 0x002d57dd
SUB RDX,0x30
NOP dword ptr [RAX]
MOV RAX,RDX
SUB RDX,0x18
CMP R9,qword ptr [RDX + 0x18]
JL 0x002d57d0
CMP R15,RAX
JNC 0x002d5820
MOVDQU XMM0,xmmword ptr [RAX]
MOV R9,qword ptr [RCX + -0x10]
MOV RDX,qword ptr [RCX + -0x8]
MOVUPS xmmword ptr [RCX + -0x18],XMM0
MOV R10,qword ptr [RAX + 0x10]
MOV qword ptr [RCX + -0x8],R10
MOV R10,qword ptr [RAX + -0x18]
MOV qword ptr [RAX + 0x10],RDX
MOV RDX,RAX
MOV qword ptr [RAX],RDI
MOV qword ptr [RAX + 0x8],R9
MOV R9,qword ptr [RBX]
MOV RDI,qword ptr [RCX]
ADD R15,0x18
ADD RCX,0x18
JMP 0x002d57b8
MOV RDX,R12
MOV RDI,R15
CALL 0x002d56f0
MOV RDX,R15
SUB RDX,RBX
CMP RDX,0x180
JLE 0x002d591c
MOV RSI,R15
TEST R12,R12
JNZ 0x002d572b
MOV R13,-0x5555555555555555
SAR RDX,0x3
IMUL R13,RDX
LEA R12,[R13 + -0x2]
SAR R12,0x1
JMP 0x002d586c
SUB R12,0x1
LEA RAX,[R12 + R12*0x2]
SUB RSP,0x8
MOV RDX,R13
MOV RSI,R12
MOVDQU XMM3,xmmword ptr [RBX + RAX*0x8]
MOV RAX,qword ptr [RBX + RAX*0x8 + 0x10]
MOV RDI,RBX
MOVAPS xmmword ptr [RSP + 0x8],XMM3
MOV qword ptr [RSP + 0x18],RAX
PUSH qword ptr [RSP + 0x18]
PUSH qword ptr [RSP + 0x18]
PUSH qword ptr [RSP + 0x18]
CALL 0x002d5580
ADD RSP,0x20
TEST R12,R12
JNZ 0x002d5868
MOV R13,-0x5555555555555555
SUB RBP,0x18
NOP dword ptr [RAX]
MOV RAX,qword ptr [RBP + 0x10]
MOVDQU XMM2,xmmword ptr [RBX]
MOV R12,RBP
SUB RSP,0x8
MOVDQU XMM1,xmmword ptr [RBP]
SUB R12,RBX
XOR ESI,ESI
MOV RDI,RBX
MOV qword ptr [RSP + 0x18],RAX
MOV RDX,R12
SUB RBP,0x18
MOVUPS xmmword ptr [RBP + 0x18],XMM2
MOV RAX,qword ptr [RBX + 0x10]
SAR RDX,0x3
MOVAPS xmmword ptr [RSP + 0x8],XMM1
IMUL RDX,R13
MOV qword ptr [RBP + 0x28],RAX
PUSH qword ptr [RSP + 0x18]
PUSH qword ptr [RSP + 0x18]
PUSH qword ptr [RSP + 0x18]
CALL 0x002d5580
ADD RSP,0x20
CMP R12,0x18
JG 0x002d58c0
ADD RSP,0x28
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
CMP RCX,R9
JGE 0x002d5990
MOVDQU XMM5,xmmword ptr [RBX + 0x18]
MOVUPS xmmword ptr [RBX],XMM5
MOV RAX,qword ptr [RBX + 0x28]
MOV qword ptr [RBX + 0x18],RDI
MOV qword ptr [RBX + 0x20],R11
MOV qword ptr [RBX + 0x10],RAX
MOV qword ptr [RBX + 0x28],R10
MOV R10,qword ptr [RSI + -0x18]
JMP 0x002d57a6
CMP RCX,R9
JGE 0x002d59a8
MOVDQU XMM6,xmmword ptr [RSI + -0x18]
MOVUPS xmmword ptr [RBX],XMM6
MOV RAX,qword ptr [RSI + -0x8]
MOV qword ptr [RBX + 0x10],RAX
MOV qword ptr [RSI + -0x8],R10
MOV R10,RDI
MOV qword ptr [RSI + -0x18],RDI
MOV qword ptr [RSI + -0x10],R11
MOV RDI,qword ptr [RBX + 0x18]
JMP 0x002d57a6
CMP RDX,R9
JL 0x002d5965
MOVDQU XMM7,xmmword ptr [RAX]
MOVUPS xmmword ptr [RBX],XMM7
JMP 0x002d578b
MOVDQU XMM7,xmmword ptr [RBX + 0x18]
MOVUPS xmmword ptr [RBX],XMM7
JMP 0x002d593d
(translation_unit "void FUN_002d56f0(long *param_1,long *param_2,long param_3)\n\n{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  long *plVar5;\n  long lVar6;\n  long *plVar7;\n  long *plVar8;\n  long lVar9;\n  long lVar10;\n  \n  lVar6 = (long)param_2 - (long)param_1;\n  if (0x180 < lVar6) {\n    if (param_3 != 0) {\n      plVar8 = param_2;\nLAB_002d572b:\n      lVar6 = param_1[3];\n      param_3 = param_3 + -1;\n      lVar10 = plVar8[-3];\n      lVar9 = *param_1;\n      lVar1 = param_1[1];\n      lVar2 = param_1[2];\n      plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3;\n      lVar3 = *plVar5;\n      if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      param_1[2] = plVar5[2];\n      *plVar5 = lVar9;\n      plVar5[1] = lVar1;\n      plVar5[2] = lVar2;\n      lVar10 = param_1[3];\n      lVar6 = plVar8[-3];\nLAB_002d57a6:\n      lVar9 = *param_1;\n      plVar5 = param_1 + 6;\n      plVar7 = plVar8;\n      param_2 = param_1 + 3;\n      do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );\n    }\nLAB_002d584a:\n    lVar10 = (lVar6 >> 3) * -0x5555555555555555;\n    for (lVar6 = lVar10 + -2 >> 1; FUN_002d5580(param_1,lVar6,lVar10), lVar6 != 0;\n        lVar6 = lVar6 + -1) {\n    }\n    do {\n      plVar8 = param_2 + -3;\n      lVar6 = param_1[1];\n      *plVar8 = *param_1;\n      param_2[-2] = lVar6;\n      param_2[-1] = param_1[2];\n      FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555);\n      param_2 = plVar8;\n    } while (0x18 < (long)plVar8 - (long)param_1);\n  }\n  return;\nLAB_002d5820:\n  FUN_002d56f0(param_2,plVar8,param_3);\n  lVar6 = (long)param_2 - (long)param_1;\n  if (lVar6 < 0x181) {\n    return;\n  }\n  plVar8 = param_2;\n  if (param_3 == 0) goto LAB_002d584a;\n  goto LAB_002d572b;\n}\n\n" (function_definition "void FUN_002d56f0(long *param_1,long *param_2,long param_3)\n\n{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  long *plVar5;\n  long lVar6;\n  long *plVar7;\n  long *plVar8;\n  long lVar9;\n  long lVar10;\n  \n  lVar6 = (long)param_2 - (long)param_1;\n  if (0x180 < lVar6) {\n    if (param_3 != 0) {\n      plVar8 = param_2;\nLAB_002d572b:\n      lVar6 = param_1[3];\n      param_3 = param_3 + -1;\n      lVar10 = plVar8[-3];\n      lVar9 = *param_1;\n      lVar1 = param_1[1];\n      lVar2 = param_1[2];\n      plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3;\n      lVar3 = *plVar5;\n      if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      param_1[2] = plVar5[2];\n      *plVar5 = lVar9;\n      plVar5[1] = lVar1;\n      plVar5[2] = lVar2;\n      lVar10 = param_1[3];\n      lVar6 = plVar8[-3];\nLAB_002d57a6:\n      lVar9 = *param_1;\n      plVar5 = param_1 + 6;\n      plVar7 = plVar8;\n      param_2 = param_1 + 3;\n      do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );\n    }\nLAB_002d584a:\n    lVar10 = (lVar6 >> 3) * -0x5555555555555555;\n    for (lVar6 = lVar10 + -2 >> 1; FUN_002d5580(param_1,lVar6,lVar10), lVar6 != 0;\n        lVar6 = lVar6 + -1) {\n    }\n    do {\n      plVar8 = param_2 + -3;\n      lVar6 = param_1[1];\n      *plVar8 = *param_1;\n      param_2[-2] = lVar6;\n      param_2[-1] = param_1[2];\n      FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555);\n      param_2 = plVar8;\n    } while (0x18 < (long)plVar8 - (long)param_1);\n  }\n  return;\nLAB_002d5820:\n  FUN_002d56f0(param_2,plVar8,param_3);\n  lVar6 = (long)param_2 - (long)param_1;\n  if (lVar6 < 0x181) {\n    return;\n  }\n  plVar8 = param_2;\n  if (param_3 == 0) goto LAB_002d584a;\n  goto LAB_002d572b;\n}" primitive_type (function_declarator "FUN_002d56f0(long *param_1,long *param_2,long param_3)" identifier (parameter_list "(long *param_1,long *param_2,long param_3)" ( (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)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  long *plVar5;\n  long lVar6;\n  long *plVar7;\n  long *plVar8;\n  long lVar9;\n  long lVar10;\n  \n  lVar6 = (long)param_2 - (long)param_1;\n  if (0x180 < lVar6) {\n    if (param_3 != 0) {\n      plVar8 = param_2;\nLAB_002d572b:\n      lVar6 = param_1[3];\n      param_3 = param_3 + -1;\n      lVar10 = plVar8[-3];\n      lVar9 = *param_1;\n      lVar1 = param_1[1];\n      lVar2 = param_1[2];\n      plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3;\n      lVar3 = *plVar5;\n      if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      param_1[2] = plVar5[2];\n      *plVar5 = lVar9;\n      plVar5[1] = lVar1;\n      plVar5[2] = lVar2;\n      lVar10 = param_1[3];\n      lVar6 = plVar8[-3];\nLAB_002d57a6:\n      lVar9 = *param_1;\n      plVar5 = param_1 + 6;\n      plVar7 = plVar8;\n      param_2 = param_1 + 3;\n      do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );\n    }\nLAB_002d584a:\n    lVar10 = (lVar6 >> 3) * -0x5555555555555555;\n    for (lVar6 = lVar10 + -2 >> 1; FUN_002d5580(param_1,lVar6,lVar10), lVar6 != 0;\n        lVar6 = lVar6 + -1) {\n    }\n    do {\n      plVar8 = param_2 + -3;\n      lVar6 = param_1[1];\n      *plVar8 = *param_1;\n      param_2[-2] = lVar6;\n      param_2[-1] = param_1[2];\n      FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555);\n      param_2 = plVar8;\n    } while (0x18 < (long)plVar8 - (long)param_1);\n  }\n  return;\nLAB_002d5820:\n  FUN_002d56f0(param_2,plVar8,param_3);\n  lVar6 = (long)param_2 - (long)param_1;\n  if (lVar6 < 0x181) {\n    return;\n  }\n  plVar8 = param_2;\n  if (param_3 == 0) goto LAB_002d584a;\n  goto LAB_002d572b;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "long *plVar5;" (sized_type_specifier "long" long) (pointer_declarator "*plVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar7;" (sized_type_specifier "long" long) (pointer_declarator "*plVar7" * identifier) ;) (declaration "long *plVar8;" (sized_type_specifier "long" long) (pointer_declarator "*plVar8" * identifier) ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar6 = (long)param_2 - (long)param_1;" (assignment_expression "lVar6 = (long)param_2 - (long)param_1" identifier = (binary_expression "(long)param_2 - (long)param_1" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (0x180 < lVar6) {\n    if (param_3 != 0) {\n      plVar8 = param_2;\nLAB_002d572b:\n      lVar6 = param_1[3];\n      param_3 = param_3 + -1;\n      lVar10 = plVar8[-3];\n      lVar9 = *param_1;\n      lVar1 = param_1[1];\n      lVar2 = param_1[2];\n      plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3;\n      lVar3 = *plVar5;\n      if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      param_1[2] = plVar5[2];\n      *plVar5 = lVar9;\n      plVar5[1] = lVar1;\n      plVar5[2] = lVar2;\n      lVar10 = param_1[3];\n      lVar6 = plVar8[-3];\nLAB_002d57a6:\n      lVar9 = *param_1;\n      plVar5 = param_1 + 6;\n      plVar7 = plVar8;\n      param_2 = param_1 + 3;\n      do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );\n    }\nLAB_002d584a:\n    lVar10 = (lVar6 >> 3) * -0x5555555555555555;\n    for (lVar6 = lVar10 + -2 >> 1; FUN_002d5580(param_1,lVar6,lVar10), lVar6 != 0;\n        lVar6 = lVar6 + -1) {\n    }\n    do {\n      plVar8 = param_2 + -3;\n      lVar6 = param_1[1];\n      *plVar8 = *param_1;\n      param_2[-2] = lVar6;\n      param_2[-1] = param_1[2];\n      FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555);\n      param_2 = plVar8;\n    } while (0x18 < (long)plVar8 - (long)param_1);\n  }" if (parenthesized_expression "(0x180 < lVar6)" ( (binary_expression "0x180 < lVar6" number_literal < identifier) )) (compound_statement "{\n    if (param_3 != 0) {\n      plVar8 = param_2;\nLAB_002d572b:\n      lVar6 = param_1[3];\n      param_3 = param_3 + -1;\n      lVar10 = plVar8[-3];\n      lVar9 = *param_1;\n      lVar1 = param_1[1];\n      lVar2 = param_1[2];\n      plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3;\n      lVar3 = *plVar5;\n      if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      param_1[2] = plVar5[2];\n      *plVar5 = lVar9;\n      plVar5[1] = lVar1;\n      plVar5[2] = lVar2;\n      lVar10 = param_1[3];\n      lVar6 = plVar8[-3];\nLAB_002d57a6:\n      lVar9 = *param_1;\n      plVar5 = param_1 + 6;\n      plVar7 = plVar8;\n      param_2 = param_1 + 3;\n      do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );\n    }\nLAB_002d584a:\n    lVar10 = (lVar6 >> 3) * -0x5555555555555555;\n    for (lVar6 = lVar10 + -2 >> 1; FUN_002d5580(param_1,lVar6,lVar10), lVar6 != 0;\n        lVar6 = lVar6 + -1) {\n    }\n    do {\n      plVar8 = param_2 + -3;\n      lVar6 = param_1[1];\n      *plVar8 = *param_1;\n      param_2[-2] = lVar6;\n      param_2[-1] = param_1[2];\n      FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555);\n      param_2 = plVar8;\n    } while (0x18 < (long)plVar8 - (long)param_1);\n  }" { (if_statement "if (param_3 != 0) {\n      plVar8 = param_2;\nLAB_002d572b:\n      lVar6 = param_1[3];\n      param_3 = param_3 + -1;\n      lVar10 = plVar8[-3];\n      lVar9 = *param_1;\n      lVar1 = param_1[1];\n      lVar2 = param_1[2];\n      plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3;\n      lVar3 = *plVar5;\n      if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      param_1[2] = plVar5[2];\n      *plVar5 = lVar9;\n      plVar5[1] = lVar1;\n      plVar5[2] = lVar2;\n      lVar10 = param_1[3];\n      lVar6 = plVar8[-3];\nLAB_002d57a6:\n      lVar9 = *param_1;\n      plVar5 = param_1 + 6;\n      plVar7 = plVar8;\n      param_2 = param_1 + 3;\n      do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );\n    }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n      plVar8 = param_2;\nLAB_002d572b:\n      lVar6 = param_1[3];\n      param_3 = param_3 + -1;\n      lVar10 = plVar8[-3];\n      lVar9 = *param_1;\n      lVar1 = param_1[1];\n      lVar2 = param_1[2];\n      plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3;\n      lVar3 = *plVar5;\n      if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      param_1[2] = plVar5[2];\n      *plVar5 = lVar9;\n      plVar5[1] = lVar1;\n      plVar5[2] = lVar2;\n      lVar10 = param_1[3];\n      lVar6 = plVar8[-3];\nLAB_002d57a6:\n      lVar9 = *param_1;\n      plVar5 = param_1 + 6;\n      plVar7 = plVar8;\n      param_2 = param_1 + 3;\n      do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );\n    }" { (expression_statement "plVar8 = param_2;" (assignment_expression "plVar8 = param_2" identifier = identifier) ;) (labeled_statement "LAB_002d572b:\n      lVar6 = param_1[3];" statement_identifier : (expression_statement "lVar6 = param_1[3];" (assignment_expression "lVar6 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;)) (expression_statement "param_3 = param_3 + -1;" (assignment_expression "param_3 = param_3 + -1" identifier = (binary_expression "param_3 + -1" identifier + number_literal)) ;) (expression_statement "lVar10 = plVar8[-3];" (assignment_expression "lVar10 = plVar8[-3]" identifier = (subscript_expression "plVar8[-3]" identifier [ number_literal ])) ;) (expression_statement "lVar9 = *param_1;" (assignment_expression "lVar9 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "lVar1 = param_1[1];" (assignment_expression "lVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "lVar2 = param_1[2];" (assignment_expression "lVar2 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3;" (assignment_expression "plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3" identifier = (binary_expression "param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3" identifier + (binary_expression "((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3" (parenthesized_expression "((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2)" ( (binary_expression "(((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2" (parenthesized_expression "(((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555)" ( (binary_expression "((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555" (parenthesized_expression "((long)plVar8 - (long)param_1 >> 3)" ( (binary_expression "(long)plVar8 - (long)param_1 >> 3" (binary_expression "(long)plVar8 - (long)param_1" (cast_expression "(long)plVar8" ( (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) )) / number_literal) )) * number_literal))) ;) (expression_statement "lVar3 = *plVar5;" (assignment_expression "lVar3 = *plVar5" identifier = (pointer_expression "*plVar5" * identifier)) ;) (if_statement "if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }" if (parenthesized_expression "(lVar6 < lVar3)" ( (binary_expression "lVar6 < lVar3" identifier < identifier) )) (compound_statement "{\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }" { (if_statement "if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }" if (parenthesized_expression "(lVar10 <= lVar3)" ( (binary_expression "lVar10 <= lVar3" identifier <= identifier) )) (compound_statement "{\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }" { (if_statement "if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }" if (parenthesized_expression "(lVar6 < lVar10)" ( (binary_expression "lVar6 < lVar10" identifier < identifier) )) (compound_statement "{\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }" { (labeled_statement "LAB_002d5965:\n            lVar6 = plVar8[-2];" statement_identifier : (expression_statement "lVar6 = plVar8[-2];" (assignment_expression "lVar6 = plVar8[-2]" identifier = (subscript_expression "plVar8[-2]" identifier [ number_literal ])) ;)) (expression_statement "*param_1 = plVar8[-3];" (assignment_expression "*param_1 = plVar8[-3]" (pointer_expression "*param_1" * identifier) = (subscript_expression "plVar8[-3]" identifier [ number_literal ])) ;) (expression_statement "param_1[1] = lVar6;" (assignment_expression "param_1[1] = lVar6" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = plVar8[-1];" (assignment_expression "param_1[2] = plVar8[-1]" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (subscript_expression "plVar8[-1]" identifier [ number_literal ])) ;) (expression_statement "plVar8[-1] = lVar2;" (assignment_expression "plVar8[-1] = lVar2" (subscript_expression "plVar8[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar8[-3] = lVar9;" (assignment_expression "plVar8[-3] = lVar9" (subscript_expression "plVar8[-3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar8[-2] = lVar1;" (assignment_expression "plVar8[-2] = lVar1" (subscript_expression "plVar8[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "lVar10 = param_1[3];" (assignment_expression "lVar10 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "lVar6 = lVar9;" (assignment_expression "lVar6 = lVar9" identifier = identifier) ;) (goto_statement "goto LAB_002d57a6;" goto statement_identifier ;) })) (expression_statement "*param_1 = param_1[3];" (assignment_expression "*param_1 = param_1[3]" (pointer_expression "*param_1" * identifier) = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "param_1[1] = param_1[4];" (assignment_expression "param_1[1] = param_1[4]" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (labeled_statement "LAB_002d593d:\n          param_1[3] = lVar9;" statement_identifier : (expression_statement "param_1[3] = lVar9;" (assignment_expression "param_1[3] = lVar9" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "param_1[4] = lVar1;" (assignment_expression "param_1[4] = lVar1" (subscript_expression "param_1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = param_1[5];" (assignment_expression "param_1[2] = param_1[5]" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "param_1[5] = lVar2;" (assignment_expression "param_1[5] = lVar2" (subscript_expression "param_1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "lVar6 = plVar8[-3];" (assignment_expression "lVar6 = plVar8[-3]" identifier = (subscript_expression "plVar8[-3]" identifier [ number_literal ])) ;) (expression_statement "lVar10 = lVar9;" (assignment_expression "lVar10 = lVar9" identifier = identifier) ;) (goto_statement "goto LAB_002d57a6;" goto statement_identifier ;) })) (expression_statement "lVar6 = plVar5[1];" (assignment_expression "lVar6 = plVar5[1]" identifier = (subscript_expression "plVar5[1]" identifier [ number_literal ])) ;) (expression_statement "*param_1 = *plVar5;" (assignment_expression "*param_1 = *plVar5" (pointer_expression "*param_1" * identifier) = (pointer_expression "*plVar5" * identifier)) ;) (expression_statement "param_1[1] = lVar6;" (assignment_expression "param_1[1] = lVar6" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }" else (compound_statement "{\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }" { (if_statement "if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }" if (parenthesized_expression "(lVar6 < lVar10)" ( (binary_expression "lVar6 < lVar10" identifier < identifier) )) (compound_statement "{\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }" { (expression_statement "*param_1 = param_1[3];" (assignment_expression "*param_1 = param_1[3]" (pointer_expression "*param_1" * identifier) = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "param_1[1] = param_1[4];" (assignment_expression "param_1[1] = param_1[4]" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_002d593d;" goto statement_identifier ;) })) (if_statement "if (lVar3 < lVar10) goto LAB_002d5965;" if (parenthesized_expression "(lVar3 < lVar10)" ( (binary_expression "lVar3 < lVar10" identifier < identifier) )) (goto_statement "goto LAB_002d5965;" goto statement_identifier ;)) (expression_statement "lVar6 = plVar5[1];" (assignment_expression "lVar6 = plVar5[1]" identifier = (subscript_expression "plVar5[1]" identifier [ number_literal ])) ;) (expression_statement "*param_1 = *plVar5;" (assignment_expression "*param_1 = *plVar5" (pointer_expression "*param_1" * identifier) = (pointer_expression "*plVar5" * identifier)) ;) (expression_statement "param_1[1] = lVar6;" (assignment_expression "param_1[1] = lVar6" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "param_1[2] = plVar5[2];" (assignment_expression "param_1[2] = plVar5[2]" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (subscript_expression "plVar5[2]" identifier [ number_literal ])) ;) (expression_statement "*plVar5 = lVar9;" (assignment_expression "*plVar5 = lVar9" (pointer_expression "*plVar5" * identifier) = identifier) ;) (expression_statement "plVar5[1] = lVar1;" (assignment_expression "plVar5[1] = lVar1" (subscript_expression "plVar5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar5[2] = lVar2;" (assignment_expression "plVar5[2] = lVar2" (subscript_expression "plVar5[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "lVar10 = param_1[3];" (assignment_expression "lVar10 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "lVar6 = plVar8[-3];" (assignment_expression "lVar6 = plVar8[-3]" identifier = (subscript_expression "plVar8[-3]" identifier [ number_literal ])) ;) (labeled_statement "LAB_002d57a6:\n      lVar9 = *param_1;" statement_identifier : (expression_statement "lVar9 = *param_1;" (assignment_expression "lVar9 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;)) (expression_statement "plVar5 = param_1 + 6;" (assignment_expression "plVar5 = param_1 + 6" identifier = (binary_expression "param_1 + 6" identifier + number_literal)) ;) (expression_statement "plVar7 = plVar8;" (assignment_expression "plVar7 = plVar8" identifier = identifier) ;) (expression_statement "param_2 = param_1 + 3;" (assignment_expression "param_2 = param_1 + 3" identifier = (binary_expression "param_1 + 3" identifier + number_literal)) ;) (do_statement "do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );" do (compound_statement "{\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      }" { (expression_statement "plVar4 = plVar7;" (assignment_expression "plVar4 = plVar7" identifier = identifier) ;) (if_statement "if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }" if (parenthesized_expression "(lVar9 <= lVar10)" ( (binary_expression "lVar9 <= lVar10" identifier <= identifier) )) (compound_statement "{\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }" { (expression_statement "plVar4 = plVar7 + -3;" (assignment_expression "plVar4 = plVar7 + -3" identifier = (binary_expression "plVar7 + -3" identifier + number_literal)) ;) (if_statement "if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }" if (parenthesized_expression "(lVar9 < lVar6)" ( (binary_expression "lVar9 < lVar6" identifier < identifier) )) (compound_statement "{\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }" { (expression_statement "plVar7 = plVar7 + -6;" (assignment_expression "plVar7 = plVar7 + -6" identifier = (binary_expression "plVar7 + -6" identifier + number_literal)) ;) (do_statement "do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);" do (compound_statement "{\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            }" { (expression_statement "plVar4 = plVar7;" (assignment_expression "plVar4 = plVar7" identifier = identifier) ;) (expression_statement "plVar7 = plVar4 + -3;" (assignment_expression "plVar7 = plVar4 + -3" identifier = (binary_expression "plVar4 + -3" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar9 < *plVar4)" ( (binary_expression "lVar9 < *plVar4" identifier < (pointer_expression "*plVar4" * identifier)) )) ;) })) (if_statement "if (plVar4 <= param_2) goto LAB_002d5820;" if (parenthesized_expression "(plVar4 <= param_2)" ( (binary_expression "plVar4 <= param_2" identifier <= identifier) )) (goto_statement "goto LAB_002d5820;" goto statement_identifier ;)) (expression_statement "lVar6 = plVar4[1];" (assignment_expression "lVar6 = plVar4[1]" identifier = (subscript_expression "plVar4[1]" identifier [ number_literal ])) ;) (expression_statement "lVar9 = plVar5[-2];" (assignment_expression "lVar9 = plVar5[-2]" identifier = (subscript_expression "plVar5[-2]" identifier [ number_literal ])) ;) (expression_statement "lVar1 = plVar5[-1];" (assignment_expression "lVar1 = plVar5[-1]" identifier = (subscript_expression "plVar5[-1]" identifier [ number_literal ])) ;) (expression_statement "plVar5[-3] = *plVar4;" (assignment_expression "plVar5[-3] = *plVar4" (subscript_expression "plVar5[-3]" identifier [ number_literal ]) = (pointer_expression "*plVar4" * identifier)) ;) (expression_statement "plVar5[-2] = lVar6;" (assignment_expression "plVar5[-2] = lVar6" (subscript_expression "plVar5[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar5[-1] = plVar4[2];" (assignment_expression "plVar5[-1] = plVar4[2]" (subscript_expression "plVar5[-1]" identifier [ number_literal ]) = (subscript_expression "plVar4[2]" identifier [ number_literal ])) ;) (expression_statement "lVar6 = plVar4[-3];" (assignment_expression "lVar6 = plVar4[-3]" identifier = (subscript_expression "plVar4[-3]" identifier [ number_literal ])) ;) (expression_statement "plVar4[2] = lVar1;" (assignment_expression "plVar4[2] = lVar1" (subscript_expression "plVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*plVar4 = lVar10;" (assignment_expression "*plVar4 = lVar10" (pointer_expression "*plVar4" * identifier) = identifier) ;) (expression_statement "plVar4[1] = lVar9;" (assignment_expression "plVar4[1] = lVar9" (subscript_expression "plVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "lVar9 = *param_1;" (assignment_expression "lVar9 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) })) (expression_statement "lVar10 = *plVar5;" (assignment_expression "lVar10 = *plVar5" identifier = (pointer_expression "*plVar5" * identifier)) ;) (expression_statement "param_2 = param_2 + 3;" (assignment_expression "param_2 = param_2 + 3" identifier = (binary_expression "param_2 + 3" identifier + number_literal)) ;) (expression_statement "plVar5 = plVar5 + 3;" (assignment_expression "plVar5 = plVar5 + 3" identifier = (binary_expression "plVar5 + 3" identifier + number_literal)) ;) (expression_statement "plVar7 = plVar4;" (assignment_expression "plVar7 = plVar4" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_002d584a:\n    lVar10 = (lVar6 >> 3) * -0x5555555555555555;" statement_identifier : (expression_statement "lVar10 = (lVar6 >> 3) * -0x5555555555555555;" (assignment_expression "lVar10 = (lVar6 >> 3) * -0x5555555555555555" identifier = (binary_expression "(lVar6 >> 3) * -0x5555555555555555" (parenthesized_expression "(lVar6 >> 3)" ( (binary_expression "lVar6 >> 3" identifier >> number_literal) )) * number_literal)) ;)) (for_statement "for (lVar6 = lVar10 + -2 >> 1; FUN_002d5580(param_1,lVar6,lVar10), lVar6 != 0;\n        lVar6 = lVar6 + -1) {\n    }" for ( (assignment_expression "lVar6 = lVar10 + -2 >> 1" identifier = (binary_expression "lVar10 + -2 >> 1" (binary_expression "lVar10 + -2" identifier + number_literal) >> number_literal)) ; (comma_expression "FUN_002d5580(param_1,lVar6,lVar10), lVar6 != 0" (call_expression "FUN_002d5580(param_1,lVar6,lVar10)" identifier (argument_list "(param_1,lVar6,lVar10)" ( identifier , identifier , identifier ))) , (binary_expression "lVar6 != 0" identifier != number_literal)) ; (assignment_expression "lVar6 = lVar6 + -1" identifier = (binary_expression "lVar6 + -1" identifier + number_literal)) ) (compound_statement "{\n    }" { })) (do_statement "do {\n      plVar8 = param_2 + -3;\n      lVar6 = param_1[1];\n      *plVar8 = *param_1;\n      param_2[-2] = lVar6;\n      param_2[-1] = param_1[2];\n      FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555);\n      param_2 = plVar8;\n    } while (0x18 < (long)plVar8 - (long)param_1);" do (compound_statement "{\n      plVar8 = param_2 + -3;\n      lVar6 = param_1[1];\n      *plVar8 = *param_1;\n      param_2[-2] = lVar6;\n      param_2[-1] = param_1[2];\n      FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555);\n      param_2 = plVar8;\n    }" { (expression_statement "plVar8 = param_2 + -3;" (assignment_expression "plVar8 = param_2 + -3" identifier = (binary_expression "param_2 + -3" identifier + number_literal)) ;) (expression_statement "lVar6 = param_1[1];" (assignment_expression "lVar6 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "*plVar8 = *param_1;" (assignment_expression "*plVar8 = *param_1" (pointer_expression "*plVar8" * identifier) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "param_2[-2] = lVar6;" (assignment_expression "param_2[-2] = lVar6" (subscript_expression "param_2[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[-1] = param_1[2];" (assignment_expression "param_2[-1] = param_1[2]" (subscript_expression "param_2[-1]" identifier [ number_literal ]) = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555);" (call_expression "FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555)" identifier (argument_list "(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555)" ( identifier , number_literal , (binary_expression "((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555" (parenthesized_expression "((long)plVar8 - (long)param_1 >> 3)" ( (binary_expression "(long)plVar8 - (long)param_1 >> 3" (binary_expression "(long)plVar8 - (long)param_1" (cast_expression "(long)plVar8" ( (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 "param_2 = plVar8;" (assignment_expression "param_2 = plVar8" identifier = identifier) ;) }) while (parenthesized_expression "(0x18 < (long)plVar8 - (long)param_1)" ( (binary_expression "0x18 < (long)plVar8 - (long)param_1" number_literal < (binary_expression "(long)plVar8 - (long)param_1" (cast_expression "(long)plVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) )) ;) })) (return_statement "return;" return ;) (labeled_statement "LAB_002d5820:\n  FUN_002d56f0(param_2,plVar8,param_3);" statement_identifier : (expression_statement "FUN_002d56f0(param_2,plVar8,param_3);" (call_expression "FUN_002d56f0(param_2,plVar8,param_3)" identifier (argument_list "(param_2,plVar8,param_3)" ( identifier , identifier , identifier ))) ;)) (expression_statement "lVar6 = (long)param_2 - (long)param_1;" (assignment_expression "lVar6 = (long)param_2 - (long)param_1" identifier = (binary_expression "(long)param_2 - (long)param_1" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (lVar6 < 0x181) {\n    return;\n  }" if (parenthesized_expression "(lVar6 < 0x181)" ( (binary_expression "lVar6 < 0x181" identifier < number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "plVar8 = param_2;" (assignment_expression "plVar8 = param_2" identifier = identifier) ;) (if_statement "if (param_3 == 0) goto LAB_002d584a;" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_002d584a;" goto statement_identifier ;)) (goto_statement "goto LAB_002d572b;" goto statement_identifier ;) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* DWARF original name:\n   __introsort_loop<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,\n   std::vector<gold::Object_merge_map::Input_merge_entry> >, long int,\n   __gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare> > */\n\nvoid std::\n     __introsort_loop<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_long_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n               (long *__first,long *__last,long __depth_limit)\n\n{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  long *plVar5;\n  long lVar6;\n  long *plVar7;\n  long *plVar8;\n  long lVar9;\n  long lVar10;\n  _ValueType __value;\n  \n  lVar6 = (long)__last - (long)__first;\n  if (0x180 < lVar6) {\n    if (__depth_limit != 0) {\n      plVar8 = __last;\nLAB_002d572b:\n      lVar6 = __first[3];\n      __depth_limit = __depth_limit + -1;\n      lVar10 = plVar8[-3];\n      lVar9 = *__first;\n      lVar1 = __first[1];\n      lVar2 = __first[2];\n      plVar5 = __first + ((((long)plVar8 - (long)__first >> 3) * -0x5555555555555555) / 2) * 3;\n      lVar3 = *plVar5;\n      if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *__first = plVar8[-3];\n            __first[1] = lVar6;\n            __first[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = __first[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *__first = __first[3];\n          __first[1] = __first[4];\nLAB_002d593d:\n          __first[3] = lVar9;\n          __first[4] = lVar1;\n          __first[2] = __first[5];\n          __first[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *__first = *plVar5;\n        __first[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *__first = __first[3];\n          __first[1] = __first[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *__first = *plVar5;\n        __first[1] = lVar6;\n      }\n      __first[2] = plVar5[2];\n      *plVar5 = lVar9;\n      plVar5[1] = lVar1;\n      plVar5[2] = lVar2;\n      lVar10 = __first[3];\n      lVar6 = plVar8[-3];\nLAB_002d57a6:\n      lVar9 = *__first;\n      plVar5 = __first + 6;\n      plVar7 = plVar8;\n      __last = __first + 3;\n      do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= __last) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *__first;\n        }\n        lVar10 = *plVar5;\n        __last = __last + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );\n    }\nLAB_002d584a:\n    lVar10 = (lVar6 >> 3) * -0x5555555555555555;\n    for (lVar6 = lVar10 + -2 >> 1;\n        __adjust_heap<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_long_int,_gold::Object_merge_map::Input_merge_entry,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                  (__first,lVar6,lVar10), lVar6 != 0; lVar6 = lVar6 + -1) {\n    }\n    do {\n      plVar8 = __last + -3;\n      lVar6 = __first[1];\n      *plVar8 = *__first;\n      __last[-2] = lVar6;\n      __last[-1] = __first[2];\n      __adjust_heap<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_long_int,_gold::Object_merge_map::Input_merge_entry,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                (__first,0,((long)plVar8 - (long)__first >> 3) * -0x5555555555555555);\n      __last = plVar8;\n    } while (0x18 < (long)plVar8 - (long)__first);\n  }\n  return;\nLAB_002d5820:\n  __introsort_loop<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_long_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n            (__last,plVar8,__depth_limit);\n  lVar6 = (long)__last - (long)__first;\n  if (lVar6 < 0x181) {\n    return;\n  }\n  plVar8 = __last;\n  if (__depth_limit == 0) goto LAB_002d584a;\n  goto LAB_002d572b;\n}\n\n" comment comment (declaration "void std::\n     __introsort_loop<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_long_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n               (long *__first,long *__last,long __depth_limit)\n\n{\n  long lVar1;" primitive_type (ERROR "std::\n     __introsort_loop<__gnu_cxx::__normal_iterator<gold::Object_merge_map::" identifier : : identifier < identifier : : identifier < identifier : : identifier : :) identifier (ERROR "*" *) , (ERROR "_std::vector<gold::Object_merge_map::Input_merge_entry>" identifier : : identifier < identifier : : identifier : : identifier >) identifier (ERROR ">" >) , identifier , (ERROR "___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n               (long *__first,long *__last,long __depth_limit)\n\n{\n  long" identifier : : identifier : : identifier < identifier : : identifier : : identifier > (function_declarator "_>\n               (long *__first,long *__last,long __depth_limit)" identifier (ERROR ">" >) (parameter_list "(long *__first,long *__last,long __depth_limit)" ( (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)) , (parameter_declaration "long __depth_limit" (sized_type_specifier "long" long) identifier) ))) { long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "long *plVar5;" (sized_type_specifier "long" long) (pointer_declarator "*plVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar7;" (sized_type_specifier "long" long) (pointer_declarator "*plVar7" * identifier) ;) (declaration "long *plVar8;" (sized_type_specifier "long" long) (pointer_declarator "*plVar8" * identifier) ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "_ValueType __value;" type_identifier identifier ;) (expression_statement "lVar6 = (long)__last - (long)__first;" (assignment_expression "lVar6 = (long)__last - (long)__first" identifier = (binary_expression "(long)__last - (long)__first" (cast_expression "(long)__last" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__first" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (0x180 < lVar6) {\n    if (__depth_limit != 0) {\n      plVar8 = __last;\nLAB_002d572b:\n      lVar6 = __first[3];\n      __depth_limit = __depth_limit + -1;\n      lVar10 = plVar8[-3];\n      lVar9 = *__first;\n      lVar1 = __first[1];\n      lVar2 = __first[2];\n      plVar5 = __first + ((((long)plVar8 - (long)__first >> 3) * -0x5555555555555555) / 2) * 3;\n      lVar3 = *plVar5;\n      if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *__first = plVar8[-3];\n            __first[1] = lVar6;\n            __first[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = __first[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *__first = __first[3];\n          __first[1] = __first[4];\nLAB_002d593d:\n          __first[3] = lVar9;\n          __first[4] = lVar1;\n          __first[2] = __first[5];\n          __first[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *__first = *plVar5;\n        __first[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *__first = __first[3];\n          __first[1] = __first[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *__first = *plVar5;\n        __first[1] = lVar6;\n      }\n      __first[2] = plVar5[2];\n      *plVar5 = lVar9;\n      plVar5[1] = lVar1;\n      plVar5[2] = lVar2;\n      lVar10 = __first[3];\n      lVar6 = plVar8[-3];\nLAB_002d57a6:\n      lVar9 = *__first;\n      plVar5 = __first + 6;\n      plVar7 = plVar8;\n      __last = __first + 3;\n      do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= __last) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *__first;\n        }\n        lVar10 = *plVar5;\n        __last = __last + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );\n    }\nLAB_002d584a:\n    lVar10 = (lVar6 >> 3) * -0x5555555555555555;\n    for (lVar6 = lVar10 + -2 >> 1;\n        __adjust_heap<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_long_int,_gold::Object_merge_map::Input_merge_entry,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                  (__first,lVar6,lVar10), lVar6 != 0; lVar6 = lVar6 + -1) {\n    }\n    do {\n      plVar8 = __last + -3;\n      lVar6 = __first[1];\n      *plVar8 = *__first;\n      __last[-2] = lVar6;\n      __last[-1] = __first[2];\n      __adjust_heap<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_long_int,_gold::Object_merge_map::Input_merge_entry,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                (__first,0,((long)plVar8 - (long)__first >> 3) * -0x5555555555555555);\n      __last = plVar8;\n    } while (0x18 < (long)plVar8 - (long)__first);\n  }" if (parenthesized_expression "(0x180 < lVar6)" ( (binary_expression "0x180 < lVar6" number_literal < identifier) )) (compound_statement "{\n    if (__depth_limit != 0) {\n      plVar8 = __last;\nLAB_002d572b:\n      lVar6 = __first[3];\n      __depth_limit = __depth_limit + -1;\n      lVar10 = plVar8[-3];\n      lVar9 = *__first;\n      lVar1 = __first[1];\n      lVar2 = __first[2];\n      plVar5 = __first + ((((long)plVar8 - (long)__first >> 3) * -0x5555555555555555) / 2) * 3;\n      lVar3 = *plVar5;\n      if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *__first = plVar8[-3];\n            __first[1] = lVar6;\n            __first[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = __first[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *__first = __first[3];\n          __first[1] = __first[4];\nLAB_002d593d:\n          __first[3] = lVar9;\n          __first[4] = lVar1;\n          __first[2] = __first[5];\n          __first[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *__first = *plVar5;\n        __first[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *__first = __first[3];\n          __first[1] = __first[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *__first = *plVar5;\n        __first[1] = lVar6;\n      }\n      __first[2] = plVar5[2];\n      *plVar5 = lVar9;\n      plVar5[1] = lVar1;\n      plVar5[2] = lVar2;\n      lVar10 = __first[3];\n      lVar6 = plVar8[-3];\nLAB_002d57a6:\n      lVar9 = *__first;\n      plVar5 = __first + 6;\n      plVar7 = plVar8;\n      __last = __first + 3;\n      do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= __last) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *__first;\n        }\n        lVar10 = *plVar5;\n        __last = __last + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );\n    }\nLAB_002d584a:\n    lVar10 = (lVar6 >> 3) * -0x5555555555555555;\n    for (lVar6 = lVar10 + -2 >> 1;\n        __adjust_heap<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_long_int,_gold::Object_merge_map::Input_merge_entry,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                  (__first,lVar6,lVar10), lVar6 != 0; lVar6 = lVar6 + -1) {\n    }\n    do {\n      plVar8 = __last + -3;\n      lVar6 = __first[1];\n      *plVar8 = *__first;\n      __last[-2] = lVar6;\n      __last[-1] = __first[2];\n      __adjust_heap<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_long_int,_gold::Object_merge_map::Input_merge_entry,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                (__first,0,((long)plVar8 - (long)__first >> 3) * -0x5555555555555555);\n      __last = plVar8;\n    } while (0x18 < (long)plVar8 - (long)__first);\n  }" { (if_statement "if (__depth_limit != 0) {\n      plVar8 = __last;\nLAB_002d572b:\n      lVar6 = __first[3];\n      __depth_limit = __depth_limit + -1;\n      lVar10 = plVar8[-3];\n      lVar9 = *__first;\n      lVar1 = __first[1];\n      lVar2 = __first[2];\n      plVar5 = __first + ((((long)plVar8 - (long)__first >> 3) * -0x5555555555555555) / 2) * 3;\n      lVar3 = *plVar5;\n      if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *__first = plVar8[-3];\n            __first[1] = lVar6;\n            __first[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = __first[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *__first = __first[3];\n          __first[1] = __first[4];\nLAB_002d593d:\n          __first[3] = lVar9;\n          __first[4] = lVar1;\n          __first[2] = __first[5];\n          __first[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *__first = *plVar5;\n        __first[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *__first = __first[3];\n          __first[1] = __first[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *__first = *plVar5;\n        __first[1] = lVar6;\n      }\n      __first[2] = plVar5[2];\n      *plVar5 = lVar9;\n      plVar5[1] = lVar1;\n      plVar5[2] = lVar2;\n      lVar10 = __first[3];\n      lVar6 = plVar8[-3];\nLAB_002d57a6:\n      lVar9 = *__first;\n      plVar5 = __first + 6;\n      plVar7 = plVar8;\n      __last = __first + 3;\n      do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= __last) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *__first;\n        }\n        lVar10 = *plVar5;\n        __last = __last + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );\n    }" if (parenthesized_expression "(__depth_limit != 0)" ( (binary_expression "__depth_limit != 0" identifier != number_literal) )) (compound_statement "{\n      plVar8 = __last;\nLAB_002d572b:\n      lVar6 = __first[3];\n      __depth_limit = __depth_limit + -1;\n      lVar10 = plVar8[-3];\n      lVar9 = *__first;\n      lVar1 = __first[1];\n      lVar2 = __first[2];\n      plVar5 = __first + ((((long)plVar8 - (long)__first >> 3) * -0x5555555555555555) / 2) * 3;\n      lVar3 = *plVar5;\n      if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *__first = plVar8[-3];\n            __first[1] = lVar6;\n            __first[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = __first[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *__first = __first[3];\n          __first[1] = __first[4];\nLAB_002d593d:\n          __first[3] = lVar9;\n          __first[4] = lVar1;\n          __first[2] = __first[5];\n          __first[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *__first = *plVar5;\n        __first[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *__first = __first[3];\n          __first[1] = __first[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *__first = *plVar5;\n        __first[1] = lVar6;\n      }\n      __first[2] = plVar5[2];\n      *plVar5 = lVar9;\n      plVar5[1] = lVar1;\n      plVar5[2] = lVar2;\n      lVar10 = __first[3];\n      lVar6 = plVar8[-3];\nLAB_002d57a6:\n      lVar9 = *__first;\n      plVar5 = __first + 6;\n      plVar7 = plVar8;\n      __last = __first + 3;\n      do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= __last) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *__first;\n        }\n        lVar10 = *plVar5;\n        __last = __last + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );\n    }" { (expression_statement "plVar8 = __last;" (assignment_expression "plVar8 = __last" identifier = identifier) ;) (labeled_statement "LAB_002d572b:\n      lVar6 = __first[3];" statement_identifier : (expression_statement "lVar6 = __first[3];" (assignment_expression "lVar6 = __first[3]" identifier = (subscript_expression "__first[3]" identifier [ number_literal ])) ;)) (expression_statement "__depth_limit = __depth_limit + -1;" (assignment_expression "__depth_limit = __depth_limit + -1" identifier = (binary_expression "__depth_limit + -1" identifier + number_literal)) ;) (expression_statement "lVar10 = plVar8[-3];" (assignment_expression "lVar10 = plVar8[-3]" identifier = (subscript_expression "plVar8[-3]" identifier [ number_literal ])) ;) (expression_statement "lVar9 = *__first;" (assignment_expression "lVar9 = *__first" identifier = (pointer_expression "*__first" * identifier)) ;) (expression_statement "lVar1 = __first[1];" (assignment_expression "lVar1 = __first[1]" identifier = (subscript_expression "__first[1]" identifier [ number_literal ])) ;) (expression_statement "lVar2 = __first[2];" (assignment_expression "lVar2 = __first[2]" identifier = (subscript_expression "__first[2]" identifier [ number_literal ])) ;) (expression_statement "plVar5 = __first + ((((long)plVar8 - (long)__first >> 3) * -0x5555555555555555) / 2) * 3;" (assignment_expression "plVar5 = __first + ((((long)plVar8 - (long)__first >> 3) * -0x5555555555555555) / 2) * 3" identifier = (binary_expression "__first + ((((long)plVar8 - (long)__first >> 3) * -0x5555555555555555) / 2) * 3" identifier + (binary_expression "((((long)plVar8 - (long)__first >> 3) * -0x5555555555555555) / 2) * 3" (parenthesized_expression "((((long)plVar8 - (long)__first >> 3) * -0x5555555555555555) / 2)" ( (binary_expression "(((long)plVar8 - (long)__first >> 3) * -0x5555555555555555) / 2" (parenthesized_expression "(((long)plVar8 - (long)__first >> 3) * -0x5555555555555555)" ( (binary_expression "((long)plVar8 - (long)__first >> 3) * -0x5555555555555555" (parenthesized_expression "((long)plVar8 - (long)__first >> 3)" ( (binary_expression "(long)plVar8 - (long)__first >> 3" (binary_expression "(long)plVar8 - (long)__first" (cast_expression "(long)plVar8" ( (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) )) / number_literal) )) * number_literal))) ;) (expression_statement "lVar3 = *plVar5;" (assignment_expression "lVar3 = *plVar5" identifier = (pointer_expression "*plVar5" * identifier)) ;) (if_statement "if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *__first = plVar8[-3];\n            __first[1] = lVar6;\n            __first[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = __first[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *__first = __first[3];\n          __first[1] = __first[4];\nLAB_002d593d:\n          __first[3] = lVar9;\n          __first[4] = lVar1;\n          __first[2] = __first[5];\n          __first[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *__first = *plVar5;\n        __first[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *__first = __first[3];\n          __first[1] = __first[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *__first = *plVar5;\n        __first[1] = lVar6;\n      }" if (parenthesized_expression "(lVar6 < lVar3)" ( (binary_expression "lVar6 < lVar3" identifier < identifier) )) (compound_statement "{\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *__first = plVar8[-3];\n            __first[1] = lVar6;\n            __first[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = __first[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *__first = __first[3];\n          __first[1] = __first[4];\nLAB_002d593d:\n          __first[3] = lVar9;\n          __first[4] = lVar1;\n          __first[2] = __first[5];\n          __first[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *__first = *plVar5;\n        __first[1] = lVar6;\n      }" { (if_statement "if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *__first = plVar8[-3];\n            __first[1] = lVar6;\n            __first[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = __first[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *__first = __first[3];\n          __first[1] = __first[4];\nLAB_002d593d:\n          __first[3] = lVar9;\n          __first[4] = lVar1;\n          __first[2] = __first[5];\n          __first[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }" if (parenthesized_expression "(lVar10 <= lVar3)" ( (binary_expression "lVar10 <= lVar3" identifier <= identifier) )) (compound_statement "{\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *__first = plVar8[-3];\n            __first[1] = lVar6;\n            __first[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = __first[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *__first = __first[3];\n          __first[1] = __first[4];\nLAB_002d593d:\n          __first[3] = lVar9;\n          __first[4] = lVar1;\n          __first[2] = __first[5];\n          __first[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }" { (if_statement "if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *__first = plVar8[-3];\n            __first[1] = lVar6;\n            __first[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = __first[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }" if (parenthesized_expression "(lVar6 < lVar10)" ( (binary_expression "lVar6 < lVar10" identifier < identifier) )) (compound_statement "{\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *__first = plVar8[-3];\n            __first[1] = lVar6;\n            __first[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = __first[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }" { (labeled_statement "LAB_002d5965:\n            lVar6 = plVar8[-2];" statement_identifier : (expression_statement "lVar6 = plVar8[-2];" (assignment_expression "lVar6 = plVar8[-2]" identifier = (subscript_expression "plVar8[-2]" identifier [ number_literal ])) ;)) (expression_statement "*__first = plVar8[-3];" (assignment_expression "*__first = plVar8[-3]" (pointer_expression "*__first" * identifier) = (subscript_expression "plVar8[-3]" identifier [ number_literal ])) ;) (expression_statement "__first[1] = lVar6;" (assignment_expression "__first[1] = lVar6" (subscript_expression "__first[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__first[2] = plVar8[-1];" (assignment_expression "__first[2] = plVar8[-1]" (subscript_expression "__first[2]" identifier [ number_literal ]) = (subscript_expression "plVar8[-1]" identifier [ number_literal ])) ;) (expression_statement "plVar8[-1] = lVar2;" (assignment_expression "plVar8[-1] = lVar2" (subscript_expression "plVar8[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar8[-3] = lVar9;" (assignment_expression "plVar8[-3] = lVar9" (subscript_expression "plVar8[-3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar8[-2] = lVar1;" (assignment_expression "plVar8[-2] = lVar1" (subscript_expression "plVar8[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "lVar10 = __first[3];" (assignment_expression "lVar10 = __first[3]" identifier = (subscript_expression "__first[3]" identifier [ number_literal ])) ;) (expression_statement "lVar6 = lVar9;" (assignment_expression "lVar6 = lVar9" identifier = identifier) ;) (goto_statement "goto LAB_002d57a6;" goto statement_identifier ;) })) (expression_statement "*__first = __first[3];" (assignment_expression "*__first = __first[3]" (pointer_expression "*__first" * identifier) = (subscript_expression "__first[3]" identifier [ number_literal ])) ;) (expression_statement "__first[1] = __first[4];" (assignment_expression "__first[1] = __first[4]" (subscript_expression "__first[1]" identifier [ number_literal ]) = (subscript_expression "__first[4]" identifier [ number_literal ])) ;) (labeled_statement "LAB_002d593d:\n          __first[3] = lVar9;" statement_identifier : (expression_statement "__first[3] = lVar9;" (assignment_expression "__first[3] = lVar9" (subscript_expression "__first[3]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "__first[4] = lVar1;" (assignment_expression "__first[4] = lVar1" (subscript_expression "__first[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__first[2] = __first[5];" (assignment_expression "__first[2] = __first[5]" (subscript_expression "__first[2]" identifier [ number_literal ]) = (subscript_expression "__first[5]" identifier [ number_literal ])) ;) (expression_statement "__first[5] = lVar2;" (assignment_expression "__first[5] = lVar2" (subscript_expression "__first[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "lVar6 = plVar8[-3];" (assignment_expression "lVar6 = plVar8[-3]" identifier = (subscript_expression "plVar8[-3]" identifier [ number_literal ])) ;) (expression_statement "lVar10 = lVar9;" (assignment_expression "lVar10 = lVar9" identifier = identifier) ;) (goto_statement "goto LAB_002d57a6;" goto statement_identifier ;) })) (expression_statement "lVar6 = plVar5[1];" (assignment_expression "lVar6 = plVar5[1]" identifier = (subscript_expression "plVar5[1]" identifier [ number_literal ])) ;) (expression_statement "*__first = *plVar5;" (assignment_expression "*__first = *plVar5" (pointer_expression "*__first" * identifier) = (pointer_expression "*plVar5" * identifier)) ;) (expression_statement "__first[1] = lVar6;" (assignment_expression "__first[1] = lVar6" (subscript_expression "__first[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n        if (lVar6 < lVar10) {\n          *__first = __first[3];\n          __first[1] = __first[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *__first = *plVar5;\n        __first[1] = lVar6;\n      }" else (compound_statement "{\n        if (lVar6 < lVar10) {\n          *__first = __first[3];\n          __first[1] = __first[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *__first = *plVar5;\n        __first[1] = lVar6;\n      }" { (if_statement "if (lVar6 < lVar10) {\n          *__first = __first[3];\n          __first[1] = __first[4];\n          goto LAB_002d593d;\n        }" if (parenthesized_expression "(lVar6 < lVar10)" ( (binary_expression "lVar6 < lVar10" identifier < identifier) )) (compound_statement "{\n          *__first = __first[3];\n          __first[1] = __first[4];\n          goto LAB_002d593d;\n        }" { (expression_statement "*__first = __first[3];" (assignment_expression "*__first = __first[3]" (pointer_expression "*__first" * identifier) = (subscript_expression "__first[3]" identifier [ number_literal ])) ;) (expression_statement "__first[1] = __first[4];" (assignment_expression "__first[1] = __first[4]" (subscript_expression "__first[1]" identifier [ number_literal ]) = (subscript_expression "__first[4]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_002d593d;" goto statement_identifier ;) })) (if_statement "if (lVar3 < lVar10) goto LAB_002d5965;" if (parenthesized_expression "(lVar3 < lVar10)" ( (binary_expression "lVar3 < lVar10" identifier < identifier) )) (goto_statement "goto LAB_002d5965;" goto statement_identifier ;)) (expression_statement "lVar6 = plVar5[1];" (assignment_expression "lVar6 = plVar5[1]" identifier = (subscript_expression "plVar5[1]" identifier [ number_literal ])) ;) (expression_statement "*__first = *plVar5;" (assignment_expression "*__first = *plVar5" (pointer_expression "*__first" * identifier) = (pointer_expression "*plVar5" * identifier)) ;) (expression_statement "__first[1] = lVar6;" (assignment_expression "__first[1] = lVar6" (subscript_expression "__first[1]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "__first[2] = plVar5[2];" (assignment_expression "__first[2] = plVar5[2]" (subscript_expression "__first[2]" identifier [ number_literal ]) = (subscript_expression "plVar5[2]" identifier [ number_literal ])) ;) (expression_statement "*plVar5 = lVar9;" (assignment_expression "*plVar5 = lVar9" (pointer_expression "*plVar5" * identifier) = identifier) ;) (expression_statement "plVar5[1] = lVar1;" (assignment_expression "plVar5[1] = lVar1" (subscript_expression "plVar5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar5[2] = lVar2;" (assignment_expression "plVar5[2] = lVar2" (subscript_expression "plVar5[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "lVar10 = __first[3];" (assignment_expression "lVar10 = __first[3]" identifier = (subscript_expression "__first[3]" identifier [ number_literal ])) ;) (expression_statement "lVar6 = plVar8[-3];" (assignment_expression "lVar6 = plVar8[-3]" identifier = (subscript_expression "plVar8[-3]" identifier [ number_literal ])) ;) (labeled_statement "LAB_002d57a6:\n      lVar9 = *__first;" statement_identifier : (expression_statement "lVar9 = *__first;" (assignment_expression "lVar9 = *__first" identifier = (pointer_expression "*__first" * identifier)) ;)) (expression_statement "plVar5 = __first + 6;" (assignment_expression "plVar5 = __first + 6" identifier = (binary_expression "__first + 6" identifier + number_literal)) ;) (expression_statement "plVar7 = plVar8;" (assignment_expression "plVar7 = plVar8" identifier = identifier) ;) (expression_statement "__last = __first + 3;" (assignment_expression "__last = __first + 3" identifier = (binary_expression "__first + 3" identifier + number_literal)) ;) (do_statement "do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= __last) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *__first;\n        }\n        lVar10 = *plVar5;\n        __last = __last + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );" do (compound_statement "{\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= __last) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *__first;\n        }\n        lVar10 = *plVar5;\n        __last = __last + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      }" { (expression_statement "plVar4 = plVar7;" (assignment_expression "plVar4 = plVar7" identifier = identifier) ;) (if_statement "if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= __last) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *__first;\n        }" if (parenthesized_expression "(lVar9 <= lVar10)" ( (binary_expression "lVar9 <= lVar10" identifier <= identifier) )) (compound_statement "{\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= __last) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *__first;\n        }" { (expression_statement "plVar4 = plVar7 + -3;" (assignment_expression "plVar4 = plVar7 + -3" identifier = (binary_expression "plVar7 + -3" identifier + number_literal)) ;) (if_statement "if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }" if (parenthesized_expression "(lVar9 < lVar6)" ( (binary_expression "lVar9 < lVar6" identifier < identifier) )) (compound_statement "{\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }" { (expression_statement "plVar7 = plVar7 + -6;" (assignment_expression "plVar7 = plVar7 + -6" identifier = (binary_expression "plVar7 + -6" identifier + number_literal)) ;) (do_statement "do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);" do (compound_statement "{\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            }" { (expression_statement "plVar4 = plVar7;" (assignment_expression "plVar4 = plVar7" identifier = identifier) ;) (expression_statement "plVar7 = plVar4 + -3;" (assignment_expression "plVar7 = plVar4 + -3" identifier = (binary_expression "plVar4 + -3" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar9 < *plVar4)" ( (binary_expression "lVar9 < *plVar4" identifier < (pointer_expression "*plVar4" * identifier)) )) ;) })) (if_statement "if (plVar4 <= __last) goto LAB_002d5820;" if (parenthesized_expression "(plVar4 <= __last)" ( (binary_expression "plVar4 <= __last" identifier <= identifier) )) (goto_statement "goto LAB_002d5820;" goto statement_identifier ;)) (expression_statement "lVar6 = plVar4[1];" (assignment_expression "lVar6 = plVar4[1]" identifier = (subscript_expression "plVar4[1]" identifier [ number_literal ])) ;) (expression_statement "lVar9 = plVar5[-2];" (assignment_expression "lVar9 = plVar5[-2]" identifier = (subscript_expression "plVar5[-2]" identifier [ number_literal ])) ;) (expression_statement "lVar1 = plVar5[-1];" (assignment_expression "lVar1 = plVar5[-1]" identifier = (subscript_expression "plVar5[-1]" identifier [ number_literal ])) ;) (expression_statement "plVar5[-3] = *plVar4;" (assignment_expression "plVar5[-3] = *plVar4" (subscript_expression "plVar5[-3]" identifier [ number_literal ]) = (pointer_expression "*plVar4" * identifier)) ;) (expression_statement "plVar5[-2] = lVar6;" (assignment_expression "plVar5[-2] = lVar6" (subscript_expression "plVar5[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar5[-1] = plVar4[2];" (assignment_expression "plVar5[-1] = plVar4[2]" (subscript_expression "plVar5[-1]" identifier [ number_literal ]) = (subscript_expression "plVar4[2]" identifier [ number_literal ])) ;) (expression_statement "lVar6 = plVar4[-3];" (assignment_expression "lVar6 = plVar4[-3]" identifier = (subscript_expression "plVar4[-3]" identifier [ number_literal ])) ;) (expression_statement "plVar4[2] = lVar1;" (assignment_expression "plVar4[2] = lVar1" (subscript_expression "plVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*plVar4 = lVar10;" (assignment_expression "*plVar4 = lVar10" (pointer_expression "*plVar4" * identifier) = identifier) ;) (expression_statement "plVar4[1] = lVar9;" (assignment_expression "plVar4[1] = lVar9" (subscript_expression "plVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "lVar9 = *__first;" (assignment_expression "lVar9 = *__first" identifier = (pointer_expression "*__first" * identifier)) ;) })) (expression_statement "lVar10 = *plVar5;" (assignment_expression "lVar10 = *plVar5" identifier = (pointer_expression "*plVar5" * identifier)) ;) (expression_statement "__last = __last + 3;" (assignment_expression "__last = __last + 3" identifier = (binary_expression "__last + 3" identifier + number_literal)) ;) (expression_statement "plVar5 = plVar5 + 3;" (assignment_expression "plVar5 = plVar5 + 3" identifier = (binary_expression "plVar5 + 3" identifier + number_literal)) ;) (expression_statement "plVar7 = plVar4;" (assignment_expression "plVar7 = plVar4" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_002d584a:\n    lVar10 = (lVar6 >> 3) * -0x5555555555555555;" statement_identifier : (expression_statement "lVar10 = (lVar6 >> 3) * -0x5555555555555555;" (assignment_expression "lVar10 = (lVar6 >> 3) * -0x5555555555555555" identifier = (binary_expression "(lVar6 >> 3) * -0x5555555555555555" (parenthesized_expression "(lVar6 >> 3)" ( (binary_expression "lVar6 >> 3" identifier >> number_literal) )) * number_literal)) ;)) (for_statement "for (lVar6 = lVar10 + -2 >> 1;\n        __adjust_heap<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_long_int,_gold::Object_merge_map::Input_merge_entry,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                  (__first,lVar6,lVar10), lVar6 != 0; lVar6 = lVar6 + -1) {\n    }" for ( (assignment_expression "lVar6 = lVar10 + -2 >> 1" identifier = (binary_expression "lVar10 + -2 >> 1" (binary_expression "lVar10 + -2" identifier + number_literal) >> number_literal)) ; (ERROR "__adjust_heap<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_long_int,_gold::Object_merge_map::Input_merge_entry,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::" (comma_expression "__adjust_heap<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_long_int,_gold" (binary_expression "__adjust_heap<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_long_int" (binary_expression "__adjust_heap<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_" (binary_expression "__adjust_heap<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold" (binary_expression "__adjust_heap<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std" (binary_expression "__adjust_heap<__gnu_cxx::__normal_iterator<gold" (binary_expression "__adjust_heap<__gnu_cxx" identifier < identifier) (ERROR "::__normal_iterator" : : identifier) < identifier) (ERROR "::Object_merge_map::Input_merge_entry" : : identifier : : identifier) * (ERROR "," ,) identifier) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Object_merge_map::Input_merge_entry" : : identifier : : identifier) > identifier) > (ERROR "," ,) identifier) , identifier) : : identifier : : (comma_expression "Input_merge_entry,___gnu_cxx" identifier , identifier) : : identifier : : (binary_expression "_Iter_comp_iter<gold" identifier < identifier) : : identifier : :) (comma_expression "Input_merge_compare>_>\n                  (__first,lVar6,lVar10), lVar6 != 0" (binary_expression "Input_merge_compare>_>\n                  (__first,lVar6,lVar10)" (binary_expression "Input_merge_compare>_" identifier > identifier) > (parenthesized_expression "(__first,lVar6,lVar10)" ( (comma_expression "__first,lVar6,lVar10" identifier , (comma_expression "lVar6,lVar10" identifier , identifier)) ))) , (binary_expression "lVar6 != 0" identifier != number_literal)) ; (assignment_expression "lVar6 = lVar6 + -1" identifier = (binary_expression "lVar6 + -1" identifier + number_literal)) ) (compound_statement "{\n    }" { })) (do_statement "do {\n      plVar8 = __last + -3;\n      lVar6 = __first[1];\n      *plVar8 = *__first;\n      __last[-2] = lVar6;\n      __last[-1] = __first[2];\n      __adjust_heap<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_long_int,_gold::Object_merge_map::Input_merge_entry,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                (__first,0,((long)plVar8 - (long)__first >> 3) * -0x5555555555555555);\n      __last = plVar8;\n    } while (0x18 < (long)plVar8 - (long)__first);" do (compound_statement "{\n      plVar8 = __last + -3;\n      lVar6 = __first[1];\n      *plVar8 = *__first;\n      __last[-2] = lVar6;\n      __last[-1] = __first[2];\n      __adjust_heap<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_long_int,_gold::Object_merge_map::Input_merge_entry,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                (__first,0,((long)plVar8 - (long)__first >> 3) * -0x5555555555555555);\n      __last = plVar8;\n    }" { (expression_statement "plVar8 = __last + -3;" (assignment_expression "plVar8 = __last + -3" identifier = (binary_expression "__last + -3" identifier + number_literal)) ;) (expression_statement "lVar6 = __first[1];" (assignment_expression "lVar6 = __first[1]" identifier = (subscript_expression "__first[1]" identifier [ number_literal ])) ;) (expression_statement "*plVar8 = *__first;" (assignment_expression "*plVar8 = *__first" (pointer_expression "*plVar8" * identifier) = (pointer_expression "*__first" * identifier)) ;) (expression_statement "__last[-2] = lVar6;" (assignment_expression "__last[-2] = lVar6" (subscript_expression "__last[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__last[-1] = __first[2];" (assignment_expression "__last[-1] = __first[2]" (subscript_expression "__last[-1]" identifier [ number_literal ]) = (subscript_expression "__first[2]" identifier [ number_literal ])) ;) (ERROR "__adjust_heap<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_long_int,_gold::" (binary_expression "__adjust_heap<__gnu_cxx::__normal_iterator<gold" (binary_expression "__adjust_heap<__gnu_cxx" identifier < identifier) (ERROR "::__normal_iterator" : : identifier) < identifier) : : (comma_expression "Object_merge_map::Input_merge_entry*,_std" identifier (ERROR "::Input_merge_entry*" : : identifier *) , identifier) : : (binary_expression "vector<gold" identifier < identifier) : : (comma_expression "Object_merge_map::Input_merge_entry>_>,_long_int,_gold" identifier (ERROR "::Input_merge_entry>_>" : : (binary_expression "Input_merge_entry>_" identifier > identifier) >) , (comma_expression "_long_int,_gold" identifier , identifier)) : :) (labeled_statement "Object_merge_map::Input_merge_entry,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                (__first,0,((long)plVar8 - (long)__first >> 3) * -0x5555555555555555);" statement_identifier (ERROR "::Input_merge_entry,___gnu_cxx:" : : (comma_expression "Input_merge_entry,___gnu_cxx" identifier , identifier) :) : (labeled_statement "__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n                (__first,0,((long)plVar8 - (long)__first >> 3) * -0x5555555555555555);" statement_identifier (ERROR "::_Iter_comp_iter<gold:" : : (binary_expression "_Iter_comp_iter<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_compare>_>\n                (__first,0,((long)plVar8 - (long)__first >> 3) * -0x5555555555555555);" statement_identifier : (ERROR ":" :) (expression_statement "Input_merge_compare>_>\n                (__first,0,((long)plVar8 - (long)__first >> 3) * -0x5555555555555555);" (binary_expression "Input_merge_compare>_>\n                (__first,0,((long)plVar8 - (long)__first >> 3) * -0x5555555555555555)" (binary_expression "Input_merge_compare>_" identifier > identifier) > (parenthesized_expression "(__first,0,((long)plVar8 - (long)__first >> 3) * -0x5555555555555555)" ( (comma_expression "__first,0,((long)plVar8 - (long)__first >> 3) * -0x5555555555555555" identifier , (comma_expression "0,((long)plVar8 - (long)__first >> 3) * -0x5555555555555555" number_literal , (binary_expression "((long)plVar8 - (long)__first >> 3) * -0x5555555555555555" (parenthesized_expression "((long)plVar8 - (long)__first >> 3)" ( (binary_expression "(long)plVar8 - (long)__first >> 3" (binary_expression "(long)plVar8 - (long)__first" (cast_expression "(long)plVar8" ( (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 "__last = plVar8;" (assignment_expression "__last = plVar8" identifier = identifier) ;) }) while (parenthesized_expression "(0x18 < (long)plVar8 - (long)__first)" ( (binary_expression "0x18 < (long)plVar8 - (long)__first" number_literal < (binary_expression "(long)plVar8 - (long)__first" (cast_expression "(long)plVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__first" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) )) ;) })) (return_statement "return;" return ;) (labeled_statement "LAB_002d5820:\n  __introsort_loop<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_long_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n            (__last,plVar8,__depth_limit);" statement_identifier : (ERROR "__introsort_loop<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>_>,_long_int,___gnu_cxx::" (binary_expression "__introsort_loop<__gnu_cxx::__normal_iterator<gold" (binary_expression "__introsort_loop<__gnu_cxx" identifier < identifier) (ERROR "::__normal_iterator" : : identifier) < identifier) : : (comma_expression "Object_merge_map::Input_merge_entry*,_std" identifier (ERROR "::Input_merge_entry*" : : identifier *) , identifier) : : (binary_expression "vector<gold" identifier < identifier) : : (comma_expression "Object_merge_map::Input_merge_entry>_>,_long_int,___gnu_cxx" identifier (ERROR "::Input_merge_entry>_>" : : (binary_expression "Input_merge_entry>_" identifier > identifier) >) , (comma_expression "_long_int,___gnu_cxx" identifier , identifier)) : :) (labeled_statement "__ops::_Iter_comp_iter<gold::Object_merge_map::Input_merge_compare>_>\n            (__last,plVar8,__depth_limit);" statement_identifier (ERROR "::_Iter_comp_iter<gold:" : : (binary_expression "_Iter_comp_iter<gold" identifier < identifier) :) : (labeled_statement "Object_merge_map::Input_merge_compare>_>\n            (__last,plVar8,__depth_limit);" statement_identifier : (ERROR ":" :) (expression_statement "Input_merge_compare>_>\n            (__last,plVar8,__depth_limit);" (binary_expression "Input_merge_compare>_>\n            (__last,plVar8,__depth_limit)" (binary_expression "Input_merge_compare>_" identifier > identifier) > (parenthesized_expression "(__last,plVar8,__depth_limit)" ( (comma_expression "__last,plVar8,__depth_limit" identifier , (comma_expression "plVar8,__depth_limit" identifier , identifier)) ))) ;)))) (expression_statement "lVar6 = (long)__last - (long)__first;" (assignment_expression "lVar6 = (long)__last - (long)__first" identifier = (binary_expression "(long)__last - (long)__first" (cast_expression "(long)__last" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__first" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (lVar6 < 0x181) {\n    return;\n  }" if (parenthesized_expression "(lVar6 < 0x181)" ( (binary_expression "lVar6 < 0x181" identifier < number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "plVar8 = __last;" (assignment_expression "plVar8 = __last" identifier = identifier) ;) (if_statement "if (__depth_limit == 0) goto LAB_002d584a;" if (parenthesized_expression "(__depth_limit == 0)" ( (binary_expression "__depth_limit == 0" identifier == number_literal) )) (goto_statement "goto LAB_002d584a;" goto statement_identifier ;)) (goto_statement "goto LAB_002d572b;" goto statement_identifier ;) (ERROR "}" }))
(translation_unit "void FUN_002d56f0(long *param_1,long *param_2,long param_3)\n\n{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  long *plVar5;\n  long lVar6;\n  long *plVar7;\n  long *plVar8;\n  long lVar9;\n  long lVar10;\n  \n  lVar6 = (long)param_2 - (long)param_1;\n  if (0x180 < lVar6) {\n    if (param_3 != 0) {\n      plVar8 = param_2;\nLAB_002d572b:\n      lVar6 = param_1[3];\n      param_3 = param_3 + -1;\n      lVar10 = plVar8[-3];\n      lVar9 = *param_1;\n      lVar1 = param_1[1];\n      lVar2 = param_1[2];\n      plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3;\n      lVar3 = *plVar5;\n      if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      param_1[2] = plVar5[2];\n      *plVar5 = lVar9;\n      plVar5[1] = lVar1;\n      plVar5[2] = lVar2;\n      lVar10 = param_1[3];\n      lVar6 = plVar8[-3];\nLAB_002d57a6:\n      lVar9 = *param_1;\n      plVar5 = param_1 + 6;\n      plVar7 = plVar8;\n      param_2 = param_1 + 3;\n      do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );\n    }\nLAB_002d584a:\n    lVar10 = (lVar6 >> 3) * -0x5555555555555555;\n    for (lVar6 = lVar10 + -2 >> 1; FUN_002d5580(param_1,lVar6,lVar10), lVar6 != 0;\n        lVar6 = lVar6 + -1) {\n    }\n    do {\n      plVar8 = param_2 + -3;\n      lVar6 = param_1[1];\n      *plVar8 = *param_1;\n      param_2[-2] = lVar6;\n      param_2[-1] = param_1[2];\n      FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555);\n      param_2 = plVar8;\n    } while (0x18 < (long)plVar8 - (long)param_1);\n  }\n  return;\nLAB_002d5820:\n  FUN_002d56f0(param_2,plVar8,param_3);\n  lVar6 = (long)param_2 - (long)param_1;\n  if (lVar6 < 0x181) {\n    return;\n  }\n  plVar8 = param_2;\n  if (param_3 == 0) goto LAB_002d584a;\n  goto LAB_002d572b;\n}\n\n" (function_definition "void FUN_002d56f0(long *param_1,long *param_2,long param_3)\n\n{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  long *plVar5;\n  long lVar6;\n  long *plVar7;\n  long *plVar8;\n  long lVar9;\n  long lVar10;\n  \n  lVar6 = (long)param_2 - (long)param_1;\n  if (0x180 < lVar6) {\n    if (param_3 != 0) {\n      plVar8 = param_2;\nLAB_002d572b:\n      lVar6 = param_1[3];\n      param_3 = param_3 + -1;\n      lVar10 = plVar8[-3];\n      lVar9 = *param_1;\n      lVar1 = param_1[1];\n      lVar2 = param_1[2];\n      plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3;\n      lVar3 = *plVar5;\n      if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      param_1[2] = plVar5[2];\n      *plVar5 = lVar9;\n      plVar5[1] = lVar1;\n      plVar5[2] = lVar2;\n      lVar10 = param_1[3];\n      lVar6 = plVar8[-3];\nLAB_002d57a6:\n      lVar9 = *param_1;\n      plVar5 = param_1 + 6;\n      plVar7 = plVar8;\n      param_2 = param_1 + 3;\n      do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );\n    }\nLAB_002d584a:\n    lVar10 = (lVar6 >> 3) * -0x5555555555555555;\n    for (lVar6 = lVar10 + -2 >> 1; FUN_002d5580(param_1,lVar6,lVar10), lVar6 != 0;\n        lVar6 = lVar6 + -1) {\n    }\n    do {\n      plVar8 = param_2 + -3;\n      lVar6 = param_1[1];\n      *plVar8 = *param_1;\n      param_2[-2] = lVar6;\n      param_2[-1] = param_1[2];\n      FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555);\n      param_2 = plVar8;\n    } while (0x18 < (long)plVar8 - (long)param_1);\n  }\n  return;\nLAB_002d5820:\n  FUN_002d56f0(param_2,plVar8,param_3);\n  lVar6 = (long)param_2 - (long)param_1;\n  if (lVar6 < 0x181) {\n    return;\n  }\n  plVar8 = param_2;\n  if (param_3 == 0) goto LAB_002d584a;\n  goto LAB_002d572b;\n}" primitive_type (function_declarator "FUN_002d56f0(long *param_1,long *param_2,long param_3)" identifier (parameter_list "(long *param_1,long *param_2,long param_3)" ( (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)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  long *plVar5;\n  long lVar6;\n  long *plVar7;\n  long *plVar8;\n  long lVar9;\n  long lVar10;\n  \n  lVar6 = (long)param_2 - (long)param_1;\n  if (0x180 < lVar6) {\n    if (param_3 != 0) {\n      plVar8 = param_2;\nLAB_002d572b:\n      lVar6 = param_1[3];\n      param_3 = param_3 + -1;\n      lVar10 = plVar8[-3];\n      lVar9 = *param_1;\n      lVar1 = param_1[1];\n      lVar2 = param_1[2];\n      plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3;\n      lVar3 = *plVar5;\n      if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      param_1[2] = plVar5[2];\n      *plVar5 = lVar9;\n      plVar5[1] = lVar1;\n      plVar5[2] = lVar2;\n      lVar10 = param_1[3];\n      lVar6 = plVar8[-3];\nLAB_002d57a6:\n      lVar9 = *param_1;\n      plVar5 = param_1 + 6;\n      plVar7 = plVar8;\n      param_2 = param_1 + 3;\n      do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );\n    }\nLAB_002d584a:\n    lVar10 = (lVar6 >> 3) * -0x5555555555555555;\n    for (lVar6 = lVar10 + -2 >> 1; FUN_002d5580(param_1,lVar6,lVar10), lVar6 != 0;\n        lVar6 = lVar6 + -1) {\n    }\n    do {\n      plVar8 = param_2 + -3;\n      lVar6 = param_1[1];\n      *plVar8 = *param_1;\n      param_2[-2] = lVar6;\n      param_2[-1] = param_1[2];\n      FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555);\n      param_2 = plVar8;\n    } while (0x18 < (long)plVar8 - (long)param_1);\n  }\n  return;\nLAB_002d5820:\n  FUN_002d56f0(param_2,plVar8,param_3);\n  lVar6 = (long)param_2 - (long)param_1;\n  if (lVar6 < 0x181) {\n    return;\n  }\n  plVar8 = param_2;\n  if (param_3 == 0) goto LAB_002d584a;\n  goto LAB_002d572b;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "long *plVar5;" (sized_type_specifier "long" long) (pointer_declarator "*plVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar7;" (sized_type_specifier "long" long) (pointer_declarator "*plVar7" * identifier) ;) (declaration "long *plVar8;" (sized_type_specifier "long" long) (pointer_declarator "*plVar8" * identifier) ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar6 = (long)param_2 - (long)param_1;" (assignment_expression "lVar6 = (long)param_2 - (long)param_1" identifier = (binary_expression "(long)param_2 - (long)param_1" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (0x180 < lVar6) {\n    if (param_3 != 0) {\n      plVar8 = param_2;\nLAB_002d572b:\n      lVar6 = param_1[3];\n      param_3 = param_3 + -1;\n      lVar10 = plVar8[-3];\n      lVar9 = *param_1;\n      lVar1 = param_1[1];\n      lVar2 = param_1[2];\n      plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3;\n      lVar3 = *plVar5;\n      if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      param_1[2] = plVar5[2];\n      *plVar5 = lVar9;\n      plVar5[1] = lVar1;\n      plVar5[2] = lVar2;\n      lVar10 = param_1[3];\n      lVar6 = plVar8[-3];\nLAB_002d57a6:\n      lVar9 = *param_1;\n      plVar5 = param_1 + 6;\n      plVar7 = plVar8;\n      param_2 = param_1 + 3;\n      do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );\n    }\nLAB_002d584a:\n    lVar10 = (lVar6 >> 3) * -0x5555555555555555;\n    for (lVar6 = lVar10 + -2 >> 1; FUN_002d5580(param_1,lVar6,lVar10), lVar6 != 0;\n        lVar6 = lVar6 + -1) {\n    }\n    do {\n      plVar8 = param_2 + -3;\n      lVar6 = param_1[1];\n      *plVar8 = *param_1;\n      param_2[-2] = lVar6;\n      param_2[-1] = param_1[2];\n      FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555);\n      param_2 = plVar8;\n    } while (0x18 < (long)plVar8 - (long)param_1);\n  }" if (parenthesized_expression "(0x180 < lVar6)" ( (binary_expression "0x180 < lVar6" number_literal < identifier) )) (compound_statement "{\n    if (param_3 != 0) {\n      plVar8 = param_2;\nLAB_002d572b:\n      lVar6 = param_1[3];\n      param_3 = param_3 + -1;\n      lVar10 = plVar8[-3];\n      lVar9 = *param_1;\n      lVar1 = param_1[1];\n      lVar2 = param_1[2];\n      plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3;\n      lVar3 = *plVar5;\n      if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      param_1[2] = plVar5[2];\n      *plVar5 = lVar9;\n      plVar5[1] = lVar1;\n      plVar5[2] = lVar2;\n      lVar10 = param_1[3];\n      lVar6 = plVar8[-3];\nLAB_002d57a6:\n      lVar9 = *param_1;\n      plVar5 = param_1 + 6;\n      plVar7 = plVar8;\n      param_2 = param_1 + 3;\n      do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );\n    }\nLAB_002d584a:\n    lVar10 = (lVar6 >> 3) * -0x5555555555555555;\n    for (lVar6 = lVar10 + -2 >> 1; FUN_002d5580(param_1,lVar6,lVar10), lVar6 != 0;\n        lVar6 = lVar6 + -1) {\n    }\n    do {\n      plVar8 = param_2 + -3;\n      lVar6 = param_1[1];\n      *plVar8 = *param_1;\n      param_2[-2] = lVar6;\n      param_2[-1] = param_1[2];\n      FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555);\n      param_2 = plVar8;\n    } while (0x18 < (long)plVar8 - (long)param_1);\n  }" { (if_statement "if (param_3 != 0) {\n      plVar8 = param_2;\nLAB_002d572b:\n      lVar6 = param_1[3];\n      param_3 = param_3 + -1;\n      lVar10 = plVar8[-3];\n      lVar9 = *param_1;\n      lVar1 = param_1[1];\n      lVar2 = param_1[2];\n      plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3;\n      lVar3 = *plVar5;\n      if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      param_1[2] = plVar5[2];\n      *plVar5 = lVar9;\n      plVar5[1] = lVar1;\n      plVar5[2] = lVar2;\n      lVar10 = param_1[3];\n      lVar6 = plVar8[-3];\nLAB_002d57a6:\n      lVar9 = *param_1;\n      plVar5 = param_1 + 6;\n      plVar7 = plVar8;\n      param_2 = param_1 + 3;\n      do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );\n    }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n      plVar8 = param_2;\nLAB_002d572b:\n      lVar6 = param_1[3];\n      param_3 = param_3 + -1;\n      lVar10 = plVar8[-3];\n      lVar9 = *param_1;\n      lVar1 = param_1[1];\n      lVar2 = param_1[2];\n      plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3;\n      lVar3 = *plVar5;\n      if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      param_1[2] = plVar5[2];\n      *plVar5 = lVar9;\n      plVar5[1] = lVar1;\n      plVar5[2] = lVar2;\n      lVar10 = param_1[3];\n      lVar6 = plVar8[-3];\nLAB_002d57a6:\n      lVar9 = *param_1;\n      plVar5 = param_1 + 6;\n      plVar7 = plVar8;\n      param_2 = param_1 + 3;\n      do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );\n    }" { (expression_statement "plVar8 = param_2;" (assignment_expression "plVar8 = param_2" identifier = identifier) ;) (labeled_statement "LAB_002d572b:\n      lVar6 = param_1[3];" statement_identifier : (expression_statement "lVar6 = param_1[3];" (assignment_expression "lVar6 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;)) (expression_statement "param_3 = param_3 + -1;" (assignment_expression "param_3 = param_3 + -1" identifier = (binary_expression "param_3 + -1" identifier + number_literal)) ;) (expression_statement "lVar10 = plVar8[-3];" (assignment_expression "lVar10 = plVar8[-3]" identifier = (subscript_expression "plVar8[-3]" identifier [ number_literal ])) ;) (expression_statement "lVar9 = *param_1;" (assignment_expression "lVar9 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "lVar1 = param_1[1];" (assignment_expression "lVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "lVar2 = param_1[2];" (assignment_expression "lVar2 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3;" (assignment_expression "plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3" identifier = (binary_expression "param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3" identifier + (binary_expression "((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3" (parenthesized_expression "((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2)" ( (binary_expression "(((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2" (parenthesized_expression "(((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555)" ( (binary_expression "((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555" (parenthesized_expression "((long)plVar8 - (long)param_1 >> 3)" ( (binary_expression "(long)plVar8 - (long)param_1 >> 3" (binary_expression "(long)plVar8 - (long)param_1" (cast_expression "(long)plVar8" ( (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) )) / number_literal) )) * number_literal))) ;) (expression_statement "lVar3 = *plVar5;" (assignment_expression "lVar3 = *plVar5" identifier = (pointer_expression "*plVar5" * identifier)) ;) (if_statement "if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }" if (parenthesized_expression "(lVar6 < lVar3)" ( (binary_expression "lVar6 < lVar3" identifier < identifier) )) (compound_statement "{\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }" { (if_statement "if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }" if (parenthesized_expression "(lVar10 <= lVar3)" ( (binary_expression "lVar10 <= lVar3" identifier <= identifier) )) (compound_statement "{\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }" { (if_statement "if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }" if (parenthesized_expression "(lVar6 < lVar10)" ( (binary_expression "lVar6 < lVar10" identifier < identifier) )) (compound_statement "{\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }" { (labeled_statement "LAB_002d5965:\n            lVar6 = plVar8[-2];" statement_identifier : (expression_statement "lVar6 = plVar8[-2];" (assignment_expression "lVar6 = plVar8[-2]" identifier = (subscript_expression "plVar8[-2]" identifier [ number_literal ])) ;)) (expression_statement "*param_1 = plVar8[-3];" (assignment_expression "*param_1 = plVar8[-3]" (pointer_expression "*param_1" * identifier) = (subscript_expression "plVar8[-3]" identifier [ number_literal ])) ;) (expression_statement "param_1[1] = lVar6;" (assignment_expression "param_1[1] = lVar6" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = plVar8[-1];" (assignment_expression "param_1[2] = plVar8[-1]" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (subscript_expression "plVar8[-1]" identifier [ number_literal ])) ;) (expression_statement "plVar8[-1] = lVar2;" (assignment_expression "plVar8[-1] = lVar2" (subscript_expression "plVar8[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar8[-3] = lVar9;" (assignment_expression "plVar8[-3] = lVar9" (subscript_expression "plVar8[-3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar8[-2] = lVar1;" (assignment_expression "plVar8[-2] = lVar1" (subscript_expression "plVar8[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "lVar10 = param_1[3];" (assignment_expression "lVar10 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "lVar6 = lVar9;" (assignment_expression "lVar6 = lVar9" identifier = identifier) ;) (goto_statement "goto LAB_002d57a6;" goto statement_identifier ;) })) (expression_statement "*param_1 = param_1[3];" (assignment_expression "*param_1 = param_1[3]" (pointer_expression "*param_1" * identifier) = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "param_1[1] = param_1[4];" (assignment_expression "param_1[1] = param_1[4]" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (labeled_statement "LAB_002d593d:\n          param_1[3] = lVar9;" statement_identifier : (expression_statement "param_1[3] = lVar9;" (assignment_expression "param_1[3] = lVar9" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "param_1[4] = lVar1;" (assignment_expression "param_1[4] = lVar1" (subscript_expression "param_1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = param_1[5];" (assignment_expression "param_1[2] = param_1[5]" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "param_1[5] = lVar2;" (assignment_expression "param_1[5] = lVar2" (subscript_expression "param_1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "lVar6 = plVar8[-3];" (assignment_expression "lVar6 = plVar8[-3]" identifier = (subscript_expression "plVar8[-3]" identifier [ number_literal ])) ;) (expression_statement "lVar10 = lVar9;" (assignment_expression "lVar10 = lVar9" identifier = identifier) ;) (goto_statement "goto LAB_002d57a6;" goto statement_identifier ;) })) (expression_statement "lVar6 = plVar5[1];" (assignment_expression "lVar6 = plVar5[1]" identifier = (subscript_expression "plVar5[1]" identifier [ number_literal ])) ;) (expression_statement "*param_1 = *plVar5;" (assignment_expression "*param_1 = *plVar5" (pointer_expression "*param_1" * identifier) = (pointer_expression "*plVar5" * identifier)) ;) (expression_statement "param_1[1] = lVar6;" (assignment_expression "param_1[1] = lVar6" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }" else (compound_statement "{\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }" { (if_statement "if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }" if (parenthesized_expression "(lVar6 < lVar10)" ( (binary_expression "lVar6 < lVar10" identifier < identifier) )) (compound_statement "{\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }" { (expression_statement "*param_1 = param_1[3];" (assignment_expression "*param_1 = param_1[3]" (pointer_expression "*param_1" * identifier) = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "param_1[1] = param_1[4];" (assignment_expression "param_1[1] = param_1[4]" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_002d593d;" goto statement_identifier ;) })) (if_statement "if (lVar3 < lVar10) goto LAB_002d5965;" if (parenthesized_expression "(lVar3 < lVar10)" ( (binary_expression "lVar3 < lVar10" identifier < identifier) )) (goto_statement "goto LAB_002d5965;" goto statement_identifier ;)) (expression_statement "lVar6 = plVar5[1];" (assignment_expression "lVar6 = plVar5[1]" identifier = (subscript_expression "plVar5[1]" identifier [ number_literal ])) ;) (expression_statement "*param_1 = *plVar5;" (assignment_expression "*param_1 = *plVar5" (pointer_expression "*param_1" * identifier) = (pointer_expression "*plVar5" * identifier)) ;) (expression_statement "param_1[1] = lVar6;" (assignment_expression "param_1[1] = lVar6" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "param_1[2] = plVar5[2];" (assignment_expression "param_1[2] = plVar5[2]" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (subscript_expression "plVar5[2]" identifier [ number_literal ])) ;) (expression_statement "*plVar5 = lVar9;" (assignment_expression "*plVar5 = lVar9" (pointer_expression "*plVar5" * identifier) = identifier) ;) (expression_statement "plVar5[1] = lVar1;" (assignment_expression "plVar5[1] = lVar1" (subscript_expression "plVar5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar5[2] = lVar2;" (assignment_expression "plVar5[2] = lVar2" (subscript_expression "plVar5[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "lVar10 = param_1[3];" (assignment_expression "lVar10 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "lVar6 = plVar8[-3];" (assignment_expression "lVar6 = plVar8[-3]" identifier = (subscript_expression "plVar8[-3]" identifier [ number_literal ])) ;) (labeled_statement "LAB_002d57a6:\n      lVar9 = *param_1;" statement_identifier : (expression_statement "lVar9 = *param_1;" (assignment_expression "lVar9 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;)) (expression_statement "plVar5 = param_1 + 6;" (assignment_expression "plVar5 = param_1 + 6" identifier = (binary_expression "param_1 + 6" identifier + number_literal)) ;) (expression_statement "plVar7 = plVar8;" (assignment_expression "plVar7 = plVar8" identifier = identifier) ;) (expression_statement "param_2 = param_1 + 3;" (assignment_expression "param_2 = param_1 + 3" identifier = (binary_expression "param_1 + 3" identifier + number_literal)) ;) (do_statement "do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );" do (compound_statement "{\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      }" { (expression_statement "plVar4 = plVar7;" (assignment_expression "plVar4 = plVar7" identifier = identifier) ;) (if_statement "if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }" if (parenthesized_expression "(lVar9 <= lVar10)" ( (binary_expression "lVar9 <= lVar10" identifier <= identifier) )) (compound_statement "{\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }" { (expression_statement "plVar4 = plVar7 + -3;" (assignment_expression "plVar4 = plVar7 + -3" identifier = (binary_expression "plVar7 + -3" identifier + number_literal)) ;) (if_statement "if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }" if (parenthesized_expression "(lVar9 < lVar6)" ( (binary_expression "lVar9 < lVar6" identifier < identifier) )) (compound_statement "{\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }" { (expression_statement "plVar7 = plVar7 + -6;" (assignment_expression "plVar7 = plVar7 + -6" identifier = (binary_expression "plVar7 + -6" identifier + number_literal)) ;) (do_statement "do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);" do (compound_statement "{\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            }" { (expression_statement "plVar4 = plVar7;" (assignment_expression "plVar4 = plVar7" identifier = identifier) ;) (expression_statement "plVar7 = plVar4 + -3;" (assignment_expression "plVar7 = plVar4 + -3" identifier = (binary_expression "plVar4 + -3" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar9 < *plVar4)" ( (binary_expression "lVar9 < *plVar4" identifier < (pointer_expression "*plVar4" * identifier)) )) ;) })) (if_statement "if (plVar4 <= param_2) goto LAB_002d5820;" if (parenthesized_expression "(plVar4 <= param_2)" ( (binary_expression "plVar4 <= param_2" identifier <= identifier) )) (goto_statement "goto LAB_002d5820;" goto statement_identifier ;)) (expression_statement "lVar6 = plVar4[1];" (assignment_expression "lVar6 = plVar4[1]" identifier = (subscript_expression "plVar4[1]" identifier [ number_literal ])) ;) (expression_statement "lVar9 = plVar5[-2];" (assignment_expression "lVar9 = plVar5[-2]" identifier = (subscript_expression "plVar5[-2]" identifier [ number_literal ])) ;) (expression_statement "lVar1 = plVar5[-1];" (assignment_expression "lVar1 = plVar5[-1]" identifier = (subscript_expression "plVar5[-1]" identifier [ number_literal ])) ;) (expression_statement "plVar5[-3] = *plVar4;" (assignment_expression "plVar5[-3] = *plVar4" (subscript_expression "plVar5[-3]" identifier [ number_literal ]) = (pointer_expression "*plVar4" * identifier)) ;) (expression_statement "plVar5[-2] = lVar6;" (assignment_expression "plVar5[-2] = lVar6" (subscript_expression "plVar5[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar5[-1] = plVar4[2];" (assignment_expression "plVar5[-1] = plVar4[2]" (subscript_expression "plVar5[-1]" identifier [ number_literal ]) = (subscript_expression "plVar4[2]" identifier [ number_literal ])) ;) (expression_statement "lVar6 = plVar4[-3];" (assignment_expression "lVar6 = plVar4[-3]" identifier = (subscript_expression "plVar4[-3]" identifier [ number_literal ])) ;) (expression_statement "plVar4[2] = lVar1;" (assignment_expression "plVar4[2] = lVar1" (subscript_expression "plVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*plVar4 = lVar10;" (assignment_expression "*plVar4 = lVar10" (pointer_expression "*plVar4" * identifier) = identifier) ;) (expression_statement "plVar4[1] = lVar9;" (assignment_expression "plVar4[1] = lVar9" (subscript_expression "plVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "lVar9 = *param_1;" (assignment_expression "lVar9 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) })) (expression_statement "lVar10 = *plVar5;" (assignment_expression "lVar10 = *plVar5" identifier = (pointer_expression "*plVar5" * identifier)) ;) (expression_statement "param_2 = param_2 + 3;" (assignment_expression "param_2 = param_2 + 3" identifier = (binary_expression "param_2 + 3" identifier + number_literal)) ;) (expression_statement "plVar5 = plVar5 + 3;" (assignment_expression "plVar5 = plVar5 + 3" identifier = (binary_expression "plVar5 + 3" identifier + number_literal)) ;) (expression_statement "plVar7 = plVar4;" (assignment_expression "plVar7 = plVar4" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_002d584a:\n    lVar10 = (lVar6 >> 3) * -0x5555555555555555;" statement_identifier : (expression_statement "lVar10 = (lVar6 >> 3) * -0x5555555555555555;" (assignment_expression "lVar10 = (lVar6 >> 3) * -0x5555555555555555" identifier = (binary_expression "(lVar6 >> 3) * -0x5555555555555555" (parenthesized_expression "(lVar6 >> 3)" ( (binary_expression "lVar6 >> 3" identifier >> number_literal) )) * number_literal)) ;)) (for_statement "for (lVar6 = lVar10 + -2 >> 1; FUN_002d5580(param_1,lVar6,lVar10), lVar6 != 0;\n        lVar6 = lVar6 + -1) {\n    }" for ( (assignment_expression "lVar6 = lVar10 + -2 >> 1" identifier = (binary_expression "lVar10 + -2 >> 1" (binary_expression "lVar10 + -2" identifier + number_literal) >> number_literal)) ; (comma_expression "FUN_002d5580(param_1,lVar6,lVar10), lVar6 != 0" (call_expression "FUN_002d5580(param_1,lVar6,lVar10)" identifier (argument_list "(param_1,lVar6,lVar10)" ( identifier , identifier , identifier ))) , (binary_expression "lVar6 != 0" identifier != number_literal)) ; (assignment_expression "lVar6 = lVar6 + -1" identifier = (binary_expression "lVar6 + -1" identifier + number_literal)) ) (compound_statement "{\n    }" { })) (do_statement "do {\n      plVar8 = param_2 + -3;\n      lVar6 = param_1[1];\n      *plVar8 = *param_1;\n      param_2[-2] = lVar6;\n      param_2[-1] = param_1[2];\n      FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555);\n      param_2 = plVar8;\n    } while (0x18 < (long)plVar8 - (long)param_1);" do (compound_statement "{\n      plVar8 = param_2 + -3;\n      lVar6 = param_1[1];\n      *plVar8 = *param_1;\n      param_2[-2] = lVar6;\n      param_2[-1] = param_1[2];\n      FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555);\n      param_2 = plVar8;\n    }" { (expression_statement "plVar8 = param_2 + -3;" (assignment_expression "plVar8 = param_2 + -3" identifier = (binary_expression "param_2 + -3" identifier + number_literal)) ;) (expression_statement "lVar6 = param_1[1];" (assignment_expression "lVar6 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "*plVar8 = *param_1;" (assignment_expression "*plVar8 = *param_1" (pointer_expression "*plVar8" * identifier) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "param_2[-2] = lVar6;" (assignment_expression "param_2[-2] = lVar6" (subscript_expression "param_2[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[-1] = param_1[2];" (assignment_expression "param_2[-1] = param_1[2]" (subscript_expression "param_2[-1]" identifier [ number_literal ]) = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555);" (call_expression "FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555)" identifier (argument_list "(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555)" ( identifier , number_literal , (binary_expression "((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555" (parenthesized_expression "((long)plVar8 - (long)param_1 >> 3)" ( (binary_expression "(long)plVar8 - (long)param_1 >> 3" (binary_expression "(long)plVar8 - (long)param_1" (cast_expression "(long)plVar8" ( (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 "param_2 = plVar8;" (assignment_expression "param_2 = plVar8" identifier = identifier) ;) }) while (parenthesized_expression "(0x18 < (long)plVar8 - (long)param_1)" ( (binary_expression "0x18 < (long)plVar8 - (long)param_1" number_literal < (binary_expression "(long)plVar8 - (long)param_1" (cast_expression "(long)plVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) )) ;) })) (return_statement "return;" return ;) (labeled_statement "LAB_002d5820:\n  FUN_002d56f0(param_2,plVar8,param_3);" statement_identifier : (expression_statement "FUN_002d56f0(param_2,plVar8,param_3);" (call_expression "FUN_002d56f0(param_2,plVar8,param_3)" identifier (argument_list "(param_2,plVar8,param_3)" ( identifier , identifier , identifier ))) ;)) (expression_statement "lVar6 = (long)param_2 - (long)param_1;" (assignment_expression "lVar6 = (long)param_2 - (long)param_1" identifier = (binary_expression "(long)param_2 - (long)param_1" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (lVar6 < 0x181) {\n    return;\n  }" if (parenthesized_expression "(lVar6 < 0x181)" ( (binary_expression "lVar6 < 0x181" identifier < number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "plVar8 = param_2;" (assignment_expression "plVar8 = param_2" identifier = identifier) ;) (if_statement "if (param_3 == 0) goto LAB_002d584a;" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_002d584a;" goto statement_identifier ;)) (goto_statement "goto LAB_002d572b;" goto statement_identifier ;) })))
(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)) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (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 ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (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) )) / LIT) )) * LIT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (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) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * LIT)) ;)) (for_statement for ( (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) >> LIT)) ; (comma_expression (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) , (binary_expression IDENT != LIT)) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (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) ;) }) while (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))) )) ;) })) (return_statement return ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })))
(function_definition "void FUN_002d56f0(long *param_1,long *param_2,long param_3)\n\n{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  long *plVar5;\n  long lVar6;\n  long *plVar7;\n  long *plVar8;\n  long lVar9;\n  long lVar10;\n  \n  lVar6 = (long)param_2 - (long)param_1;\n  if (0x180 < lVar6) {\n    if (param_3 != 0) {\n      plVar8 = param_2;\nLAB_002d572b:\n      lVar6 = param_1[3];\n      param_3 = param_3 + -1;\n      lVar10 = plVar8[-3];\n      lVar9 = *param_1;\n      lVar1 = param_1[1];\n      lVar2 = param_1[2];\n      plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3;\n      lVar3 = *plVar5;\n      if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      param_1[2] = plVar5[2];\n      *plVar5 = lVar9;\n      plVar5[1] = lVar1;\n      plVar5[2] = lVar2;\n      lVar10 = param_1[3];\n      lVar6 = plVar8[-3];\nLAB_002d57a6:\n      lVar9 = *param_1;\n      plVar5 = param_1 + 6;\n      plVar7 = plVar8;\n      param_2 = param_1 + 3;\n      do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );\n    }\nLAB_002d584a:\n    lVar10 = (lVar6 >> 3) * -0x5555555555555555;\n    for (lVar6 = lVar10 + -2 >> 1; FUN_002d5580(param_1,lVar6,lVar10), lVar6 != 0;\n        lVar6 = lVar6 + -1) {\n    }\n    do {\n      plVar8 = param_2 + -3;\n      lVar6 = param_1[1];\n      *plVar8 = *param_1;\n      param_2[-2] = lVar6;\n      param_2[-1] = param_1[2];\n      FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555);\n      param_2 = plVar8;\n    } while (0x18 < (long)plVar8 - (long)param_1);\n  }\n  return;\nLAB_002d5820:\n  FUN_002d56f0(param_2,plVar8,param_3);\n  lVar6 = (long)param_2 - (long)param_1;\n  if (lVar6 < 0x181) {\n    return;\n  }\n  plVar8 = param_2;\n  if (param_3 == 0) goto LAB_002d584a;\n  goto LAB_002d572b;\n}" (primitive_type "void") (function_declarator "FUN_002d56f0(long *param_1,long *param_2,long param_3)" (identifier "FUN_002d56f0") (parameter_list "(long *param_1,long *param_2,long param_3)" (( "(") (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"))) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) () ")"))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  long lVar3;\n  long *plVar4;\n  long *plVar5;\n  long lVar6;\n  long *plVar7;\n  long *plVar8;\n  long lVar9;\n  long lVar10;\n  \n  lVar6 = (long)param_2 - (long)param_1;\n  if (0x180 < lVar6) {\n    if (param_3 != 0) {\n      plVar8 = param_2;\nLAB_002d572b:\n      lVar6 = param_1[3];\n      param_3 = param_3 + -1;\n      lVar10 = plVar8[-3];\n      lVar9 = *param_1;\n      lVar1 = param_1[1];\n      lVar2 = param_1[2];\n      plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3;\n      lVar3 = *plVar5;\n      if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      param_1[2] = plVar5[2];\n      *plVar5 = lVar9;\n      plVar5[1] = lVar1;\n      plVar5[2] = lVar2;\n      lVar10 = param_1[3];\n      lVar6 = plVar8[-3];\nLAB_002d57a6:\n      lVar9 = *param_1;\n      plVar5 = param_1 + 6;\n      plVar7 = plVar8;\n      param_2 = param_1 + 3;\n      do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );\n    }\nLAB_002d584a:\n    lVar10 = (lVar6 >> 3) * -0x5555555555555555;\n    for (lVar6 = lVar10 + -2 >> 1; FUN_002d5580(param_1,lVar6,lVar10), lVar6 != 0;\n        lVar6 = lVar6 + -1) {\n    }\n    do {\n      plVar8 = param_2 + -3;\n      lVar6 = param_1[1];\n      *plVar8 = *param_1;\n      param_2[-2] = lVar6;\n      param_2[-1] = param_1[2];\n      FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555);\n      param_2 = plVar8;\n    } while (0x18 < (long)plVar8 - (long)param_1);\n  }\n  return;\nLAB_002d5820:\n  FUN_002d56f0(param_2,plVar8,param_3);\n  lVar6 = (long)param_2 - (long)param_1;\n  if (lVar6 < 0x181) {\n    return;\n  }\n  plVar8 = param_2;\n  if (param_3 == 0) goto LAB_002d584a;\n  goto LAB_002d572b;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "long *plVar4;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar4" (* "*") (identifier "plVar4")) (; ";")) (declaration "long *plVar5;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar5" (* "*") (identifier "plVar5")) (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "long *plVar7;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar7" (* "*") (identifier "plVar7")) (; ";")) (declaration "long *plVar8;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar8" (* "*") (identifier "plVar8")) (; ";")) (declaration "long lVar9;" (sized_type_specifier "long" (long "long")) (identifier "lVar9") (; ";")) (declaration "long lVar10;" (sized_type_specifier "long" (long "long")) (identifier "lVar10") (; ";")) (expression_statement "lVar6 = (long)param_2 - (long)param_1;" (assignment_expression "lVar6 = (long)param_2 - (long)param_1" (identifier "lVar6") (= "=") (binary_expression "(long)param_2 - (long)param_1" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (- "-") (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")))) (; ";")) (if_statement "if (0x180 < lVar6) {\n    if (param_3 != 0) {\n      plVar8 = param_2;\nLAB_002d572b:\n      lVar6 = param_1[3];\n      param_3 = param_3 + -1;\n      lVar10 = plVar8[-3];\n      lVar9 = *param_1;\n      lVar1 = param_1[1];\n      lVar2 = param_1[2];\n      plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3;\n      lVar3 = *plVar5;\n      if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      param_1[2] = plVar5[2];\n      *plVar5 = lVar9;\n      plVar5[1] = lVar1;\n      plVar5[2] = lVar2;\n      lVar10 = param_1[3];\n      lVar6 = plVar8[-3];\nLAB_002d57a6:\n      lVar9 = *param_1;\n      plVar5 = param_1 + 6;\n      plVar7 = plVar8;\n      param_2 = param_1 + 3;\n      do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );\n    }\nLAB_002d584a:\n    lVar10 = (lVar6 >> 3) * -0x5555555555555555;\n    for (lVar6 = lVar10 + -2 >> 1; FUN_002d5580(param_1,lVar6,lVar10), lVar6 != 0;\n        lVar6 = lVar6 + -1) {\n    }\n    do {\n      plVar8 = param_2 + -3;\n      lVar6 = param_1[1];\n      *plVar8 = *param_1;\n      param_2[-2] = lVar6;\n      param_2[-1] = param_1[2];\n      FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555);\n      param_2 = plVar8;\n    } while (0x18 < (long)plVar8 - (long)param_1);\n  }" (if "if") (parenthesized_expression "(0x180 < lVar6)" (( "(") (binary_expression "0x180 < lVar6" (number_literal "0x180") (< "<") (identifier "lVar6")) () ")")) (compound_statement "{\n    if (param_3 != 0) {\n      plVar8 = param_2;\nLAB_002d572b:\n      lVar6 = param_1[3];\n      param_3 = param_3 + -1;\n      lVar10 = plVar8[-3];\n      lVar9 = *param_1;\n      lVar1 = param_1[1];\n      lVar2 = param_1[2];\n      plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3;\n      lVar3 = *plVar5;\n      if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      param_1[2] = plVar5[2];\n      *plVar5 = lVar9;\n      plVar5[1] = lVar1;\n      plVar5[2] = lVar2;\n      lVar10 = param_1[3];\n      lVar6 = plVar8[-3];\nLAB_002d57a6:\n      lVar9 = *param_1;\n      plVar5 = param_1 + 6;\n      plVar7 = plVar8;\n      param_2 = param_1 + 3;\n      do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );\n    }\nLAB_002d584a:\n    lVar10 = (lVar6 >> 3) * -0x5555555555555555;\n    for (lVar6 = lVar10 + -2 >> 1; FUN_002d5580(param_1,lVar6,lVar10), lVar6 != 0;\n        lVar6 = lVar6 + -1) {\n    }\n    do {\n      plVar8 = param_2 + -3;\n      lVar6 = param_1[1];\n      *plVar8 = *param_1;\n      param_2[-2] = lVar6;\n      param_2[-1] = param_1[2];\n      FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555);\n      param_2 = plVar8;\n    } while (0x18 < (long)plVar8 - (long)param_1);\n  }" ({ "{") (if_statement "if (param_3 != 0) {\n      plVar8 = param_2;\nLAB_002d572b:\n      lVar6 = param_1[3];\n      param_3 = param_3 + -1;\n      lVar10 = plVar8[-3];\n      lVar9 = *param_1;\n      lVar1 = param_1[1];\n      lVar2 = param_1[2];\n      plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3;\n      lVar3 = *plVar5;\n      if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      param_1[2] = plVar5[2];\n      *plVar5 = lVar9;\n      plVar5[1] = lVar1;\n      plVar5[2] = lVar2;\n      lVar10 = param_1[3];\n      lVar6 = plVar8[-3];\nLAB_002d57a6:\n      lVar9 = *param_1;\n      plVar5 = param_1 + 6;\n      plVar7 = plVar8;\n      param_2 = param_1 + 3;\n      do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );\n    }" (if "if") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      plVar8 = param_2;\nLAB_002d572b:\n      lVar6 = param_1[3];\n      param_3 = param_3 + -1;\n      lVar10 = plVar8[-3];\n      lVar9 = *param_1;\n      lVar1 = param_1[1];\n      lVar2 = param_1[2];\n      plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3;\n      lVar3 = *plVar5;\n      if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      param_1[2] = plVar5[2];\n      *plVar5 = lVar9;\n      plVar5[1] = lVar1;\n      plVar5[2] = lVar2;\n      lVar10 = param_1[3];\n      lVar6 = plVar8[-3];\nLAB_002d57a6:\n      lVar9 = *param_1;\n      plVar5 = param_1 + 6;\n      plVar7 = plVar8;\n      param_2 = param_1 + 3;\n      do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );\n    }" ({ "{") (expression_statement "plVar8 = param_2;" (assignment_expression "plVar8 = param_2" (identifier "plVar8") (= "=") (identifier "param_2")) (; ";")) (labeled_statement "LAB_002d572b:\n      lVar6 = param_1[3];" (statement_identifier "LAB_002d572b") (: ":") (expression_statement "lVar6 = param_1[3];" (assignment_expression "lVar6 = param_1[3]" (identifier "lVar6") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";"))) (expression_statement "param_3 = param_3 + -1;" (assignment_expression "param_3 = param_3 + -1" (identifier "param_3") (= "=") (binary_expression "param_3 + -1" (identifier "param_3") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "lVar10 = plVar8[-3];" (assignment_expression "lVar10 = plVar8[-3]" (identifier "lVar10") (= "=") (subscript_expression "plVar8[-3]" (identifier "plVar8") ([ "[") (number_literal "-3") (] "]"))) (; ";")) (expression_statement "lVar9 = *param_1;" (assignment_expression "lVar9 = *param_1" (identifier "lVar9") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "lVar1 = param_1[1];" (assignment_expression "lVar1 = param_1[1]" (identifier "lVar1") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "lVar2 = param_1[2];" (assignment_expression "lVar2 = param_1[2]" (identifier "lVar2") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3;" (assignment_expression "plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3" (identifier "plVar5") (= "=") (binary_expression "param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3" (identifier "param_1") (+ "+") (binary_expression "((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3" (parenthesized_expression "((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2)" (( "(") (binary_expression "(((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2" (parenthesized_expression "(((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555)" (( "(") (binary_expression "((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555" (parenthesized_expression "((long)plVar8 - (long)param_1 >> 3)" (( "(") (binary_expression "(long)plVar8 - (long)param_1 >> 3" (binary_expression "(long)plVar8 - (long)param_1" (cast_expression "(long)plVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar8")) (- "-") (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1"))) (>> ">>") (number_literal "3")) () ")")) (* "*") (number_literal "-0x5555555555555555")) () ")")) (/ "/") (number_literal "2")) () ")")) (* "*") (number_literal "3")))) (; ";")) (expression_statement "lVar3 = *plVar5;" (assignment_expression "lVar3 = *plVar5" (identifier "lVar3") (= "=") (pointer_expression "*plVar5" (* "*") (identifier "plVar5"))) (; ";")) (if_statement "if (lVar6 < lVar3) {\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }\n      else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }" (if "if") (parenthesized_expression "(lVar6 < lVar3)" (( "(") (binary_expression "lVar6 < lVar3" (identifier "lVar6") (< "<") (identifier "lVar3")) () ")")) (compound_statement "{\n        if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }" ({ "{") (if_statement "if (lVar10 <= lVar3) {\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }" (if "if") (parenthesized_expression "(lVar10 <= lVar3)" (( "(") (binary_expression "lVar10 <= lVar3" (identifier "lVar10") (<= "<=") (identifier "lVar3")) () ")")) (compound_statement "{\n          if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\nLAB_002d593d:\n          param_1[3] = lVar9;\n          param_1[4] = lVar1;\n          param_1[2] = param_1[5];\n          param_1[5] = lVar2;\n          lVar6 = plVar8[-3];\n          lVar10 = lVar9;\n          goto LAB_002d57a6;\n        }" ({ "{") (if_statement "if (lVar6 < lVar10) {\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }" (if "if") (parenthesized_expression "(lVar6 < lVar10)" (( "(") (binary_expression "lVar6 < lVar10" (identifier "lVar6") (< "<") (identifier "lVar10")) () ")")) (compound_statement "{\nLAB_002d5965:\n            lVar6 = plVar8[-2];\n            *param_1 = plVar8[-3];\n            param_1[1] = lVar6;\n            param_1[2] = plVar8[-1];\n            plVar8[-1] = lVar2;\n            plVar8[-3] = lVar9;\n            plVar8[-2] = lVar1;\n            lVar10 = param_1[3];\n            lVar6 = lVar9;\n            goto LAB_002d57a6;\n          }" ({ "{") (labeled_statement "LAB_002d5965:\n            lVar6 = plVar8[-2];" (statement_identifier "LAB_002d5965") (: ":") (expression_statement "lVar6 = plVar8[-2];" (assignment_expression "lVar6 = plVar8[-2]" (identifier "lVar6") (= "=") (subscript_expression "plVar8[-2]" (identifier "plVar8") ([ "[") (number_literal "-2") (] "]"))) (; ";"))) (expression_statement "*param_1 = plVar8[-3];" (assignment_expression "*param_1 = plVar8[-3]" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (subscript_expression "plVar8[-3]" (identifier "plVar8") ([ "[") (number_literal "-3") (] "]"))) (; ";")) (expression_statement "param_1[1] = lVar6;" (assignment_expression "param_1[1] = lVar6" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "lVar6")) (; ";")) (expression_statement "param_1[2] = plVar8[-1];" (assignment_expression "param_1[2] = plVar8[-1]" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "plVar8[-1]" (identifier "plVar8") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "plVar8[-1] = lVar2;" (assignment_expression "plVar8[-1] = lVar2" (subscript_expression "plVar8[-1]" (identifier "plVar8") ([ "[") (number_literal "-1") (] "]")) (= "=") (identifier "lVar2")) (; ";")) (expression_statement "plVar8[-3] = lVar9;" (assignment_expression "plVar8[-3] = lVar9" (subscript_expression "plVar8[-3]" (identifier "plVar8") ([ "[") (number_literal "-3") (] "]")) (= "=") (identifier "lVar9")) (; ";")) (expression_statement "plVar8[-2] = lVar1;" (assignment_expression "plVar8[-2] = lVar1" (subscript_expression "plVar8[-2]" (identifier "plVar8") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "lVar1")) (; ";")) (expression_statement "lVar10 = param_1[3];" (assignment_expression "lVar10 = param_1[3]" (identifier "lVar10") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "lVar6 = lVar9;" (assignment_expression "lVar6 = lVar9" (identifier "lVar6") (= "=") (identifier "lVar9")) (; ";")) (goto_statement "goto LAB_002d57a6;" (goto "goto") (statement_identifier "LAB_002d57a6") (; ";")) (} "}"))) (expression_statement "*param_1 = param_1[3];" (assignment_expression "*param_1 = param_1[3]" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "param_1[1] = param_1[4];" (assignment_expression "param_1[1] = param_1[4]" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (labeled_statement "LAB_002d593d:\n          param_1[3] = lVar9;" (statement_identifier "LAB_002d593d") (: ":") (expression_statement "param_1[3] = lVar9;" (assignment_expression "param_1[3] = lVar9" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "lVar9")) (; ";"))) (expression_statement "param_1[4] = lVar1;" (assignment_expression "param_1[4] = lVar1" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "lVar1")) (; ";")) (expression_statement "param_1[2] = param_1[5];" (assignment_expression "param_1[2] = param_1[5]" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "param_1[5] = lVar2;" (assignment_expression "param_1[5] = lVar2" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "lVar2")) (; ";")) (expression_statement "lVar6 = plVar8[-3];" (assignment_expression "lVar6 = plVar8[-3]" (identifier "lVar6") (= "=") (subscript_expression "plVar8[-3]" (identifier "plVar8") ([ "[") (number_literal "-3") (] "]"))) (; ";")) (expression_statement "lVar10 = lVar9;" (assignment_expression "lVar10 = lVar9" (identifier "lVar10") (= "=") (identifier "lVar9")) (; ";")) (goto_statement "goto LAB_002d57a6;" (goto "goto") (statement_identifier "LAB_002d57a6") (; ";")) (} "}"))) (expression_statement "lVar6 = plVar5[1];" (assignment_expression "lVar6 = plVar5[1]" (identifier "lVar6") (= "=") (subscript_expression "plVar5[1]" (identifier "plVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*param_1 = *plVar5;" (assignment_expression "*param_1 = *plVar5" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (pointer_expression "*plVar5" (* "*") (identifier "plVar5"))) (; ";")) (expression_statement "param_1[1] = lVar6;" (assignment_expression "param_1[1] = lVar6" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "lVar6")) (; ";")) (} "}")) (else_clause "else {\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }" (else "else") (compound_statement "{\n        if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }\n        if (lVar3 < lVar10) goto LAB_002d5965;\n        lVar6 = plVar5[1];\n        *param_1 = *plVar5;\n        param_1[1] = lVar6;\n      }" ({ "{") (if_statement "if (lVar6 < lVar10) {\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }" (if "if") (parenthesized_expression "(lVar6 < lVar10)" (( "(") (binary_expression "lVar6 < lVar10" (identifier "lVar6") (< "<") (identifier "lVar10")) () ")")) (compound_statement "{\n          *param_1 = param_1[3];\n          param_1[1] = param_1[4];\n          goto LAB_002d593d;\n        }" ({ "{") (expression_statement "*param_1 = param_1[3];" (assignment_expression "*param_1 = param_1[3]" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "param_1[1] = param_1[4];" (assignment_expression "param_1[1] = param_1[4]" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (goto_statement "goto LAB_002d593d;" (goto "goto") (statement_identifier "LAB_002d593d") (; ";")) (} "}"))) (if_statement "if (lVar3 < lVar10) goto LAB_002d5965;" (if "if") (parenthesized_expression "(lVar3 < lVar10)" (( "(") (binary_expression "lVar3 < lVar10" (identifier "lVar3") (< "<") (identifier "lVar10")) () ")")) (goto_statement "goto LAB_002d5965;" (goto "goto") (statement_identifier "LAB_002d5965") (; ";"))) (expression_statement "lVar6 = plVar5[1];" (assignment_expression "lVar6 = plVar5[1]" (identifier "lVar6") (= "=") (subscript_expression "plVar5[1]" (identifier "plVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*param_1 = *plVar5;" (assignment_expression "*param_1 = *plVar5" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (pointer_expression "*plVar5" (* "*") (identifier "plVar5"))) (; ";")) (expression_statement "param_1[1] = lVar6;" (assignment_expression "param_1[1] = lVar6" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "lVar6")) (; ";")) (} "}")))) (expression_statement "param_1[2] = plVar5[2];" (assignment_expression "param_1[2] = plVar5[2]" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "plVar5[2]" (identifier "plVar5") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*plVar5 = lVar9;" (assignment_expression "*plVar5 = lVar9" (pointer_expression "*plVar5" (* "*") (identifier "plVar5")) (= "=") (identifier "lVar9")) (; ";")) (expression_statement "plVar5[1] = lVar1;" (assignment_expression "plVar5[1] = lVar1" (subscript_expression "plVar5[1]" (identifier "plVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "lVar1")) (; ";")) (expression_statement "plVar5[2] = lVar2;" (assignment_expression "plVar5[2] = lVar2" (subscript_expression "plVar5[2]" (identifier "plVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "lVar2")) (; ";")) (expression_statement "lVar10 = param_1[3];" (assignment_expression "lVar10 = param_1[3]" (identifier "lVar10") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "lVar6 = plVar8[-3];" (assignment_expression "lVar6 = plVar8[-3]" (identifier "lVar6") (= "=") (subscript_expression "plVar8[-3]" (identifier "plVar8") ([ "[") (number_literal "-3") (] "]"))) (; ";")) (labeled_statement "LAB_002d57a6:\n      lVar9 = *param_1;" (statement_identifier "LAB_002d57a6") (: ":") (expression_statement "lVar9 = *param_1;" (assignment_expression "lVar9 = *param_1" (identifier "lVar9") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";"))) (expression_statement "plVar5 = param_1 + 6;" (assignment_expression "plVar5 = param_1 + 6" (identifier "plVar5") (= "=") (binary_expression "param_1 + 6" (identifier "param_1") (+ "+") (number_literal "6"))) (; ";")) (expression_statement "plVar7 = plVar8;" (assignment_expression "plVar7 = plVar8" (identifier "plVar7") (= "=") (identifier "plVar8")) (; ";")) (expression_statement "param_2 = param_1 + 3;" (assignment_expression "param_2 = param_1 + 3" (identifier "param_2") (= "=") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      } while( true );" (do "do") (compound_statement "{\n        plVar4 = plVar7;\n        if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }\n        lVar10 = *plVar5;\n        param_2 = param_2 + 3;\n        plVar5 = plVar5 + 3;\n        plVar7 = plVar4;\n      }" ({ "{") (expression_statement "plVar4 = plVar7;" (assignment_expression "plVar4 = plVar7" (identifier "plVar4") (= "=") (identifier "plVar7")) (; ";")) (if_statement "if (lVar9 <= lVar10) {\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }" (if "if") (parenthesized_expression "(lVar9 <= lVar10)" (( "(") (binary_expression "lVar9 <= lVar10" (identifier "lVar9") (<= "<=") (identifier "lVar10")) () ")")) (compound_statement "{\n          plVar4 = plVar7 + -3;\n          if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }\n          if (plVar4 <= param_2) goto LAB_002d5820;\n          lVar6 = plVar4[1];\n          lVar9 = plVar5[-2];\n          lVar1 = plVar5[-1];\n          plVar5[-3] = *plVar4;\n          plVar5[-2] = lVar6;\n          plVar5[-1] = plVar4[2];\n          lVar6 = plVar4[-3];\n          plVar4[2] = lVar1;\n          *plVar4 = lVar10;\n          plVar4[1] = lVar9;\n          lVar9 = *param_1;\n        }" ({ "{") (expression_statement "plVar4 = plVar7 + -3;" (assignment_expression "plVar4 = plVar7 + -3" (identifier "plVar4") (= "=") (binary_expression "plVar7 + -3" (identifier "plVar7") (+ "+") (number_literal "-3"))) (; ";")) (if_statement "if (lVar9 < lVar6) {\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }" (if "if") (parenthesized_expression "(lVar9 < lVar6)" (( "(") (binary_expression "lVar9 < lVar6" (identifier "lVar9") (< "<") (identifier "lVar6")) () ")")) (compound_statement "{\n            plVar7 = plVar7 + -6;\n            do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);\n          }" ({ "{") (expression_statement "plVar7 = plVar7 + -6;" (assignment_expression "plVar7 = plVar7 + -6" (identifier "plVar7") (= "=") (binary_expression "plVar7 + -6" (identifier "plVar7") (+ "+") (number_literal "-6"))) (; ";")) (do_statement "do {\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            } while (lVar9 < *plVar4);" (do "do") (compound_statement "{\n              plVar4 = plVar7;\n              plVar7 = plVar4 + -3;\n            }" ({ "{") (expression_statement "plVar4 = plVar7;" (assignment_expression "plVar4 = plVar7" (identifier "plVar4") (= "=") (identifier "plVar7")) (; ";")) (expression_statement "plVar7 = plVar4 + -3;" (assignment_expression "plVar7 = plVar4 + -3" (identifier "plVar7") (= "=") (binary_expression "plVar4 + -3" (identifier "plVar4") (+ "+") (number_literal "-3"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar9 < *plVar4)" (( "(") (binary_expression "lVar9 < *plVar4" (identifier "lVar9") (< "<") (pointer_expression "*plVar4" (* "*") (identifier "plVar4"))) () ")")) (; ";")) (} "}"))) (if_statement "if (plVar4 <= param_2) goto LAB_002d5820;" (if "if") (parenthesized_expression "(plVar4 <= param_2)" (( "(") (binary_expression "plVar4 <= param_2" (identifier "plVar4") (<= "<=") (identifier "param_2")) () ")")) (goto_statement "goto LAB_002d5820;" (goto "goto") (statement_identifier "LAB_002d5820") (; ";"))) (expression_statement "lVar6 = plVar4[1];" (assignment_expression "lVar6 = plVar4[1]" (identifier "lVar6") (= "=") (subscript_expression "plVar4[1]" (identifier "plVar4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "lVar9 = plVar5[-2];" (assignment_expression "lVar9 = plVar5[-2]" (identifier "lVar9") (= "=") (subscript_expression "plVar5[-2]" (identifier "plVar5") ([ "[") (number_literal "-2") (] "]"))) (; ";")) (expression_statement "lVar1 = plVar5[-1];" (assignment_expression "lVar1 = plVar5[-1]" (identifier "lVar1") (= "=") (subscript_expression "plVar5[-1]" (identifier "plVar5") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "plVar5[-3] = *plVar4;" (assignment_expression "plVar5[-3] = *plVar4" (subscript_expression "plVar5[-3]" (identifier "plVar5") ([ "[") (number_literal "-3") (] "]")) (= "=") (pointer_expression "*plVar4" (* "*") (identifier "plVar4"))) (; ";")) (expression_statement "plVar5[-2] = lVar6;" (assignment_expression "plVar5[-2] = lVar6" (subscript_expression "plVar5[-2]" (identifier "plVar5") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "lVar6")) (; ";")) (expression_statement "plVar5[-1] = plVar4[2];" (assignment_expression "plVar5[-1] = plVar4[2]" (subscript_expression "plVar5[-1]" (identifier "plVar5") ([ "[") (number_literal "-1") (] "]")) (= "=") (subscript_expression "plVar4[2]" (identifier "plVar4") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "lVar6 = plVar4[-3];" (assignment_expression "lVar6 = plVar4[-3]" (identifier "lVar6") (= "=") (subscript_expression "plVar4[-3]" (identifier "plVar4") ([ "[") (number_literal "-3") (] "]"))) (; ";")) (expression_statement "plVar4[2] = lVar1;" (assignment_expression "plVar4[2] = lVar1" (subscript_expression "plVar4[2]" (identifier "plVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "lVar1")) (; ";")) (expression_statement "*plVar4 = lVar10;" (assignment_expression "*plVar4 = lVar10" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (= "=") (identifier "lVar10")) (; ";")) (expression_statement "plVar4[1] = lVar9;" (assignment_expression "plVar4[1] = lVar9" (subscript_expression "plVar4[1]" (identifier "plVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "lVar9")) (; ";")) (expression_statement "lVar9 = *param_1;" (assignment_expression "lVar9 = *param_1" (identifier "lVar9") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (} "}"))) (expression_statement "lVar10 = *plVar5;" (assignment_expression "lVar10 = *plVar5" (identifier "lVar10") (= "=") (pointer_expression "*plVar5" (* "*") (identifier "plVar5"))) (; ";")) (expression_statement "param_2 = param_2 + 3;" (assignment_expression "param_2 = param_2 + 3" (identifier "param_2") (= "=") (binary_expression "param_2 + 3" (identifier "param_2") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "plVar5 = plVar5 + 3;" (assignment_expression "plVar5 = plVar5 + 3" (identifier "plVar5") (= "=") (binary_expression "plVar5 + 3" (identifier "plVar5") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "plVar7 = plVar4;" (assignment_expression "plVar7 = plVar4" (identifier "plVar7") (= "=") (identifier "plVar4")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_002d584a:\n    lVar10 = (lVar6 >> 3) * -0x5555555555555555;" (statement_identifier "LAB_002d584a") (: ":") (expression_statement "lVar10 = (lVar6 >> 3) * -0x5555555555555555;" (assignment_expression "lVar10 = (lVar6 >> 3) * -0x5555555555555555" (identifier "lVar10") (= "=") (binary_expression "(lVar6 >> 3) * -0x5555555555555555" (parenthesized_expression "(lVar6 >> 3)" (( "(") (binary_expression "lVar6 >> 3" (identifier "lVar6") (>> ">>") (number_literal "3")) () ")")) (* "*") (number_literal "-0x5555555555555555"))) (; ";"))) (for_statement "for (lVar6 = lVar10 + -2 >> 1; FUN_002d5580(param_1,lVar6,lVar10), lVar6 != 0;\n        lVar6 = lVar6 + -1) {\n    }" (for "for") (( "(") (assignment_expression "lVar6 = lVar10 + -2 >> 1" (identifier "lVar6") (= "=") (binary_expression "lVar10 + -2 >> 1" (binary_expression "lVar10 + -2" (identifier "lVar10") (+ "+") (number_literal "-2")) (>> ">>") (number_literal "1"))) (; ";") (comma_expression "FUN_002d5580(param_1,lVar6,lVar10), lVar6 != 0" (call_expression "FUN_002d5580(param_1,lVar6,lVar10)" (identifier "FUN_002d5580") (argument_list "(param_1,lVar6,lVar10)" (( "(") (identifier "param_1") (, ",") (identifier "lVar6") (, ",") (identifier "lVar10") () ")"))) (, ",") (binary_expression "lVar6 != 0" (identifier "lVar6") (!= "!=") (number_literal "0"))) (; ";") (assignment_expression "lVar6 = lVar6 + -1" (identifier "lVar6") (= "=") (binary_expression "lVar6 + -1" (identifier "lVar6") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n    }" ({ "{") (} "}"))) (do_statement "do {\n      plVar8 = param_2 + -3;\n      lVar6 = param_1[1];\n      *plVar8 = *param_1;\n      param_2[-2] = lVar6;\n      param_2[-1] = param_1[2];\n      FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555);\n      param_2 = plVar8;\n    } while (0x18 < (long)plVar8 - (long)param_1);" (do "do") (compound_statement "{\n      plVar8 = param_2 + -3;\n      lVar6 = param_1[1];\n      *plVar8 = *param_1;\n      param_2[-2] = lVar6;\n      param_2[-1] = param_1[2];\n      FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555);\n      param_2 = plVar8;\n    }" ({ "{") (expression_statement "plVar8 = param_2 + -3;" (assignment_expression "plVar8 = param_2 + -3" (identifier "plVar8") (= "=") (binary_expression "param_2 + -3" (identifier "param_2") (+ "+") (number_literal "-3"))) (; ";")) (expression_statement "lVar6 = param_1[1];" (assignment_expression "lVar6 = param_1[1]" (identifier "lVar6") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*plVar8 = *param_1;" (assignment_expression "*plVar8 = *param_1" (pointer_expression "*plVar8" (* "*") (identifier "plVar8")) (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "param_2[-2] = lVar6;" (assignment_expression "param_2[-2] = lVar6" (subscript_expression "param_2[-2]" (identifier "param_2") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "lVar6")) (; ";")) (expression_statement "param_2[-1] = param_1[2];" (assignment_expression "param_2[-1] = param_1[2]" (subscript_expression "param_2[-1]" (identifier "param_2") ([ "[") (number_literal "-1") (] "]")) (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555);" (call_expression "FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555)" (identifier "FUN_002d5580") (argument_list "(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555)" (( "(") (identifier "param_1") (, ",") (number_literal "0") (, ",") (binary_expression "((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555" (parenthesized_expression "((long)plVar8 - (long)param_1 >> 3)" (( "(") (binary_expression "(long)plVar8 - (long)param_1 >> 3" (binary_expression "(long)plVar8 - (long)param_1" (cast_expression "(long)plVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar8")) (- "-") (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 "param_2 = plVar8;" (assignment_expression "param_2 = plVar8" (identifier "param_2") (= "=") (identifier "plVar8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0x18 < (long)plVar8 - (long)param_1)" (( "(") (binary_expression "0x18 < (long)plVar8 - (long)param_1" (number_literal "0x18") (< "<") (binary_expression "(long)plVar8 - (long)param_1" (cast_expression "(long)plVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar8")) (- "-") (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")))) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (labeled_statement "LAB_002d5820:\n  FUN_002d56f0(param_2,plVar8,param_3);" (statement_identifier "LAB_002d5820") (: ":") (expression_statement "FUN_002d56f0(param_2,plVar8,param_3);" (call_expression "FUN_002d56f0(param_2,plVar8,param_3)" (identifier "FUN_002d56f0") (argument_list "(param_2,plVar8,param_3)" (( "(") (identifier "param_2") (, ",") (identifier "plVar8") (, ",") (identifier "param_3") () ")"))) (; ";"))) (expression_statement "lVar6 = (long)param_2 - (long)param_1;" (assignment_expression "lVar6 = (long)param_2 - (long)param_1" (identifier "lVar6") (= "=") (binary_expression "(long)param_2 - (long)param_1" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (- "-") (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")))) (; ";")) (if_statement "if (lVar6 < 0x181) {\n    return;\n  }" (if "if") (parenthesized_expression "(lVar6 < 0x181)" (( "(") (binary_expression "lVar6 < 0x181" (identifier "lVar6") (< "<") (number_literal "0x181")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "plVar8 = param_2;" (assignment_expression "plVar8 = param_2" (identifier "plVar8") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (param_3 == 0) goto LAB_002d584a;" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_002d584a;" (goto "goto") (statement_identifier "LAB_002d584a") (; ";"))) (goto_statement "goto LAB_002d572b;" (goto "goto") (statement_identifier "LAB_002d572b") (; ";")) (} "}")))

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

void std::
     __introsort_loop<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>var_12>,_long_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::var_11>var_12>
               (long *var_3,long *var_9,long var_2)

{
  long lVar1;
  long lVar2;
  long var_4;
  long *var_8;
  long *var_10;
  long var_1;
  long *var_7;
  long *plVar8;
  long var_6;
  long var_5;
  type_1 __value;
  
  var_1 = (long)var_9 - (long)var_3;
  if (0x180 < var_1) {
    if (var_2 != 0) {
      plVar8 = var_9;
LAB_002d572b:
      var_1 = var_3[3];
      var_2 = var_2 + -1;
      var_5 = plVar8[-3];
      var_6 = *var_3;
      lVar1 = var_3[1];
      lVar2 = var_3[2];
      var_10 = var_3 + ((((long)plVar8 - (long)var_3 >> 3) * -0x5555555555555555) / 2) * 3;
      var_4 = *var_10;
      if (var_1 < var_4) {
        if (var_5 <= var_4) {
          if (var_1 < var_5) {
LAB_002d5965:
            var_1 = plVar8[-2];
            *var_3 = plVar8[-3];
            var_3[1] = var_1;
            var_3[2] = plVar8[-1];
            plVar8[-1] = lVar2;
            plVar8[-3] = var_6;
            plVar8[-2] = lVar1;
            var_5 = var_3[3];
            var_1 = var_6;
            goto LAB_002d57a6;
          }
          *var_3 = var_3[3];
          var_3[1] = var_3[4];
LAB_002d593d:
          var_3[3] = var_6;
          var_3[4] = lVar1;
          var_3[2] = var_3[5];
          var_3[5] = lVar2;
          var_1 = plVar8[-3];
          var_5 = var_6;
          goto LAB_002d57a6;
        }
        var_1 = var_10[1];
        *var_3 = *var_10;
        var_3[1] = var_1;
      }
      else {
        if (var_1 < var_5) {
          *var_3 = var_3[3];
          var_3[1] = var_3[4];
          goto LAB_002d593d;
        }
        if (var_4 < var_5) goto LAB_002d5965;
        var_1 = var_10[1];
        *var_3 = *var_10;
        var_3[1] = var_1;
      }
      var_3[2] = var_10[2];
      *var_10 = var_6;
      var_10[1] = lVar1;
      var_10[2] = lVar2;
      var_5 = var_3[3];
      var_1 = plVar8[-3];
LAB_002d57a6:
      var_6 = *var_3;
      var_10 = var_3 + 6;
      var_7 = plVar8;
      var_9 = var_3 + 3;
      do {
        var_8 = var_7;
        if (var_6 <= var_5) {
          var_8 = var_7 + -3;
          if (var_6 < var_1) {
            var_7 = var_7 + -6;
            do {
              var_8 = var_7;
              var_7 = var_8 + -3;
            } while (var_6 < *var_8);
          }
          if (var_8 <= var_9) goto LAB_002d5820;
          var_1 = var_8[1];
          var_6 = var_10[-2];
          lVar1 = var_10[-1];
          var_10[-3] = *var_8;
          var_10[-2] = var_1;
          var_10[-1] = var_8[2];
          var_1 = var_8[-3];
          var_8[2] = lVar1;
          *var_8 = var_5;
          var_8[1] = var_6;
          var_6 = *var_3;
        }
        var_5 = *var_10;
        var_9 = var_9 + 3;
        var_10 = var_10 + 3;
        var_7 = var_8;
      } while( true );
    }
LAB_002d584a:
    var_5 = (var_1 >> 3) * -0x5555555555555555;
    for (var_1 = var_5 + -2 >> 1;
        __adjust_heap<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>var_12>,_long_int,_gold::Object_merge_map::Input_merge_entry,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::var_11>var_12>
                  (var_3,var_1,var_5), var_1 != 0; var_1 = var_1 + -1) {
    }
    do {
      plVar8 = var_9 + -3;
      var_1 = var_3[1];
      *plVar8 = *var_3;
      var_9[-2] = var_1;
      var_9[-1] = var_3[2];
      __adjust_heap<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>var_12>,_long_int,_gold::Object_merge_map::Input_merge_entry,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::var_11>var_12>
                (var_3,0,((long)plVar8 - (long)var_3 >> 3) * -0x5555555555555555);
      var_9 = plVar8;
    } while (0x18 < (long)plVar8 - (long)var_3);
  }
  return;
LAB_002d5820:
  __introsort_loop<__gnu_cxx::__normal_iterator<gold::Object_merge_map::Input_merge_entry*,_std::vector<gold::Object_merge_map::Input_merge_entry>var_12>,_long_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Object_merge_map::var_11>var_12>
            (var_9,plVar8,var_2);
  var_1 = (long)var_9 - (long)var_3;
  if (var_1 < 0x181) {
    return;
  }
  plVar8 = var_9;
  if (var_2 == 0) goto LAB_002d584a;
  goto LAB_002d572b;
}


(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))) (parameter_declaration type: (sized_type_specifier) declarator: (identifier)))) body: (compound_statement (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (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)) (declaration type: (sized_type_specifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) 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))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_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)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (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))) right: (number_literal))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (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: (subscript_expression argument: (identifier) index: (number_literal)))) (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) 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)))) (labeled_statement label: (statement_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: (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) 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: (identifier)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) 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)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier)))))) (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: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (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: (identifier) right: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (true))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) (for_statement initializer: (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) condition: (comma_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))) right: (binary_expression left: (identifier) right: (number_literal))) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement)) (do_statement body: (compound_statement (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)))) (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: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (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)))) 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)))))))) (return_statement) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) 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))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))))

void MASKED(long *param_1,long *param_2,long param_3)

{
  long lVar1;
  long lVar2;
  long lVar3;
  long *plVar4;
  long *plVar5;
  long lVar6;
  long *plVar7;
  long *plVar8;
  long lVar9;
  long lVar10;
  
  lVar6 = (long)param_2 - (long)param_1;
  if (0x180 < lVar6) {
    if (param_3 != 0) {
      plVar8 = param_2;
LAB_002d572b:
      lVar6 = param_1[3];
      param_3 = param_3 + -1;
      lVar10 = plVar8[-3];
      lVar9 = *param_1;
      lVar1 = param_1[1];
      lVar2 = param_1[2];
      plVar5 = param_1 + ((((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555) / 2) * 3;
      lVar3 = *plVar5;
      if (lVar6 < lVar3) {
        if (lVar10 <= lVar3) {
          if (lVar6 < lVar10) {
LAB_002d5965:
            lVar6 = plVar8[-2];
            *param_1 = plVar8[-3];
            param_1[1] = lVar6;
            param_1[2] = plVar8[-1];
            plVar8[-1] = lVar2;
            plVar8[-3] = lVar9;
            plVar8[-2] = lVar1;
            lVar10 = param_1[3];
            lVar6 = lVar9;
            goto LAB_002d57a6;
          }
          *param_1 = param_1[3];
          param_1[1] = param_1[4];
LAB_002d593d:
          param_1[3] = lVar9;
          param_1[4] = lVar1;
          param_1[2] = param_1[5];
          param_1[5] = lVar2;
          lVar6 = plVar8[-3];
          lVar10 = lVar9;
          goto LAB_002d57a6;
        }
        lVar6 = plVar5[1];
        *param_1 = *plVar5;
        param_1[1] = lVar6;
      }
      else {
        if (lVar6 < lVar10) {
          *param_1 = param_1[3];
          param_1[1] = param_1[4];
          goto LAB_002d593d;
        }
        if (lVar3 < lVar10) goto LAB_002d5965;
        lVar6 = plVar5[1];
        *param_1 = *plVar5;
        param_1[1] = lVar6;
      }
      param_1[2] = plVar5[2];
      *plVar5 = lVar9;
      plVar5[1] = lVar1;
      plVar5[2] = lVar2;
      lVar10 = param_1[3];
      lVar6 = plVar8[-3];
LAB_002d57a6:
      lVar9 = *param_1;
      plVar5 = param_1 + 6;
      plVar7 = plVar8;
      param_2 = param_1 + 3;
      do {
        plVar4 = plVar7;
        if (lVar9 <= lVar10) {
          plVar4 = plVar7 + -3;
          if (lVar9 < lVar6) {
            plVar7 = plVar7 + -6;
            do {
              plVar4 = plVar7;
              plVar7 = plVar4 + -3;
            } while (lVar9 < *plVar4);
          }
          if (plVar4 <= param_2) goto LAB_002d5820;
          lVar6 = plVar4[1];
          lVar9 = plVar5[-2];
          lVar1 = plVar5[-1];
          plVar5[-3] = *plVar4;
          plVar5[-2] = lVar6;
          plVar5[-1] = plVar4[2];
          lVar6 = plVar4[-3];
          plVar4[2] = lVar1;
          *plVar4 = lVar10;
          plVar4[1] = lVar9;
          lVar9 = *param_1;
        }
        lVar10 = *plVar5;
        param_2 = param_2 + 3;
        plVar5 = plVar5 + 3;
        plVar7 = plVar4;
      } while( true );
    }
LAB_002d584a:
    lVar10 = (lVar6 >> 3) * -0x5555555555555555;
    for (lVar6 = lVar10 + -2 >> 1; FUN_002d5580(param_1,lVar6,lVar10), lVar6 != 0;
        lVar6 = lVar6 + -1) {
    }
    do {
      plVar8 = param_2 + -3;
      lVar6 = param_1[1];
      *plVar8 = *param_1;
      param_2[-2] = lVar6;
      param_2[-1] = param_1[2];
      FUN_002d5580(param_1,0,((long)plVar8 - (long)param_1 >> 3) * -0x5555555555555555);
      param_2 = plVar8;
    } while (0x18 < (long)plVar8 - (long)param_1);
  }
  return;
LAB_002d5820:
  MASKED(param_2,plVar8,param_3);
  lVar6 = (long)param_2 - (long)param_1;
  if (lVar6 < 0x181) {
    return;
  }
  plVar8 = param_2;
  if (param_3 == 0) goto LAB_002d584a;
  goto LAB_002d572b;
}

