
/* DWARF original name:
   _M_range_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,
   std::vector<std::__cxx11::basic_string<char> > > >
   DWARF original prototype: void
   _M_range_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>_>(vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
   * this, iterator __position,
   __normal_iterator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>*,_std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>
   __first,
   __normal_iterator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>*,_std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>
   __last, forward_iterator_tag param_5) */

void __thiscall
std::
vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
::
_M_range_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>_>
          (vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
           *this,pointer __position,string *__first,string *__last)

{
  pointer *ppbVar1;
  size_type sVar2;
  size_type *psVar3;
  pointer pcVar4;
  undefined8 uVar5;
  ulong uVar6;
  size_type *psVar7;
  ulong uVar8;
  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *pbVar9;
  pointer pbVar10;
  long lVar11;
  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *pbVar12;
  pointer pbVar13;
  pointer pbVar14;
  size_t __n;
  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *pbVar15;
  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *pbVar16;
  long lVar17;
  undefined8 *__dest;
  string *psVar18;
  ulong uVar19;
  ulong uVar20;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar21;
  pointer pbVar22;
  long lVar23;
  ulong local_68;
  
  if (__first == __last) {
    return;
  }
  lVar11 = (long)__last - (long)__first;
  uVar6 = lVar11 >> 5;
  pbVar22 = (this->
            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
            )._M_impl._M_finish;
  if (uVar6 <= (ulong)((long)(this->
                             super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
                             )._M_impl._M_end_of_storage - (long)pbVar22 >> 5)) {
    lVar17 = (long)pbVar22 - (long)__position;
    local_68 = lVar17 >> 5;
    if (uVar6 < local_68) {
      lVar17 = (long)pbVar22 - lVar11;
      psVar7 = (size_type *)(lVar17 + 0x10);
      pbVar10 = pbVar22;
      do {
        (pbVar10->_M_dataplus)._M_p = (pointer)&pbVar10->field_2;
        if ((size_type *)psVar7[-2] == psVar7) {
          sVar2 = psVar7[1];
          (pbVar10->field_2)._M_allocated_capacity = *psVar7;
          *(size_type *)((long)&pbVar10->field_2 + 8) = sVar2;
        }
        else {
          (pbVar10->_M_dataplus)._M_p = (pointer)psVar7[-2];
          (pbVar10->field_2)._M_allocated_capacity = *psVar7;
        }
        pbVar14 = pbVar10 + 1;
        pbVar10->_M_string_length = psVar7[-1];
        psVar7[-2] = (size_type)psVar7;
        psVar7[-1] = 0;
        *(char *)psVar7 = '\0';
        psVar7 = psVar7 + 4;
        pbVar10 = pbVar14;
      } while (pbVar14 !=
               (pointer)((long)&pbVar22[1]._M_dataplus._M_p +
                        ((ulong)((long)pbVar22 + (-0x20 - lVar17)) & 0xffffffffffffffe0)));
      ppbVar1 = &(this->
                 super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
                 )._M_impl._M_finish;
      *ppbVar1 = (pointer)((long)*ppbVar1 + lVar11);
      paVar21 = &pbVar22[-1].field_2;
      lVar23 = lVar17 - (long)__position >> 5;
      psVar7 = (size_type *)(lVar17 + -0x10);
      if (0 < lVar17 - (long)__position) {
        do {
          psVar3 = (size_type *)psVar7[-2];
          __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);
          if (psVar3 == psVar7) {
            __n = psVar7[-1];
            if (__n != 0) {
              if (__n == 1) {
                *(char *)__dest = (char)*psVar7;
                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);
                __n = psVar7[-1];
              }
              else {
                memcpy(__dest,psVar7,__n);
                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);
                __n = psVar7[-1];
              }
            }
            *(size_t *)(paVar21->_M_local_buf + -8) = __n;
            *(undefined1 *)((long)__dest + __n) = 0;
          }
          else {
            if (paVar21 ==
                (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                 *)__dest) {
              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;
              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];
              paVar21->_M_allocated_capacity = *psVar7;
            }
            else {
              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;
              sVar2 = paVar21->_M_allocated_capacity;
              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];
              paVar21->_M_allocated_capacity = *psVar7;
              if (__dest != (undefined8 *)0x0) {
                psVar7[-2] = (size_type)__dest;
                *psVar7 = sVar2;
                goto LAB_002d717a;
              }
            }
            psVar7[-2] = (size_type)psVar7;
          }
LAB_002d717a:
          paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                     *)(paVar21->_M_local_buf + -0x20);
          psVar7[-1] = 0;
          *(undefined1 *)psVar7[-2] = 0;
          lVar23 = lVar23 + -1;
          psVar7 = psVar7 + -4;
        } while (lVar23 != 0);
      }
      if (0 < lVar11) {
        do {
          std::string::_M_assign((string *)__position,__first);
          uVar6 = uVar6 - 1;
          __first = __first + 0x20;
          __position = __position + 1;
        } while (uVar6 != 0);
        return;
      }
    }
    else {
      psVar18 = __first + lVar17;
      pbVar10 = pbVar22;
      pbVar9 = pbVar22;
      if (__last != psVar18) {
        do {
          (pbVar9->_M_dataplus)._M_p = (pointer)&pbVar9->field_2;
                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */
          __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
          _M_construct<char*>(pbVar9,*(long *)psVar18,*(long *)(psVar18 + 8) + *(long *)psVar18);
          psVar18 = psVar18 + 0x20;
          pbVar9 = pbVar9 + 1;
        } while (__last != psVar18);
        pbVar10 = (this->
                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
                  )._M_impl._M_finish;
      }
      pbVar10 = pbVar10 + (uVar6 - local_68);
      (this->
      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
      )._M_impl._M_finish = pbVar10;
      if (pbVar22 != __position) {
        paVar21 = &__position->field_2;
        pbVar14 = pbVar10;
        do {
          (pbVar14->_M_dataplus)._M_p = (pointer)&pbVar14->field_2;
          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
               *)*(pointer *)(paVar21->_M_local_buf + -0x10) == paVar21) {
            uVar5 = *(undefined8 *)(paVar21->_M_local_buf + 8);
            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;
            *(undefined8 *)((long)&pbVar14->field_2 + 8) = uVar5;
          }
          else {
            (pbVar14->_M_dataplus)._M_p = *(pointer *)(paVar21->_M_local_buf + -0x10);
            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;
          }
          pbVar13 = pbVar14 + 1;
          pbVar14->_M_string_length = *(size_type *)(paVar21->_M_local_buf + -8);
          *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
            **)(paVar21->_M_local_buf + -0x10) = paVar21;
          *(char *)((long)paVar21 + -8) = '\0';
          *(char *)((long)paVar21 + -7) = '\0';
          *(char *)((long)paVar21 + -6) = '\0';
          *(char *)((long)paVar21 + -5) = '\0';
          *(char *)((long)paVar21 + -4) = '\0';
          *(char *)((long)paVar21 + -3) = '\0';
          *(char *)((long)paVar21 + -2) = '\0';
          *(char *)((long)paVar21 + -1) = '\0';
          paVar21->_M_local_buf[0] = '\0';
          paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                     *)(paVar21->_M_local_buf + 0x20);
          pbVar14 = pbVar13;
        } while (pbVar13 !=
                 (pointer)((long)&pbVar10[1]._M_dataplus._M_p +
                          ((ulong)((long)pbVar22 + (-0x20 - (long)__position)) & 0xffffffffffffffe0)
                          ));
        pbVar10 = (this->
                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
                  )._M_impl._M_finish;
      }
      (this->
      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
      )._M_impl._M_finish = (pointer)((long)pbVar10 + lVar17);
      if (0 < lVar17) {
        do {
          std::string::_M_assign((string *)__position,__first);
          local_68 = local_68 - 1;
          __first = __first + 0x20;
          __position = __position + 1;
        } while (local_68 != 0);
      }
    }
    return;
  }
  pbVar10 = (this->
            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
            )._M_impl._M_start;
  uVar8 = 0x7ffffffffffffff;
  uVar19 = (long)pbVar22 - (long)pbVar10 >> 5;
  if (0x7ffffffffffffff - uVar19 < uVar6) {
                    /* WARNING: Subroutine does not return */
    __throw_length_error("vector::_M_range_insert");
  }
  if (uVar6 < uVar19) {
    uVar6 = uVar19;
  }
  uVar20 = uVar19 + uVar6;
  if ((CARRY8(uVar19,uVar6)) || (0x7ffffffffffffff < uVar20)) {
    uVar20 = 0xffffffffffffffe0;
  }
  else {
    pbVar9 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0;
    uVar8 = uVar20;
    if (uVar20 == 0) goto LAB_002d6f6d;
    uVar20 = uVar20 * 0x20;
  }
  pbVar9 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)operator_new(uVar20)
  ;
  pbVar10 = (this->
            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
            )._M_impl._M_start;
LAB_002d6f6d:
  pbVar12 = pbVar9;
  if (__position != pbVar10) {
    lVar11 = ((ulong)((long)__position + (-0x20 - (long)pbVar10)) >> 5) + 1;
    paVar21 = &pbVar10->field_2;
    do {
      (pbVar12->_M_dataplus)._M_p = (pointer)&pbVar12->field_2;
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)*(size_type **)(paVar21->_M_local_buf + -0x10) == paVar21) {
        sVar2 = *(size_type *)(paVar21->_M_local_buf + 8);
        (pbVar12->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;
        *(size_type *)((long)&pbVar12->field_2 + 8) = sVar2;
      }
      else {
        (pbVar12->_M_dataplus)._M_p = (pointer)*(size_type **)(paVar21->_M_local_buf + -0x10);
        (pbVar12->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;
      }
      pbVar16 = pbVar12 + 1;
      pbVar12->_M_string_length = *(size_type *)(paVar21->_M_local_buf + -8);
      *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
        **)(paVar21->_M_local_buf + -0x10) = paVar21;
      *(size_type *)(paVar21->_M_local_buf + -8) = 0;
      paVar21->_M_local_buf[0] = '\0';
      paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                 *)(paVar21->_M_local_buf + 0x20);
      pbVar12 = pbVar16;
    } while (pbVar16 != pbVar9 + lVar11);
    pbVar12 = pbVar9 + lVar11;
  }
  do {
    lVar11 = *(long *)__first;
    lVar17 = *(long *)(__first + 8);
    (pbVar12->_M_dataplus)._M_p = (pointer)&pbVar12->field_2;
                    /* try { // try from 002d729d to 002d72a1 has its CatchHandler @ 002d73c5 */
    __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::_M_construct<char*>
              (pbVar12,lVar11,lVar17 + lVar11);
    __first = __first + 0x20;
    pbVar12 = pbVar12 + 1;
  } while (__last != __first);
  pbVar22 = (this->
            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
            )._M_impl._M_finish;
  if (__position != pbVar22) {
    lVar11 = ((ulong)((long)pbVar22 + (-0x20 - (long)__position)) >> 5) + 1;
    paVar21 = &__position->field_2;
    pbVar16 = pbVar12;
    do {
      (pbVar16->_M_dataplus)._M_p = (pointer)&pbVar16->field_2;
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)*(size_type **)(paVar21->_M_local_buf + -0x10) == paVar21) {
        sVar2 = *(size_type *)(paVar21->_M_local_buf + 8);
        (pbVar16->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;
        *(size_type *)((long)&pbVar16->field_2 + 8) = sVar2;
      }
      else {
        (pbVar16->_M_dataplus)._M_p = (pointer)*(size_type **)(paVar21->_M_local_buf + -0x10);
        (pbVar16->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;
      }
      sVar2 = *(size_type *)(paVar21->_M_local_buf + -8);
      pbVar15 = pbVar16 + 1;
      *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
        **)(paVar21->_M_local_buf + -0x10) = paVar21;
      *(size_type *)(paVar21->_M_local_buf + -8) = 0;
      pbVar16->_M_string_length = sVar2;
      paVar21->_M_local_buf[0] = '\0';
      paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                 *)(paVar21->_M_local_buf + 0x20);
      pbVar16 = pbVar15;
    } while (pbVar15 != pbVar12 + lVar11);
    pbVar22 = (this->
              super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
              )._M_impl._M_finish;
    pbVar12 = pbVar12 + lVar11;
  }
  pbVar10 = (this->
            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
            )._M_impl._M_start;
  if (pbVar10 != pbVar22) {
    do {
      pcVar4 = (pbVar10->_M_dataplus)._M_p;
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)pcVar4 != &pbVar10->field_2) {
        operator_delete(pcVar4);
      }
      pbVar10 = pbVar10 + 1;
    } while (pbVar10 != pbVar22);
    pbVar22 = (this->
              super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
              )._M_impl._M_start;
  }
  if (pbVar22 != (pointer)0x0) {
    operator_delete(pbVar22);
  }
  (this->
  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
  )._M_impl._M_start = pbVar9;
  (this->
  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
  )._M_impl._M_finish = pbVar12;
  (this->
  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
  )._M_impl._M_end_of_storage = pbVar9 + uVar8;
  return;
}



void FUN_002d6e10(undefined8 *param_1,undefined8 *param_2,long *param_3,long *param_4)

{
  undefined8 uVar1;
  ulong uVar2;
  ulong uVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  long lVar7;
  undefined8 *puVar8;
  size_t __n;
  undefined8 *puVar9;
  long lVar10;
  long *plVar11;
  ulong uVar12;
  ulong uVar13;
  long lVar14;
  ulong local_68;
  
  if (param_3 == param_4) {
    return;
  }
  lVar7 = (long)param_4 - (long)param_3;
  uVar2 = lVar7 >> 5;
  puVar4 = (undefined8 *)param_1[1];
  if (uVar2 <= (ulong)(param_1[2] - (long)puVar4 >> 5)) {
    lVar10 = (long)puVar4 - (long)param_2;
    local_68 = lVar10 >> 5;
    if (uVar2 < local_68) {
      lVar10 = (long)puVar4 - lVar7;
      puVar6 = (undefined8 *)(lVar10 + 0x10);
      puVar5 = puVar4;
      do {
        *puVar5 = puVar5 + 2;
        if ((undefined8 *)puVar6[-2] == puVar6) {
          uVar1 = puVar6[1];
          puVar5[2] = *puVar6;
          puVar5[3] = uVar1;
        }
        else {
          *puVar5 = (undefined8 *)puVar6[-2];
          puVar5[2] = *puVar6;
        }
        puVar9 = puVar5 + 4;
        puVar5[1] = puVar6[-1];
        puVar6[-2] = puVar6;
        puVar6[-1] = 0;
        *(undefined1 *)puVar6 = 0;
        puVar6 = puVar6 + 4;
        puVar5 = puVar9;
      } while (puVar9 != (undefined8 *)
                         ((long)puVar4 +
                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20));
      param_1[1] = param_1[1] + lVar7;
      puVar4 = puVar4 + -2;
      lVar14 = lVar10 - (long)param_2 >> 5;
      puVar6 = (undefined8 *)(lVar10 + -0x10);
      if (0 < lVar10 - (long)param_2) {
        do {
          puVar5 = (undefined8 *)puVar6[-2];
          puVar9 = (undefined8 *)puVar4[-2];
          if (puVar5 == puVar6) {
            __n = puVar6[-1];
            if (__n != 0) {
              if (__n == 1) {
                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;
                puVar9 = (undefined8 *)puVar4[-2];
                __n = puVar6[-1];
              }
              else {
                memcpy(puVar9,puVar6,__n);
                puVar9 = (undefined8 *)puVar4[-2];
                __n = puVar6[-1];
              }
            }
            puVar4[-1] = __n;
            *(undefined1 *)((long)puVar9 + __n) = 0;
          }
          else {
            if (puVar4 == puVar9) {
              puVar4[-2] = puVar5;
              puVar4[-1] = puVar6[-1];
              *puVar4 = *puVar6;
            }
            else {
              puVar4[-2] = puVar5;
              uVar1 = *puVar4;
              puVar4[-1] = puVar6[-1];
              *puVar4 = *puVar6;
              if (puVar9 != (undefined8 *)0x0) {
                puVar6[-2] = puVar9;
                *puVar6 = uVar1;
                goto LAB_002d717a;
              }
            }
            puVar6[-2] = puVar6;
          }
LAB_002d717a:
          puVar4 = puVar4 + -4;
          puVar6[-1] = 0;
          *(undefined1 *)puVar6[-2] = 0;
          lVar14 = lVar14 + -1;
          puVar6 = puVar6 + -4;
        } while (lVar14 != 0);
      }
      if (0 < lVar7) {
        do {
          FUN_0033f660(param_2,param_3);
          uVar2 = uVar2 - 1;
          param_3 = param_3 + 4;
          param_2 = param_2 + 4;
        } while (uVar2 != 0);
        return;
      }
    }
    else {
      plVar11 = (long *)((long)param_3 + lVar10);
      puVar6 = puVar4;
      if (param_4 != plVar11) {
        do {
          *puVar6 = puVar6 + 2;
                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */
          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);
          plVar11 = plVar11 + 4;
          puVar6 = puVar6 + 4;
        } while (param_4 != plVar11);
        puVar6 = (undefined8 *)param_1[1];
      }
      puVar6 = puVar6 + (uVar2 - local_68) * 4;
      param_1[1] = puVar6;
      if (puVar4 != param_2) {
        puVar5 = param_2 + 2;
        puVar9 = puVar6;
        do {
          *puVar9 = puVar9 + 2;
          if ((undefined8 *)puVar5[-2] == puVar5) {
            uVar1 = puVar5[1];
            puVar9[2] = *puVar5;
            puVar9[3] = uVar1;
          }
          else {
            *puVar9 = (undefined8 *)puVar5[-2];
            puVar9[2] = *puVar5;
          }
          puVar8 = puVar9 + 4;
          puVar9[1] = puVar5[-1];
          puVar5[-2] = puVar5;
          puVar5[-1] = 0;
          *(undefined1 *)puVar5 = 0;
          puVar5 = puVar5 + 4;
          puVar9 = puVar8;
        } while (puVar8 != (undefined8 *)
                           ((long)puVar6 +
                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));
        puVar6 = (undefined8 *)param_1[1];
      }
      param_1[1] = (long)puVar6 + lVar10;
      if (0 < lVar10) {
        do {
          FUN_0033f660(param_2,param_3);
          local_68 = local_68 - 1;
          param_3 = param_3 + 4;
          param_2 = param_2 + 4;
        } while (local_68 != 0);
      }
    }
    return;
  }
  puVar6 = (undefined8 *)*param_1;
  uVar3 = 0x7ffffffffffffff;
  uVar12 = (long)puVar4 - (long)puVar6 >> 5;
  if (0x7ffffffffffffff - uVar12 < uVar2) {
                    /* WARNING: Subroutine does not return */
    FUN_00377370("vector::_M_range_insert");
  }
  if (uVar2 < uVar12) {
    uVar2 = uVar12;
  }
  uVar13 = uVar12 + uVar2;
  if ((CARRY8(uVar12,uVar2)) || (0x7ffffffffffffff < uVar13)) {
    lVar7 = -0x20;
  }
  else {
    puVar4 = (undefined8 *)0x0;
    uVar3 = uVar13;
    if (uVar13 == 0) goto LAB_002d6f6d;
    lVar7 = uVar13 * 0x20;
  }
  puVar4 = (undefined8 *)FUN_00337270(lVar7);
  puVar6 = (undefined8 *)*param_1;
LAB_002d6f6d:
  puVar5 = puVar4;
  if (param_2 != puVar6) {
    lVar7 = ((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5) + 1;
    puVar6 = puVar6 + 2;
    do {
      *puVar5 = puVar5 + 2;
      if ((undefined8 *)puVar6[-2] == puVar6) {
        uVar1 = puVar6[1];
        puVar5[2] = *puVar6;
        puVar5[3] = uVar1;
      }
      else {
        *puVar5 = (undefined8 *)puVar6[-2];
        puVar5[2] = *puVar6;
      }
      puVar9 = puVar5 + 4;
      puVar5[1] = puVar6[-1];
      puVar6[-2] = puVar6;
      puVar6[-1] = 0;
      *(undefined1 *)puVar6 = 0;
      puVar6 = puVar6 + 4;
      puVar5 = puVar9;
    } while (puVar9 != puVar4 + lVar7 * 4);
    puVar5 = puVar4 + lVar7 * 4;
  }
  do {
    lVar7 = *param_3;
    lVar10 = param_3[1];
    *puVar5 = puVar5 + 2;
                    /* try { // try from 002d729d to 002d72a1 has its CatchHandler @ 002d73c5 */
    FUN_001caae0(puVar5,lVar7,lVar10 + lVar7);
    param_3 = param_3 + 4;
    puVar5 = puVar5 + 4;
  } while (param_4 != param_3);
  puVar6 = (undefined8 *)param_1[1];
  if (param_2 != puVar6) {
    lVar7 = ((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5) + 1;
    puVar6 = param_2 + 2;
    puVar9 = puVar5;
    do {
      *puVar9 = puVar9 + 2;
      if ((undefined8 *)puVar6[-2] == puVar6) {
        uVar1 = puVar6[1];
        puVar9[2] = *puVar6;
        puVar9[3] = uVar1;
      }
      else {
        *puVar9 = (undefined8 *)puVar6[-2];
        puVar9[2] = *puVar6;
      }
      uVar1 = puVar6[-1];
      puVar8 = puVar9 + 4;
      puVar6[-2] = puVar6;
      puVar6[-1] = 0;
      puVar9[1] = uVar1;
      *(undefined1 *)puVar6 = 0;
      puVar6 = puVar6 + 4;
      puVar9 = puVar8;
    } while (puVar8 != puVar5 + lVar7 * 4);
    puVar6 = (undefined8 *)param_1[1];
    puVar5 = puVar5 + lVar7 * 4;
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 != puVar6) {
    do {
      if ((undefined8 *)*puVar9 != puVar9 + 2) {
        FUN_00338a40();
      }
      puVar9 = puVar9 + 4;
    } while (puVar9 != puVar6);
    puVar6 = (undefined8 *)*param_1;
  }
  if (puVar6 != (undefined8 *)0x0) {
    FUN_00338a40(puVar6);
  }
  *param_1 = puVar4;
  param_1[1] = puVar5;
  param_1[2] = puVar4 + uVar3 * 4;
  return;
}


CMP RDX,RCX
JZ 0x002d6ff0
PUSH R15
MOV R15,RDI
PUSH R14
MOV R14,RCX
SUB RCX,RDX
PUSH R13
MOV RAX,RCX
PUSH R12
SAR RAX,0x5
PUSH RBP
MOV R13,RAX
MOV RBP,RSI
PUSH RBX
MOV RBX,RDX
SUB RSP,0x38
MOV RDI,qword ptr [RDI + 0x8]
MOV qword ptr [RSP + 0x18],RAX
MOV RAX,qword ptr [R15 + 0x10]
MOV qword ptr [RSP + 0x8],RSI
SUB RAX,RDI
MOV qword ptr [RSP + 0x10],RDI
SAR RAX,0x5
CMP RAX,R13
JC 0x002d6f00
MOV RAX,RDI
SUB RDI,RSI
MOV qword ptr [RSP + 0x20],RDI
SAR RDI,0x5
MOV qword ptr [RSP + 0x28],RDI
MOV qword ptr [RSP],RDI
CMP R13,RDI
JNC 0x002d6ff8
MOV RSI,RAX
MOV R12,RAX
SUB R12,RCX
LEA RDX,[RSI + -0x20]
SUB RDX,R12
LEA RAX,[R12 + 0x10]
AND RDX,-0x20
LEA RDI,[RSI + RDX*0x1 + 0x20]
MOV RDX,RSI
JMP 0x002d6ee3
MOV qword ptr [RDX],RSI
MOV RSI,qword ptr [RAX]
MOV qword ptr [RDX + 0x10],RSI
MOV RSI,qword ptr [RAX + -0x8]
ADD RDX,0x20
MOV qword ptr [RDX + -0x18],RSI
MOV qword ptr [RAX + -0x10],RAX
ADD RAX,0x20
MOV qword ptr [RAX + -0x28],0x0
MOV byte ptr [RAX + -0x20],0x0
CMP RDX,RDI
JZ 0x002d7118
LEA RSI,[RDX + 0x10]
MOV qword ptr [RDX],RSI
MOV RSI,qword ptr [RAX + -0x10]
CMP RSI,RAX
JNZ 0x002d6eb0
MOVDQU XMM0,xmmword ptr [RAX]
MOVUPS xmmword ptr [RDX + 0x10],XMM0
JMP 0x002d6eba
MOV RCX,qword ptr [R15]
MOV R13,qword ptr [RSP + 0x10]
MOV RAX,0x7ffffffffffffff
MOV RSI,RAX
SUB R13,RCX
SAR R13,0x5
SUB RSI,R13
CMP qword ptr [RSP + 0x18],RSI
JA 0x002d73b9
MOV RBX,qword ptr [RSP + 0x18]
CMP RBX,R13
MOV R12,RBX
CMOVC R12,R13
ADD R13,R12
JC 0x002d7258
CMP R13,RAX
JA 0x002d7258
XOR R12D,R12D
TEST R13,R13
JZ 0x002d6f6d
MOV RDI,R13
SHL RDI,0x5
MOV qword ptr [RSP],RDX
CALL 0x00337270
MOV RCX,qword ptr [R15]
MOV RDX,qword ptr [RSP]
MOV R12,RAX
MOV RBX,qword ptr [RSP + 0x8]
CMP RBX,RCX
JZ 0x002d73b0
LEA R8,[RBX + -0x20]
LEA RAX,[RCX + 0x10]
SUB R8,RCX
MOV RCX,R12
SHR R8,0x5
ADD R8,0x1
MOV RDI,R8
SHL RDI,0x5
ADD RDI,R12
JMP 0x002d6fd3
MOV qword ptr [RCX],RSI
MOV RSI,qword ptr [RAX]
MOV qword ptr [RCX + 0x10],RSI
MOV RSI,qword ptr [RAX + -0x8]
ADD RCX,0x20
MOV qword ptr [RCX + -0x18],RSI
MOV qword ptr [RAX + -0x10],RAX
ADD RAX,0x20
MOV qword ptr [RAX + -0x28],0x0
MOV byte ptr [RAX + -0x20],0x0
CMP RCX,RDI
JZ 0x002d7270
LEA RSI,[RCX + 0x10]
MOV qword ptr [RCX],RSI
MOV RSI,qword ptr [RAX + -0x10]
CMP RSI,RAX
JNZ 0x002d6fa0
MOVDQU XMM2,xmmword ptr [RAX]
MOVUPS xmmword ptr [RCX + 0x10],XMM2
JMP 0x002d6faa
RET
MOV RAX,qword ptr [RSP + 0x20]
LEA R12,[RDX + RAX*0x1]
CMP R14,R12
JZ 0x002d73a0
MOV R13,qword ptr [RSP + 0x10]
NOP
LEA RAX,[R13 + 0x10]
MOV RDI,R13
MOV qword ptr [R13],RAX
MOV RSI,qword ptr [R12]
MOV RDX,qword ptr [R12 + 0x8]
ADD RDX,RSI
CALL 0x001caae0
ADD R12,0x20
ADD R13,0x20
CMP R14,R12
JNZ 0x002d7010
MOV RAX,qword ptr [R15 + 0x8]
MOV RDX,qword ptr [RSP + 0x18]
SUB RDX,qword ptr [RSP + 0x28]
SHL RDX,0x5
MOV RDI,qword ptr [RSP + 0x8]
ADD RDX,RAX
MOV qword ptr [R15 + 0x8],RDX
CMP qword ptr [RSP + 0x10],RDI
JZ 0x002d70d4
MOV RDI,qword ptr [RSP + 0x8]
MOV RCX,qword ptr [RSP + 0x10]
SUB RCX,RDI
LEA RAX,[RDI + 0x10]
SUB RCX,0x20
AND RCX,-0x20
LEA RSI,[RDX + RCX*0x1 + 0x20]
JMP 0x002d70af
MOV qword ptr [RDX],RCX
MOV RCX,qword ptr [RAX]
MOV qword ptr [RDX + 0x10],RCX
MOV RCX,qword ptr [RAX + -0x8]
ADD RDX,0x20
MOV qword ptr [RDX + -0x18],RCX
MOV qword ptr [RAX + -0x10],RAX
ADD RAX,0x20
MOV qword ptr [RAX + -0x28],0x0
MOV byte ptr [RAX + -0x20],0x0
CMP RDX,RSI
JZ 0x002d70d0
LEA RCX,[RDX + 0x10]
MOV qword ptr [RDX],RCX
MOV RCX,qword ptr [RAX + -0x10]
CMP RCX,RAX
JNZ 0x002d7080
MOVDQU XMM1,xmmword ptr [RAX]
MOVUPS xmmword ptr [RDX + 0x10],XMM1
JMP 0x002d708a
MOV RDX,qword ptr [R15 + 0x8]
MOV RAX,qword ptr [RSP + 0x20]
ADD RDX,RAX
MOV qword ptr [R15 + 0x8],RDX
TEST RAX,RAX
JLE 0x002d7102
NOP dword ptr [RAX]
MOV RSI,RBX
MOV RDI,RBP
ADD RBX,0x20
ADD RBP,0x20
CALL 0x0033f660
SUB qword ptr [RSP],0x1
JNZ 0x002d70e8
ADD RSP,0x38
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RAX,R12
MOV R14,qword ptr [RSP + 0x10]
ADD qword ptr [R15 + 0x8],RCX
SUB R12,0x10
SUB RAX,qword ptr [RSP + 0x8]
MOV R15,RAX
SUB R14,0x10
SAR R15,0x5
TEST RAX,RAX
JG 0x002d7199
JMP 0x002d7200
CMP R14,RDI
JZ 0x002d71e0
MOV qword ptr [R14 + -0x10],RAX
MOV RAX,qword ptr [R12 + -0x8]
MOV RDX,qword ptr [R14]
MOV qword ptr [R14 + -0x8],RAX
MOV RAX,qword ptr [R12]
MOV qword ptr [R14],RAX
TEST RDI,RDI
JZ 0x002d71f4
MOV qword ptr [R12 + -0x10],RDI
MOV qword ptr [R12],RDX
MOV RAX,qword ptr [R12 + -0x10]
SUB R14,0x20
SUB R12,0x20
MOV qword ptr [R12 + 0x18],0x0
MOV byte ptr [RAX],0x0
SUB R15,0x1
JZ 0x002d7200
MOV RAX,qword ptr [R12 + -0x10]
MOV RDI,qword ptr [R14 + -0x10]
CMP RAX,R12
JNZ 0x002d7148
MOV RDX,qword ptr [R12 + -0x8]
TEST RDX,RDX
JZ 0x002d71d4
CMP RDX,0x1
JZ 0x002d7240
MOV RSI,R12
MOV qword ptr [RSP],RCX
CALL 0x00150a90
MOV RDI,qword ptr [R14 + -0x10]
MOV RDX,qword ptr [R12 + -0x8]
MOV RCX,qword ptr [RSP]
MOV qword ptr [R14 + -0x8],RDX
MOV byte ptr [RDI + RDX*0x1],0x0
JMP 0x002d717a
MOV qword ptr [R14 + -0x10],RAX
MOV RAX,qword ptr [R12 + -0x8]
MOV qword ptr [R14 + -0x8],RAX
MOV RAX,qword ptr [R12]
MOV qword ptr [R14],RAX
MOV qword ptr [R12 + -0x10],R12
JMP 0x002d717a
TEST RCX,RCX
JLE 0x002d7102
NOP dword ptr [RAX]
MOV RSI,RBX
MOV RDI,RBP
ADD RBX,0x20
ADD RBP,0x20
CALL 0x0033f660
SUB R13,0x1
JNZ 0x002d7210
ADD RSP,0x38
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOVZX EAX,byte ptr [R12]
MOV byte ptr [RDI],AL
MOV RDI,qword ptr [R14 + -0x10]
MOV RDX,qword ptr [R12 + -0x8]
JMP 0x002d71d4
MOV RDI,-0x20
MOV R13,RAX
JMP 0x002d6f5a
SHL R8,0x5
LEA RAX,[R12 + R8*0x1]
MOV qword ptr [RSP],RAX
MOV RBP,qword ptr [RSP]
MOV RBX,RDX
NOP dword ptr [RAX + RAX*0x1]
LEA RAX,[RBP + 0x10]
MOV RSI,qword ptr [RBX]
MOV RDX,qword ptr [RBX + 0x8]
MOV RDI,RBP
MOV qword ptr [RBP],RAX
ADD RDX,RSI
CALL 0x001caae0
ADD RBX,0x20
ADD RBP,0x20
CMP R14,RBX
JNZ 0x002d7288
MOV R14,qword ptr [R15 + 0x8]
CMP qword ptr [RSP + 0x8],R14
JZ 0x002d7343
MOV RBX,qword ptr [RSP + 0x8]
MOV RDX,RBP
SUB R14,RBX
LEA RAX,[RBX + 0x10]
LEA RDI,[R14 + -0x20]
SHR RDI,0x5
ADD RDI,0x1
MOV RSI,RDI
SHL RSI,0x5
ADD RSI,RBP
JMP 0x002d7317
MOV qword ptr [RDX],RCX
MOV RCX,qword ptr [RAX]
MOV qword ptr [RDX + 0x10],RCX
MOV RCX,qword ptr [RAX + -0x8]
ADD RDX,0x20
MOV qword ptr [RAX + -0x10],RAX
ADD RAX,0x20
MOV qword ptr [RAX + -0x28],0x0
MOV qword ptr [RDX + -0x18],RCX
MOV byte ptr [RAX + -0x20],0x0
CMP RDX,RSI
JZ 0x002d7338
LEA RCX,[RDX + 0x10]
MOV qword ptr [RDX],RCX
MOV RCX,qword ptr [RAX + -0x10]
CMP RCX,RAX
JNZ 0x002d72e8
MOVDQU XMM3,xmmword ptr [RAX]
MOVUPS xmmword ptr [RDX + 0x10],XMM3
JMP 0x002d72f2
SHL RDI,0x5
MOV R14,qword ptr [R15 + 0x8]
ADD RBP,RDI
MOV RBX,qword ptr [R15]
CMP RBX,R14
JZ 0x002d736d
NOP dword ptr [RAX + RAX*0x1]
MOV RDI,qword ptr [RBX]
LEA RAX,[RBX + 0x10]
CMP RDI,RAX
JZ 0x002d7361
CALL 0x00338a40
ADD RBX,0x20
CMP RBX,R14
JNZ 0x002d7350
MOV R14,qword ptr [R15]
TEST R14,R14
JZ 0x002d737a
MOV RDI,R14
CALL 0x00338a40
SHL R13,0x5
MOV qword ptr [R15],R12
ADD R12,R13
MOV qword ptr [R15 + 0x8],RBP
MOV qword ptr [R15 + 0x10],R12
ADD RSP,0x38
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RAX,qword ptr [RSP + 0x10]
JMP 0x002d703d
MOV qword ptr [RSP],R12
JMP 0x002d727c
LEA RDI,[0x3e0272]
CALL 0x00377370
(translation_unit "void FUN_002d6e10(undefined8 *param_1,undefined8 *param_2,long *param_3,long *param_4)\n\n{\n  undefined8 uVar1;\n  ulong uVar2;\n  ulong uVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  undefined8 *puVar6;\n  long lVar7;\n  undefined8 *puVar8;\n  size_t __n;\n  undefined8 *puVar9;\n  long lVar10;\n  long *plVar11;\n  ulong uVar12;\n  ulong uVar13;\n  long lVar14;\n  ulong local_68;\n  \n  if (param_3 == param_4) {\n    return;\n  }\n  lVar7 = (long)param_4 - (long)param_3;\n  uVar2 = lVar7 >> 5;\n  puVar4 = (undefined8 *)param_1[1];\n  if (uVar2 <= (ulong)(param_1[2] - (long)puVar4 >> 5)) {\n    lVar10 = (long)puVar4 - (long)param_2;\n    local_68 = lVar10 >> 5;\n    if (uVar2 < local_68) {\n      lVar10 = (long)puVar4 - lVar7;\n      puVar6 = (undefined8 *)(lVar10 + 0x10);\n      puVar5 = puVar4;\n      do {\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      } while (puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20));\n      param_1[1] = param_1[1] + lVar7;\n      puVar4 = puVar4 + -2;\n      lVar14 = lVar10 - (long)param_2 >> 5;\n      puVar6 = (undefined8 *)(lVar10 + -0x10);\n      if (0 < lVar10 - (long)param_2) {\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }\n      if (0 < lVar7) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }\n    }\n    else {\n      plVar11 = (long *)((long)param_3 + lVar10);\n      puVar6 = puVar4;\n      if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */\n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      puVar6 = puVar6 + (uVar2 - local_68) * 4;\n      param_1[1] = puVar6;\n      if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      param_1[1] = (long)puVar6 + lVar10;\n      if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }\n    }\n    return;\n  }\n  puVar6 = (undefined8 *)*param_1;\n  uVar3 = 0x7ffffffffffffff;\n  uVar12 = (long)puVar4 - (long)puVar6 >> 5;\n  if (0x7ffffffffffffff - uVar12 < uVar2) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00377370("vector::_M_range_insert");\n  }\n  if (uVar2 < uVar12) {\n    uVar2 = uVar12;\n  }\n  uVar13 = uVar12 + uVar2;\n  if ((CARRY8(uVar12,uVar2)) || (0x7ffffffffffffff < uVar13)) {\n    lVar7 = -0x20;\n  }\n  else {\n    puVar4 = (undefined8 *)0x0;\n    uVar3 = uVar13;\n    if (uVar13 == 0) goto LAB_002d6f6d;\n    lVar7 = uVar13 * 0x20;\n  }\n  puVar4 = (undefined8 *)FUN_00337270(lVar7);\n  puVar6 = (undefined8 *)*param_1;\nLAB_002d6f6d:\n  puVar5 = puVar4;\n  if (param_2 != puVar6) {\n    lVar7 = ((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5) + 1;\n    puVar6 = puVar6 + 2;\n    do {\n      *puVar5 = puVar5 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }\n      else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }\n      puVar9 = puVar5 + 4;\n      puVar5[1] = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar5 = puVar9;\n    } while (puVar9 != puVar4 + lVar7 * 4);\n    puVar5 = puVar4 + lVar7 * 4;\n  }\n  do {\n    lVar7 = *param_3;\n    lVar10 = param_3[1];\n    *puVar5 = puVar5 + 2;\n                    /* try { // try from 002d729d to 002d72a1 has its CatchHandler @ 002d73c5 */\n    FUN_001caae0(puVar5,lVar7,lVar10 + lVar7);\n    param_3 = param_3 + 4;\n    puVar5 = puVar5 + 4;\n  } while (param_4 != param_3);\n  puVar6 = (undefined8 *)param_1[1];\n  if (param_2 != puVar6) {\n    lVar7 = ((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5) + 1;\n    puVar6 = param_2 + 2;\n    puVar9 = puVar5;\n    do {\n      *puVar9 = puVar9 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }\n      else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }\n      uVar1 = puVar6[-1];\n      puVar8 = puVar9 + 4;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      puVar9[1] = uVar1;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar9 = puVar8;\n    } while (puVar8 != puVar5 + lVar7 * 4);\n    puVar6 = (undefined8 *)param_1[1];\n    puVar5 = puVar5 + lVar7 * 4;\n  }\n  puVar9 = (undefined8 *)*param_1;\n  if (puVar9 != puVar6) {\n    do {\n      if ((undefined8 *)*puVar9 != puVar9 + 2) {\n        FUN_00338a40();\n      }\n      puVar9 = puVar9 + 4;\n    } while (puVar9 != puVar6);\n    puVar6 = (undefined8 *)*param_1;\n  }\n  if (puVar6 != (undefined8 *)0x0) {\n    FUN_00338a40(puVar6);\n  }\n  *param_1 = puVar4;\n  param_1[1] = puVar5;\n  param_1[2] = puVar4 + uVar3 * 4;\n  return;\n}\n\n" (function_definition "void FUN_002d6e10(undefined8 *param_1,undefined8 *param_2,long *param_3,long *param_4)\n\n{\n  undefined8 uVar1;\n  ulong uVar2;\n  ulong uVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  undefined8 *puVar6;\n  long lVar7;\n  undefined8 *puVar8;\n  size_t __n;\n  undefined8 *puVar9;\n  long lVar10;\n  long *plVar11;\n  ulong uVar12;\n  ulong uVar13;\n  long lVar14;\n  ulong local_68;\n  \n  if (param_3 == param_4) {\n    return;\n  }\n  lVar7 = (long)param_4 - (long)param_3;\n  uVar2 = lVar7 >> 5;\n  puVar4 = (undefined8 *)param_1[1];\n  if (uVar2 <= (ulong)(param_1[2] - (long)puVar4 >> 5)) {\n    lVar10 = (long)puVar4 - (long)param_2;\n    local_68 = lVar10 >> 5;\n    if (uVar2 < local_68) {\n      lVar10 = (long)puVar4 - lVar7;\n      puVar6 = (undefined8 *)(lVar10 + 0x10);\n      puVar5 = puVar4;\n      do {\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      } while (puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20));\n      param_1[1] = param_1[1] + lVar7;\n      puVar4 = puVar4 + -2;\n      lVar14 = lVar10 - (long)param_2 >> 5;\n      puVar6 = (undefined8 *)(lVar10 + -0x10);\n      if (0 < lVar10 - (long)param_2) {\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }\n      if (0 < lVar7) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }\n    }\n    else {\n      plVar11 = (long *)((long)param_3 + lVar10);\n      puVar6 = puVar4;\n      if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */\n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      puVar6 = puVar6 + (uVar2 - local_68) * 4;\n      param_1[1] = puVar6;\n      if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      param_1[1] = (long)puVar6 + lVar10;\n      if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }\n    }\n    return;\n  }\n  puVar6 = (undefined8 *)*param_1;\n  uVar3 = 0x7ffffffffffffff;\n  uVar12 = (long)puVar4 - (long)puVar6 >> 5;\n  if (0x7ffffffffffffff - uVar12 < uVar2) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00377370("vector::_M_range_insert");\n  }\n  if (uVar2 < uVar12) {\n    uVar2 = uVar12;\n  }\n  uVar13 = uVar12 + uVar2;\n  if ((CARRY8(uVar12,uVar2)) || (0x7ffffffffffffff < uVar13)) {\n    lVar7 = -0x20;\n  }\n  else {\n    puVar4 = (undefined8 *)0x0;\n    uVar3 = uVar13;\n    if (uVar13 == 0) goto LAB_002d6f6d;\n    lVar7 = uVar13 * 0x20;\n  }\n  puVar4 = (undefined8 *)FUN_00337270(lVar7);\n  puVar6 = (undefined8 *)*param_1;\nLAB_002d6f6d:\n  puVar5 = puVar4;\n  if (param_2 != puVar6) {\n    lVar7 = ((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5) + 1;\n    puVar6 = puVar6 + 2;\n    do {\n      *puVar5 = puVar5 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }\n      else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }\n      puVar9 = puVar5 + 4;\n      puVar5[1] = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar5 = puVar9;\n    } while (puVar9 != puVar4 + lVar7 * 4);\n    puVar5 = puVar4 + lVar7 * 4;\n  }\n  do {\n    lVar7 = *param_3;\n    lVar10 = param_3[1];\n    *puVar5 = puVar5 + 2;\n                    /* try { // try from 002d729d to 002d72a1 has its CatchHandler @ 002d73c5 */\n    FUN_001caae0(puVar5,lVar7,lVar10 + lVar7);\n    param_3 = param_3 + 4;\n    puVar5 = puVar5 + 4;\n  } while (param_4 != param_3);\n  puVar6 = (undefined8 *)param_1[1];\n  if (param_2 != puVar6) {\n    lVar7 = ((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5) + 1;\n    puVar6 = param_2 + 2;\n    puVar9 = puVar5;\n    do {\n      *puVar9 = puVar9 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }\n      else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }\n      uVar1 = puVar6[-1];\n      puVar8 = puVar9 + 4;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      puVar9[1] = uVar1;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar9 = puVar8;\n    } while (puVar8 != puVar5 + lVar7 * 4);\n    puVar6 = (undefined8 *)param_1[1];\n    puVar5 = puVar5 + lVar7 * 4;\n  }\n  puVar9 = (undefined8 *)*param_1;\n  if (puVar9 != puVar6) {\n    do {\n      if ((undefined8 *)*puVar9 != puVar9 + 2) {\n        FUN_00338a40();\n      }\n      puVar9 = puVar9 + 4;\n    } while (puVar9 != puVar6);\n    puVar6 = (undefined8 *)*param_1;\n  }\n  if (puVar6 != (undefined8 *)0x0) {\n    FUN_00338a40(puVar6);\n  }\n  *param_1 = puVar4;\n  param_1[1] = puVar5;\n  param_1[2] = puVar4 + uVar3 * 4;\n  return;\n}" primitive_type (function_declarator "FUN_002d6e10(undefined8 *param_1,undefined8 *param_2,long *param_3,long *param_4)" identifier (parameter_list "(undefined8 *param_1,undefined8 *param_2,long *param_3,long *param_4)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long *param_3" (sized_type_specifier "long" long) (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "long *param_4" (sized_type_specifier "long" long) (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  undefined8 uVar1;\n  ulong uVar2;\n  ulong uVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  undefined8 *puVar6;\n  long lVar7;\n  undefined8 *puVar8;\n  size_t __n;\n  undefined8 *puVar9;\n  long lVar10;\n  long *plVar11;\n  ulong uVar12;\n  ulong uVar13;\n  long lVar14;\n  ulong local_68;\n  \n  if (param_3 == param_4) {\n    return;\n  }\n  lVar7 = (long)param_4 - (long)param_3;\n  uVar2 = lVar7 >> 5;\n  puVar4 = (undefined8 *)param_1[1];\n  if (uVar2 <= (ulong)(param_1[2] - (long)puVar4 >> 5)) {\n    lVar10 = (long)puVar4 - (long)param_2;\n    local_68 = lVar10 >> 5;\n    if (uVar2 < local_68) {\n      lVar10 = (long)puVar4 - lVar7;\n      puVar6 = (undefined8 *)(lVar10 + 0x10);\n      puVar5 = puVar4;\n      do {\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      } while (puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20));\n      param_1[1] = param_1[1] + lVar7;\n      puVar4 = puVar4 + -2;\n      lVar14 = lVar10 - (long)param_2 >> 5;\n      puVar6 = (undefined8 *)(lVar10 + -0x10);\n      if (0 < lVar10 - (long)param_2) {\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }\n      if (0 < lVar7) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }\n    }\n    else {\n      plVar11 = (long *)((long)param_3 + lVar10);\n      puVar6 = puVar4;\n      if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */\n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      puVar6 = puVar6 + (uVar2 - local_68) * 4;\n      param_1[1] = puVar6;\n      if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      param_1[1] = (long)puVar6 + lVar10;\n      if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }\n    }\n    return;\n  }\n  puVar6 = (undefined8 *)*param_1;\n  uVar3 = 0x7ffffffffffffff;\n  uVar12 = (long)puVar4 - (long)puVar6 >> 5;\n  if (0x7ffffffffffffff - uVar12 < uVar2) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00377370("vector::_M_range_insert");\n  }\n  if (uVar2 < uVar12) {\n    uVar2 = uVar12;\n  }\n  uVar13 = uVar12 + uVar2;\n  if ((CARRY8(uVar12,uVar2)) || (0x7ffffffffffffff < uVar13)) {\n    lVar7 = -0x20;\n  }\n  else {\n    puVar4 = (undefined8 *)0x0;\n    uVar3 = uVar13;\n    if (uVar13 == 0) goto LAB_002d6f6d;\n    lVar7 = uVar13 * 0x20;\n  }\n  puVar4 = (undefined8 *)FUN_00337270(lVar7);\n  puVar6 = (undefined8 *)*param_1;\nLAB_002d6f6d:\n  puVar5 = puVar4;\n  if (param_2 != puVar6) {\n    lVar7 = ((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5) + 1;\n    puVar6 = puVar6 + 2;\n    do {\n      *puVar5 = puVar5 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }\n      else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }\n      puVar9 = puVar5 + 4;\n      puVar5[1] = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar5 = puVar9;\n    } while (puVar9 != puVar4 + lVar7 * 4);\n    puVar5 = puVar4 + lVar7 * 4;\n  }\n  do {\n    lVar7 = *param_3;\n    lVar10 = param_3[1];\n    *puVar5 = puVar5 + 2;\n                    /* try { // try from 002d729d to 002d72a1 has its CatchHandler @ 002d73c5 */\n    FUN_001caae0(puVar5,lVar7,lVar10 + lVar7);\n    param_3 = param_3 + 4;\n    puVar5 = puVar5 + 4;\n  } while (param_4 != param_3);\n  puVar6 = (undefined8 *)param_1[1];\n  if (param_2 != puVar6) {\n    lVar7 = ((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5) + 1;\n    puVar6 = param_2 + 2;\n    puVar9 = puVar5;\n    do {\n      *puVar9 = puVar9 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }\n      else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }\n      uVar1 = puVar6[-1];\n      puVar8 = puVar9 + 4;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      puVar9[1] = uVar1;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar9 = puVar8;\n    } while (puVar8 != puVar5 + lVar7 * 4);\n    puVar6 = (undefined8 *)param_1[1];\n    puVar5 = puVar5 + lVar7 * 4;\n  }\n  puVar9 = (undefined8 *)*param_1;\n  if (puVar9 != puVar6) {\n    do {\n      if ((undefined8 *)*puVar9 != puVar9 + 2) {\n        FUN_00338a40();\n      }\n      puVar9 = puVar9 + 4;\n    } while (puVar9 != puVar6);\n    puVar6 = (undefined8 *)*param_1;\n  }\n  if (puVar6 != (undefined8 *)0x0) {\n    FUN_00338a40(puVar6);\n  }\n  *param_1 = puVar4;\n  param_1[1] = puVar5;\n  param_1[2] = puVar4 + uVar3 * 4;\n  return;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined8 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "undefined8 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar11;" (sized_type_specifier "long" long) (pointer_declarator "*plVar11" * identifier) ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "ulong uVar13;" type_identifier identifier ;) (declaration "long lVar14;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong local_68;" type_identifier identifier ;) (if_statement "if (param_3 == param_4) {\n    return;\n  }" if (parenthesized_expression "(param_3 == param_4)" ( (binary_expression "param_3 == param_4" identifier == identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "lVar7 = (long)param_4 - (long)param_3;" (assignment_expression "lVar7 = (long)param_4 - (long)param_3" identifier = (binary_expression "(long)param_4 - (long)param_3" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "uVar2 = lVar7 >> 5;" (assignment_expression "uVar2 = lVar7 >> 5" identifier = (binary_expression "lVar7 >> 5" identifier >> number_literal)) ;) (expression_statement "puVar4 = (undefined8 *)param_1[1];" (assignment_expression "puVar4 = (undefined8 *)param_1[1]" identifier = (cast_expression "(undefined8 *)param_1[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (if_statement "if (uVar2 <= (ulong)(param_1[2] - (long)puVar4 >> 5)) {\n    lVar10 = (long)puVar4 - (long)param_2;\n    local_68 = lVar10 >> 5;\n    if (uVar2 < local_68) {\n      lVar10 = (long)puVar4 - lVar7;\n      puVar6 = (undefined8 *)(lVar10 + 0x10);\n      puVar5 = puVar4;\n      do {\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      } while (puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20));\n      param_1[1] = param_1[1] + lVar7;\n      puVar4 = puVar4 + -2;\n      lVar14 = lVar10 - (long)param_2 >> 5;\n      puVar6 = (undefined8 *)(lVar10 + -0x10);\n      if (0 < lVar10 - (long)param_2) {\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }\n      if (0 < lVar7) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }\n    }\n    else {\n      plVar11 = (long *)((long)param_3 + lVar10);\n      puVar6 = puVar4;\n      if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */\n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      puVar6 = puVar6 + (uVar2 - local_68) * 4;\n      param_1[1] = puVar6;\n      if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      param_1[1] = (long)puVar6 + lVar10;\n      if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }\n    }\n    return;\n  }" if (parenthesized_expression "(uVar2 <= (ulong)(param_1[2] - (long)puVar4 >> 5))" ( (binary_expression "uVar2 <= (ulong)(param_1[2] - (long)puVar4 >> 5)" identifier <= (call_expression "(ulong)(param_1[2] - (long)puVar4 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_1[2] - (long)puVar4 >> 5)" ( (binary_expression "param_1[2] - (long)puVar4 >> 5" (binary_expression "param_1[2] - (long)puVar4" (subscript_expression "param_1[2]" identifier [ number_literal ]) - (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) )))) )) (compound_statement "{\n    lVar10 = (long)puVar4 - (long)param_2;\n    local_68 = lVar10 >> 5;\n    if (uVar2 < local_68) {\n      lVar10 = (long)puVar4 - lVar7;\n      puVar6 = (undefined8 *)(lVar10 + 0x10);\n      puVar5 = puVar4;\n      do {\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      } while (puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20));\n      param_1[1] = param_1[1] + lVar7;\n      puVar4 = puVar4 + -2;\n      lVar14 = lVar10 - (long)param_2 >> 5;\n      puVar6 = (undefined8 *)(lVar10 + -0x10);\n      if (0 < lVar10 - (long)param_2) {\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }\n      if (0 < lVar7) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }\n    }\n    else {\n      plVar11 = (long *)((long)param_3 + lVar10);\n      puVar6 = puVar4;\n      if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */\n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      puVar6 = puVar6 + (uVar2 - local_68) * 4;\n      param_1[1] = puVar6;\n      if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      param_1[1] = (long)puVar6 + lVar10;\n      if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }\n    }\n    return;\n  }" { (expression_statement "lVar10 = (long)puVar4 - (long)param_2;" (assignment_expression "lVar10 = (long)puVar4 - (long)param_2" identifier = (binary_expression "(long)puVar4 - (long)param_2" (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "local_68 = lVar10 >> 5;" (assignment_expression "local_68 = lVar10 >> 5" identifier = (binary_expression "lVar10 >> 5" identifier >> number_literal)) ;) (if_statement "if (uVar2 < local_68) {\n      lVar10 = (long)puVar4 - lVar7;\n      puVar6 = (undefined8 *)(lVar10 + 0x10);\n      puVar5 = puVar4;\n      do {\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      } while (puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20));\n      param_1[1] = param_1[1] + lVar7;\n      puVar4 = puVar4 + -2;\n      lVar14 = lVar10 - (long)param_2 >> 5;\n      puVar6 = (undefined8 *)(lVar10 + -0x10);\n      if (0 < lVar10 - (long)param_2) {\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }\n      if (0 < lVar7) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }\n    }\n    else {\n      plVar11 = (long *)((long)param_3 + lVar10);\n      puVar6 = puVar4;\n      if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */\n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      puVar6 = puVar6 + (uVar2 - local_68) * 4;\n      param_1[1] = puVar6;\n      if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      param_1[1] = (long)puVar6 + lVar10;\n      if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }\n    }" if (parenthesized_expression "(uVar2 < local_68)" ( (binary_expression "uVar2 < local_68" identifier < identifier) )) (compound_statement "{\n      lVar10 = (long)puVar4 - lVar7;\n      puVar6 = (undefined8 *)(lVar10 + 0x10);\n      puVar5 = puVar4;\n      do {\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      } while (puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20));\n      param_1[1] = param_1[1] + lVar7;\n      puVar4 = puVar4 + -2;\n      lVar14 = lVar10 - (long)param_2 >> 5;\n      puVar6 = (undefined8 *)(lVar10 + -0x10);\n      if (0 < lVar10 - (long)param_2) {\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }\n      if (0 < lVar7) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }\n    }" { (expression_statement "lVar10 = (long)puVar4 - lVar7;" (assignment_expression "lVar10 = (long)puVar4 - lVar7" identifier = (binary_expression "(long)puVar4 - lVar7" (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - identifier)) ;) (expression_statement "puVar6 = (undefined8 *)(lVar10 + 0x10);" (assignment_expression "puVar6 = (undefined8 *)(lVar10 + 0x10)" identifier = (cast_expression "(undefined8 *)(lVar10 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x10)" ( (binary_expression "lVar10 + 0x10" identifier + number_literal) )))) ;) (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" identifier = identifier) ;) (do_statement "do {\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      } while (puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20));" do (compound_statement "{\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      }" { (expression_statement "*puVar5 = puVar5 + 2;" (assignment_expression "*puVar5 = puVar5 + 2" (pointer_expression "*puVar5" * identifier) = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (if_statement "if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }" if (parenthesized_expression "((undefined8 *)puVar6[-2] == puVar6)" ( (binary_expression "(undefined8 *)puVar6[-2] == puVar6" (cast_expression "(undefined8 *)puVar6[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }" { (expression_statement "uVar1 = puVar6[1];" (assignment_expression "uVar1 = puVar6[1]" identifier = (subscript_expression "puVar6[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5[2] = *puVar6;" (assignment_expression "puVar5[2] = *puVar6" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar5[3] = uVar1;" (assignment_expression "puVar5[3] = uVar1" (subscript_expression "puVar5[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }" else (compound_statement "{\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }" { (expression_statement "*puVar5 = (undefined8 *)puVar6[-2];" (assignment_expression "*puVar5 = (undefined8 *)puVar6[-2]" (pointer_expression "*puVar5" * identifier) = (cast_expression "(undefined8 *)puVar6[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar5[2] = *puVar6;" (assignment_expression "puVar5[2] = *puVar6" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = (pointer_expression "*puVar6" * identifier)) ;) }))) (expression_statement "puVar9 = puVar5 + 4;" (assignment_expression "puVar9 = puVar5 + 4" identifier = (binary_expression "puVar5 + 4" identifier + number_literal)) ;) (expression_statement "puVar5[1] = puVar6[-1];" (assignment_expression "puVar5[1] = puVar6[-1]" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = (subscript_expression "puVar6[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar6[-2] = puVar6;" (assignment_expression "puVar6[-2] = puVar6" (subscript_expression "puVar6[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[-1] = 0;" (assignment_expression "puVar6[-1] = 0" (subscript_expression "puVar6[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar6 = 0;" (assignment_expression "*(undefined1 *)puVar6 = 0" (pointer_expression "*(undefined1 *)puVar6" * (cast_expression "(undefined1 *)puVar6" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar6 = puVar6 + 4;" (assignment_expression "puVar6 = puVar6 + 4" identifier = (binary_expression "puVar6 + 4" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar9;" (assignment_expression "puVar5 = puVar9" identifier = identifier) ;) }) while (parenthesized_expression "(puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20))" ( (binary_expression "puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20)" identifier != (cast_expression "(undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20)" ( (binary_expression "(long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20" (binary_expression "(long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U)" (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U)" ( (binary_expression "(long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U" (binary_expression "(long)puVar4 + (-0x20 - lVar10)" (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-0x20 - lVar10)" ( (binary_expression "-0x20 - lVar10" number_literal - identifier) ))) & number_literal) ))) + number_literal) )))) )) ;) (expression_statement "param_1[1] = param_1[1] + lVar7;" (assignment_expression "param_1[1] = param_1[1] + lVar7" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "param_1[1] + lVar7" (subscript_expression "param_1[1]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "puVar4 = puVar4 + -2;" (assignment_expression "puVar4 = puVar4 + -2" identifier = (binary_expression "puVar4 + -2" identifier + number_literal)) ;) (expression_statement "lVar14 = lVar10 - (long)param_2 >> 5;" (assignment_expression "lVar14 = lVar10 - (long)param_2 >> 5" identifier = (binary_expression "lVar10 - (long)param_2 >> 5" (binary_expression "lVar10 - (long)param_2" identifier - (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (expression_statement "puVar6 = (undefined8 *)(lVar10 + -0x10);" (assignment_expression "puVar6 = (undefined8 *)(lVar10 + -0x10)" identifier = (cast_expression "(undefined8 *)(lVar10 + -0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + -0x10)" ( (binary_expression "lVar10 + -0x10" identifier + number_literal) )))) ;) (if_statement "if (0 < lVar10 - (long)param_2) {\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }" if (parenthesized_expression "(0 < lVar10 - (long)param_2)" ( (binary_expression "0 < lVar10 - (long)param_2" number_literal < (binary_expression "lVar10 - (long)param_2" identifier - (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) )) (compound_statement "{\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }" { (do_statement "do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);" do (compound_statement "{\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        }" { (expression_statement "puVar5 = (undefined8 *)puVar6[-2];" (assignment_expression "puVar5 = (undefined8 *)puVar6[-2]" identifier = (cast_expression "(undefined8 *)puVar6[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar9 = (undefined8 *)puVar4[-2];" (assignment_expression "puVar9 = (undefined8 *)puVar4[-2]" identifier = (cast_expression "(undefined8 *)puVar4[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[-2]" identifier [ number_literal ]))) ;) (if_statement "if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }" if (parenthesized_expression "(puVar5 == puVar6)" ( (binary_expression "puVar5 == puVar6" identifier == identifier) )) (compound_statement "{\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }" { (expression_statement "__n = puVar6[-1];" (assignment_expression "__n = puVar6[-1]" identifier = (subscript_expression "puVar6[-1]" identifier [ number_literal ])) ;) (if_statement "if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (compound_statement "{\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }" { (if_statement "if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }" if (parenthesized_expression "(__n == 1)" ( (binary_expression "__n == 1" identifier == number_literal) )) (compound_statement "{\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }" { (expression_statement "*(undefined1 *)puVar9 = *(undefined1 *)puVar6;" (assignment_expression "*(undefined1 *)puVar9 = *(undefined1 *)puVar6" (pointer_expression "*(undefined1 *)puVar9" * (cast_expression "(undefined1 *)puVar9" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined1 *)puVar6" * (cast_expression "(undefined1 *)puVar6" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar9 = (undefined8 *)puVar4[-2];" (assignment_expression "puVar9 = (undefined8 *)puVar4[-2]" identifier = (cast_expression "(undefined8 *)puVar4[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[-2]" identifier [ number_literal ]))) ;) (expression_statement "__n = puVar6[-1];" (assignment_expression "__n = puVar6[-1]" identifier = (subscript_expression "puVar6[-1]" identifier [ number_literal ])) ;) }) (else_clause "else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }" else (compound_statement "{\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }" { (expression_statement "memcpy(puVar9,puVar6,__n);" (call_expression "memcpy(puVar9,puVar6,__n)" identifier (argument_list "(puVar9,puVar6,__n)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar9 = (undefined8 *)puVar4[-2];" (assignment_expression "puVar9 = (undefined8 *)puVar4[-2]" identifier = (cast_expression "(undefined8 *)puVar4[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[-2]" identifier [ number_literal ]))) ;) (expression_statement "__n = puVar6[-1];" (assignment_expression "__n = puVar6[-1]" identifier = (subscript_expression "puVar6[-1]" identifier [ number_literal ])) ;) }))) })) (expression_statement "puVar4[-1] = __n;" (assignment_expression "puVar4[-1] = __n" (subscript_expression "puVar4[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)((long)puVar9 + __n) = 0;" (assignment_expression "*(undefined1 *)((long)puVar9 + __n) = 0" (pointer_expression "*(undefined1 *)((long)puVar9 + __n)" * (cast_expression "(undefined1 *)((long)puVar9 + __n)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + __n)" ( (binary_expression "(long)puVar9 + __n" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) }) (else_clause "else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }" else (compound_statement "{\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }" { (if_statement "if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }" if (parenthesized_expression "(puVar4 == puVar9)" ( (binary_expression "puVar4 == puVar9" identifier == identifier) )) (compound_statement "{\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }" { (expression_statement "puVar4[-2] = puVar5;" (assignment_expression "puVar4[-2] = puVar5" (subscript_expression "puVar4[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[-1] = puVar6[-1];" (assignment_expression "puVar4[-1] = puVar6[-1]" (subscript_expression "puVar4[-1]" identifier [ number_literal ]) = (subscript_expression "puVar6[-1]" identifier [ number_literal ])) ;) (expression_statement "*puVar4 = *puVar6;" (assignment_expression "*puVar4 = *puVar6" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*puVar6" * identifier)) ;) }) (else_clause "else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }" else (compound_statement "{\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }" { (expression_statement "puVar4[-2] = puVar5;" (assignment_expression "puVar4[-2] = puVar5" (subscript_expression "puVar4[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = *puVar4;" (assignment_expression "uVar1 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar4[-1] = puVar6[-1];" (assignment_expression "puVar4[-1] = puVar6[-1]" (subscript_expression "puVar4[-1]" identifier [ number_literal ]) = (subscript_expression "puVar6[-1]" identifier [ number_literal ])) ;) (expression_statement "*puVar4 = *puVar6;" (assignment_expression "*puVar4 = *puVar6" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*puVar6" * identifier)) ;) (if_statement "if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }" if (parenthesized_expression "(puVar9 != (undefined8 *)0x0)" ( (binary_expression "puVar9 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }" { (expression_statement "puVar6[-2] = puVar9;" (assignment_expression "puVar6[-2] = puVar9" (subscript_expression "puVar6[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar6 = uVar1;" (assignment_expression "*puVar6 = uVar1" (pointer_expression "*puVar6" * identifier) = identifier) ;) (goto_statement "goto LAB_002d717a;" goto statement_identifier ;) })) }))) (expression_statement "puVar6[-2] = puVar6;" (assignment_expression "puVar6[-2] = puVar6" (subscript_expression "puVar6[-2]" identifier [ number_literal ]) = identifier) ;) }))) (labeled_statement "LAB_002d717a:\n          puVar4 = puVar4 + -4;" statement_identifier : (expression_statement "puVar4 = puVar4 + -4;" (assignment_expression "puVar4 = puVar4 + -4" identifier = (binary_expression "puVar4 + -4" identifier + number_literal)) ;)) (expression_statement "puVar6[-1] = 0;" (assignment_expression "puVar6[-1] = 0" (subscript_expression "puVar6[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar6[-2] = 0;" (assignment_expression "*(undefined1 *)puVar6[-2] = 0" (pointer_expression "*(undefined1 *)puVar6[-2]" * (cast_expression "(undefined1 *)puVar6[-2]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[-2]" identifier [ number_literal ]))) = number_literal) ;) (expression_statement "lVar14 = lVar14 + -1;" (assignment_expression "lVar14 = lVar14 + -1" identifier = (binary_expression "lVar14 + -1" identifier + number_literal)) ;) (expression_statement "puVar6 = puVar6 + -4;" (assignment_expression "puVar6 = puVar6 + -4" identifier = (binary_expression "puVar6 + -4" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar14 != 0)" ( (binary_expression "lVar14 != 0" identifier != number_literal) )) ;) })) (if_statement "if (0 < lVar7) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }" if (parenthesized_expression "(0 < lVar7)" ( (binary_expression "0 < lVar7" number_literal < identifier) )) (compound_statement "{\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }" { (do_statement "do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);" do (compound_statement "{\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        }" { (expression_statement "FUN_0033f660(param_2,param_3);" (call_expression "FUN_0033f660(param_2,param_3)" identifier (argument_list "(param_2,param_3)" ( identifier , identifier ))) ;) (expression_statement "uVar2 = uVar2 - 1;" (assignment_expression "uVar2 = uVar2 - 1" identifier = (binary_expression "uVar2 - 1" identifier - number_literal)) ;) (expression_statement "param_3 = param_3 + 4;" (assignment_expression "param_3 = param_3 + 4" identifier = (binary_expression "param_3 + 4" identifier + number_literal)) ;) (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\n      plVar11 = (long *)((long)param_3 + lVar10);\n      puVar6 = puVar4;\n      if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */\n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      puVar6 = puVar6 + (uVar2 - local_68) * 4;\n      param_1[1] = puVar6;\n      if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      param_1[1] = (long)puVar6 + lVar10;\n      if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }\n    }" else (compound_statement "{\n      plVar11 = (long *)((long)param_3 + lVar10);\n      puVar6 = puVar4;\n      if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */\n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      puVar6 = puVar6 + (uVar2 - local_68) * 4;\n      param_1[1] = puVar6;\n      if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      param_1[1] = (long)puVar6 + lVar10;\n      if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }\n    }" { (expression_statement "plVar11 = (long *)((long)param_3 + lVar10);" (assignment_expression "plVar11 = (long *)((long)param_3 + lVar10)" identifier = (cast_expression "(long *)((long)param_3 + lVar10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + lVar10)" ( (binary_expression "(long)param_3 + lVar10" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (expression_statement "puVar6 = puVar4;" (assignment_expression "puVar6 = puVar4" identifier = identifier) ;) (if_statement "if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */\n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }" if (parenthesized_expression "(param_4 != plVar11)" ( (binary_expression "param_4 != plVar11" identifier != identifier) )) (compound_statement "{\n        do {\n          *puVar6 = puVar6 + 2;\n                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */\n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }" { (do_statement "do {\n          *puVar6 = puVar6 + 2;\n                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */\n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);" do (compound_statement "{\n          *puVar6 = puVar6 + 2;\n                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */\n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        }" { (expression_statement "*puVar6 = puVar6 + 2;" (assignment_expression "*puVar6 = puVar6 + 2" (pointer_expression "*puVar6" * identifier) = (binary_expression "puVar6 + 2" identifier + number_literal)) ;) comment (expression_statement "FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);" (call_expression "FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11)" identifier (argument_list "(puVar6,*plVar11,plVar11[1] + *plVar11)" ( identifier , (pointer_expression "*plVar11" * identifier) , (binary_expression "plVar11[1] + *plVar11" (subscript_expression "plVar11[1]" identifier [ number_literal ]) + (pointer_expression "*plVar11" * identifier)) ))) ;) (expression_statement "plVar11 = plVar11 + 4;" (assignment_expression "plVar11 = plVar11 + 4" identifier = (binary_expression "plVar11 + 4" identifier + number_literal)) ;) (expression_statement "puVar6 = puVar6 + 4;" (assignment_expression "puVar6 = puVar6 + 4" identifier = (binary_expression "puVar6 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_4 != plVar11)" ( (binary_expression "param_4 != plVar11" identifier != identifier) )) ;) (expression_statement "puVar6 = (undefined8 *)param_1[1];" (assignment_expression "puVar6 = (undefined8 *)param_1[1]" identifier = (cast_expression "(undefined8 *)param_1[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) })) (expression_statement "puVar6 = puVar6 + (uVar2 - local_68) * 4;" (assignment_expression "puVar6 = puVar6 + (uVar2 - local_68) * 4" identifier = (binary_expression "puVar6 + (uVar2 - local_68) * 4" identifier + (binary_expression "(uVar2 - local_68) * 4" (parenthesized_expression "(uVar2 - local_68)" ( (binary_expression "uVar2 - local_68" identifier - identifier) )) * number_literal))) ;) (expression_statement "param_1[1] = puVar6;" (assignment_expression "param_1[1] = puVar6" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }" if (parenthesized_expression "(puVar4 != param_2)" ( (binary_expression "puVar4 != param_2" identifier != identifier) )) (compound_statement "{\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }" { (expression_statement "puVar5 = param_2 + 2;" (assignment_expression "puVar5 = param_2 + 2" identifier = (binary_expression "param_2 + 2" identifier + number_literal)) ;) (expression_statement "puVar9 = puVar6;" (assignment_expression "puVar9 = puVar6" identifier = identifier) ;) (do_statement "do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));" do (compound_statement "{\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        }" { (expression_statement "*puVar9 = puVar9 + 2;" (assignment_expression "*puVar9 = puVar9 + 2" (pointer_expression "*puVar9" * identifier) = (binary_expression "puVar9 + 2" identifier + number_literal)) ;) (if_statement "if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }" if (parenthesized_expression "((undefined8 *)puVar5[-2] == puVar5)" ( (binary_expression "(undefined8 *)puVar5[-2] == puVar5" (cast_expression "(undefined8 *)puVar5[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar5[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }" { (expression_statement "uVar1 = puVar5[1];" (assignment_expression "uVar1 = puVar5[1]" identifier = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "puVar9[2] = *puVar5;" (assignment_expression "puVar9[2] = *puVar5" (subscript_expression "puVar9[2]" identifier [ number_literal ]) = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar9[3] = uVar1;" (assignment_expression "puVar9[3] = uVar1" (subscript_expression "puVar9[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }" else (compound_statement "{\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }" { (expression_statement "*puVar9 = (undefined8 *)puVar5[-2];" (assignment_expression "*puVar9 = (undefined8 *)puVar5[-2]" (pointer_expression "*puVar9" * identifier) = (cast_expression "(undefined8 *)puVar5[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar5[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar9[2] = *puVar5;" (assignment_expression "puVar9[2] = *puVar5" (subscript_expression "puVar9[2]" identifier [ number_literal ]) = (pointer_expression "*puVar5" * identifier)) ;) }))) (expression_statement "puVar8 = puVar9 + 4;" (assignment_expression "puVar8 = puVar9 + 4" identifier = (binary_expression "puVar9 + 4" identifier + number_literal)) ;) (expression_statement "puVar9[1] = puVar5[-1];" (assignment_expression "puVar9[1] = puVar5[-1]" (subscript_expression "puVar9[1]" identifier [ number_literal ]) = (subscript_expression "puVar5[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar5[-2] = puVar5;" (assignment_expression "puVar5[-2] = puVar5" (subscript_expression "puVar5[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar5[-1] = 0;" (assignment_expression "puVar5[-1] = 0" (subscript_expression "puVar5[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar5 = 0;" (assignment_expression "*(undefined1 *)puVar5 = 0" (pointer_expression "*(undefined1 *)puVar5" * (cast_expression "(undefined1 *)puVar5" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar5 = puVar5 + 4;" (assignment_expression "puVar5 = puVar5 + 4" identifier = (binary_expression "puVar5 + 4" identifier + number_literal)) ;) (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" identifier = identifier) ;) }) while (parenthesized_expression "(puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20))" ( (binary_expression "puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20)" identifier != (cast_expression "(undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20)" ( (binary_expression "(long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20" (binary_expression "(long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U)" (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U)" ( (binary_expression "(long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U" (binary_expression "(long)puVar4 + (-0x20 - (long)param_2)" (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-0x20 - (long)param_2)" ( (binary_expression "-0x20 - (long)param_2" number_literal - (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) & number_literal) ))) + number_literal) )))) )) ;) (expression_statement "puVar6 = (undefined8 *)param_1[1];" (assignment_expression "puVar6 = (undefined8 *)param_1[1]" identifier = (cast_expression "(undefined8 *)param_1[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) })) (expression_statement "param_1[1] = (long)puVar6 + lVar10;" (assignment_expression "param_1[1] = (long)puVar6 + lVar10" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "(long)puVar6 + lVar10" (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier)) ;) (if_statement "if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }" if (parenthesized_expression "(0 < lVar10)" ( (binary_expression "0 < lVar10" number_literal < identifier) )) (compound_statement "{\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }" { (do_statement "do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);" do (compound_statement "{\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        }" { (expression_statement "FUN_0033f660(param_2,param_3);" (call_expression "FUN_0033f660(param_2,param_3)" identifier (argument_list "(param_2,param_3)" ( identifier , identifier ))) ;) (expression_statement "local_68 = local_68 - 1;" (assignment_expression "local_68 = local_68 - 1" identifier = (binary_expression "local_68 - 1" identifier - number_literal)) ;) (expression_statement "param_3 = param_3 + 4;" (assignment_expression "param_3 = param_3 + 4" identifier = (binary_expression "param_3 + 4" identifier + number_literal)) ;) (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_68 != 0)" ( (binary_expression "local_68 != 0" identifier != number_literal) )) ;) })) }))) (return_statement "return;" return ;) })) (expression_statement "puVar6 = (undefined8 *)*param_1;" (assignment_expression "puVar6 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar3 = 0x7ffffffffffffff;" (assignment_expression "uVar3 = 0x7ffffffffffffff" identifier = number_literal) ;) (expression_statement "uVar12 = (long)puVar4 - (long)puVar6 >> 5;" (assignment_expression "uVar12 = (long)puVar4 - (long)puVar6 >> 5" identifier = (binary_expression "(long)puVar4 - (long)puVar6 >> 5" (binary_expression "(long)puVar4 - (long)puVar6" (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (if_statement "if (0x7ffffffffffffff - uVar12 < uVar2) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00377370("vector::_M_range_insert");\n  }" if (parenthesized_expression "(0x7ffffffffffffff - uVar12 < uVar2)" ( (binary_expression "0x7ffffffffffffff - uVar12 < uVar2" (binary_expression "0x7ffffffffffffff - uVar12" number_literal - identifier) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00377370("vector::_M_range_insert");\n  }" { comment (expression_statement "FUN_00377370("vector::_M_range_insert");" (call_expression "FUN_00377370("vector::_M_range_insert")" identifier (argument_list "("vector::_M_range_insert")" ( (string_literal ""vector::_M_range_insert"" " string_content ") ))) ;) })) (if_statement "if (uVar2 < uVar12) {\n    uVar2 = uVar12;\n  }" if (parenthesized_expression "(uVar2 < uVar12)" ( (binary_expression "uVar2 < uVar12" identifier < identifier) )) (compound_statement "{\n    uVar2 = uVar12;\n  }" { (expression_statement "uVar2 = uVar12;" (assignment_expression "uVar2 = uVar12" identifier = identifier) ;) })) (expression_statement "uVar13 = uVar12 + uVar2;" (assignment_expression "uVar13 = uVar12 + uVar2" identifier = (binary_expression "uVar12 + uVar2" identifier + identifier)) ;) (if_statement "if ((CARRY8(uVar12,uVar2)) || (0x7ffffffffffffff < uVar13)) {\n    lVar7 = -0x20;\n  }\n  else {\n    puVar4 = (undefined8 *)0x0;\n    uVar3 = uVar13;\n    if (uVar13 == 0) goto LAB_002d6f6d;\n    lVar7 = uVar13 * 0x20;\n  }" if (parenthesized_expression "((CARRY8(uVar12,uVar2)) || (0x7ffffffffffffff < uVar13))" ( (binary_expression "(CARRY8(uVar12,uVar2)) || (0x7ffffffffffffff < uVar13)" (parenthesized_expression "(CARRY8(uVar12,uVar2))" ( (call_expression "CARRY8(uVar12,uVar2)" identifier (argument_list "(uVar12,uVar2)" ( identifier , identifier ))) )) || (parenthesized_expression "(0x7ffffffffffffff < uVar13)" ( (binary_expression "0x7ffffffffffffff < uVar13" number_literal < identifier) ))) )) (compound_statement "{\n    lVar7 = -0x20;\n  }" { (expression_statement "lVar7 = -0x20;" (assignment_expression "lVar7 = -0x20" identifier = number_literal) ;) }) (else_clause "else {\n    puVar4 = (undefined8 *)0x0;\n    uVar3 = uVar13;\n    if (uVar13 == 0) goto LAB_002d6f6d;\n    lVar7 = uVar13 * 0x20;\n  }" else (compound_statement "{\n    puVar4 = (undefined8 *)0x0;\n    uVar3 = uVar13;\n    if (uVar13 == 0) goto LAB_002d6f6d;\n    lVar7 = uVar13 * 0x20;\n  }" { (expression_statement "puVar4 = (undefined8 *)0x0;" (assignment_expression "puVar4 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar3 = uVar13;" (assignment_expression "uVar3 = uVar13" identifier = identifier) ;) (if_statement "if (uVar13 == 0) goto LAB_002d6f6d;" if (parenthesized_expression "(uVar13 == 0)" ( (binary_expression "uVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_002d6f6d;" goto statement_identifier ;)) (expression_statement "lVar7 = uVar13 * 0x20;" (assignment_expression "lVar7 = uVar13 * 0x20" identifier = (binary_expression "uVar13 * 0x20" identifier * number_literal)) ;) }))) (expression_statement "puVar4 = (undefined8 *)FUN_00337270(lVar7);" (assignment_expression "puVar4 = (undefined8 *)FUN_00337270(lVar7)" identifier = (cast_expression "(undefined8 *)FUN_00337270(lVar7)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(lVar7)" identifier (argument_list "(lVar7)" ( identifier ))))) ;) (expression_statement "puVar6 = (undefined8 *)*param_1;" (assignment_expression "puVar6 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (labeled_statement "LAB_002d6f6d:\n  puVar5 = puVar4;" statement_identifier : (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" identifier = identifier) ;)) (if_statement "if (param_2 != puVar6) {\n    lVar7 = ((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5) + 1;\n    puVar6 = puVar6 + 2;\n    do {\n      *puVar5 = puVar5 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }\n      else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }\n      puVar9 = puVar5 + 4;\n      puVar5[1] = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar5 = puVar9;\n    } while (puVar9 != puVar4 + lVar7 * 4);\n    puVar5 = puVar4 + lVar7 * 4;\n  }" if (parenthesized_expression "(param_2 != puVar6)" ( (binary_expression "param_2 != puVar6" identifier != identifier) )) (compound_statement "{\n    lVar7 = ((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5) + 1;\n    puVar6 = puVar6 + 2;\n    do {\n      *puVar5 = puVar5 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }\n      else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }\n      puVar9 = puVar5 + 4;\n      puVar5[1] = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar5 = puVar9;\n    } while (puVar9 != puVar4 + lVar7 * 4);\n    puVar5 = puVar4 + lVar7 * 4;\n  }" { (expression_statement "lVar7 = ((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5) + 1;" (assignment_expression "lVar7 = ((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5) + 1" identifier = (binary_expression "((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5) + 1" (parenthesized_expression "((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5)" ( (binary_expression "(ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5" (call_expression "(ulong)((long)param_2 + (-0x20 - (long)puVar6))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)param_2 + (-0x20 - (long)puVar6))" ( (binary_expression "(long)param_2 + (-0x20 - (long)puVar6)" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-0x20 - (long)puVar6)" ( (binary_expression "-0x20 - (long)puVar6" number_literal - (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ))) >> number_literal) )) + number_literal)) ;) (expression_statement "puVar6 = puVar6 + 2;" (assignment_expression "puVar6 = puVar6 + 2" identifier = (binary_expression "puVar6 + 2" identifier + number_literal)) ;) (do_statement "do {\n      *puVar5 = puVar5 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }\n      else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }\n      puVar9 = puVar5 + 4;\n      puVar5[1] = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar5 = puVar9;\n    } while (puVar9 != puVar4 + lVar7 * 4);" do (compound_statement "{\n      *puVar5 = puVar5 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }\n      else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }\n      puVar9 = puVar5 + 4;\n      puVar5[1] = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar5 = puVar9;\n    }" { (expression_statement "*puVar5 = puVar5 + 2;" (assignment_expression "*puVar5 = puVar5 + 2" (pointer_expression "*puVar5" * identifier) = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (if_statement "if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }\n      else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }" if (parenthesized_expression "((undefined8 *)puVar6[-2] == puVar6)" ( (binary_expression "(undefined8 *)puVar6[-2] == puVar6" (cast_expression "(undefined8 *)puVar6[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }" { (expression_statement "uVar1 = puVar6[1];" (assignment_expression "uVar1 = puVar6[1]" identifier = (subscript_expression "puVar6[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5[2] = *puVar6;" (assignment_expression "puVar5[2] = *puVar6" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar5[3] = uVar1;" (assignment_expression "puVar5[3] = uVar1" (subscript_expression "puVar5[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }" else (compound_statement "{\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }" { (expression_statement "*puVar5 = (undefined8 *)puVar6[-2];" (assignment_expression "*puVar5 = (undefined8 *)puVar6[-2]" (pointer_expression "*puVar5" * identifier) = (cast_expression "(undefined8 *)puVar6[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar5[2] = *puVar6;" (assignment_expression "puVar5[2] = *puVar6" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = (pointer_expression "*puVar6" * identifier)) ;) }))) (expression_statement "puVar9 = puVar5 + 4;" (assignment_expression "puVar9 = puVar5 + 4" identifier = (binary_expression "puVar5 + 4" identifier + number_literal)) ;) (expression_statement "puVar5[1] = puVar6[-1];" (assignment_expression "puVar5[1] = puVar6[-1]" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = (subscript_expression "puVar6[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar6[-2] = puVar6;" (assignment_expression "puVar6[-2] = puVar6" (subscript_expression "puVar6[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[-1] = 0;" (assignment_expression "puVar6[-1] = 0" (subscript_expression "puVar6[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar6 = 0;" (assignment_expression "*(undefined1 *)puVar6 = 0" (pointer_expression "*(undefined1 *)puVar6" * (cast_expression "(undefined1 *)puVar6" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar6 = puVar6 + 4;" (assignment_expression "puVar6 = puVar6 + 4" identifier = (binary_expression "puVar6 + 4" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar9;" (assignment_expression "puVar5 = puVar9" identifier = identifier) ;) }) while (parenthesized_expression "(puVar9 != puVar4 + lVar7 * 4)" ( (binary_expression "puVar9 != puVar4 + lVar7 * 4" identifier != (binary_expression "puVar4 + lVar7 * 4" identifier + (binary_expression "lVar7 * 4" identifier * number_literal))) )) ;) (expression_statement "puVar5 = puVar4 + lVar7 * 4;" (assignment_expression "puVar5 = puVar4 + lVar7 * 4" identifier = (binary_expression "puVar4 + lVar7 * 4" identifier + (binary_expression "lVar7 * 4" identifier * number_literal))) ;) })) (do_statement "do {\n    lVar7 = *param_3;\n    lVar10 = param_3[1];\n    *puVar5 = puVar5 + 2;\n                    /* try { // try from 002d729d to 002d72a1 has its CatchHandler @ 002d73c5 */\n    FUN_001caae0(puVar5,lVar7,lVar10 + lVar7);\n    param_3 = param_3 + 4;\n    puVar5 = puVar5 + 4;\n  } while (param_4 != param_3);" do (compound_statement "{\n    lVar7 = *param_3;\n    lVar10 = param_3[1];\n    *puVar5 = puVar5 + 2;\n                    /* try { // try from 002d729d to 002d72a1 has its CatchHandler @ 002d73c5 */\n    FUN_001caae0(puVar5,lVar7,lVar10 + lVar7);\n    param_3 = param_3 + 4;\n    puVar5 = puVar5 + 4;\n  }" { (expression_statement "lVar7 = *param_3;" (assignment_expression "lVar7 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "lVar10 = param_3[1];" (assignment_expression "lVar10 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "*puVar5 = puVar5 + 2;" (assignment_expression "*puVar5 = puVar5 + 2" (pointer_expression "*puVar5" * identifier) = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) comment (expression_statement "FUN_001caae0(puVar5,lVar7,lVar10 + lVar7);" (call_expression "FUN_001caae0(puVar5,lVar7,lVar10 + lVar7)" identifier (argument_list "(puVar5,lVar7,lVar10 + lVar7)" ( identifier , identifier , (binary_expression "lVar10 + lVar7" identifier + identifier) ))) ;) (expression_statement "param_3 = param_3 + 4;" (assignment_expression "param_3 = param_3 + 4" identifier = (binary_expression "param_3 + 4" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar5 + 4;" (assignment_expression "puVar5 = puVar5 + 4" identifier = (binary_expression "puVar5 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_4 != param_3)" ( (binary_expression "param_4 != param_3" identifier != identifier) )) ;) (expression_statement "puVar6 = (undefined8 *)param_1[1];" (assignment_expression "puVar6 = (undefined8 *)param_1[1]" identifier = (cast_expression "(undefined8 *)param_1[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (if_statement "if (param_2 != puVar6) {\n    lVar7 = ((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5) + 1;\n    puVar6 = param_2 + 2;\n    puVar9 = puVar5;\n    do {\n      *puVar9 = puVar9 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }\n      else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }\n      uVar1 = puVar6[-1];\n      puVar8 = puVar9 + 4;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      puVar9[1] = uVar1;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar9 = puVar8;\n    } while (puVar8 != puVar5 + lVar7 * 4);\n    puVar6 = (undefined8 *)param_1[1];\n    puVar5 = puVar5 + lVar7 * 4;\n  }" if (parenthesized_expression "(param_2 != puVar6)" ( (binary_expression "param_2 != puVar6" identifier != identifier) )) (compound_statement "{\n    lVar7 = ((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5) + 1;\n    puVar6 = param_2 + 2;\n    puVar9 = puVar5;\n    do {\n      *puVar9 = puVar9 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }\n      else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }\n      uVar1 = puVar6[-1];\n      puVar8 = puVar9 + 4;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      puVar9[1] = uVar1;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar9 = puVar8;\n    } while (puVar8 != puVar5 + lVar7 * 4);\n    puVar6 = (undefined8 *)param_1[1];\n    puVar5 = puVar5 + lVar7 * 4;\n  }" { (expression_statement "lVar7 = ((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5) + 1;" (assignment_expression "lVar7 = ((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5) + 1" identifier = (binary_expression "((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5) + 1" (parenthesized_expression "((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5)" ( (binary_expression "(ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5" (call_expression "(ulong)((long)puVar6 + (-0x20 - (long)param_2))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)puVar6 + (-0x20 - (long)param_2))" ( (binary_expression "(long)puVar6 + (-0x20 - (long)param_2)" (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-0x20 - (long)param_2)" ( (binary_expression "-0x20 - (long)param_2" number_literal - (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ))) >> number_literal) )) + number_literal)) ;) (expression_statement "puVar6 = param_2 + 2;" (assignment_expression "puVar6 = param_2 + 2" identifier = (binary_expression "param_2 + 2" identifier + number_literal)) ;) (expression_statement "puVar9 = puVar5;" (assignment_expression "puVar9 = puVar5" identifier = identifier) ;) (do_statement "do {\n      *puVar9 = puVar9 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }\n      else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }\n      uVar1 = puVar6[-1];\n      puVar8 = puVar9 + 4;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      puVar9[1] = uVar1;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar9 = puVar8;\n    } while (puVar8 != puVar5 + lVar7 * 4);" do (compound_statement "{\n      *puVar9 = puVar9 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }\n      else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }\n      uVar1 = puVar6[-1];\n      puVar8 = puVar9 + 4;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      puVar9[1] = uVar1;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar9 = puVar8;\n    }" { (expression_statement "*puVar9 = puVar9 + 2;" (assignment_expression "*puVar9 = puVar9 + 2" (pointer_expression "*puVar9" * identifier) = (binary_expression "puVar9 + 2" identifier + number_literal)) ;) (if_statement "if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }\n      else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }" if (parenthesized_expression "((undefined8 *)puVar6[-2] == puVar6)" ( (binary_expression "(undefined8 *)puVar6[-2] == puVar6" (cast_expression "(undefined8 *)puVar6[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }" { (expression_statement "uVar1 = puVar6[1];" (assignment_expression "uVar1 = puVar6[1]" identifier = (subscript_expression "puVar6[1]" identifier [ number_literal ])) ;) (expression_statement "puVar9[2] = *puVar6;" (assignment_expression "puVar9[2] = *puVar6" (subscript_expression "puVar9[2]" identifier [ number_literal ]) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar9[3] = uVar1;" (assignment_expression "puVar9[3] = uVar1" (subscript_expression "puVar9[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }" else (compound_statement "{\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }" { (expression_statement "*puVar9 = (undefined8 *)puVar6[-2];" (assignment_expression "*puVar9 = (undefined8 *)puVar6[-2]" (pointer_expression "*puVar9" * identifier) = (cast_expression "(undefined8 *)puVar6[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar9[2] = *puVar6;" (assignment_expression "puVar9[2] = *puVar6" (subscript_expression "puVar9[2]" identifier [ number_literal ]) = (pointer_expression "*puVar6" * identifier)) ;) }))) (expression_statement "uVar1 = puVar6[-1];" (assignment_expression "uVar1 = puVar6[-1]" identifier = (subscript_expression "puVar6[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar8 = puVar9 + 4;" (assignment_expression "puVar8 = puVar9 + 4" identifier = (binary_expression "puVar9 + 4" identifier + number_literal)) ;) (expression_statement "puVar6[-2] = puVar6;" (assignment_expression "puVar6[-2] = puVar6" (subscript_expression "puVar6[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[-1] = 0;" (assignment_expression "puVar6[-1] = 0" (subscript_expression "puVar6[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[1] = uVar1;" (assignment_expression "puVar9[1] = uVar1" (subscript_expression "puVar9[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)puVar6 = 0;" (assignment_expression "*(undefined1 *)puVar6 = 0" (pointer_expression "*(undefined1 *)puVar6" * (cast_expression "(undefined1 *)puVar6" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar6 = puVar6 + 4;" (assignment_expression "puVar6 = puVar6 + 4" identifier = (binary_expression "puVar6 + 4" identifier + number_literal)) ;) (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" identifier = identifier) ;) }) while (parenthesized_expression "(puVar8 != puVar5 + lVar7 * 4)" ( (binary_expression "puVar8 != puVar5 + lVar7 * 4" identifier != (binary_expression "puVar5 + lVar7 * 4" identifier + (binary_expression "lVar7 * 4" identifier * number_literal))) )) ;) (expression_statement "puVar6 = (undefined8 *)param_1[1];" (assignment_expression "puVar6 = (undefined8 *)param_1[1]" identifier = (cast_expression "(undefined8 *)param_1[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "puVar5 = puVar5 + lVar7 * 4;" (assignment_expression "puVar5 = puVar5 + lVar7 * 4" identifier = (binary_expression "puVar5 + lVar7 * 4" identifier + (binary_expression "lVar7 * 4" identifier * number_literal))) ;) })) (expression_statement "puVar9 = (undefined8 *)*param_1;" (assignment_expression "puVar9 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (puVar9 != puVar6) {\n    do {\n      if ((undefined8 *)*puVar9 != puVar9 + 2) {\n        FUN_00338a40();\n      }\n      puVar9 = puVar9 + 4;\n    } while (puVar9 != puVar6);\n    puVar6 = (undefined8 *)*param_1;\n  }" if (parenthesized_expression "(puVar9 != puVar6)" ( (binary_expression "puVar9 != puVar6" identifier != identifier) )) (compound_statement "{\n    do {\n      if ((undefined8 *)*puVar9 != puVar9 + 2) {\n        FUN_00338a40();\n      }\n      puVar9 = puVar9 + 4;\n    } while (puVar9 != puVar6);\n    puVar6 = (undefined8 *)*param_1;\n  }" { (do_statement "do {\n      if ((undefined8 *)*puVar9 != puVar9 + 2) {\n        FUN_00338a40();\n      }\n      puVar9 = puVar9 + 4;\n    } while (puVar9 != puVar6);" do (compound_statement "{\n      if ((undefined8 *)*puVar9 != puVar9 + 2) {\n        FUN_00338a40();\n      }\n      puVar9 = puVar9 + 4;\n    }" { (if_statement "if ((undefined8 *)*puVar9 != puVar9 + 2) {\n        FUN_00338a40();\n      }" if (parenthesized_expression "((undefined8 *)*puVar9 != puVar9 + 2)" ( (binary_expression "(undefined8 *)*puVar9 != puVar9 + 2" (cast_expression "(undefined8 *)*puVar9" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar9" * identifier)) != (binary_expression "puVar9 + 2" identifier + number_literal)) )) (compound_statement "{\n        FUN_00338a40();\n      }" { (expression_statement "FUN_00338a40();" (call_expression "FUN_00338a40()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "puVar9 = puVar9 + 4;" (assignment_expression "puVar9 = puVar9 + 4" identifier = (binary_expression "puVar9 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar9 != puVar6)" ( (binary_expression "puVar9 != puVar6" identifier != identifier) )) ;) (expression_statement "puVar6 = (undefined8 *)*param_1;" (assignment_expression "puVar6 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) })) (if_statement "if (puVar6 != (undefined8 *)0x0) {\n    FUN_00338a40(puVar6);\n  }" if (parenthesized_expression "(puVar6 != (undefined8 *)0x0)" ( (binary_expression "puVar6 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    FUN_00338a40(puVar6);\n  }" { (expression_statement "FUN_00338a40(puVar6);" (call_expression "FUN_00338a40(puVar6)" identifier (argument_list "(puVar6)" ( identifier ))) ;) })) (expression_statement "*param_1 = puVar4;" (assignment_expression "*param_1 = puVar4" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = puVar5;" (assignment_expression "param_1[1] = puVar5" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = puVar4 + uVar3 * 4;" (assignment_expression "param_1[2] = puVar4 + uVar3 * 4" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (binary_expression "puVar4 + uVar3 * 4" identifier + (binary_expression "uVar3 * 4" identifier * number_literal))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original name:\n   _M_range_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,\n   std::vector<std::__cxx11::basic_string<char> > > >\n   DWARF original prototype: void\n   _M_range_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>_>(vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n   * this, iterator __position,\n   __normal_iterator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>*,_std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n   __first,\n   __normal_iterator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>*,_std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n   __last, forward_iterator_tag param_5) */\n\nvoid __thiscall\nstd::\nvector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n::\n_M_range_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>_>\n          (vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n           *this,pointer __position,string *__first,string *__last)\n\n{\n  pointer *ppbVar1;\n  size_type sVar2;\n  size_type *psVar3;\n  pointer pcVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  size_type *psVar7;\n  ulong uVar8;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *pbVar9;\n  pointer pbVar10;\n  long lVar11;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *pbVar12;\n  pointer pbVar13;\n  pointer pbVar14;\n  size_t __n;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *pbVar15;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *pbVar16;\n  long lVar17;\n  undefined8 *__dest;\n  string *psVar18;\n  ulong uVar19;\n  ulong uVar20;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar21;\n  pointer pbVar22;\n  long lVar23;\n  ulong local_68;\n  \n  if (__first == __last) {\n    return;\n  }\n  lVar11 = (long)__last - (long)__first;\n  uVar6 = lVar11 >> 5;\n  pbVar22 = (this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_finish;\n  if (uVar6 <= (ulong)((long)(this->\n                             super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                             )._M_impl._M_end_of_storage - (long)pbVar22 >> 5)) {\n    lVar17 = (long)pbVar22 - (long)__position;\n    local_68 = lVar17 >> 5;\n    if (uVar6 < local_68) {\n      lVar17 = (long)pbVar22 - lVar11;\n      psVar7 = (size_type *)(lVar17 + 0x10);\n      pbVar10 = pbVar22;\n      do {\n        (pbVar10->_M_dataplus)._M_p = (pointer)&pbVar10->field_2;\n        if ((size_type *)psVar7[-2] == psVar7) {\n          sVar2 = psVar7[1];\n          (pbVar10->field_2)._M_allocated_capacity = *psVar7;\n          *(size_type *)((long)&pbVar10->field_2 + 8) = sVar2;\n        }\n        else {\n          (pbVar10->_M_dataplus)._M_p = (pointer)psVar7[-2];\n          (pbVar10->field_2)._M_allocated_capacity = *psVar7;\n        }\n        pbVar14 = pbVar10 + 1;\n        pbVar10->_M_string_length = psVar7[-1];\n        psVar7[-2] = (size_type)psVar7;\n        psVar7[-1] = 0;\n        *(char *)psVar7 = '\0';\n        psVar7 = psVar7 + 4;\n        pbVar10 = pbVar14;\n      } while (pbVar14 !=\n               (pointer)((long)&pbVar22[1]._M_dataplus._M_p +\n                        ((ulong)((long)pbVar22 + (-0x20 - lVar17)) & 0xffffffffffffffe0)));\n      ppbVar1 = &(this->\n                 super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                 )._M_impl._M_finish;\n      *ppbVar1 = (pointer)((long)*ppbVar1 + lVar11);\n      paVar21 = &pbVar22[-1].field_2;\n      lVar23 = lVar17 - (long)__position >> 5;\n      psVar7 = (size_type *)(lVar17 + -0x10);\n      if (0 < lVar17 - (long)__position) {\n        do {\n          psVar3 = (size_type *)psVar7[-2];\n          __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n          if (psVar3 == psVar7) {\n            __n = psVar7[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(char *)__dest = (char)*psVar7;\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n              else {\n                memcpy(__dest,psVar7,__n);\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n            }\n            *(size_t *)(paVar21->_M_local_buf + -8) = __n;\n            *(undefined1 *)((long)__dest + __n) = 0;\n          }\n          else {\n            if (paVar21 ==\n                (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)__dest) {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n            }\n            else {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              sVar2 = paVar21->_M_allocated_capacity;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n              if (__dest != (undefined8 *)0x0) {\n                psVar7[-2] = (size_type)__dest;\n                *psVar7 = sVar2;\n                goto LAB_002d717a;\n              }\n            }\n            psVar7[-2] = (size_type)psVar7;\n          }\nLAB_002d717a:\n          paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + -0x20);\n          psVar7[-1] = 0;\n          *(undefined1 *)psVar7[-2] = 0;\n          lVar23 = lVar23 + -1;\n          psVar7 = psVar7 + -4;\n        } while (lVar23 != 0);\n      }\n      if (0 < lVar11) {\n        do {\n          std::string::_M_assign((string *)__position,__first);\n          uVar6 = uVar6 - 1;\n          __first = __first + 0x20;\n          __position = __position + 1;\n        } while (uVar6 != 0);\n        return;\n      }\n    }\n    else {\n      psVar18 = __first + lVar17;\n      pbVar10 = pbVar22;\n      pbVar9 = pbVar22;\n      if (__last != psVar18) {\n        do {\n          (pbVar9->_M_dataplus)._M_p = (pointer)&pbVar9->field_2;\n                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */\n          __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char*>(pbVar9,*(long *)psVar18,*(long *)(psVar18 + 8) + *(long *)psVar18);\n          psVar18 = psVar18 + 0x20;\n          pbVar9 = pbVar9 + 1;\n        } while (__last != psVar18);\n        pbVar10 = (this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )._M_impl._M_finish;\n      }\n      pbVar10 = pbVar10 + (uVar6 - local_68);\n      (this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      )._M_impl._M_finish = pbVar10;\n      if (pbVar22 != __position) {\n        paVar21 = &__position->field_2;\n        pbVar14 = pbVar10;\n        do {\n          (pbVar14->_M_dataplus)._M_p = (pointer)&pbVar14->field_2;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)*(pointer *)(paVar21->_M_local_buf + -0x10) == paVar21) {\n            uVar5 = *(undefined8 *)(paVar21->_M_local_buf + 8);\n            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n            *(undefined8 *)((long)&pbVar14->field_2 + 8) = uVar5;\n          }\n          else {\n            (pbVar14->_M_dataplus)._M_p = *(pointer *)(paVar21->_M_local_buf + -0x10);\n            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n          }\n          pbVar13 = pbVar14 + 1;\n          pbVar14->_M_string_length = *(size_type *)(paVar21->_M_local_buf + -8);\n          *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar21->_M_local_buf + -0x10) = paVar21;\n          *(char *)((long)paVar21 + -8) = '\0';\n          *(char *)((long)paVar21 + -7) = '\0';\n          *(char *)((long)paVar21 + -6) = '\0';\n          *(char *)((long)paVar21 + -5) = '\0';\n          *(char *)((long)paVar21 + -4) = '\0';\n          *(char *)((long)paVar21 + -3) = '\0';\n          *(char *)((long)paVar21 + -2) = '\0';\n          *(char *)((long)paVar21 + -1) = '\0';\n          paVar21->_M_local_buf[0] = '\0';\n          paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + 0x20);\n          pbVar14 = pbVar13;\n        } while (pbVar13 !=\n                 (pointer)((long)&pbVar10[1]._M_dataplus._M_p +\n                          ((ulong)((long)pbVar22 + (-0x20 - (long)__position)) & 0xffffffffffffffe0)\n                          ));\n        pbVar10 = (this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )._M_impl._M_finish;\n      }\n      (this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      )._M_impl._M_finish = (pointer)((long)pbVar10 + lVar17);\n      if (0 < lVar17) {\n        do {\n          std::string::_M_assign((string *)__position,__first);\n          local_68 = local_68 - 1;\n          __first = __first + 0x20;\n          __position = __position + 1;\n        } while (local_68 != 0);\n      }\n    }\n    return;\n  }\n  pbVar10 = (this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_start;\n  uVar8 = 0x7ffffffffffffff;\n  uVar19 = (long)pbVar22 - (long)pbVar10 >> 5;\n  if (0x7ffffffffffffff - uVar19 < uVar6) {\n                    /* WARNING: Subroutine does not return */\n    __throw_length_error("vector::_M_range_insert");\n  }\n  if (uVar6 < uVar19) {\n    uVar6 = uVar19;\n  }\n  uVar20 = uVar19 + uVar6;\n  if ((CARRY8(uVar19,uVar6)) || (0x7ffffffffffffff < uVar20)) {\n    uVar20 = 0xffffffffffffffe0;\n  }\n  else {\n    pbVar9 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0;\n    uVar8 = uVar20;\n    if (uVar20 == 0) goto LAB_002d6f6d;\n    uVar20 = uVar20 * 0x20;\n  }\n  pbVar9 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)operator_new(uVar20)\n  ;\n  pbVar10 = (this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_start;\nLAB_002d6f6d:\n  pbVar12 = pbVar9;\n  if (__position != pbVar10) {\n    lVar11 = ((ulong)((long)__position + (-0x20 - (long)pbVar10)) >> 5) + 1;\n    paVar21 = &pbVar10->field_2;\n    do {\n      (pbVar12->_M_dataplus)._M_p = (pointer)&pbVar12->field_2;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)*(size_type **)(paVar21->_M_local_buf + -0x10) == paVar21) {\n        sVar2 = *(size_type *)(paVar21->_M_local_buf + 8);\n        (pbVar12->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n        *(size_type *)((long)&pbVar12->field_2 + 8) = sVar2;\n      }\n      else {\n        (pbVar12->_M_dataplus)._M_p = (pointer)*(size_type **)(paVar21->_M_local_buf + -0x10);\n        (pbVar12->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n      }\n      pbVar16 = pbVar12 + 1;\n      pbVar12->_M_string_length = *(size_type *)(paVar21->_M_local_buf + -8);\n      *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar21->_M_local_buf + -0x10) = paVar21;\n      *(size_type *)(paVar21->_M_local_buf + -8) = 0;\n      paVar21->_M_local_buf[0] = '\0';\n      paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)(paVar21->_M_local_buf + 0x20);\n      pbVar12 = pbVar16;\n    } while (pbVar16 != pbVar9 + lVar11);\n    pbVar12 = pbVar9 + lVar11;\n  }\n  do {\n    lVar11 = *(long *)__first;\n    lVar17 = *(long *)(__first + 8);\n    (pbVar12->_M_dataplus)._M_p = (pointer)&pbVar12->field_2;\n                    /* try { // try from 002d729d to 002d72a1 has its CatchHandler @ 002d73c5 */\n    __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::_M_construct<char*>\n              (pbVar12,lVar11,lVar17 + lVar11);\n    __first = __first + 0x20;\n    pbVar12 = pbVar12 + 1;\n  } while (__last != __first);\n  pbVar22 = (this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_finish;\n  if (__position != pbVar22) {\n    lVar11 = ((ulong)((long)pbVar22 + (-0x20 - (long)__position)) >> 5) + 1;\n    paVar21 = &__position->field_2;\n    pbVar16 = pbVar12;\n    do {\n      (pbVar16->_M_dataplus)._M_p = (pointer)&pbVar16->field_2;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)*(size_type **)(paVar21->_M_local_buf + -0x10) == paVar21) {\n        sVar2 = *(size_type *)(paVar21->_M_local_buf + 8);\n        (pbVar16->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n        *(size_type *)((long)&pbVar16->field_2 + 8) = sVar2;\n      }\n      else {\n        (pbVar16->_M_dataplus)._M_p = (pointer)*(size_type **)(paVar21->_M_local_buf + -0x10);\n        (pbVar16->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n      }\n      sVar2 = *(size_type *)(paVar21->_M_local_buf + -8);\n      pbVar15 = pbVar16 + 1;\n      *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar21->_M_local_buf + -0x10) = paVar21;\n      *(size_type *)(paVar21->_M_local_buf + -8) = 0;\n      pbVar16->_M_string_length = sVar2;\n      paVar21->_M_local_buf[0] = '\0';\n      paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)(paVar21->_M_local_buf + 0x20);\n      pbVar16 = pbVar15;\n    } while (pbVar15 != pbVar12 + lVar11);\n    pbVar22 = (this->\n              super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n              )._M_impl._M_finish;\n    pbVar12 = pbVar12 + lVar11;\n  }\n  pbVar10 = (this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_start;\n  if (pbVar10 != pbVar22) {\n    do {\n      pcVar4 = (pbVar10->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 != &pbVar10->field_2) {\n        operator_delete(pcVar4);\n      }\n      pbVar10 = pbVar10 + 1;\n    } while (pbVar10 != pbVar22);\n    pbVar22 = (this->\n              super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n              )._M_impl._M_start;\n  }\n  if (pbVar22 != (pointer)0x0) {\n    operator_delete(pbVar22);\n  }\n  (this->\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  )._M_impl._M_start = pbVar9;\n  (this->\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  )._M_impl._M_finish = pbVar12;\n  (this->\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  )._M_impl._M_end_of_storage = pbVar9 + uVar8;\n  return;\n}\n\n" comment (declaration "void __thiscall\nstd::\nvector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n::\n_M_range_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>_>\n          (vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n           *this,pointer __position,string *__first,string *__last)\n\n{\n  pointer *ppbVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::\nvector<std::__cxx11::" identifier : : identifier < identifier : : identifier : :) identifier (ERROR "<char" < primitive_type) , (ERROR "_std::" identifier : :) identifier (ERROR "<char>" < primitive_type >) , (ERROR "_std::allocator<char>" identifier : : identifier < primitive_type >) identifier (ERROR ">" >) , (ERROR "_std::allocator<std::__cxx11::" identifier : : identifier < identifier : : identifier : :) identifier (ERROR "<char" < primitive_type) , (ERROR "_std::" identifier : :) identifier (ERROR "<char>" < primitive_type >) , (ERROR "_std::allocator<char>_>_>_>\n::\n_M_range_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>_>\n          (vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n           *this,pointer __position,string *__first,string *__last)\n\n{\n  pointer" identifier : : identifier < primitive_type > identifier > identifier > identifier > : : identifier < identifier : : identifier < identifier : : identifier : : identifier < primitive_type > (pointer_declarator "*,_std::vector<std::__cxx11::basic_string<char>_>_>_>\n          (vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n           *this,pointer __position,string *__first,string *__last)" * (ERROR ",_std::vector<std::__cxx11::basic_string<char>_>_>" , identifier : : identifier < identifier : : identifier : : identifier < primitive_type > identifier > identifier >) (function_declarator "_>\n          (vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n           *this,pointer __position,string *__first,string *__last)" identifier (ERROR ">" >) (parameter_list "(vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n           *this,pointer __position,string *__first,string *__last)" ( (parameter_declaration "vector<std::__cxx11::basic_string" type_identifier (ERROR "<std::__cxx11::" < identifier : : identifier : :) identifier) (ERROR "<char" < primitive_type) , (parameter_declaration "_std::char_traits" type_identifier (ERROR "::" : :) identifier) (ERROR "<char>" < primitive_type >) , (parameter_declaration "_std::allocator<char>_" type_identifier (ERROR "::allocator<char>" : : identifier < primitive_type >) identifier) (ERROR ">" >) , (parameter_declaration "_std::allocator<std::__cxx11::basic_string" type_identifier (ERROR "::allocator<std::__cxx11::" : : identifier < identifier : : identifier : :) identifier) (ERROR "<char" < primitive_type) , (parameter_declaration "_std::char_traits" type_identifier (ERROR "::" : :) identifier) (ERROR "<char>" < primitive_type >) , (parameter_declaration "_std::allocator<char>_>_>_>\n           *this" type_identifier (ERROR "::allocator<char>_>_>_>" : : identifier < primitive_type > identifier > identifier > identifier >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "pointer __position" type_identifier identifier) , (parameter_declaration "string *__first" type_identifier (pointer_declarator "*__first" * identifier)) , (parameter_declaration "string *__last" type_identifier (pointer_declarator "*__last" * identifier)) )))) { identifier) (pointer_declarator "*ppbVar1" * identifier) ;) (declaration "size_type sVar2;" type_identifier identifier ;) (declaration "size_type *psVar3;" type_identifier (pointer_declarator "*psVar3" * identifier) ;) (declaration "pointer pcVar4;" type_identifier identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "size_type *psVar7;" type_identifier (pointer_declarator "*psVar7" * identifier) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (ERROR "basic_string<char," (binary_expression "basic_string<char" identifier < identifier) ,) (labeled_statement "_std::char_traits<char>,_std::allocator<char>_> *pbVar9;" statement_identifier (ERROR "::char_traits<char>,_std:" : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) :) : (expression_statement "allocator<char>_> *pbVar9;" (binary_expression "allocator<char>_> *pbVar9" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*pbVar9" * identifier)) ;)) (declaration "pointer pbVar10;" type_identifier identifier ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (ERROR "basic_string<char," (binary_expression "basic_string<char" identifier < identifier) ,) (labeled_statement "_std::char_traits<char>,_std::allocator<char>_> *pbVar12;" statement_identifier (ERROR "::char_traits<char>,_std:" : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) :) : (expression_statement "allocator<char>_> *pbVar12;" (binary_expression "allocator<char>_> *pbVar12" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*pbVar12" * identifier)) ;)) (declaration "pointer pbVar13;" type_identifier identifier ;) (declaration "pointer pbVar14;" type_identifier identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (ERROR "basic_string<char," (binary_expression "basic_string<char" identifier < identifier) ,) (labeled_statement "_std::char_traits<char>,_std::allocator<char>_> *pbVar15;" statement_identifier (ERROR "::char_traits<char>,_std:" : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) :) : (expression_statement "allocator<char>_> *pbVar15;" (binary_expression "allocator<char>_> *pbVar15" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*pbVar15" * identifier)) ;)) (ERROR "basic_string<char," (binary_expression "basic_string<char" identifier < identifier) ,) (labeled_statement "_std::char_traits<char>,_std::allocator<char>_> *pbVar16;" statement_identifier (ERROR "::char_traits<char>,_std:" : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) :) : (expression_statement "allocator<char>_> *pbVar16;" (binary_expression "allocator<char>_> *pbVar16" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*pbVar16" * identifier)) ;)) (declaration "long lVar17;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *__dest;" type_identifier (pointer_declarator "*__dest" * identifier) ;) (declaration "string *psVar18;" type_identifier (pointer_declarator "*psVar18" * identifier) ;) (declaration "ulong uVar19;" type_identifier identifier ;) (declaration "ulong uVar20;" type_identifier identifier ;) (ERROR "anon_union_16_2_edb7204a_for_basic_string<char," (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) ,) (labeled_statement "_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar21;" statement_identifier (ERROR "::char_traits<char>,_std:" : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) :) : (expression_statement "allocator<char>_>_9\n  *paVar21;" (binary_expression "allocator<char>_>_9\n  *paVar21" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar21" identifier * identifier)) ;)) (declaration "pointer pbVar22;" type_identifier identifier ;) (declaration "long lVar23;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong local_68;" type_identifier identifier ;) (if_statement "if (__first == __last) {\n    return;\n  }" if (parenthesized_expression "(__first == __last)" ( (binary_expression "__first == __last" identifier == identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "lVar11 = (long)__last - (long)__first;" (assignment_expression "lVar11 = (long)__last - (long)__first" identifier = (binary_expression "(long)__last - (long)__first" (cast_expression "(long)__last" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__first" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "uVar6 = lVar11 >> 5;" (assignment_expression "uVar6 = lVar11 >> 5" identifier = (binary_expression "lVar11 >> 5" identifier >> number_literal)) ;) (expression_statement "pbVar22 = (this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_finish;" (assignment_expression "pbVar22 = (this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_finish" identifier = (field_expression "(this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_finish" (field_expression "(this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl" (parenthesized_expression "(this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )" ( (ERROR "this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std" (binary_expression "this->\n            super__Vector_base<std::__cxx11::basic_string<char" (binary_expression "this->\n            super__Vector_base<std" (field_expression "this->\n            super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (uVar6 <= (ulong)((long)(this->\n                             super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                             )._M_impl._M_end_of_storage - (long)pbVar22 >> 5)) {\n    lVar17 = (long)pbVar22 - (long)__position;\n    local_68 = lVar17 >> 5;\n    if (uVar6 < local_68) {\n      lVar17 = (long)pbVar22 - lVar11;\n      psVar7 = (size_type *)(lVar17 + 0x10);\n      pbVar10 = pbVar22;\n      do {\n        (pbVar10->_M_dataplus)._M_p = (pointer)&pbVar10->field_2;\n        if ((size_type *)psVar7[-2] == psVar7) {\n          sVar2 = psVar7[1];\n          (pbVar10->field_2)._M_allocated_capacity = *psVar7;\n          *(size_type *)((long)&pbVar10->field_2 + 8) = sVar2;\n        }\n        else {\n          (pbVar10->_M_dataplus)._M_p = (pointer)psVar7[-2];\n          (pbVar10->field_2)._M_allocated_capacity = *psVar7;\n        }\n        pbVar14 = pbVar10 + 1;\n        pbVar10->_M_string_length = psVar7[-1];\n        psVar7[-2] = (size_type)psVar7;\n        psVar7[-1] = 0;\n        *(char *)psVar7 = '\0';\n        psVar7 = psVar7 + 4;\n        pbVar10 = pbVar14;\n      } while (pbVar14 !=\n               (pointer)((long)&pbVar22[1]._M_dataplus._M_p +\n                        ((ulong)((long)pbVar22 + (-0x20 - lVar17)) & 0xffffffffffffffe0)));\n      ppbVar1 = &(this->\n                 super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                 )._M_impl._M_finish;\n      *ppbVar1 = (pointer)((long)*ppbVar1 + lVar11);\n      paVar21 = &pbVar22[-1].field_2;\n      lVar23 = lVar17 - (long)__position >> 5;\n      psVar7 = (size_type *)(lVar17 + -0x10);\n      if (0 < lVar17 - (long)__position) {\n        do {\n          psVar3 = (size_type *)psVar7[-2];\n          __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n          if (psVar3 == psVar7) {\n            __n = psVar7[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(char *)__dest = (char)*psVar7;\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n              else {\n                memcpy(__dest,psVar7,__n);\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n            }\n            *(size_t *)(paVar21->_M_local_buf + -8) = __n;\n            *(undefined1 *)((long)__dest + __n) = 0;\n          }\n          else {\n            if (paVar21 ==\n                (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)__dest) {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n            }\n            else {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              sVar2 = paVar21->_M_allocated_capacity;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n              if (__dest != (undefined8 *)0x0) {\n                psVar7[-2] = (size_type)__dest;\n                *psVar7 = sVar2;\n                goto LAB_002d717a;\n              }\n            }\n            psVar7[-2] = (size_type)psVar7;\n          }\nLAB_002d717a:\n          paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + -0x20);\n          psVar7[-1] = 0;\n          *(undefined1 *)psVar7[-2] = 0;\n          lVar23 = lVar23 + -1;\n          psVar7 = psVar7 + -4;\n        } while (lVar23 != 0);\n      }\n      if (0 < lVar11) {\n        do {\n          std::string::_M_assign((string *)__position,__first);\n          uVar6 = uVar6 - 1;\n          __first = __first + 0x20;\n          __position = __position + 1;\n        } while (uVar6 != 0);\n        return;\n      }\n    }\n    else {\n      psVar18 = __first + lVar17;\n      pbVar10 = pbVar22;\n      pbVar9 = pbVar22;\n      if (__last != psVar18) {\n        do {\n          (pbVar9->_M_dataplus)._M_p = (pointer)&pbVar9->field_2;\n                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */\n          __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char*>(pbVar9,*(long *)psVar18,*(long *)(psVar18 + 8) + *(long *)psVar18);\n          psVar18 = psVar18 + 0x20;\n          pbVar9 = pbVar9 + 1;\n        } while (__last != psVar18);\n        pbVar10 = (this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )._M_impl._M_finish;\n      }\n      pbVar10 = pbVar10 + (uVar6 - local_68);\n      (this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      )._M_impl._M_finish = pbVar10;\n      if (pbVar22 != __position) {\n        paVar21 = &__position->field_2;\n        pbVar14 = pbVar10;\n        do {\n          (pbVar14->_M_dataplus)._M_p = (pointer)&pbVar14->field_2;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)*(pointer *)(paVar21->_M_local_buf + -0x10) == paVar21) {\n            uVar5 = *(undefined8 *)(paVar21->_M_local_buf + 8);\n            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n            *(undefined8 *)((long)&pbVar14->field_2 + 8) = uVar5;\n          }\n          else {\n            (pbVar14->_M_dataplus)._M_p = *(pointer *)(paVar21->_M_local_buf + -0x10);\n            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n          }\n          pbVar13 = pbVar14 + 1;\n          pbVar14->_M_string_length = *(size_type *)(paVar21->_M_local_buf + -8);\n          *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar21->_M_local_buf + -0x10) = paVar21;\n          *(char *)((long)paVar21 + -8) = '\0';\n          *(char *)((long)paVar21 + -7) = '\0';\n          *(char *)((long)paVar21 + -6) = '\0';\n          *(char *)((long)paVar21 + -5) = '\0';\n          *(char *)((long)paVar21 + -4) = '\0';\n          *(char *)((long)paVar21 + -3) = '\0';\n          *(char *)((long)paVar21 + -2) = '\0';\n          *(char *)((long)paVar21 + -1) = '\0';\n          paVar21->_M_local_buf[0] = '\0';\n          paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + 0x20);\n          pbVar14 = pbVar13;\n        } while (pbVar13 !=\n                 (pointer)((long)&pbVar10[1]._M_dataplus._M_p +\n                          ((ulong)((long)pbVar22 + (-0x20 - (long)__position)) & 0xffffffffffffffe0)\n                          ));\n        pbVar10 = (this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )._M_impl._M_finish;\n      }\n      (this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      )._M_impl._M_finish = (pointer)((long)pbVar10 + lVar17);\n      if (0 < lVar17) {\n        do {\n          std::string::_M_assign((string *)__position,__first);\n          local_68 = local_68 - 1;\n          __first = __first + 0x20;\n          __position = __position + 1;\n        } while (local_68 != 0);\n      }\n    }\n    return;\n  }" if (parenthesized_expression "(uVar6 <= (ulong)((long)(this->\n                             super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                             )._M_impl._M_end_of_storage - (long)pbVar22 >> 5))" ( (binary_expression "uVar6 <= (ulong)((long)(this->\n                             super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                             )._M_impl._M_end_of_storage - (long)pbVar22 >> 5)" identifier <= (call_expression "(ulong)((long)(this->\n                             super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                             )._M_impl._M_end_of_storage - (long)pbVar22 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)(this->\n                             super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                             )._M_impl._M_end_of_storage - (long)pbVar22 >> 5)" ( (binary_expression "(long)(this->\n                             super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                             )._M_impl._M_end_of_storage - (long)pbVar22 >> 5" (binary_expression "(long)(this->\n                             super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                             )._M_impl._M_end_of_storage - (long)pbVar22" (cast_expression "(long)(this->\n                             super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                             )._M_impl._M_end_of_storage" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "(this->\n                             super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                             )._M_impl._M_end_of_storage" (field_expression "(this->\n                             super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                             )._M_impl" (parenthesized_expression "(this->\n                             super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                             )" ( (ERROR "this->\n                             super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "this->\n                             super__Vector_base<std::__cxx11::basic_string<char,_std" (binary_expression "this->\n                             super__Vector_base<std::__cxx11::basic_string<char" (binary_expression "this->\n                             super__Vector_base<std" (field_expression "this->\n                             super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) - (cast_expression "(long)pbVar22" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) )))) )) (compound_statement "{\n    lVar17 = (long)pbVar22 - (long)__position;\n    local_68 = lVar17 >> 5;\n    if (uVar6 < local_68) {\n      lVar17 = (long)pbVar22 - lVar11;\n      psVar7 = (size_type *)(lVar17 + 0x10);\n      pbVar10 = pbVar22;\n      do {\n        (pbVar10->_M_dataplus)._M_p = (pointer)&pbVar10->field_2;\n        if ((size_type *)psVar7[-2] == psVar7) {\n          sVar2 = psVar7[1];\n          (pbVar10->field_2)._M_allocated_capacity = *psVar7;\n          *(size_type *)((long)&pbVar10->field_2 + 8) = sVar2;\n        }\n        else {\n          (pbVar10->_M_dataplus)._M_p = (pointer)psVar7[-2];\n          (pbVar10->field_2)._M_allocated_capacity = *psVar7;\n        }\n        pbVar14 = pbVar10 + 1;\n        pbVar10->_M_string_length = psVar7[-1];\n        psVar7[-2] = (size_type)psVar7;\n        psVar7[-1] = 0;\n        *(char *)psVar7 = '\0';\n        psVar7 = psVar7 + 4;\n        pbVar10 = pbVar14;\n      } while (pbVar14 !=\n               (pointer)((long)&pbVar22[1]._M_dataplus._M_p +\n                        ((ulong)((long)pbVar22 + (-0x20 - lVar17)) & 0xffffffffffffffe0)));\n      ppbVar1 = &(this->\n                 super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                 )._M_impl._M_finish;\n      *ppbVar1 = (pointer)((long)*ppbVar1 + lVar11);\n      paVar21 = &pbVar22[-1].field_2;\n      lVar23 = lVar17 - (long)__position >> 5;\n      psVar7 = (size_type *)(lVar17 + -0x10);\n      if (0 < lVar17 - (long)__position) {\n        do {\n          psVar3 = (size_type *)psVar7[-2];\n          __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n          if (psVar3 == psVar7) {\n            __n = psVar7[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(char *)__dest = (char)*psVar7;\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n              else {\n                memcpy(__dest,psVar7,__n);\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n            }\n            *(size_t *)(paVar21->_M_local_buf + -8) = __n;\n            *(undefined1 *)((long)__dest + __n) = 0;\n          }\n          else {\n            if (paVar21 ==\n                (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)__dest) {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n            }\n            else {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              sVar2 = paVar21->_M_allocated_capacity;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n              if (__dest != (undefined8 *)0x0) {\n                psVar7[-2] = (size_type)__dest;\n                *psVar7 = sVar2;\n                goto LAB_002d717a;\n              }\n            }\n            psVar7[-2] = (size_type)psVar7;\n          }\nLAB_002d717a:\n          paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + -0x20);\n          psVar7[-1] = 0;\n          *(undefined1 *)psVar7[-2] = 0;\n          lVar23 = lVar23 + -1;\n          psVar7 = psVar7 + -4;\n        } while (lVar23 != 0);\n      }\n      if (0 < lVar11) {\n        do {\n          std::string::_M_assign((string *)__position,__first);\n          uVar6 = uVar6 - 1;\n          __first = __first + 0x20;\n          __position = __position + 1;\n        } while (uVar6 != 0);\n        return;\n      }\n    }\n    else {\n      psVar18 = __first + lVar17;\n      pbVar10 = pbVar22;\n      pbVar9 = pbVar22;\n      if (__last != psVar18) {\n        do {\n          (pbVar9->_M_dataplus)._M_p = (pointer)&pbVar9->field_2;\n                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */\n          __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char*>(pbVar9,*(long *)psVar18,*(long *)(psVar18 + 8) + *(long *)psVar18);\n          psVar18 = psVar18 + 0x20;\n          pbVar9 = pbVar9 + 1;\n        } while (__last != psVar18);\n        pbVar10 = (this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )._M_impl._M_finish;\n      }\n      pbVar10 = pbVar10 + (uVar6 - local_68);\n      (this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      )._M_impl._M_finish = pbVar10;\n      if (pbVar22 != __position) {\n        paVar21 = &__position->field_2;\n        pbVar14 = pbVar10;\n        do {\n          (pbVar14->_M_dataplus)._M_p = (pointer)&pbVar14->field_2;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)*(pointer *)(paVar21->_M_local_buf + -0x10) == paVar21) {\n            uVar5 = *(undefined8 *)(paVar21->_M_local_buf + 8);\n            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n            *(undefined8 *)((long)&pbVar14->field_2 + 8) = uVar5;\n          }\n          else {\n            (pbVar14->_M_dataplus)._M_p = *(pointer *)(paVar21->_M_local_buf + -0x10);\n            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n          }\n          pbVar13 = pbVar14 + 1;\n          pbVar14->_M_string_length = *(size_type *)(paVar21->_M_local_buf + -8);\n          *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar21->_M_local_buf + -0x10) = paVar21;\n          *(char *)((long)paVar21 + -8) = '\0';\n          *(char *)((long)paVar21 + -7) = '\0';\n          *(char *)((long)paVar21 + -6) = '\0';\n          *(char *)((long)paVar21 + -5) = '\0';\n          *(char *)((long)paVar21 + -4) = '\0';\n          *(char *)((long)paVar21 + -3) = '\0';\n          *(char *)((long)paVar21 + -2) = '\0';\n          *(char *)((long)paVar21 + -1) = '\0';\n          paVar21->_M_local_buf[0] = '\0';\n          paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + 0x20);\n          pbVar14 = pbVar13;\n        } while (pbVar13 !=\n                 (pointer)((long)&pbVar10[1]._M_dataplus._M_p +\n                          ((ulong)((long)pbVar22 + (-0x20 - (long)__position)) & 0xffffffffffffffe0)\n                          ));\n        pbVar10 = (this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )._M_impl._M_finish;\n      }\n      (this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      )._M_impl._M_finish = (pointer)((long)pbVar10 + lVar17);\n      if (0 < lVar17) {\n        do {\n          std::string::_M_assign((string *)__position,__first);\n          local_68 = local_68 - 1;\n          __first = __first + 0x20;\n          __position = __position + 1;\n        } while (local_68 != 0);\n      }\n    }\n    return;\n  }" { (expression_statement "lVar17 = (long)pbVar22 - (long)__position;" (assignment_expression "lVar17 = (long)pbVar22 - (long)__position" identifier = (binary_expression "(long)pbVar22 - (long)__position" (cast_expression "(long)pbVar22" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__position" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "local_68 = lVar17 >> 5;" (assignment_expression "local_68 = lVar17 >> 5" identifier = (binary_expression "lVar17 >> 5" identifier >> number_literal)) ;) (if_statement "if (uVar6 < local_68) {\n      lVar17 = (long)pbVar22 - lVar11;\n      psVar7 = (size_type *)(lVar17 + 0x10);\n      pbVar10 = pbVar22;\n      do {\n        (pbVar10->_M_dataplus)._M_p = (pointer)&pbVar10->field_2;\n        if ((size_type *)psVar7[-2] == psVar7) {\n          sVar2 = psVar7[1];\n          (pbVar10->field_2)._M_allocated_capacity = *psVar7;\n          *(size_type *)((long)&pbVar10->field_2 + 8) = sVar2;\n        }\n        else {\n          (pbVar10->_M_dataplus)._M_p = (pointer)psVar7[-2];\n          (pbVar10->field_2)._M_allocated_capacity = *psVar7;\n        }\n        pbVar14 = pbVar10 + 1;\n        pbVar10->_M_string_length = psVar7[-1];\n        psVar7[-2] = (size_type)psVar7;\n        psVar7[-1] = 0;\n        *(char *)psVar7 = '\0';\n        psVar7 = psVar7 + 4;\n        pbVar10 = pbVar14;\n      } while (pbVar14 !=\n               (pointer)((long)&pbVar22[1]._M_dataplus._M_p +\n                        ((ulong)((long)pbVar22 + (-0x20 - lVar17)) & 0xffffffffffffffe0)));\n      ppbVar1 = &(this->\n                 super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                 )._M_impl._M_finish;\n      *ppbVar1 = (pointer)((long)*ppbVar1 + lVar11);\n      paVar21 = &pbVar22[-1].field_2;\n      lVar23 = lVar17 - (long)__position >> 5;\n      psVar7 = (size_type *)(lVar17 + -0x10);\n      if (0 < lVar17 - (long)__position) {\n        do {\n          psVar3 = (size_type *)psVar7[-2];\n          __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n          if (psVar3 == psVar7) {\n            __n = psVar7[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(char *)__dest = (char)*psVar7;\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n              else {\n                memcpy(__dest,psVar7,__n);\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n            }\n            *(size_t *)(paVar21->_M_local_buf + -8) = __n;\n            *(undefined1 *)((long)__dest + __n) = 0;\n          }\n          else {\n            if (paVar21 ==\n                (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)__dest) {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n            }\n            else {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              sVar2 = paVar21->_M_allocated_capacity;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n              if (__dest != (undefined8 *)0x0) {\n                psVar7[-2] = (size_type)__dest;\n                *psVar7 = sVar2;\n                goto LAB_002d717a;\n              }\n            }\n            psVar7[-2] = (size_type)psVar7;\n          }\nLAB_002d717a:\n          paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + -0x20);\n          psVar7[-1] = 0;\n          *(undefined1 *)psVar7[-2] = 0;\n          lVar23 = lVar23 + -1;\n          psVar7 = psVar7 + -4;\n        } while (lVar23 != 0);\n      }\n      if (0 < lVar11) {\n        do {\n          std::string::_M_assign((string *)__position,__first);\n          uVar6 = uVar6 - 1;\n          __first = __first + 0x20;\n          __position = __position + 1;\n        } while (uVar6 != 0);\n        return;\n      }\n    }\n    else {\n      psVar18 = __first + lVar17;\n      pbVar10 = pbVar22;\n      pbVar9 = pbVar22;\n      if (__last != psVar18) {\n        do {\n          (pbVar9->_M_dataplus)._M_p = (pointer)&pbVar9->field_2;\n                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */\n          __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char*>(pbVar9,*(long *)psVar18,*(long *)(psVar18 + 8) + *(long *)psVar18);\n          psVar18 = psVar18 + 0x20;\n          pbVar9 = pbVar9 + 1;\n        } while (__last != psVar18);\n        pbVar10 = (this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )._M_impl._M_finish;\n      }\n      pbVar10 = pbVar10 + (uVar6 - local_68);\n      (this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      )._M_impl._M_finish = pbVar10;\n      if (pbVar22 != __position) {\n        paVar21 = &__position->field_2;\n        pbVar14 = pbVar10;\n        do {\n          (pbVar14->_M_dataplus)._M_p = (pointer)&pbVar14->field_2;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)*(pointer *)(paVar21->_M_local_buf + -0x10) == paVar21) {\n            uVar5 = *(undefined8 *)(paVar21->_M_local_buf + 8);\n            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n            *(undefined8 *)((long)&pbVar14->field_2 + 8) = uVar5;\n          }\n          else {\n            (pbVar14->_M_dataplus)._M_p = *(pointer *)(paVar21->_M_local_buf + -0x10);\n            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n          }\n          pbVar13 = pbVar14 + 1;\n          pbVar14->_M_string_length = *(size_type *)(paVar21->_M_local_buf + -8);\n          *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar21->_M_local_buf + -0x10) = paVar21;\n          *(char *)((long)paVar21 + -8) = '\0';\n          *(char *)((long)paVar21 + -7) = '\0';\n          *(char *)((long)paVar21 + -6) = '\0';\n          *(char *)((long)paVar21 + -5) = '\0';\n          *(char *)((long)paVar21 + -4) = '\0';\n          *(char *)((long)paVar21 + -3) = '\0';\n          *(char *)((long)paVar21 + -2) = '\0';\n          *(char *)((long)paVar21 + -1) = '\0';\n          paVar21->_M_local_buf[0] = '\0';\n          paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + 0x20);\n          pbVar14 = pbVar13;\n        } while (pbVar13 !=\n                 (pointer)((long)&pbVar10[1]._M_dataplus._M_p +\n                          ((ulong)((long)pbVar22 + (-0x20 - (long)__position)) & 0xffffffffffffffe0)\n                          ));\n        pbVar10 = (this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )._M_impl._M_finish;\n      }\n      (this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      )._M_impl._M_finish = (pointer)((long)pbVar10 + lVar17);\n      if (0 < lVar17) {\n        do {\n          std::string::_M_assign((string *)__position,__first);\n          local_68 = local_68 - 1;\n          __first = __first + 0x20;\n          __position = __position + 1;\n        } while (local_68 != 0);\n      }\n    }" if (parenthesized_expression "(uVar6 < local_68)" ( (binary_expression "uVar6 < local_68" identifier < identifier) )) (compound_statement "{\n      lVar17 = (long)pbVar22 - lVar11;\n      psVar7 = (size_type *)(lVar17 + 0x10);\n      pbVar10 = pbVar22;\n      do {\n        (pbVar10->_M_dataplus)._M_p = (pointer)&pbVar10->field_2;\n        if ((size_type *)psVar7[-2] == psVar7) {\n          sVar2 = psVar7[1];\n          (pbVar10->field_2)._M_allocated_capacity = *psVar7;\n          *(size_type *)((long)&pbVar10->field_2 + 8) = sVar2;\n        }\n        else {\n          (pbVar10->_M_dataplus)._M_p = (pointer)psVar7[-2];\n          (pbVar10->field_2)._M_allocated_capacity = *psVar7;\n        }\n        pbVar14 = pbVar10 + 1;\n        pbVar10->_M_string_length = psVar7[-1];\n        psVar7[-2] = (size_type)psVar7;\n        psVar7[-1] = 0;\n        *(char *)psVar7 = '\0';\n        psVar7 = psVar7 + 4;\n        pbVar10 = pbVar14;\n      } while (pbVar14 !=\n               (pointer)((long)&pbVar22[1]._M_dataplus._M_p +\n                        ((ulong)((long)pbVar22 + (-0x20 - lVar17)) & 0xffffffffffffffe0)));\n      ppbVar1 = &(this->\n                 super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                 )._M_impl._M_finish;\n      *ppbVar1 = (pointer)((long)*ppbVar1 + lVar11);\n      paVar21 = &pbVar22[-1].field_2;\n      lVar23 = lVar17 - (long)__position >> 5;\n      psVar7 = (size_type *)(lVar17 + -0x10);\n      if (0 < lVar17 - (long)__position) {\n        do {\n          psVar3 = (size_type *)psVar7[-2];\n          __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n          if (psVar3 == psVar7) {\n            __n = psVar7[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(char *)__dest = (char)*psVar7;\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n              else {\n                memcpy(__dest,psVar7,__n);\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n            }\n            *(size_t *)(paVar21->_M_local_buf + -8) = __n;\n            *(undefined1 *)((long)__dest + __n) = 0;\n          }\n          else {\n            if (paVar21 ==\n                (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)__dest) {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n            }\n            else {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              sVar2 = paVar21->_M_allocated_capacity;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n              if (__dest != (undefined8 *)0x0) {\n                psVar7[-2] = (size_type)__dest;\n                *psVar7 = sVar2;\n                goto LAB_002d717a;\n              }\n            }\n            psVar7[-2] = (size_type)psVar7;\n          }\nLAB_002d717a:\n          paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + -0x20);\n          psVar7[-1] = 0;\n          *(undefined1 *)psVar7[-2] = 0;\n          lVar23 = lVar23 + -1;\n          psVar7 = psVar7 + -4;\n        } while (lVar23 != 0);\n      }\n      if (0 < lVar11) {\n        do {\n          std::string::_M_assign((string *)__position,__first);\n          uVar6 = uVar6 - 1;\n          __first = __first + 0x20;\n          __position = __position + 1;\n        } while (uVar6 != 0);\n        return;\n      }\n    }" { (expression_statement "lVar17 = (long)pbVar22 - lVar11;" (assignment_expression "lVar17 = (long)pbVar22 - lVar11" identifier = (binary_expression "(long)pbVar22 - lVar11" (cast_expression "(long)pbVar22" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - identifier)) ;) (expression_statement "psVar7 = (size_type *)(lVar17 + 0x10);" (assignment_expression "psVar7 = (size_type *)(lVar17 + 0x10)" identifier = (cast_expression "(size_type *)(lVar17 + 0x10)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 0x10)" ( (binary_expression "lVar17 + 0x10" identifier + number_literal) )))) ;) (expression_statement "pbVar10 = pbVar22;" (assignment_expression "pbVar10 = pbVar22" identifier = identifier) ;) (do_statement "do {\n        (pbVar10->_M_dataplus)._M_p = (pointer)&pbVar10->field_2;\n        if ((size_type *)psVar7[-2] == psVar7) {\n          sVar2 = psVar7[1];\n          (pbVar10->field_2)._M_allocated_capacity = *psVar7;\n          *(size_type *)((long)&pbVar10->field_2 + 8) = sVar2;\n        }\n        else {\n          (pbVar10->_M_dataplus)._M_p = (pointer)psVar7[-2];\n          (pbVar10->field_2)._M_allocated_capacity = *psVar7;\n        }\n        pbVar14 = pbVar10 + 1;\n        pbVar10->_M_string_length = psVar7[-1];\n        psVar7[-2] = (size_type)psVar7;\n        psVar7[-1] = 0;\n        *(char *)psVar7 = '\0';\n        psVar7 = psVar7 + 4;\n        pbVar10 = pbVar14;\n      } while (pbVar14 !=\n               (pointer)((long)&pbVar22[1]._M_dataplus._M_p +\n                        ((ulong)((long)pbVar22 + (-0x20 - lVar17)) & 0xffffffffffffffe0)));" do (compound_statement "{\n        (pbVar10->_M_dataplus)._M_p = (pointer)&pbVar10->field_2;\n        if ((size_type *)psVar7[-2] == psVar7) {\n          sVar2 = psVar7[1];\n          (pbVar10->field_2)._M_allocated_capacity = *psVar7;\n          *(size_type *)((long)&pbVar10->field_2 + 8) = sVar2;\n        }\n        else {\n          (pbVar10->_M_dataplus)._M_p = (pointer)psVar7[-2];\n          (pbVar10->field_2)._M_allocated_capacity = *psVar7;\n        }\n        pbVar14 = pbVar10 + 1;\n        pbVar10->_M_string_length = psVar7[-1];\n        psVar7[-2] = (size_type)psVar7;\n        psVar7[-1] = 0;\n        *(char *)psVar7 = '\0';\n        psVar7 = psVar7 + 4;\n        pbVar10 = pbVar14;\n      }" { (expression_statement "(pbVar10->_M_dataplus)._M_p = (pointer)&pbVar10->field_2;" (assignment_expression "(pbVar10->_M_dataplus)._M_p = (pointer)&pbVar10->field_2" (field_expression "(pbVar10->_M_dataplus)._M_p" (parenthesized_expression "(pbVar10->_M_dataplus)" ( (field_expression "pbVar10->_M_dataplus" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(pointer)&pbVar10->field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "pbVar10->field_2" identifier -> field_identifier))) ;) (if_statement "if ((size_type *)psVar7[-2] == psVar7) {\n          sVar2 = psVar7[1];\n          (pbVar10->field_2)._M_allocated_capacity = *psVar7;\n          *(size_type *)((long)&pbVar10->field_2 + 8) = sVar2;\n        }\n        else {\n          (pbVar10->_M_dataplus)._M_p = (pointer)psVar7[-2];\n          (pbVar10->field_2)._M_allocated_capacity = *psVar7;\n        }" if (parenthesized_expression "((size_type *)psVar7[-2] == psVar7)" ( (binary_expression "(size_type *)psVar7[-2] == psVar7" (cast_expression "(size_type *)psVar7[-2]" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "psVar7[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n          sVar2 = psVar7[1];\n          (pbVar10->field_2)._M_allocated_capacity = *psVar7;\n          *(size_type *)((long)&pbVar10->field_2 + 8) = sVar2;\n        }" { (expression_statement "sVar2 = psVar7[1];" (assignment_expression "sVar2 = psVar7[1]" identifier = (subscript_expression "psVar7[1]" identifier [ number_literal ])) ;) (expression_statement "(pbVar10->field_2)._M_allocated_capacity = *psVar7;" (assignment_expression "(pbVar10->field_2)._M_allocated_capacity = *psVar7" (field_expression "(pbVar10->field_2)._M_allocated_capacity" (parenthesized_expression "(pbVar10->field_2)" ( (field_expression "pbVar10->field_2" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*psVar7" * identifier)) ;) (expression_statement "*(size_type *)((long)&pbVar10->field_2 + 8) = sVar2;" (assignment_expression "*(size_type *)((long)&pbVar10->field_2 + 8) = sVar2" (pointer_expression "*(size_type *)((long)&pbVar10->field_2 + 8)" * (cast_expression "(size_type *)((long)&pbVar10->field_2 + 8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&pbVar10->field_2 + 8)" ( (binary_expression "(long)&pbVar10->field_2 + 8" (cast_expression "(long)&pbVar10->field_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&pbVar10->field_2" & (field_expression "pbVar10->field_2" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) }) (else_clause "else {\n          (pbVar10->_M_dataplus)._M_p = (pointer)psVar7[-2];\n          (pbVar10->field_2)._M_allocated_capacity = *psVar7;\n        }" else (compound_statement "{\n          (pbVar10->_M_dataplus)._M_p = (pointer)psVar7[-2];\n          (pbVar10->field_2)._M_allocated_capacity = *psVar7;\n        }" { (expression_statement "(pbVar10->_M_dataplus)._M_p = (pointer)psVar7[-2];" (assignment_expression "(pbVar10->_M_dataplus)._M_p = (pointer)psVar7[-2]" (field_expression "(pbVar10->_M_dataplus)._M_p" (parenthesized_expression "(pbVar10->_M_dataplus)" ( (field_expression "pbVar10->_M_dataplus" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(pointer)psVar7[-2]" ( (type_descriptor "pointer" type_identifier) ) (subscript_expression "psVar7[-2]" identifier [ number_literal ]))) ;) (expression_statement "(pbVar10->field_2)._M_allocated_capacity = *psVar7;" (assignment_expression "(pbVar10->field_2)._M_allocated_capacity = *psVar7" (field_expression "(pbVar10->field_2)._M_allocated_capacity" (parenthesized_expression "(pbVar10->field_2)" ( (field_expression "pbVar10->field_2" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*psVar7" * identifier)) ;) }))) (expression_statement "pbVar14 = pbVar10 + 1;" (assignment_expression "pbVar14 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (expression_statement "pbVar10->_M_string_length = psVar7[-1];" (assignment_expression "pbVar10->_M_string_length = psVar7[-1]" (field_expression "pbVar10->_M_string_length" identifier -> field_identifier) = (subscript_expression "psVar7[-1]" identifier [ number_literal ])) ;) (expression_statement "psVar7[-2] = (size_type)psVar7;" (assignment_expression "psVar7[-2] = (size_type)psVar7" (subscript_expression "psVar7[-2]" identifier [ number_literal ]) = (cast_expression "(size_type)psVar7" ( (type_descriptor "size_type" type_identifier) ) identifier)) ;) (expression_statement "psVar7[-1] = 0;" (assignment_expression "psVar7[-1] = 0" (subscript_expression "psVar7[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(char *)psVar7 = '\0';" (assignment_expression "*(char *)psVar7 = '\0'" (pointer_expression "*(char *)psVar7" * (cast_expression "(char *)psVar7" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "psVar7 = psVar7 + 4;" (assignment_expression "psVar7 = psVar7 + 4" identifier = (binary_expression "psVar7 + 4" identifier + number_literal)) ;) (expression_statement "pbVar10 = pbVar14;" (assignment_expression "pbVar10 = pbVar14" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar14 !=\n               (pointer)((long)&pbVar22[1]._M_dataplus._M_p +\n                        ((ulong)((long)pbVar22 + (-0x20 - lVar17)) & 0xffffffffffffffe0)))" ( (binary_expression "pbVar14 !=\n               (pointer)((long)&pbVar22[1]._M_dataplus._M_p +\n                        ((ulong)((long)pbVar22 + (-0x20 - lVar17)) & 0xffffffffffffffe0))" identifier != (call_expression "(pointer)((long)&pbVar22[1]._M_dataplus._M_p +\n                        ((ulong)((long)pbVar22 + (-0x20 - lVar17)) & 0xffffffffffffffe0))" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((long)&pbVar22[1]._M_dataplus._M_p +\n                        ((ulong)((long)pbVar22 + (-0x20 - lVar17)) & 0xffffffffffffffe0))" ( (binary_expression "(long)&pbVar22[1]._M_dataplus._M_p +\n                        ((ulong)((long)pbVar22 + (-0x20 - lVar17)) & 0xffffffffffffffe0)" (cast_expression "(long)&pbVar22[1]._M_dataplus._M_p" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&pbVar22[1]._M_dataplus._M_p" & (field_expression "pbVar22[1]._M_dataplus._M_p" (field_expression "pbVar22[1]._M_dataplus" (subscript_expression "pbVar22[1]" identifier [ number_literal ]) . field_identifier) . field_identifier))) + (parenthesized_expression "((ulong)((long)pbVar22 + (-0x20 - lVar17)) & 0xffffffffffffffe0)" ( (binary_expression "(ulong)((long)pbVar22 + (-0x20 - lVar17)) & 0xffffffffffffffe0" (call_expression "(ulong)((long)pbVar22 + (-0x20 - lVar17))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)pbVar22 + (-0x20 - lVar17))" ( (binary_expression "(long)pbVar22 + (-0x20 - lVar17)" (cast_expression "(long)pbVar22" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-0x20 - lVar17)" ( (binary_expression "-0x20 - lVar17" number_literal - identifier) ))) ))) & number_literal) ))) )))) )) ;) (expression_statement "ppbVar1 = &(this->\n                 super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                 )._M_impl._M_finish;" (assignment_expression "ppbVar1 = &(this->\n                 super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                 )._M_impl._M_finish" identifier = (pointer_expression "&(this->\n                 super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                 )._M_impl._M_finish" & (field_expression "(this->\n                 super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                 )._M_impl._M_finish" (field_expression "(this->\n                 super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                 )._M_impl" (parenthesized_expression "(this->\n                 super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                 )" ( (ERROR "this->\n                 super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "this->\n                 super__Vector_base<std::__cxx11::basic_string<char,_std" (binary_expression "this->\n                 super__Vector_base<std::__cxx11::basic_string<char" (binary_expression "this->\n                 super__Vector_base<std" (field_expression "this->\n                 super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "*ppbVar1 = (pointer)((long)*ppbVar1 + lVar11);" (assignment_expression "*ppbVar1 = (pointer)((long)*ppbVar1 + lVar11)" (pointer_expression "*ppbVar1" * identifier) = (call_expression "(pointer)((long)*ppbVar1 + lVar11)" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((long)*ppbVar1 + lVar11)" ( (binary_expression "(long)*ppbVar1 + lVar11" (cast_expression "(long)*ppbVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppbVar1" * identifier)) + identifier) )))) ;) (expression_statement "paVar21 = &pbVar22[-1].field_2;" (assignment_expression "paVar21 = &pbVar22[-1].field_2" identifier = (pointer_expression "&pbVar22[-1].field_2" & (field_expression "pbVar22[-1].field_2" (subscript_expression "pbVar22[-1]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "lVar23 = lVar17 - (long)__position >> 5;" (assignment_expression "lVar23 = lVar17 - (long)__position >> 5" identifier = (binary_expression "lVar17 - (long)__position >> 5" (binary_expression "lVar17 - (long)__position" identifier - (cast_expression "(long)__position" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (expression_statement "psVar7 = (size_type *)(lVar17 + -0x10);" (assignment_expression "psVar7 = (size_type *)(lVar17 + -0x10)" identifier = (cast_expression "(size_type *)(lVar17 + -0x10)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + -0x10)" ( (binary_expression "lVar17 + -0x10" identifier + number_literal) )))) ;) (if_statement "if (0 < lVar17 - (long)__position) {\n        do {\n          psVar3 = (size_type *)psVar7[-2];\n          __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n          if (psVar3 == psVar7) {\n            __n = psVar7[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(char *)__dest = (char)*psVar7;\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n              else {\n                memcpy(__dest,psVar7,__n);\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n            }\n            *(size_t *)(paVar21->_M_local_buf + -8) = __n;\n            *(undefined1 *)((long)__dest + __n) = 0;\n          }\n          else {\n            if (paVar21 ==\n                (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)__dest) {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n            }\n            else {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              sVar2 = paVar21->_M_allocated_capacity;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n              if (__dest != (undefined8 *)0x0) {\n                psVar7[-2] = (size_type)__dest;\n                *psVar7 = sVar2;\n                goto LAB_002d717a;\n              }\n            }\n            psVar7[-2] = (size_type)psVar7;\n          }\nLAB_002d717a:\n          paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + -0x20);\n          psVar7[-1] = 0;\n          *(undefined1 *)psVar7[-2] = 0;\n          lVar23 = lVar23 + -1;\n          psVar7 = psVar7 + -4;\n        } while (lVar23 != 0);\n      }" if (parenthesized_expression "(0 < lVar17 - (long)__position)" ( (binary_expression "0 < lVar17 - (long)__position" number_literal < (binary_expression "lVar17 - (long)__position" identifier - (cast_expression "(long)__position" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) )) (compound_statement "{\n        do {\n          psVar3 = (size_type *)psVar7[-2];\n          __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n          if (psVar3 == psVar7) {\n            __n = psVar7[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(char *)__dest = (char)*psVar7;\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n              else {\n                memcpy(__dest,psVar7,__n);\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n            }\n            *(size_t *)(paVar21->_M_local_buf + -8) = __n;\n            *(undefined1 *)((long)__dest + __n) = 0;\n          }\n          else {\n            if (paVar21 ==\n                (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)__dest) {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n            }\n            else {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              sVar2 = paVar21->_M_allocated_capacity;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n              if (__dest != (undefined8 *)0x0) {\n                psVar7[-2] = (size_type)__dest;\n                *psVar7 = sVar2;\n                goto LAB_002d717a;\n              }\n            }\n            psVar7[-2] = (size_type)psVar7;\n          }\nLAB_002d717a:\n          paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + -0x20);\n          psVar7[-1] = 0;\n          *(undefined1 *)psVar7[-2] = 0;\n          lVar23 = lVar23 + -1;\n          psVar7 = psVar7 + -4;\n        } while (lVar23 != 0);\n      }" { (do_statement "do {\n          psVar3 = (size_type *)psVar7[-2];\n          __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n          if (psVar3 == psVar7) {\n            __n = psVar7[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(char *)__dest = (char)*psVar7;\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n              else {\n                memcpy(__dest,psVar7,__n);\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n            }\n            *(size_t *)(paVar21->_M_local_buf + -8) = __n;\n            *(undefined1 *)((long)__dest + __n) = 0;\n          }\n          else {\n            if (paVar21 ==\n                (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)__dest) {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n            }\n            else {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              sVar2 = paVar21->_M_allocated_capacity;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n              if (__dest != (undefined8 *)0x0) {\n                psVar7[-2] = (size_type)__dest;\n                *psVar7 = sVar2;\n                goto LAB_002d717a;\n              }\n            }\n            psVar7[-2] = (size_type)psVar7;\n          }\nLAB_002d717a:\n          paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + -0x20);\n          psVar7[-1] = 0;\n          *(undefined1 *)psVar7[-2] = 0;\n          lVar23 = lVar23 + -1;\n          psVar7 = psVar7 + -4;\n        } while (lVar23 != 0);" do (compound_statement "{\n          psVar3 = (size_type *)psVar7[-2];\n          __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n          if (psVar3 == psVar7) {\n            __n = psVar7[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(char *)__dest = (char)*psVar7;\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n              else {\n                memcpy(__dest,psVar7,__n);\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n            }\n            *(size_t *)(paVar21->_M_local_buf + -8) = __n;\n            *(undefined1 *)((long)__dest + __n) = 0;\n          }\n          else {\n            if (paVar21 ==\n                (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)__dest) {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n            }\n            else {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              sVar2 = paVar21->_M_allocated_capacity;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n              if (__dest != (undefined8 *)0x0) {\n                psVar7[-2] = (size_type)__dest;\n                *psVar7 = sVar2;\n                goto LAB_002d717a;\n              }\n            }\n            psVar7[-2] = (size_type)psVar7;\n          }\nLAB_002d717a:\n          paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + -0x20);\n          psVar7[-1] = 0;\n          *(undefined1 *)psVar7[-2] = 0;\n          lVar23 = lVar23 + -1;\n          psVar7 = psVar7 + -4;\n        }" { (expression_statement "psVar3 = (size_type *)psVar7[-2];" (assignment_expression "psVar3 = (size_type *)psVar7[-2]" identifier = (cast_expression "(size_type *)psVar7[-2]" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "psVar7[-2]" identifier [ number_literal ]))) ;) (expression_statement "__dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);" (assignment_expression "__dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10)" identifier = (pointer_expression "*(undefined8 **)(paVar21->_M_local_buf + -0x10)" * (cast_expression "(undefined8 **)(paVar21->_M_local_buf + -0x10)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(paVar21->_M_local_buf + -0x10)" ( (binary_expression "paVar21->_M_local_buf + -0x10" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) (if_statement "if (psVar3 == psVar7) {\n            __n = psVar7[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(char *)__dest = (char)*psVar7;\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n              else {\n                memcpy(__dest,psVar7,__n);\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n            }\n            *(size_t *)(paVar21->_M_local_buf + -8) = __n;\n            *(undefined1 *)((long)__dest + __n) = 0;\n          }\n          else {\n            if (paVar21 ==\n                (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)__dest) {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n            }\n            else {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              sVar2 = paVar21->_M_allocated_capacity;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n              if (__dest != (undefined8 *)0x0) {\n                psVar7[-2] = (size_type)__dest;\n                *psVar7 = sVar2;\n                goto LAB_002d717a;\n              }\n            }\n            psVar7[-2] = (size_type)psVar7;\n          }" if (parenthesized_expression "(psVar3 == psVar7)" ( (binary_expression "psVar3 == psVar7" identifier == identifier) )) (compound_statement "{\n            __n = psVar7[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(char *)__dest = (char)*psVar7;\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n              else {\n                memcpy(__dest,psVar7,__n);\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n            }\n            *(size_t *)(paVar21->_M_local_buf + -8) = __n;\n            *(undefined1 *)((long)__dest + __n) = 0;\n          }" { (expression_statement "__n = psVar7[-1];" (assignment_expression "__n = psVar7[-1]" identifier = (subscript_expression "psVar7[-1]" identifier [ number_literal ])) ;) (if_statement "if (__n != 0) {\n              if (__n == 1) {\n                *(char *)__dest = (char)*psVar7;\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n              else {\n                memcpy(__dest,psVar7,__n);\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n            }" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (compound_statement "{\n              if (__n == 1) {\n                *(char *)__dest = (char)*psVar7;\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n              else {\n                memcpy(__dest,psVar7,__n);\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n            }" { (if_statement "if (__n == 1) {\n                *(char *)__dest = (char)*psVar7;\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }\n              else {\n                memcpy(__dest,psVar7,__n);\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }" if (parenthesized_expression "(__n == 1)" ( (binary_expression "__n == 1" identifier == number_literal) )) (compound_statement "{\n                *(char *)__dest = (char)*psVar7;\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }" { (expression_statement "*(char *)__dest = (char)*psVar7;" (assignment_expression "*(char *)__dest = (char)*psVar7" (pointer_expression "*(char *)__dest" * (cast_expression "(char *)__dest" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(char)*psVar7" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*psVar7" * identifier))) ;) (expression_statement "__dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);" (assignment_expression "__dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10)" identifier = (pointer_expression "*(undefined8 **)(paVar21->_M_local_buf + -0x10)" * (cast_expression "(undefined8 **)(paVar21->_M_local_buf + -0x10)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(paVar21->_M_local_buf + -0x10)" ( (binary_expression "paVar21->_M_local_buf + -0x10" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "__n = psVar7[-1];" (assignment_expression "__n = psVar7[-1]" identifier = (subscript_expression "psVar7[-1]" identifier [ number_literal ])) ;) }) (else_clause "else {\n                memcpy(__dest,psVar7,__n);\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }" else (compound_statement "{\n                memcpy(__dest,psVar7,__n);\n                __dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);\n                __n = psVar7[-1];\n              }" { (expression_statement "memcpy(__dest,psVar7,__n);" (call_expression "memcpy(__dest,psVar7,__n)" identifier (argument_list "(__dest,psVar7,__n)" ( identifier , identifier , identifier ))) ;) (expression_statement "__dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10);" (assignment_expression "__dest = *(undefined8 **)(paVar21->_M_local_buf + -0x10)" identifier = (pointer_expression "*(undefined8 **)(paVar21->_M_local_buf + -0x10)" * (cast_expression "(undefined8 **)(paVar21->_M_local_buf + -0x10)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(paVar21->_M_local_buf + -0x10)" ( (binary_expression "paVar21->_M_local_buf + -0x10" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "__n = psVar7[-1];" (assignment_expression "__n = psVar7[-1]" identifier = (subscript_expression "psVar7[-1]" identifier [ number_literal ])) ;) }))) })) (expression_statement "*(size_t *)(paVar21->_M_local_buf + -8) = __n;" (assignment_expression "*(size_t *)(paVar21->_M_local_buf + -8) = __n" (pointer_expression "*(size_t *)(paVar21->_M_local_buf + -8)" * (cast_expression "(size_t *)(paVar21->_M_local_buf + -8)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar21->_M_local_buf + -8)" ( (binary_expression "paVar21->_M_local_buf + -8" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)((long)__dest + __n) = 0;" (assignment_expression "*(undefined1 *)((long)__dest + __n) = 0" (pointer_expression "*(undefined1 *)((long)__dest + __n)" * (cast_expression "(undefined1 *)((long)__dest + __n)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest + __n)" ( (binary_expression "(long)__dest + __n" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) }) (else_clause "else {\n            if (paVar21 ==\n                (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)__dest) {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n            }\n            else {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              sVar2 = paVar21->_M_allocated_capacity;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n              if (__dest != (undefined8 *)0x0) {\n                psVar7[-2] = (size_type)__dest;\n                *psVar7 = sVar2;\n                goto LAB_002d717a;\n              }\n            }\n            psVar7[-2] = (size_type)psVar7;\n          }" else (compound_statement "{\n            if (paVar21 ==\n                (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)__dest) {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n            }\n            else {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              sVar2 = paVar21->_M_allocated_capacity;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n              if (__dest != (undefined8 *)0x0) {\n                psVar7[-2] = (size_type)__dest;\n                *psVar7 = sVar2;\n                goto LAB_002d717a;\n              }\n            }\n            psVar7[-2] = (size_type)psVar7;\n          }" { (if_statement "if (paVar21 ==\n                (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)__dest) {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n            }\n            else {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              sVar2 = paVar21->_M_allocated_capacity;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n              if (__dest != (undefined8 *)0x0) {\n                psVar7[-2] = (size_type)__dest;\n                *psVar7 = sVar2;\n                goto LAB_002d717a;\n              }\n            }" if (parenthesized_expression "(paVar21 ==\n                (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)__dest)" ( (binary_expression "paVar21 ==\n                (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)__dest)" identifier == (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)__dest)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n                 *)__dest" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n                 *)__dest" identifier * (ERROR ")" )) identifier)) ))) )) (compound_statement "{\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n            }" { (expression_statement "*(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;" (assignment_expression "*(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3" (pointer_expression "*(size_type **)(paVar21->_M_local_buf + -0x10)" * (cast_expression "(size_type **)(paVar21->_M_local_buf + -0x10)" ( (type_descriptor "size_type **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(paVar21->_M_local_buf + -0x10)" ( (binary_expression "paVar21->_M_local_buf + -0x10" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];" (assignment_expression "*(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1]" (pointer_expression "*(size_type *)(paVar21->_M_local_buf + -8)" * (cast_expression "(size_type *)(paVar21->_M_local_buf + -8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar21->_M_local_buf + -8)" ( (binary_expression "paVar21->_M_local_buf + -8" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) )))) = (subscript_expression "psVar7[-1]" identifier [ number_literal ])) ;) (expression_statement "paVar21->_M_allocated_capacity = *psVar7;" (assignment_expression "paVar21->_M_allocated_capacity = *psVar7" (field_expression "paVar21->_M_allocated_capacity" identifier -> field_identifier) = (pointer_expression "*psVar7" * identifier)) ;) }) (else_clause "else {\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              sVar2 = paVar21->_M_allocated_capacity;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n              if (__dest != (undefined8 *)0x0) {\n                psVar7[-2] = (size_type)__dest;\n                *psVar7 = sVar2;\n                goto LAB_002d717a;\n              }\n            }" else (compound_statement "{\n              *(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;\n              sVar2 = paVar21->_M_allocated_capacity;\n              *(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];\n              paVar21->_M_allocated_capacity = *psVar7;\n              if (__dest != (undefined8 *)0x0) {\n                psVar7[-2] = (size_type)__dest;\n                *psVar7 = sVar2;\n                goto LAB_002d717a;\n              }\n            }" { (expression_statement "*(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3;" (assignment_expression "*(size_type **)(paVar21->_M_local_buf + -0x10) = psVar3" (pointer_expression "*(size_type **)(paVar21->_M_local_buf + -0x10)" * (cast_expression "(size_type **)(paVar21->_M_local_buf + -0x10)" ( (type_descriptor "size_type **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(paVar21->_M_local_buf + -0x10)" ( (binary_expression "paVar21->_M_local_buf + -0x10" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "sVar2 = paVar21->_M_allocated_capacity;" (assignment_expression "sVar2 = paVar21->_M_allocated_capacity" identifier = (field_expression "paVar21->_M_allocated_capacity" identifier -> field_identifier)) ;) (expression_statement "*(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1];" (assignment_expression "*(size_type *)(paVar21->_M_local_buf + -8) = psVar7[-1]" (pointer_expression "*(size_type *)(paVar21->_M_local_buf + -8)" * (cast_expression "(size_type *)(paVar21->_M_local_buf + -8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar21->_M_local_buf + -8)" ( (binary_expression "paVar21->_M_local_buf + -8" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) )))) = (subscript_expression "psVar7[-1]" identifier [ number_literal ])) ;) (expression_statement "paVar21->_M_allocated_capacity = *psVar7;" (assignment_expression "paVar21->_M_allocated_capacity = *psVar7" (field_expression "paVar21->_M_allocated_capacity" identifier -> field_identifier) = (pointer_expression "*psVar7" * identifier)) ;) (if_statement "if (__dest != (undefined8 *)0x0) {\n                psVar7[-2] = (size_type)__dest;\n                *psVar7 = sVar2;\n                goto LAB_002d717a;\n              }" if (parenthesized_expression "(__dest != (undefined8 *)0x0)" ( (binary_expression "__dest != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                psVar7[-2] = (size_type)__dest;\n                *psVar7 = sVar2;\n                goto LAB_002d717a;\n              }" { (expression_statement "psVar7[-2] = (size_type)__dest;" (assignment_expression "psVar7[-2] = (size_type)__dest" (subscript_expression "psVar7[-2]" identifier [ number_literal ]) = (cast_expression "(size_type)__dest" ( (type_descriptor "size_type" type_identifier) ) identifier)) ;) (expression_statement "*psVar7 = sVar2;" (assignment_expression "*psVar7 = sVar2" (pointer_expression "*psVar7" * identifier) = identifier) ;) (goto_statement "goto LAB_002d717a;" goto statement_identifier ;) })) }))) (expression_statement "psVar7[-2] = (size_type)psVar7;" (assignment_expression "psVar7[-2] = (size_type)psVar7" (subscript_expression "psVar7[-2]" identifier [ number_literal ]) = (cast_expression "(size_type)psVar7" ( (type_descriptor "size_type" type_identifier) ) identifier)) ;) }))) (labeled_statement "LAB_002d717a:\n          paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + -0x20);" statement_identifier : (expression_statement "paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + -0x20);" (assignment_expression "paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + -0x20)" identifier = (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + -0x20)" (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) (ERROR "*" *) )) (argument_list "(paVar21->_M_local_buf + -0x20)" ( (binary_expression "paVar21->_M_local_buf + -0x20" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) )))) ;)) (expression_statement "psVar7[-1] = 0;" (assignment_expression "psVar7[-1] = 0" (subscript_expression "psVar7[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)psVar7[-2] = 0;" (assignment_expression "*(undefined1 *)psVar7[-2] = 0" (pointer_expression "*(undefined1 *)psVar7[-2]" * (cast_expression "(undefined1 *)psVar7[-2]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "psVar7[-2]" identifier [ number_literal ]))) = number_literal) ;) (expression_statement "lVar23 = lVar23 + -1;" (assignment_expression "lVar23 = lVar23 + -1" identifier = (binary_expression "lVar23 + -1" identifier + number_literal)) ;) (expression_statement "psVar7 = psVar7 + -4;" (assignment_expression "psVar7 = psVar7 + -4" identifier = (binary_expression "psVar7 + -4" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar23 != 0)" ( (binary_expression "lVar23 != 0" identifier != number_literal) )) ;) })) (if_statement "if (0 < lVar11) {\n        do {\n          std::string::_M_assign((string *)__position,__first);\n          uVar6 = uVar6 - 1;\n          __first = __first + 0x20;\n          __position = __position + 1;\n        } while (uVar6 != 0);\n        return;\n      }" if (parenthesized_expression "(0 < lVar11)" ( (binary_expression "0 < lVar11" number_literal < identifier) )) (compound_statement "{\n        do {\n          std::string::_M_assign((string *)__position,__first);\n          uVar6 = uVar6 - 1;\n          __first = __first + 0x20;\n          __position = __position + 1;\n        } while (uVar6 != 0);\n        return;\n      }" { (do_statement "do {\n          std::string::_M_assign((string *)__position,__first);\n          uVar6 = uVar6 - 1;\n          __first = __first + 0x20;\n          __position = __position + 1;\n        } while (uVar6 != 0);" do (compound_statement "{\n          std::string::_M_assign((string *)__position,__first);\n          uVar6 = uVar6 - 1;\n          __first = __first + 0x20;\n          __position = __position + 1;\n        }" { (labeled_statement "std::string::_M_assign((string *)__position,__first);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_assign((string *)__position,__first);" statement_identifier : (ERROR ":" :) (expression_statement "_M_assign((string *)__position,__first);" (call_expression "_M_assign((string *)__position,__first)" identifier (argument_list "((string *)__position,__first)" ( (cast_expression "(string *)__position" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;))) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "__first = __first + 0x20;" (assignment_expression "__first = __first + 0x20" identifier = (binary_expression "__first + 0x20" identifier + number_literal)) ;) (expression_statement "__position = __position + 1;" (assignment_expression "__position = __position + 1" identifier = (binary_expression "__position + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\n      psVar18 = __first + lVar17;\n      pbVar10 = pbVar22;\n      pbVar9 = pbVar22;\n      if (__last != psVar18) {\n        do {\n          (pbVar9->_M_dataplus)._M_p = (pointer)&pbVar9->field_2;\n                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */\n          __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char*>(pbVar9,*(long *)psVar18,*(long *)(psVar18 + 8) + *(long *)psVar18);\n          psVar18 = psVar18 + 0x20;\n          pbVar9 = pbVar9 + 1;\n        } while (__last != psVar18);\n        pbVar10 = (this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )._M_impl._M_finish;\n      }\n      pbVar10 = pbVar10 + (uVar6 - local_68);\n      (this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      )._M_impl._M_finish = pbVar10;\n      if (pbVar22 != __position) {\n        paVar21 = &__position->field_2;\n        pbVar14 = pbVar10;\n        do {\n          (pbVar14->_M_dataplus)._M_p = (pointer)&pbVar14->field_2;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)*(pointer *)(paVar21->_M_local_buf + -0x10) == paVar21) {\n            uVar5 = *(undefined8 *)(paVar21->_M_local_buf + 8);\n            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n            *(undefined8 *)((long)&pbVar14->field_2 + 8) = uVar5;\n          }\n          else {\n            (pbVar14->_M_dataplus)._M_p = *(pointer *)(paVar21->_M_local_buf + -0x10);\n            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n          }\n          pbVar13 = pbVar14 + 1;\n          pbVar14->_M_string_length = *(size_type *)(paVar21->_M_local_buf + -8);\n          *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar21->_M_local_buf + -0x10) = paVar21;\n          *(char *)((long)paVar21 + -8) = '\0';\n          *(char *)((long)paVar21 + -7) = '\0';\n          *(char *)((long)paVar21 + -6) = '\0';\n          *(char *)((long)paVar21 + -5) = '\0';\n          *(char *)((long)paVar21 + -4) = '\0';\n          *(char *)((long)paVar21 + -3) = '\0';\n          *(char *)((long)paVar21 + -2) = '\0';\n          *(char *)((long)paVar21 + -1) = '\0';\n          paVar21->_M_local_buf[0] = '\0';\n          paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + 0x20);\n          pbVar14 = pbVar13;\n        } while (pbVar13 !=\n                 (pointer)((long)&pbVar10[1]._M_dataplus._M_p +\n                          ((ulong)((long)pbVar22 + (-0x20 - (long)__position)) & 0xffffffffffffffe0)\n                          ));\n        pbVar10 = (this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )._M_impl._M_finish;\n      }\n      (this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      )._M_impl._M_finish = (pointer)((long)pbVar10 + lVar17);\n      if (0 < lVar17) {\n        do {\n          std::string::_M_assign((string *)__position,__first);\n          local_68 = local_68 - 1;\n          __first = __first + 0x20;\n          __position = __position + 1;\n        } while (local_68 != 0);\n      }\n    }" else (compound_statement "{\n      psVar18 = __first + lVar17;\n      pbVar10 = pbVar22;\n      pbVar9 = pbVar22;\n      if (__last != psVar18) {\n        do {\n          (pbVar9->_M_dataplus)._M_p = (pointer)&pbVar9->field_2;\n                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */\n          __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char*>(pbVar9,*(long *)psVar18,*(long *)(psVar18 + 8) + *(long *)psVar18);\n          psVar18 = psVar18 + 0x20;\n          pbVar9 = pbVar9 + 1;\n        } while (__last != psVar18);\n        pbVar10 = (this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )._M_impl._M_finish;\n      }\n      pbVar10 = pbVar10 + (uVar6 - local_68);\n      (this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      )._M_impl._M_finish = pbVar10;\n      if (pbVar22 != __position) {\n        paVar21 = &__position->field_2;\n        pbVar14 = pbVar10;\n        do {\n          (pbVar14->_M_dataplus)._M_p = (pointer)&pbVar14->field_2;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)*(pointer *)(paVar21->_M_local_buf + -0x10) == paVar21) {\n            uVar5 = *(undefined8 *)(paVar21->_M_local_buf + 8);\n            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n            *(undefined8 *)((long)&pbVar14->field_2 + 8) = uVar5;\n          }\n          else {\n            (pbVar14->_M_dataplus)._M_p = *(pointer *)(paVar21->_M_local_buf + -0x10);\n            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n          }\n          pbVar13 = pbVar14 + 1;\n          pbVar14->_M_string_length = *(size_type *)(paVar21->_M_local_buf + -8);\n          *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar21->_M_local_buf + -0x10) = paVar21;\n          *(char *)((long)paVar21 + -8) = '\0';\n          *(char *)((long)paVar21 + -7) = '\0';\n          *(char *)((long)paVar21 + -6) = '\0';\n          *(char *)((long)paVar21 + -5) = '\0';\n          *(char *)((long)paVar21 + -4) = '\0';\n          *(char *)((long)paVar21 + -3) = '\0';\n          *(char *)((long)paVar21 + -2) = '\0';\n          *(char *)((long)paVar21 + -1) = '\0';\n          paVar21->_M_local_buf[0] = '\0';\n          paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + 0x20);\n          pbVar14 = pbVar13;\n        } while (pbVar13 !=\n                 (pointer)((long)&pbVar10[1]._M_dataplus._M_p +\n                          ((ulong)((long)pbVar22 + (-0x20 - (long)__position)) & 0xffffffffffffffe0)\n                          ));\n        pbVar10 = (this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )._M_impl._M_finish;\n      }\n      (this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      )._M_impl._M_finish = (pointer)((long)pbVar10 + lVar17);\n      if (0 < lVar17) {\n        do {\n          std::string::_M_assign((string *)__position,__first);\n          local_68 = local_68 - 1;\n          __first = __first + 0x20;\n          __position = __position + 1;\n        } while (local_68 != 0);\n      }\n    }" { (expression_statement "psVar18 = __first + lVar17;" (assignment_expression "psVar18 = __first + lVar17" identifier = (binary_expression "__first + lVar17" identifier + identifier)) ;) (expression_statement "pbVar10 = pbVar22;" (assignment_expression "pbVar10 = pbVar22" identifier = identifier) ;) (expression_statement "pbVar9 = pbVar22;" (assignment_expression "pbVar9 = pbVar22" identifier = identifier) ;) (if_statement "if (__last != psVar18) {\n        do {\n          (pbVar9->_M_dataplus)._M_p = (pointer)&pbVar9->field_2;\n                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */\n          __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char*>(pbVar9,*(long *)psVar18,*(long *)(psVar18 + 8) + *(long *)psVar18);\n          psVar18 = psVar18 + 0x20;\n          pbVar9 = pbVar9 + 1;\n        } while (__last != psVar18);\n        pbVar10 = (this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )._M_impl._M_finish;\n      }" if (parenthesized_expression "(__last != psVar18)" ( (binary_expression "__last != psVar18" identifier != identifier) )) (compound_statement "{\n        do {\n          (pbVar9->_M_dataplus)._M_p = (pointer)&pbVar9->field_2;\n                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */\n          __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char*>(pbVar9,*(long *)psVar18,*(long *)(psVar18 + 8) + *(long *)psVar18);\n          psVar18 = psVar18 + 0x20;\n          pbVar9 = pbVar9 + 1;\n        } while (__last != psVar18);\n        pbVar10 = (this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )._M_impl._M_finish;\n      }" { (do_statement "do {\n          (pbVar9->_M_dataplus)._M_p = (pointer)&pbVar9->field_2;\n                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */\n          __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char*>(pbVar9,*(long *)psVar18,*(long *)(psVar18 + 8) + *(long *)psVar18);\n          psVar18 = psVar18 + 0x20;\n          pbVar9 = pbVar9 + 1;\n        } while (__last != psVar18);" do (compound_statement "{\n          (pbVar9->_M_dataplus)._M_p = (pointer)&pbVar9->field_2;\n                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */\n          __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char*>(pbVar9,*(long *)psVar18,*(long *)(psVar18 + 8) + *(long *)psVar18);\n          psVar18 = psVar18 + 0x20;\n          pbVar9 = pbVar9 + 1;\n        }" { (expression_statement "(pbVar9->_M_dataplus)._M_p = (pointer)&pbVar9->field_2;" (assignment_expression "(pbVar9->_M_dataplus)._M_p = (pointer)&pbVar9->field_2" (field_expression "(pbVar9->_M_dataplus)._M_p" (parenthesized_expression "(pbVar9->_M_dataplus)" ( (field_expression "pbVar9->_M_dataplus" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(pointer)&pbVar9->field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "pbVar9->field_2" identifier -> field_identifier))) ;) comment (ERROR "__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>::\n          _M_construct<char*>(pbVar9,*(long *)psVar18,*(long *)(psVar18 + 8) + *(long *)psVar18);" (binary_expression "allocator<char>_>::\n          _M_construct<char*>(pbVar9,*(long *)psVar18,*(long *)(psVar18 + 8) + *(long *)psVar18)" (binary_expression "allocator<char>_>::\n          _M_construct<char" (binary_expression "allocator<char>_>::\n          _M_construct" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "::" : :) identifier) < identifier) (ERROR "*" *) > (parenthesized_expression "(pbVar9,*(long *)psVar18,*(long *)(psVar18 + 8) + *(long *)psVar18)" ( (comma_expression "pbVar9,*(long *)psVar18,*(long *)(psVar18 + 8) + *(long *)psVar18" identifier , (comma_expression "*(long *)psVar18,*(long *)(psVar18 + 8) + *(long *)psVar18" (pointer_expression "*(long *)psVar18" * (cast_expression "(long *)psVar18" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "*(long *)(psVar18 + 8) + *(long *)psVar18" (pointer_expression "*(long *)(psVar18 + 8)" * (cast_expression "(long *)(psVar18 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar18 + 8)" ( (binary_expression "psVar18 + 8" identifier + number_literal) )))) + (pointer_expression "*(long *)psVar18" * (cast_expression "(long *)psVar18" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier))))) ))) ;) (expression_statement "psVar18 = psVar18 + 0x20;" (assignment_expression "psVar18 = psVar18 + 0x20" identifier = (binary_expression "psVar18 + 0x20" identifier + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(__last != psVar18)" ( (binary_expression "__last != psVar18" identifier != identifier) )) ;) (expression_statement "pbVar10 = (this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )._M_impl._M_finish;" (assignment_expression "pbVar10 = (this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )._M_impl._M_finish" identifier = (field_expression "(this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )._M_impl._M_finish" (field_expression "(this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )._M_impl" (parenthesized_expression "(this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )" ( (ERROR "this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std" (binary_expression "this->\n                  super__Vector_base<std::__cxx11::basic_string<char" (binary_expression "this->\n                  super__Vector_base<std" (field_expression "this->\n                  super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) })) (expression_statement "pbVar10 = pbVar10 + (uVar6 - local_68);" (assignment_expression "pbVar10 = pbVar10 + (uVar6 - local_68)" identifier = (binary_expression "pbVar10 + (uVar6 - local_68)" identifier + (parenthesized_expression "(uVar6 - local_68)" ( (binary_expression "uVar6 - local_68" identifier - identifier) )))) ;) (expression_statement "(this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      )._M_impl._M_finish = pbVar10;" (assignment_expression "(this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      )._M_impl._M_finish = pbVar10" (field_expression "(this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      )._M_impl._M_finish" (field_expression "(this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      )._M_impl" (parenthesized_expression "(this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      )" ( (ERROR "this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std" (binary_expression "this->\n      super__Vector_base<std::__cxx11::basic_string<char" (binary_expression "this->\n      super__Vector_base<std" (field_expression "this->\n      super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier) = identifier) ;) (if_statement "if (pbVar22 != __position) {\n        paVar21 = &__position->field_2;\n        pbVar14 = pbVar10;\n        do {\n          (pbVar14->_M_dataplus)._M_p = (pointer)&pbVar14->field_2;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)*(pointer *)(paVar21->_M_local_buf + -0x10) == paVar21) {\n            uVar5 = *(undefined8 *)(paVar21->_M_local_buf + 8);\n            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n            *(undefined8 *)((long)&pbVar14->field_2 + 8) = uVar5;\n          }\n          else {\n            (pbVar14->_M_dataplus)._M_p = *(pointer *)(paVar21->_M_local_buf + -0x10);\n            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n          }\n          pbVar13 = pbVar14 + 1;\n          pbVar14->_M_string_length = *(size_type *)(paVar21->_M_local_buf + -8);\n          *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar21->_M_local_buf + -0x10) = paVar21;\n          *(char *)((long)paVar21 + -8) = '\0';\n          *(char *)((long)paVar21 + -7) = '\0';\n          *(char *)((long)paVar21 + -6) = '\0';\n          *(char *)((long)paVar21 + -5) = '\0';\n          *(char *)((long)paVar21 + -4) = '\0';\n          *(char *)((long)paVar21 + -3) = '\0';\n          *(char *)((long)paVar21 + -2) = '\0';\n          *(char *)((long)paVar21 + -1) = '\0';\n          paVar21->_M_local_buf[0] = '\0';\n          paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + 0x20);\n          pbVar14 = pbVar13;\n        } while (pbVar13 !=\n                 (pointer)((long)&pbVar10[1]._M_dataplus._M_p +\n                          ((ulong)((long)pbVar22 + (-0x20 - (long)__position)) & 0xffffffffffffffe0)\n                          ));\n        pbVar10 = (this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )._M_impl._M_finish;\n      }" if (parenthesized_expression "(pbVar22 != __position)" ( (binary_expression "pbVar22 != __position" identifier != identifier) )) (compound_statement "{\n        paVar21 = &__position->field_2;\n        pbVar14 = pbVar10;\n        do {\n          (pbVar14->_M_dataplus)._M_p = (pointer)&pbVar14->field_2;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)*(pointer *)(paVar21->_M_local_buf + -0x10) == paVar21) {\n            uVar5 = *(undefined8 *)(paVar21->_M_local_buf + 8);\n            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n            *(undefined8 *)((long)&pbVar14->field_2 + 8) = uVar5;\n          }\n          else {\n            (pbVar14->_M_dataplus)._M_p = *(pointer *)(paVar21->_M_local_buf + -0x10);\n            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n          }\n          pbVar13 = pbVar14 + 1;\n          pbVar14->_M_string_length = *(size_type *)(paVar21->_M_local_buf + -8);\n          *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar21->_M_local_buf + -0x10) = paVar21;\n          *(char *)((long)paVar21 + -8) = '\0';\n          *(char *)((long)paVar21 + -7) = '\0';\n          *(char *)((long)paVar21 + -6) = '\0';\n          *(char *)((long)paVar21 + -5) = '\0';\n          *(char *)((long)paVar21 + -4) = '\0';\n          *(char *)((long)paVar21 + -3) = '\0';\n          *(char *)((long)paVar21 + -2) = '\0';\n          *(char *)((long)paVar21 + -1) = '\0';\n          paVar21->_M_local_buf[0] = '\0';\n          paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + 0x20);\n          pbVar14 = pbVar13;\n        } while (pbVar13 !=\n                 (pointer)((long)&pbVar10[1]._M_dataplus._M_p +\n                          ((ulong)((long)pbVar22 + (-0x20 - (long)__position)) & 0xffffffffffffffe0)\n                          ));\n        pbVar10 = (this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )._M_impl._M_finish;\n      }" { (expression_statement "paVar21 = &__position->field_2;" (assignment_expression "paVar21 = &__position->field_2" identifier = (pointer_expression "&__position->field_2" & (field_expression "__position->field_2" identifier -> field_identifier))) ;) (expression_statement "pbVar14 = pbVar10;" (assignment_expression "pbVar14 = pbVar10" identifier = identifier) ;) (do_statement "do {\n          (pbVar14->_M_dataplus)._M_p = (pointer)&pbVar14->field_2;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)*(pointer *)(paVar21->_M_local_buf + -0x10) == paVar21) {\n            uVar5 = *(undefined8 *)(paVar21->_M_local_buf + 8);\n            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n            *(undefined8 *)((long)&pbVar14->field_2 + 8) = uVar5;\n          }\n          else {\n            (pbVar14->_M_dataplus)._M_p = *(pointer *)(paVar21->_M_local_buf + -0x10);\n            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n          }\n          pbVar13 = pbVar14 + 1;\n          pbVar14->_M_string_length = *(size_type *)(paVar21->_M_local_buf + -8);\n          *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar21->_M_local_buf + -0x10) = paVar21;\n          *(char *)((long)paVar21 + -8) = '\0';\n          *(char *)((long)paVar21 + -7) = '\0';\n          *(char *)((long)paVar21 + -6) = '\0';\n          *(char *)((long)paVar21 + -5) = '\0';\n          *(char *)((long)paVar21 + -4) = '\0';\n          *(char *)((long)paVar21 + -3) = '\0';\n          *(char *)((long)paVar21 + -2) = '\0';\n          *(char *)((long)paVar21 + -1) = '\0';\n          paVar21->_M_local_buf[0] = '\0';\n          paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + 0x20);\n          pbVar14 = pbVar13;\n        } while (pbVar13 !=\n                 (pointer)((long)&pbVar10[1]._M_dataplus._M_p +\n                          ((ulong)((long)pbVar22 + (-0x20 - (long)__position)) & 0xffffffffffffffe0)\n                          ));" do (compound_statement "{\n          (pbVar14->_M_dataplus)._M_p = (pointer)&pbVar14->field_2;\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)*(pointer *)(paVar21->_M_local_buf + -0x10) == paVar21) {\n            uVar5 = *(undefined8 *)(paVar21->_M_local_buf + 8);\n            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n            *(undefined8 *)((long)&pbVar14->field_2 + 8) = uVar5;\n          }\n          else {\n            (pbVar14->_M_dataplus)._M_p = *(pointer *)(paVar21->_M_local_buf + -0x10);\n            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n          }\n          pbVar13 = pbVar14 + 1;\n          pbVar14->_M_string_length = *(size_type *)(paVar21->_M_local_buf + -8);\n          *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar21->_M_local_buf + -0x10) = paVar21;\n          *(char *)((long)paVar21 + -8) = '\0';\n          *(char *)((long)paVar21 + -7) = '\0';\n          *(char *)((long)paVar21 + -6) = '\0';\n          *(char *)((long)paVar21 + -5) = '\0';\n          *(char *)((long)paVar21 + -4) = '\0';\n          *(char *)((long)paVar21 + -3) = '\0';\n          *(char *)((long)paVar21 + -2) = '\0';\n          *(char *)((long)paVar21 + -1) = '\0';\n          paVar21->_M_local_buf[0] = '\0';\n          paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + 0x20);\n          pbVar14 = pbVar13;\n        }" { (expression_statement "(pbVar14->_M_dataplus)._M_p = (pointer)&pbVar14->field_2;" (assignment_expression "(pbVar14->_M_dataplus)._M_p = (pointer)&pbVar14->field_2" (field_expression "(pbVar14->_M_dataplus)._M_p" (parenthesized_expression "(pbVar14->_M_dataplus)" ( (field_expression "pbVar14->_M_dataplus" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(pointer)&pbVar14->field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "pbVar14->field_2" identifier -> field_identifier))) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)*(pointer *)(paVar21->_M_local_buf + -0x10) == paVar21) {\n            uVar5 = *(undefined8 *)(paVar21->_M_local_buf + 8);\n            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n            *(undefined8 *)((long)&pbVar14->field_2 + 8) = uVar5;\n          }\n          else {\n            (pbVar14->_M_dataplus)._M_p = *(pointer *)(paVar21->_M_local_buf + -0x10);\n            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n          }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)*(pointer *)(paVar21->_M_local_buf + -0x10) == paVar21)" ( (binary_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)*(pointer *)(paVar21->_M_local_buf + -0x10) == paVar21" (binary_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)*(pointer *)(paVar21->_M_local_buf + -0x10)" (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) (ERROR "*" *) )) * (cast_expression "(pointer *)(paVar21->_M_local_buf + -0x10)" ( (type_descriptor "pointer *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar21->_M_local_buf + -0x10)" ( (binary_expression "paVar21->_M_local_buf + -0x10" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n            uVar5 = *(undefined8 *)(paVar21->_M_local_buf + 8);\n            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n            *(undefined8 *)((long)&pbVar14->field_2 + 8) = uVar5;\n          }" { (expression_statement "uVar5 = *(undefined8 *)(paVar21->_M_local_buf + 8);" (assignment_expression "uVar5 = *(undefined8 *)(paVar21->_M_local_buf + 8)" identifier = (pointer_expression "*(undefined8 *)(paVar21->_M_local_buf + 8)" * (cast_expression "(undefined8 *)(paVar21->_M_local_buf + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar21->_M_local_buf + 8)" ( (binary_expression "paVar21->_M_local_buf + 8" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "(pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;" (assignment_expression "(pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity" (field_expression "(pbVar14->field_2)._M_allocated_capacity" (parenthesized_expression "(pbVar14->field_2)" ( (field_expression "pbVar14->field_2" identifier -> field_identifier) )) . field_identifier) = (field_expression "paVar21->_M_allocated_capacity" identifier -> field_identifier)) ;) (expression_statement "*(undefined8 *)((long)&pbVar14->field_2 + 8) = uVar5;" (assignment_expression "*(undefined8 *)((long)&pbVar14->field_2 + 8) = uVar5" (pointer_expression "*(undefined8 *)((long)&pbVar14->field_2 + 8)" * (cast_expression "(undefined8 *)((long)&pbVar14->field_2 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&pbVar14->field_2 + 8)" ( (binary_expression "(long)&pbVar14->field_2 + 8" (cast_expression "(long)&pbVar14->field_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&pbVar14->field_2" & (field_expression "pbVar14->field_2" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) }) (else_clause "else {\n            (pbVar14->_M_dataplus)._M_p = *(pointer *)(paVar21->_M_local_buf + -0x10);\n            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n          }" else (compound_statement "{\n            (pbVar14->_M_dataplus)._M_p = *(pointer *)(paVar21->_M_local_buf + -0x10);\n            (pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n          }" { (expression_statement "(pbVar14->_M_dataplus)._M_p = *(pointer *)(paVar21->_M_local_buf + -0x10);" (assignment_expression "(pbVar14->_M_dataplus)._M_p = *(pointer *)(paVar21->_M_local_buf + -0x10)" (field_expression "(pbVar14->_M_dataplus)._M_p" (parenthesized_expression "(pbVar14->_M_dataplus)" ( (field_expression "pbVar14->_M_dataplus" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*(pointer *)(paVar21->_M_local_buf + -0x10)" * (cast_expression "(pointer *)(paVar21->_M_local_buf + -0x10)" ( (type_descriptor "pointer *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar21->_M_local_buf + -0x10)" ( (binary_expression "paVar21->_M_local_buf + -0x10" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "(pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;" (assignment_expression "(pbVar14->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity" (field_expression "(pbVar14->field_2)._M_allocated_capacity" (parenthesized_expression "(pbVar14->field_2)" ( (field_expression "pbVar14->field_2" identifier -> field_identifier) )) . field_identifier) = (field_expression "paVar21->_M_allocated_capacity" identifier -> field_identifier)) ;) }))) (expression_statement "pbVar13 = pbVar14 + 1;" (assignment_expression "pbVar13 = pbVar14 + 1" identifier = (binary_expression "pbVar14 + 1" identifier + number_literal)) ;) (expression_statement "pbVar14->_M_string_length = *(size_type *)(paVar21->_M_local_buf + -8);" (assignment_expression "pbVar14->_M_string_length = *(size_type *)(paVar21->_M_local_buf + -8)" (field_expression "pbVar14->_M_string_length" identifier -> field_identifier) = (pointer_expression "*(size_type *)(paVar21->_M_local_buf + -8)" * (cast_expression "(size_type *)(paVar21->_M_local_buf + -8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar21->_M_local_buf + -8)" ( (binary_expression "paVar21->_M_local_buf + -8" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "*(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar21->_M_local_buf + -0x10) = paVar21;" (assignment_expression "*(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar21->_M_local_buf + -0x10) = paVar21" (pointer_expression "*(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar21->_M_local_buf + -0x10)" * (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar21->_M_local_buf + -0x10)" (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n            **" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n            **" identifier * (pointer_expression "*" * identifier))) )) (argument_list "(paVar21->_M_local_buf + -0x10)" ( (binary_expression "paVar21->_M_local_buf + -0x10" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(char *)((long)paVar21 + -8) = '\0';" (assignment_expression "*(char *)((long)paVar21 + -8) = '\0'" (pointer_expression "*(char *)((long)paVar21 + -8)" * (cast_expression "(char *)((long)paVar21 + -8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar21 + -8)" ( (binary_expression "(long)paVar21 + -8" (cast_expression "(long)paVar21" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(char *)((long)paVar21 + -7) = '\0';" (assignment_expression "*(char *)((long)paVar21 + -7) = '\0'" (pointer_expression "*(char *)((long)paVar21 + -7)" * (cast_expression "(char *)((long)paVar21 + -7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar21 + -7)" ( (binary_expression "(long)paVar21 + -7" (cast_expression "(long)paVar21" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(char *)((long)paVar21 + -6) = '\0';" (assignment_expression "*(char *)((long)paVar21 + -6) = '\0'" (pointer_expression "*(char *)((long)paVar21 + -6)" * (cast_expression "(char *)((long)paVar21 + -6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar21 + -6)" ( (binary_expression "(long)paVar21 + -6" (cast_expression "(long)paVar21" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(char *)((long)paVar21 + -5) = '\0';" (assignment_expression "*(char *)((long)paVar21 + -5) = '\0'" (pointer_expression "*(char *)((long)paVar21 + -5)" * (cast_expression "(char *)((long)paVar21 + -5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar21 + -5)" ( (binary_expression "(long)paVar21 + -5" (cast_expression "(long)paVar21" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(char *)((long)paVar21 + -4) = '\0';" (assignment_expression "*(char *)((long)paVar21 + -4) = '\0'" (pointer_expression "*(char *)((long)paVar21 + -4)" * (cast_expression "(char *)((long)paVar21 + -4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar21 + -4)" ( (binary_expression "(long)paVar21 + -4" (cast_expression "(long)paVar21" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(char *)((long)paVar21 + -3) = '\0';" (assignment_expression "*(char *)((long)paVar21 + -3) = '\0'" (pointer_expression "*(char *)((long)paVar21 + -3)" * (cast_expression "(char *)((long)paVar21 + -3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar21 + -3)" ( (binary_expression "(long)paVar21 + -3" (cast_expression "(long)paVar21" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(char *)((long)paVar21 + -2) = '\0';" (assignment_expression "*(char *)((long)paVar21 + -2) = '\0'" (pointer_expression "*(char *)((long)paVar21 + -2)" * (cast_expression "(char *)((long)paVar21 + -2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar21 + -2)" ( (binary_expression "(long)paVar21 + -2" (cast_expression "(long)paVar21" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(char *)((long)paVar21 + -1) = '\0';" (assignment_expression "*(char *)((long)paVar21 + -1) = '\0'" (pointer_expression "*(char *)((long)paVar21 + -1)" * (cast_expression "(char *)((long)paVar21 + -1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar21 + -1)" ( (binary_expression "(long)paVar21 + -1" (cast_expression "(long)paVar21" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "paVar21->_M_local_buf[0] = '\0';" (assignment_expression "paVar21->_M_local_buf[0] = '\0'" (subscript_expression "paVar21->_M_local_buf[0]" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + 0x20);" (assignment_expression "paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + 0x20)" identifier = (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)(paVar21->_M_local_buf + 0x20)" (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) (ERROR "*" *) )) (argument_list "(paVar21->_M_local_buf + 0x20)" ( (binary_expression "paVar21->_M_local_buf + 0x20" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "pbVar14 = pbVar13;" (assignment_expression "pbVar14 = pbVar13" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar13 !=\n                 (pointer)((long)&pbVar10[1]._M_dataplus._M_p +\n                          ((ulong)((long)pbVar22 + (-0x20 - (long)__position)) & 0xffffffffffffffe0)\n                          ))" ( (binary_expression "pbVar13 !=\n                 (pointer)((long)&pbVar10[1]._M_dataplus._M_p +\n                          ((ulong)((long)pbVar22 + (-0x20 - (long)__position)) & 0xffffffffffffffe0)\n                          )" identifier != (call_expression "(pointer)((long)&pbVar10[1]._M_dataplus._M_p +\n                          ((ulong)((long)pbVar22 + (-0x20 - (long)__position)) & 0xffffffffffffffe0)\n                          )" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((long)&pbVar10[1]._M_dataplus._M_p +\n                          ((ulong)((long)pbVar22 + (-0x20 - (long)__position)) & 0xffffffffffffffe0)\n                          )" ( (binary_expression "(long)&pbVar10[1]._M_dataplus._M_p +\n                          ((ulong)((long)pbVar22 + (-0x20 - (long)__position)) & 0xffffffffffffffe0)" (cast_expression "(long)&pbVar10[1]._M_dataplus._M_p" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&pbVar10[1]._M_dataplus._M_p" & (field_expression "pbVar10[1]._M_dataplus._M_p" (field_expression "pbVar10[1]._M_dataplus" (subscript_expression "pbVar10[1]" identifier [ number_literal ]) . field_identifier) . field_identifier))) + (parenthesized_expression "((ulong)((long)pbVar22 + (-0x20 - (long)__position)) & 0xffffffffffffffe0)" ( (binary_expression "(ulong)((long)pbVar22 + (-0x20 - (long)__position)) & 0xffffffffffffffe0" (call_expression "(ulong)((long)pbVar22 + (-0x20 - (long)__position))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)pbVar22 + (-0x20 - (long)__position))" ( (binary_expression "(long)pbVar22 + (-0x20 - (long)__position)" (cast_expression "(long)pbVar22" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-0x20 - (long)__position)" ( (binary_expression "-0x20 - (long)__position" number_literal - (cast_expression "(long)__position" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ))) & number_literal) ))) )))) )) ;) (expression_statement "pbVar10 = (this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )._M_impl._M_finish;" (assignment_expression "pbVar10 = (this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )._M_impl._M_finish" identifier = (field_expression "(this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )._M_impl._M_finish" (field_expression "(this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )._M_impl" (parenthesized_expression "(this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n                  )" ( (ERROR "this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "this->\n                  super__Vector_base<std::__cxx11::basic_string<char,_std" (binary_expression "this->\n                  super__Vector_base<std::__cxx11::basic_string<char" (binary_expression "this->\n                  super__Vector_base<std" (field_expression "this->\n                  super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) })) (expression_statement "(this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      )._M_impl._M_finish = (pointer)((long)pbVar10 + lVar17);" (assignment_expression "(this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      )._M_impl._M_finish = (pointer)((long)pbVar10 + lVar17)" (field_expression "(this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      )._M_impl._M_finish" (field_expression "(this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      )._M_impl" (parenthesized_expression "(this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      )" ( (ERROR "this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "this->\n      super__Vector_base<std::__cxx11::basic_string<char,_std" (binary_expression "this->\n      super__Vector_base<std::__cxx11::basic_string<char" (binary_expression "this->\n      super__Vector_base<std" (field_expression "this->\n      super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier) = (call_expression "(pointer)((long)pbVar10 + lVar17)" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((long)pbVar10 + lVar17)" ( (binary_expression "(long)pbVar10 + lVar17" (cast_expression "(long)pbVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (if_statement "if (0 < lVar17) {\n        do {\n          std::string::_M_assign((string *)__position,__first);\n          local_68 = local_68 - 1;\n          __first = __first + 0x20;\n          __position = __position + 1;\n        } while (local_68 != 0);\n      }" if (parenthesized_expression "(0 < lVar17)" ( (binary_expression "0 < lVar17" number_literal < identifier) )) (compound_statement "{\n        do {\n          std::string::_M_assign((string *)__position,__first);\n          local_68 = local_68 - 1;\n          __first = __first + 0x20;\n          __position = __position + 1;\n        } while (local_68 != 0);\n      }" { (do_statement "do {\n          std::string::_M_assign((string *)__position,__first);\n          local_68 = local_68 - 1;\n          __first = __first + 0x20;\n          __position = __position + 1;\n        } while (local_68 != 0);" do (compound_statement "{\n          std::string::_M_assign((string *)__position,__first);\n          local_68 = local_68 - 1;\n          __first = __first + 0x20;\n          __position = __position + 1;\n        }" { (labeled_statement "std::string::_M_assign((string *)__position,__first);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_assign((string *)__position,__first);" statement_identifier : (ERROR ":" :) (expression_statement "_M_assign((string *)__position,__first);" (call_expression "_M_assign((string *)__position,__first)" identifier (argument_list "((string *)__position,__first)" ( (cast_expression "(string *)__position" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;))) (expression_statement "local_68 = local_68 - 1;" (assignment_expression "local_68 = local_68 - 1" identifier = (binary_expression "local_68 - 1" identifier - number_literal)) ;) (expression_statement "__first = __first + 0x20;" (assignment_expression "__first = __first + 0x20" identifier = (binary_expression "__first + 0x20" identifier + number_literal)) ;) (expression_statement "__position = __position + 1;" (assignment_expression "__position = __position + 1" identifier = (binary_expression "__position + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_68 != 0)" ( (binary_expression "local_68 != 0" identifier != number_literal) )) ;) })) }))) (return_statement "return;" return ;) })) (expression_statement "pbVar10 = (this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_start;" (assignment_expression "pbVar10 = (this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_start" identifier = (field_expression "(this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_start" (field_expression "(this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl" (parenthesized_expression "(this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )" ( (ERROR "this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std" (binary_expression "this->\n            super__Vector_base<std::__cxx11::basic_string<char" (binary_expression "this->\n            super__Vector_base<std" (field_expression "this->\n            super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "uVar8 = 0x7ffffffffffffff;" (assignment_expression "uVar8 = 0x7ffffffffffffff" identifier = number_literal) ;) (expression_statement "uVar19 = (long)pbVar22 - (long)pbVar10 >> 5;" (assignment_expression "uVar19 = (long)pbVar22 - (long)pbVar10 >> 5" identifier = (binary_expression "(long)pbVar22 - (long)pbVar10 >> 5" (binary_expression "(long)pbVar22 - (long)pbVar10" (cast_expression "(long)pbVar22" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)pbVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (if_statement "if (0x7ffffffffffffff - uVar19 < uVar6) {\n                    /* WARNING: Subroutine does not return */\n    __throw_length_error("vector::_M_range_insert");\n  }" if (parenthesized_expression "(0x7ffffffffffffff - uVar19 < uVar6)" ( (binary_expression "0x7ffffffffffffff - uVar19 < uVar6" (binary_expression "0x7ffffffffffffff - uVar19" number_literal - identifier) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __throw_length_error("vector::_M_range_insert");\n  }" { comment (expression_statement "__throw_length_error("vector::_M_range_insert");" (call_expression "__throw_length_error("vector::_M_range_insert")" identifier (argument_list "("vector::_M_range_insert")" ( (string_literal ""vector::_M_range_insert"" " string_content ") ))) ;) })) (if_statement "if (uVar6 < uVar19) {\n    uVar6 = uVar19;\n  }" if (parenthesized_expression "(uVar6 < uVar19)" ( (binary_expression "uVar6 < uVar19" identifier < identifier) )) (compound_statement "{\n    uVar6 = uVar19;\n  }" { (expression_statement "uVar6 = uVar19;" (assignment_expression "uVar6 = uVar19" identifier = identifier) ;) })) (expression_statement "uVar20 = uVar19 + uVar6;" (assignment_expression "uVar20 = uVar19 + uVar6" identifier = (binary_expression "uVar19 + uVar6" identifier + identifier)) ;) (if_statement "if ((CARRY8(uVar19,uVar6)) || (0x7ffffffffffffff < uVar20)) {\n    uVar20 = 0xffffffffffffffe0;\n  }\n  else {\n    pbVar9 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0;\n    uVar8 = uVar20;\n    if (uVar20 == 0) goto LAB_002d6f6d;\n    uVar20 = uVar20 * 0x20;\n  }" if (parenthesized_expression "((CARRY8(uVar19,uVar6)) || (0x7ffffffffffffff < uVar20))" ( (binary_expression "(CARRY8(uVar19,uVar6)) || (0x7ffffffffffffff < uVar20)" (parenthesized_expression "(CARRY8(uVar19,uVar6))" ( (call_expression "CARRY8(uVar19,uVar6)" identifier (argument_list "(uVar19,uVar6)" ( identifier , identifier ))) )) || (parenthesized_expression "(0x7ffffffffffffff < uVar20)" ( (binary_expression "0x7ffffffffffffff < uVar20" number_literal < identifier) ))) )) (compound_statement "{\n    uVar20 = 0xffffffffffffffe0;\n  }" { (expression_statement "uVar20 = 0xffffffffffffffe0;" (assignment_expression "uVar20 = 0xffffffffffffffe0" identifier = number_literal) ;) }) (else_clause "else {\n    pbVar9 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0;\n    uVar8 = uVar20;\n    if (uVar20 == 0) goto LAB_002d6f6d;\n    uVar20 = uVar20 * 0x20;\n  }" else (compound_statement "{\n    pbVar9 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0;\n    uVar8 = uVar20;\n    if (uVar20 == 0) goto LAB_002d6f6d;\n    uVar20 = uVar20 * 0x20;\n  }" { (expression_statement "pbVar9 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0;\n    uVar8 = uVar20;" (assignment_expression "pbVar9 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0;\n    uVar8 = uVar20" identifier = (parenthesized_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0;\n    uVar8 = uVar20" ( (ERROR "basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0;" (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_> *)0x0" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal)) ;) (assignment_expression "uVar8 = uVar20" identifier = identifier) ))) ;) (if_statement "if (uVar20 == 0) goto LAB_002d6f6d;" if (parenthesized_expression "(uVar20 == 0)" ( (binary_expression "uVar20 == 0" identifier == number_literal) )) (goto_statement "goto LAB_002d6f6d;" goto statement_identifier ;)) (expression_statement "uVar20 = uVar20 * 0x20;" (assignment_expression "uVar20 = uVar20 * 0x20" identifier = (binary_expression "uVar20 * 0x20" identifier * number_literal)) ;) }))) (expression_statement "pbVar9 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)operator_new(uVar20)\n  ;\n  pbVar10 = (this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_start;" (assignment_expression "pbVar9 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)operator_new(uVar20)\n  ;\n  pbVar10 = (this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_start" identifier = (parenthesized_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)operator_new(uVar20)\n  ;\n  pbVar10 = (this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_start" ( (ERROR "basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)operator_new(uVar20)\n  ;" (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_> *)operator_new(uVar20)" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*)operator_new(uVar20)" * (ERROR ")" )) (call_expression "operator_new(uVar20)" identifier (argument_list "(uVar20)" ( identifier ))))) ;) (assignment_expression "pbVar10 = (this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_start" identifier = (field_expression "(this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_start" (field_expression "(this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl" (parenthesized_expression "(this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )" ( (ERROR "this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std" (binary_expression "this->\n            super__Vector_base<std::__cxx11::basic_string<char" (binary_expression "this->\n            super__Vector_base<std" (field_expression "this->\n            super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ))) ;) (labeled_statement "LAB_002d6f6d:\n  pbVar12 = pbVar9;" statement_identifier : (expression_statement "pbVar12 = pbVar9;" (assignment_expression "pbVar12 = pbVar9" identifier = identifier) ;)) (if_statement "if (__position != pbVar10) {\n    lVar11 = ((ulong)((long)__position + (-0x20 - (long)pbVar10)) >> 5) + 1;\n    paVar21 = &pbVar10->field_2;\n    do {\n      (pbVar12->_M_dataplus)._M_p = (pointer)&pbVar12->field_2;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)*(size_type **)(paVar21->_M_local_buf + -0x10) == paVar21) {\n        sVar2 = *(size_type *)(paVar21->_M_local_buf + 8);\n        (pbVar12->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n        *(size_type *)((long)&pbVar12->field_2 + 8) = sVar2;\n      }\n      else {\n        (pbVar12->_M_dataplus)._M_p = (pointer)*(size_type **)(paVar21->_M_local_buf + -0x10);\n        (pbVar12->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n      }\n      pbVar16 = pbVar12 + 1;\n      pbVar12->_M_string_length = *(size_type *)(paVar21->_M_local_buf + -8);\n      *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar21->_M_local_buf + -0x10) = paVar21;\n      *(size_type *)(paVar21->_M_local_buf + -8) = 0;\n      paVar21->_M_local_buf[0] = '\0';\n      paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)(paVar21->_M_local_buf + 0x20);\n      pbVar12 = pbVar16;\n    } while (pbVar16 != pbVar9 + lVar11);\n    pbVar12 = pbVar9 + lVar11;\n  }" if (parenthesized_expression "(__position != pbVar10)" ( (binary_expression "__position != pbVar10" identifier != identifier) )) (compound_statement "{\n    lVar11 = ((ulong)((long)__position + (-0x20 - (long)pbVar10)) >> 5) + 1;\n    paVar21 = &pbVar10->field_2;\n    do {\n      (pbVar12->_M_dataplus)._M_p = (pointer)&pbVar12->field_2;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)*(size_type **)(paVar21->_M_local_buf + -0x10) == paVar21) {\n        sVar2 = *(size_type *)(paVar21->_M_local_buf + 8);\n        (pbVar12->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n        *(size_type *)((long)&pbVar12->field_2 + 8) = sVar2;\n      }\n      else {\n        (pbVar12->_M_dataplus)._M_p = (pointer)*(size_type **)(paVar21->_M_local_buf + -0x10);\n        (pbVar12->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n      }\n      pbVar16 = pbVar12 + 1;\n      pbVar12->_M_string_length = *(size_type *)(paVar21->_M_local_buf + -8);\n      *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar21->_M_local_buf + -0x10) = paVar21;\n      *(size_type *)(paVar21->_M_local_buf + -8) = 0;\n      paVar21->_M_local_buf[0] = '\0';\n      paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)(paVar21->_M_local_buf + 0x20);\n      pbVar12 = pbVar16;\n    } while (pbVar16 != pbVar9 + lVar11);\n    pbVar12 = pbVar9 + lVar11;\n  }" { (expression_statement "lVar11 = ((ulong)((long)__position + (-0x20 - (long)pbVar10)) >> 5) + 1;" (assignment_expression "lVar11 = ((ulong)((long)__position + (-0x20 - (long)pbVar10)) >> 5) + 1" identifier = (binary_expression "((ulong)((long)__position + (-0x20 - (long)pbVar10)) >> 5) + 1" (parenthesized_expression "((ulong)((long)__position + (-0x20 - (long)pbVar10)) >> 5)" ( (binary_expression "(ulong)((long)__position + (-0x20 - (long)pbVar10)) >> 5" (call_expression "(ulong)((long)__position + (-0x20 - (long)pbVar10))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)__position + (-0x20 - (long)pbVar10))" ( (binary_expression "(long)__position + (-0x20 - (long)pbVar10)" (cast_expression "(long)__position" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-0x20 - (long)pbVar10)" ( (binary_expression "-0x20 - (long)pbVar10" number_literal - (cast_expression "(long)pbVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ))) >> number_literal) )) + number_literal)) ;) (expression_statement "paVar21 = &pbVar10->field_2;" (assignment_expression "paVar21 = &pbVar10->field_2" identifier = (pointer_expression "&pbVar10->field_2" & (field_expression "pbVar10->field_2" identifier -> field_identifier))) ;) (do_statement "do {\n      (pbVar12->_M_dataplus)._M_p = (pointer)&pbVar12->field_2;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)*(size_type **)(paVar21->_M_local_buf + -0x10) == paVar21) {\n        sVar2 = *(size_type *)(paVar21->_M_local_buf + 8);\n        (pbVar12->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n        *(size_type *)((long)&pbVar12->field_2 + 8) = sVar2;\n      }\n      else {\n        (pbVar12->_M_dataplus)._M_p = (pointer)*(size_type **)(paVar21->_M_local_buf + -0x10);\n        (pbVar12->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n      }\n      pbVar16 = pbVar12 + 1;\n      pbVar12->_M_string_length = *(size_type *)(paVar21->_M_local_buf + -8);\n      *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar21->_M_local_buf + -0x10) = paVar21;\n      *(size_type *)(paVar21->_M_local_buf + -8) = 0;\n      paVar21->_M_local_buf[0] = '\0';\n      paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)(paVar21->_M_local_buf + 0x20);\n      pbVar12 = pbVar16;\n    } while (pbVar16 != pbVar9 + lVar11);" do (compound_statement "{\n      (pbVar12->_M_dataplus)._M_p = (pointer)&pbVar12->field_2;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)*(size_type **)(paVar21->_M_local_buf + -0x10) == paVar21) {\n        sVar2 = *(size_type *)(paVar21->_M_local_buf + 8);\n        (pbVar12->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n        *(size_type *)((long)&pbVar12->field_2 + 8) = sVar2;\n      }\n      else {\n        (pbVar12->_M_dataplus)._M_p = (pointer)*(size_type **)(paVar21->_M_local_buf + -0x10);\n        (pbVar12->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n      }\n      pbVar16 = pbVar12 + 1;\n      pbVar12->_M_string_length = *(size_type *)(paVar21->_M_local_buf + -8);\n      *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar21->_M_local_buf + -0x10) = paVar21;\n      *(size_type *)(paVar21->_M_local_buf + -8) = 0;\n      paVar21->_M_local_buf[0] = '\0';\n      paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)(paVar21->_M_local_buf + 0x20);\n      pbVar12 = pbVar16;\n    }" { (expression_statement "(pbVar12->_M_dataplus)._M_p = (pointer)&pbVar12->field_2;" (assignment_expression "(pbVar12->_M_dataplus)._M_p = (pointer)&pbVar12->field_2" (field_expression "(pbVar12->_M_dataplus)._M_p" (parenthesized_expression "(pbVar12->_M_dataplus)" ( (field_expression "pbVar12->_M_dataplus" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(pointer)&pbVar12->field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "pbVar12->field_2" identifier -> field_identifier))) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)*(size_type **)(paVar21->_M_local_buf + -0x10) == paVar21) {\n        sVar2 = *(size_type *)(paVar21->_M_local_buf + 8);\n        (pbVar12->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n        *(size_type *)((long)&pbVar12->field_2 + 8) = sVar2;\n      }\n      else {\n        (pbVar12->_M_dataplus)._M_p = (pointer)*(size_type **)(paVar21->_M_local_buf + -0x10);\n        (pbVar12->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n      }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)*(size_type **)(paVar21->_M_local_buf + -0x10) == paVar21)" ( (binary_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)*(size_type **)(paVar21->_M_local_buf + -0x10) == paVar21" (binary_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)*(size_type **)(paVar21->_M_local_buf + -0x10)" (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) (ERROR "*" *) )) * (cast_expression "(size_type **)(paVar21->_M_local_buf + -0x10)" ( (type_descriptor "size_type **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(paVar21->_M_local_buf + -0x10)" ( (binary_expression "paVar21->_M_local_buf + -0x10" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n        sVar2 = *(size_type *)(paVar21->_M_local_buf + 8);\n        (pbVar12->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n        *(size_type *)((long)&pbVar12->field_2 + 8) = sVar2;\n      }" { (expression_statement "sVar2 = *(size_type *)(paVar21->_M_local_buf + 8);" (assignment_expression "sVar2 = *(size_type *)(paVar21->_M_local_buf + 8)" identifier = (pointer_expression "*(size_type *)(paVar21->_M_local_buf + 8)" * (cast_expression "(size_type *)(paVar21->_M_local_buf + 8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar21->_M_local_buf + 8)" ( (binary_expression "paVar21->_M_local_buf + 8" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "(pbVar12->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;" (assignment_expression "(pbVar12->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity" (field_expression "(pbVar12->field_2)._M_allocated_capacity" (parenthesized_expression "(pbVar12->field_2)" ( (field_expression "pbVar12->field_2" identifier -> field_identifier) )) . field_identifier) = (field_expression "paVar21->_M_allocated_capacity" identifier -> field_identifier)) ;) (expression_statement "*(size_type *)((long)&pbVar12->field_2 + 8) = sVar2;" (assignment_expression "*(size_type *)((long)&pbVar12->field_2 + 8) = sVar2" (pointer_expression "*(size_type *)((long)&pbVar12->field_2 + 8)" * (cast_expression "(size_type *)((long)&pbVar12->field_2 + 8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&pbVar12->field_2 + 8)" ( (binary_expression "(long)&pbVar12->field_2 + 8" (cast_expression "(long)&pbVar12->field_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&pbVar12->field_2" & (field_expression "pbVar12->field_2" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) }) (else_clause "else {\n        (pbVar12->_M_dataplus)._M_p = (pointer)*(size_type **)(paVar21->_M_local_buf + -0x10);\n        (pbVar12->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n      }" else (compound_statement "{\n        (pbVar12->_M_dataplus)._M_p = (pointer)*(size_type **)(paVar21->_M_local_buf + -0x10);\n        (pbVar12->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n      }" { (expression_statement "(pbVar12->_M_dataplus)._M_p = (pointer)*(size_type **)(paVar21->_M_local_buf + -0x10);" (assignment_expression "(pbVar12->_M_dataplus)._M_p = (pointer)*(size_type **)(paVar21->_M_local_buf + -0x10)" (field_expression "(pbVar12->_M_dataplus)._M_p" (parenthesized_expression "(pbVar12->_M_dataplus)" ( (field_expression "pbVar12->_M_dataplus" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(pointer)*(size_type **)(paVar21->_M_local_buf + -0x10)" (parenthesized_expression "(pointer)" ( identifier )) * (cast_expression "(size_type **)(paVar21->_M_local_buf + -0x10)" ( (type_descriptor "size_type **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(paVar21->_M_local_buf + -0x10)" ( (binary_expression "paVar21->_M_local_buf + -0x10" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "(pbVar12->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;" (assignment_expression "(pbVar12->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity" (field_expression "(pbVar12->field_2)._M_allocated_capacity" (parenthesized_expression "(pbVar12->field_2)" ( (field_expression "pbVar12->field_2" identifier -> field_identifier) )) . field_identifier) = (field_expression "paVar21->_M_allocated_capacity" identifier -> field_identifier)) ;) }))) (expression_statement "pbVar16 = pbVar12 + 1;" (assignment_expression "pbVar16 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (expression_statement "pbVar12->_M_string_length = *(size_type *)(paVar21->_M_local_buf + -8);" (assignment_expression "pbVar12->_M_string_length = *(size_type *)(paVar21->_M_local_buf + -8)" (field_expression "pbVar12->_M_string_length" identifier -> field_identifier) = (pointer_expression "*(size_type *)(paVar21->_M_local_buf + -8)" * (cast_expression "(size_type *)(paVar21->_M_local_buf + -8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar21->_M_local_buf + -8)" ( (binary_expression "paVar21->_M_local_buf + -8" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "*(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar21->_M_local_buf + -0x10) = paVar21;" (assignment_expression "*(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar21->_M_local_buf + -0x10) = paVar21" (pointer_expression "*(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar21->_M_local_buf + -0x10)" * (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar21->_M_local_buf + -0x10)" (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n        **" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n        **" identifier * (pointer_expression "*" * identifier))) )) (argument_list "(paVar21->_M_local_buf + -0x10)" ( (binary_expression "paVar21->_M_local_buf + -0x10" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(size_type *)(paVar21->_M_local_buf + -8) = 0;" (assignment_expression "*(size_type *)(paVar21->_M_local_buf + -8) = 0" (pointer_expression "*(size_type *)(paVar21->_M_local_buf + -8)" * (cast_expression "(size_type *)(paVar21->_M_local_buf + -8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar21->_M_local_buf + -8)" ( (binary_expression "paVar21->_M_local_buf + -8" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) )))) = number_literal) ;) (expression_statement "paVar21->_M_local_buf[0] = '\0';" (assignment_expression "paVar21->_M_local_buf[0] = '\0'" (subscript_expression "paVar21->_M_local_buf[0]" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)(paVar21->_M_local_buf + 0x20);" (assignment_expression "paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)(paVar21->_M_local_buf + 0x20)" identifier = (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)(paVar21->_M_local_buf + 0x20)" (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) (ERROR "*" *) )) (argument_list "(paVar21->_M_local_buf + 0x20)" ( (binary_expression "paVar21->_M_local_buf + 0x20" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "pbVar12 = pbVar16;" (assignment_expression "pbVar12 = pbVar16" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar16 != pbVar9 + lVar11)" ( (binary_expression "pbVar16 != pbVar9 + lVar11" identifier != (binary_expression "pbVar9 + lVar11" identifier + identifier)) )) ;) (expression_statement "pbVar12 = pbVar9 + lVar11;" (assignment_expression "pbVar12 = pbVar9 + lVar11" identifier = (binary_expression "pbVar9 + lVar11" identifier + identifier)) ;) })) (do_statement "do {\n    lVar11 = *(long *)__first;\n    lVar17 = *(long *)(__first + 8);\n    (pbVar12->_M_dataplus)._M_p = (pointer)&pbVar12->field_2;\n                    /* try { // try from 002d729d to 002d72a1 has its CatchHandler @ 002d73c5 */\n    __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::_M_construct<char*>\n              (pbVar12,lVar11,lVar17 + lVar11);\n    __first = __first + 0x20;\n    pbVar12 = pbVar12 + 1;\n  } while (__last != __first);" do (compound_statement "{\n    lVar11 = *(long *)__first;\n    lVar17 = *(long *)(__first + 8);\n    (pbVar12->_M_dataplus)._M_p = (pointer)&pbVar12->field_2;\n                    /* try { // try from 002d729d to 002d72a1 has its CatchHandler @ 002d73c5 */\n    __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::_M_construct<char*>\n              (pbVar12,lVar11,lVar17 + lVar11);\n    __first = __first + 0x20;\n    pbVar12 = pbVar12 + 1;\n  }" { (expression_statement "lVar11 = *(long *)__first;" (assignment_expression "lVar11 = *(long *)__first" identifier = (pointer_expression "*(long *)__first" * (cast_expression "(long *)__first" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "lVar17 = *(long *)(__first + 8);" (assignment_expression "lVar17 = *(long *)(__first + 8)" identifier = (pointer_expression "*(long *)(__first + 8)" * (cast_expression "(long *)(__first + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__first + 8)" ( (binary_expression "__first + 8" identifier + number_literal) ))))) ;) (expression_statement "(pbVar12->_M_dataplus)._M_p = (pointer)&pbVar12->field_2;" (assignment_expression "(pbVar12->_M_dataplus)._M_p = (pointer)&pbVar12->field_2" (field_expression "(pbVar12->_M_dataplus)._M_p" (parenthesized_expression "(pbVar12->_M_dataplus)" ( (field_expression "pbVar12->_M_dataplus" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(pointer)&pbVar12->field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "pbVar12->field_2" identifier -> field_identifier))) ;) comment (ERROR "__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>::_M_construct<char*>\n              (pbVar12,lVar11,lVar17 + lVar11);" (binary_expression "allocator<char>_>::_M_construct<char*>\n              (pbVar12,lVar11,lVar17 + lVar11)" (binary_expression "allocator<char>_>::_M_construct<char" (binary_expression "allocator<char>_>::_M_construct" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "::" : :) identifier) < identifier) (ERROR "*" *) > (parenthesized_expression "(pbVar12,lVar11,lVar17 + lVar11)" ( (comma_expression "pbVar12,lVar11,lVar17 + lVar11" identifier , (comma_expression "lVar11,lVar17 + lVar11" identifier , (binary_expression "lVar17 + lVar11" identifier + identifier))) ))) ;) (expression_statement "__first = __first + 0x20;" (assignment_expression "__first = __first + 0x20" identifier = (binary_expression "__first + 0x20" identifier + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(__last != __first)" ( (binary_expression "__last != __first" identifier != identifier) )) ;) (expression_statement "pbVar22 = (this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_finish;" (assignment_expression "pbVar22 = (this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_finish" identifier = (field_expression "(this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_finish" (field_expression "(this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl" (parenthesized_expression "(this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )" ( (ERROR "this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std" (binary_expression "this->\n            super__Vector_base<std::__cxx11::basic_string<char" (binary_expression "this->\n            super__Vector_base<std" (field_expression "this->\n            super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (__position != pbVar22) {\n    lVar11 = ((ulong)((long)pbVar22 + (-0x20 - (long)__position)) >> 5) + 1;\n    paVar21 = &__position->field_2;\n    pbVar16 = pbVar12;\n    do {\n      (pbVar16->_M_dataplus)._M_p = (pointer)&pbVar16->field_2;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)*(size_type **)(paVar21->_M_local_buf + -0x10) == paVar21) {\n        sVar2 = *(size_type *)(paVar21->_M_local_buf + 8);\n        (pbVar16->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n        *(size_type *)((long)&pbVar16->field_2 + 8) = sVar2;\n      }\n      else {\n        (pbVar16->_M_dataplus)._M_p = (pointer)*(size_type **)(paVar21->_M_local_buf + -0x10);\n        (pbVar16->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n      }\n      sVar2 = *(size_type *)(paVar21->_M_local_buf + -8);\n      pbVar15 = pbVar16 + 1;\n      *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar21->_M_local_buf + -0x10) = paVar21;\n      *(size_type *)(paVar21->_M_local_buf + -8) = 0;\n      pbVar16->_M_string_length = sVar2;\n      paVar21->_M_local_buf[0] = '\0';\n      paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)(paVar21->_M_local_buf + 0x20);\n      pbVar16 = pbVar15;\n    } while (pbVar15 != pbVar12 + lVar11);\n    pbVar22 = (this->\n              super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n              )._M_impl._M_finish;\n    pbVar12 = pbVar12 + lVar11;\n  }" if (parenthesized_expression "(__position != pbVar22)" ( (binary_expression "__position != pbVar22" identifier != identifier) )) (compound_statement "{\n    lVar11 = ((ulong)((long)pbVar22 + (-0x20 - (long)__position)) >> 5) + 1;\n    paVar21 = &__position->field_2;\n    pbVar16 = pbVar12;\n    do {\n      (pbVar16->_M_dataplus)._M_p = (pointer)&pbVar16->field_2;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)*(size_type **)(paVar21->_M_local_buf + -0x10) == paVar21) {\n        sVar2 = *(size_type *)(paVar21->_M_local_buf + 8);\n        (pbVar16->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n        *(size_type *)((long)&pbVar16->field_2 + 8) = sVar2;\n      }\n      else {\n        (pbVar16->_M_dataplus)._M_p = (pointer)*(size_type **)(paVar21->_M_local_buf + -0x10);\n        (pbVar16->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n      }\n      sVar2 = *(size_type *)(paVar21->_M_local_buf + -8);\n      pbVar15 = pbVar16 + 1;\n      *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar21->_M_local_buf + -0x10) = paVar21;\n      *(size_type *)(paVar21->_M_local_buf + -8) = 0;\n      pbVar16->_M_string_length = sVar2;\n      paVar21->_M_local_buf[0] = '\0';\n      paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)(paVar21->_M_local_buf + 0x20);\n      pbVar16 = pbVar15;\n    } while (pbVar15 != pbVar12 + lVar11);\n    pbVar22 = (this->\n              super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n              )._M_impl._M_finish;\n    pbVar12 = pbVar12 + lVar11;\n  }" { (expression_statement "lVar11 = ((ulong)((long)pbVar22 + (-0x20 - (long)__position)) >> 5) + 1;" (assignment_expression "lVar11 = ((ulong)((long)pbVar22 + (-0x20 - (long)__position)) >> 5) + 1" identifier = (binary_expression "((ulong)((long)pbVar22 + (-0x20 - (long)__position)) >> 5) + 1" (parenthesized_expression "((ulong)((long)pbVar22 + (-0x20 - (long)__position)) >> 5)" ( (binary_expression "(ulong)((long)pbVar22 + (-0x20 - (long)__position)) >> 5" (call_expression "(ulong)((long)pbVar22 + (-0x20 - (long)__position))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)pbVar22 + (-0x20 - (long)__position))" ( (binary_expression "(long)pbVar22 + (-0x20 - (long)__position)" (cast_expression "(long)pbVar22" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-0x20 - (long)__position)" ( (binary_expression "-0x20 - (long)__position" number_literal - (cast_expression "(long)__position" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ))) >> number_literal) )) + number_literal)) ;) (expression_statement "paVar21 = &__position->field_2;" (assignment_expression "paVar21 = &__position->field_2" identifier = (pointer_expression "&__position->field_2" & (field_expression "__position->field_2" identifier -> field_identifier))) ;) (expression_statement "pbVar16 = pbVar12;" (assignment_expression "pbVar16 = pbVar12" identifier = identifier) ;) (do_statement "do {\n      (pbVar16->_M_dataplus)._M_p = (pointer)&pbVar16->field_2;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)*(size_type **)(paVar21->_M_local_buf + -0x10) == paVar21) {\n        sVar2 = *(size_type *)(paVar21->_M_local_buf + 8);\n        (pbVar16->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n        *(size_type *)((long)&pbVar16->field_2 + 8) = sVar2;\n      }\n      else {\n        (pbVar16->_M_dataplus)._M_p = (pointer)*(size_type **)(paVar21->_M_local_buf + -0x10);\n        (pbVar16->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n      }\n      sVar2 = *(size_type *)(paVar21->_M_local_buf + -8);\n      pbVar15 = pbVar16 + 1;\n      *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar21->_M_local_buf + -0x10) = paVar21;\n      *(size_type *)(paVar21->_M_local_buf + -8) = 0;\n      pbVar16->_M_string_length = sVar2;\n      paVar21->_M_local_buf[0] = '\0';\n      paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)(paVar21->_M_local_buf + 0x20);\n      pbVar16 = pbVar15;\n    } while (pbVar15 != pbVar12 + lVar11);" do (compound_statement "{\n      (pbVar16->_M_dataplus)._M_p = (pointer)&pbVar16->field_2;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)*(size_type **)(paVar21->_M_local_buf + -0x10) == paVar21) {\n        sVar2 = *(size_type *)(paVar21->_M_local_buf + 8);\n        (pbVar16->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n        *(size_type *)((long)&pbVar16->field_2 + 8) = sVar2;\n      }\n      else {\n        (pbVar16->_M_dataplus)._M_p = (pointer)*(size_type **)(paVar21->_M_local_buf + -0x10);\n        (pbVar16->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n      }\n      sVar2 = *(size_type *)(paVar21->_M_local_buf + -8);\n      pbVar15 = pbVar16 + 1;\n      *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar21->_M_local_buf + -0x10) = paVar21;\n      *(size_type *)(paVar21->_M_local_buf + -8) = 0;\n      pbVar16->_M_string_length = sVar2;\n      paVar21->_M_local_buf[0] = '\0';\n      paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)(paVar21->_M_local_buf + 0x20);\n      pbVar16 = pbVar15;\n    }" { (expression_statement "(pbVar16->_M_dataplus)._M_p = (pointer)&pbVar16->field_2;" (assignment_expression "(pbVar16->_M_dataplus)._M_p = (pointer)&pbVar16->field_2" (field_expression "(pbVar16->_M_dataplus)._M_p" (parenthesized_expression "(pbVar16->_M_dataplus)" ( (field_expression "pbVar16->_M_dataplus" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(pointer)&pbVar16->field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "pbVar16->field_2" identifier -> field_identifier))) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)*(size_type **)(paVar21->_M_local_buf + -0x10) == paVar21) {\n        sVar2 = *(size_type *)(paVar21->_M_local_buf + 8);\n        (pbVar16->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n        *(size_type *)((long)&pbVar16->field_2 + 8) = sVar2;\n      }\n      else {\n        (pbVar16->_M_dataplus)._M_p = (pointer)*(size_type **)(paVar21->_M_local_buf + -0x10);\n        (pbVar16->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n      }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)*(size_type **)(paVar21->_M_local_buf + -0x10) == paVar21)" ( (binary_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)*(size_type **)(paVar21->_M_local_buf + -0x10) == paVar21" (binary_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)*(size_type **)(paVar21->_M_local_buf + -0x10)" (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) (ERROR "*" *) )) * (cast_expression "(size_type **)(paVar21->_M_local_buf + -0x10)" ( (type_descriptor "size_type **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(paVar21->_M_local_buf + -0x10)" ( (binary_expression "paVar21->_M_local_buf + -0x10" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n        sVar2 = *(size_type *)(paVar21->_M_local_buf + 8);\n        (pbVar16->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n        *(size_type *)((long)&pbVar16->field_2 + 8) = sVar2;\n      }" { (expression_statement "sVar2 = *(size_type *)(paVar21->_M_local_buf + 8);" (assignment_expression "sVar2 = *(size_type *)(paVar21->_M_local_buf + 8)" identifier = (pointer_expression "*(size_type *)(paVar21->_M_local_buf + 8)" * (cast_expression "(size_type *)(paVar21->_M_local_buf + 8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar21->_M_local_buf + 8)" ( (binary_expression "paVar21->_M_local_buf + 8" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "(pbVar16->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;" (assignment_expression "(pbVar16->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity" (field_expression "(pbVar16->field_2)._M_allocated_capacity" (parenthesized_expression "(pbVar16->field_2)" ( (field_expression "pbVar16->field_2" identifier -> field_identifier) )) . field_identifier) = (field_expression "paVar21->_M_allocated_capacity" identifier -> field_identifier)) ;) (expression_statement "*(size_type *)((long)&pbVar16->field_2 + 8) = sVar2;" (assignment_expression "*(size_type *)((long)&pbVar16->field_2 + 8) = sVar2" (pointer_expression "*(size_type *)((long)&pbVar16->field_2 + 8)" * (cast_expression "(size_type *)((long)&pbVar16->field_2 + 8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&pbVar16->field_2 + 8)" ( (binary_expression "(long)&pbVar16->field_2 + 8" (cast_expression "(long)&pbVar16->field_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&pbVar16->field_2" & (field_expression "pbVar16->field_2" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) }) (else_clause "else {\n        (pbVar16->_M_dataplus)._M_p = (pointer)*(size_type **)(paVar21->_M_local_buf + -0x10);\n        (pbVar16->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n      }" else (compound_statement "{\n        (pbVar16->_M_dataplus)._M_p = (pointer)*(size_type **)(paVar21->_M_local_buf + -0x10);\n        (pbVar16->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;\n      }" { (expression_statement "(pbVar16->_M_dataplus)._M_p = (pointer)*(size_type **)(paVar21->_M_local_buf + -0x10);" (assignment_expression "(pbVar16->_M_dataplus)._M_p = (pointer)*(size_type **)(paVar21->_M_local_buf + -0x10)" (field_expression "(pbVar16->_M_dataplus)._M_p" (parenthesized_expression "(pbVar16->_M_dataplus)" ( (field_expression "pbVar16->_M_dataplus" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(pointer)*(size_type **)(paVar21->_M_local_buf + -0x10)" (parenthesized_expression "(pointer)" ( identifier )) * (cast_expression "(size_type **)(paVar21->_M_local_buf + -0x10)" ( (type_descriptor "size_type **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(paVar21->_M_local_buf + -0x10)" ( (binary_expression "paVar21->_M_local_buf + -0x10" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "(pbVar16->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity;" (assignment_expression "(pbVar16->field_2)._M_allocated_capacity = paVar21->_M_allocated_capacity" (field_expression "(pbVar16->field_2)._M_allocated_capacity" (parenthesized_expression "(pbVar16->field_2)" ( (field_expression "pbVar16->field_2" identifier -> field_identifier) )) . field_identifier) = (field_expression "paVar21->_M_allocated_capacity" identifier -> field_identifier)) ;) }))) (expression_statement "sVar2 = *(size_type *)(paVar21->_M_local_buf + -8);" (assignment_expression "sVar2 = *(size_type *)(paVar21->_M_local_buf + -8)" identifier = (pointer_expression "*(size_type *)(paVar21->_M_local_buf + -8)" * (cast_expression "(size_type *)(paVar21->_M_local_buf + -8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar21->_M_local_buf + -8)" ( (binary_expression "paVar21->_M_local_buf + -8" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "pbVar15 = pbVar16 + 1;" (assignment_expression "pbVar15 = pbVar16 + 1" identifier = (binary_expression "pbVar16 + 1" identifier + number_literal)) ;) (expression_statement "*(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar21->_M_local_buf + -0x10) = paVar21;" (assignment_expression "*(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar21->_M_local_buf + -0x10) = paVar21" (pointer_expression "*(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar21->_M_local_buf + -0x10)" * (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar21->_M_local_buf + -0x10)" (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n        **" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n        **" identifier * (pointer_expression "*" * identifier))) )) (argument_list "(paVar21->_M_local_buf + -0x10)" ( (binary_expression "paVar21->_M_local_buf + -0x10" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(size_type *)(paVar21->_M_local_buf + -8) = 0;" (assignment_expression "*(size_type *)(paVar21->_M_local_buf + -8) = 0" (pointer_expression "*(size_type *)(paVar21->_M_local_buf + -8)" * (cast_expression "(size_type *)(paVar21->_M_local_buf + -8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar21->_M_local_buf + -8)" ( (binary_expression "paVar21->_M_local_buf + -8" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pbVar16->_M_string_length = sVar2;" (assignment_expression "pbVar16->_M_string_length = sVar2" (field_expression "pbVar16->_M_string_length" identifier -> field_identifier) = identifier) ;) (expression_statement "paVar21->_M_local_buf[0] = '\0';" (assignment_expression "paVar21->_M_local_buf[0] = '\0'" (subscript_expression "paVar21->_M_local_buf[0]" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)(paVar21->_M_local_buf + 0x20);" (assignment_expression "paVar21 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)(paVar21->_M_local_buf + 0x20)" identifier = (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)(paVar21->_M_local_buf + 0x20)" (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                 *)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) (ERROR "*" *) )) (argument_list "(paVar21->_M_local_buf + 0x20)" ( (binary_expression "paVar21->_M_local_buf + 0x20" (field_expression "paVar21->_M_local_buf" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "pbVar16 = pbVar15;" (assignment_expression "pbVar16 = pbVar15" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar15 != pbVar12 + lVar11)" ( (binary_expression "pbVar15 != pbVar12 + lVar11" identifier != (binary_expression "pbVar12 + lVar11" identifier + identifier)) )) ;) (expression_statement "pbVar22 = (this->\n              super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n              )._M_impl._M_finish;" (assignment_expression "pbVar22 = (this->\n              super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n              )._M_impl._M_finish" identifier = (field_expression "(this->\n              super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n              )._M_impl._M_finish" (field_expression "(this->\n              super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n              )._M_impl" (parenthesized_expression "(this->\n              super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n              )" ( (ERROR "this->\n              super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "this->\n              super__Vector_base<std::__cxx11::basic_string<char,_std" (binary_expression "this->\n              super__Vector_base<std::__cxx11::basic_string<char" (binary_expression "this->\n              super__Vector_base<std" (field_expression "this->\n              super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "pbVar12 = pbVar12 + lVar11;" (assignment_expression "pbVar12 = pbVar12 + lVar11" identifier = (binary_expression "pbVar12 + lVar11" identifier + identifier)) ;) })) (expression_statement "pbVar10 = (this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_start;" (assignment_expression "pbVar10 = (this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_start" identifier = (field_expression "(this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl._M_start" (field_expression "(this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )._M_impl" (parenthesized_expression "(this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n            )" ( (ERROR "this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "this->\n            super__Vector_base<std::__cxx11::basic_string<char,_std" (binary_expression "this->\n            super__Vector_base<std::__cxx11::basic_string<char" (binary_expression "this->\n            super__Vector_base<std" (field_expression "this->\n            super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (pbVar10 != pbVar22) {\n    do {\n      pcVar4 = (pbVar10->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 != &pbVar10->field_2) {\n        operator_delete(pcVar4);\n      }\n      pbVar10 = pbVar10 + 1;\n    } while (pbVar10 != pbVar22);\n    pbVar22 = (this->\n              super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n              )._M_impl._M_start;\n  }" if (parenthesized_expression "(pbVar10 != pbVar22)" ( (binary_expression "pbVar10 != pbVar22" identifier != identifier) )) (compound_statement "{\n    do {\n      pcVar4 = (pbVar10->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 != &pbVar10->field_2) {\n        operator_delete(pcVar4);\n      }\n      pbVar10 = pbVar10 + 1;\n    } while (pbVar10 != pbVar22);\n    pbVar22 = (this->\n              super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n              )._M_impl._M_start;\n  }" { (do_statement "do {\n      pcVar4 = (pbVar10->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 != &pbVar10->field_2) {\n        operator_delete(pcVar4);\n      }\n      pbVar10 = pbVar10 + 1;\n    } while (pbVar10 != pbVar22);" do (compound_statement "{\n      pcVar4 = (pbVar10->_M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 != &pbVar10->field_2) {\n        operator_delete(pcVar4);\n      }\n      pbVar10 = pbVar10 + 1;\n    }" { (expression_statement "pcVar4 = (pbVar10->_M_dataplus)._M_p;" (assignment_expression "pcVar4 = (pbVar10->_M_dataplus)._M_p" identifier = (field_expression "(pbVar10->_M_dataplus)._M_p" (parenthesized_expression "(pbVar10->_M_dataplus)" ( (field_expression "pbVar10->_M_dataplus" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 != &pbVar10->field_2) {\n        operator_delete(pcVar4);\n      }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 != &pbVar10->field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar4 != &pbVar10->field_2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n           *)pcVar4 != &pbVar10->field_2" (binary_expression "allocator<char>_>_9\n           *)pcVar4" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n           *)pcVar4" identifier * (ERROR ")" )) identifier)) != (pointer_expression "&pbVar10->field_2" & (field_expression "pbVar10->field_2" identifier -> field_identifier))) )) )) (compound_statement "{\n        operator_delete(pcVar4);\n      }" { (expression_statement "operator_delete(pcVar4);" (call_expression "operator_delete(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier ))) ;) })) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar10 != pbVar22)" ( (binary_expression "pbVar10 != pbVar22" identifier != identifier) )) ;) (expression_statement "pbVar22 = (this->\n              super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n              )._M_impl._M_start;" (assignment_expression "pbVar22 = (this->\n              super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n              )._M_impl._M_start" identifier = (field_expression "(this->\n              super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n              )._M_impl._M_start" (field_expression "(this->\n              super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n              )._M_impl" (parenthesized_expression "(this->\n              super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n              )" ( (ERROR "this->\n              super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "this->\n              super__Vector_base<std::__cxx11::basic_string<char,_std" (binary_expression "this->\n              super__Vector_base<std::__cxx11::basic_string<char" (binary_expression "this->\n              super__Vector_base<std" (field_expression "this->\n              super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) })) (if_statement "if (pbVar22 != (pointer)0x0) {\n    operator_delete(pbVar22);\n  }" if (parenthesized_expression "(pbVar22 != (pointer)0x0)" ( (binary_expression "pbVar22 != (pointer)0x0" identifier != (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) )) (compound_statement "{\n    operator_delete(pbVar22);\n  }" { (expression_statement "operator_delete(pbVar22);" (call_expression "operator_delete(pbVar22)" identifier (argument_list "(pbVar22)" ( identifier ))) ;) })) (expression_statement "(this->\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  )._M_impl._M_start = pbVar9;" (assignment_expression "(this->\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  )._M_impl._M_start = pbVar9" (field_expression "(this->\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  )._M_impl._M_start" (field_expression "(this->\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  )._M_impl" (parenthesized_expression "(this->\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  )" ( (ERROR "this->\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "this->\n  super__Vector_base<std::__cxx11::basic_string<char,_std" (binary_expression "this->\n  super__Vector_base<std::__cxx11::basic_string<char" (binary_expression "this->\n  super__Vector_base<std" (field_expression "this->\n  super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(this->\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  )._M_impl._M_finish = pbVar12;" (assignment_expression "(this->\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  )._M_impl._M_finish = pbVar12" (field_expression "(this->\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  )._M_impl._M_finish" (field_expression "(this->\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  )._M_impl" (parenthesized_expression "(this->\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  )" ( (ERROR "this->\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "this->\n  super__Vector_base<std::__cxx11::basic_string<char,_std" (binary_expression "this->\n  super__Vector_base<std::__cxx11::basic_string<char" (binary_expression "this->\n  super__Vector_base<std" (field_expression "this->\n  super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(this->\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  )._M_impl._M_end_of_storage = pbVar9 + uVar8;" (assignment_expression "(this->\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  )._M_impl._M_end_of_storage = pbVar9 + uVar8" (field_expression "(this->\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  )._M_impl._M_end_of_storage" (field_expression "(this->\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  )._M_impl" (parenthesized_expression "(this->\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  )" ( (ERROR "this->\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (comma_expression "this->\n  super__Vector_base<std::__cxx11::basic_string<char,_std" (binary_expression "this->\n  super__Vector_base<std::__cxx11::basic_string<char" (binary_expression "this->\n  super__Vector_base<std" (field_expression "this->\n  super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : identifier : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_>_>" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) )) . field_identifier) . field_identifier) = (binary_expression "pbVar9 + uVar8" identifier + identifier)) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_002d6e10(undefined8 *param_1,undefined8 *param_2,long *param_3,long *param_4)\n\n{\n  undefined8 uVar1;\n  ulong uVar2;\n  ulong uVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  undefined8 *puVar6;\n  long lVar7;\n  undefined8 *puVar8;\n  size_t __n;\n  undefined8 *puVar9;\n  long lVar10;\n  long *plVar11;\n  ulong uVar12;\n  ulong uVar13;\n  long lVar14;\n  ulong local_68;\n  \n  if (param_3 == param_4) {\n    return;\n  }\n  lVar7 = (long)param_4 - (long)param_3;\n  uVar2 = lVar7 >> 5;\n  puVar4 = (undefined8 *)param_1[1];\n  if (uVar2 <= (ulong)(param_1[2] - (long)puVar4 >> 5)) {\n    lVar10 = (long)puVar4 - (long)param_2;\n    local_68 = lVar10 >> 5;\n    if (uVar2 < local_68) {\n      lVar10 = (long)puVar4 - lVar7;\n      puVar6 = (undefined8 *)(lVar10 + 0x10);\n      puVar5 = puVar4;\n      do {\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      } while (puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20));\n      param_1[1] = param_1[1] + lVar7;\n      puVar4 = puVar4 + -2;\n      lVar14 = lVar10 - (long)param_2 >> 5;\n      puVar6 = (undefined8 *)(lVar10 + -0x10);\n      if (0 < lVar10 - (long)param_2) {\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }\n      if (0 < lVar7) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }\n    }\n    else {\n      plVar11 = (long *)((long)param_3 + lVar10);\n      puVar6 = puVar4;\n      if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    \n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      puVar6 = puVar6 + (uVar2 - local_68) * 4;\n      param_1[1] = puVar6;\n      if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      param_1[1] = (long)puVar6 + lVar10;\n      if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }\n    }\n    return;\n  }\n  puVar6 = (undefined8 *)*param_1;\n  uVar3 = 0x7ffffffffffffff;\n  uVar12 = (long)puVar4 - (long)puVar6 >> 5;\n  if (0x7ffffffffffffff - uVar12 < uVar2) {\n                    \n    FUN_00377370("vector::_M_range_insert");\n  }\n  if (uVar2 < uVar12) {\n    uVar2 = uVar12;\n  }\n  uVar13 = uVar12 + uVar2;\n  if ((CARRY8(uVar12,uVar2)) || (0x7ffffffffffffff < uVar13)) {\n    lVar7 = -0x20;\n  }\n  else {\n    puVar4 = (undefined8 *)0x0;\n    uVar3 = uVar13;\n    if (uVar13 == 0) goto LAB_002d6f6d;\n    lVar7 = uVar13 * 0x20;\n  }\n  puVar4 = (undefined8 *)FUN_00337270(lVar7);\n  puVar6 = (undefined8 *)*param_1;\nLAB_002d6f6d:\n  puVar5 = puVar4;\n  if (param_2 != puVar6) {\n    lVar7 = ((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5) + 1;\n    puVar6 = puVar6 + 2;\n    do {\n      *puVar5 = puVar5 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }\n      else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }\n      puVar9 = puVar5 + 4;\n      puVar5[1] = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar5 = puVar9;\n    } while (puVar9 != puVar4 + lVar7 * 4);\n    puVar5 = puVar4 + lVar7 * 4;\n  }\n  do {\n    lVar7 = *param_3;\n    lVar10 = param_3[1];\n    *puVar5 = puVar5 + 2;\n                    \n    FUN_001caae0(puVar5,lVar7,lVar10 + lVar7);\n    param_3 = param_3 + 4;\n    puVar5 = puVar5 + 4;\n  } while (param_4 != param_3);\n  puVar6 = (undefined8 *)param_1[1];\n  if (param_2 != puVar6) {\n    lVar7 = ((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5) + 1;\n    puVar6 = param_2 + 2;\n    puVar9 = puVar5;\n    do {\n      *puVar9 = puVar9 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }\n      else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }\n      uVar1 = puVar6[-1];\n      puVar8 = puVar9 + 4;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      puVar9[1] = uVar1;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar9 = puVar8;\n    } while (puVar8 != puVar5 + lVar7 * 4);\n    puVar6 = (undefined8 *)param_1[1];\n    puVar5 = puVar5 + lVar7 * 4;\n  }\n  puVar9 = (undefined8 *)*param_1;\n  if (puVar9 != puVar6) {\n    do {\n      if ((undefined8 *)*puVar9 != puVar9 + 2) {\n        FUN_00338a40();\n      }\n      puVar9 = puVar9 + 4;\n    } while (puVar9 != puVar6);\n    puVar6 = (undefined8 *)*param_1;\n  }\n  if (puVar6 != (undefined8 *)0x0) {\n    FUN_00338a40(puVar6);\n  }\n  *param_1 = puVar4;\n  param_1[1] = puVar5;\n  param_1[2] = puVar4 + uVar3 * 4;\n  return;\n}\n\n" (function_definition "void FUN_002d6e10(undefined8 *param_1,undefined8 *param_2,long *param_3,long *param_4)\n\n{\n  undefined8 uVar1;\n  ulong uVar2;\n  ulong uVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  undefined8 *puVar6;\n  long lVar7;\n  undefined8 *puVar8;\n  size_t __n;\n  undefined8 *puVar9;\n  long lVar10;\n  long *plVar11;\n  ulong uVar12;\n  ulong uVar13;\n  long lVar14;\n  ulong local_68;\n  \n  if (param_3 == param_4) {\n    return;\n  }\n  lVar7 = (long)param_4 - (long)param_3;\n  uVar2 = lVar7 >> 5;\n  puVar4 = (undefined8 *)param_1[1];\n  if (uVar2 <= (ulong)(param_1[2] - (long)puVar4 >> 5)) {\n    lVar10 = (long)puVar4 - (long)param_2;\n    local_68 = lVar10 >> 5;\n    if (uVar2 < local_68) {\n      lVar10 = (long)puVar4 - lVar7;\n      puVar6 = (undefined8 *)(lVar10 + 0x10);\n      puVar5 = puVar4;\n      do {\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      } while (puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20));\n      param_1[1] = param_1[1] + lVar7;\n      puVar4 = puVar4 + -2;\n      lVar14 = lVar10 - (long)param_2 >> 5;\n      puVar6 = (undefined8 *)(lVar10 + -0x10);\n      if (0 < lVar10 - (long)param_2) {\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }\n      if (0 < lVar7) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }\n    }\n    else {\n      plVar11 = (long *)((long)param_3 + lVar10);\n      puVar6 = puVar4;\n      if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    \n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      puVar6 = puVar6 + (uVar2 - local_68) * 4;\n      param_1[1] = puVar6;\n      if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      param_1[1] = (long)puVar6 + lVar10;\n      if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }\n    }\n    return;\n  }\n  puVar6 = (undefined8 *)*param_1;\n  uVar3 = 0x7ffffffffffffff;\n  uVar12 = (long)puVar4 - (long)puVar6 >> 5;\n  if (0x7ffffffffffffff - uVar12 < uVar2) {\n                    \n    FUN_00377370("vector::_M_range_insert");\n  }\n  if (uVar2 < uVar12) {\n    uVar2 = uVar12;\n  }\n  uVar13 = uVar12 + uVar2;\n  if ((CARRY8(uVar12,uVar2)) || (0x7ffffffffffffff < uVar13)) {\n    lVar7 = -0x20;\n  }\n  else {\n    puVar4 = (undefined8 *)0x0;\n    uVar3 = uVar13;\n    if (uVar13 == 0) goto LAB_002d6f6d;\n    lVar7 = uVar13 * 0x20;\n  }\n  puVar4 = (undefined8 *)FUN_00337270(lVar7);\n  puVar6 = (undefined8 *)*param_1;\nLAB_002d6f6d:\n  puVar5 = puVar4;\n  if (param_2 != puVar6) {\n    lVar7 = ((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5) + 1;\n    puVar6 = puVar6 + 2;\n    do {\n      *puVar5 = puVar5 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }\n      else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }\n      puVar9 = puVar5 + 4;\n      puVar5[1] = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar5 = puVar9;\n    } while (puVar9 != puVar4 + lVar7 * 4);\n    puVar5 = puVar4 + lVar7 * 4;\n  }\n  do {\n    lVar7 = *param_3;\n    lVar10 = param_3[1];\n    *puVar5 = puVar5 + 2;\n                    \n    FUN_001caae0(puVar5,lVar7,lVar10 + lVar7);\n    param_3 = param_3 + 4;\n    puVar5 = puVar5 + 4;\n  } while (param_4 != param_3);\n  puVar6 = (undefined8 *)param_1[1];\n  if (param_2 != puVar6) {\n    lVar7 = ((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5) + 1;\n    puVar6 = param_2 + 2;\n    puVar9 = puVar5;\n    do {\n      *puVar9 = puVar9 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }\n      else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }\n      uVar1 = puVar6[-1];\n      puVar8 = puVar9 + 4;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      puVar9[1] = uVar1;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar9 = puVar8;\n    } while (puVar8 != puVar5 + lVar7 * 4);\n    puVar6 = (undefined8 *)param_1[1];\n    puVar5 = puVar5 + lVar7 * 4;\n  }\n  puVar9 = (undefined8 *)*param_1;\n  if (puVar9 != puVar6) {\n    do {\n      if ((undefined8 *)*puVar9 != puVar9 + 2) {\n        FUN_00338a40();\n      }\n      puVar9 = puVar9 + 4;\n    } while (puVar9 != puVar6);\n    puVar6 = (undefined8 *)*param_1;\n  }\n  if (puVar6 != (undefined8 *)0x0) {\n    FUN_00338a40(puVar6);\n  }\n  *param_1 = puVar4;\n  param_1[1] = puVar5;\n  param_1[2] = puVar4 + uVar3 * 4;\n  return;\n}" primitive_type (function_declarator "FUN_002d6e10(undefined8 *param_1,undefined8 *param_2,long *param_3,long *param_4)" identifier (parameter_list "(undefined8 *param_1,undefined8 *param_2,long *param_3,long *param_4)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long *param_3" (sized_type_specifier "long" long) (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "long *param_4" (sized_type_specifier "long" long) (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  undefined8 uVar1;\n  ulong uVar2;\n  ulong uVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  undefined8 *puVar6;\n  long lVar7;\n  undefined8 *puVar8;\n  size_t __n;\n  undefined8 *puVar9;\n  long lVar10;\n  long *plVar11;\n  ulong uVar12;\n  ulong uVar13;\n  long lVar14;\n  ulong local_68;\n  \n  if (param_3 == param_4) {\n    return;\n  }\n  lVar7 = (long)param_4 - (long)param_3;\n  uVar2 = lVar7 >> 5;\n  puVar4 = (undefined8 *)param_1[1];\n  if (uVar2 <= (ulong)(param_1[2] - (long)puVar4 >> 5)) {\n    lVar10 = (long)puVar4 - (long)param_2;\n    local_68 = lVar10 >> 5;\n    if (uVar2 < local_68) {\n      lVar10 = (long)puVar4 - lVar7;\n      puVar6 = (undefined8 *)(lVar10 + 0x10);\n      puVar5 = puVar4;\n      do {\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      } while (puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20));\n      param_1[1] = param_1[1] + lVar7;\n      puVar4 = puVar4 + -2;\n      lVar14 = lVar10 - (long)param_2 >> 5;\n      puVar6 = (undefined8 *)(lVar10 + -0x10);\n      if (0 < lVar10 - (long)param_2) {\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }\n      if (0 < lVar7) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }\n    }\n    else {\n      plVar11 = (long *)((long)param_3 + lVar10);\n      puVar6 = puVar4;\n      if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    \n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      puVar6 = puVar6 + (uVar2 - local_68) * 4;\n      param_1[1] = puVar6;\n      if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      param_1[1] = (long)puVar6 + lVar10;\n      if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }\n    }\n    return;\n  }\n  puVar6 = (undefined8 *)*param_1;\n  uVar3 = 0x7ffffffffffffff;\n  uVar12 = (long)puVar4 - (long)puVar6 >> 5;\n  if (0x7ffffffffffffff - uVar12 < uVar2) {\n                    \n    FUN_00377370("vector::_M_range_insert");\n  }\n  if (uVar2 < uVar12) {\n    uVar2 = uVar12;\n  }\n  uVar13 = uVar12 + uVar2;\n  if ((CARRY8(uVar12,uVar2)) || (0x7ffffffffffffff < uVar13)) {\n    lVar7 = -0x20;\n  }\n  else {\n    puVar4 = (undefined8 *)0x0;\n    uVar3 = uVar13;\n    if (uVar13 == 0) goto LAB_002d6f6d;\n    lVar7 = uVar13 * 0x20;\n  }\n  puVar4 = (undefined8 *)FUN_00337270(lVar7);\n  puVar6 = (undefined8 *)*param_1;\nLAB_002d6f6d:\n  puVar5 = puVar4;\n  if (param_2 != puVar6) {\n    lVar7 = ((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5) + 1;\n    puVar6 = puVar6 + 2;\n    do {\n      *puVar5 = puVar5 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }\n      else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }\n      puVar9 = puVar5 + 4;\n      puVar5[1] = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar5 = puVar9;\n    } while (puVar9 != puVar4 + lVar7 * 4);\n    puVar5 = puVar4 + lVar7 * 4;\n  }\n  do {\n    lVar7 = *param_3;\n    lVar10 = param_3[1];\n    *puVar5 = puVar5 + 2;\n                    \n    FUN_001caae0(puVar5,lVar7,lVar10 + lVar7);\n    param_3 = param_3 + 4;\n    puVar5 = puVar5 + 4;\n  } while (param_4 != param_3);\n  puVar6 = (undefined8 *)param_1[1];\n  if (param_2 != puVar6) {\n    lVar7 = ((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5) + 1;\n    puVar6 = param_2 + 2;\n    puVar9 = puVar5;\n    do {\n      *puVar9 = puVar9 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }\n      else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }\n      uVar1 = puVar6[-1];\n      puVar8 = puVar9 + 4;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      puVar9[1] = uVar1;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar9 = puVar8;\n    } while (puVar8 != puVar5 + lVar7 * 4);\n    puVar6 = (undefined8 *)param_1[1];\n    puVar5 = puVar5 + lVar7 * 4;\n  }\n  puVar9 = (undefined8 *)*param_1;\n  if (puVar9 != puVar6) {\n    do {\n      if ((undefined8 *)*puVar9 != puVar9 + 2) {\n        FUN_00338a40();\n      }\n      puVar9 = puVar9 + 4;\n    } while (puVar9 != puVar6);\n    puVar6 = (undefined8 *)*param_1;\n  }\n  if (puVar6 != (undefined8 *)0x0) {\n    FUN_00338a40(puVar6);\n  }\n  *param_1 = puVar4;\n  param_1[1] = puVar5;\n  param_1[2] = puVar4 + uVar3 * 4;\n  return;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined8 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "undefined8 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar11;" (sized_type_specifier "long" long) (pointer_declarator "*plVar11" * identifier) ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "ulong uVar13;" type_identifier identifier ;) (declaration "long lVar14;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong local_68;" type_identifier identifier ;) (if_statement "if (param_3 == param_4) {\n    return;\n  }" if (parenthesized_expression "(param_3 == param_4)" ( (binary_expression "param_3 == param_4" identifier == identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "lVar7 = (long)param_4 - (long)param_3;" (assignment_expression "lVar7 = (long)param_4 - (long)param_3" identifier = (binary_expression "(long)param_4 - (long)param_3" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "uVar2 = lVar7 >> 5;" (assignment_expression "uVar2 = lVar7 >> 5" identifier = (binary_expression "lVar7 >> 5" identifier >> number_literal)) ;) (expression_statement "puVar4 = (undefined8 *)param_1[1];" (assignment_expression "puVar4 = (undefined8 *)param_1[1]" identifier = (cast_expression "(undefined8 *)param_1[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (if_statement "if (uVar2 <= (ulong)(param_1[2] - (long)puVar4 >> 5)) {\n    lVar10 = (long)puVar4 - (long)param_2;\n    local_68 = lVar10 >> 5;\n    if (uVar2 < local_68) {\n      lVar10 = (long)puVar4 - lVar7;\n      puVar6 = (undefined8 *)(lVar10 + 0x10);\n      puVar5 = puVar4;\n      do {\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      } while (puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20));\n      param_1[1] = param_1[1] + lVar7;\n      puVar4 = puVar4 + -2;\n      lVar14 = lVar10 - (long)param_2 >> 5;\n      puVar6 = (undefined8 *)(lVar10 + -0x10);\n      if (0 < lVar10 - (long)param_2) {\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }\n      if (0 < lVar7) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }\n    }\n    else {\n      plVar11 = (long *)((long)param_3 + lVar10);\n      puVar6 = puVar4;\n      if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    \n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      puVar6 = puVar6 + (uVar2 - local_68) * 4;\n      param_1[1] = puVar6;\n      if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      param_1[1] = (long)puVar6 + lVar10;\n      if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }\n    }\n    return;\n  }" if (parenthesized_expression "(uVar2 <= (ulong)(param_1[2] - (long)puVar4 >> 5))" ( (binary_expression "uVar2 <= (ulong)(param_1[2] - (long)puVar4 >> 5)" identifier <= (call_expression "(ulong)(param_1[2] - (long)puVar4 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_1[2] - (long)puVar4 >> 5)" ( (binary_expression "param_1[2] - (long)puVar4 >> 5" (binary_expression "param_1[2] - (long)puVar4" (subscript_expression "param_1[2]" identifier [ number_literal ]) - (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) )))) )) (compound_statement "{\n    lVar10 = (long)puVar4 - (long)param_2;\n    local_68 = lVar10 >> 5;\n    if (uVar2 < local_68) {\n      lVar10 = (long)puVar4 - lVar7;\n      puVar6 = (undefined8 *)(lVar10 + 0x10);\n      puVar5 = puVar4;\n      do {\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      } while (puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20));\n      param_1[1] = param_1[1] + lVar7;\n      puVar4 = puVar4 + -2;\n      lVar14 = lVar10 - (long)param_2 >> 5;\n      puVar6 = (undefined8 *)(lVar10 + -0x10);\n      if (0 < lVar10 - (long)param_2) {\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }\n      if (0 < lVar7) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }\n    }\n    else {\n      plVar11 = (long *)((long)param_3 + lVar10);\n      puVar6 = puVar4;\n      if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    \n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      puVar6 = puVar6 + (uVar2 - local_68) * 4;\n      param_1[1] = puVar6;\n      if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      param_1[1] = (long)puVar6 + lVar10;\n      if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }\n    }\n    return;\n  }" { (expression_statement "lVar10 = (long)puVar4 - (long)param_2;" (assignment_expression "lVar10 = (long)puVar4 - (long)param_2" identifier = (binary_expression "(long)puVar4 - (long)param_2" (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "local_68 = lVar10 >> 5;" (assignment_expression "local_68 = lVar10 >> 5" identifier = (binary_expression "lVar10 >> 5" identifier >> number_literal)) ;) (if_statement "if (uVar2 < local_68) {\n      lVar10 = (long)puVar4 - lVar7;\n      puVar6 = (undefined8 *)(lVar10 + 0x10);\n      puVar5 = puVar4;\n      do {\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      } while (puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20));\n      param_1[1] = param_1[1] + lVar7;\n      puVar4 = puVar4 + -2;\n      lVar14 = lVar10 - (long)param_2 >> 5;\n      puVar6 = (undefined8 *)(lVar10 + -0x10);\n      if (0 < lVar10 - (long)param_2) {\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }\n      if (0 < lVar7) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }\n    }\n    else {\n      plVar11 = (long *)((long)param_3 + lVar10);\n      puVar6 = puVar4;\n      if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    \n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      puVar6 = puVar6 + (uVar2 - local_68) * 4;\n      param_1[1] = puVar6;\n      if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      param_1[1] = (long)puVar6 + lVar10;\n      if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }\n    }" if (parenthesized_expression "(uVar2 < local_68)" ( (binary_expression "uVar2 < local_68" identifier < identifier) )) (compound_statement "{\n      lVar10 = (long)puVar4 - lVar7;\n      puVar6 = (undefined8 *)(lVar10 + 0x10);\n      puVar5 = puVar4;\n      do {\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      } while (puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20));\n      param_1[1] = param_1[1] + lVar7;\n      puVar4 = puVar4 + -2;\n      lVar14 = lVar10 - (long)param_2 >> 5;\n      puVar6 = (undefined8 *)(lVar10 + -0x10);\n      if (0 < lVar10 - (long)param_2) {\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }\n      if (0 < lVar7) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }\n    }" { (expression_statement "lVar10 = (long)puVar4 - lVar7;" (assignment_expression "lVar10 = (long)puVar4 - lVar7" identifier = (binary_expression "(long)puVar4 - lVar7" (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - identifier)) ;) (expression_statement "puVar6 = (undefined8 *)(lVar10 + 0x10);" (assignment_expression "puVar6 = (undefined8 *)(lVar10 + 0x10)" identifier = (cast_expression "(undefined8 *)(lVar10 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + 0x10)" ( (binary_expression "lVar10 + 0x10" identifier + number_literal) )))) ;) (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" identifier = identifier) ;) (do_statement "do {\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      } while (puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20));" do (compound_statement "{\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      }" { (expression_statement "*puVar5 = puVar5 + 2;" (assignment_expression "*puVar5 = puVar5 + 2" (pointer_expression "*puVar5" * identifier) = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (if_statement "if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }" if (parenthesized_expression "((undefined8 *)puVar6[-2] == puVar6)" ( (binary_expression "(undefined8 *)puVar6[-2] == puVar6" (cast_expression "(undefined8 *)puVar6[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }" { (expression_statement "uVar1 = puVar6[1];" (assignment_expression "uVar1 = puVar6[1]" identifier = (subscript_expression "puVar6[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5[2] = *puVar6;" (assignment_expression "puVar5[2] = *puVar6" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar5[3] = uVar1;" (assignment_expression "puVar5[3] = uVar1" (subscript_expression "puVar5[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }" else (compound_statement "{\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }" { (expression_statement "*puVar5 = (undefined8 *)puVar6[-2];" (assignment_expression "*puVar5 = (undefined8 *)puVar6[-2]" (pointer_expression "*puVar5" * identifier) = (cast_expression "(undefined8 *)puVar6[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar5[2] = *puVar6;" (assignment_expression "puVar5[2] = *puVar6" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = (pointer_expression "*puVar6" * identifier)) ;) }))) (expression_statement "puVar9 = puVar5 + 4;" (assignment_expression "puVar9 = puVar5 + 4" identifier = (binary_expression "puVar5 + 4" identifier + number_literal)) ;) (expression_statement "puVar5[1] = puVar6[-1];" (assignment_expression "puVar5[1] = puVar6[-1]" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = (subscript_expression "puVar6[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar6[-2] = puVar6;" (assignment_expression "puVar6[-2] = puVar6" (subscript_expression "puVar6[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[-1] = 0;" (assignment_expression "puVar6[-1] = 0" (subscript_expression "puVar6[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar6 = 0;" (assignment_expression "*(undefined1 *)puVar6 = 0" (pointer_expression "*(undefined1 *)puVar6" * (cast_expression "(undefined1 *)puVar6" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar6 = puVar6 + 4;" (assignment_expression "puVar6 = puVar6 + 4" identifier = (binary_expression "puVar6 + 4" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar9;" (assignment_expression "puVar5 = puVar9" identifier = identifier) ;) }) while (parenthesized_expression "(puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20))" ( (binary_expression "puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20)" identifier != (cast_expression "(undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20)" ( (binary_expression "(long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20" (binary_expression "(long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U)" (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U)" ( (binary_expression "(long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U" (binary_expression "(long)puVar4 + (-0x20 - lVar10)" (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-0x20 - lVar10)" ( (binary_expression "-0x20 - lVar10" number_literal - identifier) ))) & number_literal) ))) + number_literal) )))) )) ;) (expression_statement "param_1[1] = param_1[1] + lVar7;" (assignment_expression "param_1[1] = param_1[1] + lVar7" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "param_1[1] + lVar7" (subscript_expression "param_1[1]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "puVar4 = puVar4 + -2;" (assignment_expression "puVar4 = puVar4 + -2" identifier = (binary_expression "puVar4 + -2" identifier + number_literal)) ;) (expression_statement "lVar14 = lVar10 - (long)param_2 >> 5;" (assignment_expression "lVar14 = lVar10 - (long)param_2 >> 5" identifier = (binary_expression "lVar10 - (long)param_2 >> 5" (binary_expression "lVar10 - (long)param_2" identifier - (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (expression_statement "puVar6 = (undefined8 *)(lVar10 + -0x10);" (assignment_expression "puVar6 = (undefined8 *)(lVar10 + -0x10)" identifier = (cast_expression "(undefined8 *)(lVar10 + -0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar10 + -0x10)" ( (binary_expression "lVar10 + -0x10" identifier + number_literal) )))) ;) (if_statement "if (0 < lVar10 - (long)param_2) {\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }" if (parenthesized_expression "(0 < lVar10 - (long)param_2)" ( (binary_expression "0 < lVar10 - (long)param_2" number_literal < (binary_expression "lVar10 - (long)param_2" identifier - (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) )) (compound_statement "{\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }" { (do_statement "do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);" do (compound_statement "{\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        }" { (expression_statement "puVar5 = (undefined8 *)puVar6[-2];" (assignment_expression "puVar5 = (undefined8 *)puVar6[-2]" identifier = (cast_expression "(undefined8 *)puVar6[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar9 = (undefined8 *)puVar4[-2];" (assignment_expression "puVar9 = (undefined8 *)puVar4[-2]" identifier = (cast_expression "(undefined8 *)puVar4[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[-2]" identifier [ number_literal ]))) ;) (if_statement "if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }" if (parenthesized_expression "(puVar5 == puVar6)" ( (binary_expression "puVar5 == puVar6" identifier == identifier) )) (compound_statement "{\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }" { (expression_statement "__n = puVar6[-1];" (assignment_expression "__n = puVar6[-1]" identifier = (subscript_expression "puVar6[-1]" identifier [ number_literal ])) ;) (if_statement "if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (compound_statement "{\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }" { (if_statement "if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }" if (parenthesized_expression "(__n == 1)" ( (binary_expression "__n == 1" identifier == number_literal) )) (compound_statement "{\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }" { (expression_statement "*(undefined1 *)puVar9 = *(undefined1 *)puVar6;" (assignment_expression "*(undefined1 *)puVar9 = *(undefined1 *)puVar6" (pointer_expression "*(undefined1 *)puVar9" * (cast_expression "(undefined1 *)puVar9" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined1 *)puVar6" * (cast_expression "(undefined1 *)puVar6" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar9 = (undefined8 *)puVar4[-2];" (assignment_expression "puVar9 = (undefined8 *)puVar4[-2]" identifier = (cast_expression "(undefined8 *)puVar4[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[-2]" identifier [ number_literal ]))) ;) (expression_statement "__n = puVar6[-1];" (assignment_expression "__n = puVar6[-1]" identifier = (subscript_expression "puVar6[-1]" identifier [ number_literal ])) ;) }) (else_clause "else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }" else (compound_statement "{\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }" { (expression_statement "memcpy(puVar9,puVar6,__n);" (call_expression "memcpy(puVar9,puVar6,__n)" identifier (argument_list "(puVar9,puVar6,__n)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar9 = (undefined8 *)puVar4[-2];" (assignment_expression "puVar9 = (undefined8 *)puVar4[-2]" identifier = (cast_expression "(undefined8 *)puVar4[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[-2]" identifier [ number_literal ]))) ;) (expression_statement "__n = puVar6[-1];" (assignment_expression "__n = puVar6[-1]" identifier = (subscript_expression "puVar6[-1]" identifier [ number_literal ])) ;) }))) })) (expression_statement "puVar4[-1] = __n;" (assignment_expression "puVar4[-1] = __n" (subscript_expression "puVar4[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)((long)puVar9 + __n) = 0;" (assignment_expression "*(undefined1 *)((long)puVar9 + __n) = 0" (pointer_expression "*(undefined1 *)((long)puVar9 + __n)" * (cast_expression "(undefined1 *)((long)puVar9 + __n)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + __n)" ( (binary_expression "(long)puVar9 + __n" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) }) (else_clause "else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }" else (compound_statement "{\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }" { (if_statement "if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }" if (parenthesized_expression "(puVar4 == puVar9)" ( (binary_expression "puVar4 == puVar9" identifier == identifier) )) (compound_statement "{\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }" { (expression_statement "puVar4[-2] = puVar5;" (assignment_expression "puVar4[-2] = puVar5" (subscript_expression "puVar4[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[-1] = puVar6[-1];" (assignment_expression "puVar4[-1] = puVar6[-1]" (subscript_expression "puVar4[-1]" identifier [ number_literal ]) = (subscript_expression "puVar6[-1]" identifier [ number_literal ])) ;) (expression_statement "*puVar4 = *puVar6;" (assignment_expression "*puVar4 = *puVar6" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*puVar6" * identifier)) ;) }) (else_clause "else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }" else (compound_statement "{\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }" { (expression_statement "puVar4[-2] = puVar5;" (assignment_expression "puVar4[-2] = puVar5" (subscript_expression "puVar4[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = *puVar4;" (assignment_expression "uVar1 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar4[-1] = puVar6[-1];" (assignment_expression "puVar4[-1] = puVar6[-1]" (subscript_expression "puVar4[-1]" identifier [ number_literal ]) = (subscript_expression "puVar6[-1]" identifier [ number_literal ])) ;) (expression_statement "*puVar4 = *puVar6;" (assignment_expression "*puVar4 = *puVar6" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*puVar6" * identifier)) ;) (if_statement "if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }" if (parenthesized_expression "(puVar9 != (undefined8 *)0x0)" ( (binary_expression "puVar9 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }" { (expression_statement "puVar6[-2] = puVar9;" (assignment_expression "puVar6[-2] = puVar9" (subscript_expression "puVar6[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar6 = uVar1;" (assignment_expression "*puVar6 = uVar1" (pointer_expression "*puVar6" * identifier) = identifier) ;) (goto_statement "goto LAB_002d717a;" goto statement_identifier ;) })) }))) (expression_statement "puVar6[-2] = puVar6;" (assignment_expression "puVar6[-2] = puVar6" (subscript_expression "puVar6[-2]" identifier [ number_literal ]) = identifier) ;) }))) (labeled_statement "LAB_002d717a:\n          puVar4 = puVar4 + -4;" statement_identifier : (expression_statement "puVar4 = puVar4 + -4;" (assignment_expression "puVar4 = puVar4 + -4" identifier = (binary_expression "puVar4 + -4" identifier + number_literal)) ;)) (expression_statement "puVar6[-1] = 0;" (assignment_expression "puVar6[-1] = 0" (subscript_expression "puVar6[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar6[-2] = 0;" (assignment_expression "*(undefined1 *)puVar6[-2] = 0" (pointer_expression "*(undefined1 *)puVar6[-2]" * (cast_expression "(undefined1 *)puVar6[-2]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[-2]" identifier [ number_literal ]))) = number_literal) ;) (expression_statement "lVar14 = lVar14 + -1;" (assignment_expression "lVar14 = lVar14 + -1" identifier = (binary_expression "lVar14 + -1" identifier + number_literal)) ;) (expression_statement "puVar6 = puVar6 + -4;" (assignment_expression "puVar6 = puVar6 + -4" identifier = (binary_expression "puVar6 + -4" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar14 != 0)" ( (binary_expression "lVar14 != 0" identifier != number_literal) )) ;) })) (if_statement "if (0 < lVar7) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }" if (parenthesized_expression "(0 < lVar7)" ( (binary_expression "0 < lVar7" number_literal < identifier) )) (compound_statement "{\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }" { (do_statement "do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);" do (compound_statement "{\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        }" { (expression_statement "FUN_0033f660(param_2,param_3);" (call_expression "FUN_0033f660(param_2,param_3)" identifier (argument_list "(param_2,param_3)" ( identifier , identifier ))) ;) (expression_statement "uVar2 = uVar2 - 1;" (assignment_expression "uVar2 = uVar2 - 1" identifier = (binary_expression "uVar2 - 1" identifier - number_literal)) ;) (expression_statement "param_3 = param_3 + 4;" (assignment_expression "param_3 = param_3 + 4" identifier = (binary_expression "param_3 + 4" identifier + number_literal)) ;) (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\n      plVar11 = (long *)((long)param_3 + lVar10);\n      puVar6 = puVar4;\n      if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    \n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      puVar6 = puVar6 + (uVar2 - local_68) * 4;\n      param_1[1] = puVar6;\n      if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      param_1[1] = (long)puVar6 + lVar10;\n      if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }\n    }" else (compound_statement "{\n      plVar11 = (long *)((long)param_3 + lVar10);\n      puVar6 = puVar4;\n      if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    \n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      puVar6 = puVar6 + (uVar2 - local_68) * 4;\n      param_1[1] = puVar6;\n      if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      param_1[1] = (long)puVar6 + lVar10;\n      if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }\n    }" { (expression_statement "plVar11 = (long *)((long)param_3 + lVar10);" (assignment_expression "plVar11 = (long *)((long)param_3 + lVar10)" identifier = (cast_expression "(long *)((long)param_3 + lVar10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + lVar10)" ( (binary_expression "(long)param_3 + lVar10" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (expression_statement "puVar6 = puVar4;" (assignment_expression "puVar6 = puVar4" identifier = identifier) ;) (if_statement "if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    \n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }" if (parenthesized_expression "(param_4 != plVar11)" ( (binary_expression "param_4 != plVar11" identifier != identifier) )) (compound_statement "{\n        do {\n          *puVar6 = puVar6 + 2;\n                    \n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }" { (do_statement "do {\n          *puVar6 = puVar6 + 2;\n                    \n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);" do (compound_statement "{\n          *puVar6 = puVar6 + 2;\n                    \n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        }" { (expression_statement "*puVar6 = puVar6 + 2;" (assignment_expression "*puVar6 = puVar6 + 2" (pointer_expression "*puVar6" * identifier) = (binary_expression "puVar6 + 2" identifier + number_literal)) ;) (expression_statement "FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);" (call_expression "FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11)" identifier (argument_list "(puVar6,*plVar11,plVar11[1] + *plVar11)" ( identifier , (pointer_expression "*plVar11" * identifier) , (binary_expression "plVar11[1] + *plVar11" (subscript_expression "plVar11[1]" identifier [ number_literal ]) + (pointer_expression "*plVar11" * identifier)) ))) ;) (expression_statement "plVar11 = plVar11 + 4;" (assignment_expression "plVar11 = plVar11 + 4" identifier = (binary_expression "plVar11 + 4" identifier + number_literal)) ;) (expression_statement "puVar6 = puVar6 + 4;" (assignment_expression "puVar6 = puVar6 + 4" identifier = (binary_expression "puVar6 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_4 != plVar11)" ( (binary_expression "param_4 != plVar11" identifier != identifier) )) ;) (expression_statement "puVar6 = (undefined8 *)param_1[1];" (assignment_expression "puVar6 = (undefined8 *)param_1[1]" identifier = (cast_expression "(undefined8 *)param_1[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) })) (expression_statement "puVar6 = puVar6 + (uVar2 - local_68) * 4;" (assignment_expression "puVar6 = puVar6 + (uVar2 - local_68) * 4" identifier = (binary_expression "puVar6 + (uVar2 - local_68) * 4" identifier + (binary_expression "(uVar2 - local_68) * 4" (parenthesized_expression "(uVar2 - local_68)" ( (binary_expression "uVar2 - local_68" identifier - identifier) )) * number_literal))) ;) (expression_statement "param_1[1] = puVar6;" (assignment_expression "param_1[1] = puVar6" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }" if (parenthesized_expression "(puVar4 != param_2)" ( (binary_expression "puVar4 != param_2" identifier != identifier) )) (compound_statement "{\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }" { (expression_statement "puVar5 = param_2 + 2;" (assignment_expression "puVar5 = param_2 + 2" identifier = (binary_expression "param_2 + 2" identifier + number_literal)) ;) (expression_statement "puVar9 = puVar6;" (assignment_expression "puVar9 = puVar6" identifier = identifier) ;) (do_statement "do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));" do (compound_statement "{\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        }" { (expression_statement "*puVar9 = puVar9 + 2;" (assignment_expression "*puVar9 = puVar9 + 2" (pointer_expression "*puVar9" * identifier) = (binary_expression "puVar9 + 2" identifier + number_literal)) ;) (if_statement "if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }" if (parenthesized_expression "((undefined8 *)puVar5[-2] == puVar5)" ( (binary_expression "(undefined8 *)puVar5[-2] == puVar5" (cast_expression "(undefined8 *)puVar5[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar5[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }" { (expression_statement "uVar1 = puVar5[1];" (assignment_expression "uVar1 = puVar5[1]" identifier = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "puVar9[2] = *puVar5;" (assignment_expression "puVar9[2] = *puVar5" (subscript_expression "puVar9[2]" identifier [ number_literal ]) = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar9[3] = uVar1;" (assignment_expression "puVar9[3] = uVar1" (subscript_expression "puVar9[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }" else (compound_statement "{\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }" { (expression_statement "*puVar9 = (undefined8 *)puVar5[-2];" (assignment_expression "*puVar9 = (undefined8 *)puVar5[-2]" (pointer_expression "*puVar9" * identifier) = (cast_expression "(undefined8 *)puVar5[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar5[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar9[2] = *puVar5;" (assignment_expression "puVar9[2] = *puVar5" (subscript_expression "puVar9[2]" identifier [ number_literal ]) = (pointer_expression "*puVar5" * identifier)) ;) }))) (expression_statement "puVar8 = puVar9 + 4;" (assignment_expression "puVar8 = puVar9 + 4" identifier = (binary_expression "puVar9 + 4" identifier + number_literal)) ;) (expression_statement "puVar9[1] = puVar5[-1];" (assignment_expression "puVar9[1] = puVar5[-1]" (subscript_expression "puVar9[1]" identifier [ number_literal ]) = (subscript_expression "puVar5[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar5[-2] = puVar5;" (assignment_expression "puVar5[-2] = puVar5" (subscript_expression "puVar5[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar5[-1] = 0;" (assignment_expression "puVar5[-1] = 0" (subscript_expression "puVar5[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar5 = 0;" (assignment_expression "*(undefined1 *)puVar5 = 0" (pointer_expression "*(undefined1 *)puVar5" * (cast_expression "(undefined1 *)puVar5" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar5 = puVar5 + 4;" (assignment_expression "puVar5 = puVar5 + 4" identifier = (binary_expression "puVar5 + 4" identifier + number_literal)) ;) (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" identifier = identifier) ;) }) while (parenthesized_expression "(puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20))" ( (binary_expression "puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20)" identifier != (cast_expression "(undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20)" ( (binary_expression "(long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20" (binary_expression "(long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U)" (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U)" ( (binary_expression "(long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U" (binary_expression "(long)puVar4 + (-0x20 - (long)param_2)" (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-0x20 - (long)param_2)" ( (binary_expression "-0x20 - (long)param_2" number_literal - (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) & number_literal) ))) + number_literal) )))) )) ;) (expression_statement "puVar6 = (undefined8 *)param_1[1];" (assignment_expression "puVar6 = (undefined8 *)param_1[1]" identifier = (cast_expression "(undefined8 *)param_1[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) })) (expression_statement "param_1[1] = (long)puVar6 + lVar10;" (assignment_expression "param_1[1] = (long)puVar6 + lVar10" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "(long)puVar6 + lVar10" (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier)) ;) (if_statement "if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }" if (parenthesized_expression "(0 < lVar10)" ( (binary_expression "0 < lVar10" number_literal < identifier) )) (compound_statement "{\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }" { (do_statement "do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);" do (compound_statement "{\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        }" { (expression_statement "FUN_0033f660(param_2,param_3);" (call_expression "FUN_0033f660(param_2,param_3)" identifier (argument_list "(param_2,param_3)" ( identifier , identifier ))) ;) (expression_statement "local_68 = local_68 - 1;" (assignment_expression "local_68 = local_68 - 1" identifier = (binary_expression "local_68 - 1" identifier - number_literal)) ;) (expression_statement "param_3 = param_3 + 4;" (assignment_expression "param_3 = param_3 + 4" identifier = (binary_expression "param_3 + 4" identifier + number_literal)) ;) (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_68 != 0)" ( (binary_expression "local_68 != 0" identifier != number_literal) )) ;) })) }))) (return_statement "return;" return ;) })) (expression_statement "puVar6 = (undefined8 *)*param_1;" (assignment_expression "puVar6 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar3 = 0x7ffffffffffffff;" (assignment_expression "uVar3 = 0x7ffffffffffffff" identifier = number_literal) ;) (expression_statement "uVar12 = (long)puVar4 - (long)puVar6 >> 5;" (assignment_expression "uVar12 = (long)puVar4 - (long)puVar6 >> 5" identifier = (binary_expression "(long)puVar4 - (long)puVar6 >> 5" (binary_expression "(long)puVar4 - (long)puVar6" (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (if_statement "if (0x7ffffffffffffff - uVar12 < uVar2) {\n                    \n    FUN_00377370("vector::_M_range_insert");\n  }" if (parenthesized_expression "(0x7ffffffffffffff - uVar12 < uVar2)" ( (binary_expression "0x7ffffffffffffff - uVar12 < uVar2" (binary_expression "0x7ffffffffffffff - uVar12" number_literal - identifier) < identifier) )) (compound_statement "{\n                    \n    FUN_00377370("vector::_M_range_insert");\n  }" { (expression_statement "FUN_00377370("vector::_M_range_insert");" (call_expression "FUN_00377370("vector::_M_range_insert")" identifier (argument_list "("vector::_M_range_insert")" ( (string_literal ""vector::_M_range_insert"" " string_content ") ))) ;) })) (if_statement "if (uVar2 < uVar12) {\n    uVar2 = uVar12;\n  }" if (parenthesized_expression "(uVar2 < uVar12)" ( (binary_expression "uVar2 < uVar12" identifier < identifier) )) (compound_statement "{\n    uVar2 = uVar12;\n  }" { (expression_statement "uVar2 = uVar12;" (assignment_expression "uVar2 = uVar12" identifier = identifier) ;) })) (expression_statement "uVar13 = uVar12 + uVar2;" (assignment_expression "uVar13 = uVar12 + uVar2" identifier = (binary_expression "uVar12 + uVar2" identifier + identifier)) ;) (if_statement "if ((CARRY8(uVar12,uVar2)) || (0x7ffffffffffffff < uVar13)) {\n    lVar7 = -0x20;\n  }\n  else {\n    puVar4 = (undefined8 *)0x0;\n    uVar3 = uVar13;\n    if (uVar13 == 0) goto LAB_002d6f6d;\n    lVar7 = uVar13 * 0x20;\n  }" if (parenthesized_expression "((CARRY8(uVar12,uVar2)) || (0x7ffffffffffffff < uVar13))" ( (binary_expression "(CARRY8(uVar12,uVar2)) || (0x7ffffffffffffff < uVar13)" (parenthesized_expression "(CARRY8(uVar12,uVar2))" ( (call_expression "CARRY8(uVar12,uVar2)" identifier (argument_list "(uVar12,uVar2)" ( identifier , identifier ))) )) || (parenthesized_expression "(0x7ffffffffffffff < uVar13)" ( (binary_expression "0x7ffffffffffffff < uVar13" number_literal < identifier) ))) )) (compound_statement "{\n    lVar7 = -0x20;\n  }" { (expression_statement "lVar7 = -0x20;" (assignment_expression "lVar7 = -0x20" identifier = number_literal) ;) }) (else_clause "else {\n    puVar4 = (undefined8 *)0x0;\n    uVar3 = uVar13;\n    if (uVar13 == 0) goto LAB_002d6f6d;\n    lVar7 = uVar13 * 0x20;\n  }" else (compound_statement "{\n    puVar4 = (undefined8 *)0x0;\n    uVar3 = uVar13;\n    if (uVar13 == 0) goto LAB_002d6f6d;\n    lVar7 = uVar13 * 0x20;\n  }" { (expression_statement "puVar4 = (undefined8 *)0x0;" (assignment_expression "puVar4 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar3 = uVar13;" (assignment_expression "uVar3 = uVar13" identifier = identifier) ;) (if_statement "if (uVar13 == 0) goto LAB_002d6f6d;" if (parenthesized_expression "(uVar13 == 0)" ( (binary_expression "uVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_002d6f6d;" goto statement_identifier ;)) (expression_statement "lVar7 = uVar13 * 0x20;" (assignment_expression "lVar7 = uVar13 * 0x20" identifier = (binary_expression "uVar13 * 0x20" identifier * number_literal)) ;) }))) (expression_statement "puVar4 = (undefined8 *)FUN_00337270(lVar7);" (assignment_expression "puVar4 = (undefined8 *)FUN_00337270(lVar7)" identifier = (cast_expression "(undefined8 *)FUN_00337270(lVar7)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00337270(lVar7)" identifier (argument_list "(lVar7)" ( identifier ))))) ;) (expression_statement "puVar6 = (undefined8 *)*param_1;" (assignment_expression "puVar6 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (labeled_statement "LAB_002d6f6d:\n  puVar5 = puVar4;" statement_identifier : (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" identifier = identifier) ;)) (if_statement "if (param_2 != puVar6) {\n    lVar7 = ((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5) + 1;\n    puVar6 = puVar6 + 2;\n    do {\n      *puVar5 = puVar5 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }\n      else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }\n      puVar9 = puVar5 + 4;\n      puVar5[1] = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar5 = puVar9;\n    } while (puVar9 != puVar4 + lVar7 * 4);\n    puVar5 = puVar4 + lVar7 * 4;\n  }" if (parenthesized_expression "(param_2 != puVar6)" ( (binary_expression "param_2 != puVar6" identifier != identifier) )) (compound_statement "{\n    lVar7 = ((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5) + 1;\n    puVar6 = puVar6 + 2;\n    do {\n      *puVar5 = puVar5 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }\n      else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }\n      puVar9 = puVar5 + 4;\n      puVar5[1] = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar5 = puVar9;\n    } while (puVar9 != puVar4 + lVar7 * 4);\n    puVar5 = puVar4 + lVar7 * 4;\n  }" { (expression_statement "lVar7 = ((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5) + 1;" (assignment_expression "lVar7 = ((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5) + 1" identifier = (binary_expression "((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5) + 1" (parenthesized_expression "((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5)" ( (binary_expression "(ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5" (call_expression "(ulong)((long)param_2 + (-0x20 - (long)puVar6))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)param_2 + (-0x20 - (long)puVar6))" ( (binary_expression "(long)param_2 + (-0x20 - (long)puVar6)" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-0x20 - (long)puVar6)" ( (binary_expression "-0x20 - (long)puVar6" number_literal - (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ))) >> number_literal) )) + number_literal)) ;) (expression_statement "puVar6 = puVar6 + 2;" (assignment_expression "puVar6 = puVar6 + 2" identifier = (binary_expression "puVar6 + 2" identifier + number_literal)) ;) (do_statement "do {\n      *puVar5 = puVar5 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }\n      else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }\n      puVar9 = puVar5 + 4;\n      puVar5[1] = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar5 = puVar9;\n    } while (puVar9 != puVar4 + lVar7 * 4);" do (compound_statement "{\n      *puVar5 = puVar5 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }\n      else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }\n      puVar9 = puVar5 + 4;\n      puVar5[1] = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar5 = puVar9;\n    }" { (expression_statement "*puVar5 = puVar5 + 2;" (assignment_expression "*puVar5 = puVar5 + 2" (pointer_expression "*puVar5" * identifier) = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (if_statement "if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }\n      else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }" if (parenthesized_expression "((undefined8 *)puVar6[-2] == puVar6)" ( (binary_expression "(undefined8 *)puVar6[-2] == puVar6" (cast_expression "(undefined8 *)puVar6[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }" { (expression_statement "uVar1 = puVar6[1];" (assignment_expression "uVar1 = puVar6[1]" identifier = (subscript_expression "puVar6[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5[2] = *puVar6;" (assignment_expression "puVar5[2] = *puVar6" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar5[3] = uVar1;" (assignment_expression "puVar5[3] = uVar1" (subscript_expression "puVar5[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }" else (compound_statement "{\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }" { (expression_statement "*puVar5 = (undefined8 *)puVar6[-2];" (assignment_expression "*puVar5 = (undefined8 *)puVar6[-2]" (pointer_expression "*puVar5" * identifier) = (cast_expression "(undefined8 *)puVar6[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar5[2] = *puVar6;" (assignment_expression "puVar5[2] = *puVar6" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = (pointer_expression "*puVar6" * identifier)) ;) }))) (expression_statement "puVar9 = puVar5 + 4;" (assignment_expression "puVar9 = puVar5 + 4" identifier = (binary_expression "puVar5 + 4" identifier + number_literal)) ;) (expression_statement "puVar5[1] = puVar6[-1];" (assignment_expression "puVar5[1] = puVar6[-1]" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = (subscript_expression "puVar6[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar6[-2] = puVar6;" (assignment_expression "puVar6[-2] = puVar6" (subscript_expression "puVar6[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[-1] = 0;" (assignment_expression "puVar6[-1] = 0" (subscript_expression "puVar6[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar6 = 0;" (assignment_expression "*(undefined1 *)puVar6 = 0" (pointer_expression "*(undefined1 *)puVar6" * (cast_expression "(undefined1 *)puVar6" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar6 = puVar6 + 4;" (assignment_expression "puVar6 = puVar6 + 4" identifier = (binary_expression "puVar6 + 4" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar9;" (assignment_expression "puVar5 = puVar9" identifier = identifier) ;) }) while (parenthesized_expression "(puVar9 != puVar4 + lVar7 * 4)" ( (binary_expression "puVar9 != puVar4 + lVar7 * 4" identifier != (binary_expression "puVar4 + lVar7 * 4" identifier + (binary_expression "lVar7 * 4" identifier * number_literal))) )) ;) (expression_statement "puVar5 = puVar4 + lVar7 * 4;" (assignment_expression "puVar5 = puVar4 + lVar7 * 4" identifier = (binary_expression "puVar4 + lVar7 * 4" identifier + (binary_expression "lVar7 * 4" identifier * number_literal))) ;) })) (do_statement "do {\n    lVar7 = *param_3;\n    lVar10 = param_3[1];\n    *puVar5 = puVar5 + 2;\n                    \n    FUN_001caae0(puVar5,lVar7,lVar10 + lVar7);\n    param_3 = param_3 + 4;\n    puVar5 = puVar5 + 4;\n  } while (param_4 != param_3);" do (compound_statement "{\n    lVar7 = *param_3;\n    lVar10 = param_3[1];\n    *puVar5 = puVar5 + 2;\n                    \n    FUN_001caae0(puVar5,lVar7,lVar10 + lVar7);\n    param_3 = param_3 + 4;\n    puVar5 = puVar5 + 4;\n  }" { (expression_statement "lVar7 = *param_3;" (assignment_expression "lVar7 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "lVar10 = param_3[1];" (assignment_expression "lVar10 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "*puVar5 = puVar5 + 2;" (assignment_expression "*puVar5 = puVar5 + 2" (pointer_expression "*puVar5" * identifier) = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "FUN_001caae0(puVar5,lVar7,lVar10 + lVar7);" (call_expression "FUN_001caae0(puVar5,lVar7,lVar10 + lVar7)" identifier (argument_list "(puVar5,lVar7,lVar10 + lVar7)" ( identifier , identifier , (binary_expression "lVar10 + lVar7" identifier + identifier) ))) ;) (expression_statement "param_3 = param_3 + 4;" (assignment_expression "param_3 = param_3 + 4" identifier = (binary_expression "param_3 + 4" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar5 + 4;" (assignment_expression "puVar5 = puVar5 + 4" identifier = (binary_expression "puVar5 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_4 != param_3)" ( (binary_expression "param_4 != param_3" identifier != identifier) )) ;) (expression_statement "puVar6 = (undefined8 *)param_1[1];" (assignment_expression "puVar6 = (undefined8 *)param_1[1]" identifier = (cast_expression "(undefined8 *)param_1[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (if_statement "if (param_2 != puVar6) {\n    lVar7 = ((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5) + 1;\n    puVar6 = param_2 + 2;\n    puVar9 = puVar5;\n    do {\n      *puVar9 = puVar9 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }\n      else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }\n      uVar1 = puVar6[-1];\n      puVar8 = puVar9 + 4;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      puVar9[1] = uVar1;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar9 = puVar8;\n    } while (puVar8 != puVar5 + lVar7 * 4);\n    puVar6 = (undefined8 *)param_1[1];\n    puVar5 = puVar5 + lVar7 * 4;\n  }" if (parenthesized_expression "(param_2 != puVar6)" ( (binary_expression "param_2 != puVar6" identifier != identifier) )) (compound_statement "{\n    lVar7 = ((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5) + 1;\n    puVar6 = param_2 + 2;\n    puVar9 = puVar5;\n    do {\n      *puVar9 = puVar9 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }\n      else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }\n      uVar1 = puVar6[-1];\n      puVar8 = puVar9 + 4;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      puVar9[1] = uVar1;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar9 = puVar8;\n    } while (puVar8 != puVar5 + lVar7 * 4);\n    puVar6 = (undefined8 *)param_1[1];\n    puVar5 = puVar5 + lVar7 * 4;\n  }" { (expression_statement "lVar7 = ((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5) + 1;" (assignment_expression "lVar7 = ((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5) + 1" identifier = (binary_expression "((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5) + 1" (parenthesized_expression "((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5)" ( (binary_expression "(ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5" (call_expression "(ulong)((long)puVar6 + (-0x20 - (long)param_2))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)puVar6 + (-0x20 - (long)param_2))" ( (binary_expression "(long)puVar6 + (-0x20 - (long)param_2)" (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-0x20 - (long)param_2)" ( (binary_expression "-0x20 - (long)param_2" number_literal - (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ))) >> number_literal) )) + number_literal)) ;) (expression_statement "puVar6 = param_2 + 2;" (assignment_expression "puVar6 = param_2 + 2" identifier = (binary_expression "param_2 + 2" identifier + number_literal)) ;) (expression_statement "puVar9 = puVar5;" (assignment_expression "puVar9 = puVar5" identifier = identifier) ;) (do_statement "do {\n      *puVar9 = puVar9 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }\n      else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }\n      uVar1 = puVar6[-1];\n      puVar8 = puVar9 + 4;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      puVar9[1] = uVar1;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar9 = puVar8;\n    } while (puVar8 != puVar5 + lVar7 * 4);" do (compound_statement "{\n      *puVar9 = puVar9 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }\n      else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }\n      uVar1 = puVar6[-1];\n      puVar8 = puVar9 + 4;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      puVar9[1] = uVar1;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar9 = puVar8;\n    }" { (expression_statement "*puVar9 = puVar9 + 2;" (assignment_expression "*puVar9 = puVar9 + 2" (pointer_expression "*puVar9" * identifier) = (binary_expression "puVar9 + 2" identifier + number_literal)) ;) (if_statement "if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }\n      else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }" if (parenthesized_expression "((undefined8 *)puVar6[-2] == puVar6)" ( (binary_expression "(undefined8 *)puVar6[-2] == puVar6" (cast_expression "(undefined8 *)puVar6[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }" { (expression_statement "uVar1 = puVar6[1];" (assignment_expression "uVar1 = puVar6[1]" identifier = (subscript_expression "puVar6[1]" identifier [ number_literal ])) ;) (expression_statement "puVar9[2] = *puVar6;" (assignment_expression "puVar9[2] = *puVar6" (subscript_expression "puVar9[2]" identifier [ number_literal ]) = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar9[3] = uVar1;" (assignment_expression "puVar9[3] = uVar1" (subscript_expression "puVar9[3]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }" else (compound_statement "{\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }" { (expression_statement "*puVar9 = (undefined8 *)puVar6[-2];" (assignment_expression "*puVar9 = (undefined8 *)puVar6[-2]" (pointer_expression "*puVar9" * identifier) = (cast_expression "(undefined8 *)puVar6[-2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar6[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar9[2] = *puVar6;" (assignment_expression "puVar9[2] = *puVar6" (subscript_expression "puVar9[2]" identifier [ number_literal ]) = (pointer_expression "*puVar6" * identifier)) ;) }))) (expression_statement "uVar1 = puVar6[-1];" (assignment_expression "uVar1 = puVar6[-1]" identifier = (subscript_expression "puVar6[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar8 = puVar9 + 4;" (assignment_expression "puVar8 = puVar9 + 4" identifier = (binary_expression "puVar9 + 4" identifier + number_literal)) ;) (expression_statement "puVar6[-2] = puVar6;" (assignment_expression "puVar6[-2] = puVar6" (subscript_expression "puVar6[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[-1] = 0;" (assignment_expression "puVar6[-1] = 0" (subscript_expression "puVar6[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar9[1] = uVar1;" (assignment_expression "puVar9[1] = uVar1" (subscript_expression "puVar9[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)puVar6 = 0;" (assignment_expression "*(undefined1 *)puVar6 = 0" (pointer_expression "*(undefined1 *)puVar6" * (cast_expression "(undefined1 *)puVar6" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar6 = puVar6 + 4;" (assignment_expression "puVar6 = puVar6 + 4" identifier = (binary_expression "puVar6 + 4" identifier + number_literal)) ;) (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" identifier = identifier) ;) }) while (parenthesized_expression "(puVar8 != puVar5 + lVar7 * 4)" ( (binary_expression "puVar8 != puVar5 + lVar7 * 4" identifier != (binary_expression "puVar5 + lVar7 * 4" identifier + (binary_expression "lVar7 * 4" identifier * number_literal))) )) ;) (expression_statement "puVar6 = (undefined8 *)param_1[1];" (assignment_expression "puVar6 = (undefined8 *)param_1[1]" identifier = (cast_expression "(undefined8 *)param_1[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "puVar5 = puVar5 + lVar7 * 4;" (assignment_expression "puVar5 = puVar5 + lVar7 * 4" identifier = (binary_expression "puVar5 + lVar7 * 4" identifier + (binary_expression "lVar7 * 4" identifier * number_literal))) ;) })) (expression_statement "puVar9 = (undefined8 *)*param_1;" (assignment_expression "puVar9 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (puVar9 != puVar6) {\n    do {\n      if ((undefined8 *)*puVar9 != puVar9 + 2) {\n        FUN_00338a40();\n      }\n      puVar9 = puVar9 + 4;\n    } while (puVar9 != puVar6);\n    puVar6 = (undefined8 *)*param_1;\n  }" if (parenthesized_expression "(puVar9 != puVar6)" ( (binary_expression "puVar9 != puVar6" identifier != identifier) )) (compound_statement "{\n    do {\n      if ((undefined8 *)*puVar9 != puVar9 + 2) {\n        FUN_00338a40();\n      }\n      puVar9 = puVar9 + 4;\n    } while (puVar9 != puVar6);\n    puVar6 = (undefined8 *)*param_1;\n  }" { (do_statement "do {\n      if ((undefined8 *)*puVar9 != puVar9 + 2) {\n        FUN_00338a40();\n      }\n      puVar9 = puVar9 + 4;\n    } while (puVar9 != puVar6);" do (compound_statement "{\n      if ((undefined8 *)*puVar9 != puVar9 + 2) {\n        FUN_00338a40();\n      }\n      puVar9 = puVar9 + 4;\n    }" { (if_statement "if ((undefined8 *)*puVar9 != puVar9 + 2) {\n        FUN_00338a40();\n      }" if (parenthesized_expression "((undefined8 *)*puVar9 != puVar9 + 2)" ( (binary_expression "(undefined8 *)*puVar9 != puVar9 + 2" (cast_expression "(undefined8 *)*puVar9" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar9" * identifier)) != (binary_expression "puVar9 + 2" identifier + number_literal)) )) (compound_statement "{\n        FUN_00338a40();\n      }" { (expression_statement "FUN_00338a40();" (call_expression "FUN_00338a40()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "puVar9 = puVar9 + 4;" (assignment_expression "puVar9 = puVar9 + 4" identifier = (binary_expression "puVar9 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar9 != puVar6)" ( (binary_expression "puVar9 != puVar6" identifier != identifier) )) ;) (expression_statement "puVar6 = (undefined8 *)*param_1;" (assignment_expression "puVar6 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) })) (if_statement "if (puVar6 != (undefined8 *)0x0) {\n    FUN_00338a40(puVar6);\n  }" if (parenthesized_expression "(puVar6 != (undefined8 *)0x0)" ( (binary_expression "puVar6 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    FUN_00338a40(puVar6);\n  }" { (expression_statement "FUN_00338a40(puVar6);" (call_expression "FUN_00338a40(puVar6)" identifier (argument_list "(puVar6)" ( identifier ))) ;) })) (expression_statement "*param_1 = puVar4;" (assignment_expression "*param_1 = puVar4" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = puVar5;" (assignment_expression "param_1[1] = puVar5" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = puVar4 + uVar3 * 4;" (assignment_expression "param_1[2] = puVar4 + uVar3 * 4" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (binary_expression "puVar4 + uVar3 * 4" identifier + (binary_expression "uVar3 * 4" identifier * number_literal))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) >> LIT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - IDENT) ))) & LIT) ))) + LIT) )))) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (return_statement return ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) 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 (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , (binary_expression (subscript_expression IDENT [ LIT ]) + (pointer_expression * 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) * LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ))) & LIT) ))) + LIT) )))) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) }))) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression LIT - IDENT) < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (call_expression IDENT (argument_list ( IDENT , IDENT ))) )) || (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ))) ))) >> LIT) )) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + (binary_expression IDENT * LIT))) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ))) ))) >> LIT) )) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + (binary_expression IDENT * LIT))) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) != (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (return_statement return ;) })))
(function_definition "void FUN_002d6e10(undefined8 *param_1,undefined8 *param_2,long *param_3,long *param_4)\n\n{\n  undefined8 uVar1;\n  ulong uVar2;\n  ulong uVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  undefined8 *puVar6;\n  long lVar7;\n  undefined8 *puVar8;\n  size_t __n;\n  undefined8 *puVar9;\n  long lVar10;\n  long *plVar11;\n  ulong uVar12;\n  ulong uVar13;\n  long lVar14;\n  ulong local_68;\n  \n  if (param_3 == param_4) {\n    return;\n  }\n  lVar7 = (long)param_4 - (long)param_3;\n  uVar2 = lVar7 >> 5;\n  puVar4 = (undefined8 *)param_1[1];\n  if (uVar2 <= (ulong)(param_1[2] - (long)puVar4 >> 5)) {\n    lVar10 = (long)puVar4 - (long)param_2;\n    local_68 = lVar10 >> 5;\n    if (uVar2 < local_68) {\n      lVar10 = (long)puVar4 - lVar7;\n      puVar6 = (undefined8 *)(lVar10 + 0x10);\n      puVar5 = puVar4;\n      do {\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      } while (puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20));\n      param_1[1] = param_1[1] + lVar7;\n      puVar4 = puVar4 + -2;\n      lVar14 = lVar10 - (long)param_2 >> 5;\n      puVar6 = (undefined8 *)(lVar10 + -0x10);\n      if (0 < lVar10 - (long)param_2) {\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }\n      if (0 < lVar7) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }\n    }\n    else {\n      plVar11 = (long *)((long)param_3 + lVar10);\n      puVar6 = puVar4;\n      if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    \n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      puVar6 = puVar6 + (uVar2 - local_68) * 4;\n      param_1[1] = puVar6;\n      if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      param_1[1] = (long)puVar6 + lVar10;\n      if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }\n    }\n    return;\n  }\n  puVar6 = (undefined8 *)*param_1;\n  uVar3 = 0x7ffffffffffffff;\n  uVar12 = (long)puVar4 - (long)puVar6 >> 5;\n  if (0x7ffffffffffffff - uVar12 < uVar2) {\n                    \n    FUN_00377370("vector::_M_range_insert");\n  }\n  if (uVar2 < uVar12) {\n    uVar2 = uVar12;\n  }\n  uVar13 = uVar12 + uVar2;\n  if ((CARRY8(uVar12,uVar2)) || (0x7ffffffffffffff < uVar13)) {\n    lVar7 = -0x20;\n  }\n  else {\n    puVar4 = (undefined8 *)0x0;\n    uVar3 = uVar13;\n    if (uVar13 == 0) goto LAB_002d6f6d;\n    lVar7 = uVar13 * 0x20;\n  }\n  puVar4 = (undefined8 *)FUN_00337270(lVar7);\n  puVar6 = (undefined8 *)*param_1;\nLAB_002d6f6d:\n  puVar5 = puVar4;\n  if (param_2 != puVar6) {\n    lVar7 = ((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5) + 1;\n    puVar6 = puVar6 + 2;\n    do {\n      *puVar5 = puVar5 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }\n      else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }\n      puVar9 = puVar5 + 4;\n      puVar5[1] = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar5 = puVar9;\n    } while (puVar9 != puVar4 + lVar7 * 4);\n    puVar5 = puVar4 + lVar7 * 4;\n  }\n  do {\n    lVar7 = *param_3;\n    lVar10 = param_3[1];\n    *puVar5 = puVar5 + 2;\n                    \n    FUN_001caae0(puVar5,lVar7,lVar10 + lVar7);\n    param_3 = param_3 + 4;\n    puVar5 = puVar5 + 4;\n  } while (param_4 != param_3);\n  puVar6 = (undefined8 *)param_1[1];\n  if (param_2 != puVar6) {\n    lVar7 = ((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5) + 1;\n    puVar6 = param_2 + 2;\n    puVar9 = puVar5;\n    do {\n      *puVar9 = puVar9 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }\n      else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }\n      uVar1 = puVar6[-1];\n      puVar8 = puVar9 + 4;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      puVar9[1] = uVar1;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar9 = puVar8;\n    } while (puVar8 != puVar5 + lVar7 * 4);\n    puVar6 = (undefined8 *)param_1[1];\n    puVar5 = puVar5 + lVar7 * 4;\n  }\n  puVar9 = (undefined8 *)*param_1;\n  if (puVar9 != puVar6) {\n    do {\n      if ((undefined8 *)*puVar9 != puVar9 + 2) {\n        FUN_00338a40();\n      }\n      puVar9 = puVar9 + 4;\n    } while (puVar9 != puVar6);\n    puVar6 = (undefined8 *)*param_1;\n  }\n  if (puVar6 != (undefined8 *)0x0) {\n    FUN_00338a40(puVar6);\n  }\n  *param_1 = puVar4;\n  param_1[1] = puVar5;\n  param_1[2] = puVar4 + uVar3 * 4;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_002d6e10(undefined8 *param_1,undefined8 *param_2,long *param_3,long *param_4)" (identifier "FUN_002d6e10") (parameter_list "(undefined8 *param_1,undefined8 *param_2,long *param_3,long *param_4)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined8 *param_2" (type_identifier "undefined8") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "long *param_3" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "long *param_4" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  undefined8 uVar1;\n  ulong uVar2;\n  ulong uVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  undefined8 *puVar6;\n  long lVar7;\n  undefined8 *puVar8;\n  size_t __n;\n  undefined8 *puVar9;\n  long lVar10;\n  long *plVar11;\n  ulong uVar12;\n  ulong uVar13;\n  long lVar14;\n  ulong local_68;\n  \n  if (param_3 == param_4) {\n    return;\n  }\n  lVar7 = (long)param_4 - (long)param_3;\n  uVar2 = lVar7 >> 5;\n  puVar4 = (undefined8 *)param_1[1];\n  if (uVar2 <= (ulong)(param_1[2] - (long)puVar4 >> 5)) {\n    lVar10 = (long)puVar4 - (long)param_2;\n    local_68 = lVar10 >> 5;\n    if (uVar2 < local_68) {\n      lVar10 = (long)puVar4 - lVar7;\n      puVar6 = (undefined8 *)(lVar10 + 0x10);\n      puVar5 = puVar4;\n      do {\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      } while (puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20));\n      param_1[1] = param_1[1] + lVar7;\n      puVar4 = puVar4 + -2;\n      lVar14 = lVar10 - (long)param_2 >> 5;\n      puVar6 = (undefined8 *)(lVar10 + -0x10);\n      if (0 < lVar10 - (long)param_2) {\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }\n      if (0 < lVar7) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }\n    }\n    else {\n      plVar11 = (long *)((long)param_3 + lVar10);\n      puVar6 = puVar4;\n      if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    \n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      puVar6 = puVar6 + (uVar2 - local_68) * 4;\n      param_1[1] = puVar6;\n      if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      param_1[1] = (long)puVar6 + lVar10;\n      if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }\n    }\n    return;\n  }\n  puVar6 = (undefined8 *)*param_1;\n  uVar3 = 0x7ffffffffffffff;\n  uVar12 = (long)puVar4 - (long)puVar6 >> 5;\n  if (0x7ffffffffffffff - uVar12 < uVar2) {\n                    \n    FUN_00377370("vector::_M_range_insert");\n  }\n  if (uVar2 < uVar12) {\n    uVar2 = uVar12;\n  }\n  uVar13 = uVar12 + uVar2;\n  if ((CARRY8(uVar12,uVar2)) || (0x7ffffffffffffff < uVar13)) {\n    lVar7 = -0x20;\n  }\n  else {\n    puVar4 = (undefined8 *)0x0;\n    uVar3 = uVar13;\n    if (uVar13 == 0) goto LAB_002d6f6d;\n    lVar7 = uVar13 * 0x20;\n  }\n  puVar4 = (undefined8 *)FUN_00337270(lVar7);\n  puVar6 = (undefined8 *)*param_1;\nLAB_002d6f6d:\n  puVar5 = puVar4;\n  if (param_2 != puVar6) {\n    lVar7 = ((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5) + 1;\n    puVar6 = puVar6 + 2;\n    do {\n      *puVar5 = puVar5 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }\n      else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }\n      puVar9 = puVar5 + 4;\n      puVar5[1] = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar5 = puVar9;\n    } while (puVar9 != puVar4 + lVar7 * 4);\n    puVar5 = puVar4 + lVar7 * 4;\n  }\n  do {\n    lVar7 = *param_3;\n    lVar10 = param_3[1];\n    *puVar5 = puVar5 + 2;\n                    \n    FUN_001caae0(puVar5,lVar7,lVar10 + lVar7);\n    param_3 = param_3 + 4;\n    puVar5 = puVar5 + 4;\n  } while (param_4 != param_3);\n  puVar6 = (undefined8 *)param_1[1];\n  if (param_2 != puVar6) {\n    lVar7 = ((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5) + 1;\n    puVar6 = param_2 + 2;\n    puVar9 = puVar5;\n    do {\n      *puVar9 = puVar9 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }\n      else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }\n      uVar1 = puVar6[-1];\n      puVar8 = puVar9 + 4;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      puVar9[1] = uVar1;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar9 = puVar8;\n    } while (puVar8 != puVar5 + lVar7 * 4);\n    puVar6 = (undefined8 *)param_1[1];\n    puVar5 = puVar5 + lVar7 * 4;\n  }\n  puVar9 = (undefined8 *)*param_1;\n  if (puVar9 != puVar6) {\n    do {\n      if ((undefined8 *)*puVar9 != puVar9 + 2) {\n        FUN_00338a40();\n      }\n      puVar9 = puVar9 + 4;\n    } while (puVar9 != puVar6);\n    puVar6 = (undefined8 *)*param_1;\n  }\n  if (puVar6 != (undefined8 *)0x0) {\n    FUN_00338a40(puVar6);\n  }\n  *param_1 = puVar4;\n  param_1[1] = puVar5;\n  param_1[2] = puVar4 + uVar3 * 4;\n  return;\n}" ({ "{") (declaration "undefined8 uVar1;" (type_identifier "undefined8") (identifier "uVar1") (; ";")) (declaration "ulong uVar2;" (type_identifier "ulong") (identifier "uVar2") (; ";")) (declaration "ulong uVar3;" (type_identifier "ulong") (identifier "uVar3") (; ";")) (declaration "undefined8 *puVar4;" (type_identifier "undefined8") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined8 *puVar5;" (type_identifier "undefined8") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined8 *puVar6;" (type_identifier "undefined8") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "long lVar7;" (sized_type_specifier "long" (long "long")) (identifier "lVar7") (; ";")) (declaration "undefined8 *puVar8;" (type_identifier "undefined8") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "undefined8 *puVar9;" (type_identifier "undefined8") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "long lVar10;" (sized_type_specifier "long" (long "long")) (identifier "lVar10") (; ";")) (declaration "long *plVar11;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar11" (* "*") (identifier "plVar11")) (; ";")) (declaration "ulong uVar12;" (type_identifier "ulong") (identifier "uVar12") (; ";")) (declaration "ulong uVar13;" (type_identifier "ulong") (identifier "uVar13") (; ";")) (declaration "long lVar14;" (sized_type_specifier "long" (long "long")) (identifier "lVar14") (; ";")) (declaration "ulong local_68;" (type_identifier "ulong") (identifier "local_68") (; ";")) (if_statement "if (param_3 == param_4) {\n    return;\n  }" (if "if") (parenthesized_expression "(param_3 == param_4)" (( "(") (binary_expression "param_3 == param_4" (identifier "param_3") (== "==") (identifier "param_4")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "lVar7 = (long)param_4 - (long)param_3;" (assignment_expression "lVar7 = (long)param_4 - (long)param_3" (identifier "lVar7") (= "=") (binary_expression "(long)param_4 - (long)param_3" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (- "-") (cast_expression "(long)param_3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_3")))) (; ";")) (expression_statement "uVar2 = lVar7 >> 5;" (assignment_expression "uVar2 = lVar7 >> 5" (identifier "uVar2") (= "=") (binary_expression "lVar7 >> 5" (identifier "lVar7") (>> ">>") (number_literal "5"))) (; ";")) (expression_statement "puVar4 = (undefined8 *)param_1[1];" (assignment_expression "puVar4 = (undefined8 *)param_1[1]" (identifier "puVar4") (= "=") (cast_expression "(undefined8 *)param_1[1]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (uVar2 <= (ulong)(param_1[2] - (long)puVar4 >> 5)) {\n    lVar10 = (long)puVar4 - (long)param_2;\n    local_68 = lVar10 >> 5;\n    if (uVar2 < local_68) {\n      lVar10 = (long)puVar4 - lVar7;\n      puVar6 = (undefined8 *)(lVar10 + 0x10);\n      puVar5 = puVar4;\n      do {\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      } while (puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20));\n      param_1[1] = param_1[1] + lVar7;\n      puVar4 = puVar4 + -2;\n      lVar14 = lVar10 - (long)param_2 >> 5;\n      puVar6 = (undefined8 *)(lVar10 + -0x10);\n      if (0 < lVar10 - (long)param_2) {\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }\n      if (0 < lVar7) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }\n    }\n    else {\n      plVar11 = (long *)((long)param_3 + lVar10);\n      puVar6 = puVar4;\n      if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    \n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      puVar6 = puVar6 + (uVar2 - local_68) * 4;\n      param_1[1] = puVar6;\n      if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      param_1[1] = (long)puVar6 + lVar10;\n      if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }\n    }\n    return;\n  }" (if "if") (parenthesized_expression "(uVar2 <= (ulong)(param_1[2] - (long)puVar4 >> 5))" (( "(") (binary_expression "uVar2 <= (ulong)(param_1[2] - (long)puVar4 >> 5)" (identifier "uVar2") (<= "<=") (call_expression "(ulong)(param_1[2] - (long)puVar4 >> 5)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(param_1[2] - (long)puVar4 >> 5)" (( "(") (binary_expression "param_1[2] - (long)puVar4 >> 5" (binary_expression "param_1[2] - (long)puVar4" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (- "-") (cast_expression "(long)puVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar4"))) (>> ">>") (number_literal "5")) () ")")))) () ")")) (compound_statement "{\n    lVar10 = (long)puVar4 - (long)param_2;\n    local_68 = lVar10 >> 5;\n    if (uVar2 < local_68) {\n      lVar10 = (long)puVar4 - lVar7;\n      puVar6 = (undefined8 *)(lVar10 + 0x10);\n      puVar5 = puVar4;\n      do {\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      } while (puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20));\n      param_1[1] = param_1[1] + lVar7;\n      puVar4 = puVar4 + -2;\n      lVar14 = lVar10 - (long)param_2 >> 5;\n      puVar6 = (undefined8 *)(lVar10 + -0x10);\n      if (0 < lVar10 - (long)param_2) {\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }\n      if (0 < lVar7) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }\n    }\n    else {\n      plVar11 = (long *)((long)param_3 + lVar10);\n      puVar6 = puVar4;\n      if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    \n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      puVar6 = puVar6 + (uVar2 - local_68) * 4;\n      param_1[1] = puVar6;\n      if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      param_1[1] = (long)puVar6 + lVar10;\n      if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }\n    }\n    return;\n  }" ({ "{") (expression_statement "lVar10 = (long)puVar4 - (long)param_2;" (assignment_expression "lVar10 = (long)puVar4 - (long)param_2" (identifier "lVar10") (= "=") (binary_expression "(long)puVar4 - (long)param_2" (cast_expression "(long)puVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar4")) (- "-") (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")))) (; ";")) (expression_statement "local_68 = lVar10 >> 5;" (assignment_expression "local_68 = lVar10 >> 5" (identifier "local_68") (= "=") (binary_expression "lVar10 >> 5" (identifier "lVar10") (>> ">>") (number_literal "5"))) (; ";")) (if_statement "if (uVar2 < local_68) {\n      lVar10 = (long)puVar4 - lVar7;\n      puVar6 = (undefined8 *)(lVar10 + 0x10);\n      puVar5 = puVar4;\n      do {\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      } while (puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20));\n      param_1[1] = param_1[1] + lVar7;\n      puVar4 = puVar4 + -2;\n      lVar14 = lVar10 - (long)param_2 >> 5;\n      puVar6 = (undefined8 *)(lVar10 + -0x10);\n      if (0 < lVar10 - (long)param_2) {\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }\n      if (0 < lVar7) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }\n    }\n    else {\n      plVar11 = (long *)((long)param_3 + lVar10);\n      puVar6 = puVar4;\n      if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    \n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      puVar6 = puVar6 + (uVar2 - local_68) * 4;\n      param_1[1] = puVar6;\n      if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      param_1[1] = (long)puVar6 + lVar10;\n      if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }\n    }" (if "if") (parenthesized_expression "(uVar2 < local_68)" (( "(") (binary_expression "uVar2 < local_68" (identifier "uVar2") (< "<") (identifier "local_68")) () ")")) (compound_statement "{\n      lVar10 = (long)puVar4 - lVar7;\n      puVar6 = (undefined8 *)(lVar10 + 0x10);\n      puVar5 = puVar4;\n      do {\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      } while (puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20));\n      param_1[1] = param_1[1] + lVar7;\n      puVar4 = puVar4 + -2;\n      lVar14 = lVar10 - (long)param_2 >> 5;\n      puVar6 = (undefined8 *)(lVar10 + -0x10);\n      if (0 < lVar10 - (long)param_2) {\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }\n      if (0 < lVar7) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }\n    }" ({ "{") (expression_statement "lVar10 = (long)puVar4 - lVar7;" (assignment_expression "lVar10 = (long)puVar4 - lVar7" (identifier "lVar10") (= "=") (binary_expression "(long)puVar4 - lVar7" (cast_expression "(long)puVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar4")) (- "-") (identifier "lVar7"))) (; ";")) (expression_statement "puVar6 = (undefined8 *)(lVar10 + 0x10);" (assignment_expression "puVar6 = (undefined8 *)(lVar10 + 0x10)" (identifier "puVar6") (= "=") (cast_expression "(undefined8 *)(lVar10 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + 0x10)" (( "(") (binary_expression "lVar10 + 0x10" (identifier "lVar10") (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" (identifier "puVar5") (= "=") (identifier "puVar4")) (; ";")) (do_statement "do {\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      } while (puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20));" (do "do") (compound_statement "{\n        *puVar5 = puVar5 + 2;\n        if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }\n        puVar9 = puVar5 + 4;\n        puVar5[1] = puVar6[-1];\n        puVar6[-2] = puVar6;\n        puVar6[-1] = 0;\n        *(undefined1 *)puVar6 = 0;\n        puVar6 = puVar6 + 4;\n        puVar5 = puVar9;\n      }" ({ "{") (expression_statement "*puVar5 = puVar5 + 2;" (assignment_expression "*puVar5 = puVar5 + 2" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "puVar5 + 2" (identifier "puVar5") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if ((undefined8 *)puVar6[-2] == puVar6) {\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }\n        else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }" (if "if") (parenthesized_expression "((undefined8 *)puVar6[-2] == puVar6)" (( "(") (binary_expression "(undefined8 *)puVar6[-2] == puVar6" (cast_expression "(undefined8 *)puVar6[-2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar6[-2]" (identifier "puVar6") ([ "[") (number_literal "-2") (] "]"))) (== "==") (identifier "puVar6")) () ")")) (compound_statement "{\n          uVar1 = puVar6[1];\n          puVar5[2] = *puVar6;\n          puVar5[3] = uVar1;\n        }" ({ "{") (expression_statement "uVar1 = puVar6[1];" (assignment_expression "uVar1 = puVar6[1]" (identifier "uVar1") (= "=") (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar5[2] = *puVar6;" (assignment_expression "puVar5[2] = *puVar6" (subscript_expression "puVar5[2]" (identifier "puVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (expression_statement "puVar5[3] = uVar1;" (assignment_expression "puVar5[3] = uVar1" (subscript_expression "puVar5[3]" (identifier "puVar5") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (} "}")) (else_clause "else {\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }" (else "else") (compound_statement "{\n          *puVar5 = (undefined8 *)puVar6[-2];\n          puVar5[2] = *puVar6;\n        }" ({ "{") (expression_statement "*puVar5 = (undefined8 *)puVar6[-2];" (assignment_expression "*puVar5 = (undefined8 *)puVar6[-2]" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (cast_expression "(undefined8 *)puVar6[-2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar6[-2]" (identifier "puVar6") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "puVar5[2] = *puVar6;" (assignment_expression "puVar5[2] = *puVar6" (subscript_expression "puVar5[2]" (identifier "puVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (} "}")))) (expression_statement "puVar9 = puVar5 + 4;" (assignment_expression "puVar9 = puVar5 + 4" (identifier "puVar9") (= "=") (binary_expression "puVar5 + 4" (identifier "puVar5") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "puVar5[1] = puVar6[-1];" (assignment_expression "puVar5[1] = puVar6[-1]" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "puVar6[-1]" (identifier "puVar6") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "puVar6[-2] = puVar6;" (assignment_expression "puVar6[-2] = puVar6" (subscript_expression "puVar6[-2]" (identifier "puVar6") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "puVar6")) (; ";")) (expression_statement "puVar6[-1] = 0;" (assignment_expression "puVar6[-1] = 0" (subscript_expression "puVar6[-1]" (identifier "puVar6") ([ "[") (number_literal "-1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)puVar6 = 0;" (assignment_expression "*(undefined1 *)puVar6 = 0" (pointer_expression "*(undefined1 *)puVar6" (* "*") (cast_expression "(undefined1 *)puVar6" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar6"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6 = puVar6 + 4;" (assignment_expression "puVar6 = puVar6 + 4" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 4" (identifier "puVar6") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "puVar5 = puVar9;" (assignment_expression "puVar5 = puVar9" (identifier "puVar5") (= "=") (identifier "puVar9")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20))" (( "(") (binary_expression "puVar9 != (undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20)" (identifier "puVar9") (!= "!=") (cast_expression "(undefined8 *)\n                         ((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20)" (( "(") (binary_expression "(long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20" (binary_expression "(long)puVar4 +\n                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U)" (cast_expression "(long)puVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar4")) (+ "+") (parenthesized_expression "((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U)" (( "(") (binary_expression "(long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U" (binary_expression "(long)puVar4 + (-0x20 - lVar10)" (cast_expression "(long)puVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar4")) (+ "+") (parenthesized_expression "(-0x20 - lVar10)" (( "(") (binary_expression "-0x20 - lVar10" (number_literal "-0x20") (- "-") (identifier "lVar10")) () ")"))) (& "&") (number_literal "0xffffffffffffffe0U")) () ")"))) (+ "+") (number_literal "0x20")) () ")")))) () ")")) (; ";")) (expression_statement "param_1[1] = param_1[1] + lVar7;" (assignment_expression "param_1[1] = param_1[1] + lVar7" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "param_1[1] + lVar7" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (identifier "lVar7"))) (; ";")) (expression_statement "puVar4 = puVar4 + -2;" (assignment_expression "puVar4 = puVar4 + -2" (identifier "puVar4") (= "=") (binary_expression "puVar4 + -2" (identifier "puVar4") (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "lVar14 = lVar10 - (long)param_2 >> 5;" (assignment_expression "lVar14 = lVar10 - (long)param_2 >> 5" (identifier "lVar14") (= "=") (binary_expression "lVar10 - (long)param_2 >> 5" (binary_expression "lVar10 - (long)param_2" (identifier "lVar10") (- "-") (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2"))) (>> ">>") (number_literal "5"))) (; ";")) (expression_statement "puVar6 = (undefined8 *)(lVar10 + -0x10);" (assignment_expression "puVar6 = (undefined8 *)(lVar10 + -0x10)" (identifier "puVar6") (= "=") (cast_expression "(undefined8 *)(lVar10 + -0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar10 + -0x10)" (( "(") (binary_expression "lVar10 + -0x10" (identifier "lVar10") (+ "+") (number_literal "-0x10")) () ")")))) (; ";")) (if_statement "if (0 < lVar10 - (long)param_2) {\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }" (if "if") (parenthesized_expression "(0 < lVar10 - (long)param_2)" (( "(") (binary_expression "0 < lVar10 - (long)param_2" (number_literal "0") (< "<") (binary_expression "lVar10 - (long)param_2" (identifier "lVar10") (- "-") (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")))) () ")")) (compound_statement "{\n        do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);\n      }" ({ "{") (do_statement "do {\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        } while (lVar14 != 0);" (do "do") (compound_statement "{\n          puVar5 = (undefined8 *)puVar6[-2];\n          puVar9 = (undefined8 *)puVar4[-2];\n          if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }\nLAB_002d717a:\n          puVar4 = puVar4 + -4;\n          puVar6[-1] = 0;\n          *(undefined1 *)puVar6[-2] = 0;\n          lVar14 = lVar14 + -1;\n          puVar6 = puVar6 + -4;\n        }" ({ "{") (expression_statement "puVar5 = (undefined8 *)puVar6[-2];" (assignment_expression "puVar5 = (undefined8 *)puVar6[-2]" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)puVar6[-2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar6[-2]" (identifier "puVar6") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "puVar9 = (undefined8 *)puVar4[-2];" (assignment_expression "puVar9 = (undefined8 *)puVar4[-2]" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)puVar4[-2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[-2]" (identifier "puVar4") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (if_statement "if (puVar5 == puVar6) {\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }\n          else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }" (if "if") (parenthesized_expression "(puVar5 == puVar6)" (( "(") (binary_expression "puVar5 == puVar6" (identifier "puVar5") (== "==") (identifier "puVar6")) () ")")) (compound_statement "{\n            __n = puVar6[-1];\n            if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }\n            puVar4[-1] = __n;\n            *(undefined1 *)((long)puVar9 + __n) = 0;\n          }" ({ "{") (expression_statement "__n = puVar6[-1];" (assignment_expression "__n = puVar6[-1]" (identifier "__n") (= "=") (subscript_expression "puVar6[-1]" (identifier "puVar6") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (if_statement "if (__n != 0) {\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }" (if "if") (parenthesized_expression "(__n != 0)" (( "(") (binary_expression "__n != 0" (identifier "__n") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n            }" ({ "{") (if_statement "if (__n == 1) {\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }\n              else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }" (if "if") (parenthesized_expression "(__n == 1)" (( "(") (binary_expression "__n == 1" (identifier "__n") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }" ({ "{") (expression_statement "*(undefined1 *)puVar9 = *(undefined1 *)puVar6;" (assignment_expression "*(undefined1 *)puVar9 = *(undefined1 *)puVar6" (pointer_expression "*(undefined1 *)puVar9" (* "*") (cast_expression "(undefined1 *)puVar9" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar9"))) (= "=") (pointer_expression "*(undefined1 *)puVar6" (* "*") (cast_expression "(undefined1 *)puVar6" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar6")))) (; ";")) (expression_statement "puVar9 = (undefined8 *)puVar4[-2];" (assignment_expression "puVar9 = (undefined8 *)puVar4[-2]" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)puVar4[-2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[-2]" (identifier "puVar4") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "__n = puVar6[-1];" (assignment_expression "__n = puVar6[-1]" (identifier "__n") (= "=") (subscript_expression "puVar6[-1]" (identifier "puVar6") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }" (else "else") (compound_statement "{\n                memcpy(puVar9,puVar6,__n);\n                puVar9 = (undefined8 *)puVar4[-2];\n                __n = puVar6[-1];\n              }" ({ "{") (expression_statement "memcpy(puVar9,puVar6,__n);" (call_expression "memcpy(puVar9,puVar6,__n)" (identifier "memcpy") (argument_list "(puVar9,puVar6,__n)" (( "(") (identifier "puVar9") (, ",") (identifier "puVar6") (, ",") (identifier "__n") () ")"))) (; ";")) (expression_statement "puVar9 = (undefined8 *)puVar4[-2];" (assignment_expression "puVar9 = (undefined8 *)puVar4[-2]" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)puVar4[-2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[-2]" (identifier "puVar4") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "__n = puVar6[-1];" (assignment_expression "__n = puVar6[-1]" (identifier "__n") (= "=") (subscript_expression "puVar6[-1]" (identifier "puVar6") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "puVar4[-1] = __n;" (assignment_expression "puVar4[-1] = __n" (subscript_expression "puVar4[-1]" (identifier "puVar4") ([ "[") (number_literal "-1") (] "]")) (= "=") (identifier "__n")) (; ";")) (expression_statement "*(undefined1 *)((long)puVar9 + __n) = 0;" (assignment_expression "*(undefined1 *)((long)puVar9 + __n) = 0" (pointer_expression "*(undefined1 *)((long)puVar9 + __n)" (* "*") (cast_expression "(undefined1 *)((long)puVar9 + __n)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar9 + __n)" (( "(") (binary_expression "(long)puVar9 + __n" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (+ "+") (identifier "__n")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }" (else "else") (compound_statement "{\n            if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }\n            puVar6[-2] = puVar6;\n          }" ({ "{") (if_statement "if (puVar4 == puVar9) {\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }\n            else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }" (if "if") (parenthesized_expression "(puVar4 == puVar9)" (( "(") (binary_expression "puVar4 == puVar9" (identifier "puVar4") (== "==") (identifier "puVar9")) () ")")) (compound_statement "{\n              puVar4[-2] = puVar5;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n            }" ({ "{") (expression_statement "puVar4[-2] = puVar5;" (assignment_expression "puVar4[-2] = puVar5" (subscript_expression "puVar4[-2]" (identifier "puVar4") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "puVar5")) (; ";")) (expression_statement "puVar4[-1] = puVar6[-1];" (assignment_expression "puVar4[-1] = puVar6[-1]" (subscript_expression "puVar4[-1]" (identifier "puVar4") ([ "[") (number_literal "-1") (] "]")) (= "=") (subscript_expression "puVar6[-1]" (identifier "puVar6") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "*puVar4 = *puVar6;" (assignment_expression "*puVar4 = *puVar6" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (} "}")) (else_clause "else {\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }" (else "else") (compound_statement "{\n              puVar4[-2] = puVar5;\n              uVar1 = *puVar4;\n              puVar4[-1] = puVar6[-1];\n              *puVar4 = *puVar6;\n              if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }\n            }" ({ "{") (expression_statement "puVar4[-2] = puVar5;" (assignment_expression "puVar4[-2] = puVar5" (subscript_expression "puVar4[-2]" (identifier "puVar4") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "puVar5")) (; ";")) (expression_statement "uVar1 = *puVar4;" (assignment_expression "uVar1 = *puVar4" (identifier "uVar1") (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (expression_statement "puVar4[-1] = puVar6[-1];" (assignment_expression "puVar4[-1] = puVar6[-1]" (subscript_expression "puVar4[-1]" (identifier "puVar4") ([ "[") (number_literal "-1") (] "]")) (= "=") (subscript_expression "puVar6[-1]" (identifier "puVar6") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "*puVar4 = *puVar6;" (assignment_expression "*puVar4 = *puVar6" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (if_statement "if (puVar9 != (undefined8 *)0x0) {\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }" (if "if") (parenthesized_expression "(puVar9 != (undefined8 *)0x0)" (( "(") (binary_expression "puVar9 != (undefined8 *)0x0" (identifier "puVar9") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                puVar6[-2] = puVar9;\n                *puVar6 = uVar1;\n                goto LAB_002d717a;\n              }" ({ "{") (expression_statement "puVar6[-2] = puVar9;" (assignment_expression "puVar6[-2] = puVar9" (subscript_expression "puVar6[-2]" (identifier "puVar6") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "puVar9")) (; ";")) (expression_statement "*puVar6 = uVar1;" (assignment_expression "*puVar6 = uVar1" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (identifier "uVar1")) (; ";")) (goto_statement "goto LAB_002d717a;" (goto "goto") (statement_identifier "LAB_002d717a") (; ";")) (} "}"))) (} "}")))) (expression_statement "puVar6[-2] = puVar6;" (assignment_expression "puVar6[-2] = puVar6" (subscript_expression "puVar6[-2]" (identifier "puVar6") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "puVar6")) (; ";")) (} "}")))) (labeled_statement "LAB_002d717a:\n          puVar4 = puVar4 + -4;" (statement_identifier "LAB_002d717a") (: ":") (expression_statement "puVar4 = puVar4 + -4;" (assignment_expression "puVar4 = puVar4 + -4" (identifier "puVar4") (= "=") (binary_expression "puVar4 + -4" (identifier "puVar4") (+ "+") (number_literal "-4"))) (; ";"))) (expression_statement "puVar6[-1] = 0;" (assignment_expression "puVar6[-1] = 0" (subscript_expression "puVar6[-1]" (identifier "puVar6") ([ "[") (number_literal "-1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)puVar6[-2] = 0;" (assignment_expression "*(undefined1 *)puVar6[-2] = 0" (pointer_expression "*(undefined1 *)puVar6[-2]" (* "*") (cast_expression "(undefined1 *)puVar6[-2]" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar6[-2]" (identifier "puVar6") ([ "[") (number_literal "-2") (] "]")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar14 = lVar14 + -1;" (assignment_expression "lVar14 = lVar14 + -1" (identifier "lVar14") (= "=") (binary_expression "lVar14 + -1" (identifier "lVar14") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar6 = puVar6 + -4;" (assignment_expression "puVar6 = puVar6 + -4" (identifier "puVar6") (= "=") (binary_expression "puVar6 + -4" (identifier "puVar6") (+ "+") (number_literal "-4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar14 != 0)" (( "(") (binary_expression "lVar14 != 0" (identifier "lVar14") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (if_statement "if (0 < lVar7) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }" (if "if") (parenthesized_expression "(0 < lVar7)" (( "(") (binary_expression "0 < lVar7" (number_literal "0") (< "<") (identifier "lVar7")) () ")")) (compound_statement "{\n        do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);\n        return;\n      }" ({ "{") (do_statement "do {\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (uVar2 != 0);" (do "do") (compound_statement "{\n          FUN_0033f660(param_2,param_3);\n          uVar2 = uVar2 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        }" ({ "{") (expression_statement "FUN_0033f660(param_2,param_3);" (call_expression "FUN_0033f660(param_2,param_3)" (identifier "FUN_0033f660") (argument_list "(param_2,param_3)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "uVar2 = uVar2 - 1;" (assignment_expression "uVar2 = uVar2 - 1" (identifier "uVar2") (= "=") (binary_expression "uVar2 - 1" (identifier "uVar2") (- "-") (number_literal "1"))) (; ";")) (expression_statement "param_3 = param_3 + 4;" (assignment_expression "param_3 = param_3 + 4" (identifier "param_3") (= "=") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" (identifier "param_2") (= "=") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar2 != 0)" (( "(") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      plVar11 = (long *)((long)param_3 + lVar10);\n      puVar6 = puVar4;\n      if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    \n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      puVar6 = puVar6 + (uVar2 - local_68) * 4;\n      param_1[1] = puVar6;\n      if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      param_1[1] = (long)puVar6 + lVar10;\n      if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }\n    }" (else "else") (compound_statement "{\n      plVar11 = (long *)((long)param_3 + lVar10);\n      puVar6 = puVar4;\n      if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    \n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      puVar6 = puVar6 + (uVar2 - local_68) * 4;\n      param_1[1] = puVar6;\n      if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }\n      param_1[1] = (long)puVar6 + lVar10;\n      if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }\n    }" ({ "{") (expression_statement "plVar11 = (long *)((long)param_3 + lVar10);" (assignment_expression "plVar11 = (long *)((long)param_3 + lVar10)" (identifier "plVar11") (= "=") (cast_expression "(long *)((long)param_3 + lVar10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_3 + lVar10)" (( "(") (binary_expression "(long)param_3 + lVar10" (cast_expression "(long)param_3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_3")) (+ "+") (identifier "lVar10")) () ")")))) (; ";")) (expression_statement "puVar6 = puVar4;" (assignment_expression "puVar6 = puVar4" (identifier "puVar6") (= "=") (identifier "puVar4")) (; ";")) (if_statement "if (param_4 != plVar11) {\n        do {\n          *puVar6 = puVar6 + 2;\n                    \n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }" (if "if") (parenthesized_expression "(param_4 != plVar11)" (( "(") (binary_expression "param_4 != plVar11" (identifier "param_4") (!= "!=") (identifier "plVar11")) () ")")) (compound_statement "{\n        do {\n          *puVar6 = puVar6 + 2;\n                    \n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);\n        puVar6 = (undefined8 *)param_1[1];\n      }" ({ "{") (do_statement "do {\n          *puVar6 = puVar6 + 2;\n                    \n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        } while (param_4 != plVar11);" (do "do") (compound_statement "{\n          *puVar6 = puVar6 + 2;\n                    \n          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);\n          plVar11 = plVar11 + 4;\n          puVar6 = puVar6 + 4;\n        }" ({ "{") (expression_statement "*puVar6 = puVar6 + 2;" (assignment_expression "*puVar6 = puVar6 + 2" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (binary_expression "puVar6 + 2" (identifier "puVar6") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);" (call_expression "FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11)" (identifier "FUN_001caae0") (argument_list "(puVar6,*plVar11,plVar11[1] + *plVar11)" (( "(") (identifier "puVar6") (, ",") (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (, ",") (binary_expression "plVar11[1] + *plVar11" (subscript_expression "plVar11[1]" (identifier "plVar11") ([ "[") (number_literal "1") (] "]")) (+ "+") (pointer_expression "*plVar11" (* "*") (identifier "plVar11"))) () ")"))) (; ";")) (expression_statement "plVar11 = plVar11 + 4;" (assignment_expression "plVar11 = plVar11 + 4" (identifier "plVar11") (= "=") (binary_expression "plVar11 + 4" (identifier "plVar11") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "puVar6 = puVar6 + 4;" (assignment_expression "puVar6 = puVar6 + 4" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 4" (identifier "puVar6") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_4 != plVar11)" (( "(") (binary_expression "param_4 != plVar11" (identifier "param_4") (!= "!=") (identifier "plVar11")) () ")")) (; ";")) (expression_statement "puVar6 = (undefined8 *)param_1[1];" (assignment_expression "puVar6 = (undefined8 *)param_1[1]" (identifier "puVar6") (= "=") (cast_expression "(undefined8 *)param_1[1]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}"))) (expression_statement "puVar6 = puVar6 + (uVar2 - local_68) * 4;" (assignment_expression "puVar6 = puVar6 + (uVar2 - local_68) * 4" (identifier "puVar6") (= "=") (binary_expression "puVar6 + (uVar2 - local_68) * 4" (identifier "puVar6") (+ "+") (binary_expression "(uVar2 - local_68) * 4" (parenthesized_expression "(uVar2 - local_68)" (( "(") (binary_expression "uVar2 - local_68" (identifier "uVar2") (- "-") (identifier "local_68")) () ")")) (* "*") (number_literal "4")))) (; ";")) (expression_statement "param_1[1] = puVar6;" (assignment_expression "param_1[1] = puVar6" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "puVar6")) (; ";")) (if_statement "if (puVar4 != param_2) {\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }" (if "if") (parenthesized_expression "(puVar4 != param_2)" (( "(") (binary_expression "puVar4 != param_2" (identifier "puVar4") (!= "!=") (identifier "param_2")) () ")")) (compound_statement "{\n        puVar5 = param_2 + 2;\n        puVar9 = puVar6;\n        do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));\n        puVar6 = (undefined8 *)param_1[1];\n      }" ({ "{") (expression_statement "puVar5 = param_2 + 2;" (assignment_expression "puVar5 = param_2 + 2" (identifier "puVar5") (= "=") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar9 = puVar6;" (assignment_expression "puVar9 = puVar6" (identifier "puVar9") (= "=") (identifier "puVar6")) (; ";")) (do_statement "do {\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        } while (puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));" (do "do") (compound_statement "{\n          *puVar9 = puVar9 + 2;\n          if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }\n          puVar8 = puVar9 + 4;\n          puVar9[1] = puVar5[-1];\n          puVar5[-2] = puVar5;\n          puVar5[-1] = 0;\n          *(undefined1 *)puVar5 = 0;\n          puVar5 = puVar5 + 4;\n          puVar9 = puVar8;\n        }" ({ "{") (expression_statement "*puVar9 = puVar9 + 2;" (assignment_expression "*puVar9 = puVar9 + 2" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (binary_expression "puVar9 + 2" (identifier "puVar9") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if ((undefined8 *)puVar5[-2] == puVar5) {\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }\n          else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }" (if "if") (parenthesized_expression "((undefined8 *)puVar5[-2] == puVar5)" (( "(") (binary_expression "(undefined8 *)puVar5[-2] == puVar5" (cast_expression "(undefined8 *)puVar5[-2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar5[-2]" (identifier "puVar5") ([ "[") (number_literal "-2") (] "]"))) (== "==") (identifier "puVar5")) () ")")) (compound_statement "{\n            uVar1 = puVar5[1];\n            puVar9[2] = *puVar5;\n            puVar9[3] = uVar1;\n          }" ({ "{") (expression_statement "uVar1 = puVar5[1];" (assignment_expression "uVar1 = puVar5[1]" (identifier "uVar1") (= "=") (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar9[2] = *puVar5;" (assignment_expression "puVar9[2] = *puVar5" (subscript_expression "puVar9[2]" (identifier "puVar9") ([ "[") (number_literal "2") (] "]")) (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "puVar9[3] = uVar1;" (assignment_expression "puVar9[3] = uVar1" (subscript_expression "puVar9[3]" (identifier "puVar9") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (} "}")) (else_clause "else {\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }" (else "else") (compound_statement "{\n            *puVar9 = (undefined8 *)puVar5[-2];\n            puVar9[2] = *puVar5;\n          }" ({ "{") (expression_statement "*puVar9 = (undefined8 *)puVar5[-2];" (assignment_expression "*puVar9 = (undefined8 *)puVar5[-2]" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (cast_expression "(undefined8 *)puVar5[-2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar5[-2]" (identifier "puVar5") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "puVar9[2] = *puVar5;" (assignment_expression "puVar9[2] = *puVar5" (subscript_expression "puVar9[2]" (identifier "puVar9") ([ "[") (number_literal "2") (] "]")) (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (} "}")))) (expression_statement "puVar8 = puVar9 + 4;" (assignment_expression "puVar8 = puVar9 + 4" (identifier "puVar8") (= "=") (binary_expression "puVar9 + 4" (identifier "puVar9") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "puVar9[1] = puVar5[-1];" (assignment_expression "puVar9[1] = puVar5[-1]" (subscript_expression "puVar9[1]" (identifier "puVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "puVar5[-1]" (identifier "puVar5") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "puVar5[-2] = puVar5;" (assignment_expression "puVar5[-2] = puVar5" (subscript_expression "puVar5[-2]" (identifier "puVar5") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "puVar5")) (; ";")) (expression_statement "puVar5[-1] = 0;" (assignment_expression "puVar5[-1] = 0" (subscript_expression "puVar5[-1]" (identifier "puVar5") ([ "[") (number_literal "-1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)puVar5 = 0;" (assignment_expression "*(undefined1 *)puVar5 = 0" (pointer_expression "*(undefined1 *)puVar5" (* "*") (cast_expression "(undefined1 *)puVar5" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar5"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar5 = puVar5 + 4;" (assignment_expression "puVar5 = puVar5 + 4" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 4" (identifier "puVar5") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" (identifier "puVar9") (= "=") (identifier "puVar8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20))" (( "(") (binary_expression "puVar8 != (undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20)" (identifier "puVar8") (!= "!=") (cast_expression "(undefined8 *)\n                           ((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20)" (( "(") (binary_expression "(long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20" (binary_expression "(long)puVar6 +\n                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U)" (cast_expression "(long)puVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar6")) (+ "+") (parenthesized_expression "((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U)" (( "(") (binary_expression "(long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U" (binary_expression "(long)puVar4 + (-0x20 - (long)param_2)" (cast_expression "(long)puVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar4")) (+ "+") (parenthesized_expression "(-0x20 - (long)param_2)" (( "(") (binary_expression "-0x20 - (long)param_2" (number_literal "-0x20") (- "-") (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2"))) () ")"))) (& "&") (number_literal "0xffffffffffffffe0U")) () ")"))) (+ "+") (number_literal "0x20")) () ")")))) () ")")) (; ";")) (expression_statement "puVar6 = (undefined8 *)param_1[1];" (assignment_expression "puVar6 = (undefined8 *)param_1[1]" (identifier "puVar6") (= "=") (cast_expression "(undefined8 *)param_1[1]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}"))) (expression_statement "param_1[1] = (long)puVar6 + lVar10;" (assignment_expression "param_1[1] = (long)puVar6 + lVar10" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "(long)puVar6 + lVar10" (cast_expression "(long)puVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar6")) (+ "+") (identifier "lVar10"))) (; ";")) (if_statement "if (0 < lVar10) {\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }" (if "if") (parenthesized_expression "(0 < lVar10)" (( "(") (binary_expression "0 < lVar10" (number_literal "0") (< "<") (identifier "lVar10")) () ")")) (compound_statement "{\n        do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);\n      }" ({ "{") (do_statement "do {\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        } while (local_68 != 0);" (do "do") (compound_statement "{\n          FUN_0033f660(param_2,param_3);\n          local_68 = local_68 - 1;\n          param_3 = param_3 + 4;\n          param_2 = param_2 + 4;\n        }" ({ "{") (expression_statement "FUN_0033f660(param_2,param_3);" (call_expression "FUN_0033f660(param_2,param_3)" (identifier "FUN_0033f660") (argument_list "(param_2,param_3)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "local_68 = local_68 - 1;" (assignment_expression "local_68 = local_68 - 1" (identifier "local_68") (= "=") (binary_expression "local_68 - 1" (identifier "local_68") (- "-") (number_literal "1"))) (; ";")) (expression_statement "param_3 = param_3 + 4;" (assignment_expression "param_3 = param_3 + 4" (identifier "param_3") (= "=") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "param_2 = param_2 + 4;" (assignment_expression "param_2 = param_2 + 4" (identifier "param_2") (= "=") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_68 != 0)" (( "(") (binary_expression "local_68 != 0" (identifier "local_68") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}")))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "puVar6 = (undefined8 *)*param_1;" (assignment_expression "puVar6 = (undefined8 *)*param_1" (identifier "puVar6") (= "=") (cast_expression "(undefined8 *)*param_1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "uVar3 = 0x7ffffffffffffff;" (assignment_expression "uVar3 = 0x7ffffffffffffff" (identifier "uVar3") (= "=") (number_literal "0x7ffffffffffffff")) (; ";")) (expression_statement "uVar12 = (long)puVar4 - (long)puVar6 >> 5;" (assignment_expression "uVar12 = (long)puVar4 - (long)puVar6 >> 5" (identifier "uVar12") (= "=") (binary_expression "(long)puVar4 - (long)puVar6 >> 5" (binary_expression "(long)puVar4 - (long)puVar6" (cast_expression "(long)puVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar4")) (- "-") (cast_expression "(long)puVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar6"))) (>> ">>") (number_literal "5"))) (; ";")) (if_statement "if (0x7ffffffffffffff - uVar12 < uVar2) {\n                    \n    FUN_00377370("vector::_M_range_insert");\n  }" (if "if") (parenthesized_expression "(0x7ffffffffffffff - uVar12 < uVar2)" (( "(") (binary_expression "0x7ffffffffffffff - uVar12 < uVar2" (binary_expression "0x7ffffffffffffff - uVar12" (number_literal "0x7ffffffffffffff") (- "-") (identifier "uVar12")) (< "<") (identifier "uVar2")) () ")")) (compound_statement "{\n                    \n    FUN_00377370("vector::_M_range_insert");\n  }" ({ "{") (expression_statement "FUN_00377370("vector::_M_range_insert");" (call_expression "FUN_00377370("vector::_M_range_insert")" (identifier "FUN_00377370") (argument_list "("vector::_M_range_insert")" (( "(") (string_literal ""vector::_M_range_insert"" (" """) (string_content "vector::_M_range_insert") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (uVar2 < uVar12) {\n    uVar2 = uVar12;\n  }" (if "if") (parenthesized_expression "(uVar2 < uVar12)" (( "(") (binary_expression "uVar2 < uVar12" (identifier "uVar2") (< "<") (identifier "uVar12")) () ")")) (compound_statement "{\n    uVar2 = uVar12;\n  }" ({ "{") (expression_statement "uVar2 = uVar12;" (assignment_expression "uVar2 = uVar12" (identifier "uVar2") (= "=") (identifier "uVar12")) (; ";")) (} "}"))) (expression_statement "uVar13 = uVar12 + uVar2;" (assignment_expression "uVar13 = uVar12 + uVar2" (identifier "uVar13") (= "=") (binary_expression "uVar12 + uVar2" (identifier "uVar12") (+ "+") (identifier "uVar2"))) (; ";")) (if_statement "if ((CARRY8(uVar12,uVar2)) || (0x7ffffffffffffff < uVar13)) {\n    lVar7 = -0x20;\n  }\n  else {\n    puVar4 = (undefined8 *)0x0;\n    uVar3 = uVar13;\n    if (uVar13 == 0) goto LAB_002d6f6d;\n    lVar7 = uVar13 * 0x20;\n  }" (if "if") (parenthesized_expression "((CARRY8(uVar12,uVar2)) || (0x7ffffffffffffff < uVar13))" (( "(") (binary_expression "(CARRY8(uVar12,uVar2)) || (0x7ffffffffffffff < uVar13)" (parenthesized_expression "(CARRY8(uVar12,uVar2))" (( "(") (call_expression "CARRY8(uVar12,uVar2)" (identifier "CARRY8") (argument_list "(uVar12,uVar2)" (( "(") (identifier "uVar12") (, ",") (identifier "uVar2") () ")"))) () ")")) (|| "||") (parenthesized_expression "(0x7ffffffffffffff < uVar13)" (( "(") (binary_expression "0x7ffffffffffffff < uVar13" (number_literal "0x7ffffffffffffff") (< "<") (identifier "uVar13")) () ")"))) () ")")) (compound_statement "{\n    lVar7 = -0x20;\n  }" ({ "{") (expression_statement "lVar7 = -0x20;" (assignment_expression "lVar7 = -0x20" (identifier "lVar7") (= "=") (number_literal "-0x20")) (; ";")) (} "}")) (else_clause "else {\n    puVar4 = (undefined8 *)0x0;\n    uVar3 = uVar13;\n    if (uVar13 == 0) goto LAB_002d6f6d;\n    lVar7 = uVar13 * 0x20;\n  }" (else "else") (compound_statement "{\n    puVar4 = (undefined8 *)0x0;\n    uVar3 = uVar13;\n    if (uVar13 == 0) goto LAB_002d6f6d;\n    lVar7 = uVar13 * 0x20;\n  }" ({ "{") (expression_statement "puVar4 = (undefined8 *)0x0;" (assignment_expression "puVar4 = (undefined8 *)0x0" (identifier "puVar4") (= "=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "uVar3 = uVar13;" (assignment_expression "uVar3 = uVar13" (identifier "uVar3") (= "=") (identifier "uVar13")) (; ";")) (if_statement "if (uVar13 == 0) goto LAB_002d6f6d;" (if "if") (parenthesized_expression "(uVar13 == 0)" (( "(") (binary_expression "uVar13 == 0" (identifier "uVar13") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_002d6f6d;" (goto "goto") (statement_identifier "LAB_002d6f6d") (; ";"))) (expression_statement "lVar7 = uVar13 * 0x20;" (assignment_expression "lVar7 = uVar13 * 0x20" (identifier "lVar7") (= "=") (binary_expression "uVar13 * 0x20" (identifier "uVar13") (* "*") (number_literal "0x20"))) (; ";")) (} "}")))) (expression_statement "puVar4 = (undefined8 *)FUN_00337270(lVar7);" (assignment_expression "puVar4 = (undefined8 *)FUN_00337270(lVar7)" (identifier "puVar4") (= "=") (cast_expression "(undefined8 *)FUN_00337270(lVar7)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00337270(lVar7)" (identifier "FUN_00337270") (argument_list "(lVar7)" (( "(") (identifier "lVar7") () ")"))))) (; ";")) (expression_statement "puVar6 = (undefined8 *)*param_1;" (assignment_expression "puVar6 = (undefined8 *)*param_1" (identifier "puVar6") (= "=") (cast_expression "(undefined8 *)*param_1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (labeled_statement "LAB_002d6f6d:\n  puVar5 = puVar4;" (statement_identifier "LAB_002d6f6d") (: ":") (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" (identifier "puVar5") (= "=") (identifier "puVar4")) (; ";"))) (if_statement "if (param_2 != puVar6) {\n    lVar7 = ((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5) + 1;\n    puVar6 = puVar6 + 2;\n    do {\n      *puVar5 = puVar5 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }\n      else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }\n      puVar9 = puVar5 + 4;\n      puVar5[1] = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar5 = puVar9;\n    } while (puVar9 != puVar4 + lVar7 * 4);\n    puVar5 = puVar4 + lVar7 * 4;\n  }" (if "if") (parenthesized_expression "(param_2 != puVar6)" (( "(") (binary_expression "param_2 != puVar6" (identifier "param_2") (!= "!=") (identifier "puVar6")) () ")")) (compound_statement "{\n    lVar7 = ((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5) + 1;\n    puVar6 = puVar6 + 2;\n    do {\n      *puVar5 = puVar5 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }\n      else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }\n      puVar9 = puVar5 + 4;\n      puVar5[1] = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar5 = puVar9;\n    } while (puVar9 != puVar4 + lVar7 * 4);\n    puVar5 = puVar4 + lVar7 * 4;\n  }" ({ "{") (expression_statement "lVar7 = ((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5) + 1;" (assignment_expression "lVar7 = ((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5) + 1" (identifier "lVar7") (= "=") (binary_expression "((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5) + 1" (parenthesized_expression "((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5)" (( "(") (binary_expression "(ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5" (call_expression "(ulong)((long)param_2 + (-0x20 - (long)puVar6))" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((long)param_2 + (-0x20 - (long)puVar6))" (( "(") (binary_expression "(long)param_2 + (-0x20 - (long)puVar6)" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (parenthesized_expression "(-0x20 - (long)puVar6)" (( "(") (binary_expression "-0x20 - (long)puVar6" (number_literal "-0x20") (- "-") (cast_expression "(long)puVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar6"))) () ")"))) () ")"))) (>> ">>") (number_literal "5")) () ")")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar6 = puVar6 + 2;" (assignment_expression "puVar6 = puVar6 + 2" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 2" (identifier "puVar6") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n      *puVar5 = puVar5 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }\n      else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }\n      puVar9 = puVar5 + 4;\n      puVar5[1] = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar5 = puVar9;\n    } while (puVar9 != puVar4 + lVar7 * 4);" (do "do") (compound_statement "{\n      *puVar5 = puVar5 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }\n      else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }\n      puVar9 = puVar5 + 4;\n      puVar5[1] = puVar6[-1];\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar5 = puVar9;\n    }" ({ "{") (expression_statement "*puVar5 = puVar5 + 2;" (assignment_expression "*puVar5 = puVar5 + 2" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "puVar5 + 2" (identifier "puVar5") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }\n      else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }" (if "if") (parenthesized_expression "((undefined8 *)puVar6[-2] == puVar6)" (( "(") (binary_expression "(undefined8 *)puVar6[-2] == puVar6" (cast_expression "(undefined8 *)puVar6[-2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar6[-2]" (identifier "puVar6") ([ "[") (number_literal "-2") (] "]"))) (== "==") (identifier "puVar6")) () ")")) (compound_statement "{\n        uVar1 = puVar6[1];\n        puVar5[2] = *puVar6;\n        puVar5[3] = uVar1;\n      }" ({ "{") (expression_statement "uVar1 = puVar6[1];" (assignment_expression "uVar1 = puVar6[1]" (identifier "uVar1") (= "=") (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar5[2] = *puVar6;" (assignment_expression "puVar5[2] = *puVar6" (subscript_expression "puVar5[2]" (identifier "puVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (expression_statement "puVar5[3] = uVar1;" (assignment_expression "puVar5[3] = uVar1" (subscript_expression "puVar5[3]" (identifier "puVar5") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (} "}")) (else_clause "else {\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }" (else "else") (compound_statement "{\n        *puVar5 = (undefined8 *)puVar6[-2];\n        puVar5[2] = *puVar6;\n      }" ({ "{") (expression_statement "*puVar5 = (undefined8 *)puVar6[-2];" (assignment_expression "*puVar5 = (undefined8 *)puVar6[-2]" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (cast_expression "(undefined8 *)puVar6[-2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar6[-2]" (identifier "puVar6") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "puVar5[2] = *puVar6;" (assignment_expression "puVar5[2] = *puVar6" (subscript_expression "puVar5[2]" (identifier "puVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (} "}")))) (expression_statement "puVar9 = puVar5 + 4;" (assignment_expression "puVar9 = puVar5 + 4" (identifier "puVar9") (= "=") (binary_expression "puVar5 + 4" (identifier "puVar5") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "puVar5[1] = puVar6[-1];" (assignment_expression "puVar5[1] = puVar6[-1]" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "puVar6[-1]" (identifier "puVar6") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "puVar6[-2] = puVar6;" (assignment_expression "puVar6[-2] = puVar6" (subscript_expression "puVar6[-2]" (identifier "puVar6") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "puVar6")) (; ";")) (expression_statement "puVar6[-1] = 0;" (assignment_expression "puVar6[-1] = 0" (subscript_expression "puVar6[-1]" (identifier "puVar6") ([ "[") (number_literal "-1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)puVar6 = 0;" (assignment_expression "*(undefined1 *)puVar6 = 0" (pointer_expression "*(undefined1 *)puVar6" (* "*") (cast_expression "(undefined1 *)puVar6" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar6"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6 = puVar6 + 4;" (assignment_expression "puVar6 = puVar6 + 4" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 4" (identifier "puVar6") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "puVar5 = puVar9;" (assignment_expression "puVar5 = puVar9" (identifier "puVar5") (= "=") (identifier "puVar9")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar9 != puVar4 + lVar7 * 4)" (( "(") (binary_expression "puVar9 != puVar4 + lVar7 * 4" (identifier "puVar9") (!= "!=") (binary_expression "puVar4 + lVar7 * 4" (identifier "puVar4") (+ "+") (binary_expression "lVar7 * 4" (identifier "lVar7") (* "*") (number_literal "4")))) () ")")) (; ";")) (expression_statement "puVar5 = puVar4 + lVar7 * 4;" (assignment_expression "puVar5 = puVar4 + lVar7 * 4" (identifier "puVar5") (= "=") (binary_expression "puVar4 + lVar7 * 4" (identifier "puVar4") (+ "+") (binary_expression "lVar7 * 4" (identifier "lVar7") (* "*") (number_literal "4")))) (; ";")) (} "}"))) (do_statement "do {\n    lVar7 = *param_3;\n    lVar10 = param_3[1];\n    *puVar5 = puVar5 + 2;\n                    \n    FUN_001caae0(puVar5,lVar7,lVar10 + lVar7);\n    param_3 = param_3 + 4;\n    puVar5 = puVar5 + 4;\n  } while (param_4 != param_3);" (do "do") (compound_statement "{\n    lVar7 = *param_3;\n    lVar10 = param_3[1];\n    *puVar5 = puVar5 + 2;\n                    \n    FUN_001caae0(puVar5,lVar7,lVar10 + lVar7);\n    param_3 = param_3 + 4;\n    puVar5 = puVar5 + 4;\n  }" ({ "{") (expression_statement "lVar7 = *param_3;" (assignment_expression "lVar7 = *param_3" (identifier "lVar7") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "lVar10 = param_3[1];" (assignment_expression "lVar10 = param_3[1]" (identifier "lVar10") (= "=") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*puVar5 = puVar5 + 2;" (assignment_expression "*puVar5 = puVar5 + 2" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "puVar5 + 2" (identifier "puVar5") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "FUN_001caae0(puVar5,lVar7,lVar10 + lVar7);" (call_expression "FUN_001caae0(puVar5,lVar7,lVar10 + lVar7)" (identifier "FUN_001caae0") (argument_list "(puVar5,lVar7,lVar10 + lVar7)" (( "(") (identifier "puVar5") (, ",") (identifier "lVar7") (, ",") (binary_expression "lVar10 + lVar7" (identifier "lVar10") (+ "+") (identifier "lVar7")) () ")"))) (; ";")) (expression_statement "param_3 = param_3 + 4;" (assignment_expression "param_3 = param_3 + 4" (identifier "param_3") (= "=") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "puVar5 = puVar5 + 4;" (assignment_expression "puVar5 = puVar5 + 4" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 4" (identifier "puVar5") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_4 != param_3)" (( "(") (binary_expression "param_4 != param_3" (identifier "param_4") (!= "!=") (identifier "param_3")) () ")")) (; ";")) (expression_statement "puVar6 = (undefined8 *)param_1[1];" (assignment_expression "puVar6 = (undefined8 *)param_1[1]" (identifier "puVar6") (= "=") (cast_expression "(undefined8 *)param_1[1]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (param_2 != puVar6) {\n    lVar7 = ((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5) + 1;\n    puVar6 = param_2 + 2;\n    puVar9 = puVar5;\n    do {\n      *puVar9 = puVar9 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }\n      else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }\n      uVar1 = puVar6[-1];\n      puVar8 = puVar9 + 4;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      puVar9[1] = uVar1;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar9 = puVar8;\n    } while (puVar8 != puVar5 + lVar7 * 4);\n    puVar6 = (undefined8 *)param_1[1];\n    puVar5 = puVar5 + lVar7 * 4;\n  }" (if "if") (parenthesized_expression "(param_2 != puVar6)" (( "(") (binary_expression "param_2 != puVar6" (identifier "param_2") (!= "!=") (identifier "puVar6")) () ")")) (compound_statement "{\n    lVar7 = ((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5) + 1;\n    puVar6 = param_2 + 2;\n    puVar9 = puVar5;\n    do {\n      *puVar9 = puVar9 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }\n      else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }\n      uVar1 = puVar6[-1];\n      puVar8 = puVar9 + 4;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      puVar9[1] = uVar1;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar9 = puVar8;\n    } while (puVar8 != puVar5 + lVar7 * 4);\n    puVar6 = (undefined8 *)param_1[1];\n    puVar5 = puVar5 + lVar7 * 4;\n  }" ({ "{") (expression_statement "lVar7 = ((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5) + 1;" (assignment_expression "lVar7 = ((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5) + 1" (identifier "lVar7") (= "=") (binary_expression "((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5) + 1" (parenthesized_expression "((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5)" (( "(") (binary_expression "(ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5" (call_expression "(ulong)((long)puVar6 + (-0x20 - (long)param_2))" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((long)puVar6 + (-0x20 - (long)param_2))" (( "(") (binary_expression "(long)puVar6 + (-0x20 - (long)param_2)" (cast_expression "(long)puVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar6")) (+ "+") (parenthesized_expression "(-0x20 - (long)param_2)" (( "(") (binary_expression "-0x20 - (long)param_2" (number_literal "-0x20") (- "-") (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2"))) () ")"))) () ")"))) (>> ">>") (number_literal "5")) () ")")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar6 = param_2 + 2;" (assignment_expression "puVar6 = param_2 + 2" (identifier "puVar6") (= "=") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar9 = puVar5;" (assignment_expression "puVar9 = puVar5" (identifier "puVar9") (= "=") (identifier "puVar5")) (; ";")) (do_statement "do {\n      *puVar9 = puVar9 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }\n      else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }\n      uVar1 = puVar6[-1];\n      puVar8 = puVar9 + 4;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      puVar9[1] = uVar1;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar9 = puVar8;\n    } while (puVar8 != puVar5 + lVar7 * 4);" (do "do") (compound_statement "{\n      *puVar9 = puVar9 + 2;\n      if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }\n      else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }\n      uVar1 = puVar6[-1];\n      puVar8 = puVar9 + 4;\n      puVar6[-2] = puVar6;\n      puVar6[-1] = 0;\n      puVar9[1] = uVar1;\n      *(undefined1 *)puVar6 = 0;\n      puVar6 = puVar6 + 4;\n      puVar9 = puVar8;\n    }" ({ "{") (expression_statement "*puVar9 = puVar9 + 2;" (assignment_expression "*puVar9 = puVar9 + 2" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (binary_expression "puVar9 + 2" (identifier "puVar9") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if ((undefined8 *)puVar6[-2] == puVar6) {\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }\n      else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }" (if "if") (parenthesized_expression "((undefined8 *)puVar6[-2] == puVar6)" (( "(") (binary_expression "(undefined8 *)puVar6[-2] == puVar6" (cast_expression "(undefined8 *)puVar6[-2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar6[-2]" (identifier "puVar6") ([ "[") (number_literal "-2") (] "]"))) (== "==") (identifier "puVar6")) () ")")) (compound_statement "{\n        uVar1 = puVar6[1];\n        puVar9[2] = *puVar6;\n        puVar9[3] = uVar1;\n      }" ({ "{") (expression_statement "uVar1 = puVar6[1];" (assignment_expression "uVar1 = puVar6[1]" (identifier "uVar1") (= "=") (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar9[2] = *puVar6;" (assignment_expression "puVar9[2] = *puVar6" (subscript_expression "puVar9[2]" (identifier "puVar9") ([ "[") (number_literal "2") (] "]")) (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (expression_statement "puVar9[3] = uVar1;" (assignment_expression "puVar9[3] = uVar1" (subscript_expression "puVar9[3]" (identifier "puVar9") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (} "}")) (else_clause "else {\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }" (else "else") (compound_statement "{\n        *puVar9 = (undefined8 *)puVar6[-2];\n        puVar9[2] = *puVar6;\n      }" ({ "{") (expression_statement "*puVar9 = (undefined8 *)puVar6[-2];" (assignment_expression "*puVar9 = (undefined8 *)puVar6[-2]" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (cast_expression "(undefined8 *)puVar6[-2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar6[-2]" (identifier "puVar6") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "puVar9[2] = *puVar6;" (assignment_expression "puVar9[2] = *puVar6" (subscript_expression "puVar9[2]" (identifier "puVar9") ([ "[") (number_literal "2") (] "]")) (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (} "}")))) (expression_statement "uVar1 = puVar6[-1];" (assignment_expression "uVar1 = puVar6[-1]" (identifier "uVar1") (= "=") (subscript_expression "puVar6[-1]" (identifier "puVar6") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "puVar8 = puVar9 + 4;" (assignment_expression "puVar8 = puVar9 + 4" (identifier "puVar8") (= "=") (binary_expression "puVar9 + 4" (identifier "puVar9") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "puVar6[-2] = puVar6;" (assignment_expression "puVar6[-2] = puVar6" (subscript_expression "puVar6[-2]" (identifier "puVar6") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "puVar6")) (; ";")) (expression_statement "puVar6[-1] = 0;" (assignment_expression "puVar6[-1] = 0" (subscript_expression "puVar6[-1]" (identifier "puVar6") ([ "[") (number_literal "-1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9[1] = uVar1;" (assignment_expression "puVar9[1] = uVar1" (subscript_expression "puVar9[1]" (identifier "puVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "*(undefined1 *)puVar6 = 0;" (assignment_expression "*(undefined1 *)puVar6 = 0" (pointer_expression "*(undefined1 *)puVar6" (* "*") (cast_expression "(undefined1 *)puVar6" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar6"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6 = puVar6 + 4;" (assignment_expression "puVar6 = puVar6 + 4" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 4" (identifier "puVar6") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "puVar9 = puVar8;" (assignment_expression "puVar9 = puVar8" (identifier "puVar9") (= "=") (identifier "puVar8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar8 != puVar5 + lVar7 * 4)" (( "(") (binary_expression "puVar8 != puVar5 + lVar7 * 4" (identifier "puVar8") (!= "!=") (binary_expression "puVar5 + lVar7 * 4" (identifier "puVar5") (+ "+") (binary_expression "lVar7 * 4" (identifier "lVar7") (* "*") (number_literal "4")))) () ")")) (; ";")) (expression_statement "puVar6 = (undefined8 *)param_1[1];" (assignment_expression "puVar6 = (undefined8 *)param_1[1]" (identifier "puVar6") (= "=") (cast_expression "(undefined8 *)param_1[1]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "puVar5 = puVar5 + lVar7 * 4;" (assignment_expression "puVar5 = puVar5 + lVar7 * 4" (identifier "puVar5") (= "=") (binary_expression "puVar5 + lVar7 * 4" (identifier "puVar5") (+ "+") (binary_expression "lVar7 * 4" (identifier "lVar7") (* "*") (number_literal "4")))) (; ";")) (} "}"))) (expression_statement "puVar9 = (undefined8 *)*param_1;" (assignment_expression "puVar9 = (undefined8 *)*param_1" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)*param_1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (if_statement "if (puVar9 != puVar6) {\n    do {\n      if ((undefined8 *)*puVar9 != puVar9 + 2) {\n        FUN_00338a40();\n      }\n      puVar9 = puVar9 + 4;\n    } while (puVar9 != puVar6);\n    puVar6 = (undefined8 *)*param_1;\n  }" (if "if") (parenthesized_expression "(puVar9 != puVar6)" (( "(") (binary_expression "puVar9 != puVar6" (identifier "puVar9") (!= "!=") (identifier "puVar6")) () ")")) (compound_statement "{\n    do {\n      if ((undefined8 *)*puVar9 != puVar9 + 2) {\n        FUN_00338a40();\n      }\n      puVar9 = puVar9 + 4;\n    } while (puVar9 != puVar6);\n    puVar6 = (undefined8 *)*param_1;\n  }" ({ "{") (do_statement "do {\n      if ((undefined8 *)*puVar9 != puVar9 + 2) {\n        FUN_00338a40();\n      }\n      puVar9 = puVar9 + 4;\n    } while (puVar9 != puVar6);" (do "do") (compound_statement "{\n      if ((undefined8 *)*puVar9 != puVar9 + 2) {\n        FUN_00338a40();\n      }\n      puVar9 = puVar9 + 4;\n    }" ({ "{") (if_statement "if ((undefined8 *)*puVar9 != puVar9 + 2) {\n        FUN_00338a40();\n      }" (if "if") (parenthesized_expression "((undefined8 *)*puVar9 != puVar9 + 2)" (( "(") (binary_expression "(undefined8 *)*puVar9 != puVar9 + 2" (cast_expression "(undefined8 *)*puVar9" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (!= "!=") (binary_expression "puVar9 + 2" (identifier "puVar9") (+ "+") (number_literal "2"))) () ")")) (compound_statement "{\n        FUN_00338a40();\n      }" ({ "{") (expression_statement "FUN_00338a40();" (call_expression "FUN_00338a40()" (identifier "FUN_00338a40") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar9 = puVar9 + 4;" (assignment_expression "puVar9 = puVar9 + 4" (identifier "puVar9") (= "=") (binary_expression "puVar9 + 4" (identifier "puVar9") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar9 != puVar6)" (( "(") (binary_expression "puVar9 != puVar6" (identifier "puVar9") (!= "!=") (identifier "puVar6")) () ")")) (; ";")) (expression_statement "puVar6 = (undefined8 *)*param_1;" (assignment_expression "puVar6 = (undefined8 *)*param_1" (identifier "puVar6") (= "=") (cast_expression "(undefined8 *)*param_1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (} "}"))) (if_statement "if (puVar6 != (undefined8 *)0x0) {\n    FUN_00338a40(puVar6);\n  }" (if "if") (parenthesized_expression "(puVar6 != (undefined8 *)0x0)" (( "(") (binary_expression "puVar6 != (undefined8 *)0x0" (identifier "puVar6") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    FUN_00338a40(puVar6);\n  }" ({ "{") (expression_statement "FUN_00338a40(puVar6);" (call_expression "FUN_00338a40(puVar6)" (identifier "FUN_00338a40") (argument_list "(puVar6)" (( "(") (identifier "puVar6") () ")"))) (; ";")) (} "}"))) (expression_statement "*param_1 = puVar4;" (assignment_expression "*param_1 = puVar4" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "param_1[1] = puVar5;" (assignment_expression "param_1[1] = puVar5" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "puVar5")) (; ";")) (expression_statement "param_1[2] = puVar4 + uVar3 * 4;" (assignment_expression "param_1[2] = puVar4 + uVar3 * 4" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "puVar4 + uVar3 * 4" (identifier "puVar4") (+ "+") (binary_expression "uVar3 * 4" (identifier "uVar3") (* "*") (number_literal "4")))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original name:
   _M_range_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,
   std::vector<std::__cxx11::basic_string<char> > > >
   DWARF original prototype: void
   _M_range_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>_>(vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
   * this, iterator __position,
   __normal_iterator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>*,_std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>
   __first,
   __normal_iterator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>*,_std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>
   __last, forward_iterator_tag param_5) */

void __thiscall
std::
vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::var_1<char>var_3>,_std::var_1<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::var_1<char>var_3>var_3>var_3>
::
_M_range_insert<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>var_3>var_3>var_3>
          (vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::var_1<char>var_3>,_std::var_1<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::var_1<char>var_3>var_3>var_3>
           *this,type_2 var_22,type_5 *var_6,type_5 *var_7)

{
  type_2 *ppbVar1;
  type_1 sVar2;
  type_1 *var_16;
  type_2 var_35;
  type_3 uVar5;
  type_4 var_10;
  type_1 *var_13;
  type_4 var_37;
  basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *var_25;
  type_2 var_14;
  long var_8;
  basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *var_32;
  type_2 var_27;
  type_2 var_15;
  size_t var_17;
  basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *var_34;
  basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *var_33;
  long var_11;
  type_3 *var_19;
  type_5 *var_23;
  type_4 var_28;
  type_4 var_31;
  anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
  *var_5;
  type_2 var_26;
  long var_20;
  type_4 var_12;
  
  if (var_6 == var_7) {
    return;
  }
  var_8 = (long)var_7 - (long)var_6;
  var_10 = var_8 >> 5;
  var_26 = (this->
            super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_9
            )._M_impl._M_finish;
  if (var_10 <= (type_4)((long)(this->
                             super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_9
                             )._M_impl._M_end_of_storage - (long)var_26 >> 5)) {
    var_11 = (long)var_26 - (long)var_22;
    var_12 = var_11 >> 5;
    if (var_10 < var_12) {
      var_11 = (long)var_26 - var_8;
      var_13 = (type_1 *)(var_11 + 0x10);
      var_14 = var_26;
      do {
        (var_14->_M_dataplus)._M_p = (type_2)&var_14->field_2;
        if ((type_1 *)var_13[-2] == var_13) {
          sVar2 = var_13[1];
          (var_14->field_2)._M_allocated_capacity = *var_13;
          *(type_1 *)((long)&var_14->field_2 + 8) = sVar2;
        }
        else {
          (var_14->_M_dataplus)._M_p = (type_2)var_13[-2];
          (var_14->field_2)._M_allocated_capacity = *var_13;
        }
        var_15 = var_14 + 1;
        var_14->_M_string_length = var_13[-1];
        var_13[-2] = (type_1)var_13;
        var_13[-1] = 0;
        *(char *)var_13 = '\0';
        var_13 = var_13 + 4;
        var_14 = var_15;
      } while (var_15 !=
               (type_2)((long)&var_26[1]._M_dataplus._M_p +
                        ((type_4)((long)var_26 + (-0x20 - var_11)) & 0xffffffffffffffe0)));
      ppbVar1 = &(this->
                 super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_9
                 )._M_impl._M_finish;
      *ppbVar1 = (type_2)((long)*ppbVar1 + var_8);
      var_5 = &var_26[-1].field_2;
      var_20 = var_11 - (long)var_22 >> 5;
      var_13 = (type_1 *)(var_11 + -0x10);
      if (0 < var_11 - (long)var_22) {
        do {
          var_16 = (type_1 *)var_13[-2];
          var_19 = *(type_3 **)(var_5->_M_local_buf + -0x10);
          if (var_16 == var_13) {
            var_17 = var_13[-1];
            if (var_17 != 0) {
              if (var_17 == 1) {
                *(char *)var_19 = (char)*var_13;
                var_19 = *(type_3 **)(var_5->_M_local_buf + -0x10);
                var_17 = var_13[-1];
              }
              else {
                var_18(var_19,var_13,var_17);
                var_19 = *(type_3 **)(var_5->_M_local_buf + -0x10);
                var_17 = var_13[-1];
              }
            }
            *(size_t *)(var_5->_M_local_buf + -8) = var_17;
            *(type_6 *)((long)var_19 + var_17) = 0;
          }
          else {
            if (var_5 ==
                (anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
                 *)var_19) {
              *(type_1 **)(var_5->_M_local_buf + -0x10) = var_16;
              *(type_1 *)(var_5->_M_local_buf + -8) = var_13[-1];
              var_5->_M_allocated_capacity = *var_13;
            }
            else {
              *(type_1 **)(var_5->_M_local_buf + -0x10) = var_16;
              sVar2 = var_5->_M_allocated_capacity;
              *(type_1 *)(var_5->_M_local_buf + -8) = var_13[-1];
              var_5->_M_allocated_capacity = *var_13;
              if (var_19 != (type_3 *)0x0) {
                var_13[-2] = (type_1)var_19;
                *var_13 = sVar2;
                goto LAB_002d717a;
              }
            }
            var_13[-2] = (type_1)var_13;
          }
LAB_002d717a:
          var_5 = (anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
                     *)(var_5->_M_local_buf + -0x20);
          var_13[-1] = 0;
          *(type_6 *)var_13[-2] = 0;
          var_20 = var_20 + -1;
          var_13 = var_13 + -4;
        } while (var_20 != 0);
      }
      if (0 < var_8) {
        do {
          std::string::var_21((type_5 *)var_22,var_6);
          var_10 = var_10 - 1;
          var_6 = var_6 + 0x20;
          var_22 = var_22 + 1;
        } while (var_10 != 0);
        return;
      }
    }
    else {
      var_23 = var_6 + var_11;
      var_14 = var_26;
      var_25 = var_26;
      if (var_7 != var_23) {
        do {
          (var_25->_M_dataplus)._M_p = (type_2)&var_25->field_2;
                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */
          __cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>::
          var_24<var_2*>(var_25,*(long *)var_23,*(long *)(var_23 + 8) + *(long *)var_23);
          var_23 = var_23 + 0x20;
          var_25 = var_25 + 1;
        } while (var_7 != var_23);
        var_14 = (this->
                  super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_9
                  )._M_impl._M_finish;
      }
      var_14 = var_14 + (var_10 - var_12);
      (this->
      super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_9
      )._M_impl._M_finish = var_14;
      if (var_26 != var_22) {
        var_5 = &var_22->field_2;
        var_15 = var_14;
        do {
          (var_15->_M_dataplus)._M_p = (type_2)&var_15->field_2;
          if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
               *)*(type_2 *)(var_5->_M_local_buf + -0x10) == var_5) {
            uVar5 = *(type_3 *)(var_5->_M_local_buf + 8);
            (var_15->field_2)._M_allocated_capacity = var_5->_M_allocated_capacity;
            *(type_3 *)((long)&var_15->field_2 + 8) = uVar5;
          }
          else {
            (var_15->_M_dataplus)._M_p = *(type_2 *)(var_5->_M_local_buf + -0x10);
            (var_15->field_2)._M_allocated_capacity = var_5->_M_allocated_capacity;
          }
          var_27 = var_15 + 1;
          var_15->_M_string_length = *(type_1 *)(var_5->_M_local_buf + -8);
          *(anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
            **var_9)(var_5->_M_local_buf + -0x10) = var_5;
          *(char *)((long)var_5 + -8) = '\0';
          *(char *)((long)var_5 + -7) = '\0';
          *(char *)((long)var_5 + -6) = '\0';
          *(char *)((long)var_5 + -5) = '\0';
          *(char *)((long)var_5 + -4) = '\0';
          *(char *)((long)var_5 + -3) = '\0';
          *(char *)((long)var_5 + -2) = '\0';
          *(char *)((long)var_5 + -1) = '\0';
          var_5->_M_local_buf[0] = '\0';
          var_5 = (anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
                     *)(var_5->_M_local_buf + 0x20);
          var_15 = var_27;
        } while (var_27 !=
                 (type_2)((long)&var_14[1]._M_dataplus._M_p +
                          ((type_4)((long)var_26 + (-0x20 - (long)var_22)) & 0xffffffffffffffe0)
                          ));
        var_14 = (this->
                  super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_9
                  )._M_impl._M_finish;
      }
      (this->
      super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_9
      )._M_impl._M_finish = (type_2)((long)var_14 + var_11);
      if (0 < var_11) {
        do {
          std::string::var_21((type_5 *)var_22,var_6);
          var_12 = var_12 - 1;
          var_6 = var_6 + 0x20;
          var_22 = var_22 + 1;
        } while (var_12 != 0);
      }
    }
    return;
  }
  var_14 = (this->
            super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_9
            )._M_impl._M_start;
  var_37 = 0x7ffffffffffffff;
  var_28 = (long)var_26 - (long)var_14 >> 5;
  if (0x7ffffffffffffff - var_28 < var_10) {
                    /* WARNING: Subroutine does not return */
    var_29("vector::_M_range_insert");
  }
  if (var_10 < var_28) {
    var_10 = var_28;
  }
  var_31 = var_28 + var_10;
  if ((var_30(var_28,var_10)) || (0x7ffffffffffffff < var_31)) {
    var_31 = 0xffffffffffffffe0;
  }
  else {
    var_25 = (basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *)0x0;
    var_37 = var_31;
    if (var_31 == 0) goto LAB_002d6f6d;
    var_31 = var_31 * 0x20;
  }
  var_25 = (basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *)operator_new(var_31)
  ;
  var_14 = (this->
            super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_9
            )._M_impl._M_start;
LAB_002d6f6d:
  var_32 = var_25;
  if (var_22 != var_14) {
    var_8 = ((type_4)((long)var_22 + (-0x20 - (long)var_14)) >> 5) + 1;
    var_5 = &var_14->field_2;
    do {
      (var_32->_M_dataplus)._M_p = (type_2)&var_32->field_2;
      if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
           *)*(type_1 **)(var_5->_M_local_buf + -0x10) == var_5) {
        sVar2 = *(type_1 *)(var_5->_M_local_buf + 8);
        (var_32->field_2)._M_allocated_capacity = var_5->_M_allocated_capacity;
        *(type_1 *)((long)&var_32->field_2 + 8) = sVar2;
      }
      else {
        (var_32->_M_dataplus)._M_p = (type_2)*(type_1 **)(var_5->_M_local_buf + -0x10);
        (var_32->field_2)._M_allocated_capacity = var_5->_M_allocated_capacity;
      }
      var_33 = var_32 + 1;
      var_32->_M_string_length = *(type_1 *)(var_5->_M_local_buf + -8);
      *(anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
        **var_9)(var_5->_M_local_buf + -0x10) = var_5;
      *(type_1 *)(var_5->_M_local_buf + -8) = 0;
      var_5->_M_local_buf[0] = '\0';
      var_5 = (anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
                 *)(var_5->_M_local_buf + 0x20);
      var_32 = var_33;
    } while (var_33 != var_25 + var_8);
    var_32 = var_25 + var_8;
  }
  do {
    var_8 = *(long *)var_6;
    var_11 = *(long *)(var_6 + 8);
    (var_32->_M_dataplus)._M_p = (type_2)&var_32->field_2;
                    /* try { // try from 002d729d to 002d72a1 has its CatchHandler @ 002d73c5 */
    __cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>::var_24<var_2*>
              (var_32,var_8,var_11 + var_8);
    var_6 = var_6 + 0x20;
    var_32 = var_32 + 1;
  } while (var_7 != var_6);
  var_26 = (this->
            super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_9
            )._M_impl._M_finish;
  if (var_22 != var_26) {
    var_8 = ((type_4)((long)var_26 + (-0x20 - (long)var_22)) >> 5) + 1;
    var_5 = &var_22->field_2;
    var_33 = var_32;
    do {
      (var_33->_M_dataplus)._M_p = (type_2)&var_33->field_2;
      if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
           *)*(type_1 **)(var_5->_M_local_buf + -0x10) == var_5) {
        sVar2 = *(type_1 *)(var_5->_M_local_buf + 8);
        (var_33->field_2)._M_allocated_capacity = var_5->_M_allocated_capacity;
        *(type_1 *)((long)&var_33->field_2 + 8) = sVar2;
      }
      else {
        (var_33->_M_dataplus)._M_p = (type_2)*(type_1 **)(var_5->_M_local_buf + -0x10);
        (var_33->field_2)._M_allocated_capacity = var_5->_M_allocated_capacity;
      }
      sVar2 = *(type_1 *)(var_5->_M_local_buf + -8);
      var_34 = var_33 + 1;
      *(anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
        **var_9)(var_5->_M_local_buf + -0x10) = var_5;
      *(type_1 *)(var_5->_M_local_buf + -8) = 0;
      var_33->_M_string_length = sVar2;
      var_5->_M_local_buf[0] = '\0';
      var_5 = (anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
                 *)(var_5->_M_local_buf + 0x20);
      var_33 = var_34;
    } while (var_34 != var_32 + var_8);
    var_26 = (this->
              super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_9
              )._M_impl._M_finish;
    var_32 = var_32 + var_8;
  }
  var_14 = (this->
            super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_9
            )._M_impl._M_start;
  if (var_14 != var_26) {
    do {
      var_35 = (var_14->_M_dataplus)._M_p;
      if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
           *)var_35 != &var_14->field_2) {
        var_36(var_35);
      }
      var_14 = var_14 + 1;
    } while (var_14 != var_26);
    var_26 = (this->
              super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_9
              )._M_impl._M_start;
  }
  if (var_26 != (type_2)0x0) {
    var_36(var_26);
  }
  (this->
  super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_9
  )._M_impl._M_start = var_25;
  (this->
  super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_9
  )._M_impl._M_finish = var_32;
  (this->
  super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_9
  )._M_impl._M_end_of_storage = var_25 + var_37;
  return;
}


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

void MASKED(undefined8 *param_1,undefined8 *param_2,long *param_3,long *param_4)

{
  undefined8 uVar1;
  ulong uVar2;
  ulong uVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  undefined8 *puVar6;
  long lVar7;
  undefined8 *puVar8;
  size_t __n;
  undefined8 *puVar9;
  long lVar10;
  long *plVar11;
  ulong uVar12;
  ulong uVar13;
  long lVar14;
  ulong local_68;
  
  if (param_3 == param_4) {
    return;
  }
  lVar7 = (long)param_4 - (long)param_3;
  uVar2 = lVar7 >> 5;
  puVar4 = (undefined8 *)param_1[1];
  if (uVar2 <= (ulong)(param_1[2] - (long)puVar4 >> 5)) {
    lVar10 = (long)puVar4 - (long)param_2;
    local_68 = lVar10 >> 5;
    if (uVar2 < local_68) {
      lVar10 = (long)puVar4 - lVar7;
      puVar6 = (undefined8 *)(lVar10 + 0x10);
      puVar5 = puVar4;
      do {
        *puVar5 = puVar5 + 2;
        if ((undefined8 *)puVar6[-2] == puVar6) {
          uVar1 = puVar6[1];
          puVar5[2] = *puVar6;
          puVar5[3] = uVar1;
        }
        else {
          *puVar5 = (undefined8 *)puVar6[-2];
          puVar5[2] = *puVar6;
        }
        puVar9 = puVar5 + 4;
        puVar5[1] = puVar6[-1];
        puVar6[-2] = puVar6;
        puVar6[-1] = 0;
        *(undefined1 *)puVar6 = 0;
        puVar6 = puVar6 + 4;
        puVar5 = puVar9;
      } while (puVar9 != (undefined8 *)
                         ((long)puVar4 +
                         ((long)puVar4 + (-0x20 - lVar10) & 0xffffffffffffffe0U) + 0x20));
      param_1[1] = param_1[1] + lVar7;
      puVar4 = puVar4 + -2;
      lVar14 = lVar10 - (long)param_2 >> 5;
      puVar6 = (undefined8 *)(lVar10 + -0x10);
      if (0 < lVar10 - (long)param_2) {
        do {
          puVar5 = (undefined8 *)puVar6[-2];
          puVar9 = (undefined8 *)puVar4[-2];
          if (puVar5 == puVar6) {
            __n = puVar6[-1];
            if (__n != 0) {
              if (__n == 1) {
                *(undefined1 *)puVar9 = *(undefined1 *)puVar6;
                puVar9 = (undefined8 *)puVar4[-2];
                __n = puVar6[-1];
              }
              else {
                memcpy(puVar9,puVar6,__n);
                puVar9 = (undefined8 *)puVar4[-2];
                __n = puVar6[-1];
              }
            }
            puVar4[-1] = __n;
            *(undefined1 *)((long)puVar9 + __n) = 0;
          }
          else {
            if (puVar4 == puVar9) {
              puVar4[-2] = puVar5;
              puVar4[-1] = puVar6[-1];
              *puVar4 = *puVar6;
            }
            else {
              puVar4[-2] = puVar5;
              uVar1 = *puVar4;
              puVar4[-1] = puVar6[-1];
              *puVar4 = *puVar6;
              if (puVar9 != (undefined8 *)0x0) {
                puVar6[-2] = puVar9;
                *puVar6 = uVar1;
                goto LAB_002d717a;
              }
            }
            puVar6[-2] = puVar6;
          }
LAB_002d717a:
          puVar4 = puVar4 + -4;
          puVar6[-1] = 0;
          *(undefined1 *)puVar6[-2] = 0;
          lVar14 = lVar14 + -1;
          puVar6 = puVar6 + -4;
        } while (lVar14 != 0);
      }
      if (0 < lVar7) {
        do {
          FUN_0033f660(param_2,param_3);
          uVar2 = uVar2 - 1;
          param_3 = param_3 + 4;
          param_2 = param_2 + 4;
        } while (uVar2 != 0);
        return;
      }
    }
    else {
      plVar11 = (long *)((long)param_3 + lVar10);
      puVar6 = puVar4;
      if (param_4 != plVar11) {
        do {
          *puVar6 = puVar6 + 2;
                    /* try { // try from 002d7027 to 002d702b has its CatchHandler @ 002d73c7 */
          FUN_001caae0(puVar6,*plVar11,plVar11[1] + *plVar11);
          plVar11 = plVar11 + 4;
          puVar6 = puVar6 + 4;
        } while (param_4 != plVar11);
        puVar6 = (undefined8 *)param_1[1];
      }
      puVar6 = puVar6 + (uVar2 - local_68) * 4;
      param_1[1] = puVar6;
      if (puVar4 != param_2) {
        puVar5 = param_2 + 2;
        puVar9 = puVar6;
        do {
          *puVar9 = puVar9 + 2;
          if ((undefined8 *)puVar5[-2] == puVar5) {
            uVar1 = puVar5[1];
            puVar9[2] = *puVar5;
            puVar9[3] = uVar1;
          }
          else {
            *puVar9 = (undefined8 *)puVar5[-2];
            puVar9[2] = *puVar5;
          }
          puVar8 = puVar9 + 4;
          puVar9[1] = puVar5[-1];
          puVar5[-2] = puVar5;
          puVar5[-1] = 0;
          *(undefined1 *)puVar5 = 0;
          puVar5 = puVar5 + 4;
          puVar9 = puVar8;
        } while (puVar8 != (undefined8 *)
                           ((long)puVar6 +
                           ((long)puVar4 + (-0x20 - (long)param_2) & 0xffffffffffffffe0U) + 0x20));
        puVar6 = (undefined8 *)param_1[1];
      }
      param_1[1] = (long)puVar6 + lVar10;
      if (0 < lVar10) {
        do {
          FUN_0033f660(param_2,param_3);
          local_68 = local_68 - 1;
          param_3 = param_3 + 4;
          param_2 = param_2 + 4;
        } while (local_68 != 0);
      }
    }
    return;
  }
  puVar6 = (undefined8 *)*param_1;
  uVar3 = 0x7ffffffffffffff;
  uVar12 = (long)puVar4 - (long)puVar6 >> 5;
  if (0x7ffffffffffffff - uVar12 < uVar2) {
                    /* WARNING: Subroutine does not return */
    FUN_00377370("vector::_M_range_insert");
  }
  if (uVar2 < uVar12) {
    uVar2 = uVar12;
  }
  uVar13 = uVar12 + uVar2;
  if ((CARRY8(uVar12,uVar2)) || (0x7ffffffffffffff < uVar13)) {
    lVar7 = -0x20;
  }
  else {
    puVar4 = (undefined8 *)0x0;
    uVar3 = uVar13;
    if (uVar13 == 0) goto LAB_002d6f6d;
    lVar7 = uVar13 * 0x20;
  }
  puVar4 = (undefined8 *)FUN_00337270(lVar7);
  puVar6 = (undefined8 *)*param_1;
LAB_002d6f6d:
  puVar5 = puVar4;
  if (param_2 != puVar6) {
    lVar7 = ((ulong)((long)param_2 + (-0x20 - (long)puVar6)) >> 5) + 1;
    puVar6 = puVar6 + 2;
    do {
      *puVar5 = puVar5 + 2;
      if ((undefined8 *)puVar6[-2] == puVar6) {
        uVar1 = puVar6[1];
        puVar5[2] = *puVar6;
        puVar5[3] = uVar1;
      }
      else {
        *puVar5 = (undefined8 *)puVar6[-2];
        puVar5[2] = *puVar6;
      }
      puVar9 = puVar5 + 4;
      puVar5[1] = puVar6[-1];
      puVar6[-2] = puVar6;
      puVar6[-1] = 0;
      *(undefined1 *)puVar6 = 0;
      puVar6 = puVar6 + 4;
      puVar5 = puVar9;
    } while (puVar9 != puVar4 + lVar7 * 4);
    puVar5 = puVar4 + lVar7 * 4;
  }
  do {
    lVar7 = *param_3;
    lVar10 = param_3[1];
    *puVar5 = puVar5 + 2;
                    /* try { // try from 002d729d to 002d72a1 has its CatchHandler @ 002d73c5 */
    FUN_001caae0(puVar5,lVar7,lVar10 + lVar7);
    param_3 = param_3 + 4;
    puVar5 = puVar5 + 4;
  } while (param_4 != param_3);
  puVar6 = (undefined8 *)param_1[1];
  if (param_2 != puVar6) {
    lVar7 = ((ulong)((long)puVar6 + (-0x20 - (long)param_2)) >> 5) + 1;
    puVar6 = param_2 + 2;
    puVar9 = puVar5;
    do {
      *puVar9 = puVar9 + 2;
      if ((undefined8 *)puVar6[-2] == puVar6) {
        uVar1 = puVar6[1];
        puVar9[2] = *puVar6;
        puVar9[3] = uVar1;
      }
      else {
        *puVar9 = (undefined8 *)puVar6[-2];
        puVar9[2] = *puVar6;
      }
      uVar1 = puVar6[-1];
      puVar8 = puVar9 + 4;
      puVar6[-2] = puVar6;
      puVar6[-1] = 0;
      puVar9[1] = uVar1;
      *(undefined1 *)puVar6 = 0;
      puVar6 = puVar6 + 4;
      puVar9 = puVar8;
    } while (puVar8 != puVar5 + lVar7 * 4);
    puVar6 = (undefined8 *)param_1[1];
    puVar5 = puVar5 + lVar7 * 4;
  }
  puVar9 = (undefined8 *)*param_1;
  if (puVar9 != puVar6) {
    do {
      if ((undefined8 *)*puVar9 != puVar9 + 2) {
        FUN_00338a40();
      }
      puVar9 = puVar9 + 4;
    } while (puVar9 != puVar6);
    puVar6 = (undefined8 *)*param_1;
  }
  if (puVar6 != (undefined8 *)0x0) {
    FUN_00338a40(puVar6);
  }
  *param_1 = puVar4;
  param_1[1] = puVar5;
  param_1[2] = puVar4 + uVar3 * 4;
  return;
}

