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

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

{
  long lVar1;
  anon_union_8_4_c82d8563_for_u1_ aVar2;
  int iVar3;
  long lVar4;
  anon_union_8_4_c82d8563_for_u1_ *paVar5;
  anon_union_8_4_c82d8563_for_u1_ *this;
  long lVar6;
  long lVar7;
  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;
  undefined8 in_stack_00000028;
  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;
  undefined8 local_48;
  
  lVar4 = (long)(__len - 1) / 2;
  lVar7 = __holeIndex;
  if (__holeIndex < lVar4) {
    do {
      lVar6 = (lVar7 + 1) * 2;
      lVar1 = lVar6 + -1;
      this = (anon_union_8_4_c82d8563_for_u1_ *)(__first + (lVar7 + 1) * 0x50);
      paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar1 * 0x28);
      iVar3 = gold::Output_reloc<9,_true,_64,_false>::compare
                        ((Output_reloc<9,_true,_64,_false> *)this,
                         (Output_reloc<9,_true,_64,_false> *)paVar5);
      if (iVar3 < 0) {
        this = paVar5;
      }
      paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar7 * 0x28);
      if (iVar3 < 0) {
        lVar6 = lVar1;
      }
      aVar2 = this[1];
      *paVar5 = *this;
      paVar5[1] = aVar2;
      aVar2 = this[3];
      paVar5[2] = this[2];
      paVar5[3] = aVar2;
      *(uint *)(paVar5 + 4) = *(uint *)(this + 4);
      lVar7 = lVar6;
    } while (lVar6 < lVar4);
    paVar5 = this;
    if ((__len & 1) == 0) goto LAB_00236250;
  }
  else {
    this = (anon_union_8_4_c82d8563_for_u1_ *)(__first + __holeIndex * 0x28);
    lVar6 = __holeIndex;
    if ((__len & 1) != 0) {
      local_68 = __value;
      aStack_60 = in_stack_00000010;
      local_48 = in_stack_00000028;
      local_58 = in_stack_00000018;
      aStack_50 = in_stack_00000020;
      goto LAB_0023620a;
    }
LAB_00236250:
    paVar5 = this;
    if ((long)(__len - 2) / 2 == lVar6) {
      lVar6 = lVar6 * 2 + 1;
      paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar6 * 0x28);
      aVar2 = paVar5[1];
      *this = *paVar5;
      this[1] = aVar2;
      aVar2 = paVar5[3];
      this[2] = paVar5[2];
      this[3] = aVar2;
      *(uint *)(this + 4) = *(uint *)(paVar5 + 4);
    }
  }
  local_48 = in_stack_00000028;
  local_68 = __value;
  aStack_60 = in_stack_00000010;
  local_58 = in_stack_00000018;
  aStack_50 = in_stack_00000020;
  lVar7 = (lVar6 + -1) - (lVar6 + -1 >> 0x3f);
  this = paVar5;
  if (__holeIndex < lVar6) {
    do {
      lVar4 = lVar7 >> 1;
      paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar4 * 0x28);
      iVar3 = gold::Output_reloc<9,_true,_64,_false>::compare
                        ((Output_reloc<9,_true,_64,_false> *)paVar5,
                         (Output_reloc<9,_true,_64,_false> *)&local_68);
      this = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar6 * 0x28);
      if (-1 < iVar3) break;
      aVar2 = paVar5[1];
      *this = *paVar5;
      this[1] = aVar2;
      aVar2 = paVar5[3];
      this[2] = paVar5[2];
      this[3] = aVar2;
      *(uint *)(this + 4) = *(uint *)(paVar5 + 4);
      lVar7 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);
      this = paVar5;
      lVar6 = lVar4;
    } while (__holeIndex < lVar4);
  }
LAB_0023620a:
  *this = local_68;
  this[1] = aStack_60;
  this[2] = local_58;
  this[3] = aStack_50;
  *(uint *)(this + 4) = (uint)local_48;
  return;
}



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

{
  long lVar1;
  undefined8 uVar2;
  int iVar3;
  long lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  long lVar7;
  long lVar8;
  undefined8 in_stack_00000008;
  undefined8 in_stack_00000010;
  undefined8 in_stack_00000018;
  undefined8 in_stack_00000020;
  undefined8 in_stack_00000028;
  undefined8 local_68;
  undefined8 uStack_60;
  undefined8 local_58;
  undefined8 uStack_50;
  undefined8 local_48;
  
  lVar4 = (long)(param_3 - 1) / 2;
  lVar8 = param_2;
  if (param_2 < lVar4) {
    do {
      lVar7 = (lVar8 + 1) * 2;
      lVar1 = lVar7 + -1;
      puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50);
      puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28);
      iVar3 = FUN_0022b720(puVar6,puVar5);
      if (iVar3 < 0) {
        puVar6 = puVar5;
      }
      puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28);
      if (iVar3 < 0) {
        lVar7 = lVar1;
      }
      uVar2 = puVar6[1];
      *puVar5 = *puVar6;
      puVar5[1] = uVar2;
      uVar2 = puVar6[3];
      puVar5[2] = puVar6[2];
      puVar5[3] = uVar2;
      *(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4);
      lVar8 = lVar7;
    } while (lVar7 < lVar4);
    puVar5 = puVar6;
    if ((param_3 & 1) == 0) goto LAB_00236250;
  }
  else {
    puVar6 = (undefined8 *)(param_1 + param_2 * 0x28);
    lVar7 = param_2;
    if ((param_3 & 1) != 0) {
      local_68 = in_stack_00000008;
      uStack_60 = in_stack_00000010;
      local_48 = in_stack_00000028;
      local_58 = in_stack_00000018;
      uStack_50 = in_stack_00000020;
      goto LAB_0023620a;
    }
LAB_00236250:
    puVar5 = puVar6;
    if ((long)(param_3 - 2) / 2 == lVar7) {
      lVar7 = lVar7 * 2 + 1;
      puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);
      uVar2 = puVar5[1];
      *puVar6 = *puVar5;
      puVar6[1] = uVar2;
      uVar2 = puVar5[3];
      puVar6[2] = puVar5[2];
      puVar6[3] = uVar2;
      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);
    }
  }
  local_48 = in_stack_00000028;
  local_68 = in_stack_00000008;
  uStack_60 = in_stack_00000010;
  local_58 = in_stack_00000018;
  uStack_50 = in_stack_00000020;
  lVar8 = (lVar7 + -1) - (lVar7 + -1 >> 0x3f);
  puVar6 = puVar5;
  if (param_2 < lVar7) {
    do {
      lVar4 = lVar8 >> 1;
      puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28);
      iVar3 = FUN_0022b720(puVar5,&local_68);
      puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28);
      if (-1 < iVar3) break;
      uVar2 = puVar5[1];
      *puVar6 = *puVar5;
      puVar6[1] = uVar2;
      uVar2 = puVar5[3];
      puVar6[2] = puVar5[2];
      puVar6[3] = uVar2;
      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);
      lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);
      puVar6 = puVar5;
      lVar7 = lVar4;
    } while (param_2 < lVar4);
  }
LAB_0023620a:
  *puVar6 = local_68;
  puVar6[1] = uStack_60;
  puVar6[2] = local_58;
  puVar6[3] = uStack_50;
  *(undefined4 *)(puVar6 + 4) = (undefined4)local_48;
  return;
}


LEA RAX,[RDX + -0x1]
PUSH R15
MOV RCX,RDX
PUSH R14
AND ECX,0x1
PUSH R13
MOV R13,RAX
PUSH R12
SHR R13,0x3f
MOV R12,RDI
PUSH RBP
ADD R13,RAX
PUSH RBX
MOV RAX,R13
SAR RAX,0x1
SUB RSP,0x58
MOV qword ptr [RSP],RSI
MOV qword ptr [RSP + 0x18],RDX
MOV qword ptr [RSP + 0x8],RAX
MOV qword ptr [RSP + 0x10],RCX
CMP RSI,RAX
JGE 0x00236238
MOV R15,RSI
NOP word ptr [RAX + RAX*0x1]
LEA RAX,[R15 + 0x1]
LEA RBP,[RAX + RAX*0x1]
LEA R14,[RBP + -0x1]
LEA RAX,[RBP + RAX*0x8]
LEA RSI,[R14 + R14*0x4]
LEA RBX,[R12 + RAX*0x8]
LEA R13,[R12 + RSI*0x8]
MOV RDI,RBX
MOV RSI,R13
CALL 0x0022b720
TEST EAX,EAX
LEA RAX,[R15 + R15*0x4]
CMOVS RBX,R13
LEA RAX,[R12 + RAX*0x8]
CMOVS RBP,R14
MOVDQU XMM2,xmmword ptr [RBX]
MOV R15,RBP
MOVUPS xmmword ptr [RAX],XMM2
MOVDQU XMM3,xmmword ptr [RBX + 0x10]
MOVUPS xmmword ptr [RAX + 0x10],XMM3
MOV EDX,dword ptr [RBX + 0x20]
MOV dword ptr [RAX + 0x20],EDX
CMP RBP,qword ptr [RSP + 0x8]
JL 0x00236100
CMP qword ptr [RSP + 0x10],0x0
JZ 0x00236250
MOV RAX,qword ptr [RSP + 0xb0]
MOVDQU XMM6,xmmword ptr [RSP + 0x90]
MOVDQU XMM7,xmmword ptr [RSP + 0xa0]
MOV qword ptr [RSP + 0x40],RAX
LEA RAX,[RBP + -0x1]
MOV R14,RAX
MOVUPS xmmword ptr [RSP + 0x20],XMM6
SHR R14,0x3f
MOVUPS xmmword ptr [RSP + 0x30],XMM7
ADD R14,RAX
SAR R14,0x1
CMP RBP,qword ptr [RSP]
JLE 0x0023620a
LEA R13,[RSP + 0x20]
JMP 0x002361ea
MOVDQU XMM0,xmmword ptr [R15]
LEA RDX,[R14 + -0x1]
MOV RBP,R14
MOVUPS xmmword ptr [RBX],XMM0
MOVDQU XMM1,xmmword ptr [R15 + 0x10]
MOVUPS xmmword ptr [RBX + 0x10],XMM1
MOV EAX,dword ptr [R15 + 0x20]
MOV dword ptr [RBX + 0x20],EAX
MOV RAX,RDX
SHR RAX,0x3f
ADD RAX,RDX
SAR RAX,0x1
CMP qword ptr [RSP],R14
JGE 0x002362a0
MOV R14,RAX
LEA RAX,[R14 + R14*0x4]
MOV RSI,R13
LEA R15,[R12 + RAX*0x8]
MOV RDI,R15
CALL 0x0022b720
LEA RDX,[RBP + RBP*0x4]
LEA RBX,[R12 + RDX*0x8]
TEST EAX,EAX
JS 0x002361b0
MOVDQU XMM4,xmmword ptr [RSP + 0x20]
MOVDQU XMM5,xmmword ptr [RSP + 0x30]
MOV EAX,dword ptr [RSP + 0x40]
MOVUPS xmmword ptr [RBX],XMM4
MOVUPS xmmword ptr [RBX + 0x10],XMM5
MOV dword ptr [RBX + 0x20],EAX
ADD RSP,0x58
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RAX,qword ptr [RSP]
CMP qword ptr [RSP + 0x10],0x0
LEA RAX,[RAX + RAX*0x4]
LEA RBX,[RDI + RAX*0x8]
JNZ 0x002362a8
MOV RBP,qword ptr [RSP]
MOV RAX,qword ptr [RSP + 0x18]
SUB RAX,0x2
MOV R14,RAX
SHR R14,0x3f
ADD R14,RAX
SAR R14,0x1
CMP R14,RBP
JNZ 0x00236166
LEA RBP,[RBP + RBP*0x1 + 0x1]
LEA RAX,[RBP + RBP*0x4]
LEA RAX,[R12 + RAX*0x8]
MOVDQU XMM6,xmmword ptr [RAX]
MOVUPS xmmword ptr [RBX],XMM6
MOVDQU XMM7,xmmword ptr [RAX + 0x10]
MOVUPS xmmword ptr [RBX + 0x10],XMM7
MOV EDX,dword ptr [RAX + 0x20]
MOV dword ptr [RBX + 0x20],EDX
MOV RBX,RAX
JMP 0x00236166
MOV RBX,R15
JMP 0x0023620a
MOVDQU XMM4,xmmword ptr [RSP + 0x90]
MOV RAX,qword ptr [RSP + 0xb0]
MOVDQU XMM5,xmmword ptr [RSP + 0xa0]
MOVUPS xmmword ptr [RSP + 0x20],XMM4
MOVUPS xmmword ptr [RSP + 0x30],XMM5
MOV qword ptr [RSP + 0x40],RAX
JMP 0x0023620a
(translation_unit "void FUN_002360b0(long param_1,long param_2,ulong param_3)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  int iVar3;\n  long lVar4;\n  undefined8 *puVar5;\n  undefined8 *puVar6;\n  long lVar7;\n  long lVar8;\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  undefined8 local_68;\n  undefined8 uStack_60;\n  undefined8 local_58;\n  undefined8 uStack_50;\n  undefined8 local_48;\n  \n  lVar4 = (long)(param_3 - 1) / 2;\n  lVar8 = param_2;\n  if (param_2 < lVar4) {\n    do {\n      lVar7 = (lVar8 + 1) * 2;\n      lVar1 = lVar7 + -1;\n      puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50);\n      puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28);\n      iVar3 = FUN_0022b720(puVar6,puVar5);\n      if (iVar3 < 0) {\n        puVar6 = puVar5;\n      }\n      puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28);\n      if (iVar3 < 0) {\n        lVar7 = lVar1;\n      }\n      uVar2 = puVar6[1];\n      *puVar5 = *puVar6;\n      puVar5[1] = uVar2;\n      uVar2 = puVar6[3];\n      puVar5[2] = puVar6[2];\n      puVar5[3] = uVar2;\n      *(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4);\n      lVar8 = lVar7;\n    } while (lVar7 < lVar4);\n    puVar5 = puVar6;\n    if ((param_3 & 1) == 0) goto LAB_00236250;\n  }\n  else {\n    puVar6 = (undefined8 *)(param_1 + param_2 * 0x28);\n    lVar7 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\n    }\nLAB_00236250:\n    puVar5 = puVar6;\n    if ((long)(param_3 - 2) / 2 == lVar7) {\n      lVar7 = lVar7 * 2 + 1;\n      puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n    }\n  }\n  local_48 = in_stack_00000028;\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  lVar8 = (lVar7 + -1) - (lVar7 + -1 >> 0x3f);\n  puVar6 = puVar5;\n  if (param_2 < lVar7) {\n    do {\n      lVar4 = lVar8 >> 1;\n      puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28);\n      iVar3 = FUN_0022b720(puVar5,&local_68);\n      puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      if (-1 < iVar3) break;\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n      lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      puVar6 = puVar5;\n      lVar7 = lVar4;\n    } while (param_2 < lVar4);\n  }\nLAB_0023620a:\n  *puVar6 = local_68;\n  puVar6[1] = uStack_60;\n  puVar6[2] = local_58;\n  puVar6[3] = uStack_50;\n  *(undefined4 *)(puVar6 + 4) = (undefined4)local_48;\n  return;\n}\n\n" (function_definition "void FUN_002360b0(long param_1,long param_2,ulong param_3)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  int iVar3;\n  long lVar4;\n  undefined8 *puVar5;\n  undefined8 *puVar6;\n  long lVar7;\n  long lVar8;\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  undefined8 local_68;\n  undefined8 uStack_60;\n  undefined8 local_58;\n  undefined8 uStack_50;\n  undefined8 local_48;\n  \n  lVar4 = (long)(param_3 - 1) / 2;\n  lVar8 = param_2;\n  if (param_2 < lVar4) {\n    do {\n      lVar7 = (lVar8 + 1) * 2;\n      lVar1 = lVar7 + -1;\n      puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50);\n      puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28);\n      iVar3 = FUN_0022b720(puVar6,puVar5);\n      if (iVar3 < 0) {\n        puVar6 = puVar5;\n      }\n      puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28);\n      if (iVar3 < 0) {\n        lVar7 = lVar1;\n      }\n      uVar2 = puVar6[1];\n      *puVar5 = *puVar6;\n      puVar5[1] = uVar2;\n      uVar2 = puVar6[3];\n      puVar5[2] = puVar6[2];\n      puVar5[3] = uVar2;\n      *(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4);\n      lVar8 = lVar7;\n    } while (lVar7 < lVar4);\n    puVar5 = puVar6;\n    if ((param_3 & 1) == 0) goto LAB_00236250;\n  }\n  else {\n    puVar6 = (undefined8 *)(param_1 + param_2 * 0x28);\n    lVar7 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\n    }\nLAB_00236250:\n    puVar5 = puVar6;\n    if ((long)(param_3 - 2) / 2 == lVar7) {\n      lVar7 = lVar7 * 2 + 1;\n      puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n    }\n  }\n  local_48 = in_stack_00000028;\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  lVar8 = (lVar7 + -1) - (lVar7 + -1 >> 0x3f);\n  puVar6 = puVar5;\n  if (param_2 < lVar7) {\n    do {\n      lVar4 = lVar8 >> 1;\n      puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28);\n      iVar3 = FUN_0022b720(puVar5,&local_68);\n      puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      if (-1 < iVar3) break;\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n      lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      puVar6 = puVar5;\n      lVar7 = lVar4;\n    } while (param_2 < lVar4);\n  }\nLAB_0023620a:\n  *puVar6 = local_68;\n  puVar6[1] = uStack_60;\n  puVar6[2] = local_58;\n  puVar6[3] = uStack_50;\n  *(undefined4 *)(puVar6 + 4) = (undefined4)local_48;\n  return;\n}" primitive_type (function_declarator "FUN_002360b0(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  long lVar1;\n  undefined8 uVar2;\n  int iVar3;\n  long lVar4;\n  undefined8 *puVar5;\n  undefined8 *puVar6;\n  long lVar7;\n  long lVar8;\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  undefined8 local_68;\n  undefined8 uStack_60;\n  undefined8 local_58;\n  undefined8 uStack_50;\n  undefined8 local_48;\n  \n  lVar4 = (long)(param_3 - 1) / 2;\n  lVar8 = param_2;\n  if (param_2 < lVar4) {\n    do {\n      lVar7 = (lVar8 + 1) * 2;\n      lVar1 = lVar7 + -1;\n      puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50);\n      puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28);\n      iVar3 = FUN_0022b720(puVar6,puVar5);\n      if (iVar3 < 0) {\n        puVar6 = puVar5;\n      }\n      puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28);\n      if (iVar3 < 0) {\n        lVar7 = lVar1;\n      }\n      uVar2 = puVar6[1];\n      *puVar5 = *puVar6;\n      puVar5[1] = uVar2;\n      uVar2 = puVar6[3];\n      puVar5[2] = puVar6[2];\n      puVar5[3] = uVar2;\n      *(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4);\n      lVar8 = lVar7;\n    } while (lVar7 < lVar4);\n    puVar5 = puVar6;\n    if ((param_3 & 1) == 0) goto LAB_00236250;\n  }\n  else {\n    puVar6 = (undefined8 *)(param_1 + param_2 * 0x28);\n    lVar7 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\n    }\nLAB_00236250:\n    puVar5 = puVar6;\n    if ((long)(param_3 - 2) / 2 == lVar7) {\n      lVar7 = lVar7 * 2 + 1;\n      puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n    }\n  }\n  local_48 = in_stack_00000028;\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  lVar8 = (lVar7 + -1) - (lVar7 + -1 >> 0x3f);\n  puVar6 = puVar5;\n  if (param_2 < lVar7) {\n    do {\n      lVar4 = lVar8 >> 1;\n      puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28);\n      iVar3 = FUN_0022b720(puVar5,&local_68);\n      puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      if (-1 < iVar3) break;\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n      lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      puVar6 = puVar5;\n      lVar7 = lVar4;\n    } while (param_2 < lVar4);\n  }\nLAB_0023620a:\n  *puVar6 = local_68;\n  puVar6[1] = uStack_60;\n  puVar6[2] = local_58;\n  puVar6[3] = uStack_50;\n  *(undefined4 *)(puVar6 + 4) = (undefined4)local_48;\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined8 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) 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 "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 ;) (expression_statement "lVar4 = (long)(param_3 - 1) / 2;" (assignment_expression "lVar4 = (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 "lVar8 = param_2;" (assignment_expression "lVar8 = param_2" identifier = identifier) ;) (if_statement "if (param_2 < lVar4) {\n    do {\n      lVar7 = (lVar8 + 1) * 2;\n      lVar1 = lVar7 + -1;\n      puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50);\n      puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28);\n      iVar3 = FUN_0022b720(puVar6,puVar5);\n      if (iVar3 < 0) {\n        puVar6 = puVar5;\n      }\n      puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28);\n      if (iVar3 < 0) {\n        lVar7 = lVar1;\n      }\n      uVar2 = puVar6[1];\n      *puVar5 = *puVar6;\n      puVar5[1] = uVar2;\n      uVar2 = puVar6[3];\n      puVar5[2] = puVar6[2];\n      puVar5[3] = uVar2;\n      *(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4);\n      lVar8 = lVar7;\n    } while (lVar7 < lVar4);\n    puVar5 = puVar6;\n    if ((param_3 & 1) == 0) goto LAB_00236250;\n  }\n  else {\n    puVar6 = (undefined8 *)(param_1 + param_2 * 0x28);\n    lVar7 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\n    }\nLAB_00236250:\n    puVar5 = puVar6;\n    if ((long)(param_3 - 2) / 2 == lVar7) {\n      lVar7 = lVar7 * 2 + 1;\n      puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n    }\n  }" if (parenthesized_expression "(param_2 < lVar4)" ( (binary_expression "param_2 < lVar4" identifier < identifier) )) (compound_statement "{\n    do {\n      lVar7 = (lVar8 + 1) * 2;\n      lVar1 = lVar7 + -1;\n      puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50);\n      puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28);\n      iVar3 = FUN_0022b720(puVar6,puVar5);\n      if (iVar3 < 0) {\n        puVar6 = puVar5;\n      }\n      puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28);\n      if (iVar3 < 0) {\n        lVar7 = lVar1;\n      }\n      uVar2 = puVar6[1];\n      *puVar5 = *puVar6;\n      puVar5[1] = uVar2;\n      uVar2 = puVar6[3];\n      puVar5[2] = puVar6[2];\n      puVar5[3] = uVar2;\n      *(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4);\n      lVar8 = lVar7;\n    } while (lVar7 < lVar4);\n    puVar5 = puVar6;\n    if ((param_3 & 1) == 0) goto LAB_00236250;\n  }" { (do_statement "do {\n      lVar7 = (lVar8 + 1) * 2;\n      lVar1 = lVar7 + -1;\n      puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50);\n      puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28);\n      iVar3 = FUN_0022b720(puVar6,puVar5);\n      if (iVar3 < 0) {\n        puVar6 = puVar5;\n      }\n      puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28);\n      if (iVar3 < 0) {\n        lVar7 = lVar1;\n      }\n      uVar2 = puVar6[1];\n      *puVar5 = *puVar6;\n      puVar5[1] = uVar2;\n      uVar2 = puVar6[3];\n      puVar5[2] = puVar6[2];\n      puVar5[3] = uVar2;\n      *(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4);\n      lVar8 = lVar7;\n    } while (lVar7 < lVar4);" do (compound_statement "{\n      lVar7 = (lVar8 + 1) * 2;\n      lVar1 = lVar7 + -1;\n      puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50);\n      puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28);\n      iVar3 = FUN_0022b720(puVar6,puVar5);\n      if (iVar3 < 0) {\n        puVar6 = puVar5;\n      }\n      puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28);\n      if (iVar3 < 0) {\n        lVar7 = lVar1;\n      }\n      uVar2 = puVar6[1];\n      *puVar5 = *puVar6;\n      puVar5[1] = uVar2;\n      uVar2 = puVar6[3];\n      puVar5[2] = puVar6[2];\n      puVar5[3] = uVar2;\n      *(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4);\n      lVar8 = lVar7;\n    }" { (expression_statement "lVar7 = (lVar8 + 1) * 2;" (assignment_expression "lVar7 = (lVar8 + 1) * 2" identifier = (binary_expression "(lVar8 + 1) * 2" (parenthesized_expression "(lVar8 + 1)" ( (binary_expression "lVar8 + 1" identifier + number_literal) )) * number_literal)) ;) (expression_statement "lVar1 = lVar7 + -1;" (assignment_expression "lVar1 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50);" (assignment_expression "puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50)" identifier = (cast_expression "(undefined8 *)(param_1 + (lVar8 + 1) * 0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + (lVar8 + 1) * 0x50)" ( (binary_expression "param_1 + (lVar8 + 1) * 0x50" identifier + (binary_expression "(lVar8 + 1) * 0x50" (parenthesized_expression "(lVar8 + 1)" ( (binary_expression "lVar8 + 1" identifier + number_literal) )) * number_literal)) )))) ;) (expression_statement "puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28);" (assignment_expression "puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28)" identifier = (cast_expression "(undefined8 *)(param_1 + lVar1 * 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar1 * 0x28)" ( (binary_expression "param_1 + lVar1 * 0x28" identifier + (binary_expression "lVar1 * 0x28" identifier * number_literal)) )))) ;) (expression_statement "iVar3 = FUN_0022b720(puVar6,puVar5);" (assignment_expression "iVar3 = FUN_0022b720(puVar6,puVar5)" identifier = (call_expression "FUN_0022b720(puVar6,puVar5)" identifier (argument_list "(puVar6,puVar5)" ( identifier , identifier )))) ;) (if_statement "if (iVar3 < 0) {\n        puVar6 = puVar5;\n      }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n        puVar6 = puVar5;\n      }" { (expression_statement "puVar6 = puVar5;" (assignment_expression "puVar6 = puVar5" identifier = identifier) ;) })) (expression_statement "puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28);" (assignment_expression "puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28)" identifier = (cast_expression "(undefined8 *)(param_1 + lVar8 * 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar8 * 0x28)" ( (binary_expression "param_1 + lVar8 * 0x28" identifier + (binary_expression "lVar8 * 0x28" identifier * number_literal)) )))) ;) (if_statement "if (iVar3 < 0) {\n        lVar7 = lVar1;\n      }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n        lVar7 = lVar1;\n      }" { (expression_statement "lVar7 = lVar1;" (assignment_expression "lVar7 = lVar1" identifier = identifier) ;) })) (expression_statement "uVar2 = puVar6[1];" (assignment_expression "uVar2 = puVar6[1]" identifier = (subscript_expression "puVar6[1]" identifier [ number_literal ])) ;) (expression_statement "*puVar5 = *puVar6;" (assignment_expression "*puVar5 = *puVar6" (pointer_expression "*puVar5" * identifier) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar5[1] = uVar2;" (assignment_expression "puVar5[1] = uVar2" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar2 = puVar6[3];" (assignment_expression "uVar2 = puVar6[3]" identifier = (subscript_expression "puVar6[3]" identifier [ number_literal ])) ;) (expression_statement "puVar5[2] = puVar6[2];" (assignment_expression "puVar5[2] = puVar6[2]" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = (subscript_expression "puVar6[2]" identifier [ number_literal ])) ;) (expression_statement "puVar5[3] = uVar2;" (assignment_expression "puVar5[3] = uVar2" (subscript_expression "puVar5[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4);" (assignment_expression "*(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4)" (pointer_expression "*(undefined4 *)(puVar5 + 4)" * (cast_expression "(undefined4 *)(puVar5 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 4)" ( (binary_expression "puVar5 + 4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar6 + 4)" * (cast_expression "(undefined4 *)(puVar6 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 4)" ( (binary_expression "puVar6 + 4" identifier + number_literal) ))))) ;) (expression_statement "lVar8 = lVar7;" (assignment_expression "lVar8 = lVar7" identifier = identifier) ;) }) while (parenthesized_expression "(lVar7 < lVar4)" ( (binary_expression "lVar7 < lVar4" identifier < identifier) )) ;) (expression_statement "puVar5 = puVar6;" (assignment_expression "puVar5 = puVar6" identifier = identifier) ;) (if_statement "if ((param_3 & 1) == 0) goto LAB_00236250;" 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_00236250;" goto statement_identifier ;)) }) (else_clause "else {\n    puVar6 = (undefined8 *)(param_1 + param_2 * 0x28);\n    lVar7 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\n    }\nLAB_00236250:\n    puVar5 = puVar6;\n    if ((long)(param_3 - 2) / 2 == lVar7) {\n      lVar7 = lVar7 * 2 + 1;\n      puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n    }\n  }" else (compound_statement "{\n    puVar6 = (undefined8 *)(param_1 + param_2 * 0x28);\n    lVar7 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\n    }\nLAB_00236250:\n    puVar5 = puVar6;\n    if ((long)(param_3 - 2) / 2 == lVar7) {\n      lVar7 = lVar7 * 2 + 1;\n      puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n    }\n  }" { (expression_statement "puVar6 = (undefined8 *)(param_1 + param_2 * 0x28);" (assignment_expression "puVar6 = (undefined8 *)(param_1 + param_2 * 0x28)" identifier = (cast_expression "(undefined8 *)(param_1 + param_2 * 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + param_2 * 0x28)" ( (binary_expression "param_1 + param_2 * 0x28" identifier + (binary_expression "param_2 * 0x28" identifier * number_literal)) )))) ;) (expression_statement "lVar7 = param_2;" (assignment_expression "lVar7 = 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_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\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_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\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_48 = in_stack_00000028;" (assignment_expression "local_48 = in_stack_00000028" 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) ;) (goto_statement "goto LAB_0023620a;" goto statement_identifier ;) })) (labeled_statement "LAB_00236250:\n    puVar5 = puVar6;" statement_identifier : (expression_statement "puVar5 = puVar6;" (assignment_expression "puVar5 = puVar6" identifier = identifier) ;)) (if_statement "if ((long)(param_3 - 2) / 2 == lVar7) {\n      lVar7 = lVar7 * 2 + 1;\n      puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n    }" if (parenthesized_expression "((long)(param_3 - 2) / 2 == lVar7)" ( (binary_expression "(long)(param_3 - 2) / 2 == lVar7" (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      lVar7 = lVar7 * 2 + 1;\n      puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n    }" { (expression_statement "lVar7 = lVar7 * 2 + 1;" (assignment_expression "lVar7 = lVar7 * 2 + 1" identifier = (binary_expression "lVar7 * 2 + 1" (binary_expression "lVar7 * 2" identifier * number_literal) + number_literal)) ;) (expression_statement "puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);" (assignment_expression "puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28)" identifier = (cast_expression "(undefined8 *)(param_1 + lVar7 * 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar7 * 0x28)" ( (binary_expression "param_1 + lVar7 * 0x28" identifier + (binary_expression "lVar7 * 0x28" identifier * number_literal)) )))) ;) (expression_statement "uVar2 = puVar5[1];" (assignment_expression "uVar2 = puVar5[1]" identifier = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "*puVar6 = *puVar5;" (assignment_expression "*puVar6 = *puVar5" (pointer_expression "*puVar6" * identifier) = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar6[1] = uVar2;" (assignment_expression "puVar6[1] = uVar2" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar2 = puVar5[3];" (assignment_expression "uVar2 = puVar5[3]" identifier = (subscript_expression "puVar5[3]" identifier [ number_literal ])) ;) (expression_statement "puVar6[2] = puVar5[2];" (assignment_expression "puVar6[2] = puVar5[2]" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = (subscript_expression "puVar5[2]" identifier [ number_literal ])) ;) (expression_statement "puVar6[3] = uVar2;" (assignment_expression "puVar6[3] = uVar2" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);" (assignment_expression "*(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4)" (pointer_expression "*(undefined4 *)(puVar6 + 4)" * (cast_expression "(undefined4 *)(puVar6 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 4)" ( (binary_expression "puVar6 + 4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar5 + 4)" * (cast_expression "(undefined4 *)(puVar5 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 4)" ( (binary_expression "puVar5 + 4" identifier + number_literal) ))))) ;) })) }))) (expression_statement "local_48 = in_stack_00000028;" (assignment_expression "local_48 = in_stack_00000028" 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 "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 "lVar8 = (lVar7 + -1) - (lVar7 + -1 >> 0x3f);" (assignment_expression "lVar8 = (lVar7 + -1) - (lVar7 + -1 >> 0x3f)" identifier = (binary_expression "(lVar7 + -1) - (lVar7 + -1 >> 0x3f)" (parenthesized_expression "(lVar7 + -1)" ( (binary_expression "lVar7 + -1" identifier + number_literal) )) - (parenthesized_expression "(lVar7 + -1 >> 0x3f)" ( (binary_expression "lVar7 + -1 >> 0x3f" (binary_expression "lVar7 + -1" identifier + number_literal) >> number_literal) )))) ;) (expression_statement "puVar6 = puVar5;" (assignment_expression "puVar6 = puVar5" identifier = identifier) ;) (if_statement "if (param_2 < lVar7) {\n    do {\n      lVar4 = lVar8 >> 1;\n      puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28);\n      iVar3 = FUN_0022b720(puVar5,&local_68);\n      puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      if (-1 < iVar3) break;\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n      lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      puVar6 = puVar5;\n      lVar7 = lVar4;\n    } while (param_2 < lVar4);\n  }" if (parenthesized_expression "(param_2 < lVar7)" ( (binary_expression "param_2 < lVar7" identifier < identifier) )) (compound_statement "{\n    do {\n      lVar4 = lVar8 >> 1;\n      puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28);\n      iVar3 = FUN_0022b720(puVar5,&local_68);\n      puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      if (-1 < iVar3) break;\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n      lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      puVar6 = puVar5;\n      lVar7 = lVar4;\n    } while (param_2 < lVar4);\n  }" { (do_statement "do {\n      lVar4 = lVar8 >> 1;\n      puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28);\n      iVar3 = FUN_0022b720(puVar5,&local_68);\n      puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      if (-1 < iVar3) break;\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n      lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      puVar6 = puVar5;\n      lVar7 = lVar4;\n    } while (param_2 < lVar4);" do (compound_statement "{\n      lVar4 = lVar8 >> 1;\n      puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28);\n      iVar3 = FUN_0022b720(puVar5,&local_68);\n      puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      if (-1 < iVar3) break;\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n      lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      puVar6 = puVar5;\n      lVar7 = lVar4;\n    }" { (expression_statement "lVar4 = lVar8 >> 1;" (assignment_expression "lVar4 = lVar8 >> 1" identifier = (binary_expression "lVar8 >> 1" identifier >> number_literal)) ;) (expression_statement "puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28);" (assignment_expression "puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28)" identifier = (cast_expression "(undefined8 *)(param_1 + lVar4 * 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar4 * 0x28)" ( (binary_expression "param_1 + lVar4 * 0x28" identifier + (binary_expression "lVar4 * 0x28" identifier * number_literal)) )))) ;) (expression_statement "iVar3 = FUN_0022b720(puVar5,&local_68);" (assignment_expression "iVar3 = FUN_0022b720(puVar5,&local_68)" identifier = (call_expression "FUN_0022b720(puVar5,&local_68)" identifier (argument_list "(puVar5,&local_68)" ( identifier , (pointer_expression "&local_68" & identifier) )))) ;) (expression_statement "puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28);" (assignment_expression "puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28)" identifier = (cast_expression "(undefined8 *)(param_1 + lVar7 * 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar7 * 0x28)" ( (binary_expression "param_1 + lVar7 * 0x28" identifier + (binary_expression "lVar7 * 0x28" identifier * number_literal)) )))) ;) (if_statement "if (-1 < iVar3) break;" if (parenthesized_expression "(-1 < iVar3)" ( (binary_expression "-1 < iVar3" number_literal < identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar2 = puVar5[1];" (assignment_expression "uVar2 = puVar5[1]" identifier = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "*puVar6 = *puVar5;" (assignment_expression "*puVar6 = *puVar5" (pointer_expression "*puVar6" * identifier) = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar6[1] = uVar2;" (assignment_expression "puVar6[1] = uVar2" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar2 = puVar5[3];" (assignment_expression "uVar2 = puVar5[3]" identifier = (subscript_expression "puVar5[3]" identifier [ number_literal ])) ;) (expression_statement "puVar6[2] = puVar5[2];" (assignment_expression "puVar6[2] = puVar5[2]" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = (subscript_expression "puVar5[2]" identifier [ number_literal ])) ;) (expression_statement "puVar6[3] = uVar2;" (assignment_expression "puVar6[3] = uVar2" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);" (assignment_expression "*(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4)" (pointer_expression "*(undefined4 *)(puVar6 + 4)" * (cast_expression "(undefined4 *)(puVar6 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 4)" ( (binary_expression "puVar6 + 4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar5 + 4)" * (cast_expression "(undefined4 *)(puVar5 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 4)" ( (binary_expression "puVar5 + 4" identifier + number_literal) ))))) ;) (expression_statement "lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);" (assignment_expression "lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f)" identifier = (binary_expression "(lVar4 + -1) - (lVar4 + -1 >> 0x3f)" (parenthesized_expression "(lVar4 + -1)" ( (binary_expression "lVar4 + -1" identifier + number_literal) )) - (parenthesized_expression "(lVar4 + -1 >> 0x3f)" ( (binary_expression "lVar4 + -1 >> 0x3f" (binary_expression "lVar4 + -1" identifier + number_literal) >> number_literal) )))) ;) (expression_statement "puVar6 = puVar5;" (assignment_expression "puVar6 = puVar5" identifier = identifier) ;) (expression_statement "lVar7 = lVar4;" (assignment_expression "lVar7 = lVar4" identifier = identifier) ;) }) while (parenthesized_expression "(param_2 < lVar4)" ( (binary_expression "param_2 < lVar4" identifier < identifier) )) ;) })) (labeled_statement "LAB_0023620a:\n  *puVar6 = local_68;" statement_identifier : (expression_statement "*puVar6 = local_68;" (assignment_expression "*puVar6 = local_68" (pointer_expression "*puVar6" * identifier) = identifier) ;)) (expression_statement "puVar6[1] = uStack_60;" (assignment_expression "puVar6[1] = uStack_60" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[2] = local_58;" (assignment_expression "puVar6[2] = local_58" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[3] = uStack_50;" (assignment_expression "puVar6[3] = uStack_50" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(puVar6 + 4) = (undefined4)local_48;" (assignment_expression "*(undefined4 *)(puVar6 + 4) = (undefined4)local_48" (pointer_expression "*(undefined4 *)(puVar6 + 4)" * (cast_expression "(undefined4 *)(puVar6 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 4)" ( (binary_expression "puVar6 + 4" identifier + number_literal) )))) = (cast_expression "(undefined4)local_48" ( (type_descriptor "undefined4" type_identifier) ) 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<9, true, 64,\n   false>*, std::vector<gold::Output_reloc<9, true, 64, false>, std::allocator<gold::Output_reloc<9,\n   true, 64, false> > > >, long int, gold::Output_reloc<9, true, 64, false>,\n   __gnu_cxx::__ops::_Iter_comp_iter<gold::Output_data_reloc_base<9, true, 64,\n   false>::Sort_relocs_comparison> > */\n\nvoid std::\n     __adjust_heap<__gnu_cxx::__normal_iterator<gold::Output_reloc<9,_true,_64,_false>*,_std::vector<gold::Output_reloc<9,_true,_64,_false>,_std::allocator<gold::Output_reloc<9,_true,_64,_false>_>_>_>,_long_int,_gold::Output_reloc<9,_true,_64,_false>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Output_data_reloc_base<9,_true,_64,_false>::Sort_relocs_comparison>_>\n               (long __first,long __holeIndex,ulong __len)\n\n{\n  long lVar1;\n  anon_union_8_4_c82d8563_for_u1_ aVar2;\n  int iVar3;\n  long lVar4;\n  anon_union_8_4_c82d8563_for_u1_ *paVar5;\n  anon_union_8_4_c82d8563_for_u1_ *this;\n  long lVar6;\n  long lVar7;\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  undefined8 in_stack_00000028;\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  undefined8 local_48;\n  \n  lVar4 = (long)(__len - 1) / 2;\n  lVar7 = __holeIndex;\n  if (__holeIndex < lVar4) {\n    do {\n      lVar6 = (lVar7 + 1) * 2;\n      lVar1 = lVar6 + -1;\n      this = (anon_union_8_4_c82d8563_for_u1_ *)(__first + (lVar7 + 1) * 0x50);\n      paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar1 * 0x28);\n      iVar3 = gold::Output_reloc<9,_true,_64,_false>::compare\n                        ((Output_reloc<9,_true,_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)paVar5);\n      if (iVar3 < 0) {\n        this = paVar5;\n      }\n      paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar7 * 0x28);\n      if (iVar3 < 0) {\n        lVar6 = lVar1;\n      }\n      aVar2 = this[1];\n      *paVar5 = *this;\n      paVar5[1] = aVar2;\n      aVar2 = this[3];\n      paVar5[2] = this[2];\n      paVar5[3] = aVar2;\n      *(uint *)(paVar5 + 4) = *(uint *)(this + 4);\n      lVar7 = lVar6;\n    } while (lVar6 < lVar4);\n    paVar5 = this;\n    if ((__len & 1) == 0) goto LAB_00236250;\n  }\n  else {\n    this = (anon_union_8_4_c82d8563_for_u1_ *)(__first + __holeIndex * 0x28);\n    lVar6 = __holeIndex;\n    if ((__len & 1) != 0) {\n      local_68 = __value;\n      aStack_60 = in_stack_00000010;\n      local_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      aStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\n    }\nLAB_00236250:\n    paVar5 = this;\n    if ((long)(__len - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar6 * 0x28);\n      aVar2 = paVar5[1];\n      *this = *paVar5;\n      this[1] = aVar2;\n      aVar2 = paVar5[3];\n      this[2] = paVar5[2];\n      this[3] = aVar2;\n      *(uint *)(this + 4) = *(uint *)(paVar5 + 4);\n    }\n  }\n  local_48 = in_stack_00000028;\n  local_68 = __value;\n  aStack_60 = in_stack_00000010;\n  local_58 = in_stack_00000018;\n  aStack_50 = in_stack_00000020;\n  lVar7 = (lVar6 + -1) - (lVar6 + -1 >> 0x3f);\n  this = paVar5;\n  if (__holeIndex < lVar6) {\n    do {\n      lVar4 = lVar7 >> 1;\n      paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar4 * 0x28);\n      iVar3 = gold::Output_reloc<9,_true,_64,_false>::compare\n                        ((Output_reloc<9,_true,_64,_false> *)paVar5,\n                         (Output_reloc<9,_true,_64,_false> *)&local_68);\n      this = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar6 * 0x28);\n      if (-1 < iVar3) break;\n      aVar2 = paVar5[1];\n      *this = *paVar5;\n      this[1] = aVar2;\n      aVar2 = paVar5[3];\n      this[2] = paVar5[2];\n      this[3] = aVar2;\n      *(uint *)(this + 4) = *(uint *)(paVar5 + 4);\n      lVar7 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      this = paVar5;\n      lVar6 = lVar4;\n    } while (__holeIndex < lVar4);\n  }\nLAB_0023620a:\n  *this = local_68;\n  this[1] = aStack_60;\n  this[2] = local_58;\n  this[3] = aStack_50;\n  *(uint *)(this + 4) = (uint)local_48;\n  return;\n}\n\n" comment comment (declaration "void std::\n     __adjust_heap<__gnu_cxx::__normal_iterator<gold::Output_reloc<9,_true,_64,_false>*,_std::vector<gold::Output_reloc<9,_true,_64,_false>,_std::allocator<gold::Output_reloc<9,_true,_64,_false>_>_>_>,_long_int,_gold::Output_reloc<9,_true,_64,_false>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Output_data_reloc_base<9,_true,_64,_false>::Sort_relocs_comparison>_>\n               (long __first,long __holeIndex,ulong __len)\n\n{\n  long lVar1;" primitive_type (ERROR "std::\n     __adjust_heap<__gnu_cxx::__normal_iterator<gold::" identifier : : identifier < identifier : : identifier < identifier : :) identifier (ERROR "<9" < number_literal) , identifier , identifier , identifier (ERROR ">*" > *) , (ERROR "_std::vector<gold::" identifier : : identifier < identifier : :) identifier (ERROR "<9" < number_literal) , identifier , identifier , identifier (ERROR ">" >) , (ERROR "_std::allocator<gold::" identifier : : identifier < identifier : :) identifier (ERROR "<9" < number_literal) , identifier , identifier , identifier (ERROR ">_>_>_>" > identifier > identifier > identifier >) , identifier , (ERROR "_gold::" identifier : :) identifier (ERROR "<9" < number_literal) , identifier , identifier , identifier (ERROR ">" >) , (ERROR "___gnu_cxx::__ops::_Iter_comp_iter<gold::" identifier : : identifier : : identifier < identifier : :) identifier (ERROR "<9" < number_literal) , identifier , identifier , (ERROR "_false>::Sort_relocs_comparison>_>\n               (long __first,long __holeIndex,ulong __len)\n\n{\n  long" 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) ))) { long) identifier ;) (declaration "anon_union_8_4_c82d8563_for_u1_ aVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "anon_union_8_4_c82d8563_for_u1_ *paVar5;" type_identifier (pointer_declarator "*paVar5" * identifier) ;) (declaration "anon_union_8_4_c82d8563_for_u1_ *this;" type_identifier (pointer_declarator "*this" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) 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 "undefined8 in_stack_00000028;" type_identifier 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 "undefined8 local_48;" type_identifier identifier ;) (expression_statement "lVar4 = (long)(__len - 1) / 2;" (assignment_expression "lVar4 = (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 "lVar7 = __holeIndex;" (assignment_expression "lVar7 = __holeIndex" identifier = identifier) ;) (if_statement "if (__holeIndex < lVar4) {\n    do {\n      lVar6 = (lVar7 + 1) * 2;\n      lVar1 = lVar6 + -1;\n      this = (anon_union_8_4_c82d8563_for_u1_ *)(__first + (lVar7 + 1) * 0x50);\n      paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar1 * 0x28);\n      iVar3 = gold::Output_reloc<9,_true,_64,_false>::compare\n                        ((Output_reloc<9,_true,_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)paVar5);\n      if (iVar3 < 0) {\n        this = paVar5;\n      }\n      paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar7 * 0x28);\n      if (iVar3 < 0) {\n        lVar6 = lVar1;\n      }\n      aVar2 = this[1];\n      *paVar5 = *this;\n      paVar5[1] = aVar2;\n      aVar2 = this[3];\n      paVar5[2] = this[2];\n      paVar5[3] = aVar2;\n      *(uint *)(paVar5 + 4) = *(uint *)(this + 4);\n      lVar7 = lVar6;\n    } while (lVar6 < lVar4);\n    paVar5 = this;\n    if ((__len & 1) == 0) goto LAB_00236250;\n  }\n  else {\n    this = (anon_union_8_4_c82d8563_for_u1_ *)(__first + __holeIndex * 0x28);\n    lVar6 = __holeIndex;\n    if ((__len & 1) != 0) {\n      local_68 = __value;\n      aStack_60 = in_stack_00000010;\n      local_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      aStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\n    }\nLAB_00236250:\n    paVar5 = this;\n    if ((long)(__len - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar6 * 0x28);\n      aVar2 = paVar5[1];\n      *this = *paVar5;\n      this[1] = aVar2;\n      aVar2 = paVar5[3];\n      this[2] = paVar5[2];\n      this[3] = aVar2;\n      *(uint *)(this + 4) = *(uint *)(paVar5 + 4);\n    }\n  }" if (parenthesized_expression "(__holeIndex < lVar4)" ( (binary_expression "__holeIndex < lVar4" identifier < identifier) )) (compound_statement "{\n    do {\n      lVar6 = (lVar7 + 1) * 2;\n      lVar1 = lVar6 + -1;\n      this = (anon_union_8_4_c82d8563_for_u1_ *)(__first + (lVar7 + 1) * 0x50);\n      paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar1 * 0x28);\n      iVar3 = gold::Output_reloc<9,_true,_64,_false>::compare\n                        ((Output_reloc<9,_true,_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)paVar5);\n      if (iVar3 < 0) {\n        this = paVar5;\n      }\n      paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar7 * 0x28);\n      if (iVar3 < 0) {\n        lVar6 = lVar1;\n      }\n      aVar2 = this[1];\n      *paVar5 = *this;\n      paVar5[1] = aVar2;\n      aVar2 = this[3];\n      paVar5[2] = this[2];\n      paVar5[3] = aVar2;\n      *(uint *)(paVar5 + 4) = *(uint *)(this + 4);\n      lVar7 = lVar6;\n    } while (lVar6 < lVar4);\n    paVar5 = this;\n    if ((__len & 1) == 0) goto LAB_00236250;\n  }" { (do_statement "do {\n      lVar6 = (lVar7 + 1) * 2;\n      lVar1 = lVar6 + -1;\n      this = (anon_union_8_4_c82d8563_for_u1_ *)(__first + (lVar7 + 1) * 0x50);\n      paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar1 * 0x28);\n      iVar3 = gold::Output_reloc<9,_true,_64,_false>::compare\n                        ((Output_reloc<9,_true,_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)paVar5);\n      if (iVar3 < 0) {\n        this = paVar5;\n      }\n      paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar7 * 0x28);\n      if (iVar3 < 0) {\n        lVar6 = lVar1;\n      }\n      aVar2 = this[1];\n      *paVar5 = *this;\n      paVar5[1] = aVar2;\n      aVar2 = this[3];\n      paVar5[2] = this[2];\n      paVar5[3] = aVar2;\n      *(uint *)(paVar5 + 4) = *(uint *)(this + 4);\n      lVar7 = lVar6;\n    } while (lVar6 < lVar4);" do (compound_statement "{\n      lVar6 = (lVar7 + 1) * 2;\n      lVar1 = lVar6 + -1;\n      this = (anon_union_8_4_c82d8563_for_u1_ *)(__first + (lVar7 + 1) * 0x50);\n      paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar1 * 0x28);\n      iVar3 = gold::Output_reloc<9,_true,_64,_false>::compare\n                        ((Output_reloc<9,_true,_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)paVar5);\n      if (iVar3 < 0) {\n        this = paVar5;\n      }\n      paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar7 * 0x28);\n      if (iVar3 < 0) {\n        lVar6 = lVar1;\n      }\n      aVar2 = this[1];\n      *paVar5 = *this;\n      paVar5[1] = aVar2;\n      aVar2 = this[3];\n      paVar5[2] = this[2];\n      paVar5[3] = aVar2;\n      *(uint *)(paVar5 + 4) = *(uint *)(this + 4);\n      lVar7 = lVar6;\n    }" { (expression_statement "lVar6 = (lVar7 + 1) * 2;" (assignment_expression "lVar6 = (lVar7 + 1) * 2" identifier = (binary_expression "(lVar7 + 1) * 2" (parenthesized_expression "(lVar7 + 1)" ( (binary_expression "lVar7 + 1" identifier + number_literal) )) * number_literal)) ;) (expression_statement "lVar1 = lVar6 + -1;" (assignment_expression "lVar1 = lVar6 + -1" identifier = (binary_expression "lVar6 + -1" identifier + number_literal)) ;) (expression_statement "this = (anon_union_8_4_c82d8563_for_u1_ *)(__first + (lVar7 + 1) * 0x50);" (assignment_expression "this = (anon_union_8_4_c82d8563_for_u1_ *)(__first + (lVar7 + 1) * 0x50)" identifier = (cast_expression "(anon_union_8_4_c82d8563_for_u1_ *)(__first + (lVar7 + 1) * 0x50)" ( (type_descriptor "anon_union_8_4_c82d8563_for_u1_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__first + (lVar7 + 1) * 0x50)" ( (binary_expression "__first + (lVar7 + 1) * 0x50" identifier + (binary_expression "(lVar7 + 1) * 0x50" (parenthesized_expression "(lVar7 + 1)" ( (binary_expression "lVar7 + 1" identifier + number_literal) )) * number_literal)) )))) ;) (expression_statement "paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar1 * 0x28);" (assignment_expression "paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar1 * 0x28)" identifier = (cast_expression "(anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar1 * 0x28)" ( (type_descriptor "anon_union_8_4_c82d8563_for_u1_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__first + lVar1 * 0x28)" ( (binary_expression "__first + lVar1 * 0x28" identifier + (binary_expression "lVar1 * 0x28" identifier * number_literal)) )))) ;) (ERROR "iVar3 = gold::" (assignment_expression "iVar3 = 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> *)paVar5);" (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> *)paVar5)" ( ( (comma_expression "Output_reloc<9,_true,_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)paVar5)" (binary_expression "Output_reloc<9" identifier < number_literal) , (comma_expression "_true,_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)paVar5)" identifier , (comma_expression "_64,_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)paVar5)" identifier , (comma_expression "_false> *)this,\n                         (Output_reloc<9,_true,_64,_false> *)paVar5)" (binary_expression "_false> *)this" identifier > (pointer_expression "*)this" * (ERROR ")" )) identifier)) , (parenthesized_expression "(Output_reloc<9,_true,_64,_false> *)paVar5)" ( (comma_expression "Output_reloc<9,_true,_64,_false> *)paVar5" (binary_expression "Output_reloc<9" identifier < number_literal) , (comma_expression "_true,_64,_false> *)paVar5" identifier , (comma_expression "_64,_false> *)paVar5" identifier , (binary_expression "_false> *)paVar5" identifier > (pointer_expression "*)paVar5" * (ERROR ")" )) identifier))))) ))))))) ;) (if_statement "if (iVar3 < 0) {\n        this = paVar5;\n      }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n        this = paVar5;\n      }" { (expression_statement "this = paVar5;" (assignment_expression "this = paVar5" identifier = identifier) ;) })) (expression_statement "paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar7 * 0x28);" (assignment_expression "paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar7 * 0x28)" identifier = (cast_expression "(anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar7 * 0x28)" ( (type_descriptor "anon_union_8_4_c82d8563_for_u1_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__first + lVar7 * 0x28)" ( (binary_expression "__first + lVar7 * 0x28" identifier + (binary_expression "lVar7 * 0x28" identifier * number_literal)) )))) ;) (if_statement "if (iVar3 < 0) {\n        lVar6 = lVar1;\n      }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n        lVar6 = lVar1;\n      }" { (expression_statement "lVar6 = lVar1;" (assignment_expression "lVar6 = lVar1" identifier = identifier) ;) })) (expression_statement "aVar2 = this[1];" (assignment_expression "aVar2 = this[1]" identifier = (subscript_expression "this[1]" identifier [ number_literal ])) ;) (expression_statement "*paVar5 = *this;" (assignment_expression "*paVar5 = *this" (pointer_expression "*paVar5" * identifier) = (pointer_expression "*this" * identifier)) ;) (expression_statement "paVar5[1] = aVar2;" (assignment_expression "paVar5[1] = aVar2" (subscript_expression "paVar5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "aVar2 = this[3];" (assignment_expression "aVar2 = this[3]" identifier = (subscript_expression "this[3]" identifier [ number_literal ])) ;) (expression_statement "paVar5[2] = this[2];" (assignment_expression "paVar5[2] = this[2]" (subscript_expression "paVar5[2]" identifier [ number_literal ]) = (subscript_expression "this[2]" identifier [ number_literal ])) ;) (expression_statement "paVar5[3] = aVar2;" (assignment_expression "paVar5[3] = aVar2" (subscript_expression "paVar5[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(uint *)(paVar5 + 4) = *(uint *)(this + 4);" (assignment_expression "*(uint *)(paVar5 + 4) = *(uint *)(this + 4)" (pointer_expression "*(uint *)(paVar5 + 4)" * (cast_expression "(uint *)(paVar5 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar5 + 4)" ( (binary_expression "paVar5 + 4" identifier + number_literal) )))) = (pointer_expression "*(uint *)(this + 4)" * (cast_expression "(uint *)(this + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) ))))) ;) (expression_statement "lVar7 = lVar6;" (assignment_expression "lVar7 = lVar6" identifier = identifier) ;) }) while (parenthesized_expression "(lVar6 < lVar4)" ( (binary_expression "lVar6 < lVar4" identifier < identifier) )) ;) (expression_statement "paVar5 = this;" (assignment_expression "paVar5 = this" identifier = identifier) ;) (if_statement "if ((__len & 1) == 0) goto LAB_00236250;" 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_00236250;" goto statement_identifier ;)) }) (else_clause "else {\n    this = (anon_union_8_4_c82d8563_for_u1_ *)(__first + __holeIndex * 0x28);\n    lVar6 = __holeIndex;\n    if ((__len & 1) != 0) {\n      local_68 = __value;\n      aStack_60 = in_stack_00000010;\n      local_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      aStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\n    }\nLAB_00236250:\n    paVar5 = this;\n    if ((long)(__len - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar6 * 0x28);\n      aVar2 = paVar5[1];\n      *this = *paVar5;\n      this[1] = aVar2;\n      aVar2 = paVar5[3];\n      this[2] = paVar5[2];\n      this[3] = aVar2;\n      *(uint *)(this + 4) = *(uint *)(paVar5 + 4);\n    }\n  }" else (compound_statement "{\n    this = (anon_union_8_4_c82d8563_for_u1_ *)(__first + __holeIndex * 0x28);\n    lVar6 = __holeIndex;\n    if ((__len & 1) != 0) {\n      local_68 = __value;\n      aStack_60 = in_stack_00000010;\n      local_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      aStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\n    }\nLAB_00236250:\n    paVar5 = this;\n    if ((long)(__len - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar6 * 0x28);\n      aVar2 = paVar5[1];\n      *this = *paVar5;\n      this[1] = aVar2;\n      aVar2 = paVar5[3];\n      this[2] = paVar5[2];\n      this[3] = aVar2;\n      *(uint *)(this + 4) = *(uint *)(paVar5 + 4);\n    }\n  }" { (expression_statement "this = (anon_union_8_4_c82d8563_for_u1_ *)(__first + __holeIndex * 0x28);" (assignment_expression "this = (anon_union_8_4_c82d8563_for_u1_ *)(__first + __holeIndex * 0x28)" identifier = (cast_expression "(anon_union_8_4_c82d8563_for_u1_ *)(__first + __holeIndex * 0x28)" ( (type_descriptor "anon_union_8_4_c82d8563_for_u1_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__first + __holeIndex * 0x28)" ( (binary_expression "__first + __holeIndex * 0x28" identifier + (binary_expression "__holeIndex * 0x28" identifier * number_literal)) )))) ;) (expression_statement "lVar6 = __holeIndex;" (assignment_expression "lVar6 = __holeIndex" identifier = identifier) ;) (if_statement "if ((__len & 1) != 0) {\n      local_68 = __value;\n      aStack_60 = in_stack_00000010;\n      local_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      aStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\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_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      aStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\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_48 = in_stack_00000028;" (assignment_expression "local_48 = in_stack_00000028" 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) ;) (goto_statement "goto LAB_0023620a;" goto statement_identifier ;) })) (labeled_statement "LAB_00236250:\n    paVar5 = this;" statement_identifier : (expression_statement "paVar5 = this;" (assignment_expression "paVar5 = this" identifier = identifier) ;)) (if_statement "if ((long)(__len - 2) / 2 == lVar6) {\n      lVar6 = lVar6 * 2 + 1;\n      paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar6 * 0x28);\n      aVar2 = paVar5[1];\n      *this = *paVar5;\n      this[1] = aVar2;\n      aVar2 = paVar5[3];\n      this[2] = paVar5[2];\n      this[3] = aVar2;\n      *(uint *)(this + 4) = *(uint *)(paVar5 + 4);\n    }" if (parenthesized_expression "((long)(__len - 2) / 2 == lVar6)" ( (binary_expression "(long)(__len - 2) / 2 == lVar6" (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      lVar6 = lVar6 * 2 + 1;\n      paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar6 * 0x28);\n      aVar2 = paVar5[1];\n      *this = *paVar5;\n      this[1] = aVar2;\n      aVar2 = paVar5[3];\n      this[2] = paVar5[2];\n      this[3] = aVar2;\n      *(uint *)(this + 4) = *(uint *)(paVar5 + 4);\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 "paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar6 * 0x28);" (assignment_expression "paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar6 * 0x28)" identifier = (cast_expression "(anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar6 * 0x28)" ( (type_descriptor "anon_union_8_4_c82d8563_for_u1_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__first + lVar6 * 0x28)" ( (binary_expression "__first + lVar6 * 0x28" identifier + (binary_expression "lVar6 * 0x28" identifier * number_literal)) )))) ;) (expression_statement "aVar2 = paVar5[1];" (assignment_expression "aVar2 = paVar5[1]" identifier = (subscript_expression "paVar5[1]" identifier [ number_literal ])) ;) (expression_statement "*this = *paVar5;" (assignment_expression "*this = *paVar5" (pointer_expression "*this" * identifier) = (pointer_expression "*paVar5" * identifier)) ;) (expression_statement "this[1] = aVar2;" (assignment_expression "this[1] = aVar2" (subscript_expression "this[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "aVar2 = paVar5[3];" (assignment_expression "aVar2 = paVar5[3]" identifier = (subscript_expression "paVar5[3]" identifier [ number_literal ])) ;) (expression_statement "this[2] = paVar5[2];" (assignment_expression "this[2] = paVar5[2]" (subscript_expression "this[2]" identifier [ number_literal ]) = (subscript_expression "paVar5[2]" identifier [ number_literal ])) ;) (expression_statement "this[3] = aVar2;" (assignment_expression "this[3] = aVar2" (subscript_expression "this[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(uint *)(this + 4) = *(uint *)(paVar5 + 4);" (assignment_expression "*(uint *)(this + 4) = *(uint *)(paVar5 + 4)" (pointer_expression "*(uint *)(this + 4)" * (cast_expression "(uint *)(this + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )))) = (pointer_expression "*(uint *)(paVar5 + 4)" * (cast_expression "(uint *)(paVar5 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar5 + 4)" ( (binary_expression "paVar5 + 4" identifier + number_literal) ))))) ;) })) }))) (expression_statement "local_48 = in_stack_00000028;" (assignment_expression "local_48 = in_stack_00000028" 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 "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 "lVar7 = (lVar6 + -1) - (lVar6 + -1 >> 0x3f);" (assignment_expression "lVar7 = (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 "this = paVar5;" (assignment_expression "this = paVar5" identifier = identifier) ;) (ERROR "if (__holeIndex < lVar6) {\n    do {\n      lVar4 = lVar7 >> 1;\n      paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar4 * 0x28);\n      iVar3 = gold::Output_reloc<9,_true,_64,_false>::compare\n                        ((Output_reloc<9,_true,_64,_false> *)paVar5,\n                         (Output_reloc<9,_true,_64,_false> *)&local_68);\n      this = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar6 * 0x28);\n      if (-1 < iVar3) break;\n      aVar2 = paVar5[1];\n      *this = *paVar5;\n      this[1] = aVar2;\n      aVar2 = paVar5[3];\n      this[2] = paVar5[2];\n      this[3] = aVar2;\n      *(uint *)(this + 4) = *(uint *)(paVar5 + 4);\n      lVar7 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      this = paVar5;\n      lVar6 = lVar4;\n    } while (__holeIndex < lVar4);\n  }\nLAB_0023620a:\n  *this = local_68;\n  this[1] = aStack_60;\n  this[2] = local_58;\n  this[3] = aStack_50;\n  *(uint *)(this + 4) = (uint)local_48;\n  return;\n}" if (parenthesized_expression "(__holeIndex < lVar6)" ( (binary_expression "__holeIndex < lVar6" identifier < identifier) )) { do (compound_statement "{\n      lVar4 = lVar7 >> 1;\n      paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar4 * 0x28);\n      iVar3 = gold::Output_reloc<9,_true,_64,_false>::compare\n                        ((Output_reloc<9,_true,_64,_false> *)paVar5,\n                         (Output_reloc<9,_true,_64,_false> *)&local_68);\n      this = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar6 * 0x28);\n      if (-1 < iVar3) break;\n      aVar2 = paVar5[1];\n      *this = *paVar5;\n      this[1] = aVar2;\n      aVar2 = paVar5[3];\n      this[2] = paVar5[2];\n      this[3] = aVar2;\n      *(uint *)(this + 4) = *(uint *)(paVar5 + 4);\n      lVar7 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      this = paVar5;\n      lVar6 = lVar4;\n    } while (__holeIndex < lVar4);\n  }\nLAB_0023620a:\n  *this = local_68;\n  this[1] = aStack_60;\n  this[2] = local_58;\n  this[3] = aStack_50;\n  *(uint *)(this + 4) = (uint)local_48;\n  return;\n}" { (expression_statement "lVar4 = lVar7 >> 1;" (assignment_expression "lVar4 = lVar7 >> 1" identifier = (binary_expression "lVar7 >> 1" identifier >> number_literal)) ;) (expression_statement "paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar4 * 0x28);" (assignment_expression "paVar5 = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar4 * 0x28)" identifier = (cast_expression "(anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar4 * 0x28)" ( (type_descriptor "anon_union_8_4_c82d8563_for_u1_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__first + lVar4 * 0x28)" ( (binary_expression "__first + lVar4 * 0x28" identifier + (binary_expression "lVar4 * 0x28" identifier * number_literal)) )))) ;) (ERROR "iVar3 = gold::" (assignment_expression "iVar3 = gold" identifier = identifier) : :) (expression_statement "Output_reloc<9,_true,_64,_false>::compare\n                        ((Output_reloc<9,_true,_64,_false> *)paVar5,\n                         (Output_reloc<9,_true,_64,_false> *)&local_68);\n      this = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar6 * 0x28);\n      if (-1 < iVar3) break;\n      aVar2 = paVar5[1];\n      *this = *paVar5;\n      this[1] = aVar2;\n      aVar2 = paVar5[3];\n      this[2] = paVar5[2];\n      this[3] = aVar2;\n      *(uint *)(this + 4) = *(uint *)(paVar5 + 4);\n      lVar7 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      this = paVar5;\n      lVar6 = lVar4;\n    } while (__holeIndex < lVar4);\n  }\nLAB_0023620a:\n  *this = local_68;\n  this[1] = aStack_60;\n  this[2] = local_58;\n  this[3] = aStack_50;\n  *(uint *)(this + 4) = (uint)local_48;" (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> *)paVar5,\n                         (Output_reloc<9,_true,_64,_false> *)&local_68);\n      this = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar6 * 0x28);\n      if (-1 < iVar3) break;\n      aVar2 = paVar5[1];\n      *this = *paVar5;\n      this[1] = aVar2;\n      aVar2 = paVar5[3];\n      this[2] = paVar5[2];\n      this[3] = aVar2;\n      *(uint *)(this + 4) = *(uint *)(paVar5 + 4);\n      lVar7 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      this = paVar5;\n      lVar6 = lVar4;\n    } while (__holeIndex < lVar4);\n  }\nLAB_0023620a:\n  *this = local_68;\n  this[1] = aStack_60;\n  this[2] = local_58;\n  this[3] = aStack_50;\n  *(uint *)(this + 4) = (uint)local_48" ( ( (ERROR "Output_reloc<9,_true,_64,_false> *)paVar5,\n                         (Output_reloc<9,_true,_64,_false> *)&local_68);\n      this = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar6 * 0x28);\n      if (-1 < iVar3) break;\n      aVar2 = paVar5[1];\n      *this = *paVar5;\n      this[1] = aVar2;\n      aVar2 = paVar5[3];\n      this[2] = paVar5[2];\n      this[3] = aVar2;\n      *(uint *)(this + 4) = *(uint *)(paVar5 + 4);\n      lVar7 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      this = paVar5;\n      lVar6 = lVar4;\n    } while (__holeIndex < lVar4);\n  }\nLAB_0023620a:\n  *this = local_68;\n  this[1] = aStack_60;\n  this[2] = local_58;" (comma_expression "Output_reloc<9,_true,_64,_false> *)paVar5,\n                         (Output_reloc<9,_true,_64,_false> *)&local_68)" (binary_expression "Output_reloc<9" identifier < number_literal) , (comma_expression "_true,_64,_false> *)paVar5,\n                         (Output_reloc<9,_true,_64,_false> *)&local_68)" identifier , (comma_expression "_64,_false> *)paVar5,\n                         (Output_reloc<9,_true,_64,_false> *)&local_68)" identifier , (comma_expression "_false> *)paVar5,\n                         (Output_reloc<9,_true,_64,_false> *)&local_68)" (binary_expression "_false> *)paVar5" identifier > (pointer_expression "*)paVar5" * (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)))))) )))))) ; (call_expression "this = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar6 * 0x28);\n      if (-1 < iVar3)" (assignment_expression "this = (anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar6 * 0x28)" identifier = (cast_expression "(anon_union_8_4_c82d8563_for_u1_ *)(__first + lVar6 * 0x28)" ( (type_descriptor "anon_union_8_4_c82d8563_for_u1_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__first + lVar6 * 0x28)" ( (binary_expression "__first + lVar6 * 0x28" identifier + (binary_expression "lVar6 * 0x28" identifier * number_literal)) )))) (ERROR ";\n      if" ; if) (argument_list "(-1 < iVar3)" ( (binary_expression "-1 < iVar3" number_literal < identifier) ))) identifier ; (binary_expression "aVar2 = paVar5[1];\n      *this = *paVar5" (assignment_expression "aVar2 = paVar5[1]" identifier = (subscript_expression "paVar5[1]" identifier [ number_literal ])) (ERROR ";" ;) * (assignment_expression "this = *paVar5" identifier = (pointer_expression "*paVar5" * identifier))) ; (assignment_expression "this[1] = aVar2" (subscript_expression "this[1]" identifier [ number_literal ]) = identifier) ; (assignment_expression "aVar2 = paVar5[3]" identifier = (subscript_expression "paVar5[3]" identifier [ number_literal ])) ; (assignment_expression "this[2] = paVar5[2]" (subscript_expression "this[2]" identifier [ number_literal ]) = (subscript_expression "paVar5[2]" identifier [ number_literal ])) ; (binary_expression "this[3] = aVar2;\n      *(uint *)(this + 4) = *(uint *)(paVar5 + 4)" (assignment_expression "this[3] = aVar2" (subscript_expression "this[3]" identifier [ number_literal ]) = identifier) (ERROR ";" ;) * (cast_expression "(uint *)(this + 4) = *(uint *)(paVar5 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (assignment_expression "(this + 4) = *(uint *)(paVar5 + 4)" (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )) = (pointer_expression "*(uint *)(paVar5 + 4)" * (cast_expression "(uint *)(paVar5 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar5 + 4)" ( (binary_expression "paVar5 + 4" identifier + number_literal) ))))))) ; (assignment_expression "lVar7 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f)" identifier = (binary_expression "(lVar4 + -1) - (lVar4 + -1 >> 0x3f)" (parenthesized_expression "(lVar4 + -1)" ( (binary_expression "lVar4 + -1" identifier + number_literal) )) - (parenthesized_expression "(lVar4 + -1 >> 0x3f)" ( (binary_expression "lVar4 + -1 >> 0x3f" (binary_expression "lVar4 + -1" identifier + number_literal) >> number_literal) )))) ; (assignment_expression "this = paVar5" identifier = identifier) ; (call_expression "lVar6 = lVar4;\n    } while (__holeIndex < lVar4)" (assignment_expression "lVar6 = lVar4" identifier = identifier) (ERROR ";\n    } while" ; } while) (argument_list "(__holeIndex < lVar4)" ( (binary_expression "__holeIndex < lVar4" identifier < identifier) ))) ; } (binary_expression "LAB_0023620a:\n  *this = local_68" identifier (ERROR ":" :) * (assignment_expression "this = local_68" identifier = identifier)) ; (assignment_expression "this[1] = aStack_60" (subscript_expression "this[1]" identifier [ number_literal ]) = identifier) ; (assignment_expression "this[2] = local_58" (subscript_expression "this[2]" identifier [ number_literal ]) = identifier) ;) (binary_expression "this[3] = aStack_50;\n  *(uint *)(this + 4) = (uint)local_48" (assignment_expression "this[3] = aStack_50" (subscript_expression "this[3]" identifier [ number_literal ]) = identifier) (ERROR ";" ;) * (cast_expression "(uint *)(this + 4) = (uint)local_48" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (assignment_expression "(this + 4) = (uint)local_48" (parenthesized_expression "(this + 4)" ( (binary_expression "this + 4" identifier + number_literal) )) = (cast_expression "(uint)local_48" ( (type_descriptor "uint" type_identifier) ) identifier))))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_002360b0(long param_1,long param_2,ulong param_3)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  int iVar3;\n  long lVar4;\n  undefined8 *puVar5;\n  undefined8 *puVar6;\n  long lVar7;\n  long lVar8;\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  undefined8 local_68;\n  undefined8 uStack_60;\n  undefined8 local_58;\n  undefined8 uStack_50;\n  undefined8 local_48;\n  \n  lVar4 = (long)(param_3 - 1) / 2;\n  lVar8 = param_2;\n  if (param_2 < lVar4) {\n    do {\n      lVar7 = (lVar8 + 1) * 2;\n      lVar1 = lVar7 + -1;\n      puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50);\n      puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28);\n      iVar3 = FUN_0022b720(puVar6,puVar5);\n      if (iVar3 < 0) {\n        puVar6 = puVar5;\n      }\n      puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28);\n      if (iVar3 < 0) {\n        lVar7 = lVar1;\n      }\n      uVar2 = puVar6[1];\n      *puVar5 = *puVar6;\n      puVar5[1] = uVar2;\n      uVar2 = puVar6[3];\n      puVar5[2] = puVar6[2];\n      puVar5[3] = uVar2;\n      *(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4);\n      lVar8 = lVar7;\n    } while (lVar7 < lVar4);\n    puVar5 = puVar6;\n    if ((param_3 & 1) == 0) goto LAB_00236250;\n  }\n  else {\n    puVar6 = (undefined8 *)(param_1 + param_2 * 0x28);\n    lVar7 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\n    }\nLAB_00236250:\n    puVar5 = puVar6;\n    if ((long)(param_3 - 2) / 2 == lVar7) {\n      lVar7 = lVar7 * 2 + 1;\n      puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n    }\n  }\n  local_48 = in_stack_00000028;\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  lVar8 = (lVar7 + -1) - (lVar7 + -1 >> 0x3f);\n  puVar6 = puVar5;\n  if (param_2 < lVar7) {\n    do {\n      lVar4 = lVar8 >> 1;\n      puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28);\n      iVar3 = FUN_0022b720(puVar5,&local_68);\n      puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      if (-1 < iVar3) break;\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n      lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      puVar6 = puVar5;\n      lVar7 = lVar4;\n    } while (param_2 < lVar4);\n  }\nLAB_0023620a:\n  *puVar6 = local_68;\n  puVar6[1] = uStack_60;\n  puVar6[2] = local_58;\n  puVar6[3] = uStack_50;\n  *(undefined4 *)(puVar6 + 4) = (undefined4)local_48;\n  return;\n}\n\n" (function_definition "void FUN_002360b0(long param_1,long param_2,ulong param_3)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  int iVar3;\n  long lVar4;\n  undefined8 *puVar5;\n  undefined8 *puVar6;\n  long lVar7;\n  long lVar8;\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  undefined8 local_68;\n  undefined8 uStack_60;\n  undefined8 local_58;\n  undefined8 uStack_50;\n  undefined8 local_48;\n  \n  lVar4 = (long)(param_3 - 1) / 2;\n  lVar8 = param_2;\n  if (param_2 < lVar4) {\n    do {\n      lVar7 = (lVar8 + 1) * 2;\n      lVar1 = lVar7 + -1;\n      puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50);\n      puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28);\n      iVar3 = FUN_0022b720(puVar6,puVar5);\n      if (iVar3 < 0) {\n        puVar6 = puVar5;\n      }\n      puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28);\n      if (iVar3 < 0) {\n        lVar7 = lVar1;\n      }\n      uVar2 = puVar6[1];\n      *puVar5 = *puVar6;\n      puVar5[1] = uVar2;\n      uVar2 = puVar6[3];\n      puVar5[2] = puVar6[2];\n      puVar5[3] = uVar2;\n      *(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4);\n      lVar8 = lVar7;\n    } while (lVar7 < lVar4);\n    puVar5 = puVar6;\n    if ((param_3 & 1) == 0) goto LAB_00236250;\n  }\n  else {\n    puVar6 = (undefined8 *)(param_1 + param_2 * 0x28);\n    lVar7 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\n    }\nLAB_00236250:\n    puVar5 = puVar6;\n    if ((long)(param_3 - 2) / 2 == lVar7) {\n      lVar7 = lVar7 * 2 + 1;\n      puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n    }\n  }\n  local_48 = in_stack_00000028;\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  lVar8 = (lVar7 + -1) - (lVar7 + -1 >> 0x3f);\n  puVar6 = puVar5;\n  if (param_2 < lVar7) {\n    do {\n      lVar4 = lVar8 >> 1;\n      puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28);\n      iVar3 = FUN_0022b720(puVar5,&local_68);\n      puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      if (-1 < iVar3) break;\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n      lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      puVar6 = puVar5;\n      lVar7 = lVar4;\n    } while (param_2 < lVar4);\n  }\nLAB_0023620a:\n  *puVar6 = local_68;\n  puVar6[1] = uStack_60;\n  puVar6[2] = local_58;\n  puVar6[3] = uStack_50;\n  *(undefined4 *)(puVar6 + 4) = (undefined4)local_48;\n  return;\n}" primitive_type (function_declarator "FUN_002360b0(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  long lVar1;\n  undefined8 uVar2;\n  int iVar3;\n  long lVar4;\n  undefined8 *puVar5;\n  undefined8 *puVar6;\n  long lVar7;\n  long lVar8;\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  undefined8 local_68;\n  undefined8 uStack_60;\n  undefined8 local_58;\n  undefined8 uStack_50;\n  undefined8 local_48;\n  \n  lVar4 = (long)(param_3 - 1) / 2;\n  lVar8 = param_2;\n  if (param_2 < lVar4) {\n    do {\n      lVar7 = (lVar8 + 1) * 2;\n      lVar1 = lVar7 + -1;\n      puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50);\n      puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28);\n      iVar3 = FUN_0022b720(puVar6,puVar5);\n      if (iVar3 < 0) {\n        puVar6 = puVar5;\n      }\n      puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28);\n      if (iVar3 < 0) {\n        lVar7 = lVar1;\n      }\n      uVar2 = puVar6[1];\n      *puVar5 = *puVar6;\n      puVar5[1] = uVar2;\n      uVar2 = puVar6[3];\n      puVar5[2] = puVar6[2];\n      puVar5[3] = uVar2;\n      *(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4);\n      lVar8 = lVar7;\n    } while (lVar7 < lVar4);\n    puVar5 = puVar6;\n    if ((param_3 & 1) == 0) goto LAB_00236250;\n  }\n  else {\n    puVar6 = (undefined8 *)(param_1 + param_2 * 0x28);\n    lVar7 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\n    }\nLAB_00236250:\n    puVar5 = puVar6;\n    if ((long)(param_3 - 2) / 2 == lVar7) {\n      lVar7 = lVar7 * 2 + 1;\n      puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n    }\n  }\n  local_48 = in_stack_00000028;\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  lVar8 = (lVar7 + -1) - (lVar7 + -1 >> 0x3f);\n  puVar6 = puVar5;\n  if (param_2 < lVar7) {\n    do {\n      lVar4 = lVar8 >> 1;\n      puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28);\n      iVar3 = FUN_0022b720(puVar5,&local_68);\n      puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      if (-1 < iVar3) break;\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n      lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      puVar6 = puVar5;\n      lVar7 = lVar4;\n    } while (param_2 < lVar4);\n  }\nLAB_0023620a:\n  *puVar6 = local_68;\n  puVar6[1] = uStack_60;\n  puVar6[2] = local_58;\n  puVar6[3] = uStack_50;\n  *(undefined4 *)(puVar6 + 4) = (undefined4)local_48;\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined8 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) 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 "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 ;) (expression_statement "lVar4 = (long)(param_3 - 1) / 2;" (assignment_expression "lVar4 = (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 "lVar8 = param_2;" (assignment_expression "lVar8 = param_2" identifier = identifier) ;) (if_statement "if (param_2 < lVar4) {\n    do {\n      lVar7 = (lVar8 + 1) * 2;\n      lVar1 = lVar7 + -1;\n      puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50);\n      puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28);\n      iVar3 = FUN_0022b720(puVar6,puVar5);\n      if (iVar3 < 0) {\n        puVar6 = puVar5;\n      }\n      puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28);\n      if (iVar3 < 0) {\n        lVar7 = lVar1;\n      }\n      uVar2 = puVar6[1];\n      *puVar5 = *puVar6;\n      puVar5[1] = uVar2;\n      uVar2 = puVar6[3];\n      puVar5[2] = puVar6[2];\n      puVar5[3] = uVar2;\n      *(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4);\n      lVar8 = lVar7;\n    } while (lVar7 < lVar4);\n    puVar5 = puVar6;\n    if ((param_3 & 1) == 0) goto LAB_00236250;\n  }\n  else {\n    puVar6 = (undefined8 *)(param_1 + param_2 * 0x28);\n    lVar7 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\n    }\nLAB_00236250:\n    puVar5 = puVar6;\n    if ((long)(param_3 - 2) / 2 == lVar7) {\n      lVar7 = lVar7 * 2 + 1;\n      puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n    }\n  }" if (parenthesized_expression "(param_2 < lVar4)" ( (binary_expression "param_2 < lVar4" identifier < identifier) )) (compound_statement "{\n    do {\n      lVar7 = (lVar8 + 1) * 2;\n      lVar1 = lVar7 + -1;\n      puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50);\n      puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28);\n      iVar3 = FUN_0022b720(puVar6,puVar5);\n      if (iVar3 < 0) {\n        puVar6 = puVar5;\n      }\n      puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28);\n      if (iVar3 < 0) {\n        lVar7 = lVar1;\n      }\n      uVar2 = puVar6[1];\n      *puVar5 = *puVar6;\n      puVar5[1] = uVar2;\n      uVar2 = puVar6[3];\n      puVar5[2] = puVar6[2];\n      puVar5[3] = uVar2;\n      *(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4);\n      lVar8 = lVar7;\n    } while (lVar7 < lVar4);\n    puVar5 = puVar6;\n    if ((param_3 & 1) == 0) goto LAB_00236250;\n  }" { (do_statement "do {\n      lVar7 = (lVar8 + 1) * 2;\n      lVar1 = lVar7 + -1;\n      puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50);\n      puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28);\n      iVar3 = FUN_0022b720(puVar6,puVar5);\n      if (iVar3 < 0) {\n        puVar6 = puVar5;\n      }\n      puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28);\n      if (iVar3 < 0) {\n        lVar7 = lVar1;\n      }\n      uVar2 = puVar6[1];\n      *puVar5 = *puVar6;\n      puVar5[1] = uVar2;\n      uVar2 = puVar6[3];\n      puVar5[2] = puVar6[2];\n      puVar5[3] = uVar2;\n      *(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4);\n      lVar8 = lVar7;\n    } while (lVar7 < lVar4);" do (compound_statement "{\n      lVar7 = (lVar8 + 1) * 2;\n      lVar1 = lVar7 + -1;\n      puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50);\n      puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28);\n      iVar3 = FUN_0022b720(puVar6,puVar5);\n      if (iVar3 < 0) {\n        puVar6 = puVar5;\n      }\n      puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28);\n      if (iVar3 < 0) {\n        lVar7 = lVar1;\n      }\n      uVar2 = puVar6[1];\n      *puVar5 = *puVar6;\n      puVar5[1] = uVar2;\n      uVar2 = puVar6[3];\n      puVar5[2] = puVar6[2];\n      puVar5[3] = uVar2;\n      *(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4);\n      lVar8 = lVar7;\n    }" { (expression_statement "lVar7 = (lVar8 + 1) * 2;" (assignment_expression "lVar7 = (lVar8 + 1) * 2" identifier = (binary_expression "(lVar8 + 1) * 2" (parenthesized_expression "(lVar8 + 1)" ( (binary_expression "lVar8 + 1" identifier + number_literal) )) * number_literal)) ;) (expression_statement "lVar1 = lVar7 + -1;" (assignment_expression "lVar1 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50);" (assignment_expression "puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50)" identifier = (cast_expression "(undefined8 *)(param_1 + (lVar8 + 1) * 0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + (lVar8 + 1) * 0x50)" ( (binary_expression "param_1 + (lVar8 + 1) * 0x50" identifier + (binary_expression "(lVar8 + 1) * 0x50" (parenthesized_expression "(lVar8 + 1)" ( (binary_expression "lVar8 + 1" identifier + number_literal) )) * number_literal)) )))) ;) (expression_statement "puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28);" (assignment_expression "puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28)" identifier = (cast_expression "(undefined8 *)(param_1 + lVar1 * 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar1 * 0x28)" ( (binary_expression "param_1 + lVar1 * 0x28" identifier + (binary_expression "lVar1 * 0x28" identifier * number_literal)) )))) ;) (expression_statement "iVar3 = FUN_0022b720(puVar6,puVar5);" (assignment_expression "iVar3 = FUN_0022b720(puVar6,puVar5)" identifier = (call_expression "FUN_0022b720(puVar6,puVar5)" identifier (argument_list "(puVar6,puVar5)" ( identifier , identifier )))) ;) (if_statement "if (iVar3 < 0) {\n        puVar6 = puVar5;\n      }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n        puVar6 = puVar5;\n      }" { (expression_statement "puVar6 = puVar5;" (assignment_expression "puVar6 = puVar5" identifier = identifier) ;) })) (expression_statement "puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28);" (assignment_expression "puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28)" identifier = (cast_expression "(undefined8 *)(param_1 + lVar8 * 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar8 * 0x28)" ( (binary_expression "param_1 + lVar8 * 0x28" identifier + (binary_expression "lVar8 * 0x28" identifier * number_literal)) )))) ;) (if_statement "if (iVar3 < 0) {\n        lVar7 = lVar1;\n      }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n        lVar7 = lVar1;\n      }" { (expression_statement "lVar7 = lVar1;" (assignment_expression "lVar7 = lVar1" identifier = identifier) ;) })) (expression_statement "uVar2 = puVar6[1];" (assignment_expression "uVar2 = puVar6[1]" identifier = (subscript_expression "puVar6[1]" identifier [ number_literal ])) ;) (expression_statement "*puVar5 = *puVar6;" (assignment_expression "*puVar5 = *puVar6" (pointer_expression "*puVar5" * identifier) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar5[1] = uVar2;" (assignment_expression "puVar5[1] = uVar2" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar2 = puVar6[3];" (assignment_expression "uVar2 = puVar6[3]" identifier = (subscript_expression "puVar6[3]" identifier [ number_literal ])) ;) (expression_statement "puVar5[2] = puVar6[2];" (assignment_expression "puVar5[2] = puVar6[2]" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = (subscript_expression "puVar6[2]" identifier [ number_literal ])) ;) (expression_statement "puVar5[3] = uVar2;" (assignment_expression "puVar5[3] = uVar2" (subscript_expression "puVar5[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4);" (assignment_expression "*(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4)" (pointer_expression "*(undefined4 *)(puVar5 + 4)" * (cast_expression "(undefined4 *)(puVar5 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 4)" ( (binary_expression "puVar5 + 4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar6 + 4)" * (cast_expression "(undefined4 *)(puVar6 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 4)" ( (binary_expression "puVar6 + 4" identifier + number_literal) ))))) ;) (expression_statement "lVar8 = lVar7;" (assignment_expression "lVar8 = lVar7" identifier = identifier) ;) }) while (parenthesized_expression "(lVar7 < lVar4)" ( (binary_expression "lVar7 < lVar4" identifier < identifier) )) ;) (expression_statement "puVar5 = puVar6;" (assignment_expression "puVar5 = puVar6" identifier = identifier) ;) (if_statement "if ((param_3 & 1) == 0) goto LAB_00236250;" 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_00236250;" goto statement_identifier ;)) }) (else_clause "else {\n    puVar6 = (undefined8 *)(param_1 + param_2 * 0x28);\n    lVar7 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\n    }\nLAB_00236250:\n    puVar5 = puVar6;\n    if ((long)(param_3 - 2) / 2 == lVar7) {\n      lVar7 = lVar7 * 2 + 1;\n      puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n    }\n  }" else (compound_statement "{\n    puVar6 = (undefined8 *)(param_1 + param_2 * 0x28);\n    lVar7 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\n    }\nLAB_00236250:\n    puVar5 = puVar6;\n    if ((long)(param_3 - 2) / 2 == lVar7) {\n      lVar7 = lVar7 * 2 + 1;\n      puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n    }\n  }" { (expression_statement "puVar6 = (undefined8 *)(param_1 + param_2 * 0x28);" (assignment_expression "puVar6 = (undefined8 *)(param_1 + param_2 * 0x28)" identifier = (cast_expression "(undefined8 *)(param_1 + param_2 * 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + param_2 * 0x28)" ( (binary_expression "param_1 + param_2 * 0x28" identifier + (binary_expression "param_2 * 0x28" identifier * number_literal)) )))) ;) (expression_statement "lVar7 = param_2;" (assignment_expression "lVar7 = 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_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\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_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\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_48 = in_stack_00000028;" (assignment_expression "local_48 = in_stack_00000028" 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) ;) (goto_statement "goto LAB_0023620a;" goto statement_identifier ;) })) (labeled_statement "LAB_00236250:\n    puVar5 = puVar6;" statement_identifier : (expression_statement "puVar5 = puVar6;" (assignment_expression "puVar5 = puVar6" identifier = identifier) ;)) (if_statement "if ((long)(param_3 - 2) / 2 == lVar7) {\n      lVar7 = lVar7 * 2 + 1;\n      puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n    }" if (parenthesized_expression "((long)(param_3 - 2) / 2 == lVar7)" ( (binary_expression "(long)(param_3 - 2) / 2 == lVar7" (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      lVar7 = lVar7 * 2 + 1;\n      puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n    }" { (expression_statement "lVar7 = lVar7 * 2 + 1;" (assignment_expression "lVar7 = lVar7 * 2 + 1" identifier = (binary_expression "lVar7 * 2 + 1" (binary_expression "lVar7 * 2" identifier * number_literal) + number_literal)) ;) (expression_statement "puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);" (assignment_expression "puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28)" identifier = (cast_expression "(undefined8 *)(param_1 + lVar7 * 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar7 * 0x28)" ( (binary_expression "param_1 + lVar7 * 0x28" identifier + (binary_expression "lVar7 * 0x28" identifier * number_literal)) )))) ;) (expression_statement "uVar2 = puVar5[1];" (assignment_expression "uVar2 = puVar5[1]" identifier = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "*puVar6 = *puVar5;" (assignment_expression "*puVar6 = *puVar5" (pointer_expression "*puVar6" * identifier) = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar6[1] = uVar2;" (assignment_expression "puVar6[1] = uVar2" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar2 = puVar5[3];" (assignment_expression "uVar2 = puVar5[3]" identifier = (subscript_expression "puVar5[3]" identifier [ number_literal ])) ;) (expression_statement "puVar6[2] = puVar5[2];" (assignment_expression "puVar6[2] = puVar5[2]" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = (subscript_expression "puVar5[2]" identifier [ number_literal ])) ;) (expression_statement "puVar6[3] = uVar2;" (assignment_expression "puVar6[3] = uVar2" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);" (assignment_expression "*(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4)" (pointer_expression "*(undefined4 *)(puVar6 + 4)" * (cast_expression "(undefined4 *)(puVar6 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 4)" ( (binary_expression "puVar6 + 4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar5 + 4)" * (cast_expression "(undefined4 *)(puVar5 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 4)" ( (binary_expression "puVar5 + 4" identifier + number_literal) ))))) ;) })) }))) (expression_statement "local_48 = in_stack_00000028;" (assignment_expression "local_48 = in_stack_00000028" 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 "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 "lVar8 = (lVar7 + -1) - (lVar7 + -1 >> 0x3f);" (assignment_expression "lVar8 = (lVar7 + -1) - (lVar7 + -1 >> 0x3f)" identifier = (binary_expression "(lVar7 + -1) - (lVar7 + -1 >> 0x3f)" (parenthesized_expression "(lVar7 + -1)" ( (binary_expression "lVar7 + -1" identifier + number_literal) )) - (parenthesized_expression "(lVar7 + -1 >> 0x3f)" ( (binary_expression "lVar7 + -1 >> 0x3f" (binary_expression "lVar7 + -1" identifier + number_literal) >> number_literal) )))) ;) (expression_statement "puVar6 = puVar5;" (assignment_expression "puVar6 = puVar5" identifier = identifier) ;) (if_statement "if (param_2 < lVar7) {\n    do {\n      lVar4 = lVar8 >> 1;\n      puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28);\n      iVar3 = FUN_0022b720(puVar5,&local_68);\n      puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      if (-1 < iVar3) break;\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n      lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      puVar6 = puVar5;\n      lVar7 = lVar4;\n    } while (param_2 < lVar4);\n  }" if (parenthesized_expression "(param_2 < lVar7)" ( (binary_expression "param_2 < lVar7" identifier < identifier) )) (compound_statement "{\n    do {\n      lVar4 = lVar8 >> 1;\n      puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28);\n      iVar3 = FUN_0022b720(puVar5,&local_68);\n      puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      if (-1 < iVar3) break;\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n      lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      puVar6 = puVar5;\n      lVar7 = lVar4;\n    } while (param_2 < lVar4);\n  }" { (do_statement "do {\n      lVar4 = lVar8 >> 1;\n      puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28);\n      iVar3 = FUN_0022b720(puVar5,&local_68);\n      puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      if (-1 < iVar3) break;\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n      lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      puVar6 = puVar5;\n      lVar7 = lVar4;\n    } while (param_2 < lVar4);" do (compound_statement "{\n      lVar4 = lVar8 >> 1;\n      puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28);\n      iVar3 = FUN_0022b720(puVar5,&local_68);\n      puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      if (-1 < iVar3) break;\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n      lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      puVar6 = puVar5;\n      lVar7 = lVar4;\n    }" { (expression_statement "lVar4 = lVar8 >> 1;" (assignment_expression "lVar4 = lVar8 >> 1" identifier = (binary_expression "lVar8 >> 1" identifier >> number_literal)) ;) (expression_statement "puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28);" (assignment_expression "puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28)" identifier = (cast_expression "(undefined8 *)(param_1 + lVar4 * 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar4 * 0x28)" ( (binary_expression "param_1 + lVar4 * 0x28" identifier + (binary_expression "lVar4 * 0x28" identifier * number_literal)) )))) ;) (expression_statement "iVar3 = FUN_0022b720(puVar5,&local_68);" (assignment_expression "iVar3 = FUN_0022b720(puVar5,&local_68)" identifier = (call_expression "FUN_0022b720(puVar5,&local_68)" identifier (argument_list "(puVar5,&local_68)" ( identifier , (pointer_expression "&local_68" & identifier) )))) ;) (expression_statement "puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28);" (assignment_expression "puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28)" identifier = (cast_expression "(undefined8 *)(param_1 + lVar7 * 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar7 * 0x28)" ( (binary_expression "param_1 + lVar7 * 0x28" identifier + (binary_expression "lVar7 * 0x28" identifier * number_literal)) )))) ;) (if_statement "if (-1 < iVar3) break;" if (parenthesized_expression "(-1 < iVar3)" ( (binary_expression "-1 < iVar3" number_literal < identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar2 = puVar5[1];" (assignment_expression "uVar2 = puVar5[1]" identifier = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "*puVar6 = *puVar5;" (assignment_expression "*puVar6 = *puVar5" (pointer_expression "*puVar6" * identifier) = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar6[1] = uVar2;" (assignment_expression "puVar6[1] = uVar2" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar2 = puVar5[3];" (assignment_expression "uVar2 = puVar5[3]" identifier = (subscript_expression "puVar5[3]" identifier [ number_literal ])) ;) (expression_statement "puVar6[2] = puVar5[2];" (assignment_expression "puVar6[2] = puVar5[2]" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = (subscript_expression "puVar5[2]" identifier [ number_literal ])) ;) (expression_statement "puVar6[3] = uVar2;" (assignment_expression "puVar6[3] = uVar2" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);" (assignment_expression "*(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4)" (pointer_expression "*(undefined4 *)(puVar6 + 4)" * (cast_expression "(undefined4 *)(puVar6 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 4)" ( (binary_expression "puVar6 + 4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar5 + 4)" * (cast_expression "(undefined4 *)(puVar5 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 4)" ( (binary_expression "puVar5 + 4" identifier + number_literal) ))))) ;) (expression_statement "lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);" (assignment_expression "lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f)" identifier = (binary_expression "(lVar4 + -1) - (lVar4 + -1 >> 0x3f)" (parenthesized_expression "(lVar4 + -1)" ( (binary_expression "lVar4 + -1" identifier + number_literal) )) - (parenthesized_expression "(lVar4 + -1 >> 0x3f)" ( (binary_expression "lVar4 + -1 >> 0x3f" (binary_expression "lVar4 + -1" identifier + number_literal) >> number_literal) )))) ;) (expression_statement "puVar6 = puVar5;" (assignment_expression "puVar6 = puVar5" identifier = identifier) ;) (expression_statement "lVar7 = lVar4;" (assignment_expression "lVar7 = lVar4" identifier = identifier) ;) }) while (parenthesized_expression "(param_2 < lVar4)" ( (binary_expression "param_2 < lVar4" identifier < identifier) )) ;) })) (labeled_statement "LAB_0023620a:\n  *puVar6 = local_68;" statement_identifier : (expression_statement "*puVar6 = local_68;" (assignment_expression "*puVar6 = local_68" (pointer_expression "*puVar6" * identifier) = identifier) ;)) (expression_statement "puVar6[1] = uStack_60;" (assignment_expression "puVar6[1] = uStack_60" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[2] = local_58;" (assignment_expression "puVar6[2] = local_58" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[3] = uStack_50;" (assignment_expression "puVar6[3] = uStack_50" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(puVar6 + 4) = (undefined4)local_48;" (assignment_expression "*(undefined4 *)(puVar6 + 4) = (undefined4)local_48" (pointer_expression "*(undefined4 *)(puVar6 + 4)" * (cast_expression "(undefined4 *)(puVar6 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 4)" ( (binary_expression "puVar6 + 4" identifier + number_literal) )))) = (cast_expression "(undefined4)local_48" ( (type_descriptor "undefined4" type_identifier) ) 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 (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) 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 = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_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 IDENT + (binary_expression IDENT * LIT)) )))) ;) (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) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (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 IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + 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) ;) (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) ;) (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 IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (break_statement break ;)) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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) ;) }) 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (return_statement return ;) })))
(function_definition "void FUN_002360b0(long param_1,long param_2,ulong param_3)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  int iVar3;\n  long lVar4;\n  undefined8 *puVar5;\n  undefined8 *puVar6;\n  long lVar7;\n  long lVar8;\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  undefined8 local_68;\n  undefined8 uStack_60;\n  undefined8 local_58;\n  undefined8 uStack_50;\n  undefined8 local_48;\n  \n  lVar4 = (long)(param_3 - 1) / 2;\n  lVar8 = param_2;\n  if (param_2 < lVar4) {\n    do {\n      lVar7 = (lVar8 + 1) * 2;\n      lVar1 = lVar7 + -1;\n      puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50);\n      puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28);\n      iVar3 = FUN_0022b720(puVar6,puVar5);\n      if (iVar3 < 0) {\n        puVar6 = puVar5;\n      }\n      puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28);\n      if (iVar3 < 0) {\n        lVar7 = lVar1;\n      }\n      uVar2 = puVar6[1];\n      *puVar5 = *puVar6;\n      puVar5[1] = uVar2;\n      uVar2 = puVar6[3];\n      puVar5[2] = puVar6[2];\n      puVar5[3] = uVar2;\n      *(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4);\n      lVar8 = lVar7;\n    } while (lVar7 < lVar4);\n    puVar5 = puVar6;\n    if ((param_3 & 1) == 0) goto LAB_00236250;\n  }\n  else {\n    puVar6 = (undefined8 *)(param_1 + param_2 * 0x28);\n    lVar7 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\n    }\nLAB_00236250:\n    puVar5 = puVar6;\n    if ((long)(param_3 - 2) / 2 == lVar7) {\n      lVar7 = lVar7 * 2 + 1;\n      puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n    }\n  }\n  local_48 = in_stack_00000028;\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  lVar8 = (lVar7 + -1) - (lVar7 + -1 >> 0x3f);\n  puVar6 = puVar5;\n  if (param_2 < lVar7) {\n    do {\n      lVar4 = lVar8 >> 1;\n      puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28);\n      iVar3 = FUN_0022b720(puVar5,&local_68);\n      puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      if (-1 < iVar3) break;\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n      lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      puVar6 = puVar5;\n      lVar7 = lVar4;\n    } while (param_2 < lVar4);\n  }\nLAB_0023620a:\n  *puVar6 = local_68;\n  puVar6[1] = uStack_60;\n  puVar6[2] = local_58;\n  puVar6[3] = uStack_50;\n  *(undefined4 *)(puVar6 + 4) = (undefined4)local_48;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_002360b0(long param_1,long param_2,ulong param_3)" (identifier "FUN_002360b0") (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  long lVar1;\n  undefined8 uVar2;\n  int iVar3;\n  long lVar4;\n  undefined8 *puVar5;\n  undefined8 *puVar6;\n  long lVar7;\n  long lVar8;\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  undefined8 local_68;\n  undefined8 uStack_60;\n  undefined8 local_58;\n  undefined8 uStack_50;\n  undefined8 local_48;\n  \n  lVar4 = (long)(param_3 - 1) / 2;\n  lVar8 = param_2;\n  if (param_2 < lVar4) {\n    do {\n      lVar7 = (lVar8 + 1) * 2;\n      lVar1 = lVar7 + -1;\n      puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50);\n      puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28);\n      iVar3 = FUN_0022b720(puVar6,puVar5);\n      if (iVar3 < 0) {\n        puVar6 = puVar5;\n      }\n      puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28);\n      if (iVar3 < 0) {\n        lVar7 = lVar1;\n      }\n      uVar2 = puVar6[1];\n      *puVar5 = *puVar6;\n      puVar5[1] = uVar2;\n      uVar2 = puVar6[3];\n      puVar5[2] = puVar6[2];\n      puVar5[3] = uVar2;\n      *(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4);\n      lVar8 = lVar7;\n    } while (lVar7 < lVar4);\n    puVar5 = puVar6;\n    if ((param_3 & 1) == 0) goto LAB_00236250;\n  }\n  else {\n    puVar6 = (undefined8 *)(param_1 + param_2 * 0x28);\n    lVar7 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\n    }\nLAB_00236250:\n    puVar5 = puVar6;\n    if ((long)(param_3 - 2) / 2 == lVar7) {\n      lVar7 = lVar7 * 2 + 1;\n      puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n    }\n  }\n  local_48 = in_stack_00000028;\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  lVar8 = (lVar7 + -1) - (lVar7 + -1 >> 0x3f);\n  puVar6 = puVar5;\n  if (param_2 < lVar7) {\n    do {\n      lVar4 = lVar8 >> 1;\n      puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28);\n      iVar3 = FUN_0022b720(puVar5,&local_68);\n      puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      if (-1 < iVar3) break;\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n      lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      puVar6 = puVar5;\n      lVar7 = lVar4;\n    } while (param_2 < lVar4);\n  }\nLAB_0023620a:\n  *puVar6 = local_68;\n  puVar6[1] = uStack_60;\n  puVar6[2] = local_58;\n  puVar6[3] = uStack_50;\n  *(undefined4 *)(puVar6 + 4) = (undefined4)local_48;\n  return;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "undefined8 *puVar5;" (type_identifier "undefined8") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined8 *puVar6;" (type_identifier "undefined8") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "long lVar7;" (sized_type_specifier "long" (long "long")) (identifier "lVar7") (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (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 "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") (; ";")) (expression_statement "lVar4 = (long)(param_3 - 1) / 2;" (assignment_expression "lVar4 = (long)(param_3 - 1) / 2" (identifier "lVar4") (= "=") (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 "lVar8 = param_2;" (assignment_expression "lVar8 = param_2" (identifier "lVar8") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (param_2 < lVar4) {\n    do {\n      lVar7 = (lVar8 + 1) * 2;\n      lVar1 = lVar7 + -1;\n      puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50);\n      puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28);\n      iVar3 = FUN_0022b720(puVar6,puVar5);\n      if (iVar3 < 0) {\n        puVar6 = puVar5;\n      }\n      puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28);\n      if (iVar3 < 0) {\n        lVar7 = lVar1;\n      }\n      uVar2 = puVar6[1];\n      *puVar5 = *puVar6;\n      puVar5[1] = uVar2;\n      uVar2 = puVar6[3];\n      puVar5[2] = puVar6[2];\n      puVar5[3] = uVar2;\n      *(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4);\n      lVar8 = lVar7;\n    } while (lVar7 < lVar4);\n    puVar5 = puVar6;\n    if ((param_3 & 1) == 0) goto LAB_00236250;\n  }\n  else {\n    puVar6 = (undefined8 *)(param_1 + param_2 * 0x28);\n    lVar7 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\n    }\nLAB_00236250:\n    puVar5 = puVar6;\n    if ((long)(param_3 - 2) / 2 == lVar7) {\n      lVar7 = lVar7 * 2 + 1;\n      puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n    }\n  }" (if "if") (parenthesized_expression "(param_2 < lVar4)" (( "(") (binary_expression "param_2 < lVar4" (identifier "param_2") (< "<") (identifier "lVar4")) () ")")) (compound_statement "{\n    do {\n      lVar7 = (lVar8 + 1) * 2;\n      lVar1 = lVar7 + -1;\n      puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50);\n      puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28);\n      iVar3 = FUN_0022b720(puVar6,puVar5);\n      if (iVar3 < 0) {\n        puVar6 = puVar5;\n      }\n      puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28);\n      if (iVar3 < 0) {\n        lVar7 = lVar1;\n      }\n      uVar2 = puVar6[1];\n      *puVar5 = *puVar6;\n      puVar5[1] = uVar2;\n      uVar2 = puVar6[3];\n      puVar5[2] = puVar6[2];\n      puVar5[3] = uVar2;\n      *(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4);\n      lVar8 = lVar7;\n    } while (lVar7 < lVar4);\n    puVar5 = puVar6;\n    if ((param_3 & 1) == 0) goto LAB_00236250;\n  }" ({ "{") (do_statement "do {\n      lVar7 = (lVar8 + 1) * 2;\n      lVar1 = lVar7 + -1;\n      puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50);\n      puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28);\n      iVar3 = FUN_0022b720(puVar6,puVar5);\n      if (iVar3 < 0) {\n        puVar6 = puVar5;\n      }\n      puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28);\n      if (iVar3 < 0) {\n        lVar7 = lVar1;\n      }\n      uVar2 = puVar6[1];\n      *puVar5 = *puVar6;\n      puVar5[1] = uVar2;\n      uVar2 = puVar6[3];\n      puVar5[2] = puVar6[2];\n      puVar5[3] = uVar2;\n      *(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4);\n      lVar8 = lVar7;\n    } while (lVar7 < lVar4);" (do "do") (compound_statement "{\n      lVar7 = (lVar8 + 1) * 2;\n      lVar1 = lVar7 + -1;\n      puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50);\n      puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28);\n      iVar3 = FUN_0022b720(puVar6,puVar5);\n      if (iVar3 < 0) {\n        puVar6 = puVar5;\n      }\n      puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28);\n      if (iVar3 < 0) {\n        lVar7 = lVar1;\n      }\n      uVar2 = puVar6[1];\n      *puVar5 = *puVar6;\n      puVar5[1] = uVar2;\n      uVar2 = puVar6[3];\n      puVar5[2] = puVar6[2];\n      puVar5[3] = uVar2;\n      *(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4);\n      lVar8 = lVar7;\n    }" ({ "{") (expression_statement "lVar7 = (lVar8 + 1) * 2;" (assignment_expression "lVar7 = (lVar8 + 1) * 2" (identifier "lVar7") (= "=") (binary_expression "(lVar8 + 1) * 2" (parenthesized_expression "(lVar8 + 1)" (( "(") (binary_expression "lVar8 + 1" (identifier "lVar8") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "2"))) (; ";")) (expression_statement "lVar1 = lVar7 + -1;" (assignment_expression "lVar1 = lVar7 + -1" (identifier "lVar1") (= "=") (binary_expression "lVar7 + -1" (identifier "lVar7") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50);" (assignment_expression "puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50)" (identifier "puVar6") (= "=") (cast_expression "(undefined8 *)(param_1 + (lVar8 + 1) * 0x50)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + (lVar8 + 1) * 0x50)" (( "(") (binary_expression "param_1 + (lVar8 + 1) * 0x50" (identifier "param_1") (+ "+") (binary_expression "(lVar8 + 1) * 0x50" (parenthesized_expression "(lVar8 + 1)" (( "(") (binary_expression "lVar8 + 1" (identifier "lVar8") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "0x50"))) () ")")))) (; ";")) (expression_statement "puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28);" (assignment_expression "puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28)" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)(param_1 + lVar1 * 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + lVar1 * 0x28)" (( "(") (binary_expression "param_1 + lVar1 * 0x28" (identifier "param_1") (+ "+") (binary_expression "lVar1 * 0x28" (identifier "lVar1") (* "*") (number_literal "0x28"))) () ")")))) (; ";")) (expression_statement "iVar3 = FUN_0022b720(puVar6,puVar5);" (assignment_expression "iVar3 = FUN_0022b720(puVar6,puVar5)" (identifier "iVar3") (= "=") (call_expression "FUN_0022b720(puVar6,puVar5)" (identifier "FUN_0022b720") (argument_list "(puVar6,puVar5)" (( "(") (identifier "puVar6") (, ",") (identifier "puVar5") () ")")))) (; ";")) (if_statement "if (iVar3 < 0) {\n        puVar6 = puVar5;\n      }" (if "if") (parenthesized_expression "(iVar3 < 0)" (( "(") (binary_expression "iVar3 < 0" (identifier "iVar3") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        puVar6 = puVar5;\n      }" ({ "{") (expression_statement "puVar6 = puVar5;" (assignment_expression "puVar6 = puVar5" (identifier "puVar6") (= "=") (identifier "puVar5")) (; ";")) (} "}"))) (expression_statement "puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28);" (assignment_expression "puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28)" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)(param_1 + lVar8 * 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + lVar8 * 0x28)" (( "(") (binary_expression "param_1 + lVar8 * 0x28" (identifier "param_1") (+ "+") (binary_expression "lVar8 * 0x28" (identifier "lVar8") (* "*") (number_literal "0x28"))) () ")")))) (; ";")) (if_statement "if (iVar3 < 0) {\n        lVar7 = lVar1;\n      }" (if "if") (parenthesized_expression "(iVar3 < 0)" (( "(") (binary_expression "iVar3 < 0" (identifier "iVar3") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        lVar7 = lVar1;\n      }" ({ "{") (expression_statement "lVar7 = lVar1;" (assignment_expression "lVar7 = lVar1" (identifier "lVar7") (= "=") (identifier "lVar1")) (; ";")) (} "}"))) (expression_statement "uVar2 = puVar6[1];" (assignment_expression "uVar2 = puVar6[1]" (identifier "uVar2") (= "=") (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*puVar5 = *puVar6;" (assignment_expression "*puVar5 = *puVar6" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (expression_statement "puVar5[1] = uVar2;" (assignment_expression "puVar5[1] = uVar2" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "uVar2 = puVar6[3];" (assignment_expression "uVar2 = puVar6[3]" (identifier "uVar2") (= "=") (subscript_expression "puVar6[3]" (identifier "puVar6") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "puVar5[2] = puVar6[2];" (assignment_expression "puVar5[2] = puVar6[2]" (subscript_expression "puVar5[2]" (identifier "puVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "puVar6[2]" (identifier "puVar6") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar5[3] = uVar2;" (assignment_expression "puVar5[3] = uVar2" (subscript_expression "puVar5[3]" (identifier "puVar5") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "*(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4);" (assignment_expression "*(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4)" (pointer_expression "*(undefined4 *)(puVar5 + 4)" (* "*") (cast_expression "(undefined4 *)(puVar5 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 4)" (( "(") (binary_expression "puVar5 + 4" (identifier "puVar5") (+ "+") (number_literal "4")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar6 + 4)" (* "*") (cast_expression "(undefined4 *)(puVar6 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + 4)" (( "(") (binary_expression "puVar6 + 4" (identifier "puVar6") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "lVar8 = lVar7;" (assignment_expression "lVar8 = lVar7" (identifier "lVar8") (= "=") (identifier "lVar7")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar7 < lVar4)" (( "(") (binary_expression "lVar7 < lVar4" (identifier "lVar7") (< "<") (identifier "lVar4")) () ")")) (; ";")) (expression_statement "puVar5 = puVar6;" (assignment_expression "puVar5 = puVar6" (identifier "puVar5") (= "=") (identifier "puVar6")) (; ";")) (if_statement "if ((param_3 & 1) == 0) goto LAB_00236250;" (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_00236250;" (goto "goto") (statement_identifier "LAB_00236250") (; ";"))) (} "}")) (else_clause "else {\n    puVar6 = (undefined8 *)(param_1 + param_2 * 0x28);\n    lVar7 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\n    }\nLAB_00236250:\n    puVar5 = puVar6;\n    if ((long)(param_3 - 2) / 2 == lVar7) {\n      lVar7 = lVar7 * 2 + 1;\n      puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n    }\n  }" (else "else") (compound_statement "{\n    puVar6 = (undefined8 *)(param_1 + param_2 * 0x28);\n    lVar7 = param_2;\n    if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\n    }\nLAB_00236250:\n    puVar5 = puVar6;\n    if ((long)(param_3 - 2) / 2 == lVar7) {\n      lVar7 = lVar7 * 2 + 1;\n      puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n    }\n  }" ({ "{") (expression_statement "puVar6 = (undefined8 *)(param_1 + param_2 * 0x28);" (assignment_expression "puVar6 = (undefined8 *)(param_1 + param_2 * 0x28)" (identifier "puVar6") (= "=") (cast_expression "(undefined8 *)(param_1 + param_2 * 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + param_2 * 0x28)" (( "(") (binary_expression "param_1 + param_2 * 0x28" (identifier "param_1") (+ "+") (binary_expression "param_2 * 0x28" (identifier "param_2") (* "*") (number_literal "0x28"))) () ")")))) (; ";")) (expression_statement "lVar7 = param_2;" (assignment_expression "lVar7 = param_2" (identifier "lVar7") (= "=") (identifier "param_2")) (; ";")) (if_statement "if ((param_3 & 1) != 0) {\n      local_68 = in_stack_00000008;\n      uStack_60 = in_stack_00000010;\n      local_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\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_48 = in_stack_00000028;\n      local_58 = in_stack_00000018;\n      uStack_50 = in_stack_00000020;\n      goto LAB_0023620a;\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_48 = in_stack_00000028;" (assignment_expression "local_48 = in_stack_00000028" (identifier "local_48") (= "=") (identifier "in_stack_00000028")) (; ";")) (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")) (; ";")) (goto_statement "goto LAB_0023620a;" (goto "goto") (statement_identifier "LAB_0023620a") (; ";")) (} "}"))) (labeled_statement "LAB_00236250:\n    puVar5 = puVar6;" (statement_identifier "LAB_00236250") (: ":") (expression_statement "puVar5 = puVar6;" (assignment_expression "puVar5 = puVar6" (identifier "puVar5") (= "=") (identifier "puVar6")) (; ";"))) (if_statement "if ((long)(param_3 - 2) / 2 == lVar7) {\n      lVar7 = lVar7 * 2 + 1;\n      puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n    }" (if "if") (parenthesized_expression "((long)(param_3 - 2) / 2 == lVar7)" (( "(") (binary_expression "(long)(param_3 - 2) / 2 == lVar7" (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 "lVar7")) () ")")) (compound_statement "{\n      lVar7 = lVar7 * 2 + 1;\n      puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n    }" ({ "{") (expression_statement "lVar7 = lVar7 * 2 + 1;" (assignment_expression "lVar7 = lVar7 * 2 + 1" (identifier "lVar7") (= "=") (binary_expression "lVar7 * 2 + 1" (binary_expression "lVar7 * 2" (identifier "lVar7") (* "*") (number_literal "2")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);" (assignment_expression "puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28)" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)(param_1 + lVar7 * 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + lVar7 * 0x28)" (( "(") (binary_expression "param_1 + lVar7 * 0x28" (identifier "param_1") (+ "+") (binary_expression "lVar7 * 0x28" (identifier "lVar7") (* "*") (number_literal "0x28"))) () ")")))) (; ";")) (expression_statement "uVar2 = puVar5[1];" (assignment_expression "uVar2 = puVar5[1]" (identifier "uVar2") (= "=") (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*puVar6 = *puVar5;" (assignment_expression "*puVar6 = *puVar5" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "puVar6[1] = uVar2;" (assignment_expression "puVar6[1] = uVar2" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "uVar2 = puVar5[3];" (assignment_expression "uVar2 = puVar5[3]" (identifier "uVar2") (= "=") (subscript_expression "puVar5[3]" (identifier "puVar5") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "puVar6[2] = puVar5[2];" (assignment_expression "puVar6[2] = puVar5[2]" (subscript_expression "puVar6[2]" (identifier "puVar6") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "puVar5[2]" (identifier "puVar5") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar6[3] = uVar2;" (assignment_expression "puVar6[3] = uVar2" (subscript_expression "puVar6[3]" (identifier "puVar6") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "*(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);" (assignment_expression "*(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4)" (pointer_expression "*(undefined4 *)(puVar6 + 4)" (* "*") (cast_expression "(undefined4 *)(puVar6 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + 4)" (( "(") (binary_expression "puVar6 + 4" (identifier "puVar6") (+ "+") (number_literal "4")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar5 + 4)" (* "*") (cast_expression "(undefined4 *)(puVar5 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 4)" (( "(") (binary_expression "puVar5 + 4" (identifier "puVar5") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}"))) (} "}")))) (expression_statement "local_48 = in_stack_00000028;" (assignment_expression "local_48 = in_stack_00000028" (identifier "local_48") (= "=") (identifier "in_stack_00000028")) (; ";")) (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 "lVar8 = (lVar7 + -1) - (lVar7 + -1 >> 0x3f);" (assignment_expression "lVar8 = (lVar7 + -1) - (lVar7 + -1 >> 0x3f)" (identifier "lVar8") (= "=") (binary_expression "(lVar7 + -1) - (lVar7 + -1 >> 0x3f)" (parenthesized_expression "(lVar7 + -1)" (( "(") (binary_expression "lVar7 + -1" (identifier "lVar7") (+ "+") (number_literal "-1")) () ")")) (- "-") (parenthesized_expression "(lVar7 + -1 >> 0x3f)" (( "(") (binary_expression "lVar7 + -1 >> 0x3f" (binary_expression "lVar7 + -1" (identifier "lVar7") (+ "+") (number_literal "-1")) (>> ">>") (number_literal "0x3f")) () ")")))) (; ";")) (expression_statement "puVar6 = puVar5;" (assignment_expression "puVar6 = puVar5" (identifier "puVar6") (= "=") (identifier "puVar5")) (; ";")) (if_statement "if (param_2 < lVar7) {\n    do {\n      lVar4 = lVar8 >> 1;\n      puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28);\n      iVar3 = FUN_0022b720(puVar5,&local_68);\n      puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      if (-1 < iVar3) break;\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n      lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      puVar6 = puVar5;\n      lVar7 = lVar4;\n    } while (param_2 < lVar4);\n  }" (if "if") (parenthesized_expression "(param_2 < lVar7)" (( "(") (binary_expression "param_2 < lVar7" (identifier "param_2") (< "<") (identifier "lVar7")) () ")")) (compound_statement "{\n    do {\n      lVar4 = lVar8 >> 1;\n      puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28);\n      iVar3 = FUN_0022b720(puVar5,&local_68);\n      puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      if (-1 < iVar3) break;\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n      lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      puVar6 = puVar5;\n      lVar7 = lVar4;\n    } while (param_2 < lVar4);\n  }" ({ "{") (do_statement "do {\n      lVar4 = lVar8 >> 1;\n      puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28);\n      iVar3 = FUN_0022b720(puVar5,&local_68);\n      puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      if (-1 < iVar3) break;\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n      lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      puVar6 = puVar5;\n      lVar7 = lVar4;\n    } while (param_2 < lVar4);" (do "do") (compound_statement "{\n      lVar4 = lVar8 >> 1;\n      puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28);\n      iVar3 = FUN_0022b720(puVar5,&local_68);\n      puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28);\n      if (-1 < iVar3) break;\n      uVar2 = puVar5[1];\n      *puVar6 = *puVar5;\n      puVar6[1] = uVar2;\n      uVar2 = puVar5[3];\n      puVar6[2] = puVar5[2];\n      puVar6[3] = uVar2;\n      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);\n      lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);\n      puVar6 = puVar5;\n      lVar7 = lVar4;\n    }" ({ "{") (expression_statement "lVar4 = lVar8 >> 1;" (assignment_expression "lVar4 = lVar8 >> 1" (identifier "lVar4") (= "=") (binary_expression "lVar8 >> 1" (identifier "lVar8") (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28);" (assignment_expression "puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28)" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)(param_1 + lVar4 * 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + lVar4 * 0x28)" (( "(") (binary_expression "param_1 + lVar4 * 0x28" (identifier "param_1") (+ "+") (binary_expression "lVar4 * 0x28" (identifier "lVar4") (* "*") (number_literal "0x28"))) () ")")))) (; ";")) (expression_statement "iVar3 = FUN_0022b720(puVar5,&local_68);" (assignment_expression "iVar3 = FUN_0022b720(puVar5,&local_68)" (identifier "iVar3") (= "=") (call_expression "FUN_0022b720(puVar5,&local_68)" (identifier "FUN_0022b720") (argument_list "(puVar5,&local_68)" (( "(") (identifier "puVar5") (, ",") (pointer_expression "&local_68" (& "&") (identifier "local_68")) () ")")))) (; ";")) (expression_statement "puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28);" (assignment_expression "puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28)" (identifier "puVar6") (= "=") (cast_expression "(undefined8 *)(param_1 + lVar7 * 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + lVar7 * 0x28)" (( "(") (binary_expression "param_1 + lVar7 * 0x28" (identifier "param_1") (+ "+") (binary_expression "lVar7 * 0x28" (identifier "lVar7") (* "*") (number_literal "0x28"))) () ")")))) (; ";")) (if_statement "if (-1 < iVar3) break;" (if "if") (parenthesized_expression "(-1 < iVar3)" (( "(") (binary_expression "-1 < iVar3" (number_literal "-1") (< "<") (identifier "iVar3")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar2 = puVar5[1];" (assignment_expression "uVar2 = puVar5[1]" (identifier "uVar2") (= "=") (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*puVar6 = *puVar5;" (assignment_expression "*puVar6 = *puVar5" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "puVar6[1] = uVar2;" (assignment_expression "puVar6[1] = uVar2" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "uVar2 = puVar5[3];" (assignment_expression "uVar2 = puVar5[3]" (identifier "uVar2") (= "=") (subscript_expression "puVar5[3]" (identifier "puVar5") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "puVar6[2] = puVar5[2];" (assignment_expression "puVar6[2] = puVar5[2]" (subscript_expression "puVar6[2]" (identifier "puVar6") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "puVar5[2]" (identifier "puVar5") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar6[3] = uVar2;" (assignment_expression "puVar6[3] = uVar2" (subscript_expression "puVar6[3]" (identifier "puVar6") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "*(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);" (assignment_expression "*(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4)" (pointer_expression "*(undefined4 *)(puVar6 + 4)" (* "*") (cast_expression "(undefined4 *)(puVar6 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + 4)" (( "(") (binary_expression "puVar6 + 4" (identifier "puVar6") (+ "+") (number_literal "4")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar5 + 4)" (* "*") (cast_expression "(undefined4 *)(puVar5 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 4)" (( "(") (binary_expression "puVar5 + 4" (identifier "puVar5") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);" (assignment_expression "lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f)" (identifier "lVar8") (= "=") (binary_expression "(lVar4 + -1) - (lVar4 + -1 >> 0x3f)" (parenthesized_expression "(lVar4 + -1)" (( "(") (binary_expression "lVar4 + -1" (identifier "lVar4") (+ "+") (number_literal "-1")) () ")")) (- "-") (parenthesized_expression "(lVar4 + -1 >> 0x3f)" (( "(") (binary_expression "lVar4 + -1 >> 0x3f" (binary_expression "lVar4 + -1" (identifier "lVar4") (+ "+") (number_literal "-1")) (>> ">>") (number_literal "0x3f")) () ")")))) (; ";")) (expression_statement "puVar6 = puVar5;" (assignment_expression "puVar6 = puVar5" (identifier "puVar6") (= "=") (identifier "puVar5")) (; ";")) (expression_statement "lVar7 = lVar4;" (assignment_expression "lVar7 = lVar4" (identifier "lVar7") (= "=") (identifier "lVar4")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_2 < lVar4)" (( "(") (binary_expression "param_2 < lVar4" (identifier "param_2") (< "<") (identifier "lVar4")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_0023620a:\n  *puVar6 = local_68;" (statement_identifier "LAB_0023620a") (: ":") (expression_statement "*puVar6 = local_68;" (assignment_expression "*puVar6 = local_68" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (identifier "local_68")) (; ";"))) (expression_statement "puVar6[1] = uStack_60;" (assignment_expression "puVar6[1] = uStack_60" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uStack_60")) (; ";")) (expression_statement "puVar6[2] = local_58;" (assignment_expression "puVar6[2] = local_58" (subscript_expression "puVar6[2]" (identifier "puVar6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_58")) (; ";")) (expression_statement "puVar6[3] = uStack_50;" (assignment_expression "puVar6[3] = uStack_50" (subscript_expression "puVar6[3]" (identifier "puVar6") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uStack_50")) (; ";")) (expression_statement "*(undefined4 *)(puVar6 + 4) = (undefined4)local_48;" (assignment_expression "*(undefined4 *)(puVar6 + 4) = (undefined4)local_48" (pointer_expression "*(undefined4 *)(puVar6 + 4)" (* "*") (cast_expression "(undefined4 *)(puVar6 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + 4)" (( "(") (binary_expression "puVar6 + 4" (identifier "puVar6") (+ "+") (number_literal "4")) () ")")))) (= "=") (cast_expression "(undefined4)local_48" (( "(") (type_descriptor "undefined4" (type_identifier "undefined4")) () ")") (identifier "local_48"))) (; ";")) (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<9, true, 64,
   false>*, std::vector<gold::Output_reloc<9, true, 64, false>, std::allocator<gold::Output_reloc<9,
   true, 64, false> > > >, long int, gold::Output_reloc<9, true, 64, false>,
   __gnu_cxx::__ops::_Iter_comp_iter<gold::Output_data_reloc_base<9, true, 64,
   false>::Sort_relocs_comparison> > */

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

{
  long var_7;
  type_1 aVar2;
  int var_11;
  long var_3;
  type_1 *var_12;
  type_1 *var_13;
  long var_5;
  long var_4;
  type_1 __value;
  type_1 in_stack_00000010;
  type_1 in_stack_00000018;
  type_1 in_stack_00000020;
  type_2 in_stack_00000028;
  type_1 local_68;
  type_1 aStack_60;
  type_1 local_58;
  type_1 aStack_50;
  type_2 local_48;
  
  var_3 = (long)(var_1 - 1) / 2;
  var_4 = var_2;
  if (var_2 < var_3) {
    do {
      var_5 = (var_4 + 1) * 2;
      var_7 = var_5 + -1;
      var_13 = (type_1 *)(var_6 + (var_4 + 1) * 0x50);
      var_12 = (type_1 *)(var_6 + var_7 * 0x28);
      var_11 = gold::var_8<9,_true,_64,var_9>::var_10
                        ((var_8<9,_true,_64,var_9> *)var_13,
                         (var_8<9,_true,_64,var_9> *)var_12);
      if (var_11 < 0) {
        var_13 = var_12;
      }
      var_12 = (type_1 *)(var_6 + var_4 * 0x28);
      if (var_11 < 0) {
        var_5 = var_7;
      }
      aVar2 = var_13[1];
      *var_12 = *var_13;
      var_12[1] = aVar2;
      aVar2 = var_13[3];
      var_12[2] = var_13[2];
      var_12[3] = aVar2;
      *(type_3 *)(var_12 + 4) = *(type_3 *)(var_13 + 4);
      var_4 = var_5;
    } while (var_5 < var_3);
    var_12 = var_13;
    if ((var_1 & 1) == 0) goto LAB_00236250;
  }
  else {
    var_13 = (type_1 *)(var_6 + var_2 * 0x28);
    var_5 = var_2;
    if ((var_1 & 1) != 0) {
      local_68 = __value;
      aStack_60 = in_stack_00000010;
      local_48 = in_stack_00000028;
      local_58 = in_stack_00000018;
      aStack_50 = in_stack_00000020;
      goto LAB_0023620a;
    }
LAB_00236250:
    var_12 = var_13;
    if ((long)(var_1 - 2) / 2 == var_5) {
      var_5 = var_5 * 2 + 1;
      var_12 = (type_1 *)(var_6 + var_5 * 0x28);
      aVar2 = var_12[1];
      *var_13 = *var_12;
      var_13[1] = aVar2;
      aVar2 = var_12[3];
      var_13[2] = var_12[2];
      var_13[3] = aVar2;
      *(type_3 *)(var_13 + 4) = *(type_3 *)(var_12 + 4);
    }
  }
  local_48 = in_stack_00000028;
  local_68 = __value;
  aStack_60 = in_stack_00000010;
  local_58 = in_stack_00000018;
  aStack_50 = in_stack_00000020;
  var_4 = (var_5 + -1) - (var_5 + -1 >> 0x3f);
  var_13 = var_12;
  if (var_2 < var_5) {
    do {
      var_3 = var_4 >> 1;
      var_12 = (type_1 *)(var_6 + var_3 * 0x28);
      var_11 = gold::var_8<9,_true,_64,var_9>::var_10
                        ((var_8<9,_true,_64,var_9> *)var_12,
                         (var_8<9,_true,_64,var_9> *)&local_68);
      var_13 = (type_1 *)(var_6 + var_5 * 0x28);
      if (-1 < var_11) break;
      aVar2 = var_12[1];
      *var_13 = *var_12;
      var_13[1] = aVar2;
      aVar2 = var_12[3];
      var_13[2] = var_12[2];
      var_13[3] = aVar2;
      *(type_3 *)(var_13 + 4) = *(type_3 *)(var_12 + 4);
      var_4 = (var_3 + -1) - (var_3 + -1 >> 0x3f);
      var_13 = var_12;
      var_5 = var_3;
    } while (var_2 < var_3);
  }
LAB_0023620a:
  *var_13 = local_68;
  var_13[1] = aStack_60;
  var_13[2] = local_58;
  var_13[3] = aStack_50;
  *(type_3 *)(var_13 + 4) = (type_3)local_48;
  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: (sized_type_specifier) declarator: (identifier)) (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: (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: (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: (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: (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: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) 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: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (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))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) 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))) (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))) (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: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (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: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (break_statement)) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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)))) 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (return_statement))))

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

{
  long lVar1;
  undefined8 uVar2;
  int iVar3;
  long lVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  long lVar7;
  long lVar8;
  undefined8 in_stack_00000008;
  undefined8 in_stack_00000010;
  undefined8 in_stack_00000018;
  undefined8 in_stack_00000020;
  undefined8 in_stack_00000028;
  undefined8 local_68;
  undefined8 uStack_60;
  undefined8 local_58;
  undefined8 uStack_50;
  undefined8 local_48;
  
  lVar4 = (long)(param_3 - 1) / 2;
  lVar8 = param_2;
  if (param_2 < lVar4) {
    do {
      lVar7 = (lVar8 + 1) * 2;
      lVar1 = lVar7 + -1;
      puVar6 = (undefined8 *)(param_1 + (lVar8 + 1) * 0x50);
      puVar5 = (undefined8 *)(param_1 + lVar1 * 0x28);
      iVar3 = FUN_0022b720(puVar6,puVar5);
      if (iVar3 < 0) {
        puVar6 = puVar5;
      }
      puVar5 = (undefined8 *)(param_1 + lVar8 * 0x28);
      if (iVar3 < 0) {
        lVar7 = lVar1;
      }
      uVar2 = puVar6[1];
      *puVar5 = *puVar6;
      puVar5[1] = uVar2;
      uVar2 = puVar6[3];
      puVar5[2] = puVar6[2];
      puVar5[3] = uVar2;
      *(undefined4 *)(puVar5 + 4) = *(undefined4 *)(puVar6 + 4);
      lVar8 = lVar7;
    } while (lVar7 < lVar4);
    puVar5 = puVar6;
    if ((param_3 & 1) == 0) goto LAB_00236250;
  }
  else {
    puVar6 = (undefined8 *)(param_1 + param_2 * 0x28);
    lVar7 = param_2;
    if ((param_3 & 1) != 0) {
      local_68 = in_stack_00000008;
      uStack_60 = in_stack_00000010;
      local_48 = in_stack_00000028;
      local_58 = in_stack_00000018;
      uStack_50 = in_stack_00000020;
      goto LAB_0023620a;
    }
LAB_00236250:
    puVar5 = puVar6;
    if ((long)(param_3 - 2) / 2 == lVar7) {
      lVar7 = lVar7 * 2 + 1;
      puVar5 = (undefined8 *)(param_1 + lVar7 * 0x28);
      uVar2 = puVar5[1];
      *puVar6 = *puVar5;
      puVar6[1] = uVar2;
      uVar2 = puVar5[3];
      puVar6[2] = puVar5[2];
      puVar6[3] = uVar2;
      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);
    }
  }
  local_48 = in_stack_00000028;
  local_68 = in_stack_00000008;
  uStack_60 = in_stack_00000010;
  local_58 = in_stack_00000018;
  uStack_50 = in_stack_00000020;
  lVar8 = (lVar7 + -1) - (lVar7 + -1 >> 0x3f);
  puVar6 = puVar5;
  if (param_2 < lVar7) {
    do {
      lVar4 = lVar8 >> 1;
      puVar5 = (undefined8 *)(param_1 + lVar4 * 0x28);
      iVar3 = FUN_0022b720(puVar5,&local_68);
      puVar6 = (undefined8 *)(param_1 + lVar7 * 0x28);
      if (-1 < iVar3) break;
      uVar2 = puVar5[1];
      *puVar6 = *puVar5;
      puVar6[1] = uVar2;
      uVar2 = puVar5[3];
      puVar6[2] = puVar5[2];
      puVar6[3] = uVar2;
      *(undefined4 *)(puVar6 + 4) = *(undefined4 *)(puVar5 + 4);
      lVar8 = (lVar4 + -1) - (lVar4 + -1 >> 0x3f);
      puVar6 = puVar5;
      lVar7 = lVar4;
    } while (param_2 < lVar4);
  }
LAB_0023620a:
  *puVar6 = local_68;
  puVar6[1] = uStack_60;
  puVar6[2] = local_58;
  puVar6[3] = uStack_50;
  *(undefined4 *)(puVar6 + 4) = (undefined4)local_48;
  return;
}

