
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name: __introsort_loop<__gnu_cxx::__normal_iterator<std::pair<unsigned int,
   unsigned int>*, std::vector<std::pair<unsigned int, unsigned int> > >, long int,
   __gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<32> > > */

void std::
     __introsort_loop<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std::vector<std::pair<unsigned_int,_unsigned_int>_>_>,_long_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<32>_>_>
               (uint *__first,uint *__last,long __depth_limit)

{
  uint uVar1;
  undefined8 uVar2;
  uint *puVar3;
  uint *puVar4;
  uint uVar5;
  long lVar6;
  uint *puVar7;
  uint *puVar8;
  uint uVar9;
  uint uVar10;
  long lVar11;
  
  lVar6 = (long)__last - (long)__first;
  if (0x80 < lVar6) {
    if (__depth_limit != 0) {
      puVar7 = __last;
LAB_002c880b:
      uVar5 = __first[2];
      __depth_limit = __depth_limit + -1;
      uVar9 = puVar7[-2];
      uVar10 = *__first;
      puVar4 = __first + (((long)puVar7 - (long)__first >> 3) -
                          ((long)puVar7 - (long)__first >> 0x3f) >> 1) * 2;
      uVar1 = *puVar4;
      if (uVar5 < uVar1) {
        if (uVar1 < uVar9) {
LAB_002c89a0:
          *__first = uVar1;
          *puVar4 = uVar10;
          uVar5 = __first[1];
          __first[1] = puVar4[1];
          puVar4[1] = uVar5;
          uVar10 = __first[2];
          uVar5 = *__first;
          goto LAB_002c885f;
        }
        if (uVar5 < uVar9) {
LAB_002c88e0:
          *__first = uVar9;
          puVar7[-2] = uVar10;
          uVar5 = __first[1];
          __first[1] = puVar7[-1];
          puVar7[-1] = uVar5;
          uVar10 = __first[2];
          uVar5 = *__first;
          goto LAB_002c885f;
        }
      }
      else if (uVar9 <= uVar5) {
        if (uVar1 < uVar9) goto LAB_002c88e0;
        goto LAB_002c89a0;
      }
      uVar9 = __first[1];
      *__first = uVar5;
      __first[2] = uVar10;
      __first[1] = __first[3];
      __first[3] = uVar9;
LAB_002c885f:
      uVar9 = puVar7[-2];
      puVar4 = puVar7;
      puVar8 = __first + 4;
      __last = __first + 2;
      do {
        if (uVar5 <= uVar10) {
          puVar3 = puVar4 + -2;
          if (uVar5 < uVar9) {
            puVar4 = puVar4 + -4;
            do {
              puVar3 = puVar4;
              uVar9 = *puVar3;
              puVar4 = puVar3 + -2;
            } while (uVar5 < uVar9);
          }
          puVar4 = puVar3;
          if (puVar4 <= __last) goto LAB_002c8900;
          puVar8[-2] = uVar9;
          *puVar4 = uVar10;
          uVar5 = puVar8[-1];
          puVar8[-1] = puVar4[1];
          uVar9 = puVar4[-2];
          puVar4[1] = uVar5;
          uVar5 = *__first;
        }
        uVar10 = *puVar8;
        __last = __last + 2;
        puVar8 = puVar8 + 2;
      } while( true );
    }
LAB_002c8926:
    for (lVar11 = (lVar6 >> 3) + -2 >> 1;
        __adjust_heap<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std::vector<std::pair<unsigned_int,_unsigned_int>_>_>,_long_int,_std::pair<unsigned_int,_unsigned_int>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<32>_>_>
                  (__first,lVar11,lVar6 >> 3,*(undefined8 *)(__first + lVar11 * 2)), lVar11 != 0;
        lVar11 = lVar11 + -1) {
    }
    do {
      puVar7 = __last + -2;
      uVar2 = *(undefined8 *)puVar7;
      *puVar7 = *__first;
      __last[-1] = __first[1];
      __adjust_heap<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std::vector<std::pair<unsigned_int,_unsigned_int>_>_>,_long_int,_std::pair<unsigned_int,_unsigned_int>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<32>_>_>
                (__first,0,(long)puVar7 - (long)__first >> 3,uVar2);
      __last = puVar7;
    } while (8 < (long)puVar7 - (long)__first);
  }
  return;
LAB_002c8900:
  __introsort_loop<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std::vector<std::pair<unsigned_int,_unsigned_int>_>_>,_long_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<32>_>_>
            (__last,puVar7,__depth_limit);
  lVar6 = (long)__last - (long)__first;
  if (lVar6 < 0x81) {
    return;
  }
  puVar7 = __last;
  if (__depth_limit == 0) goto LAB_002c8926;
  goto LAB_002c880b;
}



void FUN_002c87d0(uint *param_1,uint *param_2,long param_3)

{
  uint uVar1;
  undefined8 uVar2;
  uint *puVar3;
  uint *puVar4;
  uint uVar5;
  long lVar6;
  uint *puVar7;
  uint *puVar8;
  uint uVar9;
  uint uVar10;
  long lVar11;
  
  lVar6 = (long)param_2 - (long)param_1;
  if (0x80 < lVar6) {
    if (param_3 != 0) {
      puVar7 = param_2;
LAB_002c880b:
      uVar5 = param_1[2];
      param_3 = param_3 + -1;
      uVar9 = puVar7[-2];
      uVar10 = *param_1;
      puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -
                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2;
      uVar1 = *puVar4;
      if (uVar5 < uVar1) {
        if (uVar1 < uVar9) {
LAB_002c89a0:
          *param_1 = uVar1;
          *puVar4 = uVar10;
          uVar5 = param_1[1];
          param_1[1] = puVar4[1];
          puVar4[1] = uVar5;
          uVar10 = param_1[2];
          uVar5 = *param_1;
          goto LAB_002c885f;
        }
        if (uVar5 < uVar9) {
LAB_002c88e0:
          *param_1 = uVar9;
          puVar7[-2] = uVar10;
          uVar5 = param_1[1];
          param_1[1] = puVar7[-1];
          puVar7[-1] = uVar5;
          uVar10 = param_1[2];
          uVar5 = *param_1;
          goto LAB_002c885f;
        }
      }
      else if (uVar9 <= uVar5) {
        if (uVar1 < uVar9) goto LAB_002c88e0;
        goto LAB_002c89a0;
      }
      uVar9 = param_1[1];
      *param_1 = uVar5;
      param_1[2] = uVar10;
      param_1[1] = param_1[3];
      param_1[3] = uVar9;
LAB_002c885f:
      uVar9 = puVar7[-2];
      puVar4 = puVar7;
      puVar8 = param_1 + 4;
      param_2 = param_1 + 2;
      do {
        if (uVar5 <= uVar10) {
          puVar3 = puVar4 + -2;
          if (uVar5 < uVar9) {
            puVar4 = puVar4 + -4;
            do {
              puVar3 = puVar4;
              uVar9 = *puVar3;
              puVar4 = puVar3 + -2;
            } while (uVar5 < uVar9);
          }
          puVar4 = puVar3;
          if (puVar4 <= param_2) goto LAB_002c8900;
          puVar8[-2] = uVar9;
          *puVar4 = uVar10;
          uVar5 = puVar8[-1];
          puVar8[-1] = puVar4[1];
          uVar9 = puVar4[-2];
          puVar4[1] = uVar5;
          uVar5 = *param_1;
        }
        uVar10 = *puVar8;
        param_2 = param_2 + 2;
        puVar8 = puVar8 + 2;
      } while( true );
    }
LAB_002c8926:
    for (lVar11 = (lVar6 >> 3) + -2 >> 1;
        FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2)), lVar11 != 0;
        lVar11 = lVar11 + -1) {
    }
    do {
      puVar7 = param_2 + -2;
      uVar2 = *(undefined8 *)puVar7;
      *puVar7 = *param_1;
      param_2[-1] = param_1[1];
      FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2);
      param_2 = puVar7;
    } while (8 < (long)puVar7 - (long)param_1);
  }
  return;
LAB_002c8900:
  FUN_002c87d0(param_2,puVar7,param_3);
  lVar6 = (long)param_2 - (long)param_1;
  if (lVar6 < 0x81) {
    return;
  }
  puVar7 = param_2;
  if (param_3 == 0) goto LAB_002c8926;
  goto LAB_002c880b;
}


PUSH R15
MOV R15,RDX
MOV RDX,RSI
PUSH R14
SUB RDX,RDI
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x8
CMP RDX,0x80
JLE 0x002c8990
MOV RBX,RDI
MOV RBP,RSI
TEST R15,R15
JZ 0x002c8926
LEA R13,[RDI + 0x8]
LEA R12,[RDI + 0x10]
MOV RAX,RSI
MOV ECX,dword ptr [RBX + 0x8]
SUB R15,0x1
MOV EDI,dword ptr [RSI + -0x8]
SUB RAX,RBX
MOV R9D,dword ptr [RBX]
SAR RAX,0x3
MOV RDX,RAX
SHR RAX,0x3f
ADD RAX,RDX
SAR RAX,0x1
LEA RAX,[RBX + RAX*0x8]
MOV EDX,dword ptr [RAX]
CMP ECX,EDX
JNC 0x002c88d0
CMP EDX,EDI
JC 0x002c89a0
CMP ECX,EDI
JC 0x002c88e0
MOV EAX,dword ptr [RBX + 0x4]
MOV EDX,dword ptr [RBX + 0xc]
MOV dword ptr [RBX],ECX
MOV dword ptr [RBX + 0x8],R9D
MOV dword ptr [RBX + 0x4],EDX
MOV dword ptr [RBX + 0xc],EAX
MOV R8D,dword ptr [RSI + -0x8]
MOV RDI,R12
MOV R14,R13
MOV RAX,RSI
NOP dword ptr [RAX]
MOV RBP,R14
CMP R9D,ECX
JC 0x002c88b9
LEA RDX,[RAX + -0x8]
CMP R8D,ECX
JBE 0x002c8898
SUB RAX,0x10
NOP dword ptr [RAX]
MOV RDX,RAX
SUB RAX,0x8
MOV R8D,dword ptr [RAX + 0x8]
CMP R8D,ECX
JA 0x002c8888
CMP R14,RDX
JNC 0x002c8900
MOV dword ptr [RDI + -0x8],R8D
MOV ECX,dword ptr [RDX + 0x4]
MOV dword ptr [RDX],R9D
MOV EAX,dword ptr [RDI + -0x4]
MOV dword ptr [RDI + -0x4],ECX
MOV R8D,dword ptr [RDX + -0x8]
MOV dword ptr [RDX + 0x4],EAX
MOV ECX,dword ptr [RBX]
MOV RAX,RDX
MOV R9D,dword ptr [RDI]
ADD R14,0x8
ADD RDI,0x8
JMP 0x002c8870
CMP ECX,EDI
JC 0x002c884d
CMP EDX,EDI
JNC 0x002c89a0
MOV dword ptr [RBX],EDI
MOV EDX,dword ptr [RSI + -0x4]
MOV dword ptr [RSI + -0x8],R9D
MOV EAX,dword ptr [RBX + 0x4]
MOV dword ptr [RBX + 0x4],EDX
MOV dword ptr [RSI + -0x4],EAX
MOV R9D,dword ptr [RBX + 0x8]
MOV ECX,dword ptr [RBX]
JMP 0x002c885f
MOV RDX,R15
MOV RDI,R14
CALL 0x002c87d0
MOV RDX,R14
SUB RDX,RBX
CMP RDX,0x80
JLE 0x002c8990
MOV RSI,R14
TEST R15,R15
JNZ 0x002c880b
SAR RDX,0x3
LEA R13,[RDX + -0x2]
MOV R12,RDX
SAR R13,0x1
JMP 0x002c8944
SUB R13,0x1
MOV RCX,qword ptr [RBX + R13*0x8]
MOV RDX,R12
MOV RSI,R13
MOV RDI,RBX
CALL 0x002c8690
TEST R13,R13
JNZ 0x002c8940
SUB RBP,0x8
NOP
MOV EAX,dword ptr [RBX]
MOV RCX,qword ptr [RBP]
MOV R12,RBP
XOR ESI,ESI
SUB R12,RBX
MOV RDI,RBX
SUB RBP,0x8
MOV dword ptr [RBP + 0x8],EAX
MOV EAX,dword ptr [RBX + 0x4]
MOV RDX,R12
SAR RDX,0x3
MOV dword ptr [RBP + 0xc],EAX
CALL 0x002c8690
CMP R12,0x8
JG 0x002c8960
ADD RSP,0x8
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV dword ptr [RBX],EDX
MOV ECX,dword ptr [RAX + 0x4]
MOV dword ptr [RAX],R9D
MOV EDX,dword ptr [RBX + 0x4]
MOV dword ptr [RBX + 0x4],ECX
MOV dword ptr [RAX + 0x4],EDX
MOV R9D,dword ptr [RBX + 0x8]
MOV ECX,dword ptr [RBX]
JMP 0x002c885f
(translation_unit "void FUN_002c87d0(uint *param_1,uint *param_2,long param_3)\n\n{\n  uint uVar1;\n  undefined8 uVar2;\n  uint *puVar3;\n  uint *puVar4;\n  uint uVar5;\n  long lVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint uVar9;\n  uint uVar10;\n  long lVar11;\n  \n  lVar6 = (long)param_2 - (long)param_1;\n  if (0x80 < lVar6) {\n    if (param_3 != 0) {\n      puVar7 = param_2;\nLAB_002c880b:\n      uVar5 = param_1[2];\n      param_3 = param_3 + -1;\n      uVar9 = puVar7[-2];\n      uVar10 = *param_1;\n      puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2;\n      uVar1 = *puVar4;\n      if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }\n      uVar9 = param_1[1];\n      *param_1 = uVar5;\n      param_1[2] = uVar10;\n      param_1[1] = param_1[3];\n      param_1[3] = uVar9;\nLAB_002c885f:\n      uVar9 = puVar7[-2];\n      puVar4 = puVar7;\n      puVar8 = param_1 + 4;\n      param_2 = param_1 + 2;\n      do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );\n    }\nLAB_002c8926:\n    for (lVar11 = (lVar6 >> 3) + -2 >> 1;\n        FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2)), lVar11 != 0;\n        lVar11 = lVar11 + -1) {\n    }\n    do {\n      puVar7 = param_2 + -2;\n      uVar2 = *(undefined8 *)puVar7;\n      *puVar7 = *param_1;\n      param_2[-1] = param_1[1];\n      FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2);\n      param_2 = puVar7;\n    } while (8 < (long)puVar7 - (long)param_1);\n  }\n  return;\nLAB_002c8900:\n  FUN_002c87d0(param_2,puVar7,param_3);\n  lVar6 = (long)param_2 - (long)param_1;\n  if (lVar6 < 0x81) {\n    return;\n  }\n  puVar7 = param_2;\n  if (param_3 == 0) goto LAB_002c8926;\n  goto LAB_002c880b;\n}\n\n" (function_definition "void FUN_002c87d0(uint *param_1,uint *param_2,long param_3)\n\n{\n  uint uVar1;\n  undefined8 uVar2;\n  uint *puVar3;\n  uint *puVar4;\n  uint uVar5;\n  long lVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint uVar9;\n  uint uVar10;\n  long lVar11;\n  \n  lVar6 = (long)param_2 - (long)param_1;\n  if (0x80 < lVar6) {\n    if (param_3 != 0) {\n      puVar7 = param_2;\nLAB_002c880b:\n      uVar5 = param_1[2];\n      param_3 = param_3 + -1;\n      uVar9 = puVar7[-2];\n      uVar10 = *param_1;\n      puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2;\n      uVar1 = *puVar4;\n      if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }\n      uVar9 = param_1[1];\n      *param_1 = uVar5;\n      param_1[2] = uVar10;\n      param_1[1] = param_1[3];\n      param_1[3] = uVar9;\nLAB_002c885f:\n      uVar9 = puVar7[-2];\n      puVar4 = puVar7;\n      puVar8 = param_1 + 4;\n      param_2 = param_1 + 2;\n      do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );\n    }\nLAB_002c8926:\n    for (lVar11 = (lVar6 >> 3) + -2 >> 1;\n        FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2)), lVar11 != 0;\n        lVar11 = lVar11 + -1) {\n    }\n    do {\n      puVar7 = param_2 + -2;\n      uVar2 = *(undefined8 *)puVar7;\n      *puVar7 = *param_1;\n      param_2[-1] = param_1[1];\n      FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2);\n      param_2 = puVar7;\n    } while (8 < (long)puVar7 - (long)param_1);\n  }\n  return;\nLAB_002c8900:\n  FUN_002c87d0(param_2,puVar7,param_3);\n  lVar6 = (long)param_2 - (long)param_1;\n  if (lVar6 < 0x81) {\n    return;\n  }\n  puVar7 = param_2;\n  if (param_3 == 0) goto LAB_002c8926;\n  goto LAB_002c880b;\n}" primitive_type (function_declarator "FUN_002c87d0(uint *param_1,uint *param_2,long param_3)" identifier (parameter_list "(uint *param_1,uint *param_2,long param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  uint uVar1;\n  undefined8 uVar2;\n  uint *puVar3;\n  uint *puVar4;\n  uint uVar5;\n  long lVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint uVar9;\n  uint uVar10;\n  long lVar11;\n  \n  lVar6 = (long)param_2 - (long)param_1;\n  if (0x80 < lVar6) {\n    if (param_3 != 0) {\n      puVar7 = param_2;\nLAB_002c880b:\n      uVar5 = param_1[2];\n      param_3 = param_3 + -1;\n      uVar9 = puVar7[-2];\n      uVar10 = *param_1;\n      puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2;\n      uVar1 = *puVar4;\n      if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }\n      uVar9 = param_1[1];\n      *param_1 = uVar5;\n      param_1[2] = uVar10;\n      param_1[1] = param_1[3];\n      param_1[3] = uVar9;\nLAB_002c885f:\n      uVar9 = puVar7[-2];\n      puVar4 = puVar7;\n      puVar8 = param_1 + 4;\n      param_2 = param_1 + 2;\n      do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );\n    }\nLAB_002c8926:\n    for (lVar11 = (lVar6 >> 3) + -2 >> 1;\n        FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2)), lVar11 != 0;\n        lVar11 = lVar11 + -1) {\n    }\n    do {\n      puVar7 = param_2 + -2;\n      uVar2 = *(undefined8 *)puVar7;\n      *puVar7 = *param_1;\n      param_2[-1] = param_1[1];\n      FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2);\n      param_2 = puVar7;\n    } while (8 < (long)puVar7 - (long)param_1);\n  }\n  return;\nLAB_002c8900:\n  FUN_002c87d0(param_2,puVar7,param_3);\n  lVar6 = (long)param_2 - (long)param_1;\n  if (lVar6 < 0x81) {\n    return;\n  }\n  puVar7 = param_2;\n  if (param_3 == 0) goto LAB_002c8926;\n  goto LAB_002c880b;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "long lVar11;" (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 (0x80 < lVar6) {\n    if (param_3 != 0) {\n      puVar7 = param_2;\nLAB_002c880b:\n      uVar5 = param_1[2];\n      param_3 = param_3 + -1;\n      uVar9 = puVar7[-2];\n      uVar10 = *param_1;\n      puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2;\n      uVar1 = *puVar4;\n      if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }\n      uVar9 = param_1[1];\n      *param_1 = uVar5;\n      param_1[2] = uVar10;\n      param_1[1] = param_1[3];\n      param_1[3] = uVar9;\nLAB_002c885f:\n      uVar9 = puVar7[-2];\n      puVar4 = puVar7;\n      puVar8 = param_1 + 4;\n      param_2 = param_1 + 2;\n      do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );\n    }\nLAB_002c8926:\n    for (lVar11 = (lVar6 >> 3) + -2 >> 1;\n        FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2)), lVar11 != 0;\n        lVar11 = lVar11 + -1) {\n    }\n    do {\n      puVar7 = param_2 + -2;\n      uVar2 = *(undefined8 *)puVar7;\n      *puVar7 = *param_1;\n      param_2[-1] = param_1[1];\n      FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2);\n      param_2 = puVar7;\n    } while (8 < (long)puVar7 - (long)param_1);\n  }" if (parenthesized_expression "(0x80 < lVar6)" ( (binary_expression "0x80 < lVar6" number_literal < identifier) )) (compound_statement "{\n    if (param_3 != 0) {\n      puVar7 = param_2;\nLAB_002c880b:\n      uVar5 = param_1[2];\n      param_3 = param_3 + -1;\n      uVar9 = puVar7[-2];\n      uVar10 = *param_1;\n      puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2;\n      uVar1 = *puVar4;\n      if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }\n      uVar9 = param_1[1];\n      *param_1 = uVar5;\n      param_1[2] = uVar10;\n      param_1[1] = param_1[3];\n      param_1[3] = uVar9;\nLAB_002c885f:\n      uVar9 = puVar7[-2];\n      puVar4 = puVar7;\n      puVar8 = param_1 + 4;\n      param_2 = param_1 + 2;\n      do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );\n    }\nLAB_002c8926:\n    for (lVar11 = (lVar6 >> 3) + -2 >> 1;\n        FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2)), lVar11 != 0;\n        lVar11 = lVar11 + -1) {\n    }\n    do {\n      puVar7 = param_2 + -2;\n      uVar2 = *(undefined8 *)puVar7;\n      *puVar7 = *param_1;\n      param_2[-1] = param_1[1];\n      FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2);\n      param_2 = puVar7;\n    } while (8 < (long)puVar7 - (long)param_1);\n  }" { (if_statement "if (param_3 != 0) {\n      puVar7 = param_2;\nLAB_002c880b:\n      uVar5 = param_1[2];\n      param_3 = param_3 + -1;\n      uVar9 = puVar7[-2];\n      uVar10 = *param_1;\n      puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2;\n      uVar1 = *puVar4;\n      if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }\n      uVar9 = param_1[1];\n      *param_1 = uVar5;\n      param_1[2] = uVar10;\n      param_1[1] = param_1[3];\n      param_1[3] = uVar9;\nLAB_002c885f:\n      uVar9 = puVar7[-2];\n      puVar4 = puVar7;\n      puVar8 = param_1 + 4;\n      param_2 = param_1 + 2;\n      do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );\n    }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar7 = param_2;\nLAB_002c880b:\n      uVar5 = param_1[2];\n      param_3 = param_3 + -1;\n      uVar9 = puVar7[-2];\n      uVar10 = *param_1;\n      puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2;\n      uVar1 = *puVar4;\n      if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }\n      uVar9 = param_1[1];\n      *param_1 = uVar5;\n      param_1[2] = uVar10;\n      param_1[1] = param_1[3];\n      param_1[3] = uVar9;\nLAB_002c885f:\n      uVar9 = puVar7[-2];\n      puVar4 = puVar7;\n      puVar8 = param_1 + 4;\n      param_2 = param_1 + 2;\n      do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );\n    }" { (expression_statement "puVar7 = param_2;" (assignment_expression "puVar7 = param_2" identifier = identifier) ;) (labeled_statement "LAB_002c880b:\n      uVar5 = param_1[2];" statement_identifier : (expression_statement "uVar5 = param_1[2];" (assignment_expression "uVar5 = param_1[2]" identifier = (subscript_expression "param_1[2]" 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 "uVar9 = puVar7[-2];" (assignment_expression "uVar9 = puVar7[-2]" identifier = (subscript_expression "puVar7[-2]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = *param_1;" (assignment_expression "uVar10 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2;" (assignment_expression "puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2" identifier = (binary_expression "param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2" identifier + (binary_expression "(((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2" (parenthesized_expression "(((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1)" ( (binary_expression "((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1" (binary_expression "((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f)" (parenthesized_expression "((long)puVar7 - (long)param_1 >> 3)" ( (binary_expression "(long)puVar7 - (long)param_1 >> 3" (binary_expression "(long)puVar7 - (long)param_1" (cast_expression "(long)puVar7" ( (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) )) - (parenthesized_expression "((long)puVar7 - (long)param_1 >> 0x3f)" ( (binary_expression "(long)puVar7 - (long)param_1 >> 0x3f" (binary_expression "(long)puVar7 - (long)param_1" (cast_expression "(long)puVar7" ( (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))) ;) (expression_statement "uVar1 = *puVar4;" (assignment_expression "uVar1 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (if_statement "if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }" if (parenthesized_expression "(uVar5 < uVar1)" ( (binary_expression "uVar5 < uVar1" identifier < identifier) )) (compound_statement "{\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }" { (if_statement "if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }" if (parenthesized_expression "(uVar1 < uVar9)" ( (binary_expression "uVar1 < uVar9" identifier < identifier) )) (compound_statement "{\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }" { (labeled_statement "LAB_002c89a0:\n          *param_1 = uVar1;" statement_identifier : (expression_statement "*param_1 = uVar1;" (assignment_expression "*param_1 = uVar1" (pointer_expression "*param_1" * identifier) = identifier) ;)) (expression_statement "*puVar4 = uVar10;" (assignment_expression "*puVar4 = uVar10" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "uVar5 = param_1[1];" (assignment_expression "uVar5 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "param_1[1] = puVar4[1];" (assignment_expression "param_1[1] = puVar4[1]" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (subscript_expression "puVar4[1]" identifier [ number_literal ])) ;) (expression_statement "puVar4[1] = uVar5;" (assignment_expression "puVar4[1] = uVar5" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar10 = param_1[2];" (assignment_expression "uVar10 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (goto_statement "goto LAB_002c885f;" goto statement_identifier ;) })) (if_statement "if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }" if (parenthesized_expression "(uVar5 < uVar9)" ( (binary_expression "uVar5 < uVar9" identifier < identifier) )) (compound_statement "{\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }" { (labeled_statement "LAB_002c88e0:\n          *param_1 = uVar9;" statement_identifier : (expression_statement "*param_1 = uVar9;" (assignment_expression "*param_1 = uVar9" (pointer_expression "*param_1" * identifier) = identifier) ;)) (expression_statement "puVar7[-2] = uVar10;" (assignment_expression "puVar7[-2] = uVar10" (subscript_expression "puVar7[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar5 = param_1[1];" (assignment_expression "uVar5 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "param_1[1] = puVar7[-1];" (assignment_expression "param_1[1] = puVar7[-1]" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (subscript_expression "puVar7[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar7[-1] = uVar5;" (assignment_expression "puVar7[-1] = uVar5" (subscript_expression "puVar7[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar10 = param_1[2];" (assignment_expression "uVar10 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (goto_statement "goto LAB_002c885f;" goto statement_identifier ;) })) }) (else_clause "else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }" else (if_statement "if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }" if (parenthesized_expression "(uVar9 <= uVar5)" ( (binary_expression "uVar9 <= uVar5" identifier <= identifier) )) (compound_statement "{\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }" { (if_statement "if (uVar1 < uVar9) goto LAB_002c88e0;" if (parenthesized_expression "(uVar1 < uVar9)" ( (binary_expression "uVar1 < uVar9" identifier < identifier) )) (goto_statement "goto LAB_002c88e0;" goto statement_identifier ;)) (goto_statement "goto LAB_002c89a0;" goto statement_identifier ;) })))) (expression_statement "uVar9 = param_1[1];" (assignment_expression "uVar9 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "*param_1 = uVar5;" (assignment_expression "*param_1 = uVar5" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[2] = uVar10;" (assignment_expression "param_1[2] = uVar10" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[1] = param_1[3];" (assignment_expression "param_1[1] = param_1[3]" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "param_1[3] = uVar9;" (assignment_expression "param_1[3] = uVar9" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (labeled_statement "LAB_002c885f:\n      uVar9 = puVar7[-2];" statement_identifier : (expression_statement "uVar9 = puVar7[-2];" (assignment_expression "uVar9 = puVar7[-2]" identifier = (subscript_expression "puVar7[-2]" identifier [ number_literal ])) ;)) (expression_statement "puVar4 = puVar7;" (assignment_expression "puVar4 = puVar7" identifier = identifier) ;) (expression_statement "puVar8 = param_1 + 4;" (assignment_expression "puVar8 = param_1 + 4" identifier = (binary_expression "param_1 + 4" identifier + number_literal)) ;) (expression_statement "param_2 = param_1 + 2;" (assignment_expression "param_2 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (do_statement "do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );" do (compound_statement "{\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\n      }" { (if_statement "if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }" if (parenthesized_expression "(uVar5 <= uVar10)" ( (binary_expression "uVar5 <= uVar10" identifier <= identifier) )) (compound_statement "{\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }" { (expression_statement "puVar3 = puVar4 + -2;" (assignment_expression "puVar3 = puVar4 + -2" identifier = (binary_expression "puVar4 + -2" identifier + number_literal)) ;) (if_statement "if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }" if (parenthesized_expression "(uVar5 < uVar9)" ( (binary_expression "uVar5 < uVar9" identifier < identifier) )) (compound_statement "{\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }" { (expression_statement "puVar4 = puVar4 + -4;" (assignment_expression "puVar4 = puVar4 + -4" identifier = (binary_expression "puVar4 + -4" identifier + number_literal)) ;) (do_statement "do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);" do (compound_statement "{\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            }" { (expression_statement "puVar3 = puVar4;" (assignment_expression "puVar3 = puVar4" identifier = identifier) ;) (expression_statement "uVar9 = *puVar3;" (assignment_expression "uVar9 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "puVar4 = puVar3 + -2;" (assignment_expression "puVar4 = puVar3 + -2" identifier = (binary_expression "puVar3 + -2" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar5 < uVar9)" ( (binary_expression "uVar5 < uVar9" identifier < identifier) )) ;) })) (expression_statement "puVar4 = puVar3;" (assignment_expression "puVar4 = puVar3" identifier = identifier) ;) (if_statement "if (puVar4 <= param_2) goto LAB_002c8900;" if (parenthesized_expression "(puVar4 <= param_2)" ( (binary_expression "puVar4 <= param_2" identifier <= identifier) )) (goto_statement "goto LAB_002c8900;" goto statement_identifier ;)) (expression_statement "puVar8[-2] = uVar9;" (assignment_expression "puVar8[-2] = uVar9" (subscript_expression "puVar8[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar4 = uVar10;" (assignment_expression "*puVar4 = uVar10" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "uVar5 = puVar8[-1];" (assignment_expression "uVar5 = puVar8[-1]" identifier = (subscript_expression "puVar8[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar8[-1] = puVar4[1];" (assignment_expression "puVar8[-1] = puVar4[1]" (subscript_expression "puVar8[-1]" identifier [ number_literal ]) = (subscript_expression "puVar4[1]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = puVar4[-2];" (assignment_expression "uVar9 = puVar4[-2]" identifier = (subscript_expression "puVar4[-2]" identifier [ number_literal ])) ;) (expression_statement "puVar4[1] = uVar5;" (assignment_expression "puVar4[1] = uVar5" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) })) (expression_statement "uVar10 = *puVar8;" (assignment_expression "uVar10 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "param_2 = param_2 + 2;" (assignment_expression "param_2 = param_2 + 2" identifier = (binary_expression "param_2 + 2" identifier + number_literal)) ;) (expression_statement "puVar8 = puVar8 + 2;" (assignment_expression "puVar8 = puVar8 + 2" identifier = (binary_expression "puVar8 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_002c8926:\n    for (lVar11 = (lVar6 >> 3) + -2 >> 1;\n        FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2)), lVar11 != 0;\n        lVar11 = lVar11 + -1) {\n    }" statement_identifier : (for_statement "for (lVar11 = (lVar6 >> 3) + -2 >> 1;\n        FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2)), lVar11 != 0;\n        lVar11 = lVar11 + -1) {\n    }" for ( (assignment_expression "lVar11 = (lVar6 >> 3) + -2 >> 1" identifier = (binary_expression "(lVar6 >> 3) + -2 >> 1" (binary_expression "(lVar6 >> 3) + -2" (parenthesized_expression "(lVar6 >> 3)" ( (binary_expression "lVar6 >> 3" identifier >> number_literal) )) + number_literal) >> number_literal)) ; (comma_expression "FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2)), lVar11 != 0" (call_expression "FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2))" identifier (argument_list "(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2))" ( identifier , identifier , (binary_expression "lVar6 >> 3" identifier >> number_literal) , (pointer_expression "*(undefined8 *)(param_1 + lVar11 * 2)" * (cast_expression "(undefined8 *)(param_1 + lVar11 * 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar11 * 2)" ( (binary_expression "param_1 + lVar11 * 2" identifier + (binary_expression "lVar11 * 2" identifier * number_literal)) )))) ))) , (binary_expression "lVar11 != 0" identifier != number_literal)) ; (assignment_expression "lVar11 = lVar11 + -1" identifier = (binary_expression "lVar11 + -1" identifier + number_literal)) ) (compound_statement "{\n    }" { }))) (do_statement "do {\n      puVar7 = param_2 + -2;\n      uVar2 = *(undefined8 *)puVar7;\n      *puVar7 = *param_1;\n      param_2[-1] = param_1[1];\n      FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2);\n      param_2 = puVar7;\n    } while (8 < (long)puVar7 - (long)param_1);" do (compound_statement "{\n      puVar7 = param_2 + -2;\n      uVar2 = *(undefined8 *)puVar7;\n      *puVar7 = *param_1;\n      param_2[-1] = param_1[1];\n      FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2);\n      param_2 = puVar7;\n    }" { (expression_statement "puVar7 = param_2 + -2;" (assignment_expression "puVar7 = param_2 + -2" identifier = (binary_expression "param_2 + -2" identifier + number_literal)) ;) (expression_statement "uVar2 = *(undefined8 *)puVar7;" (assignment_expression "uVar2 = *(undefined8 *)puVar7" identifier = (pointer_expression "*(undefined8 *)puVar7" * (cast_expression "(undefined8 *)puVar7" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*puVar7 = *param_1;" (assignment_expression "*puVar7 = *param_1" (pointer_expression "*puVar7" * identifier) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "param_2[-1] = param_1[1];" (assignment_expression "param_2[-1] = param_1[1]" (subscript_expression "param_2[-1]" identifier [ number_literal ]) = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2);" (call_expression "FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2)" identifier (argument_list "(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2)" ( identifier , number_literal , (binary_expression "(long)puVar7 - (long)param_1 >> 3" (binary_expression "(long)puVar7 - (long)param_1" (cast_expression "(long)puVar7" ( (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) , identifier ))) ;) (expression_statement "param_2 = puVar7;" (assignment_expression "param_2 = puVar7" identifier = identifier) ;) }) while (parenthesized_expression "(8 < (long)puVar7 - (long)param_1)" ( (binary_expression "8 < (long)puVar7 - (long)param_1" number_literal < (binary_expression "(long)puVar7 - (long)param_1" (cast_expression "(long)puVar7" ( (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_002c8900:\n  FUN_002c87d0(param_2,puVar7,param_3);" statement_identifier : (expression_statement "FUN_002c87d0(param_2,puVar7,param_3);" (call_expression "FUN_002c87d0(param_2,puVar7,param_3)" identifier (argument_list "(param_2,puVar7,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 < 0x81) {\n    return;\n  }" if (parenthesized_expression "(lVar6 < 0x81)" ( (binary_expression "lVar6 < 0x81" identifier < number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "puVar7 = param_2;" (assignment_expression "puVar7 = param_2" identifier = identifier) ;) (if_statement "if (param_3 == 0) goto LAB_002c8926;" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_002c8926;" goto statement_identifier ;)) (goto_statement "goto LAB_002c880b;" goto statement_identifier ;) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* DWARF original name: __introsort_loop<__gnu_cxx::__normal_iterator<std::pair<unsigned int,\n   unsigned int>*, std::vector<std::pair<unsigned int, unsigned int> > >, long int,\n   __gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<32> > > */\n\nvoid std::\n     __introsort_loop<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std::vector<std::pair<unsigned_int,_unsigned_int>_>_>,_long_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<32>_>_>\n               (uint *__first,uint *__last,long __depth_limit)\n\n{\n  uint uVar1;\n  undefined8 uVar2;\n  uint *puVar3;\n  uint *puVar4;\n  uint uVar5;\n  long lVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint uVar9;\n  uint uVar10;\n  long lVar11;\n  \n  lVar6 = (long)__last - (long)__first;\n  if (0x80 < lVar6) {\n    if (__depth_limit != 0) {\n      puVar7 = __last;\nLAB_002c880b:\n      uVar5 = __first[2];\n      __depth_limit = __depth_limit + -1;\n      uVar9 = puVar7[-2];\n      uVar10 = *__first;\n      puVar4 = __first + (((long)puVar7 - (long)__first >> 3) -\n                          ((long)puVar7 - (long)__first >> 0x3f) >> 1) * 2;\n      uVar1 = *puVar4;\n      if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *__first = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = __first[1];\n          __first[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = __first[2];\n          uVar5 = *__first;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *__first = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = __first[1];\n          __first[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = __first[2];\n          uVar5 = *__first;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }\n      uVar9 = __first[1];\n      *__first = uVar5;\n      __first[2] = uVar10;\n      __first[1] = __first[3];\n      __first[3] = uVar9;\nLAB_002c885f:\n      uVar9 = puVar7[-2];\n      puVar4 = puVar7;\n      puVar8 = __first + 4;\n      __last = __first + 2;\n      do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= __last) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *__first;\n        }\n        uVar10 = *puVar8;\n        __last = __last + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );\n    }\nLAB_002c8926:\n    for (lVar11 = (lVar6 >> 3) + -2 >> 1;\n        __adjust_heap<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std::vector<std::pair<unsigned_int,_unsigned_int>_>_>,_long_int,_std::pair<unsigned_int,_unsigned_int>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<32>_>_>\n                  (__first,lVar11,lVar6 >> 3,*(undefined8 *)(__first + lVar11 * 2)), lVar11 != 0;\n        lVar11 = lVar11 + -1) {\n    }\n    do {\n      puVar7 = __last + -2;\n      uVar2 = *(undefined8 *)puVar7;\n      *puVar7 = *__first;\n      __last[-1] = __first[1];\n      __adjust_heap<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std::vector<std::pair<unsigned_int,_unsigned_int>_>_>,_long_int,_std::pair<unsigned_int,_unsigned_int>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<32>_>_>\n                (__first,0,(long)puVar7 - (long)__first >> 3,uVar2);\n      __last = puVar7;\n    } while (8 < (long)puVar7 - (long)__first);\n  }\n  return;\nLAB_002c8900:\n  __introsort_loop<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std::vector<std::pair<unsigned_int,_unsigned_int>_>_>,_long_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<32>_>_>\n            (__last,puVar7,__depth_limit);\n  lVar6 = (long)__last - (long)__first;\n  if (lVar6 < 0x81) {\n    return;\n  }\n  puVar7 = __last;\n  if (__depth_limit == 0) goto LAB_002c8926;\n  goto LAB_002c880b;\n}\n\n" comment comment (declaration "void std::\n     __introsort_loop<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std::vector<std::pair<unsigned_int,_unsigned_int>_>_>,_long_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<32>_>_>\n               (uint *__first,uint *__last,long __depth_limit)\n\n{\n  uint uVar1;" primitive_type (ERROR "std::\n     __introsort_loop<__gnu_cxx::__normal_iterator<std::pair<" identifier : : identifier < identifier : : identifier < identifier : : identifier <) identifier , identifier (ERROR ">*" > *) , (ERROR "_std::vector<std::pair<" identifier : : identifier < identifier : : identifier <) identifier , identifier (ERROR ">_>_>" > identifier > identifier >) , identifier , (ERROR "___gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<32>_>_>\n               (uint *__first,uint *__last,long __depth_limit)\n\n{\n  uint" identifier : : identifier : : identifier < identifier : : identifier : : identifier < number_literal > identifier > (function_declarator "_>\n               (uint *__first,uint *__last,long __depth_limit)" identifier (ERROR ">" >) (parameter_list "(uint *__first,uint *__last,long __depth_limit)" ( (parameter_declaration "uint *__first" type_identifier (pointer_declarator "*__first" * identifier)) , (parameter_declaration "uint *__last" type_identifier (pointer_declarator "*__last" * identifier)) , (parameter_declaration "long __depth_limit" (sized_type_specifier "long" long) identifier) ))) { identifier) identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "long lVar11;" (sized_type_specifier "long" long) 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 (0x80 < lVar6) {\n    if (__depth_limit != 0) {\n      puVar7 = __last;\nLAB_002c880b:\n      uVar5 = __first[2];\n      __depth_limit = __depth_limit + -1;\n      uVar9 = puVar7[-2];\n      uVar10 = *__first;\n      puVar4 = __first + (((long)puVar7 - (long)__first >> 3) -\n                          ((long)puVar7 - (long)__first >> 0x3f) >> 1) * 2;\n      uVar1 = *puVar4;\n      if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *__first = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = __first[1];\n          __first[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = __first[2];\n          uVar5 = *__first;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *__first = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = __first[1];\n          __first[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = __first[2];\n          uVar5 = *__first;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }\n      uVar9 = __first[1];\n      *__first = uVar5;\n      __first[2] = uVar10;\n      __first[1] = __first[3];\n      __first[3] = uVar9;\nLAB_002c885f:\n      uVar9 = puVar7[-2];\n      puVar4 = puVar7;\n      puVar8 = __first + 4;\n      __last = __first + 2;\n      do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= __last) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *__first;\n        }\n        uVar10 = *puVar8;\n        __last = __last + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );\n    }\nLAB_002c8926:\n    for (lVar11 = (lVar6 >> 3) + -2 >> 1;\n        __adjust_heap<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std::vector<std::pair<unsigned_int,_unsigned_int>_>_>,_long_int,_std::pair<unsigned_int,_unsigned_int>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<32>_>_>\n                  (__first,lVar11,lVar6 >> 3,*(undefined8 *)(__first + lVar11 * 2)), lVar11 != 0;\n        lVar11 = lVar11 + -1) {\n    }\n    do {\n      puVar7 = __last + -2;\n      uVar2 = *(undefined8 *)puVar7;\n      *puVar7 = *__first;\n      __last[-1] = __first[1];\n      __adjust_heap<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std::vector<std::pair<unsigned_int,_unsigned_int>_>_>,_long_int,_std::pair<unsigned_int,_unsigned_int>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<32>_>_>\n                (__first,0,(long)puVar7 - (long)__first >> 3,uVar2);\n      __last = puVar7;\n    } while (8 < (long)puVar7 - (long)__first);\n  }" if (parenthesized_expression "(0x80 < lVar6)" ( (binary_expression "0x80 < lVar6" number_literal < identifier) )) (compound_statement "{\n    if (__depth_limit != 0) {\n      puVar7 = __last;\nLAB_002c880b:\n      uVar5 = __first[2];\n      __depth_limit = __depth_limit + -1;\n      uVar9 = puVar7[-2];\n      uVar10 = *__first;\n      puVar4 = __first + (((long)puVar7 - (long)__first >> 3) -\n                          ((long)puVar7 - (long)__first >> 0x3f) >> 1) * 2;\n      uVar1 = *puVar4;\n      if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *__first = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = __first[1];\n          __first[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = __first[2];\n          uVar5 = *__first;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *__first = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = __first[1];\n          __first[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = __first[2];\n          uVar5 = *__first;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }\n      uVar9 = __first[1];\n      *__first = uVar5;\n      __first[2] = uVar10;\n      __first[1] = __first[3];\n      __first[3] = uVar9;\nLAB_002c885f:\n      uVar9 = puVar7[-2];\n      puVar4 = puVar7;\n      puVar8 = __first + 4;\n      __last = __first + 2;\n      do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= __last) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *__first;\n        }\n        uVar10 = *puVar8;\n        __last = __last + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );\n    }\nLAB_002c8926:\n    for (lVar11 = (lVar6 >> 3) + -2 >> 1;\n        __adjust_heap<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std::vector<std::pair<unsigned_int,_unsigned_int>_>_>,_long_int,_std::pair<unsigned_int,_unsigned_int>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<32>_>_>\n                  (__first,lVar11,lVar6 >> 3,*(undefined8 *)(__first + lVar11 * 2)), lVar11 != 0;\n        lVar11 = lVar11 + -1) {\n    }\n    do {\n      puVar7 = __last + -2;\n      uVar2 = *(undefined8 *)puVar7;\n      *puVar7 = *__first;\n      __last[-1] = __first[1];\n      __adjust_heap<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std::vector<std::pair<unsigned_int,_unsigned_int>_>_>,_long_int,_std::pair<unsigned_int,_unsigned_int>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<32>_>_>\n                (__first,0,(long)puVar7 - (long)__first >> 3,uVar2);\n      __last = puVar7;\n    } while (8 < (long)puVar7 - (long)__first);\n  }" { (if_statement "if (__depth_limit != 0) {\n      puVar7 = __last;\nLAB_002c880b:\n      uVar5 = __first[2];\n      __depth_limit = __depth_limit + -1;\n      uVar9 = puVar7[-2];\n      uVar10 = *__first;\n      puVar4 = __first + (((long)puVar7 - (long)__first >> 3) -\n                          ((long)puVar7 - (long)__first >> 0x3f) >> 1) * 2;\n      uVar1 = *puVar4;\n      if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *__first = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = __first[1];\n          __first[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = __first[2];\n          uVar5 = *__first;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *__first = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = __first[1];\n          __first[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = __first[2];\n          uVar5 = *__first;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }\n      uVar9 = __first[1];\n      *__first = uVar5;\n      __first[2] = uVar10;\n      __first[1] = __first[3];\n      __first[3] = uVar9;\nLAB_002c885f:\n      uVar9 = puVar7[-2];\n      puVar4 = puVar7;\n      puVar8 = __first + 4;\n      __last = __first + 2;\n      do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= __last) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *__first;\n        }\n        uVar10 = *puVar8;\n        __last = __last + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );\n    }" if (parenthesized_expression "(__depth_limit != 0)" ( (binary_expression "__depth_limit != 0" identifier != number_literal) )) (compound_statement "{\n      puVar7 = __last;\nLAB_002c880b:\n      uVar5 = __first[2];\n      __depth_limit = __depth_limit + -1;\n      uVar9 = puVar7[-2];\n      uVar10 = *__first;\n      puVar4 = __first + (((long)puVar7 - (long)__first >> 3) -\n                          ((long)puVar7 - (long)__first >> 0x3f) >> 1) * 2;\n      uVar1 = *puVar4;\n      if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *__first = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = __first[1];\n          __first[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = __first[2];\n          uVar5 = *__first;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *__first = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = __first[1];\n          __first[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = __first[2];\n          uVar5 = *__first;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }\n      uVar9 = __first[1];\n      *__first = uVar5;\n      __first[2] = uVar10;\n      __first[1] = __first[3];\n      __first[3] = uVar9;\nLAB_002c885f:\n      uVar9 = puVar7[-2];\n      puVar4 = puVar7;\n      puVar8 = __first + 4;\n      __last = __first + 2;\n      do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= __last) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *__first;\n        }\n        uVar10 = *puVar8;\n        __last = __last + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );\n    }" { (expression_statement "puVar7 = __last;" (assignment_expression "puVar7 = __last" identifier = identifier) ;) (labeled_statement "LAB_002c880b:\n      uVar5 = __first[2];" statement_identifier : (expression_statement "uVar5 = __first[2];" (assignment_expression "uVar5 = __first[2]" identifier = (subscript_expression "__first[2]" 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 "uVar9 = puVar7[-2];" (assignment_expression "uVar9 = puVar7[-2]" identifier = (subscript_expression "puVar7[-2]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = *__first;" (assignment_expression "uVar10 = *__first" identifier = (pointer_expression "*__first" * identifier)) ;) (expression_statement "puVar4 = __first + (((long)puVar7 - (long)__first >> 3) -\n                          ((long)puVar7 - (long)__first >> 0x3f) >> 1) * 2;" (assignment_expression "puVar4 = __first + (((long)puVar7 - (long)__first >> 3) -\n                          ((long)puVar7 - (long)__first >> 0x3f) >> 1) * 2" identifier = (binary_expression "__first + (((long)puVar7 - (long)__first >> 3) -\n                          ((long)puVar7 - (long)__first >> 0x3f) >> 1) * 2" identifier + (binary_expression "(((long)puVar7 - (long)__first >> 3) -\n                          ((long)puVar7 - (long)__first >> 0x3f) >> 1) * 2" (parenthesized_expression "(((long)puVar7 - (long)__first >> 3) -\n                          ((long)puVar7 - (long)__first >> 0x3f) >> 1)" ( (binary_expression "((long)puVar7 - (long)__first >> 3) -\n                          ((long)puVar7 - (long)__first >> 0x3f) >> 1" (binary_expression "((long)puVar7 - (long)__first >> 3) -\n                          ((long)puVar7 - (long)__first >> 0x3f)" (parenthesized_expression "((long)puVar7 - (long)__first >> 3)" ( (binary_expression "(long)puVar7 - (long)__first >> 3" (binary_expression "(long)puVar7 - (long)__first" (cast_expression "(long)puVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__first" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) )) - (parenthesized_expression "((long)puVar7 - (long)__first >> 0x3f)" ( (binary_expression "(long)puVar7 - (long)__first >> 0x3f" (binary_expression "(long)puVar7 - (long)__first" (cast_expression "(long)puVar7" ( (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))) ;) (expression_statement "uVar1 = *puVar4;" (assignment_expression "uVar1 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (if_statement "if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *__first = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = __first[1];\n          __first[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = __first[2];\n          uVar5 = *__first;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *__first = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = __first[1];\n          __first[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = __first[2];\n          uVar5 = *__first;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }" if (parenthesized_expression "(uVar5 < uVar1)" ( (binary_expression "uVar5 < uVar1" identifier < identifier) )) (compound_statement "{\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *__first = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = __first[1];\n          __first[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = __first[2];\n          uVar5 = *__first;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *__first = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = __first[1];\n          __first[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = __first[2];\n          uVar5 = *__first;\n          goto LAB_002c885f;\n        }\n      }" { (if_statement "if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *__first = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = __first[1];\n          __first[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = __first[2];\n          uVar5 = *__first;\n          goto LAB_002c885f;\n        }" if (parenthesized_expression "(uVar1 < uVar9)" ( (binary_expression "uVar1 < uVar9" identifier < identifier) )) (compound_statement "{\nLAB_002c89a0:\n          *__first = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = __first[1];\n          __first[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = __first[2];\n          uVar5 = *__first;\n          goto LAB_002c885f;\n        }" { (labeled_statement "LAB_002c89a0:\n          *__first = uVar1;" statement_identifier : (expression_statement "*__first = uVar1;" (assignment_expression "*__first = uVar1" (pointer_expression "*__first" * identifier) = identifier) ;)) (expression_statement "*puVar4 = uVar10;" (assignment_expression "*puVar4 = uVar10" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "uVar5 = __first[1];" (assignment_expression "uVar5 = __first[1]" identifier = (subscript_expression "__first[1]" identifier [ number_literal ])) ;) (expression_statement "__first[1] = puVar4[1];" (assignment_expression "__first[1] = puVar4[1]" (subscript_expression "__first[1]" identifier [ number_literal ]) = (subscript_expression "puVar4[1]" identifier [ number_literal ])) ;) (expression_statement "puVar4[1] = uVar5;" (assignment_expression "puVar4[1] = uVar5" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar10 = __first[2];" (assignment_expression "uVar10 = __first[2]" identifier = (subscript_expression "__first[2]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = *__first;" (assignment_expression "uVar5 = *__first" identifier = (pointer_expression "*__first" * identifier)) ;) (goto_statement "goto LAB_002c885f;" goto statement_identifier ;) })) (if_statement "if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *__first = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = __first[1];\n          __first[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = __first[2];\n          uVar5 = *__first;\n          goto LAB_002c885f;\n        }" if (parenthesized_expression "(uVar5 < uVar9)" ( (binary_expression "uVar5 < uVar9" identifier < identifier) )) (compound_statement "{\nLAB_002c88e0:\n          *__first = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = __first[1];\n          __first[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = __first[2];\n          uVar5 = *__first;\n          goto LAB_002c885f;\n        }" { (labeled_statement "LAB_002c88e0:\n          *__first = uVar9;" statement_identifier : (expression_statement "*__first = uVar9;" (assignment_expression "*__first = uVar9" (pointer_expression "*__first" * identifier) = identifier) ;)) (expression_statement "puVar7[-2] = uVar10;" (assignment_expression "puVar7[-2] = uVar10" (subscript_expression "puVar7[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar5 = __first[1];" (assignment_expression "uVar5 = __first[1]" identifier = (subscript_expression "__first[1]" identifier [ number_literal ])) ;) (expression_statement "__first[1] = puVar7[-1];" (assignment_expression "__first[1] = puVar7[-1]" (subscript_expression "__first[1]" identifier [ number_literal ]) = (subscript_expression "puVar7[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar7[-1] = uVar5;" (assignment_expression "puVar7[-1] = uVar5" (subscript_expression "puVar7[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar10 = __first[2];" (assignment_expression "uVar10 = __first[2]" identifier = (subscript_expression "__first[2]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = *__first;" (assignment_expression "uVar5 = *__first" identifier = (pointer_expression "*__first" * identifier)) ;) (goto_statement "goto LAB_002c885f;" goto statement_identifier ;) })) }) (else_clause "else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }" else (if_statement "if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }" if (parenthesized_expression "(uVar9 <= uVar5)" ( (binary_expression "uVar9 <= uVar5" identifier <= identifier) )) (compound_statement "{\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }" { (if_statement "if (uVar1 < uVar9) goto LAB_002c88e0;" if (parenthesized_expression "(uVar1 < uVar9)" ( (binary_expression "uVar1 < uVar9" identifier < identifier) )) (goto_statement "goto LAB_002c88e0;" goto statement_identifier ;)) (goto_statement "goto LAB_002c89a0;" goto statement_identifier ;) })))) (expression_statement "uVar9 = __first[1];" (assignment_expression "uVar9 = __first[1]" identifier = (subscript_expression "__first[1]" identifier [ number_literal ])) ;) (expression_statement "*__first = uVar5;" (assignment_expression "*__first = uVar5" (pointer_expression "*__first" * identifier) = identifier) ;) (expression_statement "__first[2] = uVar10;" (assignment_expression "__first[2] = uVar10" (subscript_expression "__first[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "__first[1] = __first[3];" (assignment_expression "__first[1] = __first[3]" (subscript_expression "__first[1]" identifier [ number_literal ]) = (subscript_expression "__first[3]" identifier [ number_literal ])) ;) (expression_statement "__first[3] = uVar9;" (assignment_expression "__first[3] = uVar9" (subscript_expression "__first[3]" identifier [ number_literal ]) = identifier) ;) (labeled_statement "LAB_002c885f:\n      uVar9 = puVar7[-2];" statement_identifier : (expression_statement "uVar9 = puVar7[-2];" (assignment_expression "uVar9 = puVar7[-2]" identifier = (subscript_expression "puVar7[-2]" identifier [ number_literal ])) ;)) (expression_statement "puVar4 = puVar7;" (assignment_expression "puVar4 = puVar7" identifier = identifier) ;) (expression_statement "puVar8 = __first + 4;" (assignment_expression "puVar8 = __first + 4" identifier = (binary_expression "__first + 4" identifier + number_literal)) ;) (expression_statement "__last = __first + 2;" (assignment_expression "__last = __first + 2" identifier = (binary_expression "__first + 2" identifier + number_literal)) ;) (do_statement "do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= __last) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *__first;\n        }\n        uVar10 = *puVar8;\n        __last = __last + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );" do (compound_statement "{\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= __last) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *__first;\n        }\n        uVar10 = *puVar8;\n        __last = __last + 2;\n        puVar8 = puVar8 + 2;\n      }" { (if_statement "if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= __last) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *__first;\n        }" if (parenthesized_expression "(uVar5 <= uVar10)" ( (binary_expression "uVar5 <= uVar10" identifier <= identifier) )) (compound_statement "{\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= __last) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *__first;\n        }" { (expression_statement "puVar3 = puVar4 + -2;" (assignment_expression "puVar3 = puVar4 + -2" identifier = (binary_expression "puVar4 + -2" identifier + number_literal)) ;) (if_statement "if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }" if (parenthesized_expression "(uVar5 < uVar9)" ( (binary_expression "uVar5 < uVar9" identifier < identifier) )) (compound_statement "{\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }" { (expression_statement "puVar4 = puVar4 + -4;" (assignment_expression "puVar4 = puVar4 + -4" identifier = (binary_expression "puVar4 + -4" identifier + number_literal)) ;) (do_statement "do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);" do (compound_statement "{\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            }" { (expression_statement "puVar3 = puVar4;" (assignment_expression "puVar3 = puVar4" identifier = identifier) ;) (expression_statement "uVar9 = *puVar3;" (assignment_expression "uVar9 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "puVar4 = puVar3 + -2;" (assignment_expression "puVar4 = puVar3 + -2" identifier = (binary_expression "puVar3 + -2" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar5 < uVar9)" ( (binary_expression "uVar5 < uVar9" identifier < identifier) )) ;) })) (expression_statement "puVar4 = puVar3;" (assignment_expression "puVar4 = puVar3" identifier = identifier) ;) (if_statement "if (puVar4 <= __last) goto LAB_002c8900;" if (parenthesized_expression "(puVar4 <= __last)" ( (binary_expression "puVar4 <= __last" identifier <= identifier) )) (goto_statement "goto LAB_002c8900;" goto statement_identifier ;)) (expression_statement "puVar8[-2] = uVar9;" (assignment_expression "puVar8[-2] = uVar9" (subscript_expression "puVar8[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar4 = uVar10;" (assignment_expression "*puVar4 = uVar10" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "uVar5 = puVar8[-1];" (assignment_expression "uVar5 = puVar8[-1]" identifier = (subscript_expression "puVar8[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar8[-1] = puVar4[1];" (assignment_expression "puVar8[-1] = puVar4[1]" (subscript_expression "puVar8[-1]" identifier [ number_literal ]) = (subscript_expression "puVar4[1]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = puVar4[-2];" (assignment_expression "uVar9 = puVar4[-2]" identifier = (subscript_expression "puVar4[-2]" identifier [ number_literal ])) ;) (expression_statement "puVar4[1] = uVar5;" (assignment_expression "puVar4[1] = uVar5" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar5 = *__first;" (assignment_expression "uVar5 = *__first" identifier = (pointer_expression "*__first" * identifier)) ;) })) (expression_statement "uVar10 = *puVar8;" (assignment_expression "uVar10 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "__last = __last + 2;" (assignment_expression "__last = __last + 2" identifier = (binary_expression "__last + 2" identifier + number_literal)) ;) (expression_statement "puVar8 = puVar8 + 2;" (assignment_expression "puVar8 = puVar8 + 2" identifier = (binary_expression "puVar8 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_002c8926:\n    for (lVar11 = (lVar6 >> 3) + -2 >> 1;\n        __adjust_heap<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std::vector<std::pair<unsigned_int,_unsigned_int>_>_>,_long_int,_std::pair<unsigned_int,_unsigned_int>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<32>_>_>\n                  (__first,lVar11,lVar6 >> 3,*(undefined8 *)(__first + lVar11 * 2)), lVar11 != 0;\n        lVar11 = lVar11 + -1) {\n    }" statement_identifier : (for_statement "for (lVar11 = (lVar6 >> 3) + -2 >> 1;\n        __adjust_heap<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std::vector<std::pair<unsigned_int,_unsigned_int>_>_>,_long_int,_std::pair<unsigned_int,_unsigned_int>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<32>_>_>\n                  (__first,lVar11,lVar6 >> 3,*(undefined8 *)(__first + lVar11 * 2)), lVar11 != 0;\n        lVar11 = lVar11 + -1) {\n    }" for ( (assignment_expression "lVar11 = (lVar6 >> 3) + -2 >> 1" identifier = (binary_expression "(lVar6 >> 3) + -2 >> 1" (binary_expression "(lVar6 >> 3) + -2" (parenthesized_expression "(lVar6 >> 3)" ( (binary_expression "lVar6 >> 3" identifier >> number_literal) )) + number_literal) >> number_literal)) ; (ERROR "__adjust_heap<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std::vector<std::pair<unsigned_int,_unsigned_int>_>_>,_long_int,_std::pair<unsigned_int,_unsigned_int>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::" (comma_expression "__adjust_heap<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std" (binary_expression "__adjust_heap<__gnu_cxx::__normal_iterator<std::pair<unsigned_int" (binary_expression "__adjust_heap<__gnu_cxx::__normal_iterator<std" (binary_expression "__adjust_heap<__gnu_cxx" identifier < identifier) (ERROR "::__normal_iterator" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_unsigned_int>*,_std" identifier > (pointer_expression "*,_std" * (ERROR "," ,) identifier))) : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "pair<unsigned_int,_unsigned_int>_>_>,_long_int,_std" (binary_expression "pair<unsigned_int" identifier < identifier) , (comma_expression "_unsigned_int>_>_>,_long_int,_std" (binary_expression "_unsigned_int>_>_>,_long_int" (binary_expression "_unsigned_int>_>_" (binary_expression "_unsigned_int>_" identifier > identifier) > identifier) > (ERROR "," ,) identifier) , identifier)) : : (comma_expression "pair<unsigned_int,_unsigned_int>,___gnu_cxx" (binary_expression "pair<unsigned_int" identifier < identifier) , (binary_expression "_unsigned_int>,___gnu_cxx" identifier > (ERROR "," ,) identifier)) : : identifier : : (binary_expression "_Iter_comp_iter<gold" identifier < identifier) : : identifier : :) (comma_expression "Fde_address_compare<32>_>_>\n                  (__first,lVar11,lVar6 >> 3,*(undefined8 *)(__first + lVar11 * 2)), lVar11 != 0" (binary_expression "Fde_address_compare<32>_>_>\n                  (__first,lVar11,lVar6 >> 3,*(undefined8 *)(__first + lVar11 * 2))" (binary_expression "Fde_address_compare<32>_>_" (binary_expression "Fde_address_compare<32>_" (binary_expression "Fde_address_compare<32" identifier < number_literal) > identifier) > identifier) > (parenthesized_expression "(__first,lVar11,lVar6 >> 3,*(undefined8 *)(__first + lVar11 * 2))" ( (comma_expression "__first,lVar11,lVar6 >> 3,*(undefined8 *)(__first + lVar11 * 2)" identifier , (comma_expression "lVar11,lVar6 >> 3,*(undefined8 *)(__first + lVar11 * 2)" identifier , (comma_expression "lVar6 >> 3,*(undefined8 *)(__first + lVar11 * 2)" (binary_expression "lVar6 >> 3" identifier >> number_literal) , (pointer_expression "*(undefined8 *)(__first + lVar11 * 2)" * (cast_expression "(undefined8 *)(__first + lVar11 * 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__first + lVar11 * 2)" ( (binary_expression "__first + lVar11 * 2" identifier + (binary_expression "lVar11 * 2" identifier * number_literal)) ))))))) ))) , (binary_expression "lVar11 != 0" identifier != number_literal)) ; (assignment_expression "lVar11 = lVar11 + -1" identifier = (binary_expression "lVar11 + -1" identifier + number_literal)) ) (compound_statement "{\n    }" { }))) (do_statement "do {\n      puVar7 = __last + -2;\n      uVar2 = *(undefined8 *)puVar7;\n      *puVar7 = *__first;\n      __last[-1] = __first[1];\n      __adjust_heap<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std::vector<std::pair<unsigned_int,_unsigned_int>_>_>,_long_int,_std::pair<unsigned_int,_unsigned_int>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<32>_>_>\n                (__first,0,(long)puVar7 - (long)__first >> 3,uVar2);\n      __last = puVar7;\n    } while (8 < (long)puVar7 - (long)__first);" do (compound_statement "{\n      puVar7 = __last + -2;\n      uVar2 = *(undefined8 *)puVar7;\n      *puVar7 = *__first;\n      __last[-1] = __first[1];\n      __adjust_heap<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std::vector<std::pair<unsigned_int,_unsigned_int>_>_>,_long_int,_std::pair<unsigned_int,_unsigned_int>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<32>_>_>\n                (__first,0,(long)puVar7 - (long)__first >> 3,uVar2);\n      __last = puVar7;\n    }" { (expression_statement "puVar7 = __last + -2;" (assignment_expression "puVar7 = __last + -2" identifier = (binary_expression "__last + -2" identifier + number_literal)) ;) (expression_statement "uVar2 = *(undefined8 *)puVar7;" (assignment_expression "uVar2 = *(undefined8 *)puVar7" identifier = (pointer_expression "*(undefined8 *)puVar7" * (cast_expression "(undefined8 *)puVar7" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*puVar7 = *__first;" (assignment_expression "*puVar7 = *__first" (pointer_expression "*puVar7" * identifier) = (pointer_expression "*__first" * identifier)) ;) (expression_statement "__last[-1] = __first[1];" (assignment_expression "__last[-1] = __first[1]" (subscript_expression "__last[-1]" identifier [ number_literal ]) = (subscript_expression "__first[1]" identifier [ number_literal ])) ;) (ERROR "__adjust_heap<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std::vector<std::pair<unsigned_int,_unsigned_int>_>_>,_long_int,_std::pair<unsigned_int,_unsigned_int>,___gnu_cxx::" (comma_expression "__adjust_heap<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std" (binary_expression "__adjust_heap<__gnu_cxx::__normal_iterator<std::pair<unsigned_int" (binary_expression "__adjust_heap<__gnu_cxx::__normal_iterator<std" (binary_expression "__adjust_heap<__gnu_cxx" identifier < identifier) (ERROR "::__normal_iterator" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_unsigned_int>*,_std" identifier > (pointer_expression "*,_std" * (ERROR "," ,) identifier))) : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "pair<unsigned_int,_unsigned_int>_>_>,_long_int,_std" (binary_expression "pair<unsigned_int" identifier < identifier) , (comma_expression "_unsigned_int>_>_>,_long_int,_std" (binary_expression "_unsigned_int>_>_>,_long_int" (binary_expression "_unsigned_int>_>_" (binary_expression "_unsigned_int>_" identifier > identifier) > identifier) > (ERROR "," ,) identifier) , identifier)) : : (comma_expression "pair<unsigned_int,_unsigned_int>,___gnu_cxx" (binary_expression "pair<unsigned_int" identifier < identifier) , (binary_expression "_unsigned_int>,___gnu_cxx" identifier > (ERROR "," ,) identifier)) : :) (labeled_statement "__ops::_Iter_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<32>_>_>\n                (__first,0,(long)puVar7 - (long)__first >> 3,uVar2);" statement_identifier (ERROR "::_Iter_comp_iter<gold:" : : (binary_expression "_Iter_comp_iter<gold" identifier < identifier) :) : (labeled_statement "Eh_frame_hdr::Fde_address_compare<32>_>_>\n                (__first,0,(long)puVar7 - (long)__first >> 3,uVar2);" statement_identifier : (ERROR ":" :) (expression_statement "Fde_address_compare<32>_>_>\n                (__first,0,(long)puVar7 - (long)__first >> 3,uVar2);" (binary_expression "Fde_address_compare<32>_>_>\n                (__first,0,(long)puVar7 - (long)__first >> 3,uVar2)" (binary_expression "Fde_address_compare<32>_>_" (binary_expression "Fde_address_compare<32>_" (binary_expression "Fde_address_compare<32" identifier < number_literal) > identifier) > identifier) > (parenthesized_expression "(__first,0,(long)puVar7 - (long)__first >> 3,uVar2)" ( (comma_expression "__first,0,(long)puVar7 - (long)__first >> 3,uVar2" identifier , (comma_expression "0,(long)puVar7 - (long)__first >> 3,uVar2" number_literal , (comma_expression "(long)puVar7 - (long)__first >> 3,uVar2" (binary_expression "(long)puVar7 - (long)__first >> 3" (binary_expression "(long)puVar7 - (long)__first" (cast_expression "(long)puVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__first" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) , identifier))) ))) ;))) (expression_statement "__last = puVar7;" (assignment_expression "__last = puVar7" identifier = identifier) ;) }) while (parenthesized_expression "(8 < (long)puVar7 - (long)__first)" ( (binary_expression "8 < (long)puVar7 - (long)__first" number_literal < (binary_expression "(long)puVar7 - (long)__first" (cast_expression "(long)puVar7" ( (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_002c8900:\n  __introsort_loop<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std::vector<std::pair<unsigned_int,_unsigned_int>_>_>,_long_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<32>_>_>\n            (__last,puVar7,__depth_limit);" statement_identifier : (ERROR "__introsort_loop<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std::vector<std::pair<unsigned_int,_unsigned_int>_>_>,_long_int,___gnu_cxx::" (comma_expression "__introsort_loop<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std" (binary_expression "__introsort_loop<__gnu_cxx::__normal_iterator<std::pair<unsigned_int" (binary_expression "__introsort_loop<__gnu_cxx::__normal_iterator<std" (binary_expression "__introsort_loop<__gnu_cxx" identifier < identifier) (ERROR "::__normal_iterator" : : identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_unsigned_int>*,_std" identifier > (pointer_expression "*,_std" * (ERROR "," ,) identifier))) : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "pair<unsigned_int,_unsigned_int>_>_>,_long_int,___gnu_cxx" (binary_expression "pair<unsigned_int" identifier < identifier) , (comma_expression "_unsigned_int>_>_>,_long_int,___gnu_cxx" (binary_expression "_unsigned_int>_>_>,_long_int" (binary_expression "_unsigned_int>_>_" (binary_expression "_unsigned_int>_" identifier > identifier) > identifier) > (ERROR "," ,) identifier) , identifier)) : :) (labeled_statement "__ops::_Iter_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<32>_>_>\n            (__last,puVar7,__depth_limit);" statement_identifier (ERROR "::_Iter_comp_iter<gold:" : : (binary_expression "_Iter_comp_iter<gold" identifier < identifier) :) : (labeled_statement "Eh_frame_hdr::Fde_address_compare<32>_>_>\n            (__last,puVar7,__depth_limit);" statement_identifier : (ERROR ":" :) (expression_statement "Fde_address_compare<32>_>_>\n            (__last,puVar7,__depth_limit);" (binary_expression "Fde_address_compare<32>_>_>\n            (__last,puVar7,__depth_limit)" (binary_expression "Fde_address_compare<32>_>_" (binary_expression "Fde_address_compare<32>_" (binary_expression "Fde_address_compare<32" identifier < number_literal) > identifier) > identifier) > (parenthesized_expression "(__last,puVar7,__depth_limit)" ( (comma_expression "__last,puVar7,__depth_limit" identifier , (comma_expression "puVar7,__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 < 0x81) {\n    return;\n  }" if (parenthesized_expression "(lVar6 < 0x81)" ( (binary_expression "lVar6 < 0x81" identifier < number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "puVar7 = __last;" (assignment_expression "puVar7 = __last" identifier = identifier) ;) (if_statement "if (__depth_limit == 0) goto LAB_002c8926;" if (parenthesized_expression "(__depth_limit == 0)" ( (binary_expression "__depth_limit == 0" identifier == number_literal) )) (goto_statement "goto LAB_002c8926;" goto statement_identifier ;)) (goto_statement "goto LAB_002c880b;" goto statement_identifier ;) (ERROR "}" }))
(translation_unit "void FUN_002c87d0(uint *param_1,uint *param_2,long param_3)\n\n{\n  uint uVar1;\n  undefined8 uVar2;\n  uint *puVar3;\n  uint *puVar4;\n  uint uVar5;\n  long lVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint uVar9;\n  uint uVar10;\n  long lVar11;\n  \n  lVar6 = (long)param_2 - (long)param_1;\n  if (0x80 < lVar6) {\n    if (param_3 != 0) {\n      puVar7 = param_2;\nLAB_002c880b:\n      uVar5 = param_1[2];\n      param_3 = param_3 + -1;\n      uVar9 = puVar7[-2];\n      uVar10 = *param_1;\n      puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2;\n      uVar1 = *puVar4;\n      if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }\n      uVar9 = param_1[1];\n      *param_1 = uVar5;\n      param_1[2] = uVar10;\n      param_1[1] = param_1[3];\n      param_1[3] = uVar9;\nLAB_002c885f:\n      uVar9 = puVar7[-2];\n      puVar4 = puVar7;\n      puVar8 = param_1 + 4;\n      param_2 = param_1 + 2;\n      do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );\n    }\nLAB_002c8926:\n    for (lVar11 = (lVar6 >> 3) + -2 >> 1;\n        FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2)), lVar11 != 0;\n        lVar11 = lVar11 + -1) {\n    }\n    do {\n      puVar7 = param_2 + -2;\n      uVar2 = *(undefined8 *)puVar7;\n      *puVar7 = *param_1;\n      param_2[-1] = param_1[1];\n      FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2);\n      param_2 = puVar7;\n    } while (8 < (long)puVar7 - (long)param_1);\n  }\n  return;\nLAB_002c8900:\n  FUN_002c87d0(param_2,puVar7,param_3);\n  lVar6 = (long)param_2 - (long)param_1;\n  if (lVar6 < 0x81) {\n    return;\n  }\n  puVar7 = param_2;\n  if (param_3 == 0) goto LAB_002c8926;\n  goto LAB_002c880b;\n}\n\n" (function_definition "void FUN_002c87d0(uint *param_1,uint *param_2,long param_3)\n\n{\n  uint uVar1;\n  undefined8 uVar2;\n  uint *puVar3;\n  uint *puVar4;\n  uint uVar5;\n  long lVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint uVar9;\n  uint uVar10;\n  long lVar11;\n  \n  lVar6 = (long)param_2 - (long)param_1;\n  if (0x80 < lVar6) {\n    if (param_3 != 0) {\n      puVar7 = param_2;\nLAB_002c880b:\n      uVar5 = param_1[2];\n      param_3 = param_3 + -1;\n      uVar9 = puVar7[-2];\n      uVar10 = *param_1;\n      puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2;\n      uVar1 = *puVar4;\n      if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }\n      uVar9 = param_1[1];\n      *param_1 = uVar5;\n      param_1[2] = uVar10;\n      param_1[1] = param_1[3];\n      param_1[3] = uVar9;\nLAB_002c885f:\n      uVar9 = puVar7[-2];\n      puVar4 = puVar7;\n      puVar8 = param_1 + 4;\n      param_2 = param_1 + 2;\n      do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );\n    }\nLAB_002c8926:\n    for (lVar11 = (lVar6 >> 3) + -2 >> 1;\n        FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2)), lVar11 != 0;\n        lVar11 = lVar11 + -1) {\n    }\n    do {\n      puVar7 = param_2 + -2;\n      uVar2 = *(undefined8 *)puVar7;\n      *puVar7 = *param_1;\n      param_2[-1] = param_1[1];\n      FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2);\n      param_2 = puVar7;\n    } while (8 < (long)puVar7 - (long)param_1);\n  }\n  return;\nLAB_002c8900:\n  FUN_002c87d0(param_2,puVar7,param_3);\n  lVar6 = (long)param_2 - (long)param_1;\n  if (lVar6 < 0x81) {\n    return;\n  }\n  puVar7 = param_2;\n  if (param_3 == 0) goto LAB_002c8926;\n  goto LAB_002c880b;\n}" primitive_type (function_declarator "FUN_002c87d0(uint *param_1,uint *param_2,long param_3)" identifier (parameter_list "(uint *param_1,uint *param_2,long param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  uint uVar1;\n  undefined8 uVar2;\n  uint *puVar3;\n  uint *puVar4;\n  uint uVar5;\n  long lVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint uVar9;\n  uint uVar10;\n  long lVar11;\n  \n  lVar6 = (long)param_2 - (long)param_1;\n  if (0x80 < lVar6) {\n    if (param_3 != 0) {\n      puVar7 = param_2;\nLAB_002c880b:\n      uVar5 = param_1[2];\n      param_3 = param_3 + -1;\n      uVar9 = puVar7[-2];\n      uVar10 = *param_1;\n      puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2;\n      uVar1 = *puVar4;\n      if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }\n      uVar9 = param_1[1];\n      *param_1 = uVar5;\n      param_1[2] = uVar10;\n      param_1[1] = param_1[3];\n      param_1[3] = uVar9;\nLAB_002c885f:\n      uVar9 = puVar7[-2];\n      puVar4 = puVar7;\n      puVar8 = param_1 + 4;\n      param_2 = param_1 + 2;\n      do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );\n    }\nLAB_002c8926:\n    for (lVar11 = (lVar6 >> 3) + -2 >> 1;\n        FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2)), lVar11 != 0;\n        lVar11 = lVar11 + -1) {\n    }\n    do {\n      puVar7 = param_2 + -2;\n      uVar2 = *(undefined8 *)puVar7;\n      *puVar7 = *param_1;\n      param_2[-1] = param_1[1];\n      FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2);\n      param_2 = puVar7;\n    } while (8 < (long)puVar7 - (long)param_1);\n  }\n  return;\nLAB_002c8900:\n  FUN_002c87d0(param_2,puVar7,param_3);\n  lVar6 = (long)param_2 - (long)param_1;\n  if (lVar6 < 0x81) {\n    return;\n  }\n  puVar7 = param_2;\n  if (param_3 == 0) goto LAB_002c8926;\n  goto LAB_002c880b;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "long lVar11;" (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 (0x80 < lVar6) {\n    if (param_3 != 0) {\n      puVar7 = param_2;\nLAB_002c880b:\n      uVar5 = param_1[2];\n      param_3 = param_3 + -1;\n      uVar9 = puVar7[-2];\n      uVar10 = *param_1;\n      puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2;\n      uVar1 = *puVar4;\n      if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }\n      uVar9 = param_1[1];\n      *param_1 = uVar5;\n      param_1[2] = uVar10;\n      param_1[1] = param_1[3];\n      param_1[3] = uVar9;\nLAB_002c885f:\n      uVar9 = puVar7[-2];\n      puVar4 = puVar7;\n      puVar8 = param_1 + 4;\n      param_2 = param_1 + 2;\n      do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );\n    }\nLAB_002c8926:\n    for (lVar11 = (lVar6 >> 3) + -2 >> 1;\n        FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2)), lVar11 != 0;\n        lVar11 = lVar11 + -1) {\n    }\n    do {\n      puVar7 = param_2 + -2;\n      uVar2 = *(undefined8 *)puVar7;\n      *puVar7 = *param_1;\n      param_2[-1] = param_1[1];\n      FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2);\n      param_2 = puVar7;\n    } while (8 < (long)puVar7 - (long)param_1);\n  }" if (parenthesized_expression "(0x80 < lVar6)" ( (binary_expression "0x80 < lVar6" number_literal < identifier) )) (compound_statement "{\n    if (param_3 != 0) {\n      puVar7 = param_2;\nLAB_002c880b:\n      uVar5 = param_1[2];\n      param_3 = param_3 + -1;\n      uVar9 = puVar7[-2];\n      uVar10 = *param_1;\n      puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2;\n      uVar1 = *puVar4;\n      if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }\n      uVar9 = param_1[1];\n      *param_1 = uVar5;\n      param_1[2] = uVar10;\n      param_1[1] = param_1[3];\n      param_1[3] = uVar9;\nLAB_002c885f:\n      uVar9 = puVar7[-2];\n      puVar4 = puVar7;\n      puVar8 = param_1 + 4;\n      param_2 = param_1 + 2;\n      do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );\n    }\nLAB_002c8926:\n    for (lVar11 = (lVar6 >> 3) + -2 >> 1;\n        FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2)), lVar11 != 0;\n        lVar11 = lVar11 + -1) {\n    }\n    do {\n      puVar7 = param_2 + -2;\n      uVar2 = *(undefined8 *)puVar7;\n      *puVar7 = *param_1;\n      param_2[-1] = param_1[1];\n      FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2);\n      param_2 = puVar7;\n    } while (8 < (long)puVar7 - (long)param_1);\n  }" { (if_statement "if (param_3 != 0) {\n      puVar7 = param_2;\nLAB_002c880b:\n      uVar5 = param_1[2];\n      param_3 = param_3 + -1;\n      uVar9 = puVar7[-2];\n      uVar10 = *param_1;\n      puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2;\n      uVar1 = *puVar4;\n      if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }\n      uVar9 = param_1[1];\n      *param_1 = uVar5;\n      param_1[2] = uVar10;\n      param_1[1] = param_1[3];\n      param_1[3] = uVar9;\nLAB_002c885f:\n      uVar9 = puVar7[-2];\n      puVar4 = puVar7;\n      puVar8 = param_1 + 4;\n      param_2 = param_1 + 2;\n      do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );\n    }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar7 = param_2;\nLAB_002c880b:\n      uVar5 = param_1[2];\n      param_3 = param_3 + -1;\n      uVar9 = puVar7[-2];\n      uVar10 = *param_1;\n      puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2;\n      uVar1 = *puVar4;\n      if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }\n      uVar9 = param_1[1];\n      *param_1 = uVar5;\n      param_1[2] = uVar10;\n      param_1[1] = param_1[3];\n      param_1[3] = uVar9;\nLAB_002c885f:\n      uVar9 = puVar7[-2];\n      puVar4 = puVar7;\n      puVar8 = param_1 + 4;\n      param_2 = param_1 + 2;\n      do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );\n    }" { (expression_statement "puVar7 = param_2;" (assignment_expression "puVar7 = param_2" identifier = identifier) ;) (labeled_statement "LAB_002c880b:\n      uVar5 = param_1[2];" statement_identifier : (expression_statement "uVar5 = param_1[2];" (assignment_expression "uVar5 = param_1[2]" identifier = (subscript_expression "param_1[2]" 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 "uVar9 = puVar7[-2];" (assignment_expression "uVar9 = puVar7[-2]" identifier = (subscript_expression "puVar7[-2]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = *param_1;" (assignment_expression "uVar10 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2;" (assignment_expression "puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2" identifier = (binary_expression "param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2" identifier + (binary_expression "(((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2" (parenthesized_expression "(((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1)" ( (binary_expression "((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1" (binary_expression "((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f)" (parenthesized_expression "((long)puVar7 - (long)param_1 >> 3)" ( (binary_expression "(long)puVar7 - (long)param_1 >> 3" (binary_expression "(long)puVar7 - (long)param_1" (cast_expression "(long)puVar7" ( (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) )) - (parenthesized_expression "((long)puVar7 - (long)param_1 >> 0x3f)" ( (binary_expression "(long)puVar7 - (long)param_1 >> 0x3f" (binary_expression "(long)puVar7 - (long)param_1" (cast_expression "(long)puVar7" ( (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))) ;) (expression_statement "uVar1 = *puVar4;" (assignment_expression "uVar1 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (if_statement "if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }" if (parenthesized_expression "(uVar5 < uVar1)" ( (binary_expression "uVar5 < uVar1" identifier < identifier) )) (compound_statement "{\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }" { (if_statement "if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }" if (parenthesized_expression "(uVar1 < uVar9)" ( (binary_expression "uVar1 < uVar9" identifier < identifier) )) (compound_statement "{\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }" { (labeled_statement "LAB_002c89a0:\n          *param_1 = uVar1;" statement_identifier : (expression_statement "*param_1 = uVar1;" (assignment_expression "*param_1 = uVar1" (pointer_expression "*param_1" * identifier) = identifier) ;)) (expression_statement "*puVar4 = uVar10;" (assignment_expression "*puVar4 = uVar10" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "uVar5 = param_1[1];" (assignment_expression "uVar5 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "param_1[1] = puVar4[1];" (assignment_expression "param_1[1] = puVar4[1]" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (subscript_expression "puVar4[1]" identifier [ number_literal ])) ;) (expression_statement "puVar4[1] = uVar5;" (assignment_expression "puVar4[1] = uVar5" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar10 = param_1[2];" (assignment_expression "uVar10 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (goto_statement "goto LAB_002c885f;" goto statement_identifier ;) })) (if_statement "if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }" if (parenthesized_expression "(uVar5 < uVar9)" ( (binary_expression "uVar5 < uVar9" identifier < identifier) )) (compound_statement "{\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }" { (labeled_statement "LAB_002c88e0:\n          *param_1 = uVar9;" statement_identifier : (expression_statement "*param_1 = uVar9;" (assignment_expression "*param_1 = uVar9" (pointer_expression "*param_1" * identifier) = identifier) ;)) (expression_statement "puVar7[-2] = uVar10;" (assignment_expression "puVar7[-2] = uVar10" (subscript_expression "puVar7[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar5 = param_1[1];" (assignment_expression "uVar5 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "param_1[1] = puVar7[-1];" (assignment_expression "param_1[1] = puVar7[-1]" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (subscript_expression "puVar7[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar7[-1] = uVar5;" (assignment_expression "puVar7[-1] = uVar5" (subscript_expression "puVar7[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar10 = param_1[2];" (assignment_expression "uVar10 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (goto_statement "goto LAB_002c885f;" goto statement_identifier ;) })) }) (else_clause "else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }" else (if_statement "if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }" if (parenthesized_expression "(uVar9 <= uVar5)" ( (binary_expression "uVar9 <= uVar5" identifier <= identifier) )) (compound_statement "{\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }" { (if_statement "if (uVar1 < uVar9) goto LAB_002c88e0;" if (parenthesized_expression "(uVar1 < uVar9)" ( (binary_expression "uVar1 < uVar9" identifier < identifier) )) (goto_statement "goto LAB_002c88e0;" goto statement_identifier ;)) (goto_statement "goto LAB_002c89a0;" goto statement_identifier ;) })))) (expression_statement "uVar9 = param_1[1];" (assignment_expression "uVar9 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "*param_1 = uVar5;" (assignment_expression "*param_1 = uVar5" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[2] = uVar10;" (assignment_expression "param_1[2] = uVar10" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[1] = param_1[3];" (assignment_expression "param_1[1] = param_1[3]" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "param_1[3] = uVar9;" (assignment_expression "param_1[3] = uVar9" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (labeled_statement "LAB_002c885f:\n      uVar9 = puVar7[-2];" statement_identifier : (expression_statement "uVar9 = puVar7[-2];" (assignment_expression "uVar9 = puVar7[-2]" identifier = (subscript_expression "puVar7[-2]" identifier [ number_literal ])) ;)) (expression_statement "puVar4 = puVar7;" (assignment_expression "puVar4 = puVar7" identifier = identifier) ;) (expression_statement "puVar8 = param_1 + 4;" (assignment_expression "puVar8 = param_1 + 4" identifier = (binary_expression "param_1 + 4" identifier + number_literal)) ;) (expression_statement "param_2 = param_1 + 2;" (assignment_expression "param_2 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (do_statement "do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );" do (compound_statement "{\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\n      }" { (if_statement "if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }" if (parenthesized_expression "(uVar5 <= uVar10)" ( (binary_expression "uVar5 <= uVar10" identifier <= identifier) )) (compound_statement "{\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }" { (expression_statement "puVar3 = puVar4 + -2;" (assignment_expression "puVar3 = puVar4 + -2" identifier = (binary_expression "puVar4 + -2" identifier + number_literal)) ;) (if_statement "if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }" if (parenthesized_expression "(uVar5 < uVar9)" ( (binary_expression "uVar5 < uVar9" identifier < identifier) )) (compound_statement "{\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }" { (expression_statement "puVar4 = puVar4 + -4;" (assignment_expression "puVar4 = puVar4 + -4" identifier = (binary_expression "puVar4 + -4" identifier + number_literal)) ;) (do_statement "do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);" do (compound_statement "{\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            }" { (expression_statement "puVar3 = puVar4;" (assignment_expression "puVar3 = puVar4" identifier = identifier) ;) (expression_statement "uVar9 = *puVar3;" (assignment_expression "uVar9 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "puVar4 = puVar3 + -2;" (assignment_expression "puVar4 = puVar3 + -2" identifier = (binary_expression "puVar3 + -2" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar5 < uVar9)" ( (binary_expression "uVar5 < uVar9" identifier < identifier) )) ;) })) (expression_statement "puVar4 = puVar3;" (assignment_expression "puVar4 = puVar3" identifier = identifier) ;) (if_statement "if (puVar4 <= param_2) goto LAB_002c8900;" if (parenthesized_expression "(puVar4 <= param_2)" ( (binary_expression "puVar4 <= param_2" identifier <= identifier) )) (goto_statement "goto LAB_002c8900;" goto statement_identifier ;)) (expression_statement "puVar8[-2] = uVar9;" (assignment_expression "puVar8[-2] = uVar9" (subscript_expression "puVar8[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar4 = uVar10;" (assignment_expression "*puVar4 = uVar10" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "uVar5 = puVar8[-1];" (assignment_expression "uVar5 = puVar8[-1]" identifier = (subscript_expression "puVar8[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar8[-1] = puVar4[1];" (assignment_expression "puVar8[-1] = puVar4[1]" (subscript_expression "puVar8[-1]" identifier [ number_literal ]) = (subscript_expression "puVar4[1]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = puVar4[-2];" (assignment_expression "uVar9 = puVar4[-2]" identifier = (subscript_expression "puVar4[-2]" identifier [ number_literal ])) ;) (expression_statement "puVar4[1] = uVar5;" (assignment_expression "puVar4[1] = uVar5" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) })) (expression_statement "uVar10 = *puVar8;" (assignment_expression "uVar10 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "param_2 = param_2 + 2;" (assignment_expression "param_2 = param_2 + 2" identifier = (binary_expression "param_2 + 2" identifier + number_literal)) ;) (expression_statement "puVar8 = puVar8 + 2;" (assignment_expression "puVar8 = puVar8 + 2" identifier = (binary_expression "puVar8 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_002c8926:\n    for (lVar11 = (lVar6 >> 3) + -2 >> 1;\n        FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2)), lVar11 != 0;\n        lVar11 = lVar11 + -1) {\n    }" statement_identifier : (for_statement "for (lVar11 = (lVar6 >> 3) + -2 >> 1;\n        FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2)), lVar11 != 0;\n        lVar11 = lVar11 + -1) {\n    }" for ( (assignment_expression "lVar11 = (lVar6 >> 3) + -2 >> 1" identifier = (binary_expression "(lVar6 >> 3) + -2 >> 1" (binary_expression "(lVar6 >> 3) + -2" (parenthesized_expression "(lVar6 >> 3)" ( (binary_expression "lVar6 >> 3" identifier >> number_literal) )) + number_literal) >> number_literal)) ; (comma_expression "FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2)), lVar11 != 0" (call_expression "FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2))" identifier (argument_list "(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2))" ( identifier , identifier , (binary_expression "lVar6 >> 3" identifier >> number_literal) , (pointer_expression "*(undefined8 *)(param_1 + lVar11 * 2)" * (cast_expression "(undefined8 *)(param_1 + lVar11 * 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar11 * 2)" ( (binary_expression "param_1 + lVar11 * 2" identifier + (binary_expression "lVar11 * 2" identifier * number_literal)) )))) ))) , (binary_expression "lVar11 != 0" identifier != number_literal)) ; (assignment_expression "lVar11 = lVar11 + -1" identifier = (binary_expression "lVar11 + -1" identifier + number_literal)) ) (compound_statement "{\n    }" { }))) (do_statement "do {\n      puVar7 = param_2 + -2;\n      uVar2 = *(undefined8 *)puVar7;\n      *puVar7 = *param_1;\n      param_2[-1] = param_1[1];\n      FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2);\n      param_2 = puVar7;\n    } while (8 < (long)puVar7 - (long)param_1);" do (compound_statement "{\n      puVar7 = param_2 + -2;\n      uVar2 = *(undefined8 *)puVar7;\n      *puVar7 = *param_1;\n      param_2[-1] = param_1[1];\n      FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2);\n      param_2 = puVar7;\n    }" { (expression_statement "puVar7 = param_2 + -2;" (assignment_expression "puVar7 = param_2 + -2" identifier = (binary_expression "param_2 + -2" identifier + number_literal)) ;) (expression_statement "uVar2 = *(undefined8 *)puVar7;" (assignment_expression "uVar2 = *(undefined8 *)puVar7" identifier = (pointer_expression "*(undefined8 *)puVar7" * (cast_expression "(undefined8 *)puVar7" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*puVar7 = *param_1;" (assignment_expression "*puVar7 = *param_1" (pointer_expression "*puVar7" * identifier) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "param_2[-1] = param_1[1];" (assignment_expression "param_2[-1] = param_1[1]" (subscript_expression "param_2[-1]" identifier [ number_literal ]) = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2);" (call_expression "FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2)" identifier (argument_list "(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2)" ( identifier , number_literal , (binary_expression "(long)puVar7 - (long)param_1 >> 3" (binary_expression "(long)puVar7 - (long)param_1" (cast_expression "(long)puVar7" ( (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) , identifier ))) ;) (expression_statement "param_2 = puVar7;" (assignment_expression "param_2 = puVar7" identifier = identifier) ;) }) while (parenthesized_expression "(8 < (long)puVar7 - (long)param_1)" ( (binary_expression "8 < (long)puVar7 - (long)param_1" number_literal < (binary_expression "(long)puVar7 - (long)param_1" (cast_expression "(long)puVar7" ( (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_002c8900:\n  FUN_002c87d0(param_2,puVar7,param_3);" statement_identifier : (expression_statement "FUN_002c87d0(param_2,puVar7,param_3);" (call_expression "FUN_002c87d0(param_2,puVar7,param_3)" identifier (argument_list "(param_2,puVar7,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 < 0x81) {\n    return;\n  }" if (parenthesized_expression "(lVar6 < 0x81)" ( (binary_expression "lVar6 < 0x81" identifier < number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "puVar7 = param_2;" (assignment_expression "puVar7 = param_2" identifier = identifier) ;) (if_statement "if (param_3 == 0) goto LAB_002c8926;" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_002c8926;" goto statement_identifier ;)) (goto_statement "goto LAB_002c880b;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE 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 = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_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) )) - (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))) ;) (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 { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (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 = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (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 = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (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 = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (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 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)) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (labeled_statement statement_identifier : (for_statement for ( (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + LIT) >> LIT)) ; (comma_expression (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT >> LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ))) , (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) >> LIT) , IDENT ))) ;) (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_002c87d0(uint *param_1,uint *param_2,long param_3)\n\n{\n  uint uVar1;\n  undefined8 uVar2;\n  uint *puVar3;\n  uint *puVar4;\n  uint uVar5;\n  long lVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint uVar9;\n  uint uVar10;\n  long lVar11;\n  \n  lVar6 = (long)param_2 - (long)param_1;\n  if (0x80 < lVar6) {\n    if (param_3 != 0) {\n      puVar7 = param_2;\nLAB_002c880b:\n      uVar5 = param_1[2];\n      param_3 = param_3 + -1;\n      uVar9 = puVar7[-2];\n      uVar10 = *param_1;\n      puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2;\n      uVar1 = *puVar4;\n      if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }\n      uVar9 = param_1[1];\n      *param_1 = uVar5;\n      param_1[2] = uVar10;\n      param_1[1] = param_1[3];\n      param_1[3] = uVar9;\nLAB_002c885f:\n      uVar9 = puVar7[-2];\n      puVar4 = puVar7;\n      puVar8 = param_1 + 4;\n      param_2 = param_1 + 2;\n      do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );\n    }\nLAB_002c8926:\n    for (lVar11 = (lVar6 >> 3) + -2 >> 1;\n        FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2)), lVar11 != 0;\n        lVar11 = lVar11 + -1) {\n    }\n    do {\n      puVar7 = param_2 + -2;\n      uVar2 = *(undefined8 *)puVar7;\n      *puVar7 = *param_1;\n      param_2[-1] = param_1[1];\n      FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2);\n      param_2 = puVar7;\n    } while (8 < (long)puVar7 - (long)param_1);\n  }\n  return;\nLAB_002c8900:\n  FUN_002c87d0(param_2,puVar7,param_3);\n  lVar6 = (long)param_2 - (long)param_1;\n  if (lVar6 < 0x81) {\n    return;\n  }\n  puVar7 = param_2;\n  if (param_3 == 0) goto LAB_002c8926;\n  goto LAB_002c880b;\n}" (primitive_type "void") (function_declarator "FUN_002c87d0(uint *param_1,uint *param_2,long param_3)" (identifier "FUN_002c87d0") (parameter_list "(uint *param_1,uint *param_2,long param_3)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) () ")"))) (compound_statement "{\n  uint uVar1;\n  undefined8 uVar2;\n  uint *puVar3;\n  uint *puVar4;\n  uint uVar5;\n  long lVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint uVar9;\n  uint uVar10;\n  long lVar11;\n  \n  lVar6 = (long)param_2 - (long)param_1;\n  if (0x80 < lVar6) {\n    if (param_3 != 0) {\n      puVar7 = param_2;\nLAB_002c880b:\n      uVar5 = param_1[2];\n      param_3 = param_3 + -1;\n      uVar9 = puVar7[-2];\n      uVar10 = *param_1;\n      puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2;\n      uVar1 = *puVar4;\n      if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }\n      uVar9 = param_1[1];\n      *param_1 = uVar5;\n      param_1[2] = uVar10;\n      param_1[1] = param_1[3];\n      param_1[3] = uVar9;\nLAB_002c885f:\n      uVar9 = puVar7[-2];\n      puVar4 = puVar7;\n      puVar8 = param_1 + 4;\n      param_2 = param_1 + 2;\n      do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );\n    }\nLAB_002c8926:\n    for (lVar11 = (lVar6 >> 3) + -2 >> 1;\n        FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2)), lVar11 != 0;\n        lVar11 = lVar11 + -1) {\n    }\n    do {\n      puVar7 = param_2 + -2;\n      uVar2 = *(undefined8 *)puVar7;\n      *puVar7 = *param_1;\n      param_2[-1] = param_1[1];\n      FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2);\n      param_2 = puVar7;\n    } while (8 < (long)puVar7 - (long)param_1);\n  }\n  return;\nLAB_002c8900:\n  FUN_002c87d0(param_2,puVar7,param_3);\n  lVar6 = (long)param_2 - (long)param_1;\n  if (lVar6 < 0x81) {\n    return;\n  }\n  puVar7 = param_2;\n  if (param_3 == 0) goto LAB_002c8926;\n  goto LAB_002c880b;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "uint *puVar3;" (type_identifier "uint") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "uint *puVar4;" (type_identifier "uint") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "uint *puVar7;" (type_identifier "uint") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "uint *puVar8;" (type_identifier "uint") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "long lVar11;" (sized_type_specifier "long" (long "long")) (identifier "lVar11") (; ";")) (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 (0x80 < lVar6) {\n    if (param_3 != 0) {\n      puVar7 = param_2;\nLAB_002c880b:\n      uVar5 = param_1[2];\n      param_3 = param_3 + -1;\n      uVar9 = puVar7[-2];\n      uVar10 = *param_1;\n      puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2;\n      uVar1 = *puVar4;\n      if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }\n      uVar9 = param_1[1];\n      *param_1 = uVar5;\n      param_1[2] = uVar10;\n      param_1[1] = param_1[3];\n      param_1[3] = uVar9;\nLAB_002c885f:\n      uVar9 = puVar7[-2];\n      puVar4 = puVar7;\n      puVar8 = param_1 + 4;\n      param_2 = param_1 + 2;\n      do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );\n    }\nLAB_002c8926:\n    for (lVar11 = (lVar6 >> 3) + -2 >> 1;\n        FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2)), lVar11 != 0;\n        lVar11 = lVar11 + -1) {\n    }\n    do {\n      puVar7 = param_2 + -2;\n      uVar2 = *(undefined8 *)puVar7;\n      *puVar7 = *param_1;\n      param_2[-1] = param_1[1];\n      FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2);\n      param_2 = puVar7;\n    } while (8 < (long)puVar7 - (long)param_1);\n  }" (if "if") (parenthesized_expression "(0x80 < lVar6)" (( "(") (binary_expression "0x80 < lVar6" (number_literal "0x80") (< "<") (identifier "lVar6")) () ")")) (compound_statement "{\n    if (param_3 != 0) {\n      puVar7 = param_2;\nLAB_002c880b:\n      uVar5 = param_1[2];\n      param_3 = param_3 + -1;\n      uVar9 = puVar7[-2];\n      uVar10 = *param_1;\n      puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2;\n      uVar1 = *puVar4;\n      if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }\n      uVar9 = param_1[1];\n      *param_1 = uVar5;\n      param_1[2] = uVar10;\n      param_1[1] = param_1[3];\n      param_1[3] = uVar9;\nLAB_002c885f:\n      uVar9 = puVar7[-2];\n      puVar4 = puVar7;\n      puVar8 = param_1 + 4;\n      param_2 = param_1 + 2;\n      do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );\n    }\nLAB_002c8926:\n    for (lVar11 = (lVar6 >> 3) + -2 >> 1;\n        FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2)), lVar11 != 0;\n        lVar11 = lVar11 + -1) {\n    }\n    do {\n      puVar7 = param_2 + -2;\n      uVar2 = *(undefined8 *)puVar7;\n      *puVar7 = *param_1;\n      param_2[-1] = param_1[1];\n      FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2);\n      param_2 = puVar7;\n    } while (8 < (long)puVar7 - (long)param_1);\n  }" ({ "{") (if_statement "if (param_3 != 0) {\n      puVar7 = param_2;\nLAB_002c880b:\n      uVar5 = param_1[2];\n      param_3 = param_3 + -1;\n      uVar9 = puVar7[-2];\n      uVar10 = *param_1;\n      puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2;\n      uVar1 = *puVar4;\n      if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }\n      uVar9 = param_1[1];\n      *param_1 = uVar5;\n      param_1[2] = uVar10;\n      param_1[1] = param_1[3];\n      param_1[3] = uVar9;\nLAB_002c885f:\n      uVar9 = puVar7[-2];\n      puVar4 = puVar7;\n      puVar8 = param_1 + 4;\n      param_2 = param_1 + 2;\n      do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\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      puVar7 = param_2;\nLAB_002c880b:\n      uVar5 = param_1[2];\n      param_3 = param_3 + -1;\n      uVar9 = puVar7[-2];\n      uVar10 = *param_1;\n      puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2;\n      uVar1 = *puVar4;\n      if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }\n      uVar9 = param_1[1];\n      *param_1 = uVar5;\n      param_1[2] = uVar10;\n      param_1[1] = param_1[3];\n      param_1[3] = uVar9;\nLAB_002c885f:\n      uVar9 = puVar7[-2];\n      puVar4 = puVar7;\n      puVar8 = param_1 + 4;\n      param_2 = param_1 + 2;\n      do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );\n    }" ({ "{") (expression_statement "puVar7 = param_2;" (assignment_expression "puVar7 = param_2" (identifier "puVar7") (= "=") (identifier "param_2")) (; ";")) (labeled_statement "LAB_002c880b:\n      uVar5 = param_1[2];" (statement_identifier "LAB_002c880b") (: ":") (expression_statement "uVar5 = param_1[2];" (assignment_expression "uVar5 = param_1[2]" (identifier "uVar5") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";"))) (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 "uVar9 = puVar7[-2];" (assignment_expression "uVar9 = puVar7[-2]" (identifier "uVar9") (= "=") (subscript_expression "puVar7[-2]" (identifier "puVar7") ([ "[") (number_literal "-2") (] "]"))) (; ";")) (expression_statement "uVar10 = *param_1;" (assignment_expression "uVar10 = *param_1" (identifier "uVar10") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2;" (assignment_expression "puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2" (identifier "puVar4") (= "=") (binary_expression "param_1 + (((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2" (identifier "param_1") (+ "+") (binary_expression "(((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2" (parenthesized_expression "(((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1)" (( "(") (binary_expression "((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1" (binary_expression "((long)puVar7 - (long)param_1 >> 3) -\n                          ((long)puVar7 - (long)param_1 >> 0x3f)" (parenthesized_expression "((long)puVar7 - (long)param_1 >> 3)" (( "(") (binary_expression "(long)puVar7 - (long)param_1 >> 3" (binary_expression "(long)puVar7 - (long)param_1" (cast_expression "(long)puVar7" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar7")) (- "-") (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1"))) (>> ">>") (number_literal "3")) () ")")) (- "-") (parenthesized_expression "((long)puVar7 - (long)param_1 >> 0x3f)" (( "(") (binary_expression "(long)puVar7 - (long)param_1 >> 0x3f" (binary_expression "(long)puVar7 - (long)param_1" (cast_expression "(long)puVar7" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar7")) (- "-") (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1"))) (>> ">>") (number_literal "0x3f")) () ")"))) (>> ">>") (number_literal "1")) () ")")) (* "*") (number_literal "2")))) (; ";")) (expression_statement "uVar1 = *puVar4;" (assignment_expression "uVar1 = *puVar4" (identifier "uVar1") (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (if_statement "if (uVar5 < uVar1) {\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }\n      else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }" (if "if") (parenthesized_expression "(uVar5 < uVar1)" (( "(") (binary_expression "uVar5 < uVar1" (identifier "uVar5") (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n        if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n        if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }\n      }" ({ "{") (if_statement "if (uVar1 < uVar9) {\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }" (if "if") (parenthesized_expression "(uVar1 < uVar9)" (( "(") (binary_expression "uVar1 < uVar9" (identifier "uVar1") (< "<") (identifier "uVar9")) () ")")) (compound_statement "{\nLAB_002c89a0:\n          *param_1 = uVar1;\n          *puVar4 = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar4[1];\n          puVar4[1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }" ({ "{") (labeled_statement "LAB_002c89a0:\n          *param_1 = uVar1;" (statement_identifier "LAB_002c89a0") (: ":") (expression_statement "*param_1 = uVar1;" (assignment_expression "*param_1 = uVar1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar1")) (; ";"))) (expression_statement "*puVar4 = uVar10;" (assignment_expression "*puVar4 = uVar10" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "uVar5 = param_1[1];" (assignment_expression "uVar5 = param_1[1]" (identifier "uVar5") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "param_1[1] = puVar4[1];" (assignment_expression "param_1[1] = puVar4[1]" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar4[1] = uVar5;" (assignment_expression "puVar4[1] = uVar5" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "uVar10 = param_1[2];" (assignment_expression "uVar10 = param_1[2]" (identifier "uVar10") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" (identifier "uVar5") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (goto_statement "goto LAB_002c885f;" (goto "goto") (statement_identifier "LAB_002c885f") (; ";")) (} "}"))) (if_statement "if (uVar5 < uVar9) {\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }" (if "if") (parenthesized_expression "(uVar5 < uVar9)" (( "(") (binary_expression "uVar5 < uVar9" (identifier "uVar5") (< "<") (identifier "uVar9")) () ")")) (compound_statement "{\nLAB_002c88e0:\n          *param_1 = uVar9;\n          puVar7[-2] = uVar10;\n          uVar5 = param_1[1];\n          param_1[1] = puVar7[-1];\n          puVar7[-1] = uVar5;\n          uVar10 = param_1[2];\n          uVar5 = *param_1;\n          goto LAB_002c885f;\n        }" ({ "{") (labeled_statement "LAB_002c88e0:\n          *param_1 = uVar9;" (statement_identifier "LAB_002c88e0") (: ":") (expression_statement "*param_1 = uVar9;" (assignment_expression "*param_1 = uVar9" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar9")) (; ";"))) (expression_statement "puVar7[-2] = uVar10;" (assignment_expression "puVar7[-2] = uVar10" (subscript_expression "puVar7[-2]" (identifier "puVar7") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "uVar5 = param_1[1];" (assignment_expression "uVar5 = param_1[1]" (identifier "uVar5") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "param_1[1] = puVar7[-1];" (assignment_expression "param_1[1] = puVar7[-1]" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "puVar7[-1]" (identifier "puVar7") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "puVar7[-1] = uVar5;" (assignment_expression "puVar7[-1] = uVar5" (subscript_expression "puVar7[-1]" (identifier "puVar7") ([ "[") (number_literal "-1") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "uVar10 = param_1[2];" (assignment_expression "uVar10 = param_1[2]" (identifier "uVar10") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" (identifier "uVar5") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (goto_statement "goto LAB_002c885f;" (goto "goto") (statement_identifier "LAB_002c885f") (; ";")) (} "}"))) (} "}")) (else_clause "else if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }" (else "else") (if_statement "if (uVar9 <= uVar5) {\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }" (if "if") (parenthesized_expression "(uVar9 <= uVar5)" (( "(") (binary_expression "uVar9 <= uVar5" (identifier "uVar9") (<= "<=") (identifier "uVar5")) () ")")) (compound_statement "{\n        if (uVar1 < uVar9) goto LAB_002c88e0;\n        goto LAB_002c89a0;\n      }" ({ "{") (if_statement "if (uVar1 < uVar9) goto LAB_002c88e0;" (if "if") (parenthesized_expression "(uVar1 < uVar9)" (( "(") (binary_expression "uVar1 < uVar9" (identifier "uVar1") (< "<") (identifier "uVar9")) () ")")) (goto_statement "goto LAB_002c88e0;" (goto "goto") (statement_identifier "LAB_002c88e0") (; ";"))) (goto_statement "goto LAB_002c89a0;" (goto "goto") (statement_identifier "LAB_002c89a0") (; ";")) (} "}"))))) (expression_statement "uVar9 = param_1[1];" (assignment_expression "uVar9 = param_1[1]" (identifier "uVar9") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*param_1 = uVar5;" (assignment_expression "*param_1 = uVar5" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "param_1[2] = uVar10;" (assignment_expression "param_1[2] = uVar10" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "param_1[1] = param_1[3];" (assignment_expression "param_1[1] = param_1[3]" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "param_1[3] = uVar9;" (assignment_expression "param_1[3] = uVar9" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar9")) (; ";")) (labeled_statement "LAB_002c885f:\n      uVar9 = puVar7[-2];" (statement_identifier "LAB_002c885f") (: ":") (expression_statement "uVar9 = puVar7[-2];" (assignment_expression "uVar9 = puVar7[-2]" (identifier "uVar9") (= "=") (subscript_expression "puVar7[-2]" (identifier "puVar7") ([ "[") (number_literal "-2") (] "]"))) (; ";"))) (expression_statement "puVar4 = puVar7;" (assignment_expression "puVar4 = puVar7" (identifier "puVar4") (= "=") (identifier "puVar7")) (; ";")) (expression_statement "puVar8 = param_1 + 4;" (assignment_expression "puVar8 = param_1 + 4" (identifier "puVar8") (= "=") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "param_2 = param_1 + 2;" (assignment_expression "param_2 = param_1 + 2" (identifier "param_2") (= "=") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\n      } while( true );" (do "do") (compound_statement "{\n        if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }\n        uVar10 = *puVar8;\n        param_2 = param_2 + 2;\n        puVar8 = puVar8 + 2;\n      }" ({ "{") (if_statement "if (uVar5 <= uVar10) {\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }" (if "if") (parenthesized_expression "(uVar5 <= uVar10)" (( "(") (binary_expression "uVar5 <= uVar10" (identifier "uVar5") (<= "<=") (identifier "uVar10")) () ")")) (compound_statement "{\n          puVar3 = puVar4 + -2;\n          if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }\n          puVar4 = puVar3;\n          if (puVar4 <= param_2) goto LAB_002c8900;\n          puVar8[-2] = uVar9;\n          *puVar4 = uVar10;\n          uVar5 = puVar8[-1];\n          puVar8[-1] = puVar4[1];\n          uVar9 = puVar4[-2];\n          puVar4[1] = uVar5;\n          uVar5 = *param_1;\n        }" ({ "{") (expression_statement "puVar3 = puVar4 + -2;" (assignment_expression "puVar3 = puVar4 + -2" (identifier "puVar3") (= "=") (binary_expression "puVar4 + -2" (identifier "puVar4") (+ "+") (number_literal "-2"))) (; ";")) (if_statement "if (uVar5 < uVar9) {\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }" (if "if") (parenthesized_expression "(uVar5 < uVar9)" (( "(") (binary_expression "uVar5 < uVar9" (identifier "uVar5") (< "<") (identifier "uVar9")) () ")")) (compound_statement "{\n            puVar4 = puVar4 + -4;\n            do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);\n          }" ({ "{") (expression_statement "puVar4 = puVar4 + -4;" (assignment_expression "puVar4 = puVar4 + -4" (identifier "puVar4") (= "=") (binary_expression "puVar4 + -4" (identifier "puVar4") (+ "+") (number_literal "-4"))) (; ";")) (do_statement "do {\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            } while (uVar5 < uVar9);" (do "do") (compound_statement "{\n              puVar3 = puVar4;\n              uVar9 = *puVar3;\n              puVar4 = puVar3 + -2;\n            }" ({ "{") (expression_statement "puVar3 = puVar4;" (assignment_expression "puVar3 = puVar4" (identifier "puVar3") (= "=") (identifier "puVar4")) (; ";")) (expression_statement "uVar9 = *puVar3;" (assignment_expression "uVar9 = *puVar3" (identifier "uVar9") (= "=") (pointer_expression "*puVar3" (* "*") (identifier "puVar3"))) (; ";")) (expression_statement "puVar4 = puVar3 + -2;" (assignment_expression "puVar4 = puVar3 + -2" (identifier "puVar4") (= "=") (binary_expression "puVar3 + -2" (identifier "puVar3") (+ "+") (number_literal "-2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar5 < uVar9)" (( "(") (binary_expression "uVar5 < uVar9" (identifier "uVar5") (< "<") (identifier "uVar9")) () ")")) (; ";")) (} "}"))) (expression_statement "puVar4 = puVar3;" (assignment_expression "puVar4 = puVar3" (identifier "puVar4") (= "=") (identifier "puVar3")) (; ";")) (if_statement "if (puVar4 <= param_2) goto LAB_002c8900;" (if "if") (parenthesized_expression "(puVar4 <= param_2)" (( "(") (binary_expression "puVar4 <= param_2" (identifier "puVar4") (<= "<=") (identifier "param_2")) () ")")) (goto_statement "goto LAB_002c8900;" (goto "goto") (statement_identifier "LAB_002c8900") (; ";"))) (expression_statement "puVar8[-2] = uVar9;" (assignment_expression "puVar8[-2] = uVar9" (subscript_expression "puVar8[-2]" (identifier "puVar8") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "*puVar4 = uVar10;" (assignment_expression "*puVar4 = uVar10" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "uVar5 = puVar8[-1];" (assignment_expression "uVar5 = puVar8[-1]" (identifier "uVar5") (= "=") (subscript_expression "puVar8[-1]" (identifier "puVar8") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "puVar8[-1] = puVar4[1];" (assignment_expression "puVar8[-1] = puVar4[1]" (subscript_expression "puVar8[-1]" (identifier "puVar8") ([ "[") (number_literal "-1") (] "]")) (= "=") (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar9 = puVar4[-2];" (assignment_expression "uVar9 = puVar4[-2]" (identifier "uVar9") (= "=") (subscript_expression "puVar4[-2]" (identifier "puVar4") ([ "[") (number_literal "-2") (] "]"))) (; ";")) (expression_statement "puVar4[1] = uVar5;" (assignment_expression "puVar4[1] = uVar5" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" (identifier "uVar5") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (} "}"))) (expression_statement "uVar10 = *puVar8;" (assignment_expression "uVar10 = *puVar8" (identifier "uVar10") (= "=") (pointer_expression "*puVar8" (* "*") (identifier "puVar8"))) (; ";")) (expression_statement "param_2 = param_2 + 2;" (assignment_expression "param_2 = param_2 + 2" (identifier "param_2") (= "=") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar8 = puVar8 + 2;" (assignment_expression "puVar8 = puVar8 + 2" (identifier "puVar8") (= "=") (binary_expression "puVar8 + 2" (identifier "puVar8") (+ "+") (number_literal "2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_002c8926:\n    for (lVar11 = (lVar6 >> 3) + -2 >> 1;\n        FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2)), lVar11 != 0;\n        lVar11 = lVar11 + -1) {\n    }" (statement_identifier "LAB_002c8926") (: ":") (for_statement "for (lVar11 = (lVar6 >> 3) + -2 >> 1;\n        FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2)), lVar11 != 0;\n        lVar11 = lVar11 + -1) {\n    }" (for "for") (( "(") (assignment_expression "lVar11 = (lVar6 >> 3) + -2 >> 1" (identifier "lVar11") (= "=") (binary_expression "(lVar6 >> 3) + -2 >> 1" (binary_expression "(lVar6 >> 3) + -2" (parenthesized_expression "(lVar6 >> 3)" (( "(") (binary_expression "lVar6 >> 3" (identifier "lVar6") (>> ">>") (number_literal "3")) () ")")) (+ "+") (number_literal "-2")) (>> ">>") (number_literal "1"))) (; ";") (comma_expression "FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2)), lVar11 != 0" (call_expression "FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2))" (identifier "FUN_002c8690") (argument_list "(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2))" (( "(") (identifier "param_1") (, ",") (identifier "lVar11") (, ",") (binary_expression "lVar6 >> 3" (identifier "lVar6") (>> ">>") (number_literal "3")) (, ",") (pointer_expression "*(undefined8 *)(param_1 + lVar11 * 2)" (* "*") (cast_expression "(undefined8 *)(param_1 + lVar11 * 2)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + lVar11 * 2)" (( "(") (binary_expression "param_1 + lVar11 * 2" (identifier "param_1") (+ "+") (binary_expression "lVar11 * 2" (identifier "lVar11") (* "*") (number_literal "2"))) () ")")))) () ")"))) (, ",") (binary_expression "lVar11 != 0" (identifier "lVar11") (!= "!=") (number_literal "0"))) (; ";") (assignment_expression "lVar11 = lVar11 + -1" (identifier "lVar11") (= "=") (binary_expression "lVar11 + -1" (identifier "lVar11") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n    }" ({ "{") (} "}")))) (do_statement "do {\n      puVar7 = param_2 + -2;\n      uVar2 = *(undefined8 *)puVar7;\n      *puVar7 = *param_1;\n      param_2[-1] = param_1[1];\n      FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2);\n      param_2 = puVar7;\n    } while (8 < (long)puVar7 - (long)param_1);" (do "do") (compound_statement "{\n      puVar7 = param_2 + -2;\n      uVar2 = *(undefined8 *)puVar7;\n      *puVar7 = *param_1;\n      param_2[-1] = param_1[1];\n      FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2);\n      param_2 = puVar7;\n    }" ({ "{") (expression_statement "puVar7 = param_2 + -2;" (assignment_expression "puVar7 = param_2 + -2" (identifier "puVar7") (= "=") (binary_expression "param_2 + -2" (identifier "param_2") (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "uVar2 = *(undefined8 *)puVar7;" (assignment_expression "uVar2 = *(undefined8 *)puVar7" (identifier "uVar2") (= "=") (pointer_expression "*(undefined8 *)puVar7" (* "*") (cast_expression "(undefined8 *)puVar7" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar7")))) (; ";")) (expression_statement "*puVar7 = *param_1;" (assignment_expression "*puVar7 = *param_1" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "param_2[-1] = param_1[1];" (assignment_expression "param_2[-1] = param_1[1]" (subscript_expression "param_2[-1]" (identifier "param_2") ([ "[") (number_literal "-1") (] "]")) (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2);" (call_expression "FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2)" (identifier "FUN_002c8690") (argument_list "(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2)" (( "(") (identifier "param_1") (, ",") (number_literal "0") (, ",") (binary_expression "(long)puVar7 - (long)param_1 >> 3" (binary_expression "(long)puVar7 - (long)param_1" (cast_expression "(long)puVar7" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar7")) (- "-") (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1"))) (>> ">>") (number_literal "3")) (, ",") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "param_2 = puVar7;" (assignment_expression "param_2 = puVar7" (identifier "param_2") (= "=") (identifier "puVar7")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(8 < (long)puVar7 - (long)param_1)" (( "(") (binary_expression "8 < (long)puVar7 - (long)param_1" (number_literal "8") (< "<") (binary_expression "(long)puVar7 - (long)param_1" (cast_expression "(long)puVar7" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar7")) (- "-") (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_002c8900:\n  FUN_002c87d0(param_2,puVar7,param_3);" (statement_identifier "LAB_002c8900") (: ":") (expression_statement "FUN_002c87d0(param_2,puVar7,param_3);" (call_expression "FUN_002c87d0(param_2,puVar7,param_3)" (identifier "FUN_002c87d0") (argument_list "(param_2,puVar7,param_3)" (( "(") (identifier "param_2") (, ",") (identifier "puVar7") (, ",") (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 < 0x81) {\n    return;\n  }" (if "if") (parenthesized_expression "(lVar6 < 0x81)" (( "(") (binary_expression "lVar6 < 0x81" (identifier "lVar6") (< "<") (number_literal "0x81")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "puVar7 = param_2;" (assignment_expression "puVar7 = param_2" (identifier "puVar7") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (param_3 == 0) goto LAB_002c8926;" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_002c8926;" (goto "goto") (statement_identifier "LAB_002c8926") (; ";"))) (goto_statement "goto LAB_002c880b;" (goto "goto") (statement_identifier "LAB_002c880b") (; ";")) (} "}")))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name: __introsort_loop<__gnu_cxx::__normal_iterator<std::pair<unsigned int,
   unsigned int>*, std::vector<std::pair<unsigned int, unsigned int> > >, long int,
   __gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::Fde_address_compare<32> > > */

void std::
     __introsort_loop<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std::vector<std::pair<unsigned_int,_unsigned_int>var_13>var_13>,_long_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::var_12<32>var_13>var_13>
               (type_2 *var_3,type_2 *var_10,long var_2)

{
  type_2 var_5;
  type_1 uVar2;
  type_2 *var_9;
  type_2 *var_8;
  type_2 var_4;
  long var_1;
  type_2 *puVar7;
  type_2 *var_11;
  type_2 var_6;
  type_2 var_7;
  long var_14;
  
  var_1 = (long)var_10 - (long)var_3;
  if (0x80 < var_1) {
    if (var_2 != 0) {
      puVar7 = var_10;
LAB_002c880b:
      var_4 = var_3[2];
      var_2 = var_2 + -1;
      var_6 = puVar7[-2];
      var_7 = *var_3;
      var_8 = var_3 + (((long)puVar7 - (long)var_3 >> 3) -
                          ((long)puVar7 - (long)var_3 >> 0x3f) >> 1) * 2;
      var_5 = *var_8;
      if (var_4 < var_5) {
        if (var_5 < var_6) {
LAB_002c89a0:
          *var_3 = var_5;
          *var_8 = var_7;
          var_4 = var_3[1];
          var_3[1] = var_8[1];
          var_8[1] = var_4;
          var_7 = var_3[2];
          var_4 = *var_3;
          goto LAB_002c885f;
        }
        if (var_4 < var_6) {
LAB_002c88e0:
          *var_3 = var_6;
          puVar7[-2] = var_7;
          var_4 = var_3[1];
          var_3[1] = puVar7[-1];
          puVar7[-1] = var_4;
          var_7 = var_3[2];
          var_4 = *var_3;
          goto LAB_002c885f;
        }
      }
      else if (var_6 <= var_4) {
        if (var_5 < var_6) goto LAB_002c88e0;
        goto LAB_002c89a0;
      }
      var_6 = var_3[1];
      *var_3 = var_4;
      var_3[2] = var_7;
      var_3[1] = var_3[3];
      var_3[3] = var_6;
LAB_002c885f:
      var_6 = puVar7[-2];
      var_8 = puVar7;
      var_11 = var_3 + 4;
      var_10 = var_3 + 2;
      do {
        if (var_4 <= var_7) {
          var_9 = var_8 + -2;
          if (var_4 < var_6) {
            var_8 = var_8 + -4;
            do {
              var_9 = var_8;
              var_6 = *var_9;
              var_8 = var_9 + -2;
            } while (var_4 < var_6);
          }
          var_8 = var_9;
          if (var_8 <= var_10) goto LAB_002c8900;
          var_11[-2] = var_6;
          *var_8 = var_7;
          var_4 = var_11[-1];
          var_11[-1] = var_8[1];
          var_6 = var_8[-2];
          var_8[1] = var_4;
          var_4 = *var_3;
        }
        var_7 = *var_11;
        var_10 = var_10 + 2;
        var_11 = var_11 + 2;
      } while( true );
    }
LAB_002c8926:
    for (var_14 = (var_1 >> 3) + -2 >> 1;
        __adjust_heap<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std::vector<std::pair<unsigned_int,_unsigned_int>var_13>var_13>,_long_int,_std::pair<unsigned_int,_unsigned_int>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::var_12<32>var_13>var_13>
                  (var_3,var_14,var_1 >> 3,*(type_1 *)(var_3 + var_14 * 2)), var_14 != 0;
        var_14 = var_14 + -1) {
    }
    do {
      puVar7 = var_10 + -2;
      uVar2 = *(type_1 *)puVar7;
      *puVar7 = *var_3;
      var_10[-1] = var_3[1];
      __adjust_heap<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std::vector<std::pair<unsigned_int,_unsigned_int>var_13>var_13>,_long_int,_std::pair<unsigned_int,_unsigned_int>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::var_12<32>var_13>var_13>
                (var_3,0,(long)puVar7 - (long)var_3 >> 3,uVar2);
      var_10 = puVar7;
    } while (8 < (long)puVar7 - (long)var_3);
  }
  return;
LAB_002c8900:
  __introsort_loop<__gnu_cxx::__normal_iterator<std::pair<unsigned_int,_unsigned_int>*,_std::vector<std::pair<unsigned_int,_unsigned_int>var_13>var_13>,_long_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Eh_frame_hdr::var_12<32>var_13>var_13>
            (var_10,puVar7,var_2);
  var_1 = (long)var_10 - (long)var_3;
  if (var_1 < 0x81) {
    return;
  }
  puVar7 = var_10;
  if (var_2 == 0) goto LAB_002c8926;
  goto LAB_002c880b;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (sized_type_specifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) 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: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (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: (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))))) (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 (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (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: (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: (pointer_expression argument: (identifier)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (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)))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (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: (goto_statement label: (statement_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: (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))) (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: (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)))) (do_statement body: (compound_statement (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (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: (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)))) (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: (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))))) condition: (parenthesized_expression (true))))) (labeled_statement label: (statement_identifier) (for_statement initializer: (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (number_literal))) condition: (comma_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (number_literal)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))) 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (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)) (identifier)))) (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(uint *param_1,uint *param_2,long param_3)

{
  uint uVar1;
  undefined8 uVar2;
  uint *puVar3;
  uint *puVar4;
  uint uVar5;
  long lVar6;
  uint *puVar7;
  uint *puVar8;
  uint uVar9;
  uint uVar10;
  long lVar11;
  
  lVar6 = (long)param_2 - (long)param_1;
  if (0x80 < lVar6) {
    if (param_3 != 0) {
      puVar7 = param_2;
LAB_002c880b:
      uVar5 = param_1[2];
      param_3 = param_3 + -1;
      uVar9 = puVar7[-2];
      uVar10 = *param_1;
      puVar4 = param_1 + (((long)puVar7 - (long)param_1 >> 3) -
                          ((long)puVar7 - (long)param_1 >> 0x3f) >> 1) * 2;
      uVar1 = *puVar4;
      if (uVar5 < uVar1) {
        if (uVar1 < uVar9) {
LAB_002c89a0:
          *param_1 = uVar1;
          *puVar4 = uVar10;
          uVar5 = param_1[1];
          param_1[1] = puVar4[1];
          puVar4[1] = uVar5;
          uVar10 = param_1[2];
          uVar5 = *param_1;
          goto LAB_002c885f;
        }
        if (uVar5 < uVar9) {
LAB_002c88e0:
          *param_1 = uVar9;
          puVar7[-2] = uVar10;
          uVar5 = param_1[1];
          param_1[1] = puVar7[-1];
          puVar7[-1] = uVar5;
          uVar10 = param_1[2];
          uVar5 = *param_1;
          goto LAB_002c885f;
        }
      }
      else if (uVar9 <= uVar5) {
        if (uVar1 < uVar9) goto LAB_002c88e0;
        goto LAB_002c89a0;
      }
      uVar9 = param_1[1];
      *param_1 = uVar5;
      param_1[2] = uVar10;
      param_1[1] = param_1[3];
      param_1[3] = uVar9;
LAB_002c885f:
      uVar9 = puVar7[-2];
      puVar4 = puVar7;
      puVar8 = param_1 + 4;
      param_2 = param_1 + 2;
      do {
        if (uVar5 <= uVar10) {
          puVar3 = puVar4 + -2;
          if (uVar5 < uVar9) {
            puVar4 = puVar4 + -4;
            do {
              puVar3 = puVar4;
              uVar9 = *puVar3;
              puVar4 = puVar3 + -2;
            } while (uVar5 < uVar9);
          }
          puVar4 = puVar3;
          if (puVar4 <= param_2) goto LAB_002c8900;
          puVar8[-2] = uVar9;
          *puVar4 = uVar10;
          uVar5 = puVar8[-1];
          puVar8[-1] = puVar4[1];
          uVar9 = puVar4[-2];
          puVar4[1] = uVar5;
          uVar5 = *param_1;
        }
        uVar10 = *puVar8;
        param_2 = param_2 + 2;
        puVar8 = puVar8 + 2;
      } while( true );
    }
LAB_002c8926:
    for (lVar11 = (lVar6 >> 3) + -2 >> 1;
        FUN_002c8690(param_1,lVar11,lVar6 >> 3,*(undefined8 *)(param_1 + lVar11 * 2)), lVar11 != 0;
        lVar11 = lVar11 + -1) {
    }
    do {
      puVar7 = param_2 + -2;
      uVar2 = *(undefined8 *)puVar7;
      *puVar7 = *param_1;
      param_2[-1] = param_1[1];
      FUN_002c8690(param_1,0,(long)puVar7 - (long)param_1 >> 3,uVar2);
      param_2 = puVar7;
    } while (8 < (long)puVar7 - (long)param_1);
  }
  return;
LAB_002c8900:
  MASKED(param_2,puVar7,param_3);
  lVar6 = (long)param_2 - (long)param_1;
  if (lVar6 < 0x81) {
    return;
  }
  puVar7 = param_2;
  if (param_3 == 0) goto LAB_002c8926;
  goto LAB_002c880b;
}

