
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name: __adjust_heap<__gnu_cxx::__normal_iterator<gold::Output_reloc<4, true, 64,
   false>*, std::vector<gold::Output_reloc<4, true, 64, false>, std::allocator<gold::Output_reloc<4,
   true, 64, false> > > >, long int, gold::Output_reloc<4, true, 64, false>,
   __gnu_cxx::__ops::_Iter_comp_iter<gold::Output_data_reloc_base<4, true, 64,
   false>::Sort_relocs_comparison> > */

void std::
     __adjust_heap<__gnu_cxx::__normal_iterator<gold::Output_reloc<4,_true,_64,_false>*,_std::vector<gold::Output_reloc<4,_true,_64,_false>,_std::allocator<gold::Output_reloc<4,_true,_64,_false>_>_>_>,_long_int,_gold::Output_reloc<4,_true,_64,_false>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Output_data_reloc_base<4,_true,_64,_false>::Sort_relocs_comparison>_>
               (long __first,long __holeIndex,ulong __len)

{
  anon_union_8_4_c82d8563_for_u1_ aVar1;
  int iVar2;
  long lVar3;
  anon_union_8_4_c82d8563_for_u1_ *this;
  long lVar4;
  long lVar5;
  anon_union_8_4_c82d8563_for_u1_ *paVar6;
  anon_union_8_4_c82d8563_for_u1_ __value;
  anon_union_8_4_c82d8563_for_u1_ in_stack_00000010;
  anon_union_8_4_c82d8563_for_u1_ in_stack_00000018;
  anon_union_8_4_c82d8563_for_u1_ in_stack_00000020;
  anon_union_8_4_c82d8563_for_u1_ in_stack_00000028;
  Sized_relobj<64,_false> *in_stack_00000030;
  anon_union_8_4_c82d8563_for_u1_ local_68;
  anon_union_8_4_c82d8563_for_u1_ aStack_60;
  anon_union_8_4_c82d8563_for_u1_ local_58;
  anon_union_8_4_c82d8563_for_u1_ aStack_50;
  anon_union_8_4_c82d8563_for_u1_ local_48;
  Sized_relobj<64,_false> *pSStack_40;
  
  lVar3 = (long)(__len - 1) / 2;
  lVar4 = __holeIndex;
  if (__holeIndex < lVar3) {
    do {
      lVar5 = (lVar4 + 1) * 2;
      this = (anon_union_8_4_c82d8563_for_u1_ *)((lVar4 + 1) * 0x60 + __first);
      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)((lVar5 + -1) * 0x30 + __first);
      iVar2 = gold::Output_reloc<9,_true,_64,_false>::compare
                        ((Output_reloc<9,_true,_64,_false> *)this,
                         (Output_reloc<9,_true,_64,_false> *)paVar6);
      if ((iVar2 < 0) || ((iVar2 == 0 && (this[5].relobj < paVar6[5].relobj)))) {
        this = paVar6;
        lVar5 = lVar5 + -1;
      }
      aVar1 = this[1];
      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar4 * 0x30 + __first);
      *paVar6 = *this;
      paVar6[1] = aVar1;
      aVar1 = this[3];
      paVar6[2] = this[2];
      paVar6[3] = aVar1;
      aVar1 = this[5];
      paVar6[4] = this[4];
      paVar6[5] = aVar1;
      lVar4 = lVar5;
    } while (lVar5 < lVar3);
    if ((__len & 1) == 0) goto LAB_001ebfb0;
  }
  else {
    this = (anon_union_8_4_c82d8563_for_u1_ *)(__holeIndex * 0x30 + __first);
    lVar5 = __holeIndex;
    if ((__len & 1) != 0) {
      local_68 = __value;
      aStack_60 = in_stack_00000010;
      local_58 = in_stack_00000018;
      aStack_50 = in_stack_00000020;
      local_48 = in_stack_00000028;
      pSStack_40 = in_stack_00000030;
      goto LAB_001ebf13;
    }
LAB_001ebfb0:
    if ((long)(__len - 2) / 2 == lVar5) {
      lVar5 = lVar5 * 2 + 1;
      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first);
      aVar1 = paVar6[1];
      *this = *paVar6;
      this[1] = aVar1;
      aVar1 = paVar6[3];
      this[2] = paVar6[2];
      this[3] = aVar1;
      aVar1 = paVar6[5];
      this[4] = paVar6[4];
      this[5] = aVar1;
      this = paVar6;
    }
  }
  local_68 = __value;
  aStack_60 = in_stack_00000010;
  lVar4 = (lVar5 + -1) - (lVar5 + -1 >> 0x3f);
  local_58 = in_stack_00000018;
  aStack_50 = in_stack_00000020;
  local_48 = in_stack_00000028;
  pSStack_40 = in_stack_00000030;
  if (__holeIndex < lVar5) {
    do {
      lVar3 = lVar4 >> 1;
      this = (anon_union_8_4_c82d8563_for_u1_ *)(lVar3 * 0x30 + __first);
      iVar2 = gold::Output_reloc<9,_true,_64,_false>::compare
                        ((Output_reloc<9,_true,_64,_false> *)this,
                         (Output_reloc<9,_true,_64,_false> *)&local_68);
      if ((-1 < iVar2) && ((iVar2 != 0 || (pSStack_40 <= this[5].relobj)))) {
        this = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first);
        break;
      }
      aVar1 = this[1];
      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first);
      *paVar6 = *this;
      paVar6[1] = aVar1;
      aVar1 = this[3];
      paVar6[2] = this[2];
      paVar6[3] = aVar1;
      aVar1 = this[5];
      paVar6[4] = this[4];
      paVar6[5] = aVar1;
      lVar4 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);
      lVar5 = lVar3;
    } while (__holeIndex < lVar3);
  }
LAB_001ebf13:
  *this = local_68;
  this[1] = aStack_60;
  this[2] = local_58;
  this[3] = aStack_50;
  this[4] = local_48;
  this[5].relobj = pSStack_40;
  return;
}



void FUN_001ebdd0(long param_1,long param_2,ulong param_3)

{
  undefined8 uVar1;
  int iVar2;
  long lVar3;
  undefined8 *puVar4;
  long lVar5;
  long lVar6;
  undefined8 *puVar7;
  undefined8 in_stack_00000008;
  undefined8 in_stack_00000010;
  undefined8 in_stack_00000018;
  undefined8 in_stack_00000020;
  undefined8 in_stack_00000028;
  ulong in_stack_00000030;
  undefined8 local_68;
  undefined8 uStack_60;
  undefined8 local_58;
  undefined8 uStack_50;
  undefined8 local_48;
  ulong uStack_40;
  
  lVar3 = (long)(param_3 - 1) / 2;
  lVar5 = param_2;
  if (param_2 < lVar3) {
    do {
      lVar6 = (lVar5 + 1) * 2;
      puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1);
      puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1);
      iVar2 = FUN_001e4d20(puVar4,puVar7);
      if ((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))) {
        puVar4 = puVar7;
        lVar6 = lVar6 + -1;
      }
      uVar1 = puVar4[1];
      puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1);
      *puVar7 = *puVar4;
      puVar7[1] = uVar1;
      uVar1 = puVar4[3];
      puVar7[2] = puVar4[2];
      puVar7[3] = uVar1;
      uVar1 = puVar4[5];
      puVar7[4] = puVar4[4];
      puVar7[5] = uVar1;
      lVar5 = lVar6;
    } while (lVar6 < lVar3);
    if ((param_3 & 1) == 0) goto LAB_001ebfb0;
  }
  else {
    puVar4 = (undefined8 *)(param_2 * 0x30 + param_1);
    lVar6 = param_2;
    if ((param_3 & 1) != 0) {
      local_68 = in_stack_00000008;
      uStack_60 = in_stack_00000010;
      local_58 = in_stack_00000018;
      uStack_50 = in_stack_00000020;
      local_48 = in_stack_00000028;
      uStack_40 = in_stack_00000030;
      goto LAB_001ebf13;
    }
LAB_001ebfb0:
    if ((long)(param_3 - 2) / 2 == lVar6) {
      lVar6 = lVar6 * 2 + 1;
      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);
      uVar1 = puVar7[1];
      *puVar4 = *puVar7;
      puVar4[1] = uVar1;
      uVar1 = puVar7[3];
      puVar4[2] = puVar7[2];
      puVar4[3] = uVar1;
      uVar1 = puVar7[5];
      puVar4[4] = puVar7[4];
      puVar4[5] = uVar1;
      puVar4 = puVar7;
    }
  }
  local_68 = in_stack_00000008;
  uStack_60 = in_stack_00000010;
  lVar5 = (lVar6 + -1) - (lVar6 + -1 >> 0x3f);
  local_58 = in_stack_00000018;
  uStack_50 = in_stack_00000020;
  local_48 = in_stack_00000028;
  uStack_40 = in_stack_00000030;
  if (param_2 < lVar6) {
    do {
      lVar3 = lVar5 >> 1;
      puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1);
      iVar2 = FUN_001e4d20(puVar4,&local_68);
      if ((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))) {
        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);
        break;
      }
      uVar1 = puVar4[1];
      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);
      *puVar7 = *puVar4;
      puVar7[1] = uVar1;
      uVar1 = puVar4[3];
      puVar7[2] = puVar4[2];
      puVar7[3] = uVar1;
      uVar1 = puVar4[5];
      puVar7[4] = puVar4[4];
      puVar7[5] = uVar1;
      lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);
      lVar6 = lVar3;
    } while (param_2 < lVar3);
  }
LAB_001ebf13:
  *puVar4 = local_68;
  puVar4[1] = uStack_60;
  puVar4[2] = local_58;
  puVar4[3] = uStack_50;
  puVar4[4] = local_48;
  puVar4[5] = uStack_40;
  return;
}


LEA RAX,[RDX + -0x1]
PUSH R15
MOV RCX,RDX
PUSH R14
AND ECX,0x1
PUSH R13
PUSH R12
MOV R12,RDI
PUSH RBP
MOV RBP,RAX
PUSH RBX
SHR RBP,0x3f
ADD RBP,RAX
MOV RAX,RBP
SUB RSP,0x58
SAR RAX,0x1
MOV qword ptr [RSP + 0x8],RSI
MOV qword ptr [RSP + 0x18],RDX
MOV qword ptr [RSP],RAX
MOV qword ptr [RSP + 0x10],RCX
CMP RSI,RAX
JGE 0x001ebf98
MOV R13,RSI
JMP 0x001ebe4e
LEA RAX,[R13 + R13*0x2]
MOVDQU XMM0,xmmword ptr [RBX]
MOV R13,R14
SHL RAX,0x4
ADD RAX,R12
MOVUPS xmmword ptr [RAX],XMM0
MOVDQU XMM1,xmmword ptr [RBX + 0x10]
MOVUPS xmmword ptr [RAX + 0x10],XMM1
MOVDQU XMM2,xmmword ptr [RBX + 0x20]
MOVUPS xmmword ptr [RAX + 0x20],XMM2
CMP R14,qword ptr [RSP]
JGE 0x001ebe98
LEA RAX,[R13 + 0x1]
LEA R14,[RAX + RAX*0x1]
LEA RBP,[R14 + -0x1]
LEA RBX,[R14 + RAX*0x4]
LEA R15,[RBP + RBP*0x2]
SHL RBX,0x4
SHL R15,0x4
ADD RBX,R12
ADD R15,R12
MOV RDI,RBX
MOV RSI,R15
CALL 0x001e4d20
TEST EAX,EAX
JS 0x001ebe8c
JNZ 0x001ebe20
MOV RAX,qword ptr [RBX + 0x28]
CMP qword ptr [R15 + 0x28],RAX
JBE 0x001ebe20
MOV RBX,R15
MOV R14,RBP
JMP 0x001ebe20
CMP qword ptr [RSP + 0x10],0x0
JZ 0x001ebfb0
MOVDQU XMM7,xmmword ptr [RSP + 0x90]
LEA RAX,[R14 + -0x1]
MOVDQU XMM3,xmmword ptr [RSP + 0xa0]
MOVDQU XMM4,xmmword ptr [RSP + 0xb0]
MOV RBP,RAX
SHR RBP,0x3f
MOVUPS xmmword ptr [RSP + 0x20],XMM7
ADD RBP,RAX
MOVUPS xmmword ptr [RSP + 0x30],XMM3
MOVUPS xmmword ptr [RSP + 0x40],XMM4
SAR RBP,0x1
CMP R14,qword ptr [RSP + 0x8]
JLE 0x001ebf13
LEA R13,[RSP + 0x20]
LEA RBX,[RBP + RBP*0x2]
MOV RSI,R13
SHL RBX,0x4
ADD RBX,R12
MOV RDI,RBX
CALL 0x001e4d20
TEST EAX,EAX
JS 0x001ebf4b
JZ 0x001ebf40
LEA RBX,[R14 + R14*0x2]
SHL RBX,0x4
ADD RBX,R12
MOVDQU XMM6,xmmword ptr [RSP + 0x20]
MOVDQU XMM7,xmmword ptr [RSP + 0x30]
MOVUPS xmmword ptr [RBX],XMM6
MOVDQU XMM6,xmmword ptr [RSP + 0x40]
MOVUPS xmmword ptr [RBX + 0x10],XMM7
MOVUPS xmmword ptr [RBX + 0x20],XMM6
ADD RSP,0x58
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RAX,qword ptr [RSP + 0x48]
CMP qword ptr [RBX + 0x28],RAX
JNC 0x001ebf08
LEA RAX,[R14 + R14*0x2]
MOVDQU XMM3,xmmword ptr [RBX]
LEA RDX,[RBP + -0x1]
MOV R14,RBP
SHL RAX,0x4
ADD RAX,R12
MOVUPS xmmword ptr [RAX],XMM3
MOVDQU XMM4,xmmword ptr [RBX + 0x10]
MOVUPS xmmword ptr [RAX + 0x10],XMM4
MOVDQU XMM5,xmmword ptr [RBX + 0x20]
MOVUPS xmmword ptr [RAX + 0x20],XMM5
MOV RAX,RDX
SHR RAX,0x3f
ADD RAX,RDX
SAR RAX,0x1
CMP qword ptr [RSP + 0x8],RBP
JGE 0x001ebf13
MOV RBP,RAX
JMP 0x001ebeeb
MOV R14,qword ptr [RSP + 0x8]
LEA RBX,[R14 + R14*0x2]
SHL RBX,0x4
ADD RBX,RDI
CMP qword ptr [RSP + 0x10],0x0
JNZ 0x001ec000
MOV RAX,qword ptr [RSP + 0x18]
SUB RAX,0x2
MOV R13,RAX
SHR R13,0x3f
ADD R13,RAX
SAR R13,0x1
CMP R13,R14
JNZ 0x001ebea4
LEA R14,[R14 + R14*0x1 + 0x1]
LEA RAX,[R14 + R14*0x2]
SHL RAX,0x4
ADD RAX,R12
MOVDQU XMM5,xmmword ptr [RAX]
MOVUPS xmmword ptr [RBX],XMM5
MOVDQU XMM5,xmmword ptr [RAX + 0x10]
MOVUPS xmmword ptr [RBX + 0x10],XMM5
MOVDQU XMM5,xmmword ptr [RAX + 0x20]
MOVUPS xmmword ptr [RBX + 0x20],XMM5
MOV RBX,RAX
JMP 0x001ebea4
MOVDQU XMM5,xmmword ptr [RSP + 0x90]
MOVUPS xmmword ptr [RSP + 0x20],XMM5
MOVDQU XMM5,xmmword ptr [RSP + 0xa0]
MOVUPS xmmword ptr [RSP + 0x30],XMM5
MOVDQU XMM5,xmmword ptr [RSP + 0xb0]
MOVUPS xmmword ptr [RSP + 0x40],XMM5
JMP 0x001ebf13
(translation_unit "void FUN_001ebdd0(long param_1,long param_2,ulong param_3)\n\n{\n  undefined8 uVar1;\n  int iVar2;\n  long lVar3;\n  undefined8 *puVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  undefined8 in_stack_00000008;\n  undefined8 in_stack_00000010;\n  undefined8 in_stack_00000018;\n  undefined8 in_stack_00000020;\n  undefined8 in_stack_00000028;\n  ulong in_stack_00000030;\n  undefined8 local_68;\n  undefined8 uStack_60;\n  undefined8 local_58;\n  undefined8 uStack_50;\n  undefined8 local_48;\n  ulong uStack_40;\n  \n  lVar3 = (long)(param_3 - 1) / 2;\n  lVar5 = param_2;\n  if (param_2 < lVar3) {\n    do {\n      lVar6 = (lVar5 + 1) * 2;\n      puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1);\n      puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,puVar7);\n      if ((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))) {\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = lVar6;\n    } while (lVar6 < lVar3);\n    if ((param_3 & 1) == 0) goto LAB_001ebfb0;\n  }\n  else {\n    puVar4 = (undefined8 *)(param_2 * 0x30 + param_1);\n    lVar6 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      uStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }\nLAB_001ebfb0:\n    if ((long)(param_3 - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }\n  }\n  local_68 = in_stack_00000008;\n  uStack_60 = in_stack_00000010;\n  lVar5 = (lVar6 + -1) - (lVar6 + -1 >> 0x3f);\n  local_58 = in_stack_00000018;\n  uStack_50 = in_stack_00000020;\n  local_48 = in_stack_00000028;\n  uStack_40 = in_stack_00000030;\n  if (param_2 < lVar6) {\n    do {\n      lVar3 = lVar5 >> 1;\n      puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,&local_68);\n      if ((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))) {\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);\n      lVar6 = lVar3;\n    } while (param_2 < lVar3);\n  }\nLAB_001ebf13:\n  *puVar4 = local_68;\n  puVar4[1] = uStack_60;\n  puVar4[2] = local_58;\n  puVar4[3] = uStack_50;\n  puVar4[4] = local_48;\n  puVar4[5] = uStack_40;\n  return;\n}\n\n" (function_definition "void FUN_001ebdd0(long param_1,long param_2,ulong param_3)\n\n{\n  undefined8 uVar1;\n  int iVar2;\n  long lVar3;\n  undefined8 *puVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  undefined8 in_stack_00000008;\n  undefined8 in_stack_00000010;\n  undefined8 in_stack_00000018;\n  undefined8 in_stack_00000020;\n  undefined8 in_stack_00000028;\n  ulong in_stack_00000030;\n  undefined8 local_68;\n  undefined8 uStack_60;\n  undefined8 local_58;\n  undefined8 uStack_50;\n  undefined8 local_48;\n  ulong uStack_40;\n  \n  lVar3 = (long)(param_3 - 1) / 2;\n  lVar5 = param_2;\n  if (param_2 < lVar3) {\n    do {\n      lVar6 = (lVar5 + 1) * 2;\n      puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1);\n      puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,puVar7);\n      if ((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))) {\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = lVar6;\n    } while (lVar6 < lVar3);\n    if ((param_3 & 1) == 0) goto LAB_001ebfb0;\n  }\n  else {\n    puVar4 = (undefined8 *)(param_2 * 0x30 + param_1);\n    lVar6 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      uStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }\nLAB_001ebfb0:\n    if ((long)(param_3 - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }\n  }\n  local_68 = in_stack_00000008;\n  uStack_60 = in_stack_00000010;\n  lVar5 = (lVar6 + -1) - (lVar6 + -1 >> 0x3f);\n  local_58 = in_stack_00000018;\n  uStack_50 = in_stack_00000020;\n  local_48 = in_stack_00000028;\n  uStack_40 = in_stack_00000030;\n  if (param_2 < lVar6) {\n    do {\n      lVar3 = lVar5 >> 1;\n      puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,&local_68);\n      if ((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))) {\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);\n      lVar6 = lVar3;\n    } while (param_2 < lVar3);\n  }\nLAB_001ebf13:\n  *puVar4 = local_68;\n  puVar4[1] = uStack_60;\n  puVar4[2] = local_58;\n  puVar4[3] = uStack_50;\n  puVar4[4] = local_48;\n  puVar4[5] = uStack_40;\n  return;\n}" primitive_type (function_declarator "FUN_001ebdd0(long param_1,long param_2,ulong param_3)" identifier (parameter_list "(long param_1,long param_2,ulong param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "ulong param_3" type_identifier identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  int iVar2;\n  long lVar3;\n  undefined8 *puVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  undefined8 in_stack_00000008;\n  undefined8 in_stack_00000010;\n  undefined8 in_stack_00000018;\n  undefined8 in_stack_00000020;\n  undefined8 in_stack_00000028;\n  ulong in_stack_00000030;\n  undefined8 local_68;\n  undefined8 uStack_60;\n  undefined8 local_58;\n  undefined8 uStack_50;\n  undefined8 local_48;\n  ulong uStack_40;\n  \n  lVar3 = (long)(param_3 - 1) / 2;\n  lVar5 = param_2;\n  if (param_2 < lVar3) {\n    do {\n      lVar6 = (lVar5 + 1) * 2;\n      puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1);\n      puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,puVar7);\n      if ((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))) {\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = lVar6;\n    } while (lVar6 < lVar3);\n    if ((param_3 & 1) == 0) goto LAB_001ebfb0;\n  }\n  else {\n    puVar4 = (undefined8 *)(param_2 * 0x30 + param_1);\n    lVar6 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      uStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }\nLAB_001ebfb0:\n    if ((long)(param_3 - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }\n  }\n  local_68 = in_stack_00000008;\n  uStack_60 = in_stack_00000010;\n  lVar5 = (lVar6 + -1) - (lVar6 + -1 >> 0x3f);\n  local_58 = in_stack_00000018;\n  uStack_50 = in_stack_00000020;\n  local_48 = in_stack_00000028;\n  uStack_40 = in_stack_00000030;\n  if (param_2 < lVar6) {\n    do {\n      lVar3 = lVar5 >> 1;\n      puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,&local_68);\n      if ((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))) {\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);\n      lVar6 = lVar3;\n    } while (param_2 < lVar3);\n  }\nLAB_001ebf13:\n  *puVar4 = local_68;\n  puVar4[1] = uStack_60;\n  puVar4[2] = local_58;\n  puVar4[3] = uStack_50;\n  puVar4[4] = local_48;\n  puVar4[5] = uStack_40;\n  return;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined8 in_stack_00000008;" type_identifier identifier ;) (declaration "undefined8 in_stack_00000010;" type_identifier identifier ;) (declaration "undefined8 in_stack_00000018;" type_identifier identifier ;) (declaration "undefined8 in_stack_00000020;" type_identifier identifier ;) (declaration "undefined8 in_stack_00000028;" type_identifier identifier ;) (declaration "ulong in_stack_00000030;" type_identifier identifier ;) (declaration "undefined8 local_68;" type_identifier identifier ;) (declaration "undefined8 uStack_60;" type_identifier identifier ;) (declaration "undefined8 local_58;" type_identifier identifier ;) (declaration "undefined8 uStack_50;" type_identifier identifier ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (declaration "ulong uStack_40;" type_identifier identifier ;) (expression_statement "lVar3 = (long)(param_3 - 1) / 2;" (assignment_expression "lVar3 = (long)(param_3 - 1) / 2" identifier = (binary_expression "(long)(param_3 - 1) / 2" (cast_expression "(long)(param_3 - 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(param_3 - 1)" ( (binary_expression "param_3 - 1" identifier - number_literal) ))) / number_literal)) ;) (expression_statement "lVar5 = param_2;" (assignment_expression "lVar5 = param_2" identifier = identifier) ;) (if_statement "if (param_2 < lVar3) {\n    do {\n      lVar6 = (lVar5 + 1) * 2;\n      puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1);\n      puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,puVar7);\n      if ((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))) {\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = lVar6;\n    } while (lVar6 < lVar3);\n    if ((param_3 & 1) == 0) goto LAB_001ebfb0;\n  }\n  else {\n    puVar4 = (undefined8 *)(param_2 * 0x30 + param_1);\n    lVar6 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      uStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }\nLAB_001ebfb0:\n    if ((long)(param_3 - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }\n  }" if (parenthesized_expression "(param_2 < lVar3)" ( (binary_expression "param_2 < lVar3" identifier < identifier) )) (compound_statement "{\n    do {\n      lVar6 = (lVar5 + 1) * 2;\n      puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1);\n      puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,puVar7);\n      if ((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))) {\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = lVar6;\n    } while (lVar6 < lVar3);\n    if ((param_3 & 1) == 0) goto LAB_001ebfb0;\n  }" { (do_statement "do {\n      lVar6 = (lVar5 + 1) * 2;\n      puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1);\n      puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,puVar7);\n      if ((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))) {\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = lVar6;\n    } while (lVar6 < lVar3);" do (compound_statement "{\n      lVar6 = (lVar5 + 1) * 2;\n      puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1);\n      puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,puVar7);\n      if ((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))) {\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = lVar6;\n    }" { (expression_statement "lVar6 = (lVar5 + 1) * 2;" (assignment_expression "lVar6 = (lVar5 + 1) * 2" identifier = (binary_expression "(lVar5 + 1) * 2" (parenthesized_expression "(lVar5 + 1)" ( (binary_expression "lVar5 + 1" identifier + number_literal) )) * number_literal)) ;) (expression_statement "puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1);" (assignment_expression "puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1)" identifier = (cast_expression "(undefined8 *)((lVar5 + 1) * 0x60 + param_1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((lVar5 + 1) * 0x60 + param_1)" ( (binary_expression "(lVar5 + 1) * 0x60 + param_1" (binary_expression "(lVar5 + 1) * 0x60" (parenthesized_expression "(lVar5 + 1)" ( (binary_expression "lVar5 + 1" identifier + number_literal) )) * number_literal) + identifier) )))) ;) (expression_statement "puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1);" (assignment_expression "puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1)" identifier = (cast_expression "(undefined8 *)((lVar6 + -1) * 0x30 + param_1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((lVar6 + -1) * 0x30 + param_1)" ( (binary_expression "(lVar6 + -1) * 0x30 + param_1" (binary_expression "(lVar6 + -1) * 0x30" (parenthesized_expression "(lVar6 + -1)" ( (binary_expression "lVar6 + -1" identifier + number_literal) )) * number_literal) + identifier) )))) ;) (expression_statement "iVar2 = FUN_001e4d20(puVar4,puVar7);" (assignment_expression "iVar2 = FUN_001e4d20(puVar4,puVar7)" identifier = (call_expression "FUN_001e4d20(puVar4,puVar7)" identifier (argument_list "(puVar4,puVar7)" ( identifier , identifier )))) ;) (if_statement "if ((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))) {\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }" if (parenthesized_expression "((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5]))))" ( (binary_expression "(iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))" (parenthesized_expression "(iVar2 < 0)" ( (binary_expression "iVar2 < 0" identifier < number_literal) )) || (parenthesized_expression "((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))" ( (parenthesized_expression "(iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5]))" ( (binary_expression "iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])" (binary_expression "iVar2 == 0" identifier == number_literal) && (parenthesized_expression "((ulong)puVar4[5] < (ulong)puVar7[5])" ( (binary_expression "(ulong)puVar4[5] < (ulong)puVar7[5]" (cast_expression "(ulong)puVar4[5]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "puVar4[5]" identifier [ number_literal ])) < (cast_expression "(ulong)puVar7[5]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "puVar7[5]" identifier [ number_literal ]))) ))) )) ))) )) (compound_statement "{\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }" { (expression_statement "puVar4 = puVar7;" (assignment_expression "puVar4 = puVar7" identifier = identifier) ;) (expression_statement "lVar6 = lVar6 + -1;" (assignment_expression "lVar6 = lVar6 + -1" identifier = (binary_expression "lVar6 + -1" identifier + number_literal)) ;) })) (expression_statement "uVar1 = puVar4[1];" (assignment_expression "uVar1 = puVar4[1]" identifier = (subscript_expression "puVar4[1]" identifier [ number_literal ])) ;) (expression_statement "puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1);" (assignment_expression "puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1)" identifier = (cast_expression "(undefined8 *)(lVar5 * 0x30 + param_1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 * 0x30 + param_1)" ( (binary_expression "lVar5 * 0x30 + param_1" (binary_expression "lVar5 * 0x30" identifier * number_literal) + identifier) )))) ;) (expression_statement "*puVar7 = *puVar4;" (assignment_expression "*puVar7 = *puVar4" (pointer_expression "*puVar7" * identifier) = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar7[1] = uVar1;" (assignment_expression "puVar7[1] = uVar1" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = puVar4[3];" (assignment_expression "uVar1 = puVar4[3]" identifier = (subscript_expression "puVar4[3]" identifier [ number_literal ])) ;) (expression_statement "puVar7[2] = puVar4[2];" (assignment_expression "puVar7[2] = puVar4[2]" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = (subscript_expression "puVar4[2]" identifier [ number_literal ])) ;) (expression_statement "puVar7[3] = uVar1;" (assignment_expression "puVar7[3] = uVar1" (subscript_expression "puVar7[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = puVar4[5];" (assignment_expression "uVar1 = puVar4[5]" identifier = (subscript_expression "puVar4[5]" identifier [ number_literal ])) ;) (expression_statement "puVar7[4] = puVar4[4];" (assignment_expression "puVar7[4] = puVar4[4]" (subscript_expression "puVar7[4]" identifier [ number_literal ]) = (subscript_expression "puVar4[4]" identifier [ number_literal ])) ;) (expression_statement "puVar7[5] = uVar1;" (assignment_expression "puVar7[5] = uVar1" (subscript_expression "puVar7[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "lVar5 = lVar6;" (assignment_expression "lVar5 = lVar6" identifier = identifier) ;) }) while (parenthesized_expression "(lVar6 < lVar3)" ( (binary_expression "lVar6 < lVar3" identifier < identifier) )) ;) (if_statement "if ((param_3 & 1) == 0) goto LAB_001ebfb0;" if (parenthesized_expression "((param_3 & 1) == 0)" ( (binary_expression "(param_3 & 1) == 0" (parenthesized_expression "(param_3 & 1)" ( (binary_expression "param_3 & 1" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001ebfb0;" goto statement_identifier ;)) }) (else_clause "else {\n    puVar4 = (undefined8 *)(param_2 * 0x30 + param_1);\n    lVar6 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      uStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }\nLAB_001ebfb0:\n    if ((long)(param_3 - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }\n  }" else (compound_statement "{\n    puVar4 = (undefined8 *)(param_2 * 0x30 + param_1);\n    lVar6 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      uStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }\nLAB_001ebfb0:\n    if ((long)(param_3 - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }\n  }" { (expression_statement "puVar4 = (undefined8 *)(param_2 * 0x30 + param_1);" (assignment_expression "puVar4 = (undefined8 *)(param_2 * 0x30 + param_1)" identifier = (cast_expression "(undefined8 *)(param_2 * 0x30 + param_1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 * 0x30 + param_1)" ( (binary_expression "param_2 * 0x30 + param_1" (binary_expression "param_2 * 0x30" identifier * number_literal) + identifier) )))) ;) (expression_statement "lVar6 = param_2;" (assignment_expression "lVar6 = param_2" identifier = identifier) ;) (if_statement "if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      uStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }" if (parenthesized_expression "((param_3 & 1) != 0)" ( (binary_expression "(param_3 & 1) != 0" (parenthesized_expression "(param_3 & 1)" ( (binary_expression "param_3 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      uStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }" { (expression_statement "local_68 = in_stack_00000008;" (assignment_expression "local_68 = in_stack_00000008" identifier = identifier) ;) (expression_statement "uStack_60 = in_stack_00000010;" (assignment_expression "uStack_60 = in_stack_00000010" identifier = identifier) ;) (expression_statement "local_58 = in_stack_00000018;" (assignment_expression "local_58 = in_stack_00000018" identifier = identifier) ;) (expression_statement "uStack_50 = in_stack_00000020;" (assignment_expression "uStack_50 = in_stack_00000020" identifier = identifier) ;) (expression_statement "local_48 = in_stack_00000028;" (assignment_expression "local_48 = in_stack_00000028" identifier = identifier) ;) (expression_statement "uStack_40 = in_stack_00000030;" (assignment_expression "uStack_40 = in_stack_00000030" identifier = identifier) ;) (goto_statement "goto LAB_001ebf13;" goto statement_identifier ;) })) (labeled_statement "LAB_001ebfb0:\n    if ((long)(param_3 - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }" statement_identifier : (if_statement "if ((long)(param_3 - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }" if (parenthesized_expression "((long)(param_3 - 2) / 2 == lVar6)" ( (binary_expression "(long)(param_3 - 2) / 2 == lVar6" (binary_expression "(long)(param_3 - 2) / 2" (cast_expression "(long)(param_3 - 2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(param_3 - 2)" ( (binary_expression "param_3 - 2" identifier - number_literal) ))) / number_literal) == identifier) )) (compound_statement "{\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }" { (expression_statement "lVar6 = lVar6 * 2 + 1;" (assignment_expression "lVar6 = lVar6 * 2 + 1" identifier = (binary_expression "lVar6 * 2 + 1" (binary_expression "lVar6 * 2" identifier * number_literal) + number_literal)) ;) (expression_statement "puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);" (assignment_expression "puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1)" identifier = (cast_expression "(undefined8 *)(lVar6 * 0x30 + param_1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 * 0x30 + param_1)" ( (binary_expression "lVar6 * 0x30 + param_1" (binary_expression "lVar6 * 0x30" identifier * number_literal) + identifier) )))) ;) (expression_statement "uVar1 = puVar7[1];" (assignment_expression "uVar1 = puVar7[1]" identifier = (subscript_expression "puVar7[1]" identifier [ number_literal ])) ;) (expression_statement "*puVar4 = *puVar7;" (assignment_expression "*puVar4 = *puVar7" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "puVar4[1] = uVar1;" (assignment_expression "puVar4[1] = uVar1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = puVar7[3];" (assignment_expression "uVar1 = puVar7[3]" identifier = (subscript_expression "puVar7[3]" identifier [ number_literal ])) ;) (expression_statement "puVar4[2] = puVar7[2];" (assignment_expression "puVar4[2] = puVar7[2]" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = (subscript_expression "puVar7[2]" identifier [ number_literal ])) ;) (expression_statement "puVar4[3] = uVar1;" (assignment_expression "puVar4[3] = uVar1" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = puVar7[5];" (assignment_expression "uVar1 = puVar7[5]" identifier = (subscript_expression "puVar7[5]" identifier [ number_literal ])) ;) (expression_statement "puVar4[4] = puVar7[4];" (assignment_expression "puVar4[4] = puVar7[4]" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = (subscript_expression "puVar7[4]" identifier [ number_literal ])) ;) (expression_statement "puVar4[5] = uVar1;" (assignment_expression "puVar4[5] = uVar1" (subscript_expression "puVar4[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4 = puVar7;" (assignment_expression "puVar4 = puVar7" identifier = identifier) ;) }))) }))) (expression_statement "local_68 = in_stack_00000008;" (assignment_expression "local_68 = in_stack_00000008" identifier = identifier) ;) (expression_statement "uStack_60 = in_stack_00000010;" (assignment_expression "uStack_60 = in_stack_00000010" identifier = identifier) ;) (expression_statement "lVar5 = (lVar6 + -1) - (lVar6 + -1 >> 0x3f);" (assignment_expression "lVar5 = (lVar6 + -1) - (lVar6 + -1 >> 0x3f)" identifier = (binary_expression "(lVar6 + -1) - (lVar6 + -1 >> 0x3f)" (parenthesized_expression "(lVar6 + -1)" ( (binary_expression "lVar6 + -1" identifier + number_literal) )) - (parenthesized_expression "(lVar6 + -1 >> 0x3f)" ( (binary_expression "lVar6 + -1 >> 0x3f" (binary_expression "lVar6 + -1" identifier + number_literal) >> number_literal) )))) ;) (expression_statement "local_58 = in_stack_00000018;" (assignment_expression "local_58 = in_stack_00000018" identifier = identifier) ;) (expression_statement "uStack_50 = in_stack_00000020;" (assignment_expression "uStack_50 = in_stack_00000020" identifier = identifier) ;) (expression_statement "local_48 = in_stack_00000028;" (assignment_expression "local_48 = in_stack_00000028" identifier = identifier) ;) (expression_statement "uStack_40 = in_stack_00000030;" (assignment_expression "uStack_40 = in_stack_00000030" identifier = identifier) ;) (if_statement "if (param_2 < lVar6) {\n    do {\n      lVar3 = lVar5 >> 1;\n      puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,&local_68);\n      if ((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))) {\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);\n      lVar6 = lVar3;\n    } while (param_2 < lVar3);\n  }" if (parenthesized_expression "(param_2 < lVar6)" ( (binary_expression "param_2 < lVar6" identifier < identifier) )) (compound_statement "{\n    do {\n      lVar3 = lVar5 >> 1;\n      puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,&local_68);\n      if ((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))) {\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);\n      lVar6 = lVar3;\n    } while (param_2 < lVar3);\n  }" { (do_statement "do {\n      lVar3 = lVar5 >> 1;\n      puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,&local_68);\n      if ((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))) {\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);\n      lVar6 = lVar3;\n    } while (param_2 < lVar3);" do (compound_statement "{\n      lVar3 = lVar5 >> 1;\n      puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,&local_68);\n      if ((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))) {\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);\n      lVar6 = lVar3;\n    }" { (expression_statement "lVar3 = lVar5 >> 1;" (assignment_expression "lVar3 = lVar5 >> 1" identifier = (binary_expression "lVar5 >> 1" identifier >> number_literal)) ;) (expression_statement "puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1);" (assignment_expression "puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1)" identifier = (cast_expression "(undefined8 *)(lVar3 * 0x30 + param_1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 * 0x30 + param_1)" ( (binary_expression "lVar3 * 0x30 + param_1" (binary_expression "lVar3 * 0x30" identifier * number_literal) + identifier) )))) ;) (expression_statement "iVar2 = FUN_001e4d20(puVar4,&local_68);" (assignment_expression "iVar2 = FUN_001e4d20(puVar4,&local_68)" identifier = (call_expression "FUN_001e4d20(puVar4,&local_68)" identifier (argument_list "(puVar4,&local_68)" ( identifier , (pointer_expression "&local_68" & identifier) )))) ;) (if_statement "if ((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))) {\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }" if (parenthesized_expression "((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5]))))" ( (binary_expression "(-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))" (parenthesized_expression "(-1 < iVar2)" ( (binary_expression "-1 < iVar2" number_literal < identifier) )) && (parenthesized_expression "((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))" ( (parenthesized_expression "(iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5]))" ( (binary_expression "iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])" (binary_expression "iVar2 != 0" identifier != number_literal) || (parenthesized_expression "(uStack_40 <= (ulong)puVar4[5])" ( (binary_expression "uStack_40 <= (ulong)puVar4[5]" identifier <= (cast_expression "(ulong)puVar4[5]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "puVar4[5]" identifier [ number_literal ]))) ))) )) ))) )) (compound_statement "{\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }" { (expression_statement "puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);" (assignment_expression "puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1)" identifier = (cast_expression "(undefined8 *)(lVar6 * 0x30 + param_1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 * 0x30 + param_1)" ( (binary_expression "lVar6 * 0x30 + param_1" (binary_expression "lVar6 * 0x30" identifier * number_literal) + identifier) )))) ;) (break_statement "break;" break ;) })) (expression_statement "uVar1 = puVar4[1];" (assignment_expression "uVar1 = puVar4[1]" identifier = (subscript_expression "puVar4[1]" identifier [ number_literal ])) ;) (expression_statement "puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);" (assignment_expression "puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1)" identifier = (cast_expression "(undefined8 *)(lVar6 * 0x30 + param_1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 * 0x30 + param_1)" ( (binary_expression "lVar6 * 0x30 + param_1" (binary_expression "lVar6 * 0x30" identifier * number_literal) + identifier) )))) ;) (expression_statement "*puVar7 = *puVar4;" (assignment_expression "*puVar7 = *puVar4" (pointer_expression "*puVar7" * identifier) = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar7[1] = uVar1;" (assignment_expression "puVar7[1] = uVar1" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = puVar4[3];" (assignment_expression "uVar1 = puVar4[3]" identifier = (subscript_expression "puVar4[3]" identifier [ number_literal ])) ;) (expression_statement "puVar7[2] = puVar4[2];" (assignment_expression "puVar7[2] = puVar4[2]" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = (subscript_expression "puVar4[2]" identifier [ number_literal ])) ;) (expression_statement "puVar7[3] = uVar1;" (assignment_expression "puVar7[3] = uVar1" (subscript_expression "puVar7[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = puVar4[5];" (assignment_expression "uVar1 = puVar4[5]" identifier = (subscript_expression "puVar4[5]" identifier [ number_literal ])) ;) (expression_statement "puVar7[4] = puVar4[4];" (assignment_expression "puVar7[4] = puVar4[4]" (subscript_expression "puVar7[4]" identifier [ number_literal ]) = (subscript_expression "puVar4[4]" identifier [ number_literal ])) ;) (expression_statement "puVar7[5] = uVar1;" (assignment_expression "puVar7[5] = uVar1" (subscript_expression "puVar7[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);" (assignment_expression "lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f)" identifier = (binary_expression "(lVar3 + -1) - (lVar3 + -1 >> 0x3f)" (parenthesized_expression "(lVar3 + -1)" ( (binary_expression "lVar3 + -1" identifier + number_literal) )) - (parenthesized_expression "(lVar3 + -1 >> 0x3f)" ( (binary_expression "lVar3 + -1 >> 0x3f" (binary_expression "lVar3 + -1" identifier + number_literal) >> number_literal) )))) ;) (expression_statement "lVar6 = lVar3;" (assignment_expression "lVar6 = lVar3" identifier = identifier) ;) }) while (parenthesized_expression "(param_2 < lVar3)" ( (binary_expression "param_2 < lVar3" identifier < identifier) )) ;) })) (labeled_statement "LAB_001ebf13:\n  *puVar4 = local_68;" statement_identifier : (expression_statement "*puVar4 = local_68;" (assignment_expression "*puVar4 = local_68" (pointer_expression "*puVar4" * identifier) = identifier) ;)) (expression_statement "puVar4[1] = uStack_60;" (assignment_expression "puVar4[1] = uStack_60" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[2] = local_58;" (assignment_expression "puVar4[2] = local_58" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[3] = uStack_50;" (assignment_expression "puVar4[3] = uStack_50" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[4] = local_48;" (assignment_expression "puVar4[4] = local_48" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[5] = uStack_40;" (assignment_expression "puVar4[5] = uStack_40" (subscript_expression "puVar4[5]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* DWARF original name: __adjust_heap<__gnu_cxx::__normal_iterator<gold::Output_reloc<4, true, 64,\n   false>*, std::vector<gold::Output_reloc<4, true, 64, false>, std::allocator<gold::Output_reloc<4,\n   true, 64, false> > > >, long int, gold::Output_reloc<4, true, 64, false>,\n   __gnu_cxx::__ops::_Iter_comp_iter<gold::Output_data_reloc_base<4, true, 64,\n   false>::Sort_relocs_comparison> > */\n\nvoid std::\n     __adjust_heap<__gnu_cxx::__normal_iterator<gold::Output_reloc<4,_true,_64,_false>*,_std::vector<gold::Output_reloc<4,_true,_64,_false>,_std::allocator<gold::Output_reloc<4,_true,_64,_false>_>_>_>,_long_int,_gold::Output_reloc<4,_true,_64,_false>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Output_data_reloc_base<4,_true,_64,_false>::Sort_relocs_comparison>_>\n               (long __first,long __holeIndex,ulong __len)\n\n{\n  anon_union_8_4_c82d8563_for_u1_ aVar1;\n  int iVar2;\n  long lVar3;\n  anon_union_8_4_c82d8563_for_u1_ *this;\n  long lVar4;\n  long lVar5;\n  anon_union_8_4_c82d8563_for_u1_ *paVar6;\n  anon_union_8_4_c82d8563_for_u1_ __value;\n  anon_union_8_4_c82d8563_for_u1_ in_stack_00000010;\n  anon_union_8_4_c82d8563_for_u1_ in_stack_00000018;\n  anon_union_8_4_c82d8563_for_u1_ in_stack_00000020;\n  anon_union_8_4_c82d8563_for_u1_ in_stack_00000028;\n  Sized_relobj<64,_false> *in_stack_00000030;\n  anon_union_8_4_c82d8563_for_u1_ local_68;\n  anon_union_8_4_c82d8563_for_u1_ aStack_60;\n  anon_union_8_4_c82d8563_for_u1_ local_58;\n  anon_union_8_4_c82d8563_for_u1_ aStack_50;\n  anon_union_8_4_c82d8563_for_u1_ local_48;\n  Sized_relobj<64,_false> *pSStack_40;\n  \n  lVar3 = (long)(__len - 1) / 2;\n  lVar4 = __holeIndex;\n  if (__holeIndex < lVar3) {\n    do {\n      lVar5 = (lVar4 + 1) * 2;\n      this = (anon_union_8_4_c82d8563_for_u1_ *)((lVar4 + 1) * 0x60 + __first);\n      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)((lVar5 + -1) * 0x30 + __first);\n      iVar2 = gold::Output_reloc<9,_true,_64,_false>::compare\n                        ((Output_reloc<9,_true,_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)paVar6);\n      if ((iVar2 < 0) || ((iVar2 == 0 && (this[5].relobj < paVar6[5].relobj)))) {\n        this = paVar6;\n        lVar5 = lVar5 + -1;\n      }\n      aVar1 = this[1];\n      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar4 * 0x30 + __first);\n      *paVar6 = *this;\n      paVar6[1] = aVar1;\n      aVar1 = this[3];\n      paVar6[2] = this[2];\n      paVar6[3] = aVar1;\n      aVar1 = this[5];\n      paVar6[4] = this[4];\n      paVar6[5] = aVar1;\n      lVar4 = lVar5;\n    } while (lVar5 < lVar3);\n    if ((__len & 1) == 0) goto LAB_001ebfb0;\n  }\n  else {\n    this = (anon_union_8_4_c82d8563_for_u1_ *)(__holeIndex * 0x30 + __first);\n    lVar5 = __holeIndex;\n    if ((__len & 1) != 0) {\n      local_68 = __value;\n      aStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      aStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      pSStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }\nLAB_001ebfb0:\n    if ((long)(__len - 2) / 2 == lVar5) {\n      lVar5 = lVar5 * 2 + 1;\n      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first);\n      aVar1 = paVar6[1];\n      *this = *paVar6;\n      this[1] = aVar1;\n      aVar1 = paVar6[3];\n      this[2] = paVar6[2];\n      this[3] = aVar1;\n      aVar1 = paVar6[5];\n      this[4] = paVar6[4];\n      this[5] = aVar1;\n      this = paVar6;\n    }\n  }\n  local_68 = __value;\n  aStack_60 = in_stack_00000010;\n  lVar4 = (lVar5 + -1) - (lVar5 + -1 >> 0x3f);\n  local_58 = in_stack_00000018;\n  aStack_50 = in_stack_00000020;\n  local_48 = in_stack_00000028;\n  pSStack_40 = in_stack_00000030;\n  if (__holeIndex < lVar5) {\n    do {\n      lVar3 = lVar4 >> 1;\n      this = (anon_union_8_4_c82d8563_for_u1_ *)(lVar3 * 0x30 + __first);\n      iVar2 = gold::Output_reloc<9,_true,_64,_false>::compare\n                        ((Output_reloc<9,_true,_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)&local_68);\n      if ((-1 < iVar2) && ((iVar2 != 0 || (pSStack_40 <= this[5].relobj)))) {\n        this = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first);\n        break;\n      }\n      aVar1 = this[1];\n      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first);\n      *paVar6 = *this;\n      paVar6[1] = aVar1;\n      aVar1 = this[3];\n      paVar6[2] = this[2];\n      paVar6[3] = aVar1;\n      aVar1 = this[5];\n      paVar6[4] = this[4];\n      paVar6[5] = aVar1;\n      lVar4 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);\n      lVar5 = lVar3;\n    } while (__holeIndex < lVar3);\n  }\nLAB_001ebf13:\n  *this = local_68;\n  this[1] = aStack_60;\n  this[2] = local_58;\n  this[3] = aStack_50;\n  this[4] = local_48;\n  this[5].relobj = pSStack_40;\n  return;\n}\n\n" comment comment (declaration "void std::\n     __adjust_heap<__gnu_cxx::__normal_iterator<gold::Output_reloc<4,_true,_64,_false>*,_std::vector<gold::Output_reloc<4,_true,_64,_false>,_std::allocator<gold::Output_reloc<4,_true,_64,_false>_>_>_>,_long_int,_gold::Output_reloc<4,_true,_64,_false>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Output_data_reloc_base<4,_true,_64,_false>::Sort_relocs_comparison>_>\n               (long __first,long __holeIndex,ulong __len)\n\n{\n  anon_union_8_4_c82d8563_for_u1_ aVar1;" primitive_type (ERROR "std::\n     __adjust_heap<__gnu_cxx::__normal_iterator<gold::" identifier : : identifier < identifier : : identifier < identifier : :) identifier (ERROR "<4" < number_literal) , identifier , identifier , identifier (ERROR ">*" > *) , (ERROR "_std::vector<gold::" identifier : : identifier < identifier : :) identifier (ERROR "<4" < number_literal) , identifier , identifier , identifier (ERROR ">" >) , (ERROR "_std::allocator<gold::" identifier : : identifier < identifier : :) identifier (ERROR "<4" < number_literal) , identifier , identifier , identifier (ERROR ">_>_>_>" > identifier > identifier > identifier >) , identifier , (ERROR "_gold::" identifier : :) identifier (ERROR "<4" < number_literal) , identifier , identifier , identifier (ERROR ">" >) , (ERROR "___gnu_cxx::__ops::_Iter_comp_iter<gold::" identifier : : identifier : : identifier < identifier : :) identifier (ERROR "<4" < number_literal) , identifier , identifier , (ERROR "_false>::Sort_relocs_comparison>_>\n               (long __first,long __holeIndex,ulong __len)\n\n{\n  anon_union_8_4_c82d8563_for_u1_" identifier > : : identifier > (function_declarator "_>\n               (long __first,long __holeIndex,ulong __len)" identifier (ERROR ">" >) (parameter_list "(long __first,long __holeIndex,ulong __len)" ( (parameter_declaration "long __first" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long __holeIndex" (sized_type_specifier "long" long) identifier) , (parameter_declaration "ulong __len" type_identifier identifier) ))) { identifier) identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "anon_union_8_4_c82d8563_for_u1_ *this;" type_identifier (pointer_declarator "*this" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "anon_union_8_4_c82d8563_for_u1_ *paVar6;" type_identifier (pointer_declarator "*paVar6" * identifier) ;) (declaration "anon_union_8_4_c82d8563_for_u1_ __value;" type_identifier identifier ;) (declaration "anon_union_8_4_c82d8563_for_u1_ in_stack_00000010;" type_identifier identifier ;) (declaration "anon_union_8_4_c82d8563_for_u1_ in_stack_00000018;" type_identifier identifier ;) (declaration "anon_union_8_4_c82d8563_for_u1_ in_stack_00000020;" type_identifier identifier ;) (declaration "anon_union_8_4_c82d8563_for_u1_ in_stack_00000028;" type_identifier identifier ;) (expression_statement "Sized_relobj<64,_false> *in_stack_00000030;" (update_expression "Sized_relobj<64,_false> *in_stack_00000030" (binary_expression "Sized_relobj<64,_false> *in_stack_00000030" (binary_expression "Sized_relobj<64" identifier < number_literal) (ERROR ",_false" , identifier) > (pointer_expression "*in_stack_00000030" * identifier)) --) ;) (declaration "anon_union_8_4_c82d8563_for_u1_ local_68;" type_identifier identifier ;) (declaration "anon_union_8_4_c82d8563_for_u1_ aStack_60;" type_identifier identifier ;) (declaration "anon_union_8_4_c82d8563_for_u1_ local_58;" type_identifier identifier ;) (declaration "anon_union_8_4_c82d8563_for_u1_ aStack_50;" type_identifier identifier ;) (declaration "anon_union_8_4_c82d8563_for_u1_ local_48;" type_identifier identifier ;) (expression_statement "Sized_relobj<64,_false> *pSStack_40;" (update_expression "Sized_relobj<64,_false> *pSStack_40" (binary_expression "Sized_relobj<64,_false> *pSStack_40" (binary_expression "Sized_relobj<64" identifier < number_literal) (ERROR ",_false" , identifier) > (pointer_expression "*pSStack_40" * identifier)) --) ;) (expression_statement "lVar3 = (long)(__len - 1) / 2;" (assignment_expression "lVar3 = (long)(__len - 1) / 2" identifier = (binary_expression "(long)(__len - 1) / 2" (cast_expression "(long)(__len - 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(__len - 1)" ( (binary_expression "__len - 1" identifier - number_literal) ))) / number_literal)) ;) (expression_statement "lVar4 = __holeIndex;" (assignment_expression "lVar4 = __holeIndex" identifier = identifier) ;) (if_statement "if (__holeIndex < lVar3) {\n    do {\n      lVar5 = (lVar4 + 1) * 2;\n      this = (anon_union_8_4_c82d8563_for_u1_ *)((lVar4 + 1) * 0x60 + __first);\n      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)((lVar5 + -1) * 0x30 + __first);\n      iVar2 = gold::Output_reloc<9,_true,_64,_false>::compare\n                        ((Output_reloc<9,_true,_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)paVar6);\n      if ((iVar2 < 0) || ((iVar2 == 0 && (this[5].relobj < paVar6[5].relobj)))) {\n        this = paVar6;\n        lVar5 = lVar5 + -1;\n      }\n      aVar1 = this[1];\n      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar4 * 0x30 + __first);\n      *paVar6 = *this;\n      paVar6[1] = aVar1;\n      aVar1 = this[3];\n      paVar6[2] = this[2];\n      paVar6[3] = aVar1;\n      aVar1 = this[5];\n      paVar6[4] = this[4];\n      paVar6[5] = aVar1;\n      lVar4 = lVar5;\n    } while (lVar5 < lVar3);\n    if ((__len & 1) == 0) goto LAB_001ebfb0;\n  }\n  else {\n    this = (anon_union_8_4_c82d8563_for_u1_ *)(__holeIndex * 0x30 + __first);\n    lVar5 = __holeIndex;\n    if ((__len & 1) != 0) {\n      local_68 = __value;\n      aStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      aStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      pSStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }\nLAB_001ebfb0:\n    if ((long)(__len - 2) / 2 == lVar5) {\n      lVar5 = lVar5 * 2 + 1;\n      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first);\n      aVar1 = paVar6[1];\n      *this = *paVar6;\n      this[1] = aVar1;\n      aVar1 = paVar6[3];\n      this[2] = paVar6[2];\n      this[3] = aVar1;\n      aVar1 = paVar6[5];\n      this[4] = paVar6[4];\n      this[5] = aVar1;\n      this = paVar6;\n    }\n  }" if (parenthesized_expression "(__holeIndex < lVar3)" ( (binary_expression "__holeIndex < lVar3" identifier < identifier) )) (compound_statement "{\n    do {\n      lVar5 = (lVar4 + 1) * 2;\n      this = (anon_union_8_4_c82d8563_for_u1_ *)((lVar4 + 1) * 0x60 + __first);\n      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)((lVar5 + -1) * 0x30 + __first);\n      iVar2 = gold::Output_reloc<9,_true,_64,_false>::compare\n                        ((Output_reloc<9,_true,_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)paVar6);\n      if ((iVar2 < 0) || ((iVar2 == 0 && (this[5].relobj < paVar6[5].relobj)))) {\n        this = paVar6;\n        lVar5 = lVar5 + -1;\n      }\n      aVar1 = this[1];\n      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar4 * 0x30 + __first);\n      *paVar6 = *this;\n      paVar6[1] = aVar1;\n      aVar1 = this[3];\n      paVar6[2] = this[2];\n      paVar6[3] = aVar1;\n      aVar1 = this[5];\n      paVar6[4] = this[4];\n      paVar6[5] = aVar1;\n      lVar4 = lVar5;\n    } while (lVar5 < lVar3);\n    if ((__len & 1) == 0) goto LAB_001ebfb0;\n  }" { (do_statement "do {\n      lVar5 = (lVar4 + 1) * 2;\n      this = (anon_union_8_4_c82d8563_for_u1_ *)((lVar4 + 1) * 0x60 + __first);\n      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)((lVar5 + -1) * 0x30 + __first);\n      iVar2 = gold::Output_reloc<9,_true,_64,_false>::compare\n                        ((Output_reloc<9,_true,_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)paVar6);\n      if ((iVar2 < 0) || ((iVar2 == 0 && (this[5].relobj < paVar6[5].relobj)))) {\n        this = paVar6;\n        lVar5 = lVar5 + -1;\n      }\n      aVar1 = this[1];\n      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar4 * 0x30 + __first);\n      *paVar6 = *this;\n      paVar6[1] = aVar1;\n      aVar1 = this[3];\n      paVar6[2] = this[2];\n      paVar6[3] = aVar1;\n      aVar1 = this[5];\n      paVar6[4] = this[4];\n      paVar6[5] = aVar1;\n      lVar4 = lVar5;\n    } while (lVar5 < lVar3);" do (compound_statement "{\n      lVar5 = (lVar4 + 1) * 2;\n      this = (anon_union_8_4_c82d8563_for_u1_ *)((lVar4 + 1) * 0x60 + __first);\n      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)((lVar5 + -1) * 0x30 + __first);\n      iVar2 = gold::Output_reloc<9,_true,_64,_false>::compare\n                        ((Output_reloc<9,_true,_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)paVar6);\n      if ((iVar2 < 0) || ((iVar2 == 0 && (this[5].relobj < paVar6[5].relobj)))) {\n        this = paVar6;\n        lVar5 = lVar5 + -1;\n      }\n      aVar1 = this[1];\n      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar4 * 0x30 + __first);\n      *paVar6 = *this;\n      paVar6[1] = aVar1;\n      aVar1 = this[3];\n      paVar6[2] = this[2];\n      paVar6[3] = aVar1;\n      aVar1 = this[5];\n      paVar6[4] = this[4];\n      paVar6[5] = aVar1;\n      lVar4 = lVar5;\n    }" { (expression_statement "lVar5 = (lVar4 + 1) * 2;" (assignment_expression "lVar5 = (lVar4 + 1) * 2" identifier = (binary_expression "(lVar4 + 1) * 2" (parenthesized_expression "(lVar4 + 1)" ( (binary_expression "lVar4 + 1" identifier + number_literal) )) * number_literal)) ;) (expression_statement "this = (anon_union_8_4_c82d8563_for_u1_ *)((lVar4 + 1) * 0x60 + __first);" (assignment_expression "this = (anon_union_8_4_c82d8563_for_u1_ *)((lVar4 + 1) * 0x60 + __first)" identifier = (cast_expression "(anon_union_8_4_c82d8563_for_u1_ *)((lVar4 + 1) * 0x60 + __first)" ( (type_descriptor "anon_union_8_4_c82d8563_for_u1_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((lVar4 + 1) * 0x60 + __first)" ( (binary_expression "(lVar4 + 1) * 0x60 + __first" (binary_expression "(lVar4 + 1) * 0x60" (parenthesized_expression "(lVar4 + 1)" ( (binary_expression "lVar4 + 1" identifier + number_literal) )) * number_literal) + identifier) )))) ;) (expression_statement "paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)((lVar5 + -1) * 0x30 + __first);" (assignment_expression "paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)((lVar5 + -1) * 0x30 + __first)" identifier = (cast_expression "(anon_union_8_4_c82d8563_for_u1_ *)((lVar5 + -1) * 0x30 + __first)" ( (type_descriptor "anon_union_8_4_c82d8563_for_u1_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((lVar5 + -1) * 0x30 + __first)" ( (binary_expression "(lVar5 + -1) * 0x30 + __first" (binary_expression "(lVar5 + -1) * 0x30" (parenthesized_expression "(lVar5 + -1)" ( (binary_expression "lVar5 + -1" identifier + number_literal) )) * number_literal) + identifier) )))) ;) (ERROR "iVar2 = gold::" (assignment_expression "iVar2 = gold" identifier = identifier) : :) (expression_statement "Output_reloc<9,_true,_64,_false>::compare\n                        ((Output_reloc<9,_true,_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)paVar6);" (comma_expression "Output_reloc<9,_true,_64,_false>::compare" (binary_expression "Output_reloc<9" identifier < number_literal) , (comma_expression "_true,_64,_false>::compare" identifier , (comma_expression "_64,_false>::compare" identifier , (binary_expression "_false>::compare" identifier > (ERROR "::" : :) identifier)))) (ERROR "((Output_reloc<9,_true,_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)paVar6)" ( ( (comma_expression "Output_reloc<9,_true,_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)paVar6)" (binary_expression "Output_reloc<9" identifier < number_literal) , (comma_expression "_true,_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)paVar6)" identifier , (comma_expression "_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)paVar6)" identifier , (comma_expression "_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)paVar6)" (binary_expression "_false> *)this" identifier > (pointer_expression "*)this" * (ERROR ")" )) identifier)) , (parenthesized_expression "(Output_reloc<9,_true,_64,_false> *)paVar6)" ( (comma_expression "Output_reloc<9,_true,_64,_false> *)paVar6" (binary_expression "Output_reloc<9" identifier < number_literal) , (comma_expression "_true,_64,_false> *)paVar6" identifier , (comma_expression "_64,_false> *)paVar6" identifier , (binary_expression "_false> *)paVar6" identifier > (pointer_expression "*)paVar6" * (ERROR ")" )) identifier))))) ))))))) ;) (if_statement "if ((iVar2 < 0) || ((iVar2 == 0 && (this[5].relobj < paVar6[5].relobj)))) {\n        this = paVar6;\n        lVar5 = lVar5 + -1;\n      }" if (parenthesized_expression "((iVar2 < 0) || ((iVar2 == 0 && (this[5].relobj < paVar6[5].relobj))))" ( (binary_expression "(iVar2 < 0) || ((iVar2 == 0 && (this[5].relobj < paVar6[5].relobj)))" (parenthesized_expression "(iVar2 < 0)" ( (binary_expression "iVar2 < 0" identifier < number_literal) )) || (parenthesized_expression "((iVar2 == 0 && (this[5].relobj < paVar6[5].relobj)))" ( (parenthesized_expression "(iVar2 == 0 && (this[5].relobj < paVar6[5].relobj))" ( (binary_expression "iVar2 == 0 && (this[5].relobj < paVar6[5].relobj)" (binary_expression "iVar2 == 0" identifier == number_literal) && (parenthesized_expression "(this[5].relobj < paVar6[5].relobj)" ( (binary_expression "this[5].relobj < paVar6[5].relobj" (field_expression "this[5].relobj" (subscript_expression "this[5]" identifier [ number_literal ]) . field_identifier) < (field_expression "paVar6[5].relobj" (subscript_expression "paVar6[5]" identifier [ number_literal ]) . field_identifier)) ))) )) ))) )) (compound_statement "{\n        this = paVar6;\n        lVar5 = lVar5 + -1;\n      }" { (expression_statement "this = paVar6;" (assignment_expression "this = paVar6" identifier = identifier) ;) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -1" identifier + number_literal)) ;) })) (expression_statement "aVar1 = this[1];" (assignment_expression "aVar1 = this[1]" identifier = (subscript_expression "this[1]" identifier [ number_literal ])) ;) (expression_statement "paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar4 * 0x30 + __first);" (assignment_expression "paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar4 * 0x30 + __first)" identifier = (cast_expression "(anon_union_8_4_c82d8563_for_u1_ *)(lVar4 * 0x30 + __first)" ( (type_descriptor "anon_union_8_4_c82d8563_for_u1_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 * 0x30 + __first)" ( (binary_expression "lVar4 * 0x30 + __first" (binary_expression "lVar4 * 0x30" identifier * number_literal) + identifier) )))) ;) (expression_statement "*paVar6 = *this;" (assignment_expression "*paVar6 = *this" (pointer_expression "*paVar6" * identifier) = (pointer_expression "*this" * identifier)) ;) (expression_statement "paVar6[1] = aVar1;" (assignment_expression "paVar6[1] = aVar1" (subscript_expression "paVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "aVar1 = this[3];" (assignment_expression "aVar1 = this[3]" identifier = (subscript_expression "this[3]" identifier [ number_literal ])) ;) (expression_statement "paVar6[2] = this[2];" (assignment_expression "paVar6[2] = this[2]" (subscript_expression "paVar6[2]" identifier [ number_literal ]) = (subscript_expression "this[2]" identifier [ number_literal ])) ;) (expression_statement "paVar6[3] = aVar1;" (assignment_expression "paVar6[3] = aVar1" (subscript_expression "paVar6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "aVar1 = this[5];" (assignment_expression "aVar1 = this[5]" identifier = (subscript_expression "this[5]" identifier [ number_literal ])) ;) (expression_statement "paVar6[4] = this[4];" (assignment_expression "paVar6[4] = this[4]" (subscript_expression "paVar6[4]" identifier [ number_literal ]) = (subscript_expression "this[4]" identifier [ number_literal ])) ;) (expression_statement "paVar6[5] = aVar1;" (assignment_expression "paVar6[5] = aVar1" (subscript_expression "paVar6[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "lVar4 = lVar5;" (assignment_expression "lVar4 = lVar5" identifier = identifier) ;) }) while (parenthesized_expression "(lVar5 < lVar3)" ( (binary_expression "lVar5 < lVar3" identifier < identifier) )) ;) (if_statement "if ((__len & 1) == 0) goto LAB_001ebfb0;" if (parenthesized_expression "((__len & 1) == 0)" ( (binary_expression "(__len & 1) == 0" (parenthesized_expression "(__len & 1)" ( (binary_expression "__len & 1" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001ebfb0;" goto statement_identifier ;)) }) (else_clause "else {\n    this = (anon_union_8_4_c82d8563_for_u1_ *)(__holeIndex * 0x30 + __first);\n    lVar5 = __holeIndex;\n    if ((__len & 1) != 0) {\n      local_68 = __value;\n      aStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      aStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      pSStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }\nLAB_001ebfb0:\n    if ((long)(__len - 2) / 2 == lVar5) {\n      lVar5 = lVar5 * 2 + 1;\n      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first);\n      aVar1 = paVar6[1];\n      *this = *paVar6;\n      this[1] = aVar1;\n      aVar1 = paVar6[3];\n      this[2] = paVar6[2];\n      this[3] = aVar1;\n      aVar1 = paVar6[5];\n      this[4] = paVar6[4];\n      this[5] = aVar1;\n      this = paVar6;\n    }\n  }" else (compound_statement "{\n    this = (anon_union_8_4_c82d8563_for_u1_ *)(__holeIndex * 0x30 + __first);\n    lVar5 = __holeIndex;\n    if ((__len & 1) != 0) {\n      local_68 = __value;\n      aStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      aStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      pSStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }\nLAB_001ebfb0:\n    if ((long)(__len - 2) / 2 == lVar5) {\n      lVar5 = lVar5 * 2 + 1;\n      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first);\n      aVar1 = paVar6[1];\n      *this = *paVar6;\n      this[1] = aVar1;\n      aVar1 = paVar6[3];\n      this[2] = paVar6[2];\n      this[3] = aVar1;\n      aVar1 = paVar6[5];\n      this[4] = paVar6[4];\n      this[5] = aVar1;\n      this = paVar6;\n    }\n  }" { (expression_statement "this = (anon_union_8_4_c82d8563_for_u1_ *)(__holeIndex * 0x30 + __first);" (assignment_expression "this = (anon_union_8_4_c82d8563_for_u1_ *)(__holeIndex * 0x30 + __first)" identifier = (cast_expression "(anon_union_8_4_c82d8563_for_u1_ *)(__holeIndex * 0x30 + __first)" ( (type_descriptor "anon_union_8_4_c82d8563_for_u1_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__holeIndex * 0x30 + __first)" ( (binary_expression "__holeIndex * 0x30 + __first" (binary_expression "__holeIndex * 0x30" identifier * number_literal) + identifier) )))) ;) (expression_statement "lVar5 = __holeIndex;" (assignment_expression "lVar5 = __holeIndex" identifier = identifier) ;) (if_statement "if ((__len & 1) != 0) {\n      local_68 = __value;\n      aStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      aStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      pSStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }" if (parenthesized_expression "((__len & 1) != 0)" ( (binary_expression "(__len & 1) != 0" (parenthesized_expression "(__len & 1)" ( (binary_expression "__len & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_68 = __value;\n      aStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      aStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      pSStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }" { (expression_statement "local_68 = __value;" (assignment_expression "local_68 = __value" identifier = identifier) ;) (expression_statement "aStack_60 = in_stack_00000010;" (assignment_expression "aStack_60 = in_stack_00000010" identifier = identifier) ;) (expression_statement "local_58 = in_stack_00000018;" (assignment_expression "local_58 = in_stack_00000018" identifier = identifier) ;) (expression_statement "aStack_50 = in_stack_00000020;" (assignment_expression "aStack_50 = in_stack_00000020" identifier = identifier) ;) (expression_statement "local_48 = in_stack_00000028;" (assignment_expression "local_48 = in_stack_00000028" identifier = identifier) ;) (expression_statement "pSStack_40 = in_stack_00000030;" (assignment_expression "pSStack_40 = in_stack_00000030" identifier = identifier) ;) (goto_statement "goto LAB_001ebf13;" goto statement_identifier ;) })) (labeled_statement "LAB_001ebfb0:\n    if ((long)(__len - 2) / 2 == lVar5) {\n      lVar5 = lVar5 * 2 + 1;\n      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first);\n      aVar1 = paVar6[1];\n      *this = *paVar6;\n      this[1] = aVar1;\n      aVar1 = paVar6[3];\n      this[2] = paVar6[2];\n      this[3] = aVar1;\n      aVar1 = paVar6[5];\n      this[4] = paVar6[4];\n      this[5] = aVar1;\n      this = paVar6;\n    }" statement_identifier : (if_statement "if ((long)(__len - 2) / 2 == lVar5) {\n      lVar5 = lVar5 * 2 + 1;\n      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first);\n      aVar1 = paVar6[1];\n      *this = *paVar6;\n      this[1] = aVar1;\n      aVar1 = paVar6[3];\n      this[2] = paVar6[2];\n      this[3] = aVar1;\n      aVar1 = paVar6[5];\n      this[4] = paVar6[4];\n      this[5] = aVar1;\n      this = paVar6;\n    }" if (parenthesized_expression "((long)(__len - 2) / 2 == lVar5)" ( (binary_expression "(long)(__len - 2) / 2 == lVar5" (binary_expression "(long)(__len - 2) / 2" (cast_expression "(long)(__len - 2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(__len - 2)" ( (binary_expression "__len - 2" identifier - number_literal) ))) / number_literal) == identifier) )) (compound_statement "{\n      lVar5 = lVar5 * 2 + 1;\n      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first);\n      aVar1 = paVar6[1];\n      *this = *paVar6;\n      this[1] = aVar1;\n      aVar1 = paVar6[3];\n      this[2] = paVar6[2];\n      this[3] = aVar1;\n      aVar1 = paVar6[5];\n      this[4] = paVar6[4];\n      this[5] = aVar1;\n      this = paVar6;\n    }" { (expression_statement "lVar5 = lVar5 * 2 + 1;" (assignment_expression "lVar5 = lVar5 * 2 + 1" identifier = (binary_expression "lVar5 * 2 + 1" (binary_expression "lVar5 * 2" identifier * number_literal) + number_literal)) ;) (expression_statement "paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first);" (assignment_expression "paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first)" identifier = (cast_expression "(anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first)" ( (type_descriptor "anon_union_8_4_c82d8563_for_u1_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 * 0x30 + __first)" ( (binary_expression "lVar5 * 0x30 + __first" (binary_expression "lVar5 * 0x30" identifier * number_literal) + identifier) )))) ;) (expression_statement "aVar1 = paVar6[1];" (assignment_expression "aVar1 = paVar6[1]" identifier = (subscript_expression "paVar6[1]" identifier [ number_literal ])) ;) (expression_statement "*this = *paVar6;" (assignment_expression "*this = *paVar6" (pointer_expression "*this" * identifier) = (pointer_expression "*paVar6" * identifier)) ;) (expression_statement "this[1] = aVar1;" (assignment_expression "this[1] = aVar1" (subscript_expression "this[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "aVar1 = paVar6[3];" (assignment_expression "aVar1 = paVar6[3]" identifier = (subscript_expression "paVar6[3]" identifier [ number_literal ])) ;) (expression_statement "this[2] = paVar6[2];" (assignment_expression "this[2] = paVar6[2]" (subscript_expression "this[2]" identifier [ number_literal ]) = (subscript_expression "paVar6[2]" identifier [ number_literal ])) ;) (expression_statement "this[3] = aVar1;" (assignment_expression "this[3] = aVar1" (subscript_expression "this[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "aVar1 = paVar6[5];" (assignment_expression "aVar1 = paVar6[5]" identifier = (subscript_expression "paVar6[5]" identifier [ number_literal ])) ;) (expression_statement "this[4] = paVar6[4];" (assignment_expression "this[4] = paVar6[4]" (subscript_expression "this[4]" identifier [ number_literal ]) = (subscript_expression "paVar6[4]" identifier [ number_literal ])) ;) (expression_statement "this[5] = aVar1;" (assignment_expression "this[5] = aVar1" (subscript_expression "this[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "this = paVar6;" (assignment_expression "this = paVar6" identifier = identifier) ;) }))) }))) (expression_statement "local_68 = __value;" (assignment_expression "local_68 = __value" identifier = identifier) ;) (expression_statement "aStack_60 = in_stack_00000010;" (assignment_expression "aStack_60 = in_stack_00000010" identifier = identifier) ;) (expression_statement "lVar4 = (lVar5 + -1) - (lVar5 + -1 >> 0x3f);" (assignment_expression "lVar4 = (lVar5 + -1) - (lVar5 + -1 >> 0x3f)" identifier = (binary_expression "(lVar5 + -1) - (lVar5 + -1 >> 0x3f)" (parenthesized_expression "(lVar5 + -1)" ( (binary_expression "lVar5 + -1" identifier + number_literal) )) - (parenthesized_expression "(lVar5 + -1 >> 0x3f)" ( (binary_expression "lVar5 + -1 >> 0x3f" (binary_expression "lVar5 + -1" identifier + number_literal) >> number_literal) )))) ;) (expression_statement "local_58 = in_stack_00000018;" (assignment_expression "local_58 = in_stack_00000018" identifier = identifier) ;) (expression_statement "aStack_50 = in_stack_00000020;" (assignment_expression "aStack_50 = in_stack_00000020" identifier = identifier) ;) (expression_statement "local_48 = in_stack_00000028;" (assignment_expression "local_48 = in_stack_00000028" identifier = identifier) ;) (expression_statement "pSStack_40 = in_stack_00000030;" (assignment_expression "pSStack_40 = in_stack_00000030" identifier = identifier) ;) (if_statement "if (__holeIndex < lVar5) {\n    do {\n      lVar3 = lVar4 >> 1;\n      this = (anon_union_8_4_c82d8563_for_u1_ *)(lVar3 * 0x30 + __first);\n      iVar2 = gold::Output_reloc<9,_true,_64,_false>::compare\n                        ((Output_reloc<9,_true,_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)&local_68);\n      if ((-1 < iVar2) && ((iVar2 != 0 || (pSStack_40 <= this[5].relobj)))) {\n        this = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first);\n        break;\n      }\n      aVar1 = this[1];\n      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first);\n      *paVar6 = *this;\n      paVar6[1] = aVar1;\n      aVar1 = this[3];\n      paVar6[2] = this[2];\n      paVar6[3] = aVar1;\n      aVar1 = this[5];\n      paVar6[4] = this[4];\n      paVar6[5] = aVar1;\n      lVar4 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);\n      lVar5 = lVar3;\n    } while (__holeIndex < lVar3);\n  }" if (parenthesized_expression "(__holeIndex < lVar5)" ( (binary_expression "__holeIndex < lVar5" identifier < identifier) )) (compound_statement "{\n    do {\n      lVar3 = lVar4 >> 1;\n      this = (anon_union_8_4_c82d8563_for_u1_ *)(lVar3 * 0x30 + __first);\n      iVar2 = gold::Output_reloc<9,_true,_64,_false>::compare\n                        ((Output_reloc<9,_true,_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)&local_68);\n      if ((-1 < iVar2) && ((iVar2 != 0 || (pSStack_40 <= this[5].relobj)))) {\n        this = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first);\n        break;\n      }\n      aVar1 = this[1];\n      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first);\n      *paVar6 = *this;\n      paVar6[1] = aVar1;\n      aVar1 = this[3];\n      paVar6[2] = this[2];\n      paVar6[3] = aVar1;\n      aVar1 = this[5];\n      paVar6[4] = this[4];\n      paVar6[5] = aVar1;\n      lVar4 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);\n      lVar5 = lVar3;\n    } while (__holeIndex < lVar3);\n  }" { (do_statement "do {\n      lVar3 = lVar4 >> 1;\n      this = (anon_union_8_4_c82d8563_for_u1_ *)(lVar3 * 0x30 + __first);\n      iVar2 = gold::Output_reloc<9,_true,_64,_false>::compare\n                        ((Output_reloc<9,_true,_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)&local_68);\n      if ((-1 < iVar2) && ((iVar2 != 0 || (pSStack_40 <= this[5].relobj)))) {\n        this = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first);\n        break;\n      }\n      aVar1 = this[1];\n      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first);\n      *paVar6 = *this;\n      paVar6[1] = aVar1;\n      aVar1 = this[3];\n      paVar6[2] = this[2];\n      paVar6[3] = aVar1;\n      aVar1 = this[5];\n      paVar6[4] = this[4];\n      paVar6[5] = aVar1;\n      lVar4 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);\n      lVar5 = lVar3;\n    } while (__holeIndex < lVar3);" do (compound_statement "{\n      lVar3 = lVar4 >> 1;\n      this = (anon_union_8_4_c82d8563_for_u1_ *)(lVar3 * 0x30 + __first);\n      iVar2 = gold::Output_reloc<9,_true,_64,_false>::compare\n                        ((Output_reloc<9,_true,_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)&local_68);\n      if ((-1 < iVar2) && ((iVar2 != 0 || (pSStack_40 <= this[5].relobj)))) {\n        this = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first);\n        break;\n      }\n      aVar1 = this[1];\n      paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first);\n      *paVar6 = *this;\n      paVar6[1] = aVar1;\n      aVar1 = this[3];\n      paVar6[2] = this[2];\n      paVar6[3] = aVar1;\n      aVar1 = this[5];\n      paVar6[4] = this[4];\n      paVar6[5] = aVar1;\n      lVar4 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);\n      lVar5 = lVar3;\n    }" { (expression_statement "lVar3 = lVar4 >> 1;" (assignment_expression "lVar3 = lVar4 >> 1" identifier = (binary_expression "lVar4 >> 1" identifier >> number_literal)) ;) (expression_statement "this = (anon_union_8_4_c82d8563_for_u1_ *)(lVar3 * 0x30 + __first);" (assignment_expression "this = (anon_union_8_4_c82d8563_for_u1_ *)(lVar3 * 0x30 + __first)" identifier = (cast_expression "(anon_union_8_4_c82d8563_for_u1_ *)(lVar3 * 0x30 + __first)" ( (type_descriptor "anon_union_8_4_c82d8563_for_u1_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 * 0x30 + __first)" ( (binary_expression "lVar3 * 0x30 + __first" (binary_expression "lVar3 * 0x30" identifier * number_literal) + identifier) )))) ;) (ERROR "iVar2 = gold::" (assignment_expression "iVar2 = gold" identifier = identifier) : :) (expression_statement "Output_reloc<9,_true,_64,_false>::compare\n                        ((Output_reloc<9,_true,_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)&local_68);" (comma_expression "Output_reloc<9,_true,_64,_false>::compare" (binary_expression "Output_reloc<9" identifier < number_literal) , (comma_expression "_true,_64,_false>::compare" identifier , (comma_expression "_64,_false>::compare" identifier , (binary_expression "_false>::compare" identifier > (ERROR "::" : :) identifier)))) (ERROR "((Output_reloc<9,_true,_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)&local_68)" ( ( (comma_expression "Output_reloc<9,_true,_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)&local_68)" (binary_expression "Output_reloc<9" identifier < number_literal) , (comma_expression "_true,_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)&local_68)" identifier , (comma_expression "_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)&local_68)" identifier , (comma_expression "_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)&local_68)" (binary_expression "_false> *)this" identifier > (pointer_expression "*)this" * (ERROR ")" )) identifier)) , (parenthesized_expression "(Output_reloc<9,_true,_64,_false> *)&local_68)" ( (comma_expression "Output_reloc<9,_true,_64,_false> *)&local_68" (binary_expression "Output_reloc<9" identifier < number_literal) , (comma_expression "_true,_64,_false> *)&local_68" identifier , (comma_expression "_64,_false> *)&local_68" identifier , (binary_expression "_false> *)&local_68" identifier > (pointer_expression "*)&local_68" * (ERROR ")" )) (pointer_expression "&local_68" & identifier)))))) ))))))) ;) (if_statement "if ((-1 < iVar2) && ((iVar2 != 0 || (pSStack_40 <= this[5].relobj)))) {\n        this = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first);\n        break;\n      }" if (parenthesized_expression "((-1 < iVar2) && ((iVar2 != 0 || (pSStack_40 <= this[5].relobj))))" ( (binary_expression "(-1 < iVar2) && ((iVar2 != 0 || (pSStack_40 <= this[5].relobj)))" (parenthesized_expression "(-1 < iVar2)" ( (binary_expression "-1 < iVar2" number_literal < identifier) )) && (parenthesized_expression "((iVar2 != 0 || (pSStack_40 <= this[5].relobj)))" ( (parenthesized_expression "(iVar2 != 0 || (pSStack_40 <= this[5].relobj))" ( (binary_expression "iVar2 != 0 || (pSStack_40 <= this[5].relobj)" (binary_expression "iVar2 != 0" identifier != number_literal) || (parenthesized_expression "(pSStack_40 <= this[5].relobj)" ( (binary_expression "pSStack_40 <= this[5].relobj" identifier <= (field_expression "this[5].relobj" (subscript_expression "this[5]" identifier [ number_literal ]) . field_identifier)) ))) )) ))) )) (compound_statement "{\n        this = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first);\n        break;\n      }" { (expression_statement "this = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first);" (assignment_expression "this = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first)" identifier = (cast_expression "(anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first)" ( (type_descriptor "anon_union_8_4_c82d8563_for_u1_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 * 0x30 + __first)" ( (binary_expression "lVar5 * 0x30 + __first" (binary_expression "lVar5 * 0x30" identifier * number_literal) + identifier) )))) ;) (break_statement "break;" break ;) })) (expression_statement "aVar1 = this[1];" (assignment_expression "aVar1 = this[1]" identifier = (subscript_expression "this[1]" identifier [ number_literal ])) ;) (expression_statement "paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first);" (assignment_expression "paVar6 = (anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first)" identifier = (cast_expression "(anon_union_8_4_c82d8563_for_u1_ *)(lVar5 * 0x30 + __first)" ( (type_descriptor "anon_union_8_4_c82d8563_for_u1_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 * 0x30 + __first)" ( (binary_expression "lVar5 * 0x30 + __first" (binary_expression "lVar5 * 0x30" identifier * number_literal) + identifier) )))) ;) (expression_statement "*paVar6 = *this;" (assignment_expression "*paVar6 = *this" (pointer_expression "*paVar6" * identifier) = (pointer_expression "*this" * identifier)) ;) (expression_statement "paVar6[1] = aVar1;" (assignment_expression "paVar6[1] = aVar1" (subscript_expression "paVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "aVar1 = this[3];" (assignment_expression "aVar1 = this[3]" identifier = (subscript_expression "this[3]" identifier [ number_literal ])) ;) (expression_statement "paVar6[2] = this[2];" (assignment_expression "paVar6[2] = this[2]" (subscript_expression "paVar6[2]" identifier [ number_literal ]) = (subscript_expression "this[2]" identifier [ number_literal ])) ;) (expression_statement "paVar6[3] = aVar1;" (assignment_expression "paVar6[3] = aVar1" (subscript_expression "paVar6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "aVar1 = this[5];" (assignment_expression "aVar1 = this[5]" identifier = (subscript_expression "this[5]" identifier [ number_literal ])) ;) (expression_statement "paVar6[4] = this[4];" (assignment_expression "paVar6[4] = this[4]" (subscript_expression "paVar6[4]" identifier [ number_literal ]) = (subscript_expression "this[4]" identifier [ number_literal ])) ;) (expression_statement "paVar6[5] = aVar1;" (assignment_expression "paVar6[5] = aVar1" (subscript_expression "paVar6[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "lVar4 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);" (assignment_expression "lVar4 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f)" identifier = (binary_expression "(lVar3 + -1) - (lVar3 + -1 >> 0x3f)" (parenthesized_expression "(lVar3 + -1)" ( (binary_expression "lVar3 + -1" identifier + number_literal) )) - (parenthesized_expression "(lVar3 + -1 >> 0x3f)" ( (binary_expression "lVar3 + -1 >> 0x3f" (binary_expression "lVar3 + -1" identifier + number_literal) >> number_literal) )))) ;) (expression_statement "lVar5 = lVar3;" (assignment_expression "lVar5 = lVar3" identifier = identifier) ;) }) while (parenthesized_expression "(__holeIndex < lVar3)" ( (binary_expression "__holeIndex < lVar3" identifier < identifier) )) ;) })) (labeled_statement "LAB_001ebf13:\n  *this = local_68;" statement_identifier : (expression_statement "*this = local_68;" (assignment_expression "*this = local_68" (pointer_expression "*this" * identifier) = identifier) ;)) (expression_statement "this[1] = aStack_60;" (assignment_expression "this[1] = aStack_60" (subscript_expression "this[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "this[2] = local_58;" (assignment_expression "this[2] = local_58" (subscript_expression "this[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "this[3] = aStack_50;" (assignment_expression "this[3] = aStack_50" (subscript_expression "this[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "this[4] = local_48;" (assignment_expression "this[4] = local_48" (subscript_expression "this[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "this[5].relobj = pSStack_40;" (assignment_expression "this[5].relobj = pSStack_40" (field_expression "this[5].relobj" (subscript_expression "this[5]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_001ebdd0(long param_1,long param_2,ulong param_3)\n\n{\n  undefined8 uVar1;\n  int iVar2;\n  long lVar3;\n  undefined8 *puVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  undefined8 in_stack_00000008;\n  undefined8 in_stack_00000010;\n  undefined8 in_stack_00000018;\n  undefined8 in_stack_00000020;\n  undefined8 in_stack_00000028;\n  ulong in_stack_00000030;\n  undefined8 local_68;\n  undefined8 uStack_60;\n  undefined8 local_58;\n  undefined8 uStack_50;\n  undefined8 local_48;\n  ulong uStack_40;\n  \n  lVar3 = (long)(param_3 - 1) / 2;\n  lVar5 = param_2;\n  if (param_2 < lVar3) {\n    do {\n      lVar6 = (lVar5 + 1) * 2;\n      puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1);\n      puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,puVar7);\n      if ((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))) {\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = lVar6;\n    } while (lVar6 < lVar3);\n    if ((param_3 & 1) == 0) goto LAB_001ebfb0;\n  }\n  else {\n    puVar4 = (undefined8 *)(param_2 * 0x30 + param_1);\n    lVar6 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      uStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }\nLAB_001ebfb0:\n    if ((long)(param_3 - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }\n  }\n  local_68 = in_stack_00000008;\n  uStack_60 = in_stack_00000010;\n  lVar5 = (lVar6 + -1) - (lVar6 + -1 >> 0x3f);\n  local_58 = in_stack_00000018;\n  uStack_50 = in_stack_00000020;\n  local_48 = in_stack_00000028;\n  uStack_40 = in_stack_00000030;\n  if (param_2 < lVar6) {\n    do {\n      lVar3 = lVar5 >> 1;\n      puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,&local_68);\n      if ((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))) {\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);\n      lVar6 = lVar3;\n    } while (param_2 < lVar3);\n  }\nLAB_001ebf13:\n  *puVar4 = local_68;\n  puVar4[1] = uStack_60;\n  puVar4[2] = local_58;\n  puVar4[3] = uStack_50;\n  puVar4[4] = local_48;\n  puVar4[5] = uStack_40;\n  return;\n}\n\n" (function_definition "void FUN_001ebdd0(long param_1,long param_2,ulong param_3)\n\n{\n  undefined8 uVar1;\n  int iVar2;\n  long lVar3;\n  undefined8 *puVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  undefined8 in_stack_00000008;\n  undefined8 in_stack_00000010;\n  undefined8 in_stack_00000018;\n  undefined8 in_stack_00000020;\n  undefined8 in_stack_00000028;\n  ulong in_stack_00000030;\n  undefined8 local_68;\n  undefined8 uStack_60;\n  undefined8 local_58;\n  undefined8 uStack_50;\n  undefined8 local_48;\n  ulong uStack_40;\n  \n  lVar3 = (long)(param_3 - 1) / 2;\n  lVar5 = param_2;\n  if (param_2 < lVar3) {\n    do {\n      lVar6 = (lVar5 + 1) * 2;\n      puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1);\n      puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,puVar7);\n      if ((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))) {\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = lVar6;\n    } while (lVar6 < lVar3);\n    if ((param_3 & 1) == 0) goto LAB_001ebfb0;\n  }\n  else {\n    puVar4 = (undefined8 *)(param_2 * 0x30 + param_1);\n    lVar6 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      uStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }\nLAB_001ebfb0:\n    if ((long)(param_3 - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }\n  }\n  local_68 = in_stack_00000008;\n  uStack_60 = in_stack_00000010;\n  lVar5 = (lVar6 + -1) - (lVar6 + -1 >> 0x3f);\n  local_58 = in_stack_00000018;\n  uStack_50 = in_stack_00000020;\n  local_48 = in_stack_00000028;\n  uStack_40 = in_stack_00000030;\n  if (param_2 < lVar6) {\n    do {\n      lVar3 = lVar5 >> 1;\n      puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,&local_68);\n      if ((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))) {\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);\n      lVar6 = lVar3;\n    } while (param_2 < lVar3);\n  }\nLAB_001ebf13:\n  *puVar4 = local_68;\n  puVar4[1] = uStack_60;\n  puVar4[2] = local_58;\n  puVar4[3] = uStack_50;\n  puVar4[4] = local_48;\n  puVar4[5] = uStack_40;\n  return;\n}" primitive_type (function_declarator "FUN_001ebdd0(long param_1,long param_2,ulong param_3)" identifier (parameter_list "(long param_1,long param_2,ulong param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "ulong param_3" type_identifier identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  int iVar2;\n  long lVar3;\n  undefined8 *puVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  undefined8 in_stack_00000008;\n  undefined8 in_stack_00000010;\n  undefined8 in_stack_00000018;\n  undefined8 in_stack_00000020;\n  undefined8 in_stack_00000028;\n  ulong in_stack_00000030;\n  undefined8 local_68;\n  undefined8 uStack_60;\n  undefined8 local_58;\n  undefined8 uStack_50;\n  undefined8 local_48;\n  ulong uStack_40;\n  \n  lVar3 = (long)(param_3 - 1) / 2;\n  lVar5 = param_2;\n  if (param_2 < lVar3) {\n    do {\n      lVar6 = (lVar5 + 1) * 2;\n      puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1);\n      puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,puVar7);\n      if ((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))) {\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = lVar6;\n    } while (lVar6 < lVar3);\n    if ((param_3 & 1) == 0) goto LAB_001ebfb0;\n  }\n  else {\n    puVar4 = (undefined8 *)(param_2 * 0x30 + param_1);\n    lVar6 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      uStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }\nLAB_001ebfb0:\n    if ((long)(param_3 - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }\n  }\n  local_68 = in_stack_00000008;\n  uStack_60 = in_stack_00000010;\n  lVar5 = (lVar6 + -1) - (lVar6 + -1 >> 0x3f);\n  local_58 = in_stack_00000018;\n  uStack_50 = in_stack_00000020;\n  local_48 = in_stack_00000028;\n  uStack_40 = in_stack_00000030;\n  if (param_2 < lVar6) {\n    do {\n      lVar3 = lVar5 >> 1;\n      puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,&local_68);\n      if ((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))) {\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);\n      lVar6 = lVar3;\n    } while (param_2 < lVar3);\n  }\nLAB_001ebf13:\n  *puVar4 = local_68;\n  puVar4[1] = uStack_60;\n  puVar4[2] = local_58;\n  puVar4[3] = uStack_50;\n  puVar4[4] = local_48;\n  puVar4[5] = uStack_40;\n  return;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined8 in_stack_00000008;" type_identifier identifier ;) (declaration "undefined8 in_stack_00000010;" type_identifier identifier ;) (declaration "undefined8 in_stack_00000018;" type_identifier identifier ;) (declaration "undefined8 in_stack_00000020;" type_identifier identifier ;) (declaration "undefined8 in_stack_00000028;" type_identifier identifier ;) (declaration "ulong in_stack_00000030;" type_identifier identifier ;) (declaration "undefined8 local_68;" type_identifier identifier ;) (declaration "undefined8 uStack_60;" type_identifier identifier ;) (declaration "undefined8 local_58;" type_identifier identifier ;) (declaration "undefined8 uStack_50;" type_identifier identifier ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (declaration "ulong uStack_40;" type_identifier identifier ;) (expression_statement "lVar3 = (long)(param_3 - 1) / 2;" (assignment_expression "lVar3 = (long)(param_3 - 1) / 2" identifier = (binary_expression "(long)(param_3 - 1) / 2" (cast_expression "(long)(param_3 - 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(param_3 - 1)" ( (binary_expression "param_3 - 1" identifier - number_literal) ))) / number_literal)) ;) (expression_statement "lVar5 = param_2;" (assignment_expression "lVar5 = param_2" identifier = identifier) ;) (if_statement "if (param_2 < lVar3) {\n    do {\n      lVar6 = (lVar5 + 1) * 2;\n      puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1);\n      puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,puVar7);\n      if ((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))) {\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = lVar6;\n    } while (lVar6 < lVar3);\n    if ((param_3 & 1) == 0) goto LAB_001ebfb0;\n  }\n  else {\n    puVar4 = (undefined8 *)(param_2 * 0x30 + param_1);\n    lVar6 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      uStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }\nLAB_001ebfb0:\n    if ((long)(param_3 - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }\n  }" if (parenthesized_expression "(param_2 < lVar3)" ( (binary_expression "param_2 < lVar3" identifier < identifier) )) (compound_statement "{\n    do {\n      lVar6 = (lVar5 + 1) * 2;\n      puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1);\n      puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,puVar7);\n      if ((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))) {\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = lVar6;\n    } while (lVar6 < lVar3);\n    if ((param_3 & 1) == 0) goto LAB_001ebfb0;\n  }" { (do_statement "do {\n      lVar6 = (lVar5 + 1) * 2;\n      puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1);\n      puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,puVar7);\n      if ((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))) {\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = lVar6;\n    } while (lVar6 < lVar3);" do (compound_statement "{\n      lVar6 = (lVar5 + 1) * 2;\n      puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1);\n      puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,puVar7);\n      if ((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))) {\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = lVar6;\n    }" { (expression_statement "lVar6 = (lVar5 + 1) * 2;" (assignment_expression "lVar6 = (lVar5 + 1) * 2" identifier = (binary_expression "(lVar5 + 1) * 2" (parenthesized_expression "(lVar5 + 1)" ( (binary_expression "lVar5 + 1" identifier + number_literal) )) * number_literal)) ;) (expression_statement "puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1);" (assignment_expression "puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1)" identifier = (cast_expression "(undefined8 *)((lVar5 + 1) * 0x60 + param_1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((lVar5 + 1) * 0x60 + param_1)" ( (binary_expression "(lVar5 + 1) * 0x60 + param_1" (binary_expression "(lVar5 + 1) * 0x60" (parenthesized_expression "(lVar5 + 1)" ( (binary_expression "lVar5 + 1" identifier + number_literal) )) * number_literal) + identifier) )))) ;) (expression_statement "puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1);" (assignment_expression "puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1)" identifier = (cast_expression "(undefined8 *)((lVar6 + -1) * 0x30 + param_1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((lVar6 + -1) * 0x30 + param_1)" ( (binary_expression "(lVar6 + -1) * 0x30 + param_1" (binary_expression "(lVar6 + -1) * 0x30" (parenthesized_expression "(lVar6 + -1)" ( (binary_expression "lVar6 + -1" identifier + number_literal) )) * number_literal) + identifier) )))) ;) (expression_statement "iVar2 = FUN_001e4d20(puVar4,puVar7);" (assignment_expression "iVar2 = FUN_001e4d20(puVar4,puVar7)" identifier = (call_expression "FUN_001e4d20(puVar4,puVar7)" identifier (argument_list "(puVar4,puVar7)" ( identifier , identifier )))) ;) (if_statement "if ((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))) {\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }" if (parenthesized_expression "((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5]))))" ( (binary_expression "(iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))" (parenthesized_expression "(iVar2 < 0)" ( (binary_expression "iVar2 < 0" identifier < number_literal) )) || (parenthesized_expression "((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))" ( (parenthesized_expression "(iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5]))" ( (binary_expression "iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])" (binary_expression "iVar2 == 0" identifier == number_literal) && (parenthesized_expression "((ulong)puVar4[5] < (ulong)puVar7[5])" ( (binary_expression "(ulong)puVar4[5] < (ulong)puVar7[5]" (cast_expression "(ulong)puVar4[5]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "puVar4[5]" identifier [ number_literal ])) < (cast_expression "(ulong)puVar7[5]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "puVar7[5]" identifier [ number_literal ]))) ))) )) ))) )) (compound_statement "{\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }" { (expression_statement "puVar4 = puVar7;" (assignment_expression "puVar4 = puVar7" identifier = identifier) ;) (expression_statement "lVar6 = lVar6 + -1;" (assignment_expression "lVar6 = lVar6 + -1" identifier = (binary_expression "lVar6 + -1" identifier + number_literal)) ;) })) (expression_statement "uVar1 = puVar4[1];" (assignment_expression "uVar1 = puVar4[1]" identifier = (subscript_expression "puVar4[1]" identifier [ number_literal ])) ;) (expression_statement "puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1);" (assignment_expression "puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1)" identifier = (cast_expression "(undefined8 *)(lVar5 * 0x30 + param_1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 * 0x30 + param_1)" ( (binary_expression "lVar5 * 0x30 + param_1" (binary_expression "lVar5 * 0x30" identifier * number_literal) + identifier) )))) ;) (expression_statement "*puVar7 = *puVar4;" (assignment_expression "*puVar7 = *puVar4" (pointer_expression "*puVar7" * identifier) = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar7[1] = uVar1;" (assignment_expression "puVar7[1] = uVar1" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = puVar4[3];" (assignment_expression "uVar1 = puVar4[3]" identifier = (subscript_expression "puVar4[3]" identifier [ number_literal ])) ;) (expression_statement "puVar7[2] = puVar4[2];" (assignment_expression "puVar7[2] = puVar4[2]" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = (subscript_expression "puVar4[2]" identifier [ number_literal ])) ;) (expression_statement "puVar7[3] = uVar1;" (assignment_expression "puVar7[3] = uVar1" (subscript_expression "puVar7[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = puVar4[5];" (assignment_expression "uVar1 = puVar4[5]" identifier = (subscript_expression "puVar4[5]" identifier [ number_literal ])) ;) (expression_statement "puVar7[4] = puVar4[4];" (assignment_expression "puVar7[4] = puVar4[4]" (subscript_expression "puVar7[4]" identifier [ number_literal ]) = (subscript_expression "puVar4[4]" identifier [ number_literal ])) ;) (expression_statement "puVar7[5] = uVar1;" (assignment_expression "puVar7[5] = uVar1" (subscript_expression "puVar7[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "lVar5 = lVar6;" (assignment_expression "lVar5 = lVar6" identifier = identifier) ;) }) while (parenthesized_expression "(lVar6 < lVar3)" ( (binary_expression "lVar6 < lVar3" identifier < identifier) )) ;) (if_statement "if ((param_3 & 1) == 0) goto LAB_001ebfb0;" if (parenthesized_expression "((param_3 & 1) == 0)" ( (binary_expression "(param_3 & 1) == 0" (parenthesized_expression "(param_3 & 1)" ( (binary_expression "param_3 & 1" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001ebfb0;" goto statement_identifier ;)) }) (else_clause "else {\n    puVar4 = (undefined8 *)(param_2 * 0x30 + param_1);\n    lVar6 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      uStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }\nLAB_001ebfb0:\n    if ((long)(param_3 - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }\n  }" else (compound_statement "{\n    puVar4 = (undefined8 *)(param_2 * 0x30 + param_1);\n    lVar6 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      uStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }\nLAB_001ebfb0:\n    if ((long)(param_3 - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }\n  }" { (expression_statement "puVar4 = (undefined8 *)(param_2 * 0x30 + param_1);" (assignment_expression "puVar4 = (undefined8 *)(param_2 * 0x30 + param_1)" identifier = (cast_expression "(undefined8 *)(param_2 * 0x30 + param_1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 * 0x30 + param_1)" ( (binary_expression "param_2 * 0x30 + param_1" (binary_expression "param_2 * 0x30" identifier * number_literal) + identifier) )))) ;) (expression_statement "lVar6 = param_2;" (assignment_expression "lVar6 = param_2" identifier = identifier) ;) (if_statement "if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      uStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }" if (parenthesized_expression "((param_3 & 1) != 0)" ( (binary_expression "(param_3 & 1) != 0" (parenthesized_expression "(param_3 & 1)" ( (binary_expression "param_3 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      uStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }" { (expression_statement "local_68 = in_stack_00000008;" (assignment_expression "local_68 = in_stack_00000008" identifier = identifier) ;) (expression_statement "uStack_60 = in_stack_00000010;" (assignment_expression "uStack_60 = in_stack_00000010" identifier = identifier) ;) (expression_statement "local_58 = in_stack_00000018;" (assignment_expression "local_58 = in_stack_00000018" identifier = identifier) ;) (expression_statement "uStack_50 = in_stack_00000020;" (assignment_expression "uStack_50 = in_stack_00000020" identifier = identifier) ;) (expression_statement "local_48 = in_stack_00000028;" (assignment_expression "local_48 = in_stack_00000028" identifier = identifier) ;) (expression_statement "uStack_40 = in_stack_00000030;" (assignment_expression "uStack_40 = in_stack_00000030" identifier = identifier) ;) (goto_statement "goto LAB_001ebf13;" goto statement_identifier ;) })) (labeled_statement "LAB_001ebfb0:\n    if ((long)(param_3 - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }" statement_identifier : (if_statement "if ((long)(param_3 - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }" if (parenthesized_expression "((long)(param_3 - 2) / 2 == lVar6)" ( (binary_expression "(long)(param_3 - 2) / 2 == lVar6" (binary_expression "(long)(param_3 - 2) / 2" (cast_expression "(long)(param_3 - 2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(param_3 - 2)" ( (binary_expression "param_3 - 2" identifier - number_literal) ))) / number_literal) == identifier) )) (compound_statement "{\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }" { (expression_statement "lVar6 = lVar6 * 2 + 1;" (assignment_expression "lVar6 = lVar6 * 2 + 1" identifier = (binary_expression "lVar6 * 2 + 1" (binary_expression "lVar6 * 2" identifier * number_literal) + number_literal)) ;) (expression_statement "puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);" (assignment_expression "puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1)" identifier = (cast_expression "(undefined8 *)(lVar6 * 0x30 + param_1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 * 0x30 + param_1)" ( (binary_expression "lVar6 * 0x30 + param_1" (binary_expression "lVar6 * 0x30" identifier * number_literal) + identifier) )))) ;) (expression_statement "uVar1 = puVar7[1];" (assignment_expression "uVar1 = puVar7[1]" identifier = (subscript_expression "puVar7[1]" identifier [ number_literal ])) ;) (expression_statement "*puVar4 = *puVar7;" (assignment_expression "*puVar4 = *puVar7" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "puVar4[1] = uVar1;" (assignment_expression "puVar4[1] = uVar1" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = puVar7[3];" (assignment_expression "uVar1 = puVar7[3]" identifier = (subscript_expression "puVar7[3]" identifier [ number_literal ])) ;) (expression_statement "puVar4[2] = puVar7[2];" (assignment_expression "puVar4[2] = puVar7[2]" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = (subscript_expression "puVar7[2]" identifier [ number_literal ])) ;) (expression_statement "puVar4[3] = uVar1;" (assignment_expression "puVar4[3] = uVar1" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = puVar7[5];" (assignment_expression "uVar1 = puVar7[5]" identifier = (subscript_expression "puVar7[5]" identifier [ number_literal ])) ;) (expression_statement "puVar4[4] = puVar7[4];" (assignment_expression "puVar4[4] = puVar7[4]" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = (subscript_expression "puVar7[4]" identifier [ number_literal ])) ;) (expression_statement "puVar4[5] = uVar1;" (assignment_expression "puVar4[5] = uVar1" (subscript_expression "puVar4[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4 = puVar7;" (assignment_expression "puVar4 = puVar7" identifier = identifier) ;) }))) }))) (expression_statement "local_68 = in_stack_00000008;" (assignment_expression "local_68 = in_stack_00000008" identifier = identifier) ;) (expression_statement "uStack_60 = in_stack_00000010;" (assignment_expression "uStack_60 = in_stack_00000010" identifier = identifier) ;) (expression_statement "lVar5 = (lVar6 + -1) - (lVar6 + -1 >> 0x3f);" (assignment_expression "lVar5 = (lVar6 + -1) - (lVar6 + -1 >> 0x3f)" identifier = (binary_expression "(lVar6 + -1) - (lVar6 + -1 >> 0x3f)" (parenthesized_expression "(lVar6 + -1)" ( (binary_expression "lVar6 + -1" identifier + number_literal) )) - (parenthesized_expression "(lVar6 + -1 >> 0x3f)" ( (binary_expression "lVar6 + -1 >> 0x3f" (binary_expression "lVar6 + -1" identifier + number_literal) >> number_literal) )))) ;) (expression_statement "local_58 = in_stack_00000018;" (assignment_expression "local_58 = in_stack_00000018" identifier = identifier) ;) (expression_statement "uStack_50 = in_stack_00000020;" (assignment_expression "uStack_50 = in_stack_00000020" identifier = identifier) ;) (expression_statement "local_48 = in_stack_00000028;" (assignment_expression "local_48 = in_stack_00000028" identifier = identifier) ;) (expression_statement "uStack_40 = in_stack_00000030;" (assignment_expression "uStack_40 = in_stack_00000030" identifier = identifier) ;) (if_statement "if (param_2 < lVar6) {\n    do {\n      lVar3 = lVar5 >> 1;\n      puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,&local_68);\n      if ((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))) {\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);\n      lVar6 = lVar3;\n    } while (param_2 < lVar3);\n  }" if (parenthesized_expression "(param_2 < lVar6)" ( (binary_expression "param_2 < lVar6" identifier < identifier) )) (compound_statement "{\n    do {\n      lVar3 = lVar5 >> 1;\n      puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,&local_68);\n      if ((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))) {\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);\n      lVar6 = lVar3;\n    } while (param_2 < lVar3);\n  }" { (do_statement "do {\n      lVar3 = lVar5 >> 1;\n      puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,&local_68);\n      if ((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))) {\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);\n      lVar6 = lVar3;\n    } while (param_2 < lVar3);" do (compound_statement "{\n      lVar3 = lVar5 >> 1;\n      puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,&local_68);\n      if ((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))) {\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);\n      lVar6 = lVar3;\n    }" { (expression_statement "lVar3 = lVar5 >> 1;" (assignment_expression "lVar3 = lVar5 >> 1" identifier = (binary_expression "lVar5 >> 1" identifier >> number_literal)) ;) (expression_statement "puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1);" (assignment_expression "puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1)" identifier = (cast_expression "(undefined8 *)(lVar3 * 0x30 + param_1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 * 0x30 + param_1)" ( (binary_expression "lVar3 * 0x30 + param_1" (binary_expression "lVar3 * 0x30" identifier * number_literal) + identifier) )))) ;) (expression_statement "iVar2 = FUN_001e4d20(puVar4,&local_68);" (assignment_expression "iVar2 = FUN_001e4d20(puVar4,&local_68)" identifier = (call_expression "FUN_001e4d20(puVar4,&local_68)" identifier (argument_list "(puVar4,&local_68)" ( identifier , (pointer_expression "&local_68" & identifier) )))) ;) (if_statement "if ((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))) {\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }" if (parenthesized_expression "((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5]))))" ( (binary_expression "(-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))" (parenthesized_expression "(-1 < iVar2)" ( (binary_expression "-1 < iVar2" number_literal < identifier) )) && (parenthesized_expression "((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))" ( (parenthesized_expression "(iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5]))" ( (binary_expression "iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])" (binary_expression "iVar2 != 0" identifier != number_literal) || (parenthesized_expression "(uStack_40 <= (ulong)puVar4[5])" ( (binary_expression "uStack_40 <= (ulong)puVar4[5]" identifier <= (cast_expression "(ulong)puVar4[5]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "puVar4[5]" identifier [ number_literal ]))) ))) )) ))) )) (compound_statement "{\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }" { (expression_statement "puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);" (assignment_expression "puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1)" identifier = (cast_expression "(undefined8 *)(lVar6 * 0x30 + param_1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 * 0x30 + param_1)" ( (binary_expression "lVar6 * 0x30 + param_1" (binary_expression "lVar6 * 0x30" identifier * number_literal) + identifier) )))) ;) (break_statement "break;" break ;) })) (expression_statement "uVar1 = puVar4[1];" (assignment_expression "uVar1 = puVar4[1]" identifier = (subscript_expression "puVar4[1]" identifier [ number_literal ])) ;) (expression_statement "puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);" (assignment_expression "puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1)" identifier = (cast_expression "(undefined8 *)(lVar6 * 0x30 + param_1)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 * 0x30 + param_1)" ( (binary_expression "lVar6 * 0x30 + param_1" (binary_expression "lVar6 * 0x30" identifier * number_literal) + identifier) )))) ;) (expression_statement "*puVar7 = *puVar4;" (assignment_expression "*puVar7 = *puVar4" (pointer_expression "*puVar7" * identifier) = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar7[1] = uVar1;" (assignment_expression "puVar7[1] = uVar1" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = puVar4[3];" (assignment_expression "uVar1 = puVar4[3]" identifier = (subscript_expression "puVar4[3]" identifier [ number_literal ])) ;) (expression_statement "puVar7[2] = puVar4[2];" (assignment_expression "puVar7[2] = puVar4[2]" (subscript_expression "puVar7[2]" identifier [ number_literal ]) = (subscript_expression "puVar4[2]" identifier [ number_literal ])) ;) (expression_statement "puVar7[3] = uVar1;" (assignment_expression "puVar7[3] = uVar1" (subscript_expression "puVar7[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = puVar4[5];" (assignment_expression "uVar1 = puVar4[5]" identifier = (subscript_expression "puVar4[5]" identifier [ number_literal ])) ;) (expression_statement "puVar7[4] = puVar4[4];" (assignment_expression "puVar7[4] = puVar4[4]" (subscript_expression "puVar7[4]" identifier [ number_literal ]) = (subscript_expression "puVar4[4]" identifier [ number_literal ])) ;) (expression_statement "puVar7[5] = uVar1;" (assignment_expression "puVar7[5] = uVar1" (subscript_expression "puVar7[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);" (assignment_expression "lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f)" identifier = (binary_expression "(lVar3 + -1) - (lVar3 + -1 >> 0x3f)" (parenthesized_expression "(lVar3 + -1)" ( (binary_expression "lVar3 + -1" identifier + number_literal) )) - (parenthesized_expression "(lVar3 + -1 >> 0x3f)" ( (binary_expression "lVar3 + -1 >> 0x3f" (binary_expression "lVar3 + -1" identifier + number_literal) >> number_literal) )))) ;) (expression_statement "lVar6 = lVar3;" (assignment_expression "lVar6 = lVar3" identifier = identifier) ;) }) while (parenthesized_expression "(param_2 < lVar3)" ( (binary_expression "param_2 < lVar3" identifier < identifier) )) ;) })) (labeled_statement "LAB_001ebf13:\n  *puVar4 = local_68;" statement_identifier : (expression_statement "*puVar4 = local_68;" (assignment_expression "*puVar4 = local_68" (pointer_expression "*puVar4" * identifier) = identifier) ;)) (expression_statement "puVar4[1] = uStack_60;" (assignment_expression "puVar4[1] = uStack_60" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[2] = local_58;" (assignment_expression "puVar4[2] = local_58" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[3] = uStack_50;" (assignment_expression "puVar4[3] = uStack_50" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[4] = local_48;" (assignment_expression "puVar4[4] = local_48" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[5] = uStack_40;" (assignment_expression "puVar4[5] = uStack_40" (subscript_expression "puVar4[5]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT - LIT) ))) / LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * 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 (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT - LIT) ))) / LIT) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression 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 (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (parenthesized_expression ( (binary_expression IDENT <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + IDENT) )))) ;) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * 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 (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return ;) })))
(function_definition "void FUN_001ebdd0(long param_1,long param_2,ulong param_3)\n\n{\n  undefined8 uVar1;\n  int iVar2;\n  long lVar3;\n  undefined8 *puVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  undefined8 in_stack_00000008;\n  undefined8 in_stack_00000010;\n  undefined8 in_stack_00000018;\n  undefined8 in_stack_00000020;\n  undefined8 in_stack_00000028;\n  ulong in_stack_00000030;\n  undefined8 local_68;\n  undefined8 uStack_60;\n  undefined8 local_58;\n  undefined8 uStack_50;\n  undefined8 local_48;\n  ulong uStack_40;\n  \n  lVar3 = (long)(param_3 - 1) / 2;\n  lVar5 = param_2;\n  if (param_2 < lVar3) {\n    do {\n      lVar6 = (lVar5 + 1) * 2;\n      puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1);\n      puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,puVar7);\n      if ((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))) {\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = lVar6;\n    } while (lVar6 < lVar3);\n    if ((param_3 & 1) == 0) goto LAB_001ebfb0;\n  }\n  else {\n    puVar4 = (undefined8 *)(param_2 * 0x30 + param_1);\n    lVar6 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      uStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }\nLAB_001ebfb0:\n    if ((long)(param_3 - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }\n  }\n  local_68 = in_stack_00000008;\n  uStack_60 = in_stack_00000010;\n  lVar5 = (lVar6 + -1) - (lVar6 + -1 >> 0x3f);\n  local_58 = in_stack_00000018;\n  uStack_50 = in_stack_00000020;\n  local_48 = in_stack_00000028;\n  uStack_40 = in_stack_00000030;\n  if (param_2 < lVar6) {\n    do {\n      lVar3 = lVar5 >> 1;\n      puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,&local_68);\n      if ((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))) {\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);\n      lVar6 = lVar3;\n    } while (param_2 < lVar3);\n  }\nLAB_001ebf13:\n  *puVar4 = local_68;\n  puVar4[1] = uStack_60;\n  puVar4[2] = local_58;\n  puVar4[3] = uStack_50;\n  puVar4[4] = local_48;\n  puVar4[5] = uStack_40;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001ebdd0(long param_1,long param_2,ulong param_3)" (identifier "FUN_001ebdd0") (parameter_list "(long param_1,long param_2,ulong param_3)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "ulong param_3" (type_identifier "ulong") (identifier "param_3")) () ")"))) (compound_statement "{\n  undefined8 uVar1;\n  int iVar2;\n  long lVar3;\n  undefined8 *puVar4;\n  long lVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  undefined8 in_stack_00000008;\n  undefined8 in_stack_00000010;\n  undefined8 in_stack_00000018;\n  undefined8 in_stack_00000020;\n  undefined8 in_stack_00000028;\n  ulong in_stack_00000030;\n  undefined8 local_68;\n  undefined8 uStack_60;\n  undefined8 local_58;\n  undefined8 uStack_50;\n  undefined8 local_48;\n  ulong uStack_40;\n  \n  lVar3 = (long)(param_3 - 1) / 2;\n  lVar5 = param_2;\n  if (param_2 < lVar3) {\n    do {\n      lVar6 = (lVar5 + 1) * 2;\n      puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1);\n      puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,puVar7);\n      if ((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))) {\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = lVar6;\n    } while (lVar6 < lVar3);\n    if ((param_3 & 1) == 0) goto LAB_001ebfb0;\n  }\n  else {\n    puVar4 = (undefined8 *)(param_2 * 0x30 + param_1);\n    lVar6 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      uStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }\nLAB_001ebfb0:\n    if ((long)(param_3 - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }\n  }\n  local_68 = in_stack_00000008;\n  uStack_60 = in_stack_00000010;\n  lVar5 = (lVar6 + -1) - (lVar6 + -1 >> 0x3f);\n  local_58 = in_stack_00000018;\n  uStack_50 = in_stack_00000020;\n  local_48 = in_stack_00000028;\n  uStack_40 = in_stack_00000030;\n  if (param_2 < lVar6) {\n    do {\n      lVar3 = lVar5 >> 1;\n      puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,&local_68);\n      if ((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))) {\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);\n      lVar6 = lVar3;\n    } while (param_2 < lVar3);\n  }\nLAB_001ebf13:\n  *puVar4 = local_68;\n  puVar4[1] = uStack_60;\n  puVar4[2] = local_58;\n  puVar4[3] = uStack_50;\n  puVar4[4] = local_48;\n  puVar4[5] = uStack_40;\n  return;\n}" ({ "{") (declaration "undefined8 uVar1;" (type_identifier "undefined8") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "undefined8 *puVar4;" (type_identifier "undefined8") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "undefined8 *puVar7;" (type_identifier "undefined8") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "undefined8 in_stack_00000008;" (type_identifier "undefined8") (identifier "in_stack_00000008") (; ";")) (declaration "undefined8 in_stack_00000010;" (type_identifier "undefined8") (identifier "in_stack_00000010") (; ";")) (declaration "undefined8 in_stack_00000018;" (type_identifier "undefined8") (identifier "in_stack_00000018") (; ";")) (declaration "undefined8 in_stack_00000020;" (type_identifier "undefined8") (identifier "in_stack_00000020") (; ";")) (declaration "undefined8 in_stack_00000028;" (type_identifier "undefined8") (identifier "in_stack_00000028") (; ";")) (declaration "ulong in_stack_00000030;" (type_identifier "ulong") (identifier "in_stack_00000030") (; ";")) (declaration "undefined8 local_68;" (type_identifier "undefined8") (identifier "local_68") (; ";")) (declaration "undefined8 uStack_60;" (type_identifier "undefined8") (identifier "uStack_60") (; ";")) (declaration "undefined8 local_58;" (type_identifier "undefined8") (identifier "local_58") (; ";")) (declaration "undefined8 uStack_50;" (type_identifier "undefined8") (identifier "uStack_50") (; ";")) (declaration "undefined8 local_48;" (type_identifier "undefined8") (identifier "local_48") (; ";")) (declaration "ulong uStack_40;" (type_identifier "ulong") (identifier "uStack_40") (; ";")) (expression_statement "lVar3 = (long)(param_3 - 1) / 2;" (assignment_expression "lVar3 = (long)(param_3 - 1) / 2" (identifier "lVar3") (= "=") (binary_expression "(long)(param_3 - 1) / 2" (cast_expression "(long)(param_3 - 1)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(param_3 - 1)" (( "(") (binary_expression "param_3 - 1" (identifier "param_3") (- "-") (number_literal "1")) () ")"))) (/ "/") (number_literal "2"))) (; ";")) (expression_statement "lVar5 = param_2;" (assignment_expression "lVar5 = param_2" (identifier "lVar5") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (param_2 < lVar3) {\n    do {\n      lVar6 = (lVar5 + 1) * 2;\n      puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1);\n      puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,puVar7);\n      if ((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))) {\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = lVar6;\n    } while (lVar6 < lVar3);\n    if ((param_3 & 1) == 0) goto LAB_001ebfb0;\n  }\n  else {\n    puVar4 = (undefined8 *)(param_2 * 0x30 + param_1);\n    lVar6 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      uStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }\nLAB_001ebfb0:\n    if ((long)(param_3 - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }\n  }" (if "if") (parenthesized_expression "(param_2 < lVar3)" (( "(") (binary_expression "param_2 < lVar3" (identifier "param_2") (< "<") (identifier "lVar3")) () ")")) (compound_statement "{\n    do {\n      lVar6 = (lVar5 + 1) * 2;\n      puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1);\n      puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,puVar7);\n      if ((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))) {\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = lVar6;\n    } while (lVar6 < lVar3);\n    if ((param_3 & 1) == 0) goto LAB_001ebfb0;\n  }" ({ "{") (do_statement "do {\n      lVar6 = (lVar5 + 1) * 2;\n      puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1);\n      puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,puVar7);\n      if ((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))) {\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = lVar6;\n    } while (lVar6 < lVar3);" (do "do") (compound_statement "{\n      lVar6 = (lVar5 + 1) * 2;\n      puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1);\n      puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,puVar7);\n      if ((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))) {\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = lVar6;\n    }" ({ "{") (expression_statement "lVar6 = (lVar5 + 1) * 2;" (assignment_expression "lVar6 = (lVar5 + 1) * 2" (identifier "lVar6") (= "=") (binary_expression "(lVar5 + 1) * 2" (parenthesized_expression "(lVar5 + 1)" (( "(") (binary_expression "lVar5 + 1" (identifier "lVar5") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "2"))) (; ";")) (expression_statement "puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1);" (assignment_expression "puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1)" (identifier "puVar4") (= "=") (cast_expression "(undefined8 *)((lVar5 + 1) * 0x60 + param_1)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((lVar5 + 1) * 0x60 + param_1)" (( "(") (binary_expression "(lVar5 + 1) * 0x60 + param_1" (binary_expression "(lVar5 + 1) * 0x60" (parenthesized_expression "(lVar5 + 1)" (( "(") (binary_expression "lVar5 + 1" (identifier "lVar5") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "0x60")) (+ "+") (identifier "param_1")) () ")")))) (; ";")) (expression_statement "puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1);" (assignment_expression "puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1)" (identifier "puVar7") (= "=") (cast_expression "(undefined8 *)((lVar6 + -1) * 0x30 + param_1)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((lVar6 + -1) * 0x30 + param_1)" (( "(") (binary_expression "(lVar6 + -1) * 0x30 + param_1" (binary_expression "(lVar6 + -1) * 0x30" (parenthesized_expression "(lVar6 + -1)" (( "(") (binary_expression "lVar6 + -1" (identifier "lVar6") (+ "+") (number_literal "-1")) () ")")) (* "*") (number_literal "0x30")) (+ "+") (identifier "param_1")) () ")")))) (; ";")) (expression_statement "iVar2 = FUN_001e4d20(puVar4,puVar7);" (assignment_expression "iVar2 = FUN_001e4d20(puVar4,puVar7)" (identifier "iVar2") (= "=") (call_expression "FUN_001e4d20(puVar4,puVar7)" (identifier "FUN_001e4d20") (argument_list "(puVar4,puVar7)" (( "(") (identifier "puVar4") (, ",") (identifier "puVar7") () ")")))) (; ";")) (if_statement "if ((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))) {\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }" (if "if") (parenthesized_expression "((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5]))))" (( "(") (binary_expression "(iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))" (parenthesized_expression "(iVar2 < 0)" (( "(") (binary_expression "iVar2 < 0" (identifier "iVar2") (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))" (( "(") (parenthesized_expression "(iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5]))" (( "(") (binary_expression "iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])" (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "((ulong)puVar4[5] < (ulong)puVar7[5])" (( "(") (binary_expression "(ulong)puVar4[5] < (ulong)puVar7[5]" (cast_expression "(ulong)puVar4[5]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "puVar4[5]" (identifier "puVar4") ([ "[") (number_literal "5") (] "]"))) (< "<") (cast_expression "(ulong)puVar7[5]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "puVar7[5]" (identifier "puVar7") ([ "[") (number_literal "5") (] "]")))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        puVar4 = puVar7;\n        lVar6 = lVar6 + -1;\n      }" ({ "{") (expression_statement "puVar4 = puVar7;" (assignment_expression "puVar4 = puVar7" (identifier "puVar4") (= "=") (identifier "puVar7")) (; ";")) (expression_statement "lVar6 = lVar6 + -1;" (assignment_expression "lVar6 = lVar6 + -1" (identifier "lVar6") (= "=") (binary_expression "lVar6 + -1" (identifier "lVar6") (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "uVar1 = puVar4[1];" (assignment_expression "uVar1 = puVar4[1]" (identifier "uVar1") (= "=") (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1);" (assignment_expression "puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1)" (identifier "puVar7") (= "=") (cast_expression "(undefined8 *)(lVar5 * 0x30 + param_1)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 * 0x30 + param_1)" (( "(") (binary_expression "lVar5 * 0x30 + param_1" (binary_expression "lVar5 * 0x30" (identifier "lVar5") (* "*") (number_literal "0x30")) (+ "+") (identifier "param_1")) () ")")))) (; ";")) (expression_statement "*puVar7 = *puVar4;" (assignment_expression "*puVar7 = *puVar4" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (expression_statement "puVar7[1] = uVar1;" (assignment_expression "puVar7[1] = uVar1" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar1 = puVar4[3];" (assignment_expression "uVar1 = puVar4[3]" (identifier "uVar1") (= "=") (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "puVar7[2] = puVar4[2];" (assignment_expression "puVar7[2] = puVar4[2]" (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar7[3] = uVar1;" (assignment_expression "puVar7[3] = uVar1" (subscript_expression "puVar7[3]" (identifier "puVar7") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar1 = puVar4[5];" (assignment_expression "uVar1 = puVar4[5]" (identifier "uVar1") (= "=") (subscript_expression "puVar4[5]" (identifier "puVar4") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "puVar7[4] = puVar4[4];" (assignment_expression "puVar7[4] = puVar4[4]" (subscript_expression "puVar7[4]" (identifier "puVar7") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "puVar7[5] = uVar1;" (assignment_expression "puVar7[5] = uVar1" (subscript_expression "puVar7[5]" (identifier "puVar7") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "lVar5 = lVar6;" (assignment_expression "lVar5 = lVar6" (identifier "lVar5") (= "=") (identifier "lVar6")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar6 < lVar3)" (( "(") (binary_expression "lVar6 < lVar3" (identifier "lVar6") (< "<") (identifier "lVar3")) () ")")) (; ";")) (if_statement "if ((param_3 & 1) == 0) goto LAB_001ebfb0;" (if "if") (parenthesized_expression "((param_3 & 1) == 0)" (( "(") (binary_expression "(param_3 & 1) == 0" (parenthesized_expression "(param_3 & 1)" (( "(") (binary_expression "param_3 & 1" (identifier "param_3") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001ebfb0;" (goto "goto") (statement_identifier "LAB_001ebfb0") (; ";"))) (} "}")) (else_clause "else {\n    puVar4 = (undefined8 *)(param_2 * 0x30 + param_1);\n    lVar6 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      uStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }\nLAB_001ebfb0:\n    if ((long)(param_3 - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }\n  }" (else "else") (compound_statement "{\n    puVar4 = (undefined8 *)(param_2 * 0x30 + param_1);\n    lVar6 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      uStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }\nLAB_001ebfb0:\n    if ((long)(param_3 - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }\n  }" ({ "{") (expression_statement "puVar4 = (undefined8 *)(param_2 * 0x30 + param_1);" (assignment_expression "puVar4 = (undefined8 *)(param_2 * 0x30 + param_1)" (identifier "puVar4") (= "=") (cast_expression "(undefined8 *)(param_2 * 0x30 + param_1)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 * 0x30 + param_1)" (( "(") (binary_expression "param_2 * 0x30 + param_1" (binary_expression "param_2 * 0x30" (identifier "param_2") (* "*") (number_literal "0x30")) (+ "+") (identifier "param_1")) () ")")))) (; ";")) (expression_statement "lVar6 = param_2;" (assignment_expression "lVar6 = param_2" (identifier "lVar6") (= "=") (identifier "param_2")) (; ";")) (if_statement "if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      uStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }" (if "if") (parenthesized_expression "((param_3 & 1) != 0)" (( "(") (binary_expression "(param_3 & 1) != 0" (parenthesized_expression "(param_3 & 1)" (( "(") (binary_expression "param_3 & 1" (identifier "param_3") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      local_48 = in_stack_00000028;\n      uStack_40 = in_stack_00000030;\n      goto LAB_001ebf13;\n    }" ({ "{") (expression_statement "local_68 = in_stack_00000008;" (assignment_expression "local_68 = in_stack_00000008" (identifier "local_68") (= "=") (identifier "in_stack_00000008")) (; ";")) (expression_statement "uStack_60 = in_stack_00000010;" (assignment_expression "uStack_60 = in_stack_00000010" (identifier "uStack_60") (= "=") (identifier "in_stack_00000010")) (; ";")) (expression_statement "local_58 = in_stack_00000018;" (assignment_expression "local_58 = in_stack_00000018" (identifier "local_58") (= "=") (identifier "in_stack_00000018")) (; ";")) (expression_statement "uStack_50 = in_stack_00000020;" (assignment_expression "uStack_50 = in_stack_00000020" (identifier "uStack_50") (= "=") (identifier "in_stack_00000020")) (; ";")) (expression_statement "local_48 = in_stack_00000028;" (assignment_expression "local_48 = in_stack_00000028" (identifier "local_48") (= "=") (identifier "in_stack_00000028")) (; ";")) (expression_statement "uStack_40 = in_stack_00000030;" (assignment_expression "uStack_40 = in_stack_00000030" (identifier "uStack_40") (= "=") (identifier "in_stack_00000030")) (; ";")) (goto_statement "goto LAB_001ebf13;" (goto "goto") (statement_identifier "LAB_001ebf13") (; ";")) (} "}"))) (labeled_statement "LAB_001ebfb0:\n    if ((long)(param_3 - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }" (statement_identifier "LAB_001ebfb0") (: ":") (if_statement "if ((long)(param_3 - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }" (if "if") (parenthesized_expression "((long)(param_3 - 2) / 2 == lVar6)" (( "(") (binary_expression "(long)(param_3 - 2) / 2 == lVar6" (binary_expression "(long)(param_3 - 2) / 2" (cast_expression "(long)(param_3 - 2)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(param_3 - 2)" (( "(") (binary_expression "param_3 - 2" (identifier "param_3") (- "-") (number_literal "2")) () ")"))) (/ "/") (number_literal "2")) (== "==") (identifier "lVar6")) () ")")) (compound_statement "{\n      lVar6 = lVar6 * 2 + 1;\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      uVar1 = puVar7[1];\n      *puVar4 = *puVar7;\n      puVar4[1] = uVar1;\n      uVar1 = puVar7[3];\n      puVar4[2] = puVar7[2];\n      puVar4[3] = uVar1;\n      uVar1 = puVar7[5];\n      puVar4[4] = puVar7[4];\n      puVar4[5] = uVar1;\n      puVar4 = puVar7;\n    }" ({ "{") (expression_statement "lVar6 = lVar6 * 2 + 1;" (assignment_expression "lVar6 = lVar6 * 2 + 1" (identifier "lVar6") (= "=") (binary_expression "lVar6 * 2 + 1" (binary_expression "lVar6 * 2" (identifier "lVar6") (* "*") (number_literal "2")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);" (assignment_expression "puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1)" (identifier "puVar7") (= "=") (cast_expression "(undefined8 *)(lVar6 * 0x30 + param_1)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 * 0x30 + param_1)" (( "(") (binary_expression "lVar6 * 0x30 + param_1" (binary_expression "lVar6 * 0x30" (identifier "lVar6") (* "*") (number_literal "0x30")) (+ "+") (identifier "param_1")) () ")")))) (; ";")) (expression_statement "uVar1 = puVar7[1];" (assignment_expression "uVar1 = puVar7[1]" (identifier "uVar1") (= "=") (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*puVar4 = *puVar7;" (assignment_expression "*puVar4 = *puVar7" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) (; ";")) (expression_statement "puVar4[1] = uVar1;" (assignment_expression "puVar4[1] = uVar1" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar1 = puVar7[3];" (assignment_expression "uVar1 = puVar7[3]" (identifier "uVar1") (= "=") (subscript_expression "puVar7[3]" (identifier "puVar7") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "puVar4[2] = puVar7[2];" (assignment_expression "puVar4[2] = puVar7[2]" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar4[3] = uVar1;" (assignment_expression "puVar4[3] = uVar1" (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar1 = puVar7[5];" (assignment_expression "uVar1 = puVar7[5]" (identifier "uVar1") (= "=") (subscript_expression "puVar7[5]" (identifier "puVar7") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "puVar4[4] = puVar7[4];" (assignment_expression "puVar4[4] = puVar7[4]" (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "puVar7[4]" (identifier "puVar7") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "puVar4[5] = uVar1;" (assignment_expression "puVar4[5] = uVar1" (subscript_expression "puVar4[5]" (identifier "puVar4") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "puVar4 = puVar7;" (assignment_expression "puVar4 = puVar7" (identifier "puVar4") (= "=") (identifier "puVar7")) (; ";")) (} "}")))) (} "}")))) (expression_statement "local_68 = in_stack_00000008;" (assignment_expression "local_68 = in_stack_00000008" (identifier "local_68") (= "=") (identifier "in_stack_00000008")) (; ";")) (expression_statement "uStack_60 = in_stack_00000010;" (assignment_expression "uStack_60 = in_stack_00000010" (identifier "uStack_60") (= "=") (identifier "in_stack_00000010")) (; ";")) (expression_statement "lVar5 = (lVar6 + -1) - (lVar6 + -1 >> 0x3f);" (assignment_expression "lVar5 = (lVar6 + -1) - (lVar6 + -1 >> 0x3f)" (identifier "lVar5") (= "=") (binary_expression "(lVar6 + -1) - (lVar6 + -1 >> 0x3f)" (parenthesized_expression "(lVar6 + -1)" (( "(") (binary_expression "lVar6 + -1" (identifier "lVar6") (+ "+") (number_literal "-1")) () ")")) (- "-") (parenthesized_expression "(lVar6 + -1 >> 0x3f)" (( "(") (binary_expression "lVar6 + -1 >> 0x3f" (binary_expression "lVar6 + -1" (identifier "lVar6") (+ "+") (number_literal "-1")) (>> ">>") (number_literal "0x3f")) () ")")))) (; ";")) (expression_statement "local_58 = in_stack_00000018;" (assignment_expression "local_58 = in_stack_00000018" (identifier "local_58") (= "=") (identifier "in_stack_00000018")) (; ";")) (expression_statement "uStack_50 = in_stack_00000020;" (assignment_expression "uStack_50 = in_stack_00000020" (identifier "uStack_50") (= "=") (identifier "in_stack_00000020")) (; ";")) (expression_statement "local_48 = in_stack_00000028;" (assignment_expression "local_48 = in_stack_00000028" (identifier "local_48") (= "=") (identifier "in_stack_00000028")) (; ";")) (expression_statement "uStack_40 = in_stack_00000030;" (assignment_expression "uStack_40 = in_stack_00000030" (identifier "uStack_40") (= "=") (identifier "in_stack_00000030")) (; ";")) (if_statement "if (param_2 < lVar6) {\n    do {\n      lVar3 = lVar5 >> 1;\n      puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,&local_68);\n      if ((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))) {\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);\n      lVar6 = lVar3;\n    } while (param_2 < lVar3);\n  }" (if "if") (parenthesized_expression "(param_2 < lVar6)" (( "(") (binary_expression "param_2 < lVar6" (identifier "param_2") (< "<") (identifier "lVar6")) () ")")) (compound_statement "{\n    do {\n      lVar3 = lVar5 >> 1;\n      puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,&local_68);\n      if ((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))) {\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);\n      lVar6 = lVar3;\n    } while (param_2 < lVar3);\n  }" ({ "{") (do_statement "do {\n      lVar3 = lVar5 >> 1;\n      puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,&local_68);\n      if ((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))) {\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);\n      lVar6 = lVar3;\n    } while (param_2 < lVar3);" (do "do") (compound_statement "{\n      lVar3 = lVar5 >> 1;\n      puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1);\n      iVar2 = FUN_001e4d20(puVar4,&local_68);\n      if ((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))) {\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }\n      uVar1 = puVar4[1];\n      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);\n      *puVar7 = *puVar4;\n      puVar7[1] = uVar1;\n      uVar1 = puVar4[3];\n      puVar7[2] = puVar4[2];\n      puVar7[3] = uVar1;\n      uVar1 = puVar4[5];\n      puVar7[4] = puVar4[4];\n      puVar7[5] = uVar1;\n      lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);\n      lVar6 = lVar3;\n    }" ({ "{") (expression_statement "lVar3 = lVar5 >> 1;" (assignment_expression "lVar3 = lVar5 >> 1" (identifier "lVar3") (= "=") (binary_expression "lVar5 >> 1" (identifier "lVar5") (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1);" (assignment_expression "puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1)" (identifier "puVar4") (= "=") (cast_expression "(undefined8 *)(lVar3 * 0x30 + param_1)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 * 0x30 + param_1)" (( "(") (binary_expression "lVar3 * 0x30 + param_1" (binary_expression "lVar3 * 0x30" (identifier "lVar3") (* "*") (number_literal "0x30")) (+ "+") (identifier "param_1")) () ")")))) (; ";")) (expression_statement "iVar2 = FUN_001e4d20(puVar4,&local_68);" (assignment_expression "iVar2 = FUN_001e4d20(puVar4,&local_68)" (identifier "iVar2") (= "=") (call_expression "FUN_001e4d20(puVar4,&local_68)" (identifier "FUN_001e4d20") (argument_list "(puVar4,&local_68)" (( "(") (identifier "puVar4") (, ",") (pointer_expression "&local_68" (& "&") (identifier "local_68")) () ")")))) (; ";")) (if_statement "if ((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))) {\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }" (if "if") (parenthesized_expression "((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5]))))" (( "(") (binary_expression "(-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))" (parenthesized_expression "(-1 < iVar2)" (( "(") (binary_expression "-1 < iVar2" (number_literal "-1") (< "<") (identifier "iVar2")) () ")")) (&& "&&") (parenthesized_expression "((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))" (( "(") (parenthesized_expression "(iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5]))" (( "(") (binary_expression "iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])" (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "(uStack_40 <= (ulong)puVar4[5])" (( "(") (binary_expression "uStack_40 <= (ulong)puVar4[5]" (identifier "uStack_40") (<= "<=") (cast_expression "(ulong)puVar4[5]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "puVar4[5]" (identifier "puVar4") ([ "[") (number_literal "5") (] "]")))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);\n        break;\n      }" ({ "{") (expression_statement "puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);" (assignment_expression "puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1)" (identifier "puVar4") (= "=") (cast_expression "(undefined8 *)(lVar6 * 0x30 + param_1)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 * 0x30 + param_1)" (( "(") (binary_expression "lVar6 * 0x30 + param_1" (binary_expression "lVar6 * 0x30" (identifier "lVar6") (* "*") (number_literal "0x30")) (+ "+") (identifier "param_1")) () ")")))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "uVar1 = puVar4[1];" (assignment_expression "uVar1 = puVar4[1]" (identifier "uVar1") (= "=") (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);" (assignment_expression "puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1)" (identifier "puVar7") (= "=") (cast_expression "(undefined8 *)(lVar6 * 0x30 + param_1)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 * 0x30 + param_1)" (( "(") (binary_expression "lVar6 * 0x30 + param_1" (binary_expression "lVar6 * 0x30" (identifier "lVar6") (* "*") (number_literal "0x30")) (+ "+") (identifier "param_1")) () ")")))) (; ";")) (expression_statement "*puVar7 = *puVar4;" (assignment_expression "*puVar7 = *puVar4" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (expression_statement "puVar7[1] = uVar1;" (assignment_expression "puVar7[1] = uVar1" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar1 = puVar4[3];" (assignment_expression "uVar1 = puVar4[3]" (identifier "uVar1") (= "=") (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "puVar7[2] = puVar4[2];" (assignment_expression "puVar7[2] = puVar4[2]" (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar7[3] = uVar1;" (assignment_expression "puVar7[3] = uVar1" (subscript_expression "puVar7[3]" (identifier "puVar7") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar1 = puVar4[5];" (assignment_expression "uVar1 = puVar4[5]" (identifier "uVar1") (= "=") (subscript_expression "puVar4[5]" (identifier "puVar4") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "puVar7[4] = puVar4[4];" (assignment_expression "puVar7[4] = puVar4[4]" (subscript_expression "puVar7[4]" (identifier "puVar7") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "puVar7[5] = uVar1;" (assignment_expression "puVar7[5] = uVar1" (subscript_expression "puVar7[5]" (identifier "puVar7") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);" (assignment_expression "lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f)" (identifier "lVar5") (= "=") (binary_expression "(lVar3 + -1) - (lVar3 + -1 >> 0x3f)" (parenthesized_expression "(lVar3 + -1)" (( "(") (binary_expression "lVar3 + -1" (identifier "lVar3") (+ "+") (number_literal "-1")) () ")")) (- "-") (parenthesized_expression "(lVar3 + -1 >> 0x3f)" (( "(") (binary_expression "lVar3 + -1 >> 0x3f" (binary_expression "lVar3 + -1" (identifier "lVar3") (+ "+") (number_literal "-1")) (>> ">>") (number_literal "0x3f")) () ")")))) (; ";")) (expression_statement "lVar6 = lVar3;" (assignment_expression "lVar6 = lVar3" (identifier "lVar6") (= "=") (identifier "lVar3")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_2 < lVar3)" (( "(") (binary_expression "param_2 < lVar3" (identifier "param_2") (< "<") (identifier "lVar3")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_001ebf13:\n  *puVar4 = local_68;" (statement_identifier "LAB_001ebf13") (: ":") (expression_statement "*puVar4 = local_68;" (assignment_expression "*puVar4 = local_68" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (identifier "local_68")) (; ";"))) (expression_statement "puVar4[1] = uStack_60;" (assignment_expression "puVar4[1] = uStack_60" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uStack_60")) (; ";")) (expression_statement "puVar4[2] = local_58;" (assignment_expression "puVar4[2] = local_58" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_58")) (; ";")) (expression_statement "puVar4[3] = uStack_50;" (assignment_expression "puVar4[3] = uStack_50" (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uStack_50")) (; ";")) (expression_statement "puVar4[4] = local_48;" (assignment_expression "puVar4[4] = local_48" (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "local_48")) (; ";")) (expression_statement "puVar4[5] = uStack_40;" (assignment_expression "puVar4[5] = uStack_40" (subscript_expression "puVar4[5]" (identifier "puVar4") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "uStack_40")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name: __adjust_heap<__gnu_cxx::__normal_iterator<gold::Output_reloc<4, true, 64,
   false>*, std::vector<gold::Output_reloc<4, true, 64, false>, std::allocator<gold::Output_reloc<4,
   true, 64, false> > > >, long int, gold::Output_reloc<4, true, 64, false>,
   __gnu_cxx::__ops::_Iter_comp_iter<gold::Output_data_reloc_base<4, true, 64,
   false>::Sort_relocs_comparison> > */

void std::
     __adjust_heap<__gnu_cxx::__normal_iterator<gold::var_8<4,_true,_64,var_9>*,_std::vector<gold::var_8<4,_true,_64,var_9>,_std::allocator<gold::var_8<4,_true,_64,var_9>_>_>_>,_long_int,_gold::var_8<4,_true,_64,var_9>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Output_data_reloc_base<4,_true,_64,var_9>::Sort_relocs_comparison>_>
               (long var_6,long var_3,ulong var_2)

{
  type_1 aVar1;
  int var_11;
  long var_4;
  type_1 *this;
  long var_5;
  long var_7;
  type_1 *paVar6;
  type_1 __value;
  type_1 in_stack_00000010;
  type_1 in_stack_00000018;
  type_1 in_stack_00000020;
  type_1 in_stack_00000028;
  var_1<64,var_9> *in_stack_00000030;
  type_1 local_68;
  type_1 aStack_60;
  type_1 local_58;
  type_1 aStack_50;
  type_1 local_48;
  var_1<64,var_9> *var_12;
  
  var_4 = (long)(var_2 - 1) / 2;
  var_5 = var_3;
  if (var_3 < var_4) {
    do {
      var_7 = (var_5 + 1) * 2;
      this = (type_1 *)((var_5 + 1) * 0x60 + var_6);
      paVar6 = (type_1 *)((var_7 + -1) * 0x30 + var_6);
      var_11 = gold::var_8<9,_true,_64,var_9>::var_10
                        ((var_8<9,_true,_64,var_9> *)this,
                         (var_8<9,_true,_64,var_9> *)paVar6);
      if ((var_11 < 0) || ((var_11 == 0 && (this[5].relobj < paVar6[5].relobj)))) {
        this = paVar6;
        var_7 = var_7 + -1;
      }
      aVar1 = this[1];
      paVar6 = (type_1 *)(var_5 * 0x30 + var_6);
      *paVar6 = *this;
      paVar6[1] = aVar1;
      aVar1 = this[3];
      paVar6[2] = this[2];
      paVar6[3] = aVar1;
      aVar1 = this[5];
      paVar6[4] = this[4];
      paVar6[5] = aVar1;
      var_5 = var_7;
    } while (var_7 < var_4);
    if ((var_2 & 1) == 0) goto LAB_001ebfb0;
  }
  else {
    this = (type_1 *)(var_3 * 0x30 + var_6);
    var_7 = var_3;
    if ((var_2 & 1) != 0) {
      local_68 = __value;
      aStack_60 = in_stack_00000010;
      local_58 = in_stack_00000018;
      aStack_50 = in_stack_00000020;
      local_48 = in_stack_00000028;
      var_12 = in_stack_00000030;
      goto LAB_001ebf13;
    }
LAB_001ebfb0:
    if ((long)(var_2 - 2) / 2 == var_7) {
      var_7 = var_7 * 2 + 1;
      paVar6 = (type_1 *)(var_7 * 0x30 + var_6);
      aVar1 = paVar6[1];
      *this = *paVar6;
      this[1] = aVar1;
      aVar1 = paVar6[3];
      this[2] = paVar6[2];
      this[3] = aVar1;
      aVar1 = paVar6[5];
      this[4] = paVar6[4];
      this[5] = aVar1;
      this = paVar6;
    }
  }
  local_68 = __value;
  aStack_60 = in_stack_00000010;
  var_5 = (var_7 + -1) - (var_7 + -1 >> 0x3f);
  local_58 = in_stack_00000018;
  aStack_50 = in_stack_00000020;
  local_48 = in_stack_00000028;
  var_12 = in_stack_00000030;
  if (var_3 < var_7) {
    do {
      var_4 = var_5 >> 1;
      this = (type_1 *)(var_4 * 0x30 + var_6);
      var_11 = gold::var_8<9,_true,_64,var_9>::var_10
                        ((var_8<9,_true,_64,var_9> *)this,
                         (var_8<9,_true,_64,var_9> *)&local_68);
      if ((-1 < var_11) && ((var_11 != 0 || (var_12 <= this[5].relobj)))) {
        this = (type_1 *)(var_7 * 0x30 + var_6);
        break;
      }
      aVar1 = this[1];
      paVar6 = (type_1 *)(var_7 * 0x30 + var_6);
      *paVar6 = *this;
      paVar6[1] = aVar1;
      aVar1 = this[3];
      paVar6[2] = this[2];
      paVar6[3] = aVar1;
      aVar1 = this[5];
      paVar6[4] = this[4];
      paVar6[5] = aVar1;
      var_5 = (var_4 + -1) - (var_4 + -1 >> 0x3f);
      var_7 = var_4;
    } while (var_3 < var_4);
  }
LAB_001ebf13:
  *this = local_68;
  this[1] = aStack_60;
  this[2] = local_58;
  this[3] = aStack_50;
  this[4] = local_48;
  this[5].relobj = var_12;
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) declarator: (identifier)) (parameter_declaration type: (sized_type_specifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) 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: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (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: (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: (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: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (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: (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: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_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: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))))) (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (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: (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: (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: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (return_statement))))

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

{
  undefined8 uVar1;
  int iVar2;
  long lVar3;
  undefined8 *puVar4;
  long lVar5;
  long lVar6;
  undefined8 *puVar7;
  undefined8 in_stack_00000008;
  undefined8 in_stack_00000010;
  undefined8 in_stack_00000018;
  undefined8 in_stack_00000020;
  undefined8 in_stack_00000028;
  ulong in_stack_00000030;
  undefined8 local_68;
  undefined8 uStack_60;
  undefined8 local_58;
  undefined8 uStack_50;
  undefined8 local_48;
  ulong uStack_40;
  
  lVar3 = (long)(param_3 - 1) / 2;
  lVar5 = param_2;
  if (param_2 < lVar3) {
    do {
      lVar6 = (lVar5 + 1) * 2;
      puVar4 = (undefined8 *)((lVar5 + 1) * 0x60 + param_1);
      puVar7 = (undefined8 *)((lVar6 + -1) * 0x30 + param_1);
      iVar2 = FUN_001e4d20(puVar4,puVar7);
      if ((iVar2 < 0) || ((iVar2 == 0 && ((ulong)puVar4[5] < (ulong)puVar7[5])))) {
        puVar4 = puVar7;
        lVar6 = lVar6 + -1;
      }
      uVar1 = puVar4[1];
      puVar7 = (undefined8 *)(lVar5 * 0x30 + param_1);
      *puVar7 = *puVar4;
      puVar7[1] = uVar1;
      uVar1 = puVar4[3];
      puVar7[2] = puVar4[2];
      puVar7[3] = uVar1;
      uVar1 = puVar4[5];
      puVar7[4] = puVar4[4];
      puVar7[5] = uVar1;
      lVar5 = lVar6;
    } while (lVar6 < lVar3);
    if ((param_3 & 1) == 0) goto LAB_001ebfb0;
  }
  else {
    puVar4 = (undefined8 *)(param_2 * 0x30 + param_1);
    lVar6 = param_2;
    if ((param_3 & 1) != 0) {
      local_68 = in_stack_00000008;
      uStack_60 = in_stack_00000010;
      local_58 = in_stack_00000018;
      uStack_50 = in_stack_00000020;
      local_48 = in_stack_00000028;
      uStack_40 = in_stack_00000030;
      goto LAB_001ebf13;
    }
LAB_001ebfb0:
    if ((long)(param_3 - 2) / 2 == lVar6) {
      lVar6 = lVar6 * 2 + 1;
      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);
      uVar1 = puVar7[1];
      *puVar4 = *puVar7;
      puVar4[1] = uVar1;
      uVar1 = puVar7[3];
      puVar4[2] = puVar7[2];
      puVar4[3] = uVar1;
      uVar1 = puVar7[5];
      puVar4[4] = puVar7[4];
      puVar4[5] = uVar1;
      puVar4 = puVar7;
    }
  }
  local_68 = in_stack_00000008;
  uStack_60 = in_stack_00000010;
  lVar5 = (lVar6 + -1) - (lVar6 + -1 >> 0x3f);
  local_58 = in_stack_00000018;
  uStack_50 = in_stack_00000020;
  local_48 = in_stack_00000028;
  uStack_40 = in_stack_00000030;
  if (param_2 < lVar6) {
    do {
      lVar3 = lVar5 >> 1;
      puVar4 = (undefined8 *)(lVar3 * 0x30 + param_1);
      iVar2 = FUN_001e4d20(puVar4,&local_68);
      if ((-1 < iVar2) && ((iVar2 != 0 || (uStack_40 <= (ulong)puVar4[5])))) {
        puVar4 = (undefined8 *)(lVar6 * 0x30 + param_1);
        break;
      }
      uVar1 = puVar4[1];
      puVar7 = (undefined8 *)(lVar6 * 0x30 + param_1);
      *puVar7 = *puVar4;
      puVar7[1] = uVar1;
      uVar1 = puVar4[3];
      puVar7[2] = puVar4[2];
      puVar7[3] = uVar1;
      uVar1 = puVar4[5];
      puVar7[4] = puVar4[4];
      puVar7[5] = uVar1;
      lVar5 = (lVar3 + -1) - (lVar3 + -1 >> 0x3f);
      lVar6 = lVar3;
    } while (param_2 < lVar3);
  }
LAB_001ebf13:
  *puVar4 = local_68;
  puVar4[1] = uStack_60;
  puVar4[2] = local_58;
  puVar4[3] = uStack_50;
  puVar4[4] = local_48;
  puVar4[5] = uStack_40;
  return;
}

