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

void std::
     __insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_reloc<4,_true,_64,_true>*,_std::vector<gold::Output_reloc<4,_true,_64,_true>,_std::allocator<gold::Output_reloc<4,_true,_64,_true>_>_>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Output_data_reloc_base<4,_true,_64,_true>::Sort_relocs_comparison>_>
               (Output_reloc<9,_true,_64,_true> *__first,Output_reloc<9,_true,_64,_true> *__last)

{
  Address *pAVar1;
  anon_union_4_4_c82d8563_for_u1_ aVar2;
  anon_union_4_2_238bdeaa_for_u2_ aVar3;
  undefined4 uVar4;
  uint uVar5;
  undefined4 uVar6;
  uint uVar7;
  anon_union_4_4_c82d8563_for_u1_ aVar8;
  anon_union_4_2_238bdeaa_for_u2_ aVar9;
  Output_reloc<9,_true,_64,_true> *pOVar10;
  Address AVar11;
  int iVar12;
  Address *pAVar13;
  Output_reloc<9,_true,_64,_true> *this;
  value_type __val;
  
  if (__first != __last) {
    pOVar10 = __first + 1;
    while (this = (Output_reloc<9,_true,_64,_true> *)&pOVar10->address_,
          (Output_reloc<9,_true,_64,_true> *)&pOVar10->address_ != __last) {
      while( true ) {
        iVar12 = gold::Output_reloc<9,_true,_64,_true>::compare(this,__first);
        if ((-1 < iVar12) &&
           ((iVar12 != 0 ||
            (__first[1].u2_.relobj <= this[1].u2_.relobj &&
             (uint)(this[1].u1_.relobj < __first[1].u1_.relobj) <=
             (uint)((int)this[1].u2_.relobj - (int)__first[1].u2_.relobj))))) break;
        aVar2 = this->u1_;
        pAVar1 = &this[1].address_;
        aVar3 = this->u2_;
        AVar11 = this->address_;
        uVar4 = *(undefined4 *)((int)&this->address_ + 4);
        uVar5 = this->local_sym_index_;
        uVar6 = *(undefined4 *)&this->field_0x14;
        uVar7 = this->shndx_;
        aVar8 = this[1].u1_;
        aVar9 = this[1].u2_;
        iVar12 = ((int)this - (int)__first >> 2) * 0x38e38e39;
        pAVar13 = pAVar1;
        if (0 < (int)this - (int)__first) {
          do {
            *(undefined4 *)((int)pAVar13 + -0x24) = *(undefined4 *)(pAVar13 + -9);
            *(undefined4 *)(pAVar13 + -4) = *(undefined4 *)((int)pAVar13 + -0x44);
            *(undefined4 *)((int)pAVar13 + -0x1c) = *(undefined4 *)(pAVar13 + -8);
            *(undefined4 *)(pAVar13 + -3) = *(undefined4 *)((int)pAVar13 + -0x3c);
            *(undefined4 *)((int)pAVar13 + -0x14) = *(undefined4 *)(pAVar13 + -7);
            *(undefined4 *)(pAVar13 + -2) = *(undefined4 *)((int)pAVar13 + -0x34);
            *(undefined4 *)((int)pAVar13 + -0xc) = *(undefined4 *)(pAVar13 + -6);
            ((Output_reloc<9,_true,_64,_true> *)(pAVar13 + -1))->u1_ =
                 *(anon_union_4_4_c82d8563_for_u1_ *)((int)pAVar13 + -0x2c);
            *(anon_union_4_2_238bdeaa_for_u2_ *)((int)pAVar13 + -4) =
                 *(anon_union_4_2_238bdeaa_for_u2_ *)(pAVar13 + -5);
            iVar12 = iVar12 + -1;
            pAVar13 = (Address *)((int)pAVar13 + -0x24);
          } while (iVar12 != 0);
        }
        __first->u1_ = aVar2;
        __first->u2_ = aVar3;
        *(int *)&__first->address_ = (int)AVar11;
        *(undefined4 *)((int)&__first->address_ + 4) = uVar4;
        __first->local_sym_index_ = uVar5;
        *(undefined4 *)&__first->field_0x14 = uVar6;
        __first->shndx_ = uVar7;
        __first[1].u1_ = aVar8;
        __first[1].u2_ = aVar9;
        this = (Output_reloc<9,_true,_64,_true> *)pAVar1;
        if ((Output_reloc<9,_true,_64,_true> *)pAVar1 == __last) {
          return;
        }
      }
      __unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold::Output_reloc<4,_true,_64,_true>*,_std::vector<gold::Output_reloc<4,_true,_64,_true>,_std::allocator<gold::Output_reloc<4,_true,_64,_true>_>_>_>,___gnu_cxx::__ops::_Val_comp_iter<gold::Output_data_reloc_base<4,_true,_64,_true>::Sort_relocs_comparison>_>
                (this,0);
      pOVar10 = this + 1;
    }
  }
  return;
}



void FUN_00306a40(undefined4 *param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  int iVar11;
  undefined4 *puVar12;
  undefined4 *puVar13;
  
  if (param_1 != param_2) {
    for (puVar13 = param_1 + 9; puVar13 != param_2; puVar13 = puVar13 + 9) {
      while( true ) {
        iVar11 = FUN_002ff8d0(puVar13,param_1);
        if ((-1 < iVar11) &&
           ((iVar11 != 0 ||
            ((uint)param_1[8] <= (uint)puVar13[8] &&
             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))
        break;
        uVar2 = *puVar13;
        puVar1 = puVar13 + 9;
        uVar3 = puVar13[1];
        uVar4 = puVar13[2];
        uVar5 = puVar13[3];
        uVar6 = puVar13[4];
        uVar7 = puVar13[5];
        uVar8 = puVar13[6];
        uVar9 = puVar13[7];
        uVar10 = puVar13[8];
        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;
        puVar12 = puVar1;
        if (0 < (int)puVar13 - (int)param_1) {
          do {
            puVar12[-9] = puVar12[-0x12];
            puVar12[-8] = puVar12[-0x11];
            puVar12[-7] = puVar12[-0x10];
            puVar12[-6] = puVar12[-0xf];
            puVar12[-5] = puVar12[-0xe];
            puVar12[-4] = puVar12[-0xd];
            puVar12[-3] = puVar12[-0xc];
            puVar12[-2] = puVar12[-0xb];
            puVar12[-1] = puVar12[-10];
            iVar11 = iVar11 + -1;
            puVar12 = puVar12 + -9;
          } while (iVar11 != 0);
        }
        *param_1 = uVar2;
        param_1[1] = uVar3;
        param_1[2] = uVar4;
        param_1[3] = uVar5;
        param_1[4] = uVar6;
        param_1[5] = uVar7;
        param_1[6] = uVar8;
        param_1[7] = uVar9;
        param_1[8] = uVar10;
        puVar13 = puVar1;
        if (puVar1 == param_2) {
          return;
        }
      }
      FUN_00306940(puVar13,0);
    }
  }
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x3c
MOV EDI,dword ptr [ESP + 0x50]
MOV ESI,dword ptr [ESP + 0x54]
CMP EDI,ESI
JZ 0x00306b85
LEA EBX,[EDI + 0x24]
CMP EBX,ESI
JNZ 0x00306a83
JMP 0x00306b85
SUB ESP,0x8
LEA EBP,[EBX + 0x24]
PUSH 0x0
PUSH EBX
MOV EBX,EBP
CALL 0x00306940
ADD ESP,0x10
CMP EBP,ESI
JZ 0x00306b85
SUB ESP,0x8
PUSH EDI
PUSH EBX
CALL 0x002ff8d0
ADD ESP,0x10
TEST EAX,EAX
JS 0x00306aa4
JNZ 0x00306a68
MOV EAX,dword ptr [EBX + 0x20]
MOV EDX,dword ptr [EDI + 0x1c]
CMP dword ptr [EBX + 0x1c],EDX
SBB EAX,dword ptr [EDI + 0x20]
JNC 0x00306a68
MOV EAX,dword ptr [EBX]
LEA EBP,[EBX + 0x24]
MOV dword ptr [ESP + 0xc],EAX
MOV EAX,dword ptr [EBX + 0x4]
MOV dword ptr [ESP + 0x10],EAX
MOV EAX,dword ptr [EBX + 0x8]
MOV dword ptr [ESP + 0x14],EAX
MOV EAX,dword ptr [EBX + 0xc]
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [EBX + 0x10]
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [EBX + 0x14]
MOV dword ptr [ESP + 0x20],EAX
MOV EAX,dword ptr [EBX + 0x18]
MOV dword ptr [ESP + 0x24],EAX
MOV EAX,dword ptr [EBX + 0x1c]
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [EBX + 0x20]
SUB EBX,EDI
MOV EDX,EBX
SAR EDX,0x2
MOV dword ptr [ESP + 0x2c],EAX
MOV EAX,EBP
IMUL EDX,EDX,0x38e38e39
TEST EBX,EBX
JLE 0x00306b3d
LEA ESI,[ESI]
NOP
SUB EAX,0x24
MOV ECX,dword ptr [EAX + -0x24]
MOV dword ptr [EAX],ECX
MOV ECX,dword ptr [EAX + -0x20]
MOV dword ptr [EAX + 0x4],ECX
MOV ECX,dword ptr [EAX + -0x1c]
MOV dword ptr [EAX + 0x8],ECX
MOV ECX,dword ptr [EAX + -0x18]
MOV dword ptr [EAX + 0xc],ECX
MOV ECX,dword ptr [EAX + -0x14]
MOV dword ptr [EAX + 0x10],ECX
MOV ECX,dword ptr [EAX + -0x10]
MOV dword ptr [EAX + 0x14],ECX
MOV ECX,dword ptr [EAX + -0xc]
MOV dword ptr [EAX + 0x18],ECX
MOV ECX,dword ptr [EAX + -0x8]
MOV dword ptr [EAX + 0x1c],ECX
MOV ECX,dword ptr [EAX + -0x4]
MOV dword ptr [EAX + 0x20],ECX
SUB EDX,0x1
JNZ 0x00306b00
MOV EAX,dword ptr [ESP + 0xc]
MOV EBX,EBP
MOV dword ptr [EDI],EAX
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [EDI + 0x4],EAX
MOV EAX,dword ptr [ESP + 0x14]
MOV dword ptr [EDI + 0x8],EAX
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [EDI + 0xc],EAX
MOV EAX,dword ptr [ESP + 0x1c]
MOV dword ptr [EDI + 0x10],EAX
MOV EAX,dword ptr [ESP + 0x20]
MOV dword ptr [EDI + 0x14],EAX
MOV EAX,dword ptr [ESP + 0x24]
MOV dword ptr [EDI + 0x18],EAX
MOV EAX,dword ptr [ESP + 0x28]
MOV dword ptr [EDI + 0x1c],EAX
MOV EAX,dword ptr [ESP + 0x2c]
MOV dword ptr [EDI + 0x20],EAX
CMP EBP,ESI
JNZ 0x00306a83
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "void FUN_00306a40(undefined4 *param_1,undefined4 *param_2)\n\n{\n  undefined4 *puVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  undefined4 *puVar13;\n  \n  if (param_1 != param_2) {\n    for (puVar13 = param_1 + 9; puVar13 != param_2; puVar13 = puVar13 + 9) {\n      while( true ) {\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }\n      FUN_00306940(puVar13,0);\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_00306a40(undefined4 *param_1,undefined4 *param_2)\n\n{\n  undefined4 *puVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  undefined4 *puVar13;\n  \n  if (param_1 != param_2) {\n    for (puVar13 = param_1 + 9; puVar13 != param_2; puVar13 = puVar13 + 9) {\n      while( true ) {\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }\n      FUN_00306940(puVar13,0);\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00306a40(undefined4 *param_1,undefined4 *param_2)" identifier (parameter_list "(undefined4 *param_1,undefined4 *param_2)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  undefined4 *puVar13;\n  \n  if (param_1 != param_2) {\n    for (puVar13 = param_1 + 9; puVar13 != param_2; puVar13 = puVar13 + 9) {\n      while( true ) {\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }\n      FUN_00306940(puVar13,0);\n    }\n  }\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined4 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (if_statement "if (param_1 != param_2) {\n    for (puVar13 = param_1 + 9; puVar13 != param_2; puVar13 = puVar13 + 9) {\n      while( true ) {\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }\n      FUN_00306940(puVar13,0);\n    }\n  }" if (parenthesized_expression "(param_1 != param_2)" ( (binary_expression "param_1 != param_2" identifier != identifier) )) (compound_statement "{\n    for (puVar13 = param_1 + 9; puVar13 != param_2; puVar13 = puVar13 + 9) {\n      while( true ) {\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }\n      FUN_00306940(puVar13,0);\n    }\n  }" { (for_statement "for (puVar13 = param_1 + 9; puVar13 != param_2; puVar13 = puVar13 + 9) {\n      while( true ) {\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }\n      FUN_00306940(puVar13,0);\n    }" for ( (assignment_expression "puVar13 = param_1 + 9" identifier = (binary_expression "param_1 + 9" identifier + number_literal)) ; (binary_expression "puVar13 != param_2" identifier != identifier) ; (assignment_expression "puVar13 = puVar13 + 9" identifier = (binary_expression "puVar13 + 9" identifier + number_literal)) ) (compound_statement "{\n      while( true ) {\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }\n      FUN_00306940(puVar13,0);\n    }" { (while_statement "while( true ) {\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }" { (expression_statement "iVar11 = FUN_002ff8d0(puVar13,param_1);" (assignment_expression "iVar11 = FUN_002ff8d0(puVar13,param_1)" identifier = (call_expression "FUN_002ff8d0(puVar13,param_1)" identifier (argument_list "(puVar13,param_1)" ( identifier , identifier )))) ;) (if_statement "if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;" if (parenthesized_expression "((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))" ( (binary_expression "(-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8]))))" (parenthesized_expression "(-1 < iVar11)" ( (binary_expression "-1 < iVar11" number_literal < identifier) )) && (parenthesized_expression "((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8]))))" ( (parenthesized_expression "(iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))" ( (binary_expression "iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8]))" (binary_expression "iVar11 != 0" identifier != number_literal) || (parenthesized_expression "((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8]))" ( (binary_expression "(uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])" (binary_expression "(uint)param_1[8] <= (uint)puVar13[8]" (cast_expression "(uint)param_1[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[8]" identifier [ number_literal ])) <= (cast_expression "(uint)puVar13[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar13[8]" identifier [ number_literal ]))) && (binary_expression "(uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])" (call_expression "(uint)((uint)puVar13[7] < (uint)param_1[7])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)puVar13[7] < (uint)param_1[7])" ( (binary_expression "(uint)puVar13[7] < (uint)param_1[7]" (cast_expression "(uint)puVar13[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar13[7]" identifier [ number_literal ])) < (cast_expression "(uint)param_1[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[7]" identifier [ number_literal ]))) ))) <= (call_expression "(uint)(puVar13[8] - param_1[8])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar13[8] - param_1[8])" ( (binary_expression "puVar13[8] - param_1[8]" (subscript_expression "puVar13[8]" identifier [ number_literal ]) - (subscript_expression "param_1[8]" identifier [ number_literal ])) ))))) ))) )) ))) )) (break_statement "break;" break ;)) (expression_statement "uVar2 = *puVar13;" (assignment_expression "uVar2 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar1 = puVar13 + 9;" (assignment_expression "puVar1 = puVar13 + 9" identifier = (binary_expression "puVar13 + 9" identifier + number_literal)) ;) (expression_statement "uVar3 = puVar13[1];" (assignment_expression "uVar3 = puVar13[1]" identifier = (subscript_expression "puVar13[1]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = puVar13[2];" (assignment_expression "uVar4 = puVar13[2]" identifier = (subscript_expression "puVar13[2]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = puVar13[3];" (assignment_expression "uVar5 = puVar13[3]" identifier = (subscript_expression "puVar13[3]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = puVar13[4];" (assignment_expression "uVar6 = puVar13[4]" identifier = (subscript_expression "puVar13[4]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = puVar13[5];" (assignment_expression "uVar7 = puVar13[5]" identifier = (subscript_expression "puVar13[5]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = puVar13[6];" (assignment_expression "uVar8 = puVar13[6]" identifier = (subscript_expression "puVar13[6]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = puVar13[7];" (assignment_expression "uVar9 = puVar13[7]" identifier = (subscript_expression "puVar13[7]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = puVar13[8];" (assignment_expression "uVar10 = puVar13[8]" identifier = (subscript_expression "puVar13[8]" identifier [ number_literal ])) ;) (expression_statement "iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;" (assignment_expression "iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39" identifier = (binary_expression "((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39" (parenthesized_expression "((int)puVar13 - (int)param_1 >> 2)" ( (binary_expression "(int)puVar13 - (int)param_1 >> 2" (binary_expression "(int)puVar13 - (int)param_1" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) * number_literal)) ;) (expression_statement "puVar12 = puVar1;" (assignment_expression "puVar12 = puVar1" identifier = identifier) ;) (if_statement "if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }" if (parenthesized_expression "(0 < (int)puVar13 - (int)param_1)" ( (binary_expression "0 < (int)puVar13 - (int)param_1" number_literal < (binary_expression "(int)puVar13 - (int)param_1" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }" { (do_statement "do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);" do (compound_statement "{\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          }" { (expression_statement "puVar12[-9] = puVar12[-0x12];" (assignment_expression "puVar12[-9] = puVar12[-0x12]" (subscript_expression "puVar12[-9]" identifier [ number_literal ]) = (subscript_expression "puVar12[-0x12]" identifier [ number_literal ])) ;) (expression_statement "puVar12[-8] = puVar12[-0x11];" (assignment_expression "puVar12[-8] = puVar12[-0x11]" (subscript_expression "puVar12[-8]" identifier [ number_literal ]) = (subscript_expression "puVar12[-0x11]" identifier [ number_literal ])) ;) (expression_statement "puVar12[-7] = puVar12[-0x10];" (assignment_expression "puVar12[-7] = puVar12[-0x10]" (subscript_expression "puVar12[-7]" identifier [ number_literal ]) = (subscript_expression "puVar12[-0x10]" identifier [ number_literal ])) ;) (expression_statement "puVar12[-6] = puVar12[-0xf];" (assignment_expression "puVar12[-6] = puVar12[-0xf]" (subscript_expression "puVar12[-6]" identifier [ number_literal ]) = (subscript_expression "puVar12[-0xf]" identifier [ number_literal ])) ;) (expression_statement "puVar12[-5] = puVar12[-0xe];" (assignment_expression "puVar12[-5] = puVar12[-0xe]" (subscript_expression "puVar12[-5]" identifier [ number_literal ]) = (subscript_expression "puVar12[-0xe]" identifier [ number_literal ])) ;) (expression_statement "puVar12[-4] = puVar12[-0xd];" (assignment_expression "puVar12[-4] = puVar12[-0xd]" (subscript_expression "puVar12[-4]" identifier [ number_literal ]) = (subscript_expression "puVar12[-0xd]" identifier [ number_literal ])) ;) (expression_statement "puVar12[-3] = puVar12[-0xc];" (assignment_expression "puVar12[-3] = puVar12[-0xc]" (subscript_expression "puVar12[-3]" identifier [ number_literal ]) = (subscript_expression "puVar12[-0xc]" identifier [ number_literal ])) ;) (expression_statement "puVar12[-2] = puVar12[-0xb];" (assignment_expression "puVar12[-2] = puVar12[-0xb]" (subscript_expression "puVar12[-2]" identifier [ number_literal ]) = (subscript_expression "puVar12[-0xb]" identifier [ number_literal ])) ;) (expression_statement "puVar12[-1] = puVar12[-10];" (assignment_expression "puVar12[-1] = puVar12[-10]" (subscript_expression "puVar12[-1]" identifier [ number_literal ]) = (subscript_expression "puVar12[-10]" identifier [ number_literal ])) ;) (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (expression_statement "puVar12 = puVar12 + -9;" (assignment_expression "puVar12 = puVar12 + -9" identifier = (binary_expression "puVar12 + -9" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) ;) })) (expression_statement "*param_1 = uVar2;" (assignment_expression "*param_1 = uVar2" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = uVar3;" (assignment_expression "param_1[1] = uVar3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = uVar4;" (assignment_expression "param_1[2] = uVar4" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[3] = uVar5;" (assignment_expression "param_1[3] = uVar5" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[4] = uVar6;" (assignment_expression "param_1[4] = uVar6" (subscript_expression "param_1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[5] = uVar7;" (assignment_expression "param_1[5] = uVar7" (subscript_expression "param_1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[6] = uVar8;" (assignment_expression "param_1[6] = uVar8" (subscript_expression "param_1[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[7] = uVar9;" (assignment_expression "param_1[7] = uVar9" (subscript_expression "param_1[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[8] = uVar10;" (assignment_expression "param_1[8] = uVar10" (subscript_expression "param_1[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13 = puVar1;" (assignment_expression "puVar13 = puVar1" identifier = identifier) ;) (if_statement "if (puVar1 == param_2) {\n          return;\n        }" if (parenthesized_expression "(puVar1 == param_2)" ( (binary_expression "puVar1 == param_2" identifier == identifier) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) })) (expression_statement "FUN_00306940(puVar13,0);" (call_expression "FUN_00306940(puVar13,0)" identifier (argument_list "(puVar13,0)" ( identifier , number_literal ))) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* DWARF original name: __insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_reloc<4, true,\n   64, true>*, std::vector<gold::Output_reloc<4, true, 64, true>,\n   std::allocator<gold::Output_reloc<4, true, 64, true> > > >,\n   __gnu_cxx::__ops::_Iter_comp_iter<gold::Output_data_reloc_base<4, true, 64,\n   true>::Sort_relocs_comparison> > */\n\nvoid std::\n     __insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_reloc<4,_true,_64,_true>*,_std::vector<gold::Output_reloc<4,_true,_64,_true>,_std::allocator<gold::Output_reloc<4,_true,_64,_true>_>_>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Output_data_reloc_base<4,_true,_64,_true>::Sort_relocs_comparison>_>\n               (Output_reloc<9,_true,_64,_true> *__first,Output_reloc<9,_true,_64,_true> *__last)\n\n{\n  Address *pAVar1;\n  anon_union_4_4_c82d8563_for_u1_ aVar2;\n  anon_union_4_2_238bdeaa_for_u2_ aVar3;\n  undefined4 uVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  anon_union_4_4_c82d8563_for_u1_ aVar8;\n  anon_union_4_2_238bdeaa_for_u2_ aVar9;\n  Output_reloc<9,_true,_64,_true> *pOVar10;\n  Address AVar11;\n  int iVar12;\n  Address *pAVar13;\n  Output_reloc<9,_true,_64,_true> *this;\n  value_type __val;\n  \n  if (__first != __last) {\n    pOVar10 = __first + 1;\n    while (this = (Output_reloc<9,_true,_64,_true> *)&pOVar10->address_,\n          (Output_reloc<9,_true,_64,_true> *)&pOVar10->address_ != __last) {\n      while( true ) {\n        iVar12 = gold::Output_reloc<9,_true,_64,_true>::compare(this,__first);\n        if ((-1 < iVar12) &&\n           ((iVar12 != 0 ||\n            (__first[1].u2_.relobj <= this[1].u2_.relobj &&\n             (uint)(this[1].u1_.relobj < __first[1].u1_.relobj) <=\n             (uint)((int)this[1].u2_.relobj - (int)__first[1].u2_.relobj))))) break;\n        aVar2 = this->u1_;\n        pAVar1 = &this[1].address_;\n        aVar3 = this->u2_;\n        AVar11 = this->address_;\n        uVar4 = *(undefined4 *)((int)&this->address_ + 4);\n        uVar5 = this->local_sym_index_;\n        uVar6 = *(undefined4 *)&this->field_0x14;\n        uVar7 = this->shndx_;\n        aVar8 = this[1].u1_;\n        aVar9 = this[1].u2_;\n        iVar12 = ((int)this - (int)__first >> 2) * 0x38e38e39;\n        pAVar13 = pAVar1;\n        if (0 < (int)this - (int)__first) {\n          do {\n            *(undefined4 *)((int)pAVar13 + -0x24) = *(undefined4 *)(pAVar13 + -9);\n            *(undefined4 *)(pAVar13 + -4) = *(undefined4 *)((int)pAVar13 + -0x44);\n            *(undefined4 *)((int)pAVar13 + -0x1c) = *(undefined4 *)(pAVar13 + -8);\n            *(undefined4 *)(pAVar13 + -3) = *(undefined4 *)((int)pAVar13 + -0x3c);\n            *(undefined4 *)((int)pAVar13 + -0x14) = *(undefined4 *)(pAVar13 + -7);\n            *(undefined4 *)(pAVar13 + -2) = *(undefined4 *)((int)pAVar13 + -0x34);\n            *(undefined4 *)((int)pAVar13 + -0xc) = *(undefined4 *)(pAVar13 + -6);\n            ((Output_reloc<9,_true,_64,_true> *)(pAVar13 + -1))->u1_ =\n                 *(anon_union_4_4_c82d8563_for_u1_ *)((int)pAVar13 + -0x2c);\n            *(anon_union_4_2_238bdeaa_for_u2_ *)((int)pAVar13 + -4) =\n                 *(anon_union_4_2_238bdeaa_for_u2_ *)(pAVar13 + -5);\n            iVar12 = iVar12 + -1;\n            pAVar13 = (Address *)((int)pAVar13 + -0x24);\n          } while (iVar12 != 0);\n        }\n        __first->u1_ = aVar2;\n        __first->u2_ = aVar3;\n        *(int *)&__first->address_ = (int)AVar11;\n        *(undefined4 *)((int)&__first->address_ + 4) = uVar4;\n        __first->local_sym_index_ = uVar5;\n        *(undefined4 *)&__first->field_0x14 = uVar6;\n        __first->shndx_ = uVar7;\n        __first[1].u1_ = aVar8;\n        __first[1].u2_ = aVar9;\n        this = (Output_reloc<9,_true,_64,_true> *)pAVar1;\n        if ((Output_reloc<9,_true,_64,_true> *)pAVar1 == __last) {\n          return;\n        }\n      }\n      __unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold::Output_reloc<4,_true,_64,_true>*,_std::vector<gold::Output_reloc<4,_true,_64,_true>,_std::allocator<gold::Output_reloc<4,_true,_64,_true>_>_>_>,___gnu_cxx::__ops::_Val_comp_iter<gold::Output_data_reloc_base<4,_true,_64,_true>::Sort_relocs_comparison>_>\n                (this,0);\n      pOVar10 = this + 1;\n    }\n  }\n  return;\n}\n\n" comment comment (declaration "void std::\n     __insertion_sort<__gnu_cxx::__normal_iterator<gold::Output_reloc<4,_true,_64,_true>*,_std::vector<gold::Output_reloc<4,_true,_64,_true>,_std::allocator<gold::Output_reloc<4,_true,_64,_true>_>_>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Output_data_reloc_base<4,_true,_64,_true>::Sort_relocs_comparison>_>\n               (Output_reloc<9,_true,_64,_true> *__first,Output_reloc<9,_true,_64,_true> *__last)\n\n{\n  Address *pAVar1;" primitive_type (ERROR "std::\n     __insertion_sort<__gnu_cxx::__normal_iterator<gold::" identifier : : identifier < identifier : : identifier < identifier : :) identifier (ERROR "<4" < number_literal) , identifier , identifier , identifier (ERROR ">*" > *) , (ERROR "_std::vector<gold::" identifier : : identifier < identifier : :) identifier (ERROR "<4" < number_literal) , identifier , identifier , identifier (ERROR ">" >) , (ERROR "_std::allocator<gold::" identifier : : identifier < identifier : :) identifier (ERROR "<4" < number_literal) , identifier , identifier , identifier (ERROR ">_>_>_>" > identifier > identifier > identifier >) , (ERROR "___gnu_cxx::__ops::_Iter_comp_iter<gold::" identifier : : identifier : : identifier < identifier : :) identifier (ERROR "<4" < number_literal) , identifier , identifier , (ERROR "_true>::Sort_relocs_comparison>_>\n               (Output_reloc<9,_true,_64,_true> *__first,Output_reloc<9,_true,_64,_true> *__last)\n\n{\n  Address" identifier > : : identifier > (function_declarator "_>\n               (Output_reloc<9,_true,_64,_true> *__first,Output_reloc<9,_true,_64,_true> *__last)" identifier (ERROR ">" >) (parameter_list "(Output_reloc<9,_true,_64,_true> *__first,Output_reloc<9,_true,_64,_true> *__last)" ( (parameter_declaration "Output_reloc" type_identifier) (ERROR "<9" < number_literal) , (parameter_declaration "_true" type_identifier) , (parameter_declaration "_64" type_identifier) , (parameter_declaration "_true> *__first" type_identifier (ERROR ">" >) (pointer_declarator "*__first" * identifier)) , (parameter_declaration "Output_reloc" type_identifier) (ERROR "<9" < number_literal) , (parameter_declaration "_true" type_identifier) , (parameter_declaration "_64" type_identifier) , (parameter_declaration "_true> *__last" type_identifier (ERROR ">" >) (pointer_declarator "*__last" * identifier)) ))) { identifier) (pointer_declarator "*pAVar1" * identifier) ;) (declaration "anon_union_4_4_c82d8563_for_u1_ aVar2;" type_identifier identifier ;) (declaration "anon_union_4_2_238bdeaa_for_u2_ aVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "anon_union_4_4_c82d8563_for_u1_ aVar8;" type_identifier identifier ;) (declaration "anon_union_4_2_238bdeaa_for_u2_ aVar9;" type_identifier identifier ;) (expression_statement "Output_reloc<9,_true,_64,_true> *pOVar10;" (update_expression "Output_reloc<9,_true,_64,_true> *pOVar10" (binary_expression "Output_reloc<9,_true,_64,_true> *pOVar10" (binary_expression "Output_reloc<9" identifier < number_literal) (ERROR ",_true,_64,_true" , identifier , identifier , identifier) > (pointer_expression "*pOVar10" * identifier)) --) ;) (declaration "Address AVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "Address *pAVar13;" type_identifier (pointer_declarator "*pAVar13" * identifier) ;) (expression_statement "Output_reloc<9,_true,_64,_true> *this;" (update_expression "Output_reloc<9,_true,_64,_true> *this" (binary_expression "Output_reloc<9,_true,_64,_true> *this" (binary_expression "Output_reloc<9" identifier < number_literal) (ERROR ",_true,_64,_true" , identifier , identifier , identifier) > (pointer_expression "*this" * identifier)) --) ;) (declaration "value_type __val;" type_identifier identifier ;) (if_statement "if (__first != __last) {\n    pOVar10 = __first + 1;\n    while (this = (Output_reloc<9,_true,_64,_true> *)&pOVar10->address_,\n          (Output_reloc<9,_true,_64,_true> *)&pOVar10->address_ != __last) {\n      while( true ) {\n        iVar12 = gold::Output_reloc<9,_true,_64,_true>::compare(this,__first);\n        if ((-1 < iVar12) &&\n           ((iVar12 != 0 ||\n            (__first[1].u2_.relobj <= this[1].u2_.relobj &&\n             (uint)(this[1].u1_.relobj < __first[1].u1_.relobj) <=\n             (uint)((int)this[1].u2_.relobj - (int)__first[1].u2_.relobj))))) break;\n        aVar2 = this->u1_;\n        pAVar1 = &this[1].address_;\n        aVar3 = this->u2_;\n        AVar11 = this->address_;\n        uVar4 = *(undefined4 *)((int)&this->address_ + 4);\n        uVar5 = this->local_sym_index_;\n        uVar6 = *(undefined4 *)&this->field_0x14;\n        uVar7 = this->shndx_;\n        aVar8 = this[1].u1_;\n        aVar9 = this[1].u2_;\n        iVar12 = ((int)this - (int)__first >> 2) * 0x38e38e39;\n        pAVar13 = pAVar1;\n        if (0 < (int)this - (int)__first) {\n          do {\n            *(undefined4 *)((int)pAVar13 + -0x24) = *(undefined4 *)(pAVar13 + -9);\n            *(undefined4 *)(pAVar13 + -4) = *(undefined4 *)((int)pAVar13 + -0x44);\n            *(undefined4 *)((int)pAVar13 + -0x1c) = *(undefined4 *)(pAVar13 + -8);\n            *(undefined4 *)(pAVar13 + -3) = *(undefined4 *)((int)pAVar13 + -0x3c);\n            *(undefined4 *)((int)pAVar13 + -0x14) = *(undefined4 *)(pAVar13 + -7);\n            *(undefined4 *)(pAVar13 + -2) = *(undefined4 *)((int)pAVar13 + -0x34);\n            *(undefined4 *)((int)pAVar13 + -0xc) = *(undefined4 *)(pAVar13 + -6);\n            ((Output_reloc<9,_true,_64,_true> *)(pAVar13 + -1))->u1_ =\n                 *(anon_union_4_4_c82d8563_for_u1_ *)((int)pAVar13 + -0x2c);\n            *(anon_union_4_2_238bdeaa_for_u2_ *)((int)pAVar13 + -4) =\n                 *(anon_union_4_2_238bdeaa_for_u2_ *)(pAVar13 + -5);\n            iVar12 = iVar12 + -1;\n            pAVar13 = (Address *)((int)pAVar13 + -0x24);\n          } while (iVar12 != 0);\n        }\n        __first->u1_ = aVar2;\n        __first->u2_ = aVar3;\n        *(int *)&__first->address_ = (int)AVar11;\n        *(undefined4 *)((int)&__first->address_ + 4) = uVar4;\n        __first->local_sym_index_ = uVar5;\n        *(undefined4 *)&__first->field_0x14 = uVar6;\n        __first->shndx_ = uVar7;\n        __first[1].u1_ = aVar8;\n        __first[1].u2_ = aVar9;\n        this = (Output_reloc<9,_true,_64,_true> *)pAVar1;\n        if ((Output_reloc<9,_true,_64,_true> *)pAVar1 == __last) {\n          return;\n        }\n      }\n      __unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold::Output_reloc<4,_true,_64,_true>*,_std::vector<gold::Output_reloc<4,_true,_64,_true>,_std::allocator<gold::Output_reloc<4,_true,_64,_true>_>_>_>,___gnu_cxx::__ops::_Val_comp_iter<gold::Output_data_reloc_base<4,_true,_64,_true>::Sort_relocs_comparison>_>\n                (this,0);\n      pOVar10 = this + 1;\n    }\n  }\n  return;\n}" if (parenthesized_expression "(__first != __last)" ( (binary_expression "__first != __last" identifier != identifier) )) (compound_statement "{\n    pOVar10 = __first + 1;\n    while (this = (Output_reloc<9,_true,_64,_true> *)&pOVar10->address_,\n          (Output_reloc<9,_true,_64,_true> *)&pOVar10->address_ != __last) {\n      while( true ) {\n        iVar12 = gold::Output_reloc<9,_true,_64,_true>::compare(this,__first);\n        if ((-1 < iVar12) &&\n           ((iVar12 != 0 ||\n            (__first[1].u2_.relobj <= this[1].u2_.relobj &&\n             (uint)(this[1].u1_.relobj < __first[1].u1_.relobj) <=\n             (uint)((int)this[1].u2_.relobj - (int)__first[1].u2_.relobj))))) break;\n        aVar2 = this->u1_;\n        pAVar1 = &this[1].address_;\n        aVar3 = this->u2_;\n        AVar11 = this->address_;\n        uVar4 = *(undefined4 *)((int)&this->address_ + 4);\n        uVar5 = this->local_sym_index_;\n        uVar6 = *(undefined4 *)&this->field_0x14;\n        uVar7 = this->shndx_;\n        aVar8 = this[1].u1_;\n        aVar9 = this[1].u2_;\n        iVar12 = ((int)this - (int)__first >> 2) * 0x38e38e39;\n        pAVar13 = pAVar1;\n        if (0 < (int)this - (int)__first) {\n          do {\n            *(undefined4 *)((int)pAVar13 + -0x24) = *(undefined4 *)(pAVar13 + -9);\n            *(undefined4 *)(pAVar13 + -4) = *(undefined4 *)((int)pAVar13 + -0x44);\n            *(undefined4 *)((int)pAVar13 + -0x1c) = *(undefined4 *)(pAVar13 + -8);\n            *(undefined4 *)(pAVar13 + -3) = *(undefined4 *)((int)pAVar13 + -0x3c);\n            *(undefined4 *)((int)pAVar13 + -0x14) = *(undefined4 *)(pAVar13 + -7);\n            *(undefined4 *)(pAVar13 + -2) = *(undefined4 *)((int)pAVar13 + -0x34);\n            *(undefined4 *)((int)pAVar13 + -0xc) = *(undefined4 *)(pAVar13 + -6);\n            ((Output_reloc<9,_true,_64,_true> *)(pAVar13 + -1))->u1_ =\n                 *(anon_union_4_4_c82d8563_for_u1_ *)((int)pAVar13 + -0x2c);\n            *(anon_union_4_2_238bdeaa_for_u2_ *)((int)pAVar13 + -4) =\n                 *(anon_union_4_2_238bdeaa_for_u2_ *)(pAVar13 + -5);\n            iVar12 = iVar12 + -1;\n            pAVar13 = (Address *)((int)pAVar13 + -0x24);\n          } while (iVar12 != 0);\n        }\n        __first->u1_ = aVar2;\n        __first->u2_ = aVar3;\n        *(int *)&__first->address_ = (int)AVar11;\n        *(undefined4 *)((int)&__first->address_ + 4) = uVar4;\n        __first->local_sym_index_ = uVar5;\n        *(undefined4 *)&__first->field_0x14 = uVar6;\n        __first->shndx_ = uVar7;\n        __first[1].u1_ = aVar8;\n        __first[1].u2_ = aVar9;\n        this = (Output_reloc<9,_true,_64,_true> *)pAVar1;\n        if ((Output_reloc<9,_true,_64,_true> *)pAVar1 == __last) {\n          return;\n        }\n      }\n      __unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold::Output_reloc<4,_true,_64,_true>*,_std::vector<gold::Output_reloc<4,_true,_64,_true>,_std::allocator<gold::Output_reloc<4,_true,_64,_true>_>_>_>,___gnu_cxx::__ops::_Val_comp_iter<gold::Output_data_reloc_base<4,_true,_64,_true>::Sort_relocs_comparison>_>\n                (this,0);\n      pOVar10 = this + 1;\n    }\n  }\n  return;\n}" { (expression_statement "pOVar10 = __first + 1;" (assignment_expression "pOVar10 = __first + 1" identifier = (binary_expression "__first + 1" identifier + number_literal)) ;) (ERROR "while (this = (Output_reloc<9,_true,_64,_true> *)&pOVar10->address_,\n          (Output_reloc<9,_true,_64,_true> *)&pOVar10->address_ != __last) {\n      while( true ) {\n        iVar12 = gold::Output_reloc<9,_true,_64,_true>::compare(this,__first);\n        if ((-1 < iVar12) &&\n           ((iVar12 != 0 ||\n            (__first[1].u2_.relobj <= this[1].u2_.relobj &&\n             (uint)(this[1].u1_.relobj < __first[1].u1_.relobj) <=\n             (uint)((int)this[1].u2_.relobj - (int)__first[1].u2_.relobj))))) break;\n        aVar2 = this->u1_;\n        pAVar1 = &this[1].address_;\n        aVar3 = this->u2_;\n        AVar11 = this->address_;\n        uVar4 = *(undefined4 *)((int)&this->address_ + 4);\n        uVar5 = this->local_sym_index_;\n        uVar6 = *(undefined4 *)&this->field_0x14;\n        uVar7 = this->shndx_;\n        aVar8 = this[1].u1_;\n        aVar9 = this[1].u2_;\n        iVar12 = ((int)this - (int)__first >> 2) * 0x38e38e39;\n        pAVar13 = pAVar1;\n        if (0 < (int)this - (int)__first) {\n          do {\n            *(undefined4 *)((int)pAVar13 + -0x24) = *(undefined4 *)(pAVar13 + -9);\n            *(undefined4 *)(pAVar13 + -4) = *(undefined4 *)((int)pAVar13 + -0x44);\n            *(undefined4 *)((int)pAVar13 + -0x1c) = *(undefined4 *)(pAVar13 + -8);\n            *(undefined4 *)(pAVar13 + -3) = *(undefined4 *)((int)pAVar13 + -0x3c);\n            *(undefined4 *)((int)pAVar13 + -0x14) = *(undefined4 *)(pAVar13 + -7);\n            *(undefined4 *)(pAVar13 + -2) = *(undefined4 *)((int)pAVar13 + -0x34);\n            *(undefined4 *)((int)pAVar13 + -0xc) = *(undefined4 *)(pAVar13 + -6);\n            ((Output_reloc<9,_true,_64,_true> *)(pAVar13 + -1))->u1_ =\n                 *(anon_union_4_4_c82d8563_for_u1_ *)((int)pAVar13 + -0x2c);\n            *(anon_union_4_2_238bdeaa_for_u2_ *)((int)pAVar13 + -4) =\n                 *(anon_union_4_2_238bdeaa_for_u2_ *)(pAVar13 + -5);\n            iVar12 = iVar12 + -1;\n            pAVar13 = (Address *)((int)pAVar13 + -0x24);\n          } while (iVar12 != 0);\n        }\n        __first->u1_ = aVar2;\n        __first->u2_ = aVar3;\n        *(int *)&__first->address_ = (int)AVar11;\n        *(undefined4 *)((int)&__first->address_ + 4) = uVar4;\n        __first->local_sym_index_ = uVar5;\n        *(undefined4 *)&__first->field_0x14 = uVar6;\n        __first->shndx_ = uVar7;\n        __first[1].u1_ = aVar8;\n        __first[1].u2_ = aVar9;\n        this = (Output_reloc<9,_true,_64,_true> *)pAVar1;\n        if ((Output_reloc<9,_true,_64,_true> *)pAVar1 == __last) {\n          return;\n        }\n      }\n      __unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold::Output_reloc<4,_true,_64,_true>*,_std::vector<gold::Output_reloc<4,_true,_64,_true>,_std::allocator<gold::Output_reloc<4,_true,_64,_true>_>_>_>,___gnu_cxx::__ops::_Val_comp_iter<gold::Output_data_reloc_base<4,_true,_64,_true>::Sort_relocs_comparison>_>\n                (this,0);\n      pOVar10 = this + 1;\n    }\n  }" while ( identifier = ( (ERROR "Output_reloc<9,_true,_64,_true> *)&pOVar10->address_,\n          (Output_reloc<9,_true,_64,_true> *)&pOVar10->address_ != __last)" (comma_expression "Output_reloc<9,_true,_64,_true> *)&pOVar10->address_,\n          (Output_reloc<9,_true,_64,_true> *)&pOVar10->address_ != __last)" (binary_expression "Output_reloc<9" identifier < number_literal) , (comma_expression "_true,_64,_true> *)&pOVar10->address_,\n          (Output_reloc<9,_true,_64,_true> *)&pOVar10->address_ != __last)" identifier , (comma_expression "_64,_true> *)&pOVar10->address_,\n          (Output_reloc<9,_true,_64,_true> *)&pOVar10->address_ != __last)" identifier , (comma_expression "_true> *)&pOVar10->address_,\n          (Output_reloc<9,_true,_64,_true> *)&pOVar10->address_ != __last)" (binary_expression "_true> *)&pOVar10->address_" identifier > (pointer_expression "*)&pOVar10->address_" * (ERROR ")" )) (pointer_expression "&pOVar10->address_" & (field_expression "pOVar10->address_" identifier -> field_identifier)))) , (parenthesized_expression "(Output_reloc<9,_true,_64,_true> *)&pOVar10->address_ != __last)" ( (comma_expression "Output_reloc<9,_true,_64,_true> *)&pOVar10->address_ != __last" (binary_expression "Output_reloc<9" identifier < number_literal) , (comma_expression "_true,_64,_true> *)&pOVar10->address_ != __last" identifier , (comma_expression "_64,_true> *)&pOVar10->address_ != __last" identifier , (binary_expression "_true> *)&pOVar10->address_ != __last" (binary_expression "_true> *)&pOVar10->address_" identifier > (pointer_expression "*)&pOVar10->address_" * (ERROR ")" )) (pointer_expression "&pOVar10->address_" & (field_expression "pOVar10->address_" identifier -> field_identifier)))) != identifier)))) ))))))) (compound_statement "{\n      while( true ) {\n        iVar12 = gold::Output_reloc<9,_true,_64,_true>::compare(this,__first);\n        if ((-1 < iVar12) &&\n           ((iVar12 != 0 ||\n            (__first[1].u2_.relobj <= this[1].u2_.relobj &&\n             (uint)(this[1].u1_.relobj < __first[1].u1_.relobj) <=\n             (uint)((int)this[1].u2_.relobj - (int)__first[1].u2_.relobj))))) break;\n        aVar2 = this->u1_;\n        pAVar1 = &this[1].address_;\n        aVar3 = this->u2_;\n        AVar11 = this->address_;\n        uVar4 = *(undefined4 *)((int)&this->address_ + 4);\n        uVar5 = this->local_sym_index_;\n        uVar6 = *(undefined4 *)&this->field_0x14;\n        uVar7 = this->shndx_;\n        aVar8 = this[1].u1_;\n        aVar9 = this[1].u2_;\n        iVar12 = ((int)this - (int)__first >> 2) * 0x38e38e39;\n        pAVar13 = pAVar1;\n        if (0 < (int)this - (int)__first) {\n          do {\n            *(undefined4 *)((int)pAVar13 + -0x24) = *(undefined4 *)(pAVar13 + -9);\n            *(undefined4 *)(pAVar13 + -4) = *(undefined4 *)((int)pAVar13 + -0x44);\n            *(undefined4 *)((int)pAVar13 + -0x1c) = *(undefined4 *)(pAVar13 + -8);\n            *(undefined4 *)(pAVar13 + -3) = *(undefined4 *)((int)pAVar13 + -0x3c);\n            *(undefined4 *)((int)pAVar13 + -0x14) = *(undefined4 *)(pAVar13 + -7);\n            *(undefined4 *)(pAVar13 + -2) = *(undefined4 *)((int)pAVar13 + -0x34);\n            *(undefined4 *)((int)pAVar13 + -0xc) = *(undefined4 *)(pAVar13 + -6);\n            ((Output_reloc<9,_true,_64,_true> *)(pAVar13 + -1))->u1_ =\n                 *(anon_union_4_4_c82d8563_for_u1_ *)((int)pAVar13 + -0x2c);\n            *(anon_union_4_2_238bdeaa_for_u2_ *)((int)pAVar13 + -4) =\n                 *(anon_union_4_2_238bdeaa_for_u2_ *)(pAVar13 + -5);\n            iVar12 = iVar12 + -1;\n            pAVar13 = (Address *)((int)pAVar13 + -0x24);\n          } while (iVar12 != 0);\n        }\n        __first->u1_ = aVar2;\n        __first->u2_ = aVar3;\n        *(int *)&__first->address_ = (int)AVar11;\n        *(undefined4 *)((int)&__first->address_ + 4) = uVar4;\n        __first->local_sym_index_ = uVar5;\n        *(undefined4 *)&__first->field_0x14 = uVar6;\n        __first->shndx_ = uVar7;\n        __first[1].u1_ = aVar8;\n        __first[1].u2_ = aVar9;\n        this = (Output_reloc<9,_true,_64,_true> *)pAVar1;\n        if ((Output_reloc<9,_true,_64,_true> *)pAVar1 == __last) {\n          return;\n        }\n      }\n      __unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold::Output_reloc<4,_true,_64,_true>*,_std::vector<gold::Output_reloc<4,_true,_64,_true>,_std::allocator<gold::Output_reloc<4,_true,_64,_true>_>_>_>,___gnu_cxx::__ops::_Val_comp_iter<gold::Output_data_reloc_base<4,_true,_64,_true>::Sort_relocs_comparison>_>\n                (this,0);\n      pOVar10 = this + 1;\n    }" { (while_statement "while( true ) {\n        iVar12 = gold::Output_reloc<9,_true,_64,_true>::compare(this,__first);\n        if ((-1 < iVar12) &&\n           ((iVar12 != 0 ||\n            (__first[1].u2_.relobj <= this[1].u2_.relobj &&\n             (uint)(this[1].u1_.relobj < __first[1].u1_.relobj) <=\n             (uint)((int)this[1].u2_.relobj - (int)__first[1].u2_.relobj))))) break;\n        aVar2 = this->u1_;\n        pAVar1 = &this[1].address_;\n        aVar3 = this->u2_;\n        AVar11 = this->address_;\n        uVar4 = *(undefined4 *)((int)&this->address_ + 4);\n        uVar5 = this->local_sym_index_;\n        uVar6 = *(undefined4 *)&this->field_0x14;\n        uVar7 = this->shndx_;\n        aVar8 = this[1].u1_;\n        aVar9 = this[1].u2_;\n        iVar12 = ((int)this - (int)__first >> 2) * 0x38e38e39;\n        pAVar13 = pAVar1;\n        if (0 < (int)this - (int)__first) {\n          do {\n            *(undefined4 *)((int)pAVar13 + -0x24) = *(undefined4 *)(pAVar13 + -9);\n            *(undefined4 *)(pAVar13 + -4) = *(undefined4 *)((int)pAVar13 + -0x44);\n            *(undefined4 *)((int)pAVar13 + -0x1c) = *(undefined4 *)(pAVar13 + -8);\n            *(undefined4 *)(pAVar13 + -3) = *(undefined4 *)((int)pAVar13 + -0x3c);\n            *(undefined4 *)((int)pAVar13 + -0x14) = *(undefined4 *)(pAVar13 + -7);\n            *(undefined4 *)(pAVar13 + -2) = *(undefined4 *)((int)pAVar13 + -0x34);\n            *(undefined4 *)((int)pAVar13 + -0xc) = *(undefined4 *)(pAVar13 + -6);\n            ((Output_reloc<9,_true,_64,_true> *)(pAVar13 + -1))->u1_ =\n                 *(anon_union_4_4_c82d8563_for_u1_ *)((int)pAVar13 + -0x2c);\n            *(anon_union_4_2_238bdeaa_for_u2_ *)((int)pAVar13 + -4) =\n                 *(anon_union_4_2_238bdeaa_for_u2_ *)(pAVar13 + -5);\n            iVar12 = iVar12 + -1;\n            pAVar13 = (Address *)((int)pAVar13 + -0x24);\n          } while (iVar12 != 0);\n        }\n        __first->u1_ = aVar2;\n        __first->u2_ = aVar3;\n        *(int *)&__first->address_ = (int)AVar11;\n        *(undefined4 *)((int)&__first->address_ + 4) = uVar4;\n        __first->local_sym_index_ = uVar5;\n        *(undefined4 *)&__first->field_0x14 = uVar6;\n        __first->shndx_ = uVar7;\n        __first[1].u1_ = aVar8;\n        __first[1].u2_ = aVar9;\n        this = (Output_reloc<9,_true,_64,_true> *)pAVar1;\n        if ((Output_reloc<9,_true,_64,_true> *)pAVar1 == __last) {\n          return;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar12 = gold::Output_reloc<9,_true,_64,_true>::compare(this,__first);\n        if ((-1 < iVar12) &&\n           ((iVar12 != 0 ||\n            (__first[1].u2_.relobj <= this[1].u2_.relobj &&\n             (uint)(this[1].u1_.relobj < __first[1].u1_.relobj) <=\n             (uint)((int)this[1].u2_.relobj - (int)__first[1].u2_.relobj))))) break;\n        aVar2 = this->u1_;\n        pAVar1 = &this[1].address_;\n        aVar3 = this->u2_;\n        AVar11 = this->address_;\n        uVar4 = *(undefined4 *)((int)&this->address_ + 4);\n        uVar5 = this->local_sym_index_;\n        uVar6 = *(undefined4 *)&this->field_0x14;\n        uVar7 = this->shndx_;\n        aVar8 = this[1].u1_;\n        aVar9 = this[1].u2_;\n        iVar12 = ((int)this - (int)__first >> 2) * 0x38e38e39;\n        pAVar13 = pAVar1;\n        if (0 < (int)this - (int)__first) {\n          do {\n            *(undefined4 *)((int)pAVar13 + -0x24) = *(undefined4 *)(pAVar13 + -9);\n            *(undefined4 *)(pAVar13 + -4) = *(undefined4 *)((int)pAVar13 + -0x44);\n            *(undefined4 *)((int)pAVar13 + -0x1c) = *(undefined4 *)(pAVar13 + -8);\n            *(undefined4 *)(pAVar13 + -3) = *(undefined4 *)((int)pAVar13 + -0x3c);\n            *(undefined4 *)((int)pAVar13 + -0x14) = *(undefined4 *)(pAVar13 + -7);\n            *(undefined4 *)(pAVar13 + -2) = *(undefined4 *)((int)pAVar13 + -0x34);\n            *(undefined4 *)((int)pAVar13 + -0xc) = *(undefined4 *)(pAVar13 + -6);\n            ((Output_reloc<9,_true,_64,_true> *)(pAVar13 + -1))->u1_ =\n                 *(anon_union_4_4_c82d8563_for_u1_ *)((int)pAVar13 + -0x2c);\n            *(anon_union_4_2_238bdeaa_for_u2_ *)((int)pAVar13 + -4) =\n                 *(anon_union_4_2_238bdeaa_for_u2_ *)(pAVar13 + -5);\n            iVar12 = iVar12 + -1;\n            pAVar13 = (Address *)((int)pAVar13 + -0x24);\n          } while (iVar12 != 0);\n        }\n        __first->u1_ = aVar2;\n        __first->u2_ = aVar3;\n        *(int *)&__first->address_ = (int)AVar11;\n        *(undefined4 *)((int)&__first->address_ + 4) = uVar4;\n        __first->local_sym_index_ = uVar5;\n        *(undefined4 *)&__first->field_0x14 = uVar6;\n        __first->shndx_ = uVar7;\n        __first[1].u1_ = aVar8;\n        __first[1].u2_ = aVar9;\n        this = (Output_reloc<9,_true,_64,_true> *)pAVar1;\n        if ((Output_reloc<9,_true,_64,_true> *)pAVar1 == __last) {\n          return;\n        }\n      }" { (expression_statement "iVar12 = gold::Output_reloc<9,_true,_64,_true>::compare(this,__first);" (comma_expression "iVar12 = gold::Output_reloc<9,_true,_64,_true>::compare(this,__first)" (binary_expression "iVar12 = gold::Output_reloc<9" (assignment_expression "iVar12 = gold" identifier = identifier) (ERROR "::Output_reloc" : : identifier) < number_literal) , (comma_expression "_true,_64,_true>::compare(this,__first)" identifier , (comma_expression "_64,_true>::compare(this,__first)" identifier , (binary_expression "_true>::compare(this,__first)" identifier > (ERROR "::" : :) (call_expression "compare(this,__first)" identifier (argument_list "(this,__first)" ( identifier , identifier ))))))) ;) (if_statement "if ((-1 < iVar12) &&\n           ((iVar12 != 0 ||\n            (__first[1].u2_.relobj <= this[1].u2_.relobj &&\n             (uint)(this[1].u1_.relobj < __first[1].u1_.relobj) <=\n             (uint)((int)this[1].u2_.relobj - (int)__first[1].u2_.relobj))))) break;" if (parenthesized_expression "((-1 < iVar12) &&\n           ((iVar12 != 0 ||\n            (__first[1].u2_.relobj <= this[1].u2_.relobj &&\n             (uint)(this[1].u1_.relobj < __first[1].u1_.relobj) <=\n             (uint)((int)this[1].u2_.relobj - (int)__first[1].u2_.relobj)))))" ( (binary_expression "(-1 < iVar12) &&\n           ((iVar12 != 0 ||\n            (__first[1].u2_.relobj <= this[1].u2_.relobj &&\n             (uint)(this[1].u1_.relobj < __first[1].u1_.relobj) <=\n             (uint)((int)this[1].u2_.relobj - (int)__first[1].u2_.relobj))))" (parenthesized_expression "(-1 < iVar12)" ( (binary_expression "-1 < iVar12" number_literal < identifier) )) && (parenthesized_expression "((iVar12 != 0 ||\n            (__first[1].u2_.relobj <= this[1].u2_.relobj &&\n             (uint)(this[1].u1_.relobj < __first[1].u1_.relobj) <=\n             (uint)((int)this[1].u2_.relobj - (int)__first[1].u2_.relobj))))" ( (parenthesized_expression "(iVar12 != 0 ||\n            (__first[1].u2_.relobj <= this[1].u2_.relobj &&\n             (uint)(this[1].u1_.relobj < __first[1].u1_.relobj) <=\n             (uint)((int)this[1].u2_.relobj - (int)__first[1].u2_.relobj)))" ( (binary_expression "iVar12 != 0 ||\n            (__first[1].u2_.relobj <= this[1].u2_.relobj &&\n             (uint)(this[1].u1_.relobj < __first[1].u1_.relobj) <=\n             (uint)((int)this[1].u2_.relobj - (int)__first[1].u2_.relobj))" (binary_expression "iVar12 != 0" identifier != number_literal) || (parenthesized_expression "(__first[1].u2_.relobj <= this[1].u2_.relobj &&\n             (uint)(this[1].u1_.relobj < __first[1].u1_.relobj) <=\n             (uint)((int)this[1].u2_.relobj - (int)__first[1].u2_.relobj))" ( (binary_expression "__first[1].u2_.relobj <= this[1].u2_.relobj &&\n             (uint)(this[1].u1_.relobj < __first[1].u1_.relobj) <=\n             (uint)((int)this[1].u2_.relobj - (int)__first[1].u2_.relobj)" (binary_expression "__first[1].u2_.relobj <= this[1].u2_.relobj" (field_expression "__first[1].u2_.relobj" (field_expression "__first[1].u2_" (subscript_expression "__first[1]" identifier [ number_literal ]) . field_identifier) . field_identifier) <= (field_expression "this[1].u2_.relobj" (field_expression "this[1].u2_" (subscript_expression "this[1]" identifier [ number_literal ]) . field_identifier) . field_identifier)) && (binary_expression "(uint)(this[1].u1_.relobj < __first[1].u1_.relobj) <=\n             (uint)((int)this[1].u2_.relobj - (int)__first[1].u2_.relobj)" (call_expression "(uint)(this[1].u1_.relobj < __first[1].u1_.relobj)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(this[1].u1_.relobj < __first[1].u1_.relobj)" ( (binary_expression "this[1].u1_.relobj < __first[1].u1_.relobj" (field_expression "this[1].u1_.relobj" (field_expression "this[1].u1_" (subscript_expression "this[1]" identifier [ number_literal ]) . field_identifier) . field_identifier) < (field_expression "__first[1].u1_.relobj" (field_expression "__first[1].u1_" (subscript_expression "__first[1]" identifier [ number_literal ]) . field_identifier) . field_identifier)) ))) <= (call_expression "(uint)((int)this[1].u2_.relobj - (int)__first[1].u2_.relobj)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)this[1].u2_.relobj - (int)__first[1].u2_.relobj)" ( (binary_expression "(int)this[1].u2_.relobj - (int)__first[1].u2_.relobj" (cast_expression "(int)this[1].u2_.relobj" ( (type_descriptor "int" primitive_type) ) (field_expression "this[1].u2_.relobj" (field_expression "this[1].u2_" (subscript_expression "this[1]" identifier [ number_literal ]) . field_identifier) . field_identifier)) - (cast_expression "(int)__first[1].u2_.relobj" ( (type_descriptor "int" primitive_type) ) (field_expression "__first[1].u2_.relobj" (field_expression "__first[1].u2_" (subscript_expression "__first[1]" identifier [ number_literal ]) . field_identifier) . field_identifier))) ))))) ))) )) ))) )) (break_statement "break;" break ;)) (expression_statement "aVar2 = this->u1_;" (assignment_expression "aVar2 = this->u1_" identifier = (field_expression "this->u1_" identifier -> field_identifier)) ;) (expression_statement "pAVar1 = &this[1].address_;" (assignment_expression "pAVar1 = &this[1].address_" identifier = (pointer_expression "&this[1].address_" & (field_expression "this[1].address_" (subscript_expression "this[1]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "aVar3 = this->u2_;" (assignment_expression "aVar3 = this->u2_" identifier = (field_expression "this->u2_" identifier -> field_identifier)) ;) (expression_statement "AVar11 = this->address_;" (assignment_expression "AVar11 = this->address_" identifier = (field_expression "this->address_" identifier -> field_identifier)) ;) (expression_statement "uVar4 = *(undefined4 *)((int)&this->address_ + 4);" (assignment_expression "uVar4 = *(undefined4 *)((int)&this->address_ + 4)" identifier = (pointer_expression "*(undefined4 *)((int)&this->address_ + 4)" * (cast_expression "(undefined4 *)((int)&this->address_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->address_ + 4)" ( (binary_expression "(int)&this->address_ + 4" (cast_expression "(int)&this->address_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->address_" & (field_expression "this->address_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar5 = this->local_sym_index_;" (assignment_expression "uVar5 = this->local_sym_index_" identifier = (field_expression "this->local_sym_index_" identifier -> field_identifier)) ;) (expression_statement "uVar6 = *(undefined4 *)&this->field_0x14;" (assignment_expression "uVar6 = *(undefined4 *)&this->field_0x14" identifier = (pointer_expression "*(undefined4 *)&this->field_0x14" * (cast_expression "(undefined4 *)&this->field_0x14" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0x14" & (field_expression "this->field_0x14" identifier -> field_identifier))))) ;) (expression_statement "uVar7 = this->shndx_;" (assignment_expression "uVar7 = this->shndx_" identifier = (field_expression "this->shndx_" identifier -> field_identifier)) ;) (expression_statement "aVar8 = this[1].u1_;" (assignment_expression "aVar8 = this[1].u1_" identifier = (field_expression "this[1].u1_" (subscript_expression "this[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "aVar9 = this[1].u2_;" (assignment_expression "aVar9 = this[1].u2_" identifier = (field_expression "this[1].u2_" (subscript_expression "this[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "iVar12 = ((int)this - (int)__first >> 2) * 0x38e38e39;" (assignment_expression "iVar12 = ((int)this - (int)__first >> 2) * 0x38e38e39" identifier = (binary_expression "((int)this - (int)__first >> 2) * 0x38e38e39" (parenthesized_expression "((int)this - (int)__first >> 2)" ( (binary_expression "(int)this - (int)__first >> 2" (binary_expression "(int)this - (int)__first" (cast_expression "(int)this" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__first" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) * number_literal)) ;) (expression_statement "pAVar13 = pAVar1;" (assignment_expression "pAVar13 = pAVar1" identifier = identifier) ;) (if_statement "if (0 < (int)this - (int)__first) {\n          do {\n            *(undefined4 *)((int)pAVar13 + -0x24) = *(undefined4 *)(pAVar13 + -9);\n            *(undefined4 *)(pAVar13 + -4) = *(undefined4 *)((int)pAVar13 + -0x44);\n            *(undefined4 *)((int)pAVar13 + -0x1c) = *(undefined4 *)(pAVar13 + -8);\n            *(undefined4 *)(pAVar13 + -3) = *(undefined4 *)((int)pAVar13 + -0x3c);\n            *(undefined4 *)((int)pAVar13 + -0x14) = *(undefined4 *)(pAVar13 + -7);\n            *(undefined4 *)(pAVar13 + -2) = *(undefined4 *)((int)pAVar13 + -0x34);\n            *(undefined4 *)((int)pAVar13 + -0xc) = *(undefined4 *)(pAVar13 + -6);\n            ((Output_reloc<9,_true,_64,_true> *)(pAVar13 + -1))->u1_ =\n                 *(anon_union_4_4_c82d8563_for_u1_ *)((int)pAVar13 + -0x2c);\n            *(anon_union_4_2_238bdeaa_for_u2_ *)((int)pAVar13 + -4) =\n                 *(anon_union_4_2_238bdeaa_for_u2_ *)(pAVar13 + -5);\n            iVar12 = iVar12 + -1;\n            pAVar13 = (Address *)((int)pAVar13 + -0x24);\n          } while (iVar12 != 0);\n        }" if (parenthesized_expression "(0 < (int)this - (int)__first)" ( (binary_expression "0 < (int)this - (int)__first" number_literal < (binary_expression "(int)this - (int)__first" (cast_expression "(int)this" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__first" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n          do {\n            *(undefined4 *)((int)pAVar13 + -0x24) = *(undefined4 *)(pAVar13 + -9);\n            *(undefined4 *)(pAVar13 + -4) = *(undefined4 *)((int)pAVar13 + -0x44);\n            *(undefined4 *)((int)pAVar13 + -0x1c) = *(undefined4 *)(pAVar13 + -8);\n            *(undefined4 *)(pAVar13 + -3) = *(undefined4 *)((int)pAVar13 + -0x3c);\n            *(undefined4 *)((int)pAVar13 + -0x14) = *(undefined4 *)(pAVar13 + -7);\n            *(undefined4 *)(pAVar13 + -2) = *(undefined4 *)((int)pAVar13 + -0x34);\n            *(undefined4 *)((int)pAVar13 + -0xc) = *(undefined4 *)(pAVar13 + -6);\n            ((Output_reloc<9,_true,_64,_true> *)(pAVar13 + -1))->u1_ =\n                 *(anon_union_4_4_c82d8563_for_u1_ *)((int)pAVar13 + -0x2c);\n            *(anon_union_4_2_238bdeaa_for_u2_ *)((int)pAVar13 + -4) =\n                 *(anon_union_4_2_238bdeaa_for_u2_ *)(pAVar13 + -5);\n            iVar12 = iVar12 + -1;\n            pAVar13 = (Address *)((int)pAVar13 + -0x24);\n          } while (iVar12 != 0);\n        }" { (do_statement "do {\n            *(undefined4 *)((int)pAVar13 + -0x24) = *(undefined4 *)(pAVar13 + -9);\n            *(undefined4 *)(pAVar13 + -4) = *(undefined4 *)((int)pAVar13 + -0x44);\n            *(undefined4 *)((int)pAVar13 + -0x1c) = *(undefined4 *)(pAVar13 + -8);\n            *(undefined4 *)(pAVar13 + -3) = *(undefined4 *)((int)pAVar13 + -0x3c);\n            *(undefined4 *)((int)pAVar13 + -0x14) = *(undefined4 *)(pAVar13 + -7);\n            *(undefined4 *)(pAVar13 + -2) = *(undefined4 *)((int)pAVar13 + -0x34);\n            *(undefined4 *)((int)pAVar13 + -0xc) = *(undefined4 *)(pAVar13 + -6);\n            ((Output_reloc<9,_true,_64,_true> *)(pAVar13 + -1))->u1_ =\n                 *(anon_union_4_4_c82d8563_for_u1_ *)((int)pAVar13 + -0x2c);\n            *(anon_union_4_2_238bdeaa_for_u2_ *)((int)pAVar13 + -4) =\n                 *(anon_union_4_2_238bdeaa_for_u2_ *)(pAVar13 + -5);\n            iVar12 = iVar12 + -1;\n            pAVar13 = (Address *)((int)pAVar13 + -0x24);\n          } while (iVar12 != 0);" do (compound_statement "{\n            *(undefined4 *)((int)pAVar13 + -0x24) = *(undefined4 *)(pAVar13 + -9);\n            *(undefined4 *)(pAVar13 + -4) = *(undefined4 *)((int)pAVar13 + -0x44);\n            *(undefined4 *)((int)pAVar13 + -0x1c) = *(undefined4 *)(pAVar13 + -8);\n            *(undefined4 *)(pAVar13 + -3) = *(undefined4 *)((int)pAVar13 + -0x3c);\n            *(undefined4 *)((int)pAVar13 + -0x14) = *(undefined4 *)(pAVar13 + -7);\n            *(undefined4 *)(pAVar13 + -2) = *(undefined4 *)((int)pAVar13 + -0x34);\n            *(undefined4 *)((int)pAVar13 + -0xc) = *(undefined4 *)(pAVar13 + -6);\n            ((Output_reloc<9,_true,_64,_true> *)(pAVar13 + -1))->u1_ =\n                 *(anon_union_4_4_c82d8563_for_u1_ *)((int)pAVar13 + -0x2c);\n            *(anon_union_4_2_238bdeaa_for_u2_ *)((int)pAVar13 + -4) =\n                 *(anon_union_4_2_238bdeaa_for_u2_ *)(pAVar13 + -5);\n            iVar12 = iVar12 + -1;\n            pAVar13 = (Address *)((int)pAVar13 + -0x24);\n          }" { (expression_statement "*(undefined4 *)((int)pAVar13 + -0x24) = *(undefined4 *)(pAVar13 + -9);" (assignment_expression "*(undefined4 *)((int)pAVar13 + -0x24) = *(undefined4 *)(pAVar13 + -9)" (pointer_expression "*(undefined4 *)((int)pAVar13 + -0x24)" * (cast_expression "(undefined4 *)((int)pAVar13 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pAVar13 + -0x24)" ( (binary_expression "(int)pAVar13 + -0x24" (cast_expression "(int)pAVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)(pAVar13 + -9)" * (cast_expression "(undefined4 *)(pAVar13 + -9)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pAVar13 + -9)" ( (binary_expression "pAVar13 + -9" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(pAVar13 + -4) = *(undefined4 *)((int)pAVar13 + -0x44);" (assignment_expression "*(undefined4 *)(pAVar13 + -4) = *(undefined4 *)((int)pAVar13 + -0x44)" (pointer_expression "*(undefined4 *)(pAVar13 + -4)" * (cast_expression "(undefined4 *)(pAVar13 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pAVar13 + -4)" ( (binary_expression "pAVar13 + -4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)pAVar13 + -0x44)" * (cast_expression "(undefined4 *)((int)pAVar13 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pAVar13 + -0x44)" ( (binary_expression "(int)pAVar13 + -0x44" (cast_expression "(int)pAVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)pAVar13 + -0x1c) = *(undefined4 *)(pAVar13 + -8);" (assignment_expression "*(undefined4 *)((int)pAVar13 + -0x1c) = *(undefined4 *)(pAVar13 + -8)" (pointer_expression "*(undefined4 *)((int)pAVar13 + -0x1c)" * (cast_expression "(undefined4 *)((int)pAVar13 + -0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pAVar13 + -0x1c)" ( (binary_expression "(int)pAVar13 + -0x1c" (cast_expression "(int)pAVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)(pAVar13 + -8)" * (cast_expression "(undefined4 *)(pAVar13 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pAVar13 + -8)" ( (binary_expression "pAVar13 + -8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(pAVar13 + -3) = *(undefined4 *)((int)pAVar13 + -0x3c);" (assignment_expression "*(undefined4 *)(pAVar13 + -3) = *(undefined4 *)((int)pAVar13 + -0x3c)" (pointer_expression "*(undefined4 *)(pAVar13 + -3)" * (cast_expression "(undefined4 *)(pAVar13 + -3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pAVar13 + -3)" ( (binary_expression "pAVar13 + -3" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)pAVar13 + -0x3c)" * (cast_expression "(undefined4 *)((int)pAVar13 + -0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pAVar13 + -0x3c)" ( (binary_expression "(int)pAVar13 + -0x3c" (cast_expression "(int)pAVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)pAVar13 + -0x14) = *(undefined4 *)(pAVar13 + -7);" (assignment_expression "*(undefined4 *)((int)pAVar13 + -0x14) = *(undefined4 *)(pAVar13 + -7)" (pointer_expression "*(undefined4 *)((int)pAVar13 + -0x14)" * (cast_expression "(undefined4 *)((int)pAVar13 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pAVar13 + -0x14)" ( (binary_expression "(int)pAVar13 + -0x14" (cast_expression "(int)pAVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)(pAVar13 + -7)" * (cast_expression "(undefined4 *)(pAVar13 + -7)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pAVar13 + -7)" ( (binary_expression "pAVar13 + -7" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(pAVar13 + -2) = *(undefined4 *)((int)pAVar13 + -0x34);" (assignment_expression "*(undefined4 *)(pAVar13 + -2) = *(undefined4 *)((int)pAVar13 + -0x34)" (pointer_expression "*(undefined4 *)(pAVar13 + -2)" * (cast_expression "(undefined4 *)(pAVar13 + -2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pAVar13 + -2)" ( (binary_expression "pAVar13 + -2" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)pAVar13 + -0x34)" * (cast_expression "(undefined4 *)((int)pAVar13 + -0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pAVar13 + -0x34)" ( (binary_expression "(int)pAVar13 + -0x34" (cast_expression "(int)pAVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)pAVar13 + -0xc) = *(undefined4 *)(pAVar13 + -6);" (assignment_expression "*(undefined4 *)((int)pAVar13 + -0xc) = *(undefined4 *)(pAVar13 + -6)" (pointer_expression "*(undefined4 *)((int)pAVar13 + -0xc)" * (cast_expression "(undefined4 *)((int)pAVar13 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pAVar13 + -0xc)" ( (binary_expression "(int)pAVar13 + -0xc" (cast_expression "(int)pAVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)(pAVar13 + -6)" * (cast_expression "(undefined4 *)(pAVar13 + -6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pAVar13 + -6)" ( (binary_expression "pAVar13 + -6" identifier + number_literal) ))))) ;) (expression_statement "((Output_reloc<9,_true,_64,_true> *)(pAVar13 + -1))->u1_ =\n                 *(anon_union_4_4_c82d8563_for_u1_ *)((int)pAVar13 + -0x2c);" (assignment_expression "((Output_reloc<9,_true,_64,_true> *)(pAVar13 + -1))->u1_ =\n                 *(anon_union_4_4_c82d8563_for_u1_ *)((int)pAVar13 + -0x2c)" (field_expression "((Output_reloc<9,_true,_64,_true> *)(pAVar13 + -1))->u1_" (parenthesized_expression "((Output_reloc<9,_true,_64,_true> *)(pAVar13 + -1))" ( (call_expression "(Output_reloc<9,_true,_64,_true> *)(pAVar13 + -1)" (parenthesized_expression "(Output_reloc<9,_true,_64,_true> *)" ( (comma_expression "Output_reloc<9,_true,_64,_true> *" (binary_expression "Output_reloc<9" identifier < number_literal) , (comma_expression "_true,_64,_true> *" identifier , (comma_expression "_64,_true> *" identifier , (binary_expression "_true> *" identifier > (pointer_expression "*" * identifier))))) )) (argument_list "(pAVar13 + -1)" ( (binary_expression "pAVar13 + -1" identifier + number_literal) ))) )) -> field_identifier) = (pointer_expression "*(anon_union_4_4_c82d8563_for_u1_ *)((int)pAVar13 + -0x2c)" * (cast_expression "(anon_union_4_4_c82d8563_for_u1_ *)((int)pAVar13 + -0x2c)" ( (type_descriptor "anon_union_4_4_c82d8563_for_u1_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pAVar13 + -0x2c)" ( (binary_expression "(int)pAVar13 + -0x2c" (cast_expression "(int)pAVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(anon_union_4_2_238bdeaa_for_u2_ *)((int)pAVar13 + -4) =\n                 *(anon_union_4_2_238bdeaa_for_u2_ *)(pAVar13 + -5);" (assignment_expression "*(anon_union_4_2_238bdeaa_for_u2_ *)((int)pAVar13 + -4) =\n                 *(anon_union_4_2_238bdeaa_for_u2_ *)(pAVar13 + -5)" (pointer_expression "*(anon_union_4_2_238bdeaa_for_u2_ *)((int)pAVar13 + -4)" * (cast_expression "(anon_union_4_2_238bdeaa_for_u2_ *)((int)pAVar13 + -4)" ( (type_descriptor "anon_union_4_2_238bdeaa_for_u2_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pAVar13 + -4)" ( (binary_expression "(int)pAVar13 + -4" (cast_expression "(int)pAVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(anon_union_4_2_238bdeaa_for_u2_ *)(pAVar13 + -5)" * (cast_expression "(anon_union_4_2_238bdeaa_for_u2_ *)(pAVar13 + -5)" ( (type_descriptor "anon_union_4_2_238bdeaa_for_u2_ *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pAVar13 + -5)" ( (binary_expression "pAVar13 + -5" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" identifier = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (expression_statement "pAVar13 = (Address *)((int)pAVar13 + -0x24);" (assignment_expression "pAVar13 = (Address *)((int)pAVar13 + -0x24)" identifier = (cast_expression "(Address *)((int)pAVar13 + -0x24)" ( (type_descriptor "Address *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pAVar13 + -0x24)" ( (binary_expression "(int)pAVar13 + -0x24" (cast_expression "(int)pAVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) ;) })) (expression_statement "__first->u1_ = aVar2;" (assignment_expression "__first->u1_ = aVar2" (field_expression "__first->u1_" identifier -> field_identifier) = identifier) ;) (expression_statement "__first->u2_ = aVar3;" (assignment_expression "__first->u2_ = aVar3" (field_expression "__first->u2_" identifier -> field_identifier) = identifier) ;) (expression_statement "*(int *)&__first->address_ = (int)AVar11;" (assignment_expression "*(int *)&__first->address_ = (int)AVar11" (pointer_expression "*(int *)&__first->address_" * (cast_expression "(int *)&__first->address_" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&__first->address_" & (field_expression "__first->address_" identifier -> field_identifier)))) = (cast_expression "(int)AVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(undefined4 *)((int)&__first->address_ + 4) = uVar4;" (assignment_expression "*(undefined4 *)((int)&__first->address_ + 4) = uVar4" (pointer_expression "*(undefined4 *)((int)&__first->address_ + 4)" * (cast_expression "(undefined4 *)((int)&__first->address_ + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&__first->address_ + 4)" ( (binary_expression "(int)&__first->address_ + 4" (cast_expression "(int)&__first->address_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&__first->address_" & (field_expression "__first->address_" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "__first->local_sym_index_ = uVar5;" (assignment_expression "__first->local_sym_index_ = uVar5" (field_expression "__first->local_sym_index_" identifier -> field_identifier) = identifier) ;) (expression_statement "*(undefined4 *)&__first->field_0x14 = uVar6;" (assignment_expression "*(undefined4 *)&__first->field_0x14 = uVar6" (pointer_expression "*(undefined4 *)&__first->field_0x14" * (cast_expression "(undefined4 *)&__first->field_0x14" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&__first->field_0x14" & (field_expression "__first->field_0x14" identifier -> field_identifier)))) = identifier) ;) (expression_statement "__first->shndx_ = uVar7;" (assignment_expression "__first->shndx_ = uVar7" (field_expression "__first->shndx_" identifier -> field_identifier) = identifier) ;) (expression_statement "__first[1].u1_ = aVar8;" (assignment_expression "__first[1].u1_ = aVar8" (field_expression "__first[1].u1_" (subscript_expression "__first[1]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "__first[1].u2_ = aVar9;" (assignment_expression "__first[1].u2_ = aVar9" (field_expression "__first[1].u2_" (subscript_expression "__first[1]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "this = (Output_reloc<9,_true,_64,_true> *)pAVar1;" (assignment_expression "this = (Output_reloc<9,_true,_64,_true> *)pAVar1" identifier = (parenthesized_expression "(Output_reloc<9,_true,_64,_true> *)pAVar1" ( (comma_expression "Output_reloc<9,_true,_64,_true> *)pAVar1" (binary_expression "Output_reloc<9" identifier < number_literal) , (comma_expression "_true,_64,_true> *)pAVar1" identifier , (comma_expression "_64,_true> *)pAVar1" identifier , (binary_expression "_true> *)pAVar1" identifier > (pointer_expression "*)pAVar1" * (ERROR ")" )) identifier))))) ))) ;) (if_statement "if ((Output_reloc<9,_true,_64,_true> *)pAVar1 == __last) {\n          return;\n        }" if (parenthesized_expression "((Output_reloc<9,_true,_64,_true> *)pAVar1 == __last)" ( (parenthesized_expression "(Output_reloc<9,_true,_64,_true> *)pAVar1 == __last)" ( (comma_expression "Output_reloc<9,_true,_64,_true> *)pAVar1 == __last" (binary_expression "Output_reloc<9" identifier < number_literal) , (comma_expression "_true,_64,_true> *)pAVar1 == __last" identifier , (comma_expression "_64,_true> *)pAVar1 == __last" identifier , (binary_expression "_true> *)pAVar1 == __last" (binary_expression "_true> *)pAVar1" identifier > (pointer_expression "*)pAVar1" * (ERROR ")" )) identifier)) == identifier)))) )) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) })) (ERROR "__unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold::Output_reloc<4,_true,_64,_true>*,_std::vector<gold::Output_reloc<4,_true,_64,_true>,_std::allocator<gold::Output_reloc<4,_true,_64,_true>_>_>_>,___gnu_cxx::" (comma_expression "__unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold::Output_reloc<4,_true,_64,_true>*,_std" (binary_expression "__unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold::Output_reloc<4" (binary_expression "__unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold" (binary_expression "__unguarded_linear_insert<__gnu_cxx" identifier < identifier) (ERROR "::__normal_iterator" : : identifier) < identifier) (ERROR "::Output_reloc" : : identifier) < number_literal) , (comma_expression "_true,_64,_true>*,_std" identifier , (comma_expression "_64,_true>*,_std" identifier , (binary_expression "_true>*,_std" identifier > (pointer_expression "*,_std" * (ERROR "," ,) identifier))))) : : (binary_expression "vector<gold" identifier < identifier) : : (comma_expression "Output_reloc<4,_true,_64,_true>,_std" (binary_expression "Output_reloc<4" identifier < number_literal) , (comma_expression "_true,_64,_true>,_std" identifier , (comma_expression "_64,_true>,_std" identifier , (binary_expression "_true>,_std" identifier > (ERROR "," ,) identifier)))) : : (binary_expression "allocator<gold" identifier < identifier) : : (comma_expression "Output_reloc<4,_true,_64,_true>_>_>_>,___gnu_cxx" (binary_expression "Output_reloc<4" identifier < number_literal) , (comma_expression "_true,_64,_true>_>_>_>,___gnu_cxx" identifier , (comma_expression "_64,_true>_>_>_>,___gnu_cxx" identifier , (binary_expression "_true>_>_>_>,___gnu_cxx" (binary_expression "_true>_>_>_" (binary_expression "_true>_>_" (binary_expression "_true>_" identifier > identifier) > identifier) > identifier) > (ERROR "," ,) identifier)))) : :) (labeled_statement "__ops::_Val_comp_iter<gold::Output_data_reloc_base<4,_true,_64,_true>::Sort_relocs_comparison>_>\n                (this,0);" statement_identifier (ERROR "::_Val_comp_iter<gold:" : : (binary_expression "_Val_comp_iter<gold" identifier < identifier) :) : (expression_statement "Output_data_reloc_base<4,_true,_64,_true>::Sort_relocs_comparison>_>\n                (this,0);" (comma_expression "Output_data_reloc_base<4,_true,_64,_true>::Sort_relocs_comparison>_>\n                (this,0)" (binary_expression "Output_data_reloc_base<4" identifier < number_literal) , (comma_expression "_true,_64,_true>::Sort_relocs_comparison>_>\n                (this,0)" identifier , (comma_expression "_64,_true>::Sort_relocs_comparison>_>\n                (this,0)" identifier , (binary_expression "_true>::Sort_relocs_comparison>_>\n                (this,0)" (binary_expression "_true>::Sort_relocs_comparison>_" (binary_expression "_true>::Sort_relocs_comparison" identifier > (ERROR "::" : :) identifier) > identifier) > (parenthesized_expression "(this,0)" ( (comma_expression "this,0" identifier , number_literal) )))))) ;)) (expression_statement "pOVar10 = this + 1;" (assignment_expression "pOVar10 = this + 1" identifier = (binary_expression "this + 1" identifier + number_literal)) ;) }) }) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00306a40(undefined4 *param_1,undefined4 *param_2)\n\n{\n  undefined4 *puVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  undefined4 *puVar13;\n  \n  if (param_1 != param_2) {\n    for (puVar13 = param_1 + 9; puVar13 != param_2; puVar13 = puVar13 + 9) {\n      while( true ) {\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }\n      FUN_00306940(puVar13,0);\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_00306a40(undefined4 *param_1,undefined4 *param_2)\n\n{\n  undefined4 *puVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  undefined4 *puVar13;\n  \n  if (param_1 != param_2) {\n    for (puVar13 = param_1 + 9; puVar13 != param_2; puVar13 = puVar13 + 9) {\n      while( true ) {\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }\n      FUN_00306940(puVar13,0);\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00306a40(undefined4 *param_1,undefined4 *param_2)" identifier (parameter_list "(undefined4 *param_1,undefined4 *param_2)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  undefined4 *puVar13;\n  \n  if (param_1 != param_2) {\n    for (puVar13 = param_1 + 9; puVar13 != param_2; puVar13 = puVar13 + 9) {\n      while( true ) {\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }\n      FUN_00306940(puVar13,0);\n    }\n  }\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined4 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (if_statement "if (param_1 != param_2) {\n    for (puVar13 = param_1 + 9; puVar13 != param_2; puVar13 = puVar13 + 9) {\n      while( true ) {\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }\n      FUN_00306940(puVar13,0);\n    }\n  }" if (parenthesized_expression "(param_1 != param_2)" ( (binary_expression "param_1 != param_2" identifier != identifier) )) (compound_statement "{\n    for (puVar13 = param_1 + 9; puVar13 != param_2; puVar13 = puVar13 + 9) {\n      while( true ) {\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }\n      FUN_00306940(puVar13,0);\n    }\n  }" { (for_statement "for (puVar13 = param_1 + 9; puVar13 != param_2; puVar13 = puVar13 + 9) {\n      while( true ) {\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }\n      FUN_00306940(puVar13,0);\n    }" for ( (assignment_expression "puVar13 = param_1 + 9" identifier = (binary_expression "param_1 + 9" identifier + number_literal)) ; (binary_expression "puVar13 != param_2" identifier != identifier) ; (assignment_expression "puVar13 = puVar13 + 9" identifier = (binary_expression "puVar13 + 9" identifier + number_literal)) ) (compound_statement "{\n      while( true ) {\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }\n      FUN_00306940(puVar13,0);\n    }" { (while_statement "while( true ) {\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }" { (expression_statement "iVar11 = FUN_002ff8d0(puVar13,param_1);" (assignment_expression "iVar11 = FUN_002ff8d0(puVar13,param_1)" identifier = (call_expression "FUN_002ff8d0(puVar13,param_1)" identifier (argument_list "(puVar13,param_1)" ( identifier , identifier )))) ;) (if_statement "if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;" if (parenthesized_expression "((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))" ( (binary_expression "(-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8]))))" (parenthesized_expression "(-1 < iVar11)" ( (binary_expression "-1 < iVar11" number_literal < identifier) )) && (parenthesized_expression "((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8]))))" ( (parenthesized_expression "(iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))" ( (binary_expression "iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8]))" (binary_expression "iVar11 != 0" identifier != number_literal) || (parenthesized_expression "((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8]))" ( (binary_expression "(uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])" (binary_expression "(uint)param_1[8] <= (uint)puVar13[8]" (cast_expression "(uint)param_1[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[8]" identifier [ number_literal ])) <= (cast_expression "(uint)puVar13[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar13[8]" identifier [ number_literal ]))) && (binary_expression "(uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])" (call_expression "(uint)((uint)puVar13[7] < (uint)param_1[7])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)puVar13[7] < (uint)param_1[7])" ( (binary_expression "(uint)puVar13[7] < (uint)param_1[7]" (cast_expression "(uint)puVar13[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar13[7]" identifier [ number_literal ])) < (cast_expression "(uint)param_1[7]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[7]" identifier [ number_literal ]))) ))) <= (call_expression "(uint)(puVar13[8] - param_1[8])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar13[8] - param_1[8])" ( (binary_expression "puVar13[8] - param_1[8]" (subscript_expression "puVar13[8]" identifier [ number_literal ]) - (subscript_expression "param_1[8]" identifier [ number_literal ])) ))))) ))) )) ))) )) (break_statement "break;" break ;)) (expression_statement "uVar2 = *puVar13;" (assignment_expression "uVar2 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar1 = puVar13 + 9;" (assignment_expression "puVar1 = puVar13 + 9" identifier = (binary_expression "puVar13 + 9" identifier + number_literal)) ;) (expression_statement "uVar3 = puVar13[1];" (assignment_expression "uVar3 = puVar13[1]" identifier = (subscript_expression "puVar13[1]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = puVar13[2];" (assignment_expression "uVar4 = puVar13[2]" identifier = (subscript_expression "puVar13[2]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = puVar13[3];" (assignment_expression "uVar5 = puVar13[3]" identifier = (subscript_expression "puVar13[3]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = puVar13[4];" (assignment_expression "uVar6 = puVar13[4]" identifier = (subscript_expression "puVar13[4]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = puVar13[5];" (assignment_expression "uVar7 = puVar13[5]" identifier = (subscript_expression "puVar13[5]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = puVar13[6];" (assignment_expression "uVar8 = puVar13[6]" identifier = (subscript_expression "puVar13[6]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = puVar13[7];" (assignment_expression "uVar9 = puVar13[7]" identifier = (subscript_expression "puVar13[7]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = puVar13[8];" (assignment_expression "uVar10 = puVar13[8]" identifier = (subscript_expression "puVar13[8]" identifier [ number_literal ])) ;) (expression_statement "iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;" (assignment_expression "iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39" identifier = (binary_expression "((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39" (parenthesized_expression "((int)puVar13 - (int)param_1 >> 2)" ( (binary_expression "(int)puVar13 - (int)param_1 >> 2" (binary_expression "(int)puVar13 - (int)param_1" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )) * number_literal)) ;) (expression_statement "puVar12 = puVar1;" (assignment_expression "puVar12 = puVar1" identifier = identifier) ;) (if_statement "if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }" if (parenthesized_expression "(0 < (int)puVar13 - (int)param_1)" ( (binary_expression "0 < (int)puVar13 - (int)param_1" number_literal < (binary_expression "(int)puVar13 - (int)param_1" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }" { (do_statement "do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);" do (compound_statement "{\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          }" { (expression_statement "puVar12[-9] = puVar12[-0x12];" (assignment_expression "puVar12[-9] = puVar12[-0x12]" (subscript_expression "puVar12[-9]" identifier [ number_literal ]) = (subscript_expression "puVar12[-0x12]" identifier [ number_literal ])) ;) (expression_statement "puVar12[-8] = puVar12[-0x11];" (assignment_expression "puVar12[-8] = puVar12[-0x11]" (subscript_expression "puVar12[-8]" identifier [ number_literal ]) = (subscript_expression "puVar12[-0x11]" identifier [ number_literal ])) ;) (expression_statement "puVar12[-7] = puVar12[-0x10];" (assignment_expression "puVar12[-7] = puVar12[-0x10]" (subscript_expression "puVar12[-7]" identifier [ number_literal ]) = (subscript_expression "puVar12[-0x10]" identifier [ number_literal ])) ;) (expression_statement "puVar12[-6] = puVar12[-0xf];" (assignment_expression "puVar12[-6] = puVar12[-0xf]" (subscript_expression "puVar12[-6]" identifier [ number_literal ]) = (subscript_expression "puVar12[-0xf]" identifier [ number_literal ])) ;) (expression_statement "puVar12[-5] = puVar12[-0xe];" (assignment_expression "puVar12[-5] = puVar12[-0xe]" (subscript_expression "puVar12[-5]" identifier [ number_literal ]) = (subscript_expression "puVar12[-0xe]" identifier [ number_literal ])) ;) (expression_statement "puVar12[-4] = puVar12[-0xd];" (assignment_expression "puVar12[-4] = puVar12[-0xd]" (subscript_expression "puVar12[-4]" identifier [ number_literal ]) = (subscript_expression "puVar12[-0xd]" identifier [ number_literal ])) ;) (expression_statement "puVar12[-3] = puVar12[-0xc];" (assignment_expression "puVar12[-3] = puVar12[-0xc]" (subscript_expression "puVar12[-3]" identifier [ number_literal ]) = (subscript_expression "puVar12[-0xc]" identifier [ number_literal ])) ;) (expression_statement "puVar12[-2] = puVar12[-0xb];" (assignment_expression "puVar12[-2] = puVar12[-0xb]" (subscript_expression "puVar12[-2]" identifier [ number_literal ]) = (subscript_expression "puVar12[-0xb]" identifier [ number_literal ])) ;) (expression_statement "puVar12[-1] = puVar12[-10];" (assignment_expression "puVar12[-1] = puVar12[-10]" (subscript_expression "puVar12[-1]" identifier [ number_literal ]) = (subscript_expression "puVar12[-10]" identifier [ number_literal ])) ;) (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (expression_statement "puVar12 = puVar12 + -9;" (assignment_expression "puVar12 = puVar12 + -9" identifier = (binary_expression "puVar12 + -9" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) ;) })) (expression_statement "*param_1 = uVar2;" (assignment_expression "*param_1 = uVar2" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = uVar3;" (assignment_expression "param_1[1] = uVar3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = uVar4;" (assignment_expression "param_1[2] = uVar4" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[3] = uVar5;" (assignment_expression "param_1[3] = uVar5" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[4] = uVar6;" (assignment_expression "param_1[4] = uVar6" (subscript_expression "param_1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[5] = uVar7;" (assignment_expression "param_1[5] = uVar7" (subscript_expression "param_1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[6] = uVar8;" (assignment_expression "param_1[6] = uVar8" (subscript_expression "param_1[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[7] = uVar9;" (assignment_expression "param_1[7] = uVar9" (subscript_expression "param_1[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[8] = uVar10;" (assignment_expression "param_1[8] = uVar10" (subscript_expression "param_1[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar13 = puVar1;" (assignment_expression "puVar13 = puVar1" identifier = identifier) ;) (if_statement "if (puVar1 == param_2) {\n          return;\n        }" if (parenthesized_expression "(puVar1 == param_2)" ( (binary_expression "puVar1 == param_2" identifier == identifier) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) })) (expression_statement "FUN_00306940(puVar13,0);" (call_expression "FUN_00306940(puVar13,0)" identifier (argument_list "(puVar13,0)" ( identifier , number_literal ))) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (for_statement for ( (assignment_expression IDENT = (binary_expression IDENT + LIT)) ; (binary_expression IDENT != IDENT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) && (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))) <= (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ])) ))))) ))) )) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return ;) })) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) })) })) (return_statement return ;) })))
(function_definition "void FUN_00306a40(undefined4 *param_1,undefined4 *param_2)\n\n{\n  undefined4 *puVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  undefined4 *puVar13;\n  \n  if (param_1 != param_2) {\n    for (puVar13 = param_1 + 9; puVar13 != param_2; puVar13 = puVar13 + 9) {\n      while( true ) {\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }\n      FUN_00306940(puVar13,0);\n    }\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00306a40(undefined4 *param_1,undefined4 *param_2)" (identifier "FUN_00306a40") (parameter_list "(undefined4 *param_1,undefined4 *param_2)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  undefined4 *puVar13;\n  \n  if (param_1 != param_2) {\n    for (puVar13 = param_1 + 9; puVar13 != param_2; puVar13 = puVar13 + 9) {\n      while( true ) {\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }\n      FUN_00306940(puVar13,0);\n    }\n  }\n  return;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "undefined4 uVar10;" (type_identifier "undefined4") (identifier "uVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "undefined4 *puVar12;" (type_identifier "undefined4") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "undefined4 *puVar13;" (type_identifier "undefined4") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (if_statement "if (param_1 != param_2) {\n    for (puVar13 = param_1 + 9; puVar13 != param_2; puVar13 = puVar13 + 9) {\n      while( true ) {\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }\n      FUN_00306940(puVar13,0);\n    }\n  }" (if "if") (parenthesized_expression "(param_1 != param_2)" (( "(") (binary_expression "param_1 != param_2" (identifier "param_1") (!= "!=") (identifier "param_2")) () ")")) (compound_statement "{\n    for (puVar13 = param_1 + 9; puVar13 != param_2; puVar13 = puVar13 + 9) {\n      while( true ) {\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }\n      FUN_00306940(puVar13,0);\n    }\n  }" ({ "{") (for_statement "for (puVar13 = param_1 + 9; puVar13 != param_2; puVar13 = puVar13 + 9) {\n      while( true ) {\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }\n      FUN_00306940(puVar13,0);\n    }" (for "for") (( "(") (assignment_expression "puVar13 = param_1 + 9" (identifier "puVar13") (= "=") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9"))) (; ";") (binary_expression "puVar13 != param_2" (identifier "puVar13") (!= "!=") (identifier "param_2")) (; ";") (assignment_expression "puVar13 = puVar13 + 9" (identifier "puVar13") (= "=") (binary_expression "puVar13 + 9" (identifier "puVar13") (+ "+") (number_literal "9"))) () ")") (compound_statement "{\n      while( true ) {\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }\n      FUN_00306940(puVar13,0);\n    }" ({ "{") (while_statement "while( true ) {\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        iVar11 = FUN_002ff8d0(puVar13,param_1);\n        if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;\n        uVar2 = *puVar13;\n        puVar1 = puVar13 + 9;\n        uVar3 = puVar13[1];\n        uVar4 = puVar13[2];\n        uVar5 = puVar13[3];\n        uVar6 = puVar13[4];\n        uVar7 = puVar13[5];\n        uVar8 = puVar13[6];\n        uVar9 = puVar13[7];\n        uVar10 = puVar13[8];\n        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;\n        puVar12 = puVar1;\n        if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }\n        *param_1 = uVar2;\n        param_1[1] = uVar3;\n        param_1[2] = uVar4;\n        param_1[3] = uVar5;\n        param_1[4] = uVar6;\n        param_1[5] = uVar7;\n        param_1[6] = uVar8;\n        param_1[7] = uVar9;\n        param_1[8] = uVar10;\n        puVar13 = puVar1;\n        if (puVar1 == param_2) {\n          return;\n        }\n      }" ({ "{") (expression_statement "iVar11 = FUN_002ff8d0(puVar13,param_1);" (assignment_expression "iVar11 = FUN_002ff8d0(puVar13,param_1)" (identifier "iVar11") (= "=") (call_expression "FUN_002ff8d0(puVar13,param_1)" (identifier "FUN_002ff8d0") (argument_list "(puVar13,param_1)" (( "(") (identifier "puVar13") (, ",") (identifier "param_1") () ")")))) (; ";")) (if_statement "if ((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))\n        break;" (if "if") (parenthesized_expression "((-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))" (( "(") (binary_expression "(-1 < iVar11) &&\n           ((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8]))))" (parenthesized_expression "(-1 < iVar11)" (( "(") (binary_expression "-1 < iVar11" (number_literal "-1") (< "<") (identifier "iVar11")) () ")")) (&& "&&") (parenthesized_expression "((iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8]))))" (( "(") (parenthesized_expression "(iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))" (( "(") (binary_expression "iVar11 != 0 ||\n            ((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8]))" (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "((uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8]))" (( "(") (binary_expression "(uint)param_1[8] <= (uint)puVar13[8] &&\n             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])" (binary_expression "(uint)param_1[8] <= (uint)puVar13[8]" (cast_expression "(uint)param_1[8]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]"))) (<= "<=") (cast_expression "(uint)puVar13[8]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "puVar13[8]" (identifier "puVar13") ([ "[") (number_literal "8") (] "]")))) (&& "&&") (binary_expression "(uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])" (call_expression "(uint)((uint)puVar13[7] < (uint)param_1[7])" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((uint)puVar13[7] < (uint)param_1[7])" (( "(") (binary_expression "(uint)puVar13[7] < (uint)param_1[7]" (cast_expression "(uint)puVar13[7]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "puVar13[7]" (identifier "puVar13") ([ "[") (number_literal "7") (] "]"))) (< "<") (cast_expression "(uint)param_1[7]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")))) () ")"))) (<= "<=") (call_expression "(uint)(puVar13[8] - param_1[8])" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar13[8] - param_1[8])" (( "(") (binary_expression "puVar13[8] - param_1[8]" (subscript_expression "puVar13[8]" (identifier "puVar13") ([ "[") (number_literal "8") (] "]")) (- "-") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]"))) () ")"))))) () ")"))) () ")")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar2 = *puVar13;" (assignment_expression "uVar2 = *puVar13" (identifier "uVar2") (= "=") (pointer_expression "*puVar13" (* "*") (identifier "puVar13"))) (; ";")) (expression_statement "puVar1 = puVar13 + 9;" (assignment_expression "puVar1 = puVar13 + 9" (identifier "puVar1") (= "=") (binary_expression "puVar13 + 9" (identifier "puVar13") (+ "+") (number_literal "9"))) (; ";")) (expression_statement "uVar3 = puVar13[1];" (assignment_expression "uVar3 = puVar13[1]" (identifier "uVar3") (= "=") (subscript_expression "puVar13[1]" (identifier "puVar13") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar4 = puVar13[2];" (assignment_expression "uVar4 = puVar13[2]" (identifier "uVar4") (= "=") (subscript_expression "puVar13[2]" (identifier "puVar13") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar5 = puVar13[3];" (assignment_expression "uVar5 = puVar13[3]" (identifier "uVar5") (= "=") (subscript_expression "puVar13[3]" (identifier "puVar13") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "uVar6 = puVar13[4];" (assignment_expression "uVar6 = puVar13[4]" (identifier "uVar6") (= "=") (subscript_expression "puVar13[4]" (identifier "puVar13") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "uVar7 = puVar13[5];" (assignment_expression "uVar7 = puVar13[5]" (identifier "uVar7") (= "=") (subscript_expression "puVar13[5]" (identifier "puVar13") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "uVar8 = puVar13[6];" (assignment_expression "uVar8 = puVar13[6]" (identifier "uVar8") (= "=") (subscript_expression "puVar13[6]" (identifier "puVar13") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "uVar9 = puVar13[7];" (assignment_expression "uVar9 = puVar13[7]" (identifier "uVar9") (= "=") (subscript_expression "puVar13[7]" (identifier "puVar13") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "uVar10 = puVar13[8];" (assignment_expression "uVar10 = puVar13[8]" (identifier "uVar10") (= "=") (subscript_expression "puVar13[8]" (identifier "puVar13") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;" (assignment_expression "iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39" (identifier "iVar11") (= "=") (binary_expression "((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39" (parenthesized_expression "((int)puVar13 - (int)param_1 >> 2)" (( "(") (binary_expression "(int)puVar13 - (int)param_1 >> 2" (binary_expression "(int)puVar13 - (int)param_1" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (- "-") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1"))) (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "0x38e38e39"))) (; ";")) (expression_statement "puVar12 = puVar1;" (assignment_expression "puVar12 = puVar1" (identifier "puVar12") (= "=") (identifier "puVar1")) (; ";")) (if_statement "if (0 < (int)puVar13 - (int)param_1) {\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }" (if "if") (parenthesized_expression "(0 < (int)puVar13 - (int)param_1)" (( "(") (binary_expression "0 < (int)puVar13 - (int)param_1" (number_literal "0") (< "<") (binary_expression "(int)puVar13 - (int)param_1" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (- "-") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")))) () ")")) (compound_statement "{\n          do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);\n        }" ({ "{") (do_statement "do {\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          } while (iVar11 != 0);" (do "do") (compound_statement "{\n            puVar12[-9] = puVar12[-0x12];\n            puVar12[-8] = puVar12[-0x11];\n            puVar12[-7] = puVar12[-0x10];\n            puVar12[-6] = puVar12[-0xf];\n            puVar12[-5] = puVar12[-0xe];\n            puVar12[-4] = puVar12[-0xd];\n            puVar12[-3] = puVar12[-0xc];\n            puVar12[-2] = puVar12[-0xb];\n            puVar12[-1] = puVar12[-10];\n            iVar11 = iVar11 + -1;\n            puVar12 = puVar12 + -9;\n          }" ({ "{") (expression_statement "puVar12[-9] = puVar12[-0x12];" (assignment_expression "puVar12[-9] = puVar12[-0x12]" (subscript_expression "puVar12[-9]" (identifier "puVar12") ([ "[") (number_literal "-9") (] "]")) (= "=") (subscript_expression "puVar12[-0x12]" (identifier "puVar12") ([ "[") (number_literal "-0x12") (] "]"))) (; ";")) (expression_statement "puVar12[-8] = puVar12[-0x11];" (assignment_expression "puVar12[-8] = puVar12[-0x11]" (subscript_expression "puVar12[-8]" (identifier "puVar12") ([ "[") (number_literal "-8") (] "]")) (= "=") (subscript_expression "puVar12[-0x11]" (identifier "puVar12") ([ "[") (number_literal "-0x11") (] "]"))) (; ";")) (expression_statement "puVar12[-7] = puVar12[-0x10];" (assignment_expression "puVar12[-7] = puVar12[-0x10]" (subscript_expression "puVar12[-7]" (identifier "puVar12") ([ "[") (number_literal "-7") (] "]")) (= "=") (subscript_expression "puVar12[-0x10]" (identifier "puVar12") ([ "[") (number_literal "-0x10") (] "]"))) (; ";")) (expression_statement "puVar12[-6] = puVar12[-0xf];" (assignment_expression "puVar12[-6] = puVar12[-0xf]" (subscript_expression "puVar12[-6]" (identifier "puVar12") ([ "[") (number_literal "-6") (] "]")) (= "=") (subscript_expression "puVar12[-0xf]" (identifier "puVar12") ([ "[") (number_literal "-0xf") (] "]"))) (; ";")) (expression_statement "puVar12[-5] = puVar12[-0xe];" (assignment_expression "puVar12[-5] = puVar12[-0xe]" (subscript_expression "puVar12[-5]" (identifier "puVar12") ([ "[") (number_literal "-5") (] "]")) (= "=") (subscript_expression "puVar12[-0xe]" (identifier "puVar12") ([ "[") (number_literal "-0xe") (] "]"))) (; ";")) (expression_statement "puVar12[-4] = puVar12[-0xd];" (assignment_expression "puVar12[-4] = puVar12[-0xd]" (subscript_expression "puVar12[-4]" (identifier "puVar12") ([ "[") (number_literal "-4") (] "]")) (= "=") (subscript_expression "puVar12[-0xd]" (identifier "puVar12") ([ "[") (number_literal "-0xd") (] "]"))) (; ";")) (expression_statement "puVar12[-3] = puVar12[-0xc];" (assignment_expression "puVar12[-3] = puVar12[-0xc]" (subscript_expression "puVar12[-3]" (identifier "puVar12") ([ "[") (number_literal "-3") (] "]")) (= "=") (subscript_expression "puVar12[-0xc]" (identifier "puVar12") ([ "[") (number_literal "-0xc") (] "]"))) (; ";")) (expression_statement "puVar12[-2] = puVar12[-0xb];" (assignment_expression "puVar12[-2] = puVar12[-0xb]" (subscript_expression "puVar12[-2]" (identifier "puVar12") ([ "[") (number_literal "-2") (] "]")) (= "=") (subscript_expression "puVar12[-0xb]" (identifier "puVar12") ([ "[") (number_literal "-0xb") (] "]"))) (; ";")) (expression_statement "puVar12[-1] = puVar12[-10];" (assignment_expression "puVar12[-1] = puVar12[-10]" (subscript_expression "puVar12[-1]" (identifier "puVar12") ([ "[") (number_literal "-1") (] "]")) (= "=") (subscript_expression "puVar12[-10]" (identifier "puVar12") ([ "[") (number_literal "-10") (] "]"))) (; ";")) (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" (identifier "iVar11") (= "=") (binary_expression "iVar11 + -1" (identifier "iVar11") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar12 = puVar12 + -9;" (assignment_expression "puVar12 = puVar12 + -9" (identifier "puVar12") (= "=") (binary_expression "puVar12 + -9" (identifier "puVar12") (+ "+") (number_literal "-9"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar11 != 0)" (( "(") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "*param_1 = uVar2;" (assignment_expression "*param_1 = uVar2" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "param_1[1] = uVar3;" (assignment_expression "param_1[1] = uVar3" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "param_1[2] = uVar4;" (assignment_expression "param_1[2] = uVar4" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "param_1[3] = uVar5;" (assignment_expression "param_1[3] = uVar5" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "param_1[4] = uVar6;" (assignment_expression "param_1[4] = uVar6" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "param_1[5] = uVar7;" (assignment_expression "param_1[5] = uVar7" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "param_1[6] = uVar8;" (assignment_expression "param_1[6] = uVar8" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "param_1[7] = uVar9;" (assignment_expression "param_1[7] = uVar9" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "param_1[8] = uVar10;" (assignment_expression "param_1[8] = uVar10" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "puVar13 = puVar1;" (assignment_expression "puVar13 = puVar1" (identifier "puVar13") (= "=") (identifier "puVar1")) (; ";")) (if_statement "if (puVar1 == param_2) {\n          return;\n        }" (if "if") (parenthesized_expression "(puVar1 == param_2)" (( "(") (binary_expression "puVar1 == param_2" (identifier "puVar1") (== "==") (identifier "param_2")) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (expression_statement "FUN_00306940(puVar13,0);" (call_expression "FUN_00306940(puVar13,0)" (identifier "FUN_00306940") (argument_list "(puVar13,0)" (( "(") (identifier "puVar13") (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

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

void std::
     __insertion_sort<__gnu_cxx::__normal_iterator<gold::var_1<4,_true,_64,_true>*,_std::vector<gold::var_1<4,_true,_64,_true>,_std::allocator<gold::var_1<4,_true,_64,_true>_>_>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Output_data_reloc_base<4,_true,_64,_true>::Sort_relocs_comparison>_>
               (var_1<9,_true,_64,_true> *var_2,var_1<9,_true,_64,_true> *var_3)

{
  type_5 *pAVar1;
  type_1 aVar2;
  type_2 aVar3;
  type_3 uVar4;
  type_4 uVar5;
  type_3 uVar6;
  type_4 uVar7;
  type_1 aVar8;
  type_2 aVar9;
  var_1<9,_true,_64,_true> *pOVar10;
  type_5 AVar11;
  int iVar12;
  type_5 *pAVar13;
  var_1<9,_true,_64,_true> *this;
  type_6 __val;
  
  if (var_2 != var_3) {
    pOVar10 = var_2 + 1;
    while (this = (var_1<9,_true,_64,_true> *)&pOVar10->address_,
          (var_1<9,_true,_64,_true> *)&pOVar10->address_ != var_3) {
      while( true ) {
        iVar12 = gold::var_1<9,_true,_64,_true>::compare(this,var_2);
        if ((-1 < iVar12) &&
           ((iVar12 != 0 ||
            (var_2[1].u2_.relobj <= this[1].u2_.relobj &&
             (type_4)(this[1].u1_.relobj < var_2[1].u1_.relobj) <=
             (type_4)((int)this[1].u2_.relobj - (int)var_2[1].u2_.relobj))))) break;
        aVar2 = this->u1_;
        pAVar1 = &this[1].address_;
        aVar3 = this->u2_;
        AVar11 = this->address_;
        uVar4 = *(type_3 *)((int)&this->address_ + 4);
        uVar5 = this->local_sym_index_;
        uVar6 = *(type_3 *)&this->field_0x14;
        uVar7 = this->shndx_;
        aVar8 = this[1].u1_;
        aVar9 = this[1].u2_;
        iVar12 = ((int)this - (int)var_2 >> 2) * 0x38e38e39;
        pAVar13 = pAVar1;
        if (0 < (int)this - (int)var_2) {
          do {
            *(type_3 *)((int)pAVar13 + -0x24) = *(type_3 *)(pAVar13 + -9);
            *(type_3 *)(pAVar13 + -4) = *(type_3 *)((int)pAVar13 + -0x44);
            *(type_3 *)((int)pAVar13 + -0x1c) = *(type_3 *)(pAVar13 + -8);
            *(type_3 *)(pAVar13 + -3) = *(type_3 *)((int)pAVar13 + -0x3c);
            *(type_3 *)((int)pAVar13 + -0x14) = *(type_3 *)(pAVar13 + -7);
            *(type_3 *)(pAVar13 + -2) = *(type_3 *)((int)pAVar13 + -0x34);
            *(type_3 *)((int)pAVar13 + -0xc) = *(type_3 *)(pAVar13 + -6);
            ((var_1<9,_true,_64,_true> *)(pAVar13 + -1))->u1_ =
                 *(type_1 *)((int)pAVar13 + -0x2c);
            *(type_2 *)((int)pAVar13 + -4) =
                 *(type_2 *)(pAVar13 + -5);
            iVar12 = iVar12 + -1;
            pAVar13 = (type_5 *)((int)pAVar13 + -0x24);
          } while (iVar12 != 0);
        }
        var_2->u1_ = aVar2;
        var_2->u2_ = aVar3;
        *(int *)&var_2->address_ = (int)AVar11;
        *(type_3 *)((int)&var_2->address_ + 4) = uVar4;
        var_2->local_sym_index_ = uVar5;
        *(type_3 *)&var_2->field_0x14 = uVar6;
        var_2->shndx_ = uVar7;
        var_2[1].u1_ = aVar8;
        var_2[1].u2_ = aVar9;
        this = (var_1<9,_true,_64,_true> *)pAVar1;
        if ((var_1<9,_true,_64,_true> *)pAVar1 == var_3) {
          return;
        }
      }
      __unguarded_linear_insert<__gnu_cxx::__normal_iterator<gold::var_1<4,_true,_64,_true>*,_std::vector<gold::var_1<4,_true,_64,_true>,_std::allocator<gold::var_1<4,_true,_64,_true>_>_>_>,___gnu_cxx::__ops::_Val_comp_iter<gold::Output_data_reloc_base<4,_true,_64,_true>::Sort_relocs_comparison>_>
                (this,0);
      pOVar10 = this + 1;
    }
  }
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (for_statement initializer: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) condition: (binary_expression left: (identifier) right: (identifier)) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal))))))))))))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))))))) (return_statement))))

void MASKED(undefined4 *param_1,undefined4 *param_2)

{
  undefined4 *puVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  int iVar11;
  undefined4 *puVar12;
  undefined4 *puVar13;
  
  if (param_1 != param_2) {
    for (puVar13 = param_1 + 9; puVar13 != param_2; puVar13 = puVar13 + 9) {
      while( true ) {
        iVar11 = FUN_002ff8d0(puVar13,param_1);
        if ((-1 < iVar11) &&
           ((iVar11 != 0 ||
            ((uint)param_1[8] <= (uint)puVar13[8] &&
             (uint)((uint)puVar13[7] < (uint)param_1[7]) <= (uint)(puVar13[8] - param_1[8])))))
        break;
        uVar2 = *puVar13;
        puVar1 = puVar13 + 9;
        uVar3 = puVar13[1];
        uVar4 = puVar13[2];
        uVar5 = puVar13[3];
        uVar6 = puVar13[4];
        uVar7 = puVar13[5];
        uVar8 = puVar13[6];
        uVar9 = puVar13[7];
        uVar10 = puVar13[8];
        iVar11 = ((int)puVar13 - (int)param_1 >> 2) * 0x38e38e39;
        puVar12 = puVar1;
        if (0 < (int)puVar13 - (int)param_1) {
          do {
            puVar12[-9] = puVar12[-0x12];
            puVar12[-8] = puVar12[-0x11];
            puVar12[-7] = puVar12[-0x10];
            puVar12[-6] = puVar12[-0xf];
            puVar12[-5] = puVar12[-0xe];
            puVar12[-4] = puVar12[-0xd];
            puVar12[-3] = puVar12[-0xc];
            puVar12[-2] = puVar12[-0xb];
            puVar12[-1] = puVar12[-10];
            iVar11 = iVar11 + -1;
            puVar12 = puVar12 + -9;
          } while (iVar11 != 0);
        }
        *param_1 = uVar2;
        param_1[1] = uVar3;
        param_1[2] = uVar4;
        param_1[3] = uVar5;
        param_1[4] = uVar6;
        param_1[5] = uVar7;
        param_1[6] = uVar8;
        param_1[7] = uVar9;
        param_1[8] = uVar10;
        puVar13 = puVar1;
        if (puVar1 == param_2) {
          return;
        }
      }
      FUN_00306940(puVar13,0);
    }
  }
  return;
}

