
/* WARNING: Type propagation algorithm not settling */
/* DWARF original name: __rotate<__gnu_cxx::__normal_iterator<gold::Output_segment**,
   std::vector<gold::Output_segment*> > > */

__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>
 std::_V2::
 __rotate<__gnu_cxx::__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*>_>_>
           (Output_segment **__first,Output_segment *__middle,Output_segment *__last,
           Output_segment *param_4)

{
  pointer *pppOVar1;
  Output_segment *pOVar2;
  pointer ppOVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  Output_segment *pOVar9;
  pointer *pppOVar10;
  
  if (__middle == __last) {
    *__first = param_4;
    return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>
            )__first;
  }
  if (param_4 == __last) {
    *__first = __middle;
  }
  else {
    iVar8 = (int)param_4 - (int)__middle >> 2;
    iVar4 = (int)__last - (int)__middle >> 2;
    iVar6 = iVar8 - iVar4;
    pOVar9 = __last;
    if (iVar6 == iVar4) {
      do {
        pppOVar1 = &__middle->output_lists_[0].
                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.
                    _M_impl._M_finish;
        ppOVar3 = __middle->output_lists_[0].
                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.
                  _M_impl._M_start;
        __middle->output_lists_[0].
        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start
             = pOVar9->output_lists_[0].
               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.
               _M_start;
        pOVar9->output_lists_[0].
        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start
             = ppOVar3;
        pOVar9 = (Output_segment *)
                 &pOVar9->output_lists_[0].
                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.
                  _M_impl._M_finish;
        __middle = (Output_segment *)pppOVar1;
      } while (__last != (Output_segment *)pppOVar1);
      *__first = __last;
      return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>
              )__first;
    }
    pOVar9 = (Output_segment *)((int)__middle + ((int)param_4 - (int)__last));
    iVar5 = iVar4;
    iVar7 = iVar6;
    if (iVar6 <= iVar4) goto LAB_001c9d0c;
    while (iVar5 != 1) {
      if (0 < iVar6) {
        iVar4 = 0;
        pppOVar1 = &__middle->output_lists_[0].
                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.
                    _M_impl._M_start + iVar5;
        pOVar2 = __middle;
        do {
          ppOVar3 = pOVar2->output_lists_[0].
                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.
                    _M_impl._M_start;
          iVar4 = iVar4 + 1;
          pOVar2->output_lists_[0].
          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.
          _M_start = *pppOVar1;
          *pppOVar1 = ppOVar3;
          pppOVar1 = pppOVar1 + 1;
          pOVar2 = (Output_segment *)
                   &pOVar2->output_lists_[0].
                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.
                    _M_impl._M_finish;
        } while (iVar6 != iVar4);
        __middle = (Output_segment *)
                   (&__middle->output_lists_[0].
                     super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.
                     _M_impl._M_start + iVar6);
      }
      if (iVar5 == 0) {
        trap(7);
      }
      if (iVar8 % iVar5 == 0) {
LAB_001c9e0c:
        *__first = pOVar9;
        return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>
                )__first;
      }
      iVar4 = iVar5 - iVar8 % iVar5;
      iVar6 = iVar5 - iVar4;
      iVar8 = iVar5;
      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {
LAB_001c9d0c:
        pppOVar1 = &__middle->output_lists_[0].
                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.
                    _M_impl._M_start + iVar8;
        if (iVar7 == 1) {
          ppOVar3 = pppOVar1[-1];
          if (__middle != (Output_segment *)(pppOVar1 + -1)) {
            (*(code *)PTR_memmove_004c5af8)
                      ((int)pppOVar1 - ((int)(pppOVar1 + -1) - (int)__middle),__middle);
          }
          __middle->output_lists_[0].
          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.
          _M_start = ppOVar3;
          *__first = pOVar9;
          return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>
                  )__first;
        }
        __middle = (Output_segment *)(pppOVar1 + -iVar7);
        if (0 < iVar4) {
          iVar6 = 0;
          pOVar2 = __middle;
          do {
            pppOVar1 = pppOVar1 + -1;
            pOVar2 = (Output_segment *)&pOVar2[-1].field_0x1a4;
            ppOVar3 = *(pointer *)pOVar2;
            iVar6 = iVar6 + 1;
            *(pointer *)pOVar2 = *pppOVar1;
            *pppOVar1 = ppOVar3;
          } while (iVar6 != iVar4);
          __middle = (Output_segment *)((int)__middle + iVar6 * -4);
        }
        if (iVar7 == 0) {
          trap(7);
        }
        iVar4 = iVar8 % iVar7;
        if (iVar4 == 0) goto LAB_001c9e0c;
        iVar8 = iVar7;
        iVar6 = iVar7 - iVar4;
      }
    }
    pppOVar1 = &__middle->output_lists_[0].
                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.
                _M_finish;
    pppOVar10 = &__middle->output_lists_[0].
                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl
                 ._M_start + iVar8;
    ppOVar3 = __middle->output_lists_[0].
              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.
              _M_start;
    if (pppOVar10 != pppOVar1) {
      (*(code *)PTR_memmove_004c5af8)(__middle,pppOVar1,iVar8 * 4 + -4);
    }
    pppOVar10[-1] = ppOVar3;
    *__first = pOVar9;
  }
  return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>
          )__first;
}



/* __normal_iterator<gold::Output_segment**, std::vector<gold::Output_segment*,
   std::allocator<gold::Output_segment*> > >
   std::_V2::__rotate<__normal_iterator<gold::Output_segment**, std::vector<gold::Output_segment*,
   std::allocator<gold::Output_segment*> > > >(__normal_iterator<gold::Output_segment**,
   std::vector<gold::Output_segment*, std::allocator<gold::Output_segment*> > >,
   __normal_iterator<gold::Output_segment**, std::vector<gold::Output_segment*,
   std::allocator<gold::Output_segment*> > >, __normal_iterator<gold::Output_segment**,
   std::vector<gold::Output_segment*, std::allocator<gold::Output_segment*> > >,
   std::random_access_iterator_tag) */

int * std::_V2::
      __rotate<__normal_iterator<gold::Output_segment**,std::vector<gold::Output_segment*,std::allocator<gold::Output_segment*>>>>
                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  
  if (param_2 == param_3) {
    *param_1 = (int)param_4;
    return param_1;
  }
  if (param_4 == param_3) {
    *param_1 = (int)param_2;
  }
  else {
    iVar8 = (int)param_4 - (int)param_2 >> 2;
    iVar4 = (int)param_3 - (int)param_2 >> 2;
    iVar6 = iVar8 - iVar4;
    puVar1 = param_3;
    if (iVar6 == iVar4) {
      do {
        puVar2 = param_2 + 1;
        uVar3 = *param_2;
        *param_2 = *puVar1;
        *puVar1 = uVar3;
        puVar1 = puVar1 + 1;
        param_2 = puVar2;
      } while (param_3 != puVar2);
      *param_1 = (int)param_3;
      return param_1;
    }
    iVar9 = (int)param_2 + ((int)param_4 - (int)param_3);
    iVar5 = iVar4;
    iVar7 = iVar6;
    if (iVar6 <= iVar4) goto LAB_001c9d0c;
    while (iVar5 != 1) {
      if (0 < iVar6) {
        iVar4 = 0;
        puVar1 = param_2 + iVar5;
        puVar2 = param_2;
        do {
          uVar3 = *puVar2;
          iVar4 = iVar4 + 1;
          *puVar2 = *puVar1;
          *puVar1 = uVar3;
          puVar1 = puVar1 + 1;
          puVar2 = puVar2 + 1;
        } while (iVar6 != iVar4);
        param_2 = param_2 + iVar6;
      }
      if (iVar5 == 0) {
        trap(7);
      }
      if (iVar8 % iVar5 == 0) {
LAB_001c9e0c:
        *param_1 = iVar9;
        return param_1;
      }
      iVar4 = iVar5 - iVar8 % iVar5;
      iVar6 = iVar5 - iVar4;
      iVar8 = iVar5;
      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {
LAB_001c9d0c:
        puVar1 = param_2 + iVar8;
        if (iVar7 == 1) {
          uVar3 = puVar1[-1];
          if (param_2 != puVar1 + -1) {
            (*(code *)PTR_memmove_004c5af8)
                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);
          }
          *param_2 = uVar3;
          *param_1 = iVar9;
          return param_1;
        }
        param_2 = puVar1 + -iVar7;
        if (0 < iVar4) {
          iVar6 = 0;
          puVar2 = param_2;
          do {
            puVar1 = puVar1 + -1;
            puVar2 = puVar2 + -1;
            uVar3 = *puVar2;
            iVar6 = iVar6 + 1;
            *puVar2 = *puVar1;
            *puVar1 = uVar3;
          } while (iVar6 != iVar4);
          param_2 = param_2 + -iVar6;
        }
        if (iVar7 == 0) {
          trap(7);
        }
        iVar4 = iVar8 % iVar7;
        if (iVar4 == 0) goto LAB_001c9e0c;
        iVar8 = iVar7;
        iVar6 = iVar7 - iVar4;
      }
    }
    uVar3 = *param_2;
    if (param_2 + iVar8 != param_2 + 1) {
      (*(code *)PTR_memmove_004c5af8)(param_2,param_2 + 1,iVar8 * 4 + -4);
    }
    (param_2 + iVar8)[-1] = uVar3;
    *param_1 = iVar9;
  }
  return param_1;
}


lui gp,0x30
addiu gp,gp,-0x9fc
addu gp,gp,t9
addiu sp,sp,-0x30
sw gp,0x10(sp)
sw s1,0x1c(sp)
or s1,a0,zero
sw ra,0x2c(sp)
sw s4,0x28(sp)
sw s3,0x24(sp)
sw s2,0x20(sp)
beq a1,a2,0x001c9d9c
_sw s0,0x18(sp)
beq a3,a2,0x001c9d74
_subu t0,a3,a1
subu v0,a2,a1
sra t2,t0,0x2
sra t0,v0,0x2
subu t1,t2,t0
beq t1,t0,0x001c9dc4
_slt v0,t0,t1
subu a2,a3,a2
or s0,a1,zero
li a3,0x1
beq v0,zero,0x001c9d0c
_addu s2,a1,a2
beq t0,a3,0x001c9e60
_sll v0,t0,0x2
blez t1,0x001c9ce4
_addu v0,s0,v0
or a0,zero,zero
or v1,s0,zero
lw a1,0x0(v1)
addiu v0,v0,0x4
lw a2,-0x4(v0)
addiu v1,v1,0x4
addiu a0,a0,0x1
sw a2,-0x4(v1)
bne t1,a0,0x001c9cbc
_sw a1,-0x4(v0)
sll t1,t1,0x2
addu s0,s0,t1
teq t0,zero
div t2,t0
mfhi v0
beq v0,zero,0x001c9e0c
_or t2,t0,zero
subu t0,t0,v0
subu t1,t2,t0
slt v0,t0,t1
bne v0,zero,0x001c9ca4
_nop
sll a0,t2,0x2
beq t1,a3,0x001c9e34
_addu a0,s0,a0
sll s0,t1,0x2
blez t0,0x001c9d58
_subu s0,a0,s0
addiu a0,a0,-0x4
addiu v0,s0,-0x4
or v1,zero,zero
lw a1,0x0(v0)
addiu a0,a0,-0x4
lw a2,0x4(a0)
addiu v0,v0,-0x4
addiu v1,v1,0x1
sw a2,0x4(v0)
bne v1,t0,0x001c9d30
_sw a1,0x4(a0)
sll v1,v1,0x2
subu s0,s0,v1
teq t1,zero
div t2,t1
mfhi t0
beq t0,zero,0x001c9e0c
_or t2,t1,zero
b 0x001c9d00
_subu t1,t2,t0
sw a1,0x0(a0)
lw ra,0x2c(sp)
or v0,s1,zero
lw s4,0x28(sp)
lw s3,0x24(sp)
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x30
lw ra,0x2c(sp)
or v0,s1,zero
lw s4,0x28(sp)
lw s3,0x24(sp)
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
sw a3,0x0(a0)
jr ra
_addiu sp,sp,0x30
or v0,a2,zero
addiu a1,a1,0x4
lw a0,0x0(v0)
lw v1,-0x4(a1)
addiu v0,v0,0x4
sw a0,-0x4(a1)
bne a2,a1,0x001c9dc8
_sw v1,-0x4(v0)
lw ra,0x2c(sp)
or v0,s1,zero
lw s4,0x28(sp)
lw s3,0x24(sp)
lw s2,0x20(sp)
lw s0,0x18(sp)
sw a2,0x0(s1)
lw s1,0x1c(sp)
jr ra
_addiu sp,sp,0x30
lw ra,0x2c(sp)
or v0,s1,zero
lw s4,0x28(sp)
lw s3,0x24(sp)
lw s0,0x18(sp)
sw s2,0x0(s1)
lw s2,0x20(sp)
lw s1,0x1c(sp)
jr ra
_addiu sp,sp,0x30
addiu v0,a0,-0x4
beq s0,v0,0x001c9e54
_lw s3,-0x4(a0)
subu a2,v0,s0
lw t9,-0x3748(gp)
or a1,s0,zero
jalr t9
_subu a0,a0,a2
sw s3,0x0(s0)
b 0x001c9d78
_sw s2,0x0(s1)
sll a2,t2,0x2
addiu a1,s0,0x4
addu s3,s0,a2
beq s3,a1,0x001c9e84
_lw s4,0x0(s0)
lw t9,-0x3748(gp)
addiu a2,a2,-0x4
jalr t9
_or a0,s0,zero
sw s4,-0x4(s3)
b 0x001c9d78
_sw s2,0x0(s1)
(translation_unit "/* __normal_iterator<gold::Output_segment**, std::vector<gold::Output_segment*,\n   std::allocator<gold::Output_segment*> > >\n   std::_V2::__rotate<__normal_iterator<gold::Output_segment**, std::vector<gold::Output_segment*,\n   std::allocator<gold::Output_segment*> > > >(__normal_iterator<gold::Output_segment**,\n   std::vector<gold::Output_segment*, std::allocator<gold::Output_segment*> > >,\n   __normal_iterator<gold::Output_segment**, std::vector<gold::Output_segment*,\n   std::allocator<gold::Output_segment*> > >, __normal_iterator<gold::Output_segment**,\n   std::vector<gold::Output_segment*, std::allocator<gold::Output_segment*> > >,\n   std::random_access_iterator_tag) */\n\nint * std::_V2::\n      __rotate<__normal_iterator<gold::Output_segment**,std::vector<gold::Output_segment*,std::allocator<gold::Output_segment*>>>>\n                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  \n  if (param_2 == param_3) {\n    *param_1 = (int)param_4;\n    return param_1;\n  }\n  if (param_4 == param_3) {\n    *param_1 = (int)param_2;\n  }\n  else {\n    iVar8 = (int)param_4 - (int)param_2 >> 2;\n    iVar4 = (int)param_3 - (int)param_2 >> 2;\n    iVar6 = iVar8 - iVar4;\n    puVar1 = param_3;\n    if (iVar6 == iVar4) {\n      do {\n        puVar2 = param_2 + 1;\n        uVar3 = *param_2;\n        *param_2 = *puVar1;\n        *puVar1 = uVar3;\n        puVar1 = puVar1 + 1;\n        param_2 = puVar2;\n      } while (param_3 != puVar2);\n      *param_1 = (int)param_3;\n      return param_1;\n    }\n    iVar9 = (int)param_2 + ((int)param_4 - (int)param_3);\n    iVar5 = iVar4;\n    iVar7 = iVar6;\n    if (iVar6 <= iVar4) goto LAB_001c9d0c;\n    while (iVar5 != 1) {\n      if (0 < iVar6) {\n        iVar4 = 0;\n        puVar1 = param_2 + iVar5;\n        puVar2 = param_2;\n        do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);\n        param_2 = param_2 + iVar6;\n      }\n      if (iVar5 == 0) {\n        trap(7);\n      }\n      if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *param_1 = iVar9;\n        return param_1;\n      }\n      iVar4 = iVar5 - iVar8 % iVar5;\n      iVar6 = iVar5 - iVar4;\n      iVar8 = iVar5;\n      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        puVar1 = param_2 + iVar8;\n        if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }\n        param_2 = puVar1 + -iVar7;\n        if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }\n    }\n    uVar3 = *param_2;\n    if (param_2 + iVar8 != param_2 + 1) {\n      (*(code *)PTR_memmove_004c5af8)(param_2,param_2 + 1,iVar8 * 4 + -4);\n    }\n    (param_2 + iVar8)[-1] = uVar3;\n    *param_1 = iVar9;\n  }\n  return param_1;\n}\n\n" comment (declaration "int * std::_V2::\n      __rotate<__normal_iterator<gold::Output_segment**,std::vector<gold::Output_segment*,std::allocator<gold::Output_segment*>>>>\n                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4)\n\n{\n  undefined4 *puVar1;" primitive_type (pointer_declarator "* std::_V2::\n      __rotate<__normal_iterator<gold::Output_segment**,std::vector<gold::Output_segment" * (ERROR "std::_V2::\n      __rotate<__normal_iterator<gold::Output_segment" identifier : : identifier : : identifier < identifier < identifier : : identifier) (pointer_declarator "**,std::vector<gold::Output_segment" * (pointer_declarator "*,std::vector<gold::Output_segment" * (ERROR ",std::vector<gold::" , identifier : : identifier < identifier : :) identifier))) (ERROR "*" *) , (ERROR "std::allocator<gold::Output_segment*>>>>\n                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4)\n\n{\n  undefined4" identifier : : identifier < identifier : : (function_declarator "Output_segment*>>>>\n                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4)" identifier (ERROR "*>>>>" * >> >>) (parameter_list "(int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) { identifier) (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (if_statement "if (param_2 == param_3) {\n    *param_1 = (int)param_4;\n    return param_1;\n  }" if (parenthesized_expression "(param_2 == param_3)" ( (binary_expression "param_2 == param_3" identifier == identifier) )) (compound_statement "{\n    *param_1 = (int)param_4;\n    return param_1;\n  }" { (expression_statement "*param_1 = (int)param_4;" (assignment_expression "*param_1 = (int)param_4" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (return_statement "return param_1;" return identifier ;) })) (if_statement "if (param_4 == param_3) {\n    *param_1 = (int)param_2;\n  }\n  else {\n    iVar8 = (int)param_4 - (int)param_2 >> 2;\n    iVar4 = (int)param_3 - (int)param_2 >> 2;\n    iVar6 = iVar8 - iVar4;\n    puVar1 = param_3;\n    if (iVar6 == iVar4) {\n      do {\n        puVar2 = param_2 + 1;\n        uVar3 = *param_2;\n        *param_2 = *puVar1;\n        *puVar1 = uVar3;\n        puVar1 = puVar1 + 1;\n        param_2 = puVar2;\n      } while (param_3 != puVar2);\n      *param_1 = (int)param_3;\n      return param_1;\n    }\n    iVar9 = (int)param_2 + ((int)param_4 - (int)param_3);\n    iVar5 = iVar4;\n    iVar7 = iVar6;\n    if (iVar6 <= iVar4) goto LAB_001c9d0c;\n    while (iVar5 != 1) {\n      if (0 < iVar6) {\n        iVar4 = 0;\n        puVar1 = param_2 + iVar5;\n        puVar2 = param_2;\n        do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);\n        param_2 = param_2 + iVar6;\n      }\n      if (iVar5 == 0) {\n        trap(7);\n      }\n      if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *param_1 = iVar9;\n        return param_1;\n      }\n      iVar4 = iVar5 - iVar8 % iVar5;\n      iVar6 = iVar5 - iVar4;\n      iVar8 = iVar5;\n      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        puVar1 = param_2 + iVar8;\n        if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }\n        param_2 = puVar1 + -iVar7;\n        if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }\n    }\n    uVar3 = *param_2;\n    if (param_2 + iVar8 != param_2 + 1) {\n      (*(code *)PTR_memmove_004c5af8)(param_2,param_2 + 1,iVar8 * 4 + -4);\n    }\n    (param_2 + iVar8)[-1] = uVar3;\n    *param_1 = iVar9;\n  }" if (parenthesized_expression "(param_4 == param_3)" ( (binary_expression "param_4 == param_3" identifier == identifier) )) (compound_statement "{\n    *param_1 = (int)param_2;\n  }" { (expression_statement "*param_1 = (int)param_2;" (assignment_expression "*param_1 = (int)param_2" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n    iVar8 = (int)param_4 - (int)param_2 >> 2;\n    iVar4 = (int)param_3 - (int)param_2 >> 2;\n    iVar6 = iVar8 - iVar4;\n    puVar1 = param_3;\n    if (iVar6 == iVar4) {\n      do {\n        puVar2 = param_2 + 1;\n        uVar3 = *param_2;\n        *param_2 = *puVar1;\n        *puVar1 = uVar3;\n        puVar1 = puVar1 + 1;\n        param_2 = puVar2;\n      } while (param_3 != puVar2);\n      *param_1 = (int)param_3;\n      return param_1;\n    }\n    iVar9 = (int)param_2 + ((int)param_4 - (int)param_3);\n    iVar5 = iVar4;\n    iVar7 = iVar6;\n    if (iVar6 <= iVar4) goto LAB_001c9d0c;\n    while (iVar5 != 1) {\n      if (0 < iVar6) {\n        iVar4 = 0;\n        puVar1 = param_2 + iVar5;\n        puVar2 = param_2;\n        do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);\n        param_2 = param_2 + iVar6;\n      }\n      if (iVar5 == 0) {\n        trap(7);\n      }\n      if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *param_1 = iVar9;\n        return param_1;\n      }\n      iVar4 = iVar5 - iVar8 % iVar5;\n      iVar6 = iVar5 - iVar4;\n      iVar8 = iVar5;\n      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        puVar1 = param_2 + iVar8;\n        if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }\n        param_2 = puVar1 + -iVar7;\n        if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }\n    }\n    uVar3 = *param_2;\n    if (param_2 + iVar8 != param_2 + 1) {\n      (*(code *)PTR_memmove_004c5af8)(param_2,param_2 + 1,iVar8 * 4 + -4);\n    }\n    (param_2 + iVar8)[-1] = uVar3;\n    *param_1 = iVar9;\n  }" else (compound_statement "{\n    iVar8 = (int)param_4 - (int)param_2 >> 2;\n    iVar4 = (int)param_3 - (int)param_2 >> 2;\n    iVar6 = iVar8 - iVar4;\n    puVar1 = param_3;\n    if (iVar6 == iVar4) {\n      do {\n        puVar2 = param_2 + 1;\n        uVar3 = *param_2;\n        *param_2 = *puVar1;\n        *puVar1 = uVar3;\n        puVar1 = puVar1 + 1;\n        param_2 = puVar2;\n      } while (param_3 != puVar2);\n      *param_1 = (int)param_3;\n      return param_1;\n    }\n    iVar9 = (int)param_2 + ((int)param_4 - (int)param_3);\n    iVar5 = iVar4;\n    iVar7 = iVar6;\n    if (iVar6 <= iVar4) goto LAB_001c9d0c;\n    while (iVar5 != 1) {\n      if (0 < iVar6) {\n        iVar4 = 0;\n        puVar1 = param_2 + iVar5;\n        puVar2 = param_2;\n        do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);\n        param_2 = param_2 + iVar6;\n      }\n      if (iVar5 == 0) {\n        trap(7);\n      }\n      if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *param_1 = iVar9;\n        return param_1;\n      }\n      iVar4 = iVar5 - iVar8 % iVar5;\n      iVar6 = iVar5 - iVar4;\n      iVar8 = iVar5;\n      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        puVar1 = param_2 + iVar8;\n        if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }\n        param_2 = puVar1 + -iVar7;\n        if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }\n    }\n    uVar3 = *param_2;\n    if (param_2 + iVar8 != param_2 + 1) {\n      (*(code *)PTR_memmove_004c5af8)(param_2,param_2 + 1,iVar8 * 4 + -4);\n    }\n    (param_2 + iVar8)[-1] = uVar3;\n    *param_1 = iVar9;\n  }" { (expression_statement "iVar8 = (int)param_4 - (int)param_2 >> 2;" (assignment_expression "iVar8 = (int)param_4 - (int)param_2 >> 2" identifier = (binary_expression "(int)param_4 - (int)param_2 >> 2" (binary_expression "(int)param_4 - (int)param_2" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (expression_statement "iVar4 = (int)param_3 - (int)param_2 >> 2;" (assignment_expression "iVar4 = (int)param_3 - (int)param_2 >> 2" identifier = (binary_expression "(int)param_3 - (int)param_2 >> 2" (binary_expression "(int)param_3 - (int)param_2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (expression_statement "iVar6 = iVar8 - iVar4;" (assignment_expression "iVar6 = iVar8 - iVar4" identifier = (binary_expression "iVar8 - iVar4" identifier - identifier)) ;) (expression_statement "puVar1 = param_3;" (assignment_expression "puVar1 = param_3" identifier = identifier) ;) (if_statement "if (iVar6 == iVar4) {\n      do {\n        puVar2 = param_2 + 1;\n        uVar3 = *param_2;\n        *param_2 = *puVar1;\n        *puVar1 = uVar3;\n        puVar1 = puVar1 + 1;\n        param_2 = puVar2;\n      } while (param_3 != puVar2);\n      *param_1 = (int)param_3;\n      return param_1;\n    }" if (parenthesized_expression "(iVar6 == iVar4)" ( (binary_expression "iVar6 == iVar4" identifier == identifier) )) (compound_statement "{\n      do {\n        puVar2 = param_2 + 1;\n        uVar3 = *param_2;\n        *param_2 = *puVar1;\n        *puVar1 = uVar3;\n        puVar1 = puVar1 + 1;\n        param_2 = puVar2;\n      } while (param_3 != puVar2);\n      *param_1 = (int)param_3;\n      return param_1;\n    }" { (do_statement "do {\n        puVar2 = param_2 + 1;\n        uVar3 = *param_2;\n        *param_2 = *puVar1;\n        *puVar1 = uVar3;\n        puVar1 = puVar1 + 1;\n        param_2 = puVar2;\n      } while (param_3 != puVar2);" do (compound_statement "{\n        puVar2 = param_2 + 1;\n        uVar3 = *param_2;\n        *param_2 = *puVar1;\n        *puVar1 = uVar3;\n        puVar1 = puVar1 + 1;\n        param_2 = puVar2;\n      }" { (expression_statement "puVar2 = param_2 + 1;" (assignment_expression "puVar2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = *param_2;" (assignment_expression "uVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*param_2 = *puVar1;" (assignment_expression "*param_2 = *puVar1" (pointer_expression "*param_2" * identifier) = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "*puVar1 = uVar3;" (assignment_expression "*puVar1 = uVar3" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "puVar1 = puVar1 + 1;" (assignment_expression "puVar1 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) (expression_statement "param_2 = puVar2;" (assignment_expression "param_2 = puVar2" identifier = identifier) ;) }) while (parenthesized_expression "(param_3 != puVar2)" ( (binary_expression "param_3 != puVar2" identifier != identifier) )) ;) (expression_statement "*param_1 = (int)param_3;" (assignment_expression "*param_1 = (int)param_3" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (return_statement "return param_1;" return identifier ;) })) (expression_statement "iVar9 = (int)param_2 + ((int)param_4 - (int)param_3);" (assignment_expression "iVar9 = (int)param_2 + ((int)param_4 - (int)param_3)" identifier = (binary_expression "(int)param_2 + ((int)param_4 - (int)param_3)" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((int)param_4 - (int)param_3)" ( (binary_expression "(int)param_4 - (int)param_3" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "iVar5 = iVar4;" (assignment_expression "iVar5 = iVar4" identifier = identifier) ;) (expression_statement "iVar7 = iVar6;" (assignment_expression "iVar7 = iVar6" identifier = identifier) ;) (if_statement "if (iVar6 <= iVar4) goto LAB_001c9d0c;" if (parenthesized_expression "(iVar6 <= iVar4)" ( (binary_expression "iVar6 <= iVar4" identifier <= identifier) )) (goto_statement "goto LAB_001c9d0c;" goto statement_identifier ;)) (while_statement "while (iVar5 != 1) {\n      if (0 < iVar6) {\n        iVar4 = 0;\n        puVar1 = param_2 + iVar5;\n        puVar2 = param_2;\n        do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);\n        param_2 = param_2 + iVar6;\n      }\n      if (iVar5 == 0) {\n        trap(7);\n      }\n      if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *param_1 = iVar9;\n        return param_1;\n      }\n      iVar4 = iVar5 - iVar8 % iVar5;\n      iVar6 = iVar5 - iVar4;\n      iVar8 = iVar5;\n      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        puVar1 = param_2 + iVar8;\n        if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }\n        param_2 = puVar1 + -iVar7;\n        if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }\n    }" while (parenthesized_expression "(iVar5 != 1)" ( (binary_expression "iVar5 != 1" identifier != number_literal) )) (compound_statement "{\n      if (0 < iVar6) {\n        iVar4 = 0;\n        puVar1 = param_2 + iVar5;\n        puVar2 = param_2;\n        do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);\n        param_2 = param_2 + iVar6;\n      }\n      if (iVar5 == 0) {\n        trap(7);\n      }\n      if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *param_1 = iVar9;\n        return param_1;\n      }\n      iVar4 = iVar5 - iVar8 % iVar5;\n      iVar6 = iVar5 - iVar4;\n      iVar8 = iVar5;\n      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        puVar1 = param_2 + iVar8;\n        if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }\n        param_2 = puVar1 + -iVar7;\n        if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }\n    }" { (if_statement "if (0 < iVar6) {\n        iVar4 = 0;\n        puVar1 = param_2 + iVar5;\n        puVar2 = param_2;\n        do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);\n        param_2 = param_2 + iVar6;\n      }" if (parenthesized_expression "(0 < iVar6)" ( (binary_expression "0 < iVar6" number_literal < identifier) )) (compound_statement "{\n        iVar4 = 0;\n        puVar1 = param_2 + iVar5;\n        puVar2 = param_2;\n        do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);\n        param_2 = param_2 + iVar6;\n      }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "puVar1 = param_2 + iVar5;" (assignment_expression "puVar1 = param_2 + iVar5" identifier = (binary_expression "param_2 + iVar5" identifier + identifier)) ;) (expression_statement "puVar2 = param_2;" (assignment_expression "puVar2 = param_2" identifier = identifier) ;) (do_statement "do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);" do (compound_statement "{\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        }" { (expression_statement "uVar3 = *puVar2;" (assignment_expression "uVar3 = *puVar2" identifier = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "*puVar2 = *puVar1;" (assignment_expression "*puVar2 = *puVar1" (pointer_expression "*puVar2" * identifier) = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "*puVar1 = uVar3;" (assignment_expression "*puVar1 = uVar3" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "puVar1 = puVar1 + 1;" (assignment_expression "puVar1 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) (expression_statement "puVar2 = puVar2 + 1;" (assignment_expression "puVar2 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 != iVar4)" ( (binary_expression "iVar6 != iVar4" identifier != identifier) )) ;) (expression_statement "param_2 = param_2 + iVar6;" (assignment_expression "param_2 = param_2 + iVar6" identifier = (binary_expression "param_2 + iVar6" identifier + identifier)) ;) })) (if_statement "if (iVar5 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *param_1 = iVar9;\n        return param_1;\n      }" if (parenthesized_expression "(iVar8 % iVar5 == 0)" ( (binary_expression "iVar8 % iVar5 == 0" (binary_expression "iVar8 % iVar5" identifier % identifier) == number_literal) )) (compound_statement "{\nLAB_001c9e0c:\n        *param_1 = iVar9;\n        return param_1;\n      }" { (labeled_statement "LAB_001c9e0c:\n        *param_1 = iVar9;" statement_identifier : (expression_statement "*param_1 = iVar9;" (assignment_expression "*param_1 = iVar9" (pointer_expression "*param_1" * identifier) = identifier) ;)) (return_statement "return param_1;" return identifier ;) })) (expression_statement "iVar4 = iVar5 - iVar8 % iVar5;" (assignment_expression "iVar4 = iVar5 - iVar8 % iVar5" identifier = (binary_expression "iVar5 - iVar8 % iVar5" identifier - (binary_expression "iVar8 % iVar5" identifier % identifier))) ;) (expression_statement "iVar6 = iVar5 - iVar4;" (assignment_expression "iVar6 = iVar5 - iVar4" identifier = (binary_expression "iVar5 - iVar4" identifier - identifier)) ;) (expression_statement "iVar8 = iVar5;" (assignment_expression "iVar8 = iVar5" identifier = identifier) ;) (while_statement "while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        puVar1 = param_2 + iVar8;\n        if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }\n        param_2 = puVar1 + -iVar7;\n        if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }" while (parenthesized_expression "(iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4)" ( (comma_expression "iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4" (assignment_expression "iVar5 = iVar4" identifier = identifier) , (comma_expression "iVar7 = iVar6, iVar6 <= iVar4" (assignment_expression "iVar7 = iVar6" identifier = identifier) , (binary_expression "iVar6 <= iVar4" identifier <= identifier))) )) (compound_statement "{\nLAB_001c9d0c:\n        puVar1 = param_2 + iVar8;\n        if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }\n        param_2 = puVar1 + -iVar7;\n        if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }" { (labeled_statement "LAB_001c9d0c:\n        puVar1 = param_2 + iVar8;" statement_identifier : (expression_statement "puVar1 = param_2 + iVar8;" (assignment_expression "puVar1 = param_2 + iVar8" identifier = (binary_expression "param_2 + iVar8" identifier + identifier)) ;)) (if_statement "if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }" if (parenthesized_expression "(iVar7 == 1)" ( (binary_expression "iVar7 == 1" identifier == number_literal) )) (compound_statement "{\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }" { (expression_statement "uVar3 = puVar1[-1];" (assignment_expression "uVar3 = puVar1[-1]" identifier = (subscript_expression "puVar1[-1]" identifier [ number_literal ])) ;) (if_statement "if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }" if (parenthesized_expression "(param_2 != puVar1 + -1)" ( (binary_expression "param_2 != puVar1 + -1" identifier != (binary_expression "puVar1 + -1" identifier + number_literal)) )) (compound_statement "{\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }" { (expression_statement "(*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);" (call_expression "(*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2)" (parenthesized_expression "(*(code *)PTR_memmove_004c5af8)" ( (pointer_expression "*(code *)PTR_memmove_004c5af8" * (cast_expression "(code *)PTR_memmove_004c5af8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2)" ( (binary_expression "(int)puVar1 - ((int)(puVar1 + -1) - (int)param_2)" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (parenthesized_expression "((int)(puVar1 + -1) - (int)param_2)" ( (binary_expression "(int)(puVar1 + -1) - (int)param_2" (cast_expression "(int)(puVar1 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar1 + -1)" ( (binary_expression "puVar1 + -1" identifier + number_literal) ))) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ))) , identifier ))) ;) })) (expression_statement "*param_2 = uVar3;" (assignment_expression "*param_2 = uVar3" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "*param_1 = iVar9;" (assignment_expression "*param_1 = iVar9" (pointer_expression "*param_1" * identifier) = identifier) ;) (return_statement "return param_1;" return identifier ;) })) (expression_statement "param_2 = puVar1 + -iVar7;" (assignment_expression "param_2 = puVar1 + -iVar7" identifier = (binary_expression "puVar1 + -iVar7" identifier + (unary_expression "-iVar7" - identifier))) ;) (if_statement "if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }" if (parenthesized_expression "(0 < iVar4)" ( (binary_expression "0 < iVar4" number_literal < identifier) )) (compound_statement "{\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "puVar2 = param_2;" (assignment_expression "puVar2 = param_2" identifier = identifier) ;) (do_statement "do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);" do (compound_statement "{\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          }" { (expression_statement "puVar1 = puVar1 + -1;" (assignment_expression "puVar1 = puVar1 + -1" identifier = (binary_expression "puVar1 + -1" identifier + number_literal)) ;) (expression_statement "puVar2 = puVar2 + -1;" (assignment_expression "puVar2 = puVar2 + -1" identifier = (binary_expression "puVar2 + -1" identifier + number_literal)) ;) (expression_statement "uVar3 = *puVar2;" (assignment_expression "uVar3 = *puVar2" identifier = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "*puVar2 = *puVar1;" (assignment_expression "*puVar2 = *puVar1" (pointer_expression "*puVar2" * identifier) = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "*puVar1 = uVar3;" (assignment_expression "*puVar1 = uVar3" (pointer_expression "*puVar1" * identifier) = identifier) ;) }) while (parenthesized_expression "(iVar6 != iVar4)" ( (binary_expression "iVar6 != iVar4" identifier != identifier) )) ;) (expression_statement "param_2 = param_2 + -iVar6;" (assignment_expression "param_2 = param_2 + -iVar6" identifier = (binary_expression "param_2 + -iVar6" identifier + (unary_expression "-iVar6" - identifier))) ;) })) (if_statement "if (iVar7 == 0) {\n          trap(7);\n        }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n          trap(7);\n        }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "iVar4 = iVar8 % iVar7;" (assignment_expression "iVar4 = iVar8 % iVar7" identifier = (binary_expression "iVar8 % iVar7" identifier % identifier)) ;) (if_statement "if (iVar4 == 0) goto LAB_001c9e0c;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001c9e0c;" goto statement_identifier ;)) (expression_statement "iVar8 = iVar7;" (assignment_expression "iVar8 = iVar7" identifier = identifier) ;) (expression_statement "iVar6 = iVar7 - iVar4;" (assignment_expression "iVar6 = iVar7 - iVar4" identifier = (binary_expression "iVar7 - iVar4" identifier - identifier)) ;) })) })) (expression_statement "uVar3 = *param_2;" (assignment_expression "uVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (param_2 + iVar8 != param_2 + 1) {\n      (*(code *)PTR_memmove_004c5af8)(param_2,param_2 + 1,iVar8 * 4 + -4);\n    }" if (parenthesized_expression "(param_2 + iVar8 != param_2 + 1)" ( (binary_expression "param_2 + iVar8 != param_2 + 1" (binary_expression "param_2 + iVar8" identifier + identifier) != (binary_expression "param_2 + 1" identifier + number_literal)) )) (compound_statement "{\n      (*(code *)PTR_memmove_004c5af8)(param_2,param_2 + 1,iVar8 * 4 + -4);\n    }" { (expression_statement "(*(code *)PTR_memmove_004c5af8)(param_2,param_2 + 1,iVar8 * 4 + -4);" (call_expression "(*(code *)PTR_memmove_004c5af8)(param_2,param_2 + 1,iVar8 * 4 + -4)" (parenthesized_expression "(*(code *)PTR_memmove_004c5af8)" ( (pointer_expression "*(code *)PTR_memmove_004c5af8" * (cast_expression "(code *)PTR_memmove_004c5af8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,param_2 + 1,iVar8 * 4 + -4)" ( identifier , (binary_expression "param_2 + 1" identifier + number_literal) , (binary_expression "iVar8 * 4 + -4" (binary_expression "iVar8 * 4" identifier * number_literal) + number_literal) ))) ;) })) (expression_statement "(param_2 + iVar8)[-1] = uVar3;" (assignment_expression "(param_2 + iVar8)[-1] = uVar3" (subscript_expression "(param_2 + iVar8)[-1]" (parenthesized_expression "(param_2 + iVar8)" ( (binary_expression "param_2 + iVar8" identifier + identifier) )) [ number_literal ]) = identifier) ;) (expression_statement "*param_1 = iVar9;" (assignment_expression "*param_1 = iVar9" (pointer_expression "*param_1" * identifier) = identifier) ;) }))) (return_statement "return param_1;" return identifier ;) (ERROR "}" }))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n/* DWARF original name: __rotate<__gnu_cxx::__normal_iterator<gold::Output_segment**,\n   std::vector<gold::Output_segment*> > > */\n\n__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n std::_V2::\n __rotate<__gnu_cxx::__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*>_>_>\n           (Output_segment **__first,Output_segment *__middle,Output_segment *__last,\n           Output_segment *param_4)\n\n{\n  pointer *pppOVar1;\n  Output_segment *pOVar2;\n  pointer ppOVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  Output_segment *pOVar9;\n  pointer *pppOVar10;\n  \n  if (__middle == __last) {\n    *__first = param_4;\n    return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n            )__first;\n  }\n  if (param_4 == __last) {\n    *__first = __middle;\n  }\n  else {\n    iVar8 = (int)param_4 - (int)__middle >> 2;\n    iVar4 = (int)__last - (int)__middle >> 2;\n    iVar6 = iVar8 - iVar4;\n    pOVar9 = __last;\n    if (iVar6 == iVar4) {\n      do {\n        pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n        ppOVar3 = __middle->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_start;\n        __middle->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start\n             = pOVar9->output_lists_[0].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_start;\n        pOVar9->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start\n             = ppOVar3;\n        pOVar9 = (Output_segment *)\n                 &pOVar9->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_finish;\n        __middle = (Output_segment *)pppOVar1;\n      } while (__last != (Output_segment *)pppOVar1);\n      *__first = __last;\n      return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n              )__first;\n    }\n    pOVar9 = (Output_segment *)((int)__middle + ((int)param_4 - (int)__last));\n    iVar5 = iVar4;\n    iVar7 = iVar6;\n    if (iVar6 <= iVar4) goto LAB_001c9d0c;\n    while (iVar5 != 1) {\n      if (0 < iVar6) {\n        iVar4 = 0;\n        pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start + iVar5;\n        pOVar2 = __middle;\n        do {\n          ppOVar3 = pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start;\n          iVar4 = iVar4 + 1;\n          pOVar2->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start = *pppOVar1;\n          *pppOVar1 = ppOVar3;\n          pppOVar1 = pppOVar1 + 1;\n          pOVar2 = (Output_segment *)\n                   &pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n        } while (iVar6 != iVar4);\n        __middle = (Output_segment *)\n                   (&__middle->output_lists_[0].\n                     super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                     _M_impl._M_start + iVar6);\n      }\n      if (iVar5 == 0) {\n        trap(7);\n      }\n      if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *__first = pOVar9;\n        return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n                )__first;\n      }\n      iVar4 = iVar5 - iVar8 % iVar5;\n      iVar6 = iVar5 - iVar4;\n      iVar8 = iVar5;\n      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start + iVar8;\n        if (iVar7 == 1) {\n          ppOVar3 = pppOVar1[-1];\n          if (__middle != (Output_segment *)(pppOVar1 + -1)) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)pppOVar1 - ((int)(pppOVar1 + -1) - (int)__middle),__middle);\n          }\n          __middle->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start = ppOVar3;\n          *__first = pOVar9;\n          return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n                  )__first;\n        }\n        __middle = (Output_segment *)(pppOVar1 + -iVar7);\n        if (0 < iVar4) {\n          iVar6 = 0;\n          pOVar2 = __middle;\n          do {\n            pppOVar1 = pppOVar1 + -1;\n            pOVar2 = (Output_segment *)&pOVar2[-1].field_0x1a4;\n            ppOVar3 = *(pointer *)pOVar2;\n            iVar6 = iVar6 + 1;\n            *(pointer *)pOVar2 = *pppOVar1;\n            *pppOVar1 = ppOVar3;\n          } while (iVar6 != iVar4);\n          __middle = (Output_segment *)((int)__middle + iVar6 * -4);\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }\n    }\n    pppOVar1 = &__middle->output_lists_[0].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_finish;\n    pppOVar10 = &__middle->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_start + iVar8;\n    ppOVar3 = __middle->output_lists_[0].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n              _M_start;\n    if (pppOVar10 != pppOVar1) {\n      (*(code *)PTR_memmove_004c5af8)(__middle,pppOVar1,iVar8 * 4 + -4);\n    }\n    pppOVar10[-1] = ppOVar3;\n    *__first = pOVar9;\n  }\n  return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n          )__first;\n}\n\n" comment comment (expression_statement "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n std::_V2::\n __rotate<__gnu_cxx::__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*>_>_>\n           (Output_segment **__first,Output_segment *__middle,Output_segment *__last,\n           Output_segment *param_4)\n\n{\n  pointer *pppOVar1;" (update_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n std::_V2::\n __rotate<__gnu_cxx::__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*>_>_>\n           (Output_segment **__first,Output_segment *__middle,Output_segment *__last,\n           Output_segment *param_4)\n\n{\n  pointer *pppOVar1" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n std::_V2::\n __rotate<__gnu_cxx::__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*>_>_>\n           (Output_segment **__first,Output_segment *__middle,Output_segment *__last,\n           Output_segment *param_4)\n\n{\n  pointer *pppOVar1" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n std::_V2::\n __rotate<__gnu_cxx::__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*>_>_" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n std::_V2::\n __rotate<__gnu_cxx::__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*>_" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n std::_V2::\n __rotate<__gnu_cxx::__normal_iterator<gold::Output_segment**,_std::vector<gold" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n std::_V2::\n __rotate<__gnu_cxx::__normal_iterator<gold::Output_segment**,_std" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n std::_V2::\n __rotate<__gnu_cxx::__normal_iterator<gold" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n std::_V2::\n __rotate<__gnu_cxx" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n std" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold" (binary_expression "__normal_iterator<gold::Output_segment**,_std" (binary_expression "__normal_iterator<gold" identifier < identifier) (ERROR "::Output_segment" : : identifier) * (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR ">" >) identifier) > identifier) > identifier) (ERROR "::_V2::\n __rotate" : : identifier : : identifier) < identifier) (ERROR "::__normal_iterator" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR ">" >) identifier) > identifier) > (binary_expression "(Output_segment **__first,Output_segment *__middle,Output_segment *__last,\n           Output_segment *param_4)\n\n{\n  pointer *pppOVar1" (parenthesized_expression "(Output_segment **__first,Output_segment *__middle,Output_segment *__last,\n           Output_segment *param_4)" ( (comma_expression "Output_segment **__first,Output_segment *__middle,Output_segment *__last,\n           Output_segment *param_4" (binary_expression "Output_segment **__first" identifier * (pointer_expression "*__first" * identifier)) , (comma_expression "Output_segment *__middle,Output_segment *__last,\n           Output_segment *param_4" (binary_expression "Output_segment *__middle" identifier * identifier) , (comma_expression "Output_segment *__last,\n           Output_segment *param_4" (binary_expression "Output_segment *__last" identifier * identifier) , (binary_expression "Output_segment *param_4" identifier * identifier)))) )) (ERROR "{\n  pointer" { identifier) * identifier)) --) ;) (declaration "Output_segment *pOVar2;" type_identifier (pointer_declarator "*pOVar2" * identifier) ;) (declaration "pointer ppOVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "Output_segment *pOVar9;" type_identifier (pointer_declarator "*pOVar9" * identifier) ;) (declaration "pointer *pppOVar10;" type_identifier (pointer_declarator "*pppOVar10" * identifier) ;) (if_statement "if (__middle == __last) {\n    *__first = param_4;\n    return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n            )__first;\n  }" if (parenthesized_expression "(__middle == __last)" ( (binary_expression "__middle == __last" identifier == identifier) )) (compound_statement "{\n    *__first = param_4;\n    return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n            )__first;\n  }" { (expression_statement "*__first = param_4;" (assignment_expression "*__first = param_4" (pointer_expression "*__first" * identifier) = identifier) ;) (return_statement "return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n            )__first;" return (parenthesized_expression "(__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n            )__first" ( (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n            )__first" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold" (binary_expression "__normal_iterator<gold::Output_segment**,_std" (binary_expression "__normal_iterator<gold" identifier < identifier) (ERROR "::Output_segment" : : identifier) * (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR ">" >) identifier) > identifier) > (ERROR ")" )) identifier) )) ;) })) (if_statement "if (param_4 == __last) {\n    *__first = __middle;\n  }\n  else {\n    iVar8 = (int)param_4 - (int)__middle >> 2;\n    iVar4 = (int)__last - (int)__middle >> 2;\n    iVar6 = iVar8 - iVar4;\n    pOVar9 = __last;\n    if (iVar6 == iVar4) {\n      do {\n        pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n        ppOVar3 = __middle->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_start;\n        __middle->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start\n             = pOVar9->output_lists_[0].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_start;\n        pOVar9->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start\n             = ppOVar3;\n        pOVar9 = (Output_segment *)\n                 &pOVar9->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_finish;\n        __middle = (Output_segment *)pppOVar1;\n      } while (__last != (Output_segment *)pppOVar1);\n      *__first = __last;\n      return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n              )__first;\n    }\n    pOVar9 = (Output_segment *)((int)__middle + ((int)param_4 - (int)__last));\n    iVar5 = iVar4;\n    iVar7 = iVar6;\n    if (iVar6 <= iVar4) goto LAB_001c9d0c;\n    while (iVar5 != 1) {\n      if (0 < iVar6) {\n        iVar4 = 0;\n        pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start + iVar5;\n        pOVar2 = __middle;\n        do {\n          ppOVar3 = pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start;\n          iVar4 = iVar4 + 1;\n          pOVar2->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start = *pppOVar1;\n          *pppOVar1 = ppOVar3;\n          pppOVar1 = pppOVar1 + 1;\n          pOVar2 = (Output_segment *)\n                   &pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n        } while (iVar6 != iVar4);\n        __middle = (Output_segment *)\n                   (&__middle->output_lists_[0].\n                     super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                     _M_impl._M_start + iVar6);\n      }\n      if (iVar5 == 0) {\n        trap(7);\n      }\n      if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *__first = pOVar9;\n        return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n                )__first;\n      }\n      iVar4 = iVar5 - iVar8 % iVar5;\n      iVar6 = iVar5 - iVar4;\n      iVar8 = iVar5;\n      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start + iVar8;\n        if (iVar7 == 1) {\n          ppOVar3 = pppOVar1[-1];\n          if (__middle != (Output_segment *)(pppOVar1 + -1)) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)pppOVar1 - ((int)(pppOVar1 + -1) - (int)__middle),__middle);\n          }\n          __middle->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start = ppOVar3;\n          *__first = pOVar9;\n          return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n                  )__first;\n        }\n        __middle = (Output_segment *)(pppOVar1 + -iVar7);\n        if (0 < iVar4) {\n          iVar6 = 0;\n          pOVar2 = __middle;\n          do {\n            pppOVar1 = pppOVar1 + -1;\n            pOVar2 = (Output_segment *)&pOVar2[-1].field_0x1a4;\n            ppOVar3 = *(pointer *)pOVar2;\n            iVar6 = iVar6 + 1;\n            *(pointer *)pOVar2 = *pppOVar1;\n            *pppOVar1 = ppOVar3;\n          } while (iVar6 != iVar4);\n          __middle = (Output_segment *)((int)__middle + iVar6 * -4);\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }\n    }\n    pppOVar1 = &__middle->output_lists_[0].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_finish;\n    pppOVar10 = &__middle->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_start + iVar8;\n    ppOVar3 = __middle->output_lists_[0].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n              _M_start;\n    if (pppOVar10 != pppOVar1) {\n      (*(code *)PTR_memmove_004c5af8)(__middle,pppOVar1,iVar8 * 4 + -4);\n    }\n    pppOVar10[-1] = ppOVar3;\n    *__first = pOVar9;\n  }" if (parenthesized_expression "(param_4 == __last)" ( (binary_expression "param_4 == __last" identifier == identifier) )) (compound_statement "{\n    *__first = __middle;\n  }" { (expression_statement "*__first = __middle;" (assignment_expression "*__first = __middle" (pointer_expression "*__first" * identifier) = identifier) ;) }) (else_clause "else {\n    iVar8 = (int)param_4 - (int)__middle >> 2;\n    iVar4 = (int)__last - (int)__middle >> 2;\n    iVar6 = iVar8 - iVar4;\n    pOVar9 = __last;\n    if (iVar6 == iVar4) {\n      do {\n        pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n        ppOVar3 = __middle->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_start;\n        __middle->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start\n             = pOVar9->output_lists_[0].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_start;\n        pOVar9->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start\n             = ppOVar3;\n        pOVar9 = (Output_segment *)\n                 &pOVar9->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_finish;\n        __middle = (Output_segment *)pppOVar1;\n      } while (__last != (Output_segment *)pppOVar1);\n      *__first = __last;\n      return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n              )__first;\n    }\n    pOVar9 = (Output_segment *)((int)__middle + ((int)param_4 - (int)__last));\n    iVar5 = iVar4;\n    iVar7 = iVar6;\n    if (iVar6 <= iVar4) goto LAB_001c9d0c;\n    while (iVar5 != 1) {\n      if (0 < iVar6) {\n        iVar4 = 0;\n        pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start + iVar5;\n        pOVar2 = __middle;\n        do {\n          ppOVar3 = pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start;\n          iVar4 = iVar4 + 1;\n          pOVar2->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start = *pppOVar1;\n          *pppOVar1 = ppOVar3;\n          pppOVar1 = pppOVar1 + 1;\n          pOVar2 = (Output_segment *)\n                   &pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n        } while (iVar6 != iVar4);\n        __middle = (Output_segment *)\n                   (&__middle->output_lists_[0].\n                     super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                     _M_impl._M_start + iVar6);\n      }\n      if (iVar5 == 0) {\n        trap(7);\n      }\n      if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *__first = pOVar9;\n        return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n                )__first;\n      }\n      iVar4 = iVar5 - iVar8 % iVar5;\n      iVar6 = iVar5 - iVar4;\n      iVar8 = iVar5;\n      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start + iVar8;\n        if (iVar7 == 1) {\n          ppOVar3 = pppOVar1[-1];\n          if (__middle != (Output_segment *)(pppOVar1 + -1)) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)pppOVar1 - ((int)(pppOVar1 + -1) - (int)__middle),__middle);\n          }\n          __middle->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start = ppOVar3;\n          *__first = pOVar9;\n          return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n                  )__first;\n        }\n        __middle = (Output_segment *)(pppOVar1 + -iVar7);\n        if (0 < iVar4) {\n          iVar6 = 0;\n          pOVar2 = __middle;\n          do {\n            pppOVar1 = pppOVar1 + -1;\n            pOVar2 = (Output_segment *)&pOVar2[-1].field_0x1a4;\n            ppOVar3 = *(pointer *)pOVar2;\n            iVar6 = iVar6 + 1;\n            *(pointer *)pOVar2 = *pppOVar1;\n            *pppOVar1 = ppOVar3;\n          } while (iVar6 != iVar4);\n          __middle = (Output_segment *)((int)__middle + iVar6 * -4);\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }\n    }\n    pppOVar1 = &__middle->output_lists_[0].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_finish;\n    pppOVar10 = &__middle->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_start + iVar8;\n    ppOVar3 = __middle->output_lists_[0].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n              _M_start;\n    if (pppOVar10 != pppOVar1) {\n      (*(code *)PTR_memmove_004c5af8)(__middle,pppOVar1,iVar8 * 4 + -4);\n    }\n    pppOVar10[-1] = ppOVar3;\n    *__first = pOVar9;\n  }" else (compound_statement "{\n    iVar8 = (int)param_4 - (int)__middle >> 2;\n    iVar4 = (int)__last - (int)__middle >> 2;\n    iVar6 = iVar8 - iVar4;\n    pOVar9 = __last;\n    if (iVar6 == iVar4) {\n      do {\n        pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n        ppOVar3 = __middle->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_start;\n        __middle->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start\n             = pOVar9->output_lists_[0].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_start;\n        pOVar9->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start\n             = ppOVar3;\n        pOVar9 = (Output_segment *)\n                 &pOVar9->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_finish;\n        __middle = (Output_segment *)pppOVar1;\n      } while (__last != (Output_segment *)pppOVar1);\n      *__first = __last;\n      return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n              )__first;\n    }\n    pOVar9 = (Output_segment *)((int)__middle + ((int)param_4 - (int)__last));\n    iVar5 = iVar4;\n    iVar7 = iVar6;\n    if (iVar6 <= iVar4) goto LAB_001c9d0c;\n    while (iVar5 != 1) {\n      if (0 < iVar6) {\n        iVar4 = 0;\n        pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start + iVar5;\n        pOVar2 = __middle;\n        do {\n          ppOVar3 = pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start;\n          iVar4 = iVar4 + 1;\n          pOVar2->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start = *pppOVar1;\n          *pppOVar1 = ppOVar3;\n          pppOVar1 = pppOVar1 + 1;\n          pOVar2 = (Output_segment *)\n                   &pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n        } while (iVar6 != iVar4);\n        __middle = (Output_segment *)\n                   (&__middle->output_lists_[0].\n                     super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                     _M_impl._M_start + iVar6);\n      }\n      if (iVar5 == 0) {\n        trap(7);\n      }\n      if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *__first = pOVar9;\n        return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n                )__first;\n      }\n      iVar4 = iVar5 - iVar8 % iVar5;\n      iVar6 = iVar5 - iVar4;\n      iVar8 = iVar5;\n      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start + iVar8;\n        if (iVar7 == 1) {\n          ppOVar3 = pppOVar1[-1];\n          if (__middle != (Output_segment *)(pppOVar1 + -1)) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)pppOVar1 - ((int)(pppOVar1 + -1) - (int)__middle),__middle);\n          }\n          __middle->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start = ppOVar3;\n          *__first = pOVar9;\n          return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n                  )__first;\n        }\n        __middle = (Output_segment *)(pppOVar1 + -iVar7);\n        if (0 < iVar4) {\n          iVar6 = 0;\n          pOVar2 = __middle;\n          do {\n            pppOVar1 = pppOVar1 + -1;\n            pOVar2 = (Output_segment *)&pOVar2[-1].field_0x1a4;\n            ppOVar3 = *(pointer *)pOVar2;\n            iVar6 = iVar6 + 1;\n            *(pointer *)pOVar2 = *pppOVar1;\n            *pppOVar1 = ppOVar3;\n          } while (iVar6 != iVar4);\n          __middle = (Output_segment *)((int)__middle + iVar6 * -4);\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }\n    }\n    pppOVar1 = &__middle->output_lists_[0].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_finish;\n    pppOVar10 = &__middle->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_start + iVar8;\n    ppOVar3 = __middle->output_lists_[0].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n              _M_start;\n    if (pppOVar10 != pppOVar1) {\n      (*(code *)PTR_memmove_004c5af8)(__middle,pppOVar1,iVar8 * 4 + -4);\n    }\n    pppOVar10[-1] = ppOVar3;\n    *__first = pOVar9;\n  }" { (expression_statement "iVar8 = (int)param_4 - (int)__middle >> 2;" (assignment_expression "iVar8 = (int)param_4 - (int)__middle >> 2" identifier = (binary_expression "(int)param_4 - (int)__middle >> 2" (binary_expression "(int)param_4 - (int)__middle" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__middle" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (expression_statement "iVar4 = (int)__last - (int)__middle >> 2;" (assignment_expression "iVar4 = (int)__last - (int)__middle >> 2" identifier = (binary_expression "(int)__last - (int)__middle >> 2" (binary_expression "(int)__last - (int)__middle" (cast_expression "(int)__last" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__middle" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (expression_statement "iVar6 = iVar8 - iVar4;" (assignment_expression "iVar6 = iVar8 - iVar4" identifier = (binary_expression "iVar8 - iVar4" identifier - identifier)) ;) (expression_statement "pOVar9 = __last;" (assignment_expression "pOVar9 = __last" identifier = identifier) ;) (if_statement "if (iVar6 == iVar4) {\n      do {\n        pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n        ppOVar3 = __middle->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_start;\n        __middle->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start\n             = pOVar9->output_lists_[0].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_start;\n        pOVar9->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start\n             = ppOVar3;\n        pOVar9 = (Output_segment *)\n                 &pOVar9->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_finish;\n        __middle = (Output_segment *)pppOVar1;\n      } while (__last != (Output_segment *)pppOVar1);\n      *__first = __last;\n      return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n              )__first;\n    }" if (parenthesized_expression "(iVar6 == iVar4)" ( (binary_expression "iVar6 == iVar4" identifier == identifier) )) (compound_statement "{\n      do {\n        pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n        ppOVar3 = __middle->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_start;\n        __middle->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start\n             = pOVar9->output_lists_[0].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_start;\n        pOVar9->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start\n             = ppOVar3;\n        pOVar9 = (Output_segment *)\n                 &pOVar9->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_finish;\n        __middle = (Output_segment *)pppOVar1;\n      } while (__last != (Output_segment *)pppOVar1);\n      *__first = __last;\n      return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n              )__first;\n    }" { (do_statement "do {\n        pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n        ppOVar3 = __middle->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_start;\n        __middle->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start\n             = pOVar9->output_lists_[0].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_start;\n        pOVar9->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start\n             = ppOVar3;\n        pOVar9 = (Output_segment *)\n                 &pOVar9->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_finish;\n        __middle = (Output_segment *)pppOVar1;\n      } while (__last != (Output_segment *)pppOVar1);" do (compound_statement "{\n        pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n        ppOVar3 = __middle->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_start;\n        __middle->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start\n             = pOVar9->output_lists_[0].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_start;\n        pOVar9->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start\n             = ppOVar3;\n        pOVar9 = (Output_segment *)\n                 &pOVar9->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_finish;\n        __middle = (Output_segment *)pppOVar1;\n      }" { (expression_statement "pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;" (field_expression "pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish" (field_expression "pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl" (binary_expression "pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std" (assignment_expression "pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold" identifier = (binary_expression "&__middle->output_lists_[0].\n                    super__Vector_base<gold" (pointer_expression "&__middle->output_lists_[0].\n                    super__Vector_base" & (field_expression "__middle->output_lists_[0].\n                    super__Vector_base" (subscript_expression "__middle->output_lists_[0]" (field_expression "__middle->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier)) < identifier)) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "ppOVar3 = __middle->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_start;" (field_expression "ppOVar3 = __middle->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_start" (field_expression "ppOVar3 = __middle->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl" (binary_expression "ppOVar3 = __middle->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "ppOVar3 = __middle->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "ppOVar3 = __middle->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std" (assignment_expression "ppOVar3 = __middle->output_lists_[0].\n                  super__Vector_base<gold" identifier = (binary_expression "__middle->output_lists_[0].\n                  super__Vector_base<gold" (field_expression "__middle->output_lists_[0].\n                  super__Vector_base" (subscript_expression "__middle->output_lists_[0]" (field_expression "__middle->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier) < identifier)) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "__middle->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start\n             = pOVar9->output_lists_[0].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_start;" (field_expression "__middle->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start\n             = pOVar9->output_lists_[0].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n               _M_start" (field_expression "__middle->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start\n             = pOVar9->output_lists_[0].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl" (binary_expression "__middle->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start\n             = pOVar9->output_lists_[0].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "__middle->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start\n             = pOVar9->output_lists_[0].\n               super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "__middle->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start\n             = pOVar9->output_lists_[0].\n               super__Vector_base<gold::Output_data*,_std" (assignment_expression "__middle->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start\n             = pOVar9->output_lists_[0].\n               super__Vector_base<gold" (field_expression "__middle->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start" (field_expression "__middle->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl" (binary_expression "__middle->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "__middle->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "__middle->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std" (binary_expression "__middle->output_lists_[0].\n        super__Vector_base<gold" (field_expression "__middle->output_lists_[0].\n        super__Vector_base" (subscript_expression "__middle->output_lists_[0]" (field_expression "__middle->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (binary_expression "pOVar9->output_lists_[0].\n               super__Vector_base<gold" (field_expression "pOVar9->output_lists_[0].\n               super__Vector_base" (subscript_expression "pOVar9->output_lists_[0]" (field_expression "pOVar9->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier) < identifier)) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "pOVar9->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start\n             = ppOVar3;" (assignment_expression "pOVar9->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start\n             = ppOVar3" (field_expression "pOVar9->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl._M_start" (field_expression "pOVar9->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl" (binary_expression "pOVar9->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "pOVar9->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "pOVar9->output_lists_[0].\n        super__Vector_base<gold::Output_data*,_std" (binary_expression "pOVar9->output_lists_[0].\n        super__Vector_base<gold" (field_expression "pOVar9->output_lists_[0].\n        super__Vector_base" (subscript_expression "pOVar9->output_lists_[0]" (field_expression "pOVar9->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "pOVar9 = (Output_segment *)\n                 &pOVar9->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_finish;" (field_expression "pOVar9 = (Output_segment *)\n                 &pOVar9->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl._M_finish" (field_expression "pOVar9 = (Output_segment *)\n                 &pOVar9->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                  _M_impl" (binary_expression "pOVar9 = (Output_segment *)\n                 &pOVar9->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "pOVar9 = (Output_segment *)\n                 &pOVar9->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "pOVar9 = (Output_segment *)\n                 &pOVar9->output_lists_[0].\n                  super__Vector_base<gold::Output_data*,_std" (assignment_expression "pOVar9 = (Output_segment *)\n                 &pOVar9->output_lists_[0].\n                  super__Vector_base<gold" identifier = (binary_expression "(Output_segment *)\n                 &pOVar9->output_lists_[0].\n                  super__Vector_base<gold" (cast_expression "(Output_segment *)\n                 &pOVar9->output_lists_[0].\n                  super__Vector_base" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar9->output_lists_[0].\n                  super__Vector_base" & (field_expression "pOVar9->output_lists_[0].\n                  super__Vector_base" (subscript_expression "pOVar9->output_lists_[0]" (field_expression "pOVar9->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier))) < identifier)) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "__middle = (Output_segment *)pppOVar1;" (assignment_expression "__middle = (Output_segment *)pppOVar1" identifier = (cast_expression "(Output_segment *)pppOVar1" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) while (parenthesized_expression "(__last != (Output_segment *)pppOVar1)" ( (binary_expression "__last != (Output_segment *)pppOVar1" identifier != (cast_expression "(Output_segment *)pppOVar1" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) ;) (expression_statement "*__first = __last;" (assignment_expression "*__first = __last" (pointer_expression "*__first" * identifier) = identifier) ;) (return_statement "return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n              )__first;" return (parenthesized_expression "(__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n              )__first" ( (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n              )__first" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold" (binary_expression "__normal_iterator<gold::Output_segment**,_std" (binary_expression "__normal_iterator<gold" identifier < identifier) (ERROR "::Output_segment" : : identifier) * (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR ">" >) identifier) > identifier) > (ERROR ")" )) identifier) )) ;) })) (expression_statement "pOVar9 = (Output_segment *)((int)__middle + ((int)param_4 - (int)__last));" (assignment_expression "pOVar9 = (Output_segment *)((int)__middle + ((int)param_4 - (int)__last))" identifier = (cast_expression "(Output_segment *)((int)__middle + ((int)param_4 - (int)__last))" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__middle + ((int)param_4 - (int)__last))" ( (binary_expression "(int)__middle + ((int)param_4 - (int)__last)" (cast_expression "(int)__middle" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((int)param_4 - (int)__last)" ( (binary_expression "(int)param_4 - (int)__last" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__last" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "iVar5 = iVar4;" (assignment_expression "iVar5 = iVar4" identifier = identifier) ;) (expression_statement "iVar7 = iVar6;" (assignment_expression "iVar7 = iVar6" identifier = identifier) ;) (if_statement "if (iVar6 <= iVar4) goto LAB_001c9d0c;" if (parenthesized_expression "(iVar6 <= iVar4)" ( (binary_expression "iVar6 <= iVar4" identifier <= identifier) )) (goto_statement "goto LAB_001c9d0c;" goto statement_identifier ;)) (while_statement "while (iVar5 != 1) {\n      if (0 < iVar6) {\n        iVar4 = 0;\n        pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start + iVar5;\n        pOVar2 = __middle;\n        do {\n          ppOVar3 = pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start;\n          iVar4 = iVar4 + 1;\n          pOVar2->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start = *pppOVar1;\n          *pppOVar1 = ppOVar3;\n          pppOVar1 = pppOVar1 + 1;\n          pOVar2 = (Output_segment *)\n                   &pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n        } while (iVar6 != iVar4);\n        __middle = (Output_segment *)\n                   (&__middle->output_lists_[0].\n                     super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                     _M_impl._M_start + iVar6);\n      }\n      if (iVar5 == 0) {\n        trap(7);\n      }\n      if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *__first = pOVar9;\n        return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n                )__first;\n      }\n      iVar4 = iVar5 - iVar8 % iVar5;\n      iVar6 = iVar5 - iVar4;\n      iVar8 = iVar5;\n      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start + iVar8;\n        if (iVar7 == 1) {\n          ppOVar3 = pppOVar1[-1];\n          if (__middle != (Output_segment *)(pppOVar1 + -1)) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)pppOVar1 - ((int)(pppOVar1 + -1) - (int)__middle),__middle);\n          }\n          __middle->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start = ppOVar3;\n          *__first = pOVar9;\n          return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n                  )__first;\n        }\n        __middle = (Output_segment *)(pppOVar1 + -iVar7);\n        if (0 < iVar4) {\n          iVar6 = 0;\n          pOVar2 = __middle;\n          do {\n            pppOVar1 = pppOVar1 + -1;\n            pOVar2 = (Output_segment *)&pOVar2[-1].field_0x1a4;\n            ppOVar3 = *(pointer *)pOVar2;\n            iVar6 = iVar6 + 1;\n            *(pointer *)pOVar2 = *pppOVar1;\n            *pppOVar1 = ppOVar3;\n          } while (iVar6 != iVar4);\n          __middle = (Output_segment *)((int)__middle + iVar6 * -4);\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }\n    }" while (parenthesized_expression "(iVar5 != 1)" ( (binary_expression "iVar5 != 1" identifier != number_literal) )) (compound_statement "{\n      if (0 < iVar6) {\n        iVar4 = 0;\n        pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start + iVar5;\n        pOVar2 = __middle;\n        do {\n          ppOVar3 = pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start;\n          iVar4 = iVar4 + 1;\n          pOVar2->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start = *pppOVar1;\n          *pppOVar1 = ppOVar3;\n          pppOVar1 = pppOVar1 + 1;\n          pOVar2 = (Output_segment *)\n                   &pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n        } while (iVar6 != iVar4);\n        __middle = (Output_segment *)\n                   (&__middle->output_lists_[0].\n                     super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                     _M_impl._M_start + iVar6);\n      }\n      if (iVar5 == 0) {\n        trap(7);\n      }\n      if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *__first = pOVar9;\n        return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n                )__first;\n      }\n      iVar4 = iVar5 - iVar8 % iVar5;\n      iVar6 = iVar5 - iVar4;\n      iVar8 = iVar5;\n      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start + iVar8;\n        if (iVar7 == 1) {\n          ppOVar3 = pppOVar1[-1];\n          if (__middle != (Output_segment *)(pppOVar1 + -1)) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)pppOVar1 - ((int)(pppOVar1 + -1) - (int)__middle),__middle);\n          }\n          __middle->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start = ppOVar3;\n          *__first = pOVar9;\n          return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n                  )__first;\n        }\n        __middle = (Output_segment *)(pppOVar1 + -iVar7);\n        if (0 < iVar4) {\n          iVar6 = 0;\n          pOVar2 = __middle;\n          do {\n            pppOVar1 = pppOVar1 + -1;\n            pOVar2 = (Output_segment *)&pOVar2[-1].field_0x1a4;\n            ppOVar3 = *(pointer *)pOVar2;\n            iVar6 = iVar6 + 1;\n            *(pointer *)pOVar2 = *pppOVar1;\n            *pppOVar1 = ppOVar3;\n          } while (iVar6 != iVar4);\n          __middle = (Output_segment *)((int)__middle + iVar6 * -4);\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }\n    }" { (if_statement "if (0 < iVar6) {\n        iVar4 = 0;\n        pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start + iVar5;\n        pOVar2 = __middle;\n        do {\n          ppOVar3 = pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start;\n          iVar4 = iVar4 + 1;\n          pOVar2->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start = *pppOVar1;\n          *pppOVar1 = ppOVar3;\n          pppOVar1 = pppOVar1 + 1;\n          pOVar2 = (Output_segment *)\n                   &pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n        } while (iVar6 != iVar4);\n        __middle = (Output_segment *)\n                   (&__middle->output_lists_[0].\n                     super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                     _M_impl._M_start + iVar6);\n      }" if (parenthesized_expression "(0 < iVar6)" ( (binary_expression "0 < iVar6" number_literal < identifier) )) (compound_statement "{\n        iVar4 = 0;\n        pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start + iVar5;\n        pOVar2 = __middle;\n        do {\n          ppOVar3 = pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start;\n          iVar4 = iVar4 + 1;\n          pOVar2->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start = *pppOVar1;\n          *pppOVar1 = ppOVar3;\n          pppOVar1 = pppOVar1 + 1;\n          pOVar2 = (Output_segment *)\n                   &pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n        } while (iVar6 != iVar4);\n        __middle = (Output_segment *)\n                   (&__middle->output_lists_[0].\n                     super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                     _M_impl._M_start + iVar6);\n      }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start + iVar5;" (binary_expression "pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start + iVar5" (field_expression "pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start" (field_expression "pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl" (binary_expression "pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std" (assignment_expression "pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold" identifier = (binary_expression "&__middle->output_lists_[0].\n                    super__Vector_base<gold" (pointer_expression "&__middle->output_lists_[0].\n                    super__Vector_base" & (field_expression "__middle->output_lists_[0].\n                    super__Vector_base" (subscript_expression "__middle->output_lists_[0]" (field_expression "__middle->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier)) < identifier)) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) + identifier) ;) (expression_statement "pOVar2 = __middle;" (assignment_expression "pOVar2 = __middle" identifier = identifier) ;) (do_statement "do {\n          ppOVar3 = pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start;\n          iVar4 = iVar4 + 1;\n          pOVar2->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start = *pppOVar1;\n          *pppOVar1 = ppOVar3;\n          pppOVar1 = pppOVar1 + 1;\n          pOVar2 = (Output_segment *)\n                   &pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n        } while (iVar6 != iVar4);" do (compound_statement "{\n          ppOVar3 = pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start;\n          iVar4 = iVar4 + 1;\n          pOVar2->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start = *pppOVar1;\n          *pppOVar1 = ppOVar3;\n          pppOVar1 = pppOVar1 + 1;\n          pOVar2 = (Output_segment *)\n                   &pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;\n        }" { (expression_statement "ppOVar3 = pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start;" (field_expression "ppOVar3 = pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start" (field_expression "ppOVar3 = pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl" (binary_expression "ppOVar3 = pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "ppOVar3 = pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "ppOVar3 = pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std" (assignment_expression "ppOVar3 = pOVar2->output_lists_[0].\n                    super__Vector_base<gold" identifier = (binary_expression "pOVar2->output_lists_[0].\n                    super__Vector_base<gold" (field_expression "pOVar2->output_lists_[0].\n                    super__Vector_base" (subscript_expression "pOVar2->output_lists_[0]" (field_expression "pOVar2->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier) < identifier)) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "pOVar2->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start = *pppOVar1;" (assignment_expression "pOVar2->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start = *pppOVar1" (field_expression "pOVar2->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start" (field_expression "pOVar2->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl" (binary_expression "pOVar2->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "pOVar2->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "pOVar2->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std" (binary_expression "pOVar2->output_lists_[0].\n          super__Vector_base<gold" (field_expression "pOVar2->output_lists_[0].\n          super__Vector_base" (subscript_expression "pOVar2->output_lists_[0]" (field_expression "pOVar2->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (pointer_expression "*pppOVar1" * identifier)) ;) (expression_statement "*pppOVar1 = ppOVar3;" (assignment_expression "*pppOVar1 = ppOVar3" (pointer_expression "*pppOVar1" * identifier) = identifier) ;) (expression_statement "pppOVar1 = pppOVar1 + 1;" (assignment_expression "pppOVar1 = pppOVar1 + 1" identifier = (binary_expression "pppOVar1 + 1" identifier + number_literal)) ;) (expression_statement "pOVar2 = (Output_segment *)\n                   &pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish;" (field_expression "pOVar2 = (Output_segment *)\n                   &pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_finish" (field_expression "pOVar2 = (Output_segment *)\n                   &pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl" (binary_expression "pOVar2 = (Output_segment *)\n                   &pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "pOVar2 = (Output_segment *)\n                   &pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "pOVar2 = (Output_segment *)\n                   &pOVar2->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std" (assignment_expression "pOVar2 = (Output_segment *)\n                   &pOVar2->output_lists_[0].\n                    super__Vector_base<gold" identifier = (binary_expression "(Output_segment *)\n                   &pOVar2->output_lists_[0].\n                    super__Vector_base<gold" (cast_expression "(Output_segment *)\n                   &pOVar2->output_lists_[0].\n                    super__Vector_base" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar2->output_lists_[0].\n                    super__Vector_base" & (field_expression "pOVar2->output_lists_[0].\n                    super__Vector_base" (subscript_expression "pOVar2->output_lists_[0]" (field_expression "pOVar2->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier))) < identifier)) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) }) while (parenthesized_expression "(iVar6 != iVar4)" ( (binary_expression "iVar6 != iVar4" identifier != identifier) )) ;) (expression_statement "__middle = (Output_segment *)\n                   (&__middle->output_lists_[0].\n                     super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                     _M_impl._M_start + iVar6);" (assignment_expression "__middle = (Output_segment *)\n                   (&__middle->output_lists_[0].\n                     super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                     _M_impl._M_start + iVar6)" identifier = (cast_expression "(Output_segment *)\n                   (&__middle->output_lists_[0].\n                     super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                     _M_impl._M_start + iVar6)" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&__middle->output_lists_[0].\n                     super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                     _M_impl._M_start + iVar6)" ( (binary_expression "&__middle->output_lists_[0].\n                     super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                     _M_impl._M_start + iVar6" (field_expression "&__middle->output_lists_[0].\n                     super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                     _M_impl._M_start" (field_expression "&__middle->output_lists_[0].\n                     super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                     _M_impl" (binary_expression "&__middle->output_lists_[0].\n                     super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "&__middle->output_lists_[0].\n                     super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "&__middle->output_lists_[0].\n                     super__Vector_base<gold::Output_data*,_std" (binary_expression "&__middle->output_lists_[0].\n                     super__Vector_base<gold" (pointer_expression "&__middle->output_lists_[0].\n                     super__Vector_base" & (field_expression "__middle->output_lists_[0].\n                     super__Vector_base" (subscript_expression "__middle->output_lists_[0]" (field_expression "__middle->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier)) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) + identifier) )))) ;) })) (if_statement "if (iVar5 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *__first = pOVar9;\n        return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n                )__first;\n      }" if (parenthesized_expression "(iVar8 % iVar5 == 0)" ( (binary_expression "iVar8 % iVar5 == 0" (binary_expression "iVar8 % iVar5" identifier % identifier) == number_literal) )) (compound_statement "{\nLAB_001c9e0c:\n        *__first = pOVar9;\n        return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n                )__first;\n      }" { (labeled_statement "LAB_001c9e0c:\n        *__first = pOVar9;" statement_identifier : (expression_statement "*__first = pOVar9;" (assignment_expression "*__first = pOVar9" (pointer_expression "*__first" * identifier) = identifier) ;)) (return_statement "return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n                )__first;" return (parenthesized_expression "(__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n                )__first" ( (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n                )__first" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold" (binary_expression "__normal_iterator<gold::Output_segment**,_std" (binary_expression "__normal_iterator<gold" identifier < identifier) (ERROR "::Output_segment" : : identifier) * (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR ">" >) identifier) > identifier) > (ERROR ")" )) identifier) )) ;) })) (expression_statement "iVar4 = iVar5 - iVar8 % iVar5;" (assignment_expression "iVar4 = iVar5 - iVar8 % iVar5" identifier = (binary_expression "iVar5 - iVar8 % iVar5" identifier - (binary_expression "iVar8 % iVar5" identifier % identifier))) ;) (expression_statement "iVar6 = iVar5 - iVar4;" (assignment_expression "iVar6 = iVar5 - iVar4" identifier = (binary_expression "iVar5 - iVar4" identifier - identifier)) ;) (expression_statement "iVar8 = iVar5;" (assignment_expression "iVar8 = iVar5" identifier = identifier) ;) (while_statement "while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start + iVar8;\n        if (iVar7 == 1) {\n          ppOVar3 = pppOVar1[-1];\n          if (__middle != (Output_segment *)(pppOVar1 + -1)) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)pppOVar1 - ((int)(pppOVar1 + -1) - (int)__middle),__middle);\n          }\n          __middle->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start = ppOVar3;\n          *__first = pOVar9;\n          return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n                  )__first;\n        }\n        __middle = (Output_segment *)(pppOVar1 + -iVar7);\n        if (0 < iVar4) {\n          iVar6 = 0;\n          pOVar2 = __middle;\n          do {\n            pppOVar1 = pppOVar1 + -1;\n            pOVar2 = (Output_segment *)&pOVar2[-1].field_0x1a4;\n            ppOVar3 = *(pointer *)pOVar2;\n            iVar6 = iVar6 + 1;\n            *(pointer *)pOVar2 = *pppOVar1;\n            *pppOVar1 = ppOVar3;\n          } while (iVar6 != iVar4);\n          __middle = (Output_segment *)((int)__middle + iVar6 * -4);\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }" while (parenthesized_expression "(iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4)" ( (comma_expression "iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4" (assignment_expression "iVar5 = iVar4" identifier = identifier) , (comma_expression "iVar7 = iVar6, iVar6 <= iVar4" (assignment_expression "iVar7 = iVar6" identifier = identifier) , (binary_expression "iVar6 <= iVar4" identifier <= identifier))) )) (compound_statement "{\nLAB_001c9d0c:\n        pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start + iVar8;\n        if (iVar7 == 1) {\n          ppOVar3 = pppOVar1[-1];\n          if (__middle != (Output_segment *)(pppOVar1 + -1)) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)pppOVar1 - ((int)(pppOVar1 + -1) - (int)__middle),__middle);\n          }\n          __middle->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start = ppOVar3;\n          *__first = pOVar9;\n          return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n                  )__first;\n        }\n        __middle = (Output_segment *)(pppOVar1 + -iVar7);\n        if (0 < iVar4) {\n          iVar6 = 0;\n          pOVar2 = __middle;\n          do {\n            pppOVar1 = pppOVar1 + -1;\n            pOVar2 = (Output_segment *)&pOVar2[-1].field_0x1a4;\n            ppOVar3 = *(pointer *)pOVar2;\n            iVar6 = iVar6 + 1;\n            *(pointer *)pOVar2 = *pppOVar1;\n            *pppOVar1 = ppOVar3;\n          } while (iVar6 != iVar4);\n          __middle = (Output_segment *)((int)__middle + iVar6 * -4);\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }" { (labeled_statement "LAB_001c9d0c:\n        pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>.\n                    _M_impl._M_start + iVar8;" statement_identifier : (ERROR "pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std::allocator<gold::" (comma_expression "pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*,_std" (binary_expression "pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold::Output_data*" (assignment_expression "pppOVar1 = &__middle->output_lists_[0].\n                    super__Vector_base<gold" identifier = (binary_expression "&__middle->output_lists_[0].\n                    super__Vector_base<gold" (pointer_expression "&__middle->output_lists_[0].\n                    super__Vector_base" & (field_expression "__middle->output_lists_[0].\n                    super__Vector_base" (subscript_expression "__middle->output_lists_[0]" (field_expression "__middle->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier)) < identifier)) (ERROR "::Output_data" : : identifier) * identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Output_data*>_>.\n                    _M_impl._M_start + iVar8;" (binary_expression "Output_data*>_>.\n                    _M_impl._M_start + iVar8" (field_expression "Output_data*>_>.\n                    _M_impl._M_start" (field_expression "Output_data*>_>.\n                    _M_impl" (binary_expression "Output_data*>_" identifier * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) + identifier) ;)) (if_statement "if (iVar7 == 1) {\n          ppOVar3 = pppOVar1[-1];\n          if (__middle != (Output_segment *)(pppOVar1 + -1)) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)pppOVar1 - ((int)(pppOVar1 + -1) - (int)__middle),__middle);\n          }\n          __middle->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start = ppOVar3;\n          *__first = pOVar9;\n          return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n                  )__first;\n        }" if (parenthesized_expression "(iVar7 == 1)" ( (binary_expression "iVar7 == 1" identifier == number_literal) )) (compound_statement "{\n          ppOVar3 = pppOVar1[-1];\n          if (__middle != (Output_segment *)(pppOVar1 + -1)) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)pppOVar1 - ((int)(pppOVar1 + -1) - (int)__middle),__middle);\n          }\n          __middle->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start = ppOVar3;\n          *__first = pOVar9;\n          return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n                  )__first;\n        }" { (expression_statement "ppOVar3 = pppOVar1[-1];" (assignment_expression "ppOVar3 = pppOVar1[-1]" identifier = (subscript_expression "pppOVar1[-1]" identifier [ number_literal ])) ;) (if_statement "if (__middle != (Output_segment *)(pppOVar1 + -1)) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)pppOVar1 - ((int)(pppOVar1 + -1) - (int)__middle),__middle);\n          }" if (parenthesized_expression "(__middle != (Output_segment *)(pppOVar1 + -1))" ( (binary_expression "__middle != (Output_segment *)(pppOVar1 + -1)" identifier != (cast_expression "(Output_segment *)(pppOVar1 + -1)" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pppOVar1 + -1)" ( (binary_expression "pppOVar1 + -1" identifier + number_literal) )))) )) (compound_statement "{\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)pppOVar1 - ((int)(pppOVar1 + -1) - (int)__middle),__middle);\n          }" { (expression_statement "(*(code *)PTR_memmove_004c5af8)\n                      ((int)pppOVar1 - ((int)(pppOVar1 + -1) - (int)__middle),__middle);" (call_expression "(*(code *)PTR_memmove_004c5af8)\n                      ((int)pppOVar1 - ((int)(pppOVar1 + -1) - (int)__middle),__middle)" (parenthesized_expression "(*(code *)PTR_memmove_004c5af8)" ( (pointer_expression "*(code *)PTR_memmove_004c5af8" * (cast_expression "(code *)PTR_memmove_004c5af8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((int)pppOVar1 - ((int)(pppOVar1 + -1) - (int)__middle),__middle)" ( (binary_expression "(int)pppOVar1 - ((int)(pppOVar1 + -1) - (int)__middle)" (cast_expression "(int)pppOVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (parenthesized_expression "((int)(pppOVar1 + -1) - (int)__middle)" ( (binary_expression "(int)(pppOVar1 + -1) - (int)__middle" (cast_expression "(int)(pppOVar1 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pppOVar1 + -1)" ( (binary_expression "pppOVar1 + -1" identifier + number_literal) ))) - (cast_expression "(int)__middle" ( (type_descriptor "int" primitive_type) ) identifier)) ))) , identifier ))) ;) })) (expression_statement "__middle->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start = ppOVar3;" (assignment_expression "__middle->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start = ppOVar3" (field_expression "__middle->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n          _M_start" (field_expression "__middle->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl" (binary_expression "__middle->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "__middle->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "__middle->output_lists_[0].\n          super__Vector_base<gold::Output_data*,_std" (binary_expression "__middle->output_lists_[0].\n          super__Vector_base<gold" (field_expression "__middle->output_lists_[0].\n          super__Vector_base" (subscript_expression "__middle->output_lists_[0]" (field_expression "__middle->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "*__first = pOVar9;" (assignment_expression "*__first = pOVar9" (pointer_expression "*__first" * identifier) = identifier) ;) (return_statement "return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n                  )__first;" return (parenthesized_expression "(__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n                  )__first" ( (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n                  )__first" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold" (binary_expression "__normal_iterator<gold::Output_segment**,_std" (binary_expression "__normal_iterator<gold" identifier < identifier) (ERROR "::Output_segment" : : identifier) * (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR ">" >) identifier) > identifier) > (ERROR ")" )) identifier) )) ;) })) (expression_statement "__middle = (Output_segment *)(pppOVar1 + -iVar7);" (assignment_expression "__middle = (Output_segment *)(pppOVar1 + -iVar7)" identifier = (cast_expression "(Output_segment *)(pppOVar1 + -iVar7)" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pppOVar1 + -iVar7)" ( (binary_expression "pppOVar1 + -iVar7" identifier + (unary_expression "-iVar7" - identifier)) )))) ;) (if_statement "if (0 < iVar4) {\n          iVar6 = 0;\n          pOVar2 = __middle;\n          do {\n            pppOVar1 = pppOVar1 + -1;\n            pOVar2 = (Output_segment *)&pOVar2[-1].field_0x1a4;\n            ppOVar3 = *(pointer *)pOVar2;\n            iVar6 = iVar6 + 1;\n            *(pointer *)pOVar2 = *pppOVar1;\n            *pppOVar1 = ppOVar3;\n          } while (iVar6 != iVar4);\n          __middle = (Output_segment *)((int)__middle + iVar6 * -4);\n        }" if (parenthesized_expression "(0 < iVar4)" ( (binary_expression "0 < iVar4" number_literal < identifier) )) (compound_statement "{\n          iVar6 = 0;\n          pOVar2 = __middle;\n          do {\n            pppOVar1 = pppOVar1 + -1;\n            pOVar2 = (Output_segment *)&pOVar2[-1].field_0x1a4;\n            ppOVar3 = *(pointer *)pOVar2;\n            iVar6 = iVar6 + 1;\n            *(pointer *)pOVar2 = *pppOVar1;\n            *pppOVar1 = ppOVar3;\n          } while (iVar6 != iVar4);\n          __middle = (Output_segment *)((int)__middle + iVar6 * -4);\n        }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "pOVar2 = __middle;" (assignment_expression "pOVar2 = __middle" identifier = identifier) ;) (do_statement "do {\n            pppOVar1 = pppOVar1 + -1;\n            pOVar2 = (Output_segment *)&pOVar2[-1].field_0x1a4;\n            ppOVar3 = *(pointer *)pOVar2;\n            iVar6 = iVar6 + 1;\n            *(pointer *)pOVar2 = *pppOVar1;\n            *pppOVar1 = ppOVar3;\n          } while (iVar6 != iVar4);" do (compound_statement "{\n            pppOVar1 = pppOVar1 + -1;\n            pOVar2 = (Output_segment *)&pOVar2[-1].field_0x1a4;\n            ppOVar3 = *(pointer *)pOVar2;\n            iVar6 = iVar6 + 1;\n            *(pointer *)pOVar2 = *pppOVar1;\n            *pppOVar1 = ppOVar3;\n          }" { (expression_statement "pppOVar1 = pppOVar1 + -1;" (assignment_expression "pppOVar1 = pppOVar1 + -1" identifier = (binary_expression "pppOVar1 + -1" identifier + number_literal)) ;) (expression_statement "pOVar2 = (Output_segment *)&pOVar2[-1].field_0x1a4;" (assignment_expression "pOVar2 = (Output_segment *)&pOVar2[-1].field_0x1a4" identifier = (cast_expression "(Output_segment *)&pOVar2[-1].field_0x1a4" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar2[-1].field_0x1a4" & (field_expression "pOVar2[-1].field_0x1a4" (subscript_expression "pOVar2[-1]" identifier [ number_literal ]) . field_identifier)))) ;) (expression_statement "ppOVar3 = *(pointer *)pOVar2;" (assignment_expression "ppOVar3 = *(pointer *)pOVar2" identifier = (pointer_expression "*(pointer *)pOVar2" * (cast_expression "(pointer *)pOVar2" ( (type_descriptor "pointer *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "*(pointer *)pOVar2 = *pppOVar1;" (assignment_expression "*(pointer *)pOVar2 = *pppOVar1" (pointer_expression "*(pointer *)pOVar2" * (cast_expression "(pointer *)pOVar2" ( (type_descriptor "pointer *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*pppOVar1" * identifier)) ;) (expression_statement "*pppOVar1 = ppOVar3;" (assignment_expression "*pppOVar1 = ppOVar3" (pointer_expression "*pppOVar1" * identifier) = identifier) ;) }) while (parenthesized_expression "(iVar6 != iVar4)" ( (binary_expression "iVar6 != iVar4" identifier != identifier) )) ;) (expression_statement "__middle = (Output_segment *)((int)__middle + iVar6 * -4);" (assignment_expression "__middle = (Output_segment *)((int)__middle + iVar6 * -4)" identifier = (cast_expression "(Output_segment *)((int)__middle + iVar6 * -4)" ( (type_descriptor "Output_segment *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__middle + iVar6 * -4)" ( (binary_expression "(int)__middle + iVar6 * -4" (cast_expression "(int)__middle" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar6 * -4" identifier * number_literal)) )))) ;) })) (if_statement "if (iVar7 == 0) {\n          trap(7);\n        }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n          trap(7);\n        }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "iVar4 = iVar8 % iVar7;" (assignment_expression "iVar4 = iVar8 % iVar7" identifier = (binary_expression "iVar8 % iVar7" identifier % identifier)) ;) (if_statement "if (iVar4 == 0) goto LAB_001c9e0c;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001c9e0c;" goto statement_identifier ;)) (expression_statement "iVar8 = iVar7;" (assignment_expression "iVar8 = iVar7" identifier = identifier) ;) (expression_statement "iVar6 = iVar7 - iVar4;" (assignment_expression "iVar6 = iVar7 - iVar4" identifier = (binary_expression "iVar7 - iVar4" identifier - identifier)) ;) })) })) (expression_statement "pppOVar1 = &__middle->output_lists_[0].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_finish;" (field_expression "pppOVar1 = &__middle->output_lists_[0].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n                _M_finish" (field_expression "pppOVar1 = &__middle->output_lists_[0].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl" (binary_expression "pppOVar1 = &__middle->output_lists_[0].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "pppOVar1 = &__middle->output_lists_[0].\n                super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "pppOVar1 = &__middle->output_lists_[0].\n                super__Vector_base<gold::Output_data*,_std" (assignment_expression "pppOVar1 = &__middle->output_lists_[0].\n                super__Vector_base<gold" identifier = (binary_expression "&__middle->output_lists_[0].\n                super__Vector_base<gold" (pointer_expression "&__middle->output_lists_[0].\n                super__Vector_base" & (field_expression "__middle->output_lists_[0].\n                super__Vector_base" (subscript_expression "__middle->output_lists_[0]" (field_expression "__middle->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier)) < identifier)) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "pppOVar10 = &__middle->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_start + iVar8;" (binary_expression "pppOVar10 = &__middle->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_start + iVar8" (field_expression "pppOVar10 = &__middle->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl\n                 ._M_start" (field_expression "pppOVar10 = &__middle->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl" (binary_expression "pppOVar10 = &__middle->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "pppOVar10 = &__middle->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "pppOVar10 = &__middle->output_lists_[0].\n                 super__Vector_base<gold::Output_data*,_std" (assignment_expression "pppOVar10 = &__middle->output_lists_[0].\n                 super__Vector_base<gold" identifier = (binary_expression "&__middle->output_lists_[0].\n                 super__Vector_base<gold" (pointer_expression "&__middle->output_lists_[0].\n                 super__Vector_base" & (field_expression "__middle->output_lists_[0].\n                 super__Vector_base" (subscript_expression "__middle->output_lists_[0]" (field_expression "__middle->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier)) < identifier)) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) + identifier) ;) (expression_statement "ppOVar3 = __middle->output_lists_[0].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n              _M_start;" (field_expression "ppOVar3 = __middle->output_lists_[0].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl.\n              _M_start" (field_expression "ppOVar3 = __middle->output_lists_[0].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_>._M_impl" (binary_expression "ppOVar3 = __middle->output_lists_[0].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold::Output_data*>_" (binary_expression "ppOVar3 = __middle->output_lists_[0].\n              super__Vector_base<gold::Output_data*,_std::allocator<gold" (binary_expression "ppOVar3 = __middle->output_lists_[0].\n              super__Vector_base<gold::Output_data*,_std" (assignment_expression "ppOVar3 = __middle->output_lists_[0].\n              super__Vector_base<gold" identifier = (binary_expression "__middle->output_lists_[0].\n              super__Vector_base<gold" (field_expression "__middle->output_lists_[0].\n              super__Vector_base" (subscript_expression "__middle->output_lists_[0]" (field_expression "__middle->output_lists_" identifier -> field_identifier) [ number_literal ]) . field_identifier) < identifier)) (ERROR "::Output_data" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_data" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if (pppOVar10 != pppOVar1) {\n      (*(code *)PTR_memmove_004c5af8)(__middle,pppOVar1,iVar8 * 4 + -4);\n    }" if (parenthesized_expression "(pppOVar10 != pppOVar1)" ( (binary_expression "pppOVar10 != pppOVar1" identifier != identifier) )) (compound_statement "{\n      (*(code *)PTR_memmove_004c5af8)(__middle,pppOVar1,iVar8 * 4 + -4);\n    }" { (expression_statement "(*(code *)PTR_memmove_004c5af8)(__middle,pppOVar1,iVar8 * 4 + -4);" (call_expression "(*(code *)PTR_memmove_004c5af8)(__middle,pppOVar1,iVar8 * 4 + -4)" (parenthesized_expression "(*(code *)PTR_memmove_004c5af8)" ( (pointer_expression "*(code *)PTR_memmove_004c5af8" * (cast_expression "(code *)PTR_memmove_004c5af8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(__middle,pppOVar1,iVar8 * 4 + -4)" ( identifier , identifier , (binary_expression "iVar8 * 4 + -4" (binary_expression "iVar8 * 4" identifier * number_literal) + number_literal) ))) ;) })) (expression_statement "pppOVar10[-1] = ppOVar3;" (assignment_expression "pppOVar10[-1] = ppOVar3" (subscript_expression "pppOVar10[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*__first = pOVar9;" (assignment_expression "*__first = pOVar9" (pointer_expression "*__first" * identifier) = identifier) ;) }))) (ERROR "return (__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n          )__first;\n}" return ( (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_>\n          )__first" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_>_" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold::Output_segment*>_" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std::allocator<gold" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold::Output_segment*,_std" (binary_expression "__normal_iterator<gold::Output_segment**,_std::vector<gold" (binary_expression "__normal_iterator<gold::Output_segment**,_std" (binary_expression "__normal_iterator<gold" identifier < identifier) (ERROR "::Output_segment" : : identifier) * (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::vector" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_segment" : : identifier) * (ERROR ">" >) identifier) > identifier) > (ERROR ")" )) identifier) ; }))
(translation_unit "int * std::_V2::\n      __rotate<__normal_iterator<gold::Output_segment**,std::vector<gold::Output_segment*,std::allocator<gold::Output_segment*>>>>\n                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  \n  if (param_2 == param_3) {\n    *param_1 = (int)param_4;\n    return param_1;\n  }\n  if (param_4 == param_3) {\n    *param_1 = (int)param_2;\n  }\n  else {\n    iVar8 = (int)param_4 - (int)param_2 >> 2;\n    iVar4 = (int)param_3 - (int)param_2 >> 2;\n    iVar6 = iVar8 - iVar4;\n    puVar1 = param_3;\n    if (iVar6 == iVar4) {\n      do {\n        puVar2 = param_2 + 1;\n        uVar3 = *param_2;\n        *param_2 = *puVar1;\n        *puVar1 = uVar3;\n        puVar1 = puVar1 + 1;\n        param_2 = puVar2;\n      } while (param_3 != puVar2);\n      *param_1 = (int)param_3;\n      return param_1;\n    }\n    iVar9 = (int)param_2 + ((int)param_4 - (int)param_3);\n    iVar5 = iVar4;\n    iVar7 = iVar6;\n    if (iVar6 <= iVar4) goto LAB_001c9d0c;\n    while (iVar5 != 1) {\n      if (0 < iVar6) {\n        iVar4 = 0;\n        puVar1 = param_2 + iVar5;\n        puVar2 = param_2;\n        do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);\n        param_2 = param_2 + iVar6;\n      }\n      if (iVar5 == 0) {\n        trap(7);\n      }\n      if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *param_1 = iVar9;\n        return param_1;\n      }\n      iVar4 = iVar5 - iVar8 % iVar5;\n      iVar6 = iVar5 - iVar4;\n      iVar8 = iVar5;\n      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        puVar1 = param_2 + iVar8;\n        if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }\n        param_2 = puVar1 + -iVar7;\n        if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }\n    }\n    uVar3 = *param_2;\n    if (param_2 + iVar8 != param_2 + 1) {\n      (*(code *)PTR_memmove_004c5af8)(param_2,param_2 + 1,iVar8 * 4 + -4);\n    }\n    (param_2 + iVar8)[-1] = uVar3;\n    *param_1 = iVar9;\n  }\n  return param_1;\n}\n\n" (declaration "int * std::_V2::\n      __rotate<__normal_iterator<gold::Output_segment**,std::vector<gold::Output_segment*,std::allocator<gold::Output_segment*>>>>\n                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4)\n\n{\n  undefined4 *puVar1;" primitive_type (pointer_declarator "* std::_V2::\n      __rotate<__normal_iterator<gold::Output_segment**,std::vector<gold::Output_segment" * (ERROR "std::_V2::\n      __rotate<__normal_iterator<gold::Output_segment" identifier : : identifier : : identifier < identifier < identifier : : identifier) (pointer_declarator "**,std::vector<gold::Output_segment" * (pointer_declarator "*,std::vector<gold::Output_segment" * (ERROR ",std::vector<gold::" , identifier : : identifier < identifier : :) identifier))) (ERROR "*" *) , (ERROR "std::allocator<gold::Output_segment*>>>>\n                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4)\n\n{\n  undefined4" identifier : : identifier < identifier : : (function_declarator "Output_segment*>>>>\n                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4)" identifier (ERROR "*>>>>" * >> >>) (parameter_list "(int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) { identifier) (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (if_statement "if (param_2 == param_3) {\n    *param_1 = (int)param_4;\n    return param_1;\n  }" if (parenthesized_expression "(param_2 == param_3)" ( (binary_expression "param_2 == param_3" identifier == identifier) )) (compound_statement "{\n    *param_1 = (int)param_4;\n    return param_1;\n  }" { (expression_statement "*param_1 = (int)param_4;" (assignment_expression "*param_1 = (int)param_4" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (return_statement "return param_1;" return identifier ;) })) (if_statement "if (param_4 == param_3) {\n    *param_1 = (int)param_2;\n  }\n  else {\n    iVar8 = (int)param_4 - (int)param_2 >> 2;\n    iVar4 = (int)param_3 - (int)param_2 >> 2;\n    iVar6 = iVar8 - iVar4;\n    puVar1 = param_3;\n    if (iVar6 == iVar4) {\n      do {\n        puVar2 = param_2 + 1;\n        uVar3 = *param_2;\n        *param_2 = *puVar1;\n        *puVar1 = uVar3;\n        puVar1 = puVar1 + 1;\n        param_2 = puVar2;\n      } while (param_3 != puVar2);\n      *param_1 = (int)param_3;\n      return param_1;\n    }\n    iVar9 = (int)param_2 + ((int)param_4 - (int)param_3);\n    iVar5 = iVar4;\n    iVar7 = iVar6;\n    if (iVar6 <= iVar4) goto LAB_001c9d0c;\n    while (iVar5 != 1) {\n      if (0 < iVar6) {\n        iVar4 = 0;\n        puVar1 = param_2 + iVar5;\n        puVar2 = param_2;\n        do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);\n        param_2 = param_2 + iVar6;\n      }\n      if (iVar5 == 0) {\n        trap(7);\n      }\n      if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *param_1 = iVar9;\n        return param_1;\n      }\n      iVar4 = iVar5 - iVar8 % iVar5;\n      iVar6 = iVar5 - iVar4;\n      iVar8 = iVar5;\n      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        puVar1 = param_2 + iVar8;\n        if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }\n        param_2 = puVar1 + -iVar7;\n        if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }\n    }\n    uVar3 = *param_2;\n    if (param_2 + iVar8 != param_2 + 1) {\n      (*(code *)PTR_memmove_004c5af8)(param_2,param_2 + 1,iVar8 * 4 + -4);\n    }\n    (param_2 + iVar8)[-1] = uVar3;\n    *param_1 = iVar9;\n  }" if (parenthesized_expression "(param_4 == param_3)" ( (binary_expression "param_4 == param_3" identifier == identifier) )) (compound_statement "{\n    *param_1 = (int)param_2;\n  }" { (expression_statement "*param_1 = (int)param_2;" (assignment_expression "*param_1 = (int)param_2" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n    iVar8 = (int)param_4 - (int)param_2 >> 2;\n    iVar4 = (int)param_3 - (int)param_2 >> 2;\n    iVar6 = iVar8 - iVar4;\n    puVar1 = param_3;\n    if (iVar6 == iVar4) {\n      do {\n        puVar2 = param_2 + 1;\n        uVar3 = *param_2;\n        *param_2 = *puVar1;\n        *puVar1 = uVar3;\n        puVar1 = puVar1 + 1;\n        param_2 = puVar2;\n      } while (param_3 != puVar2);\n      *param_1 = (int)param_3;\n      return param_1;\n    }\n    iVar9 = (int)param_2 + ((int)param_4 - (int)param_3);\n    iVar5 = iVar4;\n    iVar7 = iVar6;\n    if (iVar6 <= iVar4) goto LAB_001c9d0c;\n    while (iVar5 != 1) {\n      if (0 < iVar6) {\n        iVar4 = 0;\n        puVar1 = param_2 + iVar5;\n        puVar2 = param_2;\n        do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);\n        param_2 = param_2 + iVar6;\n      }\n      if (iVar5 == 0) {\n        trap(7);\n      }\n      if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *param_1 = iVar9;\n        return param_1;\n      }\n      iVar4 = iVar5 - iVar8 % iVar5;\n      iVar6 = iVar5 - iVar4;\n      iVar8 = iVar5;\n      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        puVar1 = param_2 + iVar8;\n        if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }\n        param_2 = puVar1 + -iVar7;\n        if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }\n    }\n    uVar3 = *param_2;\n    if (param_2 + iVar8 != param_2 + 1) {\n      (*(code *)PTR_memmove_004c5af8)(param_2,param_2 + 1,iVar8 * 4 + -4);\n    }\n    (param_2 + iVar8)[-1] = uVar3;\n    *param_1 = iVar9;\n  }" else (compound_statement "{\n    iVar8 = (int)param_4 - (int)param_2 >> 2;\n    iVar4 = (int)param_3 - (int)param_2 >> 2;\n    iVar6 = iVar8 - iVar4;\n    puVar1 = param_3;\n    if (iVar6 == iVar4) {\n      do {\n        puVar2 = param_2 + 1;\n        uVar3 = *param_2;\n        *param_2 = *puVar1;\n        *puVar1 = uVar3;\n        puVar1 = puVar1 + 1;\n        param_2 = puVar2;\n      } while (param_3 != puVar2);\n      *param_1 = (int)param_3;\n      return param_1;\n    }\n    iVar9 = (int)param_2 + ((int)param_4 - (int)param_3);\n    iVar5 = iVar4;\n    iVar7 = iVar6;\n    if (iVar6 <= iVar4) goto LAB_001c9d0c;\n    while (iVar5 != 1) {\n      if (0 < iVar6) {\n        iVar4 = 0;\n        puVar1 = param_2 + iVar5;\n        puVar2 = param_2;\n        do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);\n        param_2 = param_2 + iVar6;\n      }\n      if (iVar5 == 0) {\n        trap(7);\n      }\n      if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *param_1 = iVar9;\n        return param_1;\n      }\n      iVar4 = iVar5 - iVar8 % iVar5;\n      iVar6 = iVar5 - iVar4;\n      iVar8 = iVar5;\n      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        puVar1 = param_2 + iVar8;\n        if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }\n        param_2 = puVar1 + -iVar7;\n        if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }\n    }\n    uVar3 = *param_2;\n    if (param_2 + iVar8 != param_2 + 1) {\n      (*(code *)PTR_memmove_004c5af8)(param_2,param_2 + 1,iVar8 * 4 + -4);\n    }\n    (param_2 + iVar8)[-1] = uVar3;\n    *param_1 = iVar9;\n  }" { (expression_statement "iVar8 = (int)param_4 - (int)param_2 >> 2;" (assignment_expression "iVar8 = (int)param_4 - (int)param_2 >> 2" identifier = (binary_expression "(int)param_4 - (int)param_2 >> 2" (binary_expression "(int)param_4 - (int)param_2" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (expression_statement "iVar4 = (int)param_3 - (int)param_2 >> 2;" (assignment_expression "iVar4 = (int)param_3 - (int)param_2 >> 2" identifier = (binary_expression "(int)param_3 - (int)param_2 >> 2" (binary_expression "(int)param_3 - (int)param_2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (expression_statement "iVar6 = iVar8 - iVar4;" (assignment_expression "iVar6 = iVar8 - iVar4" identifier = (binary_expression "iVar8 - iVar4" identifier - identifier)) ;) (expression_statement "puVar1 = param_3;" (assignment_expression "puVar1 = param_3" identifier = identifier) ;) (if_statement "if (iVar6 == iVar4) {\n      do {\n        puVar2 = param_2 + 1;\n        uVar3 = *param_2;\n        *param_2 = *puVar1;\n        *puVar1 = uVar3;\n        puVar1 = puVar1 + 1;\n        param_2 = puVar2;\n      } while (param_3 != puVar2);\n      *param_1 = (int)param_3;\n      return param_1;\n    }" if (parenthesized_expression "(iVar6 == iVar4)" ( (binary_expression "iVar6 == iVar4" identifier == identifier) )) (compound_statement "{\n      do {\n        puVar2 = param_2 + 1;\n        uVar3 = *param_2;\n        *param_2 = *puVar1;\n        *puVar1 = uVar3;\n        puVar1 = puVar1 + 1;\n        param_2 = puVar2;\n      } while (param_3 != puVar2);\n      *param_1 = (int)param_3;\n      return param_1;\n    }" { (do_statement "do {\n        puVar2 = param_2 + 1;\n        uVar3 = *param_2;\n        *param_2 = *puVar1;\n        *puVar1 = uVar3;\n        puVar1 = puVar1 + 1;\n        param_2 = puVar2;\n      } while (param_3 != puVar2);" do (compound_statement "{\n        puVar2 = param_2 + 1;\n        uVar3 = *param_2;\n        *param_2 = *puVar1;\n        *puVar1 = uVar3;\n        puVar1 = puVar1 + 1;\n        param_2 = puVar2;\n      }" { (expression_statement "puVar2 = param_2 + 1;" (assignment_expression "puVar2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = *param_2;" (assignment_expression "uVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*param_2 = *puVar1;" (assignment_expression "*param_2 = *puVar1" (pointer_expression "*param_2" * identifier) = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "*puVar1 = uVar3;" (assignment_expression "*puVar1 = uVar3" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "puVar1 = puVar1 + 1;" (assignment_expression "puVar1 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) (expression_statement "param_2 = puVar2;" (assignment_expression "param_2 = puVar2" identifier = identifier) ;) }) while (parenthesized_expression "(param_3 != puVar2)" ( (binary_expression "param_3 != puVar2" identifier != identifier) )) ;) (expression_statement "*param_1 = (int)param_3;" (assignment_expression "*param_1 = (int)param_3" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (return_statement "return param_1;" return identifier ;) })) (expression_statement "iVar9 = (int)param_2 + ((int)param_4 - (int)param_3);" (assignment_expression "iVar9 = (int)param_2 + ((int)param_4 - (int)param_3)" identifier = (binary_expression "(int)param_2 + ((int)param_4 - (int)param_3)" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((int)param_4 - (int)param_3)" ( (binary_expression "(int)param_4 - (int)param_3" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "iVar5 = iVar4;" (assignment_expression "iVar5 = iVar4" identifier = identifier) ;) (expression_statement "iVar7 = iVar6;" (assignment_expression "iVar7 = iVar6" identifier = identifier) ;) (if_statement "if (iVar6 <= iVar4) goto LAB_001c9d0c;" if (parenthesized_expression "(iVar6 <= iVar4)" ( (binary_expression "iVar6 <= iVar4" identifier <= identifier) )) (goto_statement "goto LAB_001c9d0c;" goto statement_identifier ;)) (while_statement "while (iVar5 != 1) {\n      if (0 < iVar6) {\n        iVar4 = 0;\n        puVar1 = param_2 + iVar5;\n        puVar2 = param_2;\n        do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);\n        param_2 = param_2 + iVar6;\n      }\n      if (iVar5 == 0) {\n        trap(7);\n      }\n      if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *param_1 = iVar9;\n        return param_1;\n      }\n      iVar4 = iVar5 - iVar8 % iVar5;\n      iVar6 = iVar5 - iVar4;\n      iVar8 = iVar5;\n      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        puVar1 = param_2 + iVar8;\n        if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }\n        param_2 = puVar1 + -iVar7;\n        if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }\n    }" while (parenthesized_expression "(iVar5 != 1)" ( (binary_expression "iVar5 != 1" identifier != number_literal) )) (compound_statement "{\n      if (0 < iVar6) {\n        iVar4 = 0;\n        puVar1 = param_2 + iVar5;\n        puVar2 = param_2;\n        do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);\n        param_2 = param_2 + iVar6;\n      }\n      if (iVar5 == 0) {\n        trap(7);\n      }\n      if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *param_1 = iVar9;\n        return param_1;\n      }\n      iVar4 = iVar5 - iVar8 % iVar5;\n      iVar6 = iVar5 - iVar4;\n      iVar8 = iVar5;\n      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        puVar1 = param_2 + iVar8;\n        if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }\n        param_2 = puVar1 + -iVar7;\n        if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }\n    }" { (if_statement "if (0 < iVar6) {\n        iVar4 = 0;\n        puVar1 = param_2 + iVar5;\n        puVar2 = param_2;\n        do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);\n        param_2 = param_2 + iVar6;\n      }" if (parenthesized_expression "(0 < iVar6)" ( (binary_expression "0 < iVar6" number_literal < identifier) )) (compound_statement "{\n        iVar4 = 0;\n        puVar1 = param_2 + iVar5;\n        puVar2 = param_2;\n        do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);\n        param_2 = param_2 + iVar6;\n      }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "puVar1 = param_2 + iVar5;" (assignment_expression "puVar1 = param_2 + iVar5" identifier = (binary_expression "param_2 + iVar5" identifier + identifier)) ;) (expression_statement "puVar2 = param_2;" (assignment_expression "puVar2 = param_2" identifier = identifier) ;) (do_statement "do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);" do (compound_statement "{\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        }" { (expression_statement "uVar3 = *puVar2;" (assignment_expression "uVar3 = *puVar2" identifier = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "*puVar2 = *puVar1;" (assignment_expression "*puVar2 = *puVar1" (pointer_expression "*puVar2" * identifier) = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "*puVar1 = uVar3;" (assignment_expression "*puVar1 = uVar3" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "puVar1 = puVar1 + 1;" (assignment_expression "puVar1 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) (expression_statement "puVar2 = puVar2 + 1;" (assignment_expression "puVar2 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 != iVar4)" ( (binary_expression "iVar6 != iVar4" identifier != identifier) )) ;) (expression_statement "param_2 = param_2 + iVar6;" (assignment_expression "param_2 = param_2 + iVar6" identifier = (binary_expression "param_2 + iVar6" identifier + identifier)) ;) })) (if_statement "if (iVar5 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *param_1 = iVar9;\n        return param_1;\n      }" if (parenthesized_expression "(iVar8 % iVar5 == 0)" ( (binary_expression "iVar8 % iVar5 == 0" (binary_expression "iVar8 % iVar5" identifier % identifier) == number_literal) )) (compound_statement "{\nLAB_001c9e0c:\n        *param_1 = iVar9;\n        return param_1;\n      }" { (labeled_statement "LAB_001c9e0c:\n        *param_1 = iVar9;" statement_identifier : (expression_statement "*param_1 = iVar9;" (assignment_expression "*param_1 = iVar9" (pointer_expression "*param_1" * identifier) = identifier) ;)) (return_statement "return param_1;" return identifier ;) })) (expression_statement "iVar4 = iVar5 - iVar8 % iVar5;" (assignment_expression "iVar4 = iVar5 - iVar8 % iVar5" identifier = (binary_expression "iVar5 - iVar8 % iVar5" identifier - (binary_expression "iVar8 % iVar5" identifier % identifier))) ;) (expression_statement "iVar6 = iVar5 - iVar4;" (assignment_expression "iVar6 = iVar5 - iVar4" identifier = (binary_expression "iVar5 - iVar4" identifier - identifier)) ;) (expression_statement "iVar8 = iVar5;" (assignment_expression "iVar8 = iVar5" identifier = identifier) ;) (while_statement "while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        puVar1 = param_2 + iVar8;\n        if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }\n        param_2 = puVar1 + -iVar7;\n        if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }" while (parenthesized_expression "(iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4)" ( (comma_expression "iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4" (assignment_expression "iVar5 = iVar4" identifier = identifier) , (comma_expression "iVar7 = iVar6, iVar6 <= iVar4" (assignment_expression "iVar7 = iVar6" identifier = identifier) , (binary_expression "iVar6 <= iVar4" identifier <= identifier))) )) (compound_statement "{\nLAB_001c9d0c:\n        puVar1 = param_2 + iVar8;\n        if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }\n        param_2 = puVar1 + -iVar7;\n        if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }" { (labeled_statement "LAB_001c9d0c:\n        puVar1 = param_2 + iVar8;" statement_identifier : (expression_statement "puVar1 = param_2 + iVar8;" (assignment_expression "puVar1 = param_2 + iVar8" identifier = (binary_expression "param_2 + iVar8" identifier + identifier)) ;)) (if_statement "if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }" if (parenthesized_expression "(iVar7 == 1)" ( (binary_expression "iVar7 == 1" identifier == number_literal) )) (compound_statement "{\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }" { (expression_statement "uVar3 = puVar1[-1];" (assignment_expression "uVar3 = puVar1[-1]" identifier = (subscript_expression "puVar1[-1]" identifier [ number_literal ])) ;) (if_statement "if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }" if (parenthesized_expression "(param_2 != puVar1 + -1)" ( (binary_expression "param_2 != puVar1 + -1" identifier != (binary_expression "puVar1 + -1" identifier + number_literal)) )) (compound_statement "{\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }" { (expression_statement "(*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);" (call_expression "(*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2)" (parenthesized_expression "(*(code *)PTR_memmove_004c5af8)" ( (pointer_expression "*(code *)PTR_memmove_004c5af8" * (cast_expression "(code *)PTR_memmove_004c5af8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2)" ( (binary_expression "(int)puVar1 - ((int)(puVar1 + -1) - (int)param_2)" (cast_expression "(int)puVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (parenthesized_expression "((int)(puVar1 + -1) - (int)param_2)" ( (binary_expression "(int)(puVar1 + -1) - (int)param_2" (cast_expression "(int)(puVar1 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar1 + -1)" ( (binary_expression "puVar1 + -1" identifier + number_literal) ))) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ))) , identifier ))) ;) })) (expression_statement "*param_2 = uVar3;" (assignment_expression "*param_2 = uVar3" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "*param_1 = iVar9;" (assignment_expression "*param_1 = iVar9" (pointer_expression "*param_1" * identifier) = identifier) ;) (return_statement "return param_1;" return identifier ;) })) (expression_statement "param_2 = puVar1 + -iVar7;" (assignment_expression "param_2 = puVar1 + -iVar7" identifier = (binary_expression "puVar1 + -iVar7" identifier + (unary_expression "-iVar7" - identifier))) ;) (if_statement "if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }" if (parenthesized_expression "(0 < iVar4)" ( (binary_expression "0 < iVar4" number_literal < identifier) )) (compound_statement "{\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "puVar2 = param_2;" (assignment_expression "puVar2 = param_2" identifier = identifier) ;) (do_statement "do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);" do (compound_statement "{\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          }" { (expression_statement "puVar1 = puVar1 + -1;" (assignment_expression "puVar1 = puVar1 + -1" identifier = (binary_expression "puVar1 + -1" identifier + number_literal)) ;) (expression_statement "puVar2 = puVar2 + -1;" (assignment_expression "puVar2 = puVar2 + -1" identifier = (binary_expression "puVar2 + -1" identifier + number_literal)) ;) (expression_statement "uVar3 = *puVar2;" (assignment_expression "uVar3 = *puVar2" identifier = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "*puVar2 = *puVar1;" (assignment_expression "*puVar2 = *puVar1" (pointer_expression "*puVar2" * identifier) = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "*puVar1 = uVar3;" (assignment_expression "*puVar1 = uVar3" (pointer_expression "*puVar1" * identifier) = identifier) ;) }) while (parenthesized_expression "(iVar6 != iVar4)" ( (binary_expression "iVar6 != iVar4" identifier != identifier) )) ;) (expression_statement "param_2 = param_2 + -iVar6;" (assignment_expression "param_2 = param_2 + -iVar6" identifier = (binary_expression "param_2 + -iVar6" identifier + (unary_expression "-iVar6" - identifier))) ;) })) (if_statement "if (iVar7 == 0) {\n          trap(7);\n        }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n          trap(7);\n        }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "iVar4 = iVar8 % iVar7;" (assignment_expression "iVar4 = iVar8 % iVar7" identifier = (binary_expression "iVar8 % iVar7" identifier % identifier)) ;) (if_statement "if (iVar4 == 0) goto LAB_001c9e0c;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001c9e0c;" goto statement_identifier ;)) (expression_statement "iVar8 = iVar7;" (assignment_expression "iVar8 = iVar7" identifier = identifier) ;) (expression_statement "iVar6 = iVar7 - iVar4;" (assignment_expression "iVar6 = iVar7 - iVar4" identifier = (binary_expression "iVar7 - iVar4" identifier - identifier)) ;) })) })) (expression_statement "uVar3 = *param_2;" (assignment_expression "uVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (param_2 + iVar8 != param_2 + 1) {\n      (*(code *)PTR_memmove_004c5af8)(param_2,param_2 + 1,iVar8 * 4 + -4);\n    }" if (parenthesized_expression "(param_2 + iVar8 != param_2 + 1)" ( (binary_expression "param_2 + iVar8 != param_2 + 1" (binary_expression "param_2 + iVar8" identifier + identifier) != (binary_expression "param_2 + 1" identifier + number_literal)) )) (compound_statement "{\n      (*(code *)PTR_memmove_004c5af8)(param_2,param_2 + 1,iVar8 * 4 + -4);\n    }" { (expression_statement "(*(code *)PTR_memmove_004c5af8)(param_2,param_2 + 1,iVar8 * 4 + -4);" (call_expression "(*(code *)PTR_memmove_004c5af8)(param_2,param_2 + 1,iVar8 * 4 + -4)" (parenthesized_expression "(*(code *)PTR_memmove_004c5af8)" ( (pointer_expression "*(code *)PTR_memmove_004c5af8" * (cast_expression "(code *)PTR_memmove_004c5af8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,param_2 + 1,iVar8 * 4 + -4)" ( identifier , (binary_expression "param_2 + 1" identifier + number_literal) , (binary_expression "iVar8 * 4 + -4" (binary_expression "iVar8 * 4" identifier * number_literal) + number_literal) ))) ;) })) (expression_statement "(param_2 + iVar8)[-1] = uVar3;" (assignment_expression "(param_2 + iVar8)[-1] = uVar3" (subscript_expression "(param_2 + iVar8)[-1]" (parenthesized_expression "(param_2 + iVar8)" ( (binary_expression "param_2 + iVar8" identifier + identifier) )) [ number_literal ]) = identifier) ;) (expression_statement "*param_1 = iVar9;" (assignment_expression "*param_1 = iVar9" (pointer_expression "*param_1" * identifier) = identifier) ;) }))) (return_statement "return param_1;" return identifier ;) (ERROR "}" }))
(translation_unit (declaration TYPE (pointer_declarator * (ERROR IDENT : : IDENT : : IDENT < IDENT < IDENT : : IDENT) (pointer_declarator * (pointer_declarator * (ERROR , IDENT : : IDENT < IDENT : :) IDENT))) (ERROR *) , (ERROR IDENT : : IDENT < IDENT : : (function_declarator IDENT (ERROR * >> >>) (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) { IDENT) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (while_statement while (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT % IDENT) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (binary_expression IDENT % IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT <= IDENT))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) , IDENT ))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - IDENT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT % IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) != (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) , (binary_expression (binary_expression IDENT * LIT) + LIT) ))) ;) })) (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }))) (return_statement return IDENT ;) (ERROR }))
(declaration "int * std::_V2::\n      __rotate<__normal_iterator<gold::Output_segment**,std::vector<gold::Output_segment*,std::allocator<gold::Output_segment*>>>>\n                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4)\n\n{\n  undefined4 *puVar1;" (primitive_type "int") (pointer_declarator "* std::_V2::\n      __rotate<__normal_iterator<gold::Output_segment**,std::vector<gold::Output_segment" (* "*") (ERROR "std::_V2::\n      __rotate<__normal_iterator<gold::Output_segment" (identifier "std") (: ":") (: ":") (identifier "_V2") (: ":") (: ":") (identifier "__rotate") (< "<") (identifier "__normal_iterator") (< "<") (identifier "gold") (: ":") (: ":") (identifier "Output_segment")) (pointer_declarator "**,std::vector<gold::Output_segment" (* "*") (pointer_declarator "*,std::vector<gold::Output_segment" (* "*") (ERROR ",std::vector<gold::" (, ",") (identifier "std") (: ":") (: ":") (identifier "vector") (< "<") (identifier "gold") (: ":") (: ":")) (identifier "Output_segment")))) (ERROR "*" (* "*")) (, ",") (ERROR "std::allocator<gold::Output_segment*>>>>\n                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4)\n\n{\n  undefined4" (identifier "std") (: ":") (: ":") (identifier "allocator") (< "<") (identifier "gold") (: ":") (: ":") (function_declarator "Output_segment*>>>>\n                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4)" (identifier "Output_segment") (ERROR "*>>>>" (* "*") (>> ">>") (>> ">>")) (parameter_list "(int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined4 *param_4" (type_identifier "undefined4") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) ({ "{") (identifier "undefined4")) (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined4 *puVar2;" (type_identifier "undefined4") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (if_statement "if (param_2 == param_3) {\n    *param_1 = (int)param_4;\n    return param_1;\n  }" (if "if") (parenthesized_expression "(param_2 == param_3)" (( "(") (binary_expression "param_2 == param_3" (identifier "param_2") (== "==") (identifier "param_3")) () ")")) (compound_statement "{\n    *param_1 = (int)param_4;\n    return param_1;\n  }" ({ "{") (expression_statement "*param_1 = (int)param_4;" (assignment_expression "*param_1 = (int)param_4" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4"))) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (if_statement "if (param_4 == param_3) {\n    *param_1 = (int)param_2;\n  }\n  else {\n    iVar8 = (int)param_4 - (int)param_2 >> 2;\n    iVar4 = (int)param_3 - (int)param_2 >> 2;\n    iVar6 = iVar8 - iVar4;\n    puVar1 = param_3;\n    if (iVar6 == iVar4) {\n      do {\n        puVar2 = param_2 + 1;\n        uVar3 = *param_2;\n        *param_2 = *puVar1;\n        *puVar1 = uVar3;\n        puVar1 = puVar1 + 1;\n        param_2 = puVar2;\n      } while (param_3 != puVar2);\n      *param_1 = (int)param_3;\n      return param_1;\n    }\n    iVar9 = (int)param_2 + ((int)param_4 - (int)param_3);\n    iVar5 = iVar4;\n    iVar7 = iVar6;\n    if (iVar6 <= iVar4) goto LAB_001c9d0c;\n    while (iVar5 != 1) {\n      if (0 < iVar6) {\n        iVar4 = 0;\n        puVar1 = param_2 + iVar5;\n        puVar2 = param_2;\n        do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);\n        param_2 = param_2 + iVar6;\n      }\n      if (iVar5 == 0) {\n        trap(7);\n      }\n      if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *param_1 = iVar9;\n        return param_1;\n      }\n      iVar4 = iVar5 - iVar8 % iVar5;\n      iVar6 = iVar5 - iVar4;\n      iVar8 = iVar5;\n      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        puVar1 = param_2 + iVar8;\n        if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }\n        param_2 = puVar1 + -iVar7;\n        if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }\n    }\n    uVar3 = *param_2;\n    if (param_2 + iVar8 != param_2 + 1) {\n      (*(code *)PTR_memmove_004c5af8)(param_2,param_2 + 1,iVar8 * 4 + -4);\n    }\n    (param_2 + iVar8)[-1] = uVar3;\n    *param_1 = iVar9;\n  }" (if "if") (parenthesized_expression "(param_4 == param_3)" (( "(") (binary_expression "param_4 == param_3" (identifier "param_4") (== "==") (identifier "param_3")) () ")")) (compound_statement "{\n    *param_1 = (int)param_2;\n  }" ({ "{") (expression_statement "*param_1 = (int)param_2;" (assignment_expression "*param_1 = (int)param_2" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) (; ";")) (} "}")) (else_clause "else {\n    iVar8 = (int)param_4 - (int)param_2 >> 2;\n    iVar4 = (int)param_3 - (int)param_2 >> 2;\n    iVar6 = iVar8 - iVar4;\n    puVar1 = param_3;\n    if (iVar6 == iVar4) {\n      do {\n        puVar2 = param_2 + 1;\n        uVar3 = *param_2;\n        *param_2 = *puVar1;\n        *puVar1 = uVar3;\n        puVar1 = puVar1 + 1;\n        param_2 = puVar2;\n      } while (param_3 != puVar2);\n      *param_1 = (int)param_3;\n      return param_1;\n    }\n    iVar9 = (int)param_2 + ((int)param_4 - (int)param_3);\n    iVar5 = iVar4;\n    iVar7 = iVar6;\n    if (iVar6 <= iVar4) goto LAB_001c9d0c;\n    while (iVar5 != 1) {\n      if (0 < iVar6) {\n        iVar4 = 0;\n        puVar1 = param_2 + iVar5;\n        puVar2 = param_2;\n        do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);\n        param_2 = param_2 + iVar6;\n      }\n      if (iVar5 == 0) {\n        trap(7);\n      }\n      if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *param_1 = iVar9;\n        return param_1;\n      }\n      iVar4 = iVar5 - iVar8 % iVar5;\n      iVar6 = iVar5 - iVar4;\n      iVar8 = iVar5;\n      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        puVar1 = param_2 + iVar8;\n        if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }\n        param_2 = puVar1 + -iVar7;\n        if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }\n    }\n    uVar3 = *param_2;\n    if (param_2 + iVar8 != param_2 + 1) {\n      (*(code *)PTR_memmove_004c5af8)(param_2,param_2 + 1,iVar8 * 4 + -4);\n    }\n    (param_2 + iVar8)[-1] = uVar3;\n    *param_1 = iVar9;\n  }" (else "else") (compound_statement "{\n    iVar8 = (int)param_4 - (int)param_2 >> 2;\n    iVar4 = (int)param_3 - (int)param_2 >> 2;\n    iVar6 = iVar8 - iVar4;\n    puVar1 = param_3;\n    if (iVar6 == iVar4) {\n      do {\n        puVar2 = param_2 + 1;\n        uVar3 = *param_2;\n        *param_2 = *puVar1;\n        *puVar1 = uVar3;\n        puVar1 = puVar1 + 1;\n        param_2 = puVar2;\n      } while (param_3 != puVar2);\n      *param_1 = (int)param_3;\n      return param_1;\n    }\n    iVar9 = (int)param_2 + ((int)param_4 - (int)param_3);\n    iVar5 = iVar4;\n    iVar7 = iVar6;\n    if (iVar6 <= iVar4) goto LAB_001c9d0c;\n    while (iVar5 != 1) {\n      if (0 < iVar6) {\n        iVar4 = 0;\n        puVar1 = param_2 + iVar5;\n        puVar2 = param_2;\n        do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);\n        param_2 = param_2 + iVar6;\n      }\n      if (iVar5 == 0) {\n        trap(7);\n      }\n      if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *param_1 = iVar9;\n        return param_1;\n      }\n      iVar4 = iVar5 - iVar8 % iVar5;\n      iVar6 = iVar5 - iVar4;\n      iVar8 = iVar5;\n      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        puVar1 = param_2 + iVar8;\n        if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }\n        param_2 = puVar1 + -iVar7;\n        if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }\n    }\n    uVar3 = *param_2;\n    if (param_2 + iVar8 != param_2 + 1) {\n      (*(code *)PTR_memmove_004c5af8)(param_2,param_2 + 1,iVar8 * 4 + -4);\n    }\n    (param_2 + iVar8)[-1] = uVar3;\n    *param_1 = iVar9;\n  }" ({ "{") (expression_statement "iVar8 = (int)param_4 - (int)param_2 >> 2;" (assignment_expression "iVar8 = (int)param_4 - (int)param_2 >> 2" (identifier "iVar8") (= "=") (binary_expression "(int)param_4 - (int)param_2 >> 2" (binary_expression "(int)param_4 - (int)param_2" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (- "-") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) (>> ">>") (number_literal "2"))) (; ";")) (expression_statement "iVar4 = (int)param_3 - (int)param_2 >> 2;" (assignment_expression "iVar4 = (int)param_3 - (int)param_2 >> 2" (identifier "iVar4") (= "=") (binary_expression "(int)param_3 - (int)param_2 >> 2" (binary_expression "(int)param_3 - (int)param_2" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (- "-") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) (>> ">>") (number_literal "2"))) (; ";")) (expression_statement "iVar6 = iVar8 - iVar4;" (assignment_expression "iVar6 = iVar8 - iVar4" (identifier "iVar6") (= "=") (binary_expression "iVar8 - iVar4" (identifier "iVar8") (- "-") (identifier "iVar4"))) (; ";")) (expression_statement "puVar1 = param_3;" (assignment_expression "puVar1 = param_3" (identifier "puVar1") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (iVar6 == iVar4) {\n      do {\n        puVar2 = param_2 + 1;\n        uVar3 = *param_2;\n        *param_2 = *puVar1;\n        *puVar1 = uVar3;\n        puVar1 = puVar1 + 1;\n        param_2 = puVar2;\n      } while (param_3 != puVar2);\n      *param_1 = (int)param_3;\n      return param_1;\n    }" (if "if") (parenthesized_expression "(iVar6 == iVar4)" (( "(") (binary_expression "iVar6 == iVar4" (identifier "iVar6") (== "==") (identifier "iVar4")) () ")")) (compound_statement "{\n      do {\n        puVar2 = param_2 + 1;\n        uVar3 = *param_2;\n        *param_2 = *puVar1;\n        *puVar1 = uVar3;\n        puVar1 = puVar1 + 1;\n        param_2 = puVar2;\n      } while (param_3 != puVar2);\n      *param_1 = (int)param_3;\n      return param_1;\n    }" ({ "{") (do_statement "do {\n        puVar2 = param_2 + 1;\n        uVar3 = *param_2;\n        *param_2 = *puVar1;\n        *puVar1 = uVar3;\n        puVar1 = puVar1 + 1;\n        param_2 = puVar2;\n      } while (param_3 != puVar2);" (do "do") (compound_statement "{\n        puVar2 = param_2 + 1;\n        uVar3 = *param_2;\n        *param_2 = *puVar1;\n        *puVar1 = uVar3;\n        puVar1 = puVar1 + 1;\n        param_2 = puVar2;\n      }" ({ "{") (expression_statement "puVar2 = param_2 + 1;" (assignment_expression "puVar2 = param_2 + 1" (identifier "puVar2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar3 = *param_2;" (assignment_expression "uVar3 = *param_2" (identifier "uVar3") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "*param_2 = *puVar1;" (assignment_expression "*param_2 = *puVar1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (expression_statement "*puVar1 = uVar3;" (assignment_expression "*puVar1 = uVar3" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "puVar1 = puVar1 + 1;" (assignment_expression "puVar1 = puVar1 + 1" (identifier "puVar1") (= "=") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_2 = puVar2;" (assignment_expression "param_2 = puVar2" (identifier "param_2") (= "=") (identifier "puVar2")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_3 != puVar2)" (( "(") (binary_expression "param_3 != puVar2" (identifier "param_3") (!= "!=") (identifier "puVar2")) () ")")) (; ";")) (expression_statement "*param_1 = (int)param_3;" (assignment_expression "*param_1 = (int)param_3" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3"))) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (expression_statement "iVar9 = (int)param_2 + ((int)param_4 - (int)param_3);" (assignment_expression "iVar9 = (int)param_2 + ((int)param_4 - (int)param_3)" (identifier "iVar9") (= "=") (binary_expression "(int)param_2 + ((int)param_4 - (int)param_3)" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (parenthesized_expression "((int)param_4 - (int)param_3)" (( "(") (binary_expression "(int)param_4 - (int)param_3" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (- "-") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3"))) () ")")))) (; ";")) (expression_statement "iVar5 = iVar4;" (assignment_expression "iVar5 = iVar4" (identifier "iVar5") (= "=") (identifier "iVar4")) (; ";")) (expression_statement "iVar7 = iVar6;" (assignment_expression "iVar7 = iVar6" (identifier "iVar7") (= "=") (identifier "iVar6")) (; ";")) (if_statement "if (iVar6 <= iVar4) goto LAB_001c9d0c;" (if "if") (parenthesized_expression "(iVar6 <= iVar4)" (( "(") (binary_expression "iVar6 <= iVar4" (identifier "iVar6") (<= "<=") (identifier "iVar4")) () ")")) (goto_statement "goto LAB_001c9d0c;" (goto "goto") (statement_identifier "LAB_001c9d0c") (; ";"))) (while_statement "while (iVar5 != 1) {\n      if (0 < iVar6) {\n        iVar4 = 0;\n        puVar1 = param_2 + iVar5;\n        puVar2 = param_2;\n        do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);\n        param_2 = param_2 + iVar6;\n      }\n      if (iVar5 == 0) {\n        trap(7);\n      }\n      if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *param_1 = iVar9;\n        return param_1;\n      }\n      iVar4 = iVar5 - iVar8 % iVar5;\n      iVar6 = iVar5 - iVar4;\n      iVar8 = iVar5;\n      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        puVar1 = param_2 + iVar8;\n        if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }\n        param_2 = puVar1 + -iVar7;\n        if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }\n    }" (while "while") (parenthesized_expression "(iVar5 != 1)" (( "(") (binary_expression "iVar5 != 1" (identifier "iVar5") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n      if (0 < iVar6) {\n        iVar4 = 0;\n        puVar1 = param_2 + iVar5;\n        puVar2 = param_2;\n        do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);\n        param_2 = param_2 + iVar6;\n      }\n      if (iVar5 == 0) {\n        trap(7);\n      }\n      if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *param_1 = iVar9;\n        return param_1;\n      }\n      iVar4 = iVar5 - iVar8 % iVar5;\n      iVar6 = iVar5 - iVar4;\n      iVar8 = iVar5;\n      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        puVar1 = param_2 + iVar8;\n        if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }\n        param_2 = puVar1 + -iVar7;\n        if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }\n    }" ({ "{") (if_statement "if (0 < iVar6) {\n        iVar4 = 0;\n        puVar1 = param_2 + iVar5;\n        puVar2 = param_2;\n        do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);\n        param_2 = param_2 + iVar6;\n      }" (if "if") (parenthesized_expression "(0 < iVar6)" (( "(") (binary_expression "0 < iVar6" (number_literal "0") (< "<") (identifier "iVar6")) () ")")) (compound_statement "{\n        iVar4 = 0;\n        puVar1 = param_2 + iVar5;\n        puVar2 = param_2;\n        do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);\n        param_2 = param_2 + iVar6;\n      }" ({ "{") (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1 = param_2 + iVar5;" (assignment_expression "puVar1 = param_2 + iVar5" (identifier "puVar1") (= "=") (binary_expression "param_2 + iVar5" (identifier "param_2") (+ "+") (identifier "iVar5"))) (; ";")) (expression_statement "puVar2 = param_2;" (assignment_expression "puVar2 = param_2" (identifier "puVar2") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        } while (iVar6 != iVar4);" (do "do") (compound_statement "{\n          uVar3 = *puVar2;\n          iVar4 = iVar4 + 1;\n          *puVar2 = *puVar1;\n          *puVar1 = uVar3;\n          puVar1 = puVar1 + 1;\n          puVar2 = puVar2 + 1;\n        }" ({ "{") (expression_statement "uVar3 = *puVar2;" (assignment_expression "uVar3 = *puVar2" (identifier "uVar3") (= "=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (; ";")) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar2 = *puVar1;" (assignment_expression "*puVar2 = *puVar1" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (expression_statement "*puVar1 = uVar3;" (assignment_expression "*puVar1 = uVar3" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "puVar1 = puVar1 + 1;" (assignment_expression "puVar1 = puVar1 + 1" (identifier "puVar1") (= "=") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar2 = puVar2 + 1;" (assignment_expression "puVar2 = puVar2 + 1" (identifier "puVar2") (= "=") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar6 != iVar4)" (( "(") (binary_expression "iVar6 != iVar4" (identifier "iVar6") (!= "!=") (identifier "iVar4")) () ")")) (; ";")) (expression_statement "param_2 = param_2 + iVar6;" (assignment_expression "param_2 = param_2 + iVar6" (identifier "param_2") (= "=") (binary_expression "param_2 + iVar6" (identifier "param_2") (+ "+") (identifier "iVar6"))) (; ";")) (} "}"))) (if_statement "if (iVar5 == 0) {\n        trap(7);\n      }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        trap(7);\n      }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (if_statement "if (iVar8 % iVar5 == 0) {\nLAB_001c9e0c:\n        *param_1 = iVar9;\n        return param_1;\n      }" (if "if") (parenthesized_expression "(iVar8 % iVar5 == 0)" (( "(") (binary_expression "iVar8 % iVar5 == 0" (binary_expression "iVar8 % iVar5" (identifier "iVar8") (% "%") (identifier "iVar5")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_001c9e0c:\n        *param_1 = iVar9;\n        return param_1;\n      }" ({ "{") (labeled_statement "LAB_001c9e0c:\n        *param_1 = iVar9;" (statement_identifier "LAB_001c9e0c") (: ":") (expression_statement "*param_1 = iVar9;" (assignment_expression "*param_1 = iVar9" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "iVar9")) (; ";"))) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (expression_statement "iVar4 = iVar5 - iVar8 % iVar5;" (assignment_expression "iVar4 = iVar5 - iVar8 % iVar5" (identifier "iVar4") (= "=") (binary_expression "iVar5 - iVar8 % iVar5" (identifier "iVar5") (- "-") (binary_expression "iVar8 % iVar5" (identifier "iVar8") (% "%") (identifier "iVar5")))) (; ";")) (expression_statement "iVar6 = iVar5 - iVar4;" (assignment_expression "iVar6 = iVar5 - iVar4" (identifier "iVar6") (= "=") (binary_expression "iVar5 - iVar4" (identifier "iVar5") (- "-") (identifier "iVar4"))) (; ";")) (expression_statement "iVar8 = iVar5;" (assignment_expression "iVar8 = iVar5" (identifier "iVar8") (= "=") (identifier "iVar5")) (; ";")) (while_statement "while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {\nLAB_001c9d0c:\n        puVar1 = param_2 + iVar8;\n        if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }\n        param_2 = puVar1 + -iVar7;\n        if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }" (while "while") (parenthesized_expression "(iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4)" (( "(") (comma_expression "iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4" (assignment_expression "iVar5 = iVar4" (identifier "iVar5") (= "=") (identifier "iVar4")) (, ",") (comma_expression "iVar7 = iVar6, iVar6 <= iVar4" (assignment_expression "iVar7 = iVar6" (identifier "iVar7") (= "=") (identifier "iVar6")) (, ",") (binary_expression "iVar6 <= iVar4" (identifier "iVar6") (<= "<=") (identifier "iVar4")))) () ")")) (compound_statement "{\nLAB_001c9d0c:\n        puVar1 = param_2 + iVar8;\n        if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }\n        param_2 = puVar1 + -iVar7;\n        if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }\n        if (iVar7 == 0) {\n          trap(7);\n        }\n        iVar4 = iVar8 % iVar7;\n        if (iVar4 == 0) goto LAB_001c9e0c;\n        iVar8 = iVar7;\n        iVar6 = iVar7 - iVar4;\n      }" ({ "{") (labeled_statement "LAB_001c9d0c:\n        puVar1 = param_2 + iVar8;" (statement_identifier "LAB_001c9d0c") (: ":") (expression_statement "puVar1 = param_2 + iVar8;" (assignment_expression "puVar1 = param_2 + iVar8" (identifier "puVar1") (= "=") (binary_expression "param_2 + iVar8" (identifier "param_2") (+ "+") (identifier "iVar8"))) (; ";"))) (if_statement "if (iVar7 == 1) {\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }" (if "if") (parenthesized_expression "(iVar7 == 1)" (( "(") (binary_expression "iVar7 == 1" (identifier "iVar7") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          uVar3 = puVar1[-1];\n          if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }\n          *param_2 = uVar3;\n          *param_1 = iVar9;\n          return param_1;\n        }" ({ "{") (expression_statement "uVar3 = puVar1[-1];" (assignment_expression "uVar3 = puVar1[-1]" (identifier "uVar3") (= "=") (subscript_expression "puVar1[-1]" (identifier "puVar1") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (if_statement "if (param_2 != puVar1 + -1) {\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }" (if "if") (parenthesized_expression "(param_2 != puVar1 + -1)" (( "(") (binary_expression "param_2 != puVar1 + -1" (identifier "param_2") (!= "!=") (binary_expression "puVar1 + -1" (identifier "puVar1") (+ "+") (number_literal "-1"))) () ")")) (compound_statement "{\n            (*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);\n          }" ({ "{") (expression_statement "(*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);" (call_expression "(*(code *)PTR_memmove_004c5af8)\n                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2)" (parenthesized_expression "(*(code *)PTR_memmove_004c5af8)" (( "(") (pointer_expression "*(code *)PTR_memmove_004c5af8" (* "*") (cast_expression "(code *)PTR_memmove_004c5af8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memmove_004c5af8"))) () ")")) (argument_list "((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2)" (( "(") (binary_expression "(int)puVar1 - ((int)(puVar1 + -1) - (int)param_2)" (cast_expression "(int)puVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar1")) (- "-") (parenthesized_expression "((int)(puVar1 + -1) - (int)param_2)" (( "(") (binary_expression "(int)(puVar1 + -1) - (int)param_2" (cast_expression "(int)(puVar1 + -1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(puVar1 + -1)" (( "(") (binary_expression "puVar1 + -1" (identifier "puVar1") (+ "+") (number_literal "-1")) () ")"))) (- "-") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) () ")"))) (, ",") (identifier "param_2") () ")"))) (; ";")) (} "}"))) (expression_statement "*param_2 = uVar3;" (assignment_expression "*param_2 = uVar3" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "*param_1 = iVar9;" (assignment_expression "*param_1 = iVar9" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "iVar9")) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (expression_statement "param_2 = puVar1 + -iVar7;" (assignment_expression "param_2 = puVar1 + -iVar7" (identifier "param_2") (= "=") (binary_expression "puVar1 + -iVar7" (identifier "puVar1") (+ "+") (unary_expression "-iVar7" (- "-") (identifier "iVar7")))) (; ";")) (if_statement "if (0 < iVar4) {\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }" (if "if") (parenthesized_expression "(0 < iVar4)" (( "(") (binary_expression "0 < iVar4" (number_literal "0") (< "<") (identifier "iVar4")) () ")")) (compound_statement "{\n          iVar6 = 0;\n          puVar2 = param_2;\n          do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);\n          param_2 = param_2 + -iVar6;\n        }" ({ "{") (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2 = param_2;" (assignment_expression "puVar2 = param_2" (identifier "puVar2") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          } while (iVar6 != iVar4);" (do "do") (compound_statement "{\n            puVar1 = puVar1 + -1;\n            puVar2 = puVar2 + -1;\n            uVar3 = *puVar2;\n            iVar6 = iVar6 + 1;\n            *puVar2 = *puVar1;\n            *puVar1 = uVar3;\n          }" ({ "{") (expression_statement "puVar1 = puVar1 + -1;" (assignment_expression "puVar1 = puVar1 + -1" (identifier "puVar1") (= "=") (binary_expression "puVar1 + -1" (identifier "puVar1") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar2 = puVar2 + -1;" (assignment_expression "puVar2 = puVar2 + -1" (identifier "puVar2") (= "=") (binary_expression "puVar2 + -1" (identifier "puVar2") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar3 = *puVar2;" (assignment_expression "uVar3 = *puVar2" (identifier "uVar3") (= "=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (; ";")) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar2 = *puVar1;" (assignment_expression "*puVar2 = *puVar1" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (expression_statement "*puVar1 = uVar3;" (assignment_expression "*puVar1 = uVar3" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (identifier "uVar3")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar6 != iVar4)" (( "(") (binary_expression "iVar6 != iVar4" (identifier "iVar6") (!= "!=") (identifier "iVar4")) () ")")) (; ";")) (expression_statement "param_2 = param_2 + -iVar6;" (assignment_expression "param_2 = param_2 + -iVar6" (identifier "param_2") (= "=") (binary_expression "param_2 + -iVar6" (identifier "param_2") (+ "+") (unary_expression "-iVar6" (- "-") (identifier "iVar6")))) (; ";")) (} "}"))) (if_statement "if (iVar7 == 0) {\n          trap(7);\n        }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          trap(7);\n        }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar4 = iVar8 % iVar7;" (assignment_expression "iVar4 = iVar8 % iVar7" (identifier "iVar4") (= "=") (binary_expression "iVar8 % iVar7" (identifier "iVar8") (% "%") (identifier "iVar7"))) (; ";")) (if_statement "if (iVar4 == 0) goto LAB_001c9e0c;" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001c9e0c;" (goto "goto") (statement_identifier "LAB_001c9e0c") (; ";"))) (expression_statement "iVar8 = iVar7;" (assignment_expression "iVar8 = iVar7" (identifier "iVar8") (= "=") (identifier "iVar7")) (; ";")) (expression_statement "iVar6 = iVar7 - iVar4;" (assignment_expression "iVar6 = iVar7 - iVar4" (identifier "iVar6") (= "=") (binary_expression "iVar7 - iVar4" (identifier "iVar7") (- "-") (identifier "iVar4"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar3 = *param_2;" (assignment_expression "uVar3 = *param_2" (identifier "uVar3") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (param_2 + iVar8 != param_2 + 1) {\n      (*(code *)PTR_memmove_004c5af8)(param_2,param_2 + 1,iVar8 * 4 + -4);\n    }" (if "if") (parenthesized_expression "(param_2 + iVar8 != param_2 + 1)" (( "(") (binary_expression "param_2 + iVar8 != param_2 + 1" (binary_expression "param_2 + iVar8" (identifier "param_2") (+ "+") (identifier "iVar8")) (!= "!=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) () ")")) (compound_statement "{\n      (*(code *)PTR_memmove_004c5af8)(param_2,param_2 + 1,iVar8 * 4 + -4);\n    }" ({ "{") (expression_statement "(*(code *)PTR_memmove_004c5af8)(param_2,param_2 + 1,iVar8 * 4 + -4);" (call_expression "(*(code *)PTR_memmove_004c5af8)(param_2,param_2 + 1,iVar8 * 4 + -4)" (parenthesized_expression "(*(code *)PTR_memmove_004c5af8)" (( "(") (pointer_expression "*(code *)PTR_memmove_004c5af8" (* "*") (cast_expression "(code *)PTR_memmove_004c5af8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memmove_004c5af8"))) () ")")) (argument_list "(param_2,param_2 + 1,iVar8 * 4 + -4)" (( "(") (identifier "param_2") (, ",") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) (, ",") (binary_expression "iVar8 * 4 + -4" (binary_expression "iVar8 * 4" (identifier "iVar8") (* "*") (number_literal "4")) (+ "+") (number_literal "-4")) () ")"))) (; ";")) (} "}"))) (expression_statement "(param_2 + iVar8)[-1] = uVar3;" (assignment_expression "(param_2 + iVar8)[-1] = uVar3" (subscript_expression "(param_2 + iVar8)[-1]" (parenthesized_expression "(param_2 + iVar8)" (( "(") (binary_expression "param_2 + iVar8" (identifier "param_2") (+ "+") (identifier "iVar8")) () ")")) ([ "[") (number_literal "-1") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "*param_1 = iVar9;" (assignment_expression "*param_1 = iVar9" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "iVar9")) (; ";")) (} "}")))) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (ERROR "}" (} "}"))

/* WARNING: Type propagation algorithm not settling */
/* DWARF original name: __rotate<__gnu_cxx::__normal_iterator<gold::Output_segment**,
   std::vector<gold::Output_segment*> > > */

var_1<var_2::var_7**,var_3::vector<var_2::var_7*,var_3::allocator<var_2::var_7*>var_4>var_4>
 var_5::_V2::
 __rotate<var_6::var_1<var_2::var_7**,var_3::vector<var_2::var_7*>var_4>var_4>
           (var_7 **var_12,var_7 *var_8,var_7 *var_9,
           var_7 *var_10)

{
  type_1 *var_11;
  var_7 *pOVar2;
  type_1 ppOVar3;
  int var_14;
  int var_16;
  int var_15;
  int var_19;
  int var_13;
  var_7 *pOVar9;
  type_1 *var_20;
  
  if (var_8 == var_9) {
    *var_12 = var_10;
    return (var_1<var_2::var_7**,var_3::vector<var_2::var_7*,var_3::allocator<var_2::var_7*>var_4>var_4>
            )var_12;
  }
  if (var_10 == var_9) {
    *var_12 = var_8;
  }
  else {
    var_13 = (int)var_10 - (int)var_8 >> 2;
    var_14 = (int)var_9 - (int)var_8 >> 2;
    var_15 = var_13 - var_14;
    pOVar9 = var_9;
    if (var_15 == var_14) {
      do {
        var_11 = &var_8->output_lists_[0].
                    super__Vector_base<var_2::var_18*,var_3::allocator<var_2::var_18*>var_4>.
                    _M_impl._M_finish;
        ppOVar3 = var_8->output_lists_[0].
                  super__Vector_base<var_2::var_18*,var_3::allocator<var_2::var_18*>var_4>.
                  _M_impl._M_start;
        var_8->output_lists_[0].
        super__Vector_base<var_2::var_18*,var_3::allocator<var_2::var_18*>var_4>._M_impl._M_start
             = pOVar9->output_lists_[0].
               super__Vector_base<var_2::var_18*,var_3::allocator<var_2::var_18*>var_4>._M_impl.
               _M_start;
        pOVar9->output_lists_[0].
        super__Vector_base<var_2::var_18*,var_3::allocator<var_2::var_18*>var_4>._M_impl._M_start
             = ppOVar3;
        pOVar9 = (var_7 *)
                 &pOVar9->output_lists_[0].
                  super__Vector_base<var_2::var_18*,var_3::allocator<var_2::var_18*>var_4>.
                  _M_impl._M_finish;
        var_8 = (var_7 *)var_11;
      } while (var_9 != (var_7 *)var_11);
      *var_12 = var_9;
      return (var_1<var_2::var_7**,var_3::vector<var_2::var_7*,var_3::allocator<var_2::var_7*>var_4>var_4>
              )var_12;
    }
    pOVar9 = (var_7 *)((int)var_8 + ((int)var_10 - (int)var_9));
    var_16 = var_14;
    var_19 = var_15;
    if (var_15 <= var_14) goto LAB_001c9d0c;
    while (var_16 != 1) {
      if (0 < var_15) {
        var_14 = 0;
        var_11 = &var_8->output_lists_[0].
                    super__Vector_base<var_2::var_18*,var_3::allocator<var_2::var_18*>var_4>.
                    _M_impl._M_start + var_16;
        pOVar2 = var_8;
        do {
          ppOVar3 = pOVar2->output_lists_[0].
                    super__Vector_base<var_2::var_18*,var_3::allocator<var_2::var_18*>var_4>.
                    _M_impl._M_start;
          var_14 = var_14 + 1;
          pOVar2->output_lists_[0].
          super__Vector_base<var_2::var_18*,var_3::allocator<var_2::var_18*>var_4>._M_impl.
          _M_start = *var_11;
          *var_11 = ppOVar3;
          var_11 = var_11 + 1;
          pOVar2 = (var_7 *)
                   &pOVar2->output_lists_[0].
                    super__Vector_base<var_2::var_18*,var_3::allocator<var_2::var_18*>var_4>.
                    _M_impl._M_finish;
        } while (var_15 != var_14);
        var_8 = (var_7 *)
                   (&var_8->output_lists_[0].
                     super__Vector_base<var_2::var_18*,var_3::allocator<var_2::var_18*>var_4>.
                     _M_impl._M_start + var_15);
      }
      if (var_16 == 0) {
        var_17(7);
      }
      if (var_13 % var_16 == 0) {
LAB_001c9e0c:
        *var_12 = pOVar9;
        return (var_1<var_2::var_7**,var_3::vector<var_2::var_7*,var_3::allocator<var_2::var_7*>var_4>var_4>
                )var_12;
      }
      var_14 = var_16 - var_13 % var_16;
      var_15 = var_16 - var_14;
      var_13 = var_16;
      while (var_16 = var_14, var_19 = var_15, var_15 <= var_14) {
LAB_001c9d0c:
        var_11 = &var_8->output_lists_[0].
                    super__Vector_base<var_2::var_18*,var_3::allocator<var_2::var_18*>var_4>.
                    _M_impl._M_start + var_13;
        if (var_19 == 1) {
          ppOVar3 = var_11[-1];
          if (var_8 != (var_7 *)(var_11 + -1)) {
            (*(type_2 *)PTR_memmove_004c5af8)
                      ((int)var_11 - ((int)(var_11 + -1) - (int)var_8),var_8);
          }
          var_8->output_lists_[0].
          super__Vector_base<var_2::var_18*,var_3::allocator<var_2::var_18*>var_4>._M_impl.
          _M_start = ppOVar3;
          *var_12 = pOVar9;
          return (var_1<var_2::var_7**,var_3::vector<var_2::var_7*,var_3::allocator<var_2::var_7*>var_4>var_4>
                  )var_12;
        }
        var_8 = (var_7 *)(var_11 + -var_19);
        if (0 < var_14) {
          var_15 = 0;
          pOVar2 = var_8;
          do {
            var_11 = var_11 + -1;
            pOVar2 = (var_7 *)&pOVar2[-1].field_0x1a4;
            ppOVar3 = *(type_1 *)pOVar2;
            var_15 = var_15 + 1;
            *(type_1 *)pOVar2 = *var_11;
            *var_11 = ppOVar3;
          } while (var_15 != var_14);
          var_8 = (var_7 *)((int)var_8 + var_15 * -4);
        }
        if (var_19 == 0) {
          var_17(7);
        }
        var_14 = var_13 % var_19;
        if (var_14 == 0) goto LAB_001c9e0c;
        var_13 = var_19;
        var_15 = var_19 - var_14;
      }
    }
    var_11 = &var_8->output_lists_[0].
                super__Vector_base<var_2::var_18*,var_3::allocator<var_2::var_18*>var_4>._M_impl.
                _M_finish;
    var_20 = &var_8->output_lists_[0].
                 super__Vector_base<var_2::var_18*,var_3::allocator<var_2::var_18*>var_4>._M_impl
                 ._M_start + var_13;
    ppOVar3 = var_8->output_lists_[0].
              super__Vector_base<var_2::var_18*,var_3::allocator<var_2::var_18*>var_4>._M_impl.
              _M_start;
    if (var_20 != var_11) {
      (*(type_2 *)PTR_memmove_004c5af8)(var_8,var_11,var_13 * 4 + -4);
    }
    var_20[-1] = ppOVar3;
    *var_12 = pOVar9;
  }
  return (var_1<var_2::var_7**,var_3::vector<var_2::var_7*,var_3::allocator<var_2::var_7*>var_4>var_4>
          )var_12;
}


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

/* __normal_iterator<gold::Output_segment**, std::vector<gold::Output_segment*,
   std::allocator<gold::Output_segment*> > >
   std::_V2::__rotate<__normal_iterator<gold::Output_segment**, std::vector<gold::Output_segment*,
   std::allocator<gold::Output_segment*> > > >(__normal_iterator<gold::Output_segment**,
   std::vector<gold::Output_segment*, std::allocator<gold::Output_segment*> > >,
   __normal_iterator<gold::Output_segment**, std::vector<gold::Output_segment*,
   std::allocator<gold::Output_segment*> > >, __normal_iterator<gold::Output_segment**,
   std::vector<gold::Output_segment*, std::allocator<gold::Output_segment*> > >,
   std::random_access_iterator_tag) */

int * std::_V2::
      MASKED
                (int *param_1,undefined4 *param_2,undefined4 *param_3,undefined4 *param_4)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  
  if (param_2 == param_3) {
    *param_1 = (int)param_4;
    return param_1;
  }
  if (param_4 == param_3) {
    *param_1 = (int)param_2;
  }
  else {
    iVar8 = (int)param_4 - (int)param_2 >> 2;
    iVar4 = (int)param_3 - (int)param_2 >> 2;
    iVar6 = iVar8 - iVar4;
    puVar1 = param_3;
    if (iVar6 == iVar4) {
      do {
        puVar2 = param_2 + 1;
        uVar3 = *param_2;
        *param_2 = *puVar1;
        *puVar1 = uVar3;
        puVar1 = puVar1 + 1;
        param_2 = puVar2;
      } while (param_3 != puVar2);
      *param_1 = (int)param_3;
      return param_1;
    }
    iVar9 = (int)param_2 + ((int)param_4 - (int)param_3);
    iVar5 = iVar4;
    iVar7 = iVar6;
    if (iVar6 <= iVar4) goto LAB_001c9d0c;
    while (iVar5 != 1) {
      if (0 < iVar6) {
        iVar4 = 0;
        puVar1 = param_2 + iVar5;
        puVar2 = param_2;
        do {
          uVar3 = *puVar2;
          iVar4 = iVar4 + 1;
          *puVar2 = *puVar1;
          *puVar1 = uVar3;
          puVar1 = puVar1 + 1;
          puVar2 = puVar2 + 1;
        } while (iVar6 != iVar4);
        param_2 = param_2 + iVar6;
      }
      if (iVar5 == 0) {
        trap(7);
      }
      if (iVar8 % iVar5 == 0) {
LAB_001c9e0c:
        *param_1 = iVar9;
        return param_1;
      }
      iVar4 = iVar5 - iVar8 % iVar5;
      iVar6 = iVar5 - iVar4;
      iVar8 = iVar5;
      while (iVar5 = iVar4, iVar7 = iVar6, iVar6 <= iVar4) {
LAB_001c9d0c:
        puVar1 = param_2 + iVar8;
        if (iVar7 == 1) {
          uVar3 = puVar1[-1];
          if (param_2 != puVar1 + -1) {
            (*(code *)PTR_memmove_004c5af8)
                      ((int)puVar1 - ((int)(puVar1 + -1) - (int)param_2),param_2);
          }
          *param_2 = uVar3;
          *param_1 = iVar9;
          return param_1;
        }
        param_2 = puVar1 + -iVar7;
        if (0 < iVar4) {
          iVar6 = 0;
          puVar2 = param_2;
          do {
            puVar1 = puVar1 + -1;
            puVar2 = puVar2 + -1;
            uVar3 = *puVar2;
            iVar6 = iVar6 + 1;
            *puVar2 = *puVar1;
            *puVar1 = uVar3;
          } while (iVar6 != iVar4);
          param_2 = param_2 + -iVar6;
        }
        if (iVar7 == 0) {
          trap(7);
        }
        iVar4 = iVar8 % iVar7;
        if (iVar4 == 0) goto LAB_001c9e0c;
        iVar8 = iVar7;
        iVar6 = iVar7 - iVar4;
      }
    }
    uVar3 = *param_2;
    if (param_2 + iVar8 != param_2 + 1) {
      (*(code *)PTR_memmove_004c5af8)(param_2,param_2 + 1,iVar8 * 4 + -4);
    }
    (param_2 + iVar8)[-1] = uVar3;
    *param_1 = iVar9;
  }
  return param_1;
}

