
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* DWARF original name: _M_range_insert<__gnu_cxx::__normal_iterator<gold::Version_expression*,
   std::vector<gold::Version_expression> > >
   DWARF original prototype: void
   _M_range_insert<__gnu_cxx::__normal_iterator<gold::Version_expression*,_std::vector<gold::Version_expression>_>_>(vector<gold::Version_expression,_std::allocator<gold::Version_expression>_>
   * this, iterator __position,
   __normal_iterator<gold::Version_expression*,_std::vector<gold::Version_expression,_std::allocator<gold::Version_expression>_>_>
   __first,
   __normal_iterator<gold::Version_expression*,_std::vector<gold::Version_expression,_std::allocator<gold::Version_expression>_>_>
   __last, forward_iterator_tag param_5) */

void __thiscall
std::vector<gold::Version_expression,_std::allocator<gold::Version_expression>_>::
_M_range_insert<__gnu_cxx::__normal_iterator<gold::Version_expression*,_std::vector<gold::Version_expression>_>_>
          (vector<gold::Version_expression,_std::allocator<gold::Version_expression>_> *this,
          pointer __position,int *__first,int *__last)

{
  pointer *ppVVar1;
  pointer pcVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  string *psVar5;
  pointer pVVar6;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar7;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar8;
  string *psVar9;
  string *psVar10;
  size_t __n;
  int iVar11;
  uint uVar12;
  pointer pVVar13;
  pointer pVVar14;
  int iVar15;
  uint uVar16;
  int *piVar17;
  int *piVar18;
  uint local_2c;
  pointer local_28;
  pointer local_20;
  
  if (__first == __last) {
    return;
  }
  pVVar13 = (this->
            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)
            ._M_impl._M_finish;
  iVar11 = (int)__last - (int)__first;
  uVar12 = iVar11 >> 5;
  if (uVar12 <= (uint)((int)(this->
                            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>
                            )._M_impl._M_end_of_storage - (int)pVVar13 >> 5)) {
    iVar15 = (int)pVVar13 - (int)__position;
    uVar16 = iVar15 >> 5;
    if (uVar16 <= uVar12) {
      piVar17 = (int *)((int)__first + iVar15);
      pVVar6 = pVVar13;
      local_20 = pVVar13;
      if (__last != piVar17) {
        do {
          (local_20->pattern)._M_dataplus._M_p = (pointer)&(local_20->pattern).field_2;
                    /* try { // try from 003454e4 to 003454e8 has its CatchHandler @ 00345a9a */
          __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
          _M_construct<char*>(&local_20->pattern,*piVar17,piVar17[1] + *piVar17,0);
          piVar18 = piVar17 + 8;
          local_20->language = piVar17[6];
          local_20->exact_match = SUB41(piVar17[7],0);
          local_20->was_matched_by_symbol = *(bool *)((int)piVar17 + 0x1d);
          piVar17 = piVar18;
          local_20 = local_20 + 1;
        } while (__last != piVar18);
        pVVar6 = (this->
                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>
                 )._M_impl._M_finish;
      }
      pVVar6 = pVVar6 + (uVar12 - uVar16);
      (this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>
      )._M_impl._M_finish = pVVar6;
      paVar8 = &(__position->pattern).field_2;
      if (pVVar13 != __position) {
        do {
          (pVVar6->pattern)._M_dataplus._M_p = (pointer)&(pVVar6->pattern).field_2;
          if (paVar8 == (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                         *)*(size_type **)(paVar8->_M_local_buf + -8)) {
            (pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;
            *(size_type *)((int)&(pVVar6->pattern).field_2 + 4) =
                 *(size_type *)(paVar8->_M_local_buf + 4);
            *(size_type *)((int)&(pVVar6->pattern).field_2 + 8) =
                 *(size_type *)(paVar8->_M_local_buf + 8);
            *(size_type *)((int)&(pVVar6->pattern).field_2 + 0xc) =
                 *(size_type *)(paVar8->_M_local_buf + 0xc);
          }
          else {
            (pVVar6->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8)
            ;
            (pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;
          }
          (pVVar6->pattern)._M_string_length = *(size_type *)(paVar8->_M_local_buf + -4);
          *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
            **)(paVar8->_M_local_buf + -8) = paVar8;
          paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                    *)(paVar8->_M_local_buf + 0x20);
          *(size_type *)(paVar8->_M_local_buf + -4) = 0;
          paVar8->_M_local_buf[0] = '\0';
          pVVar6->language = *(Language *)(paVar8->_M_local_buf + 0x10);
          pVVar6->exact_match = SUB41(*(size_type *)(paVar8->_M_local_buf + 0x14),0);
          pVVar6->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15];
          paVar8 = paVar7;
          pVVar6 = pVVar6 + 1;
        } while (&(pVVar13->pattern).field_2 != paVar7);
        pVVar6 = (this->
                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>
                 )._M_impl._M_finish;
      }
      (this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>
      )._M_impl._M_finish = (pointer)((int)pVVar6 + iVar15);
      local_20 = (pointer)uVar16;
      if (iVar15 < 1) {
        return;
      }
      do {
        std::string::_M_assign((string *)__position);
        __position->language = __first[6];
        __position->exact_match = SUB41(__first[7],0);
        __position->was_matched_by_symbol = *(bool *)((int)__first + 0x1d);
        local_20 = (pointer)((int)local_20 - 1);
        __first = __first + 8;
        __position = __position + 1;
      } while (local_20 != (pointer)0x0);
      return;
    }
    psVar10 = (string *)((int)pVVar13 + (8 - iVar11));
    pVVar6 = pVVar13;
    do {
      (pVVar6->pattern)._M_dataplus._M_p = (pointer)&(pVVar6->pattern).field_2;
      if (*(string **)(psVar10 + -8) == psVar10) {
        (pVVar6->pattern).field_2._M_allocated_capacity = *(size_type *)psVar10;
        *(undefined4 *)((int)&(pVVar6->pattern).field_2 + 4) = *(undefined4 *)(psVar10 + 4);
        *(undefined4 *)((int)&(pVVar6->pattern).field_2 + 8) = *(undefined4 *)(psVar10 + 8);
        *(undefined4 *)((int)&(pVVar6->pattern).field_2 + 0xc) = *(undefined4 *)(psVar10 + 0xc);
      }
      else {
        (pVVar6->pattern)._M_dataplus._M_p = (pointer)*(string **)(psVar10 + -8);
        (pVVar6->pattern).field_2._M_allocated_capacity = *(size_type *)psVar10;
      }
      (pVVar6->pattern)._M_string_length = *(size_type *)(psVar10 + -4);
      *(string **)(psVar10 + -8) = psVar10;
      psVar9 = psVar10 + 0x20;
      *(undefined4 *)(psVar10 + -4) = 0;
      *psVar10 = (string)0x0;
      pVVar6->language = *(Language *)(psVar10 + 0x10);
      pVVar6->exact_match = (bool)psVar10[0x14];
      pVVar6->was_matched_by_symbol = (bool)psVar10[0x15];
      psVar10 = psVar9;
      pVVar6 = pVVar6 + 1;
    } while ((string *)&(pVVar13->pattern).field_2 != psVar9);
    ppVVar1 = &(this->
               super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>
               )._M_impl._M_finish;
    *ppVVar1 = (pointer)((int)*ppVVar1 + iVar11);
    local_20 = (pointer)((int)pVVar13 + (-0x18 - iVar11));
    psVar9 = (string *)((int)pVVar13 + (-(int)__position - iVar11));
    iVar15 = (int)psVar9 >> 5;
    psVar10 = (string *)&pVVar13[-1].pattern.field_2;
    if (0 < (int)psVar9) {
      do {
        psVar9 = *(string **)(psVar10 + -8);
        psVar5 = *(string **)((int)local_20 + -8);
        if ((pointer)psVar5 == local_20) {
          __n = *(size_t *)((int)local_20 + -4);
          if (__n != 0) {
            if (__n == 1) {
              *psVar9 = *(string *)local_20;
              psVar9 = *(string **)(psVar10 + -8);
              __n = *(size_t *)((int)local_20 + -4);
            }
            else {
              memcpy(psVar9,local_20,__n);
              psVar9 = *(string **)(psVar10 + -8);
              __n = *(size_t *)((int)local_20 + -4);
            }
          }
          *(size_t *)(psVar10 + -4) = __n;
          psVar9[__n] = (string)0x0;
        }
        else {
          if (psVar9 == psVar10) {
            *(string **)(psVar10 + -8) = psVar5;
            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);
            *(undefined4 *)psVar10 = *(undefined4 *)local_20;
          }
          else {
            *(string **)(psVar10 + -8) = psVar5;
            uVar4 = *(undefined4 *)psVar10;
            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);
            *(undefined4 *)psVar10 = *(undefined4 *)local_20;
            if (psVar9 != (string *)0x0) {
              *(string **)((int)local_20 + -8) = psVar9;
              *(undefined4 *)local_20 = uVar4;
              goto LAB_0034596d;
            }
          }
          *(pointer *)((int)local_20 + -8) = local_20;
        }
LAB_0034596d:
        *(undefined4 *)((int)local_20 + -4) = 0;
        **(undefined1 **)((int)local_20 + -8) = 0;
        *(undefined4 *)(psVar10 + 0x10) = *(undefined4 *)((int)local_20 + 0x10);
        psVar10[0x14] = *(string *)((int)local_20 + 0x14);
        psVar10[0x15] = *(string *)((int)local_20 + 0x15);
        iVar15 = iVar15 + -1;
        psVar10 = psVar10 + -0x20;
        local_20 = (pointer)((int)local_20 + -0x20);
      } while (iVar15 != 0);
    }
    local_20 = (pointer)uVar12;
    if (iVar11 < 1) {
      return;
    }
    do {
      std::string::_M_assign((string *)__position);
      __position->language = __first[6];
      __position->exact_match = SUB41(__first[7],0);
      __position->was_matched_by_symbol = *(bool *)((int)__first + 0x1d);
      local_20 = (pointer)((int)local_20 - 1);
      __first = __first + 8;
      __position = __position + 1;
    } while (local_20 != (pointer)0x0);
    return;
  }
  pVVar6 = (this->
           super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).
           _M_impl._M_start;
  uVar16 = (int)pVVar13 - (int)pVVar6 >> 5;
  if (0x7ffffff - uVar16 < uVar12) {
                    /* WARNING: Subroutine does not return */
    __throw_length_error("vector::_M_range_insert");
  }
  if (uVar12 < uVar16) {
    uVar12 = uVar16;
  }
  local_2c = uVar16 + uVar12;
  if ((CARRY4(uVar16,uVar12)) || (0x7ffffff < local_2c)) {
    uVar12 = 0xffffffe0;
    local_2c = 0x7ffffff;
  }
  else {
    local_28 = (pointer)0x0;
    if (local_2c == 0) goto LAB_00345692;
    uVar12 = local_2c * 0x20;
  }
  local_28 = (pointer)operator_new(uVar12);
  pVVar6 = (this->
           super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).
           _M_impl._M_start;
LAB_00345692:
  pVVar13 = local_28;
  if (__position != pVVar6) {
    paVar8 = &(pVVar6->pattern).field_2;
    do {
      (pVVar13->pattern)._M_dataplus._M_p = (pointer)&(pVVar13->pattern).field_2;
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)*(size_type **)(paVar8->_M_local_buf + -8) == paVar8) {
        (pVVar13->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;
        *(size_type *)((int)&(pVVar13->pattern).field_2 + 4) =
             *(size_type *)(paVar8->_M_local_buf + 4);
        *(size_type *)((int)&(pVVar13->pattern).field_2 + 8) =
             *(size_type *)(paVar8->_M_local_buf + 8);
        *(size_type *)((int)&(pVVar13->pattern).field_2 + 0xc) =
             *(size_type *)(paVar8->_M_local_buf + 0xc);
      }
      else {
        (pVVar13->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8);
        (pVVar13->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;
      }
      (pVVar13->pattern)._M_string_length = *(size_type *)(paVar8->_M_local_buf + -4);
      *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
        **)(paVar8->_M_local_buf + -8) = paVar8;
      paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                *)(paVar8->_M_local_buf + 0x20);
      *(size_type *)(paVar8->_M_local_buf + -4) = 0;
      paVar8->_M_local_buf[0] = '\0';
      pVVar13->language = *(Language *)(paVar8->_M_local_buf + 0x10);
      pVVar13->exact_match = SUB41(*(size_type *)(paVar8->_M_local_buf + 0x14),0);
      pVVar13->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15];
      paVar8 = paVar7;
      pVVar13 = pVVar13 + 1;
    } while (paVar7 != &(__position->pattern).field_2);
    pVVar13 = local_28 + ((uint)((int)__position + (-0x20 - (int)pVVar6)) >> 5) + 1;
  }
  do {
    (pVVar13->pattern)._M_dataplus._M_p = (pointer)&(pVVar13->pattern).field_2;
                    /* try { // try from 003457c3 to 003457c7 has its CatchHandler @ 00345a9c */
    __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::_M_construct<char*>
              (&pVVar13->pattern,*__first,__first[1] + *__first,0);
    piVar17 = __first + 8;
    pVVar6 = pVVar13 + 1;
    pVVar13->language = __first[6];
    pVVar13->exact_match = SUB41(__first[7],0);
    pVVar13->was_matched_by_symbol = *(bool *)((int)__first + 0x1d);
    __first = piVar17;
    pVVar13 = pVVar6;
  } while (__last != piVar17);
  pVVar13 = (this->
            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)
            ._M_impl._M_finish;
  if (__position != pVVar13) {
    paVar8 = &(__position->pattern).field_2;
    pVVar14 = pVVar6;
    do {
      puVar3 = *(undefined4 **)(paVar8->_M_local_buf + -8);
      ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
        *)&pVVar14->pattern)->_M_allocated_capacity = (size_type)((int)&pVVar14->pattern + 8);
      if (paVar8 == (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                     *)puVar3) {
        *(size_type *)((int)&pVVar14->pattern + 8) = paVar8->_M_allocated_capacity;
        *(undefined4 *)((int)&pVVar14->pattern + 0xc) = *(undefined4 *)(paVar8->_M_local_buf + 4);
        *(undefined4 *)
         ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)&pVVar14->pattern + 1) = *(undefined4 *)(paVar8->_M_local_buf + 8);
        *(undefined4 *)((int)&pVVar14->pattern + 0x14) = *(undefined4 *)(paVar8->_M_local_buf + 0xc)
        ;
      }
      else {
        ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
          *)&pVVar14->pattern)->_M_allocated_capacity = (size_type)puVar3;
        *(size_type *)((int)&pVVar14->pattern + 8) = paVar8->_M_allocated_capacity;
      }
      *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
        **)(paVar8->_M_local_buf + -8) = paVar8;
      paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                *)(paVar8->_M_local_buf + 0x20);
      *(char *)((int)paVar8 + -0xffffffff00000004) = '\0';
      *(char *)((int)paVar8 + -0xffffffff00000003) = '\0';
      *(char *)((int)paVar8 + -0xffffffff00000002) = '\0';
      *(char *)((int)paVar8 + -0xffffffff00000001) = '\0';
      *(undefined4 *)((int)&pVVar14->pattern + 4) = *(undefined4 *)(paVar8->_M_local_buf + -4);
      paVar8->_M_local_buf[0] = '\0';
      pVVar14->language = *(Language *)(paVar8->_M_local_buf + 0x10);
      pVVar14->exact_match = (bool)paVar8->_M_local_buf[0x14];
      pVVar14->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15];
      paVar8 = paVar7;
      pVVar14 = pVVar14 + 1;
    } while (&(pVVar13->pattern).field_2 != paVar7);
    pVVar6 = pVVar6 + ((uint)((int)pVVar13 + (-0x20 - (int)__position)) >> 5) + 1;
    pVVar13 = (this->
              super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>
              )._M_impl._M_finish;
  }
  pVVar14 = (this->
            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)
            ._M_impl._M_start;
  if (pVVar14 != pVVar13) {
    do {
      pcVar2 = (pVVar14->pattern)._M_dataplus._M_p;
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)pcVar2 != &(pVVar14->pattern).field_2) {
        operator_delete(pcVar2);
      }
      pVVar14 = pVVar14 + 1;
    } while (pVVar14 != pVVar13);
    pVVar13 = (this->
              super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>
              )._M_impl._M_start;
  }
  if (pVVar13 != (pointer)0x0) {
    operator_delete(pVVar13);
  }
  (this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).
  _M_impl._M_finish = pVVar6;
  (this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).
  _M_impl._M_start = local_28;
  (this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).
  _M_impl._M_end_of_storage = local_28 + local_2c;
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void FUN_00345450(undefined4 *param_1,undefined4 *param_2,int *param_3,int *param_4)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  size_t __n;
  int iVar6;
  uint uVar7;
  undefined4 *puVar8;
  int iVar9;
  uint uVar10;
  int *piVar11;
  int *piVar12;
  int iVar13;
  uint local_2c;
  undefined4 *local_28;
  undefined4 *local_20;
  
  if (param_3 == param_4) {
    return;
  }
  puVar2 = (undefined4 *)param_1[1];
  iVar6 = (int)param_4 - (int)param_3;
  uVar7 = iVar6 >> 5;
  if (uVar7 <= (uint)(param_1[2] - (int)puVar2 >> 5)) {
    iVar9 = (int)puVar2 - (int)param_2;
    uVar10 = iVar9 >> 5;
    if (uVar10 <= uVar7) {
      piVar11 = (int *)((int)param_3 + iVar9);
      puVar5 = puVar2;
      local_20 = puVar2;
      if (param_4 != piVar11) {
        do {
          *local_20 = local_20 + 2;
                    /* try { // try from 003454e4 to 003454e8 has its CatchHandler @ 00345a9a */
          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);
          piVar12 = piVar11 + 8;
          local_20[6] = piVar11[6];
          *(char *)(local_20 + 7) = (char)piVar11[7];
          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);
          piVar11 = piVar12;
          local_20 = local_20 + 8;
        } while (param_4 != piVar12);
        puVar5 = (undefined4 *)param_1[1];
      }
      puVar5 = puVar5 + (uVar7 - uVar10) * 8;
      param_1[1] = puVar5;
      puVar4 = param_2 + 2;
      if (puVar2 != param_2) {
        do {
          *puVar5 = puVar5 + 2;
          if (puVar4 == (undefined4 *)puVar4[-2]) {
            puVar5[2] = *puVar4;
            puVar5[3] = puVar4[1];
            puVar5[4] = puVar4[2];
            puVar5[5] = puVar4[3];
          }
          else {
            *puVar5 = (undefined4 *)puVar4[-2];
            puVar5[2] = *puVar4;
          }
          puVar5[1] = puVar4[-1];
          puVar4[-2] = puVar4;
          puVar8 = puVar4 + 8;
          puVar4[-1] = 0;
          *(undefined1 *)puVar4 = 0;
          puVar5[6] = puVar4[4];
          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);
          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);
          puVar4 = puVar8;
          puVar5 = puVar5 + 8;
        } while (puVar2 + 2 != puVar8);
        puVar5 = (undefined4 *)param_1[1];
      }
      param_1[1] = (int)puVar5 + iVar9;
      local_20 = (undefined4 *)uVar10;
      if (iVar9 < 1) {
        return;
      }
      do {
        FUN_003b5c90(param_2,param_3);
        param_2[6] = param_3[6];
        *(char *)(param_2 + 7) = (char)param_3[7];
        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);
        local_20 = (undefined4 *)((int)local_20 - 1);
        param_3 = param_3 + 8;
        param_2 = param_2 + 8;
      } while (local_20 != (undefined4 *)0x0);
      return;
    }
    puVar5 = (undefined4 *)((int)puVar2 + (8 - iVar6));
    puVar4 = puVar2;
    do {
      *puVar4 = puVar4 + 2;
      if ((undefined4 *)puVar5[-2] == puVar5) {
        puVar4[2] = *puVar5;
        puVar4[3] = puVar5[1];
        puVar4[4] = puVar5[2];
        puVar4[5] = puVar5[3];
      }
      else {
        *puVar4 = (undefined4 *)puVar5[-2];
        puVar4[2] = *puVar5;
      }
      puVar4[1] = puVar5[-1];
      puVar5[-2] = puVar5;
      puVar8 = puVar5 + 8;
      puVar5[-1] = 0;
      *(undefined1 *)puVar5 = 0;
      puVar4[6] = puVar5[4];
      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5);
      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15);
      puVar5 = puVar8;
      puVar4 = puVar4 + 8;
    } while (puVar2 + 2 != puVar8);
    param_1[1] = param_1[1] + iVar6;
    local_20 = (undefined4 *)((int)puVar2 + (-0x18 - iVar6));
    iVar9 = (int)puVar2 + (-(int)param_2 - iVar6);
    iVar13 = iVar9 >> 5;
    puVar2 = puVar2 + -6;
    if (0 < iVar9) {
      do {
        puVar5 = (undefined4 *)puVar2[-2];
        puVar4 = (undefined4 *)local_20[-2];
        if (puVar4 == local_20) {
          __n = local_20[-1];
          if (__n != 0) {
            if (__n == 1) {
              *(undefined1 *)puVar5 = *(undefined1 *)local_20;
              puVar5 = (undefined4 *)puVar2[-2];
              __n = local_20[-1];
            }
            else {
              memcpy(puVar5,local_20,__n);
              puVar5 = (undefined4 *)puVar2[-2];
              __n = local_20[-1];
            }
          }
          puVar2[-1] = __n;
          *(undefined1 *)((int)puVar5 + __n) = 0;
        }
        else {
          if (puVar5 == puVar2) {
            puVar2[-2] = puVar4;
            puVar2[-1] = local_20[-1];
            *puVar2 = *local_20;
          }
          else {
            puVar2[-2] = puVar4;
            uVar1 = *puVar2;
            puVar2[-1] = local_20[-1];
            *puVar2 = *local_20;
            if (puVar5 != (undefined4 *)0x0) {
              local_20[-2] = puVar5;
              *local_20 = uVar1;
              goto LAB_0034596d;
            }
          }
          local_20[-2] = local_20;
        }
LAB_0034596d:
        local_20[-1] = 0;
        *(undefined1 *)local_20[-2] = 0;
        puVar2[4] = local_20[4];
        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);
        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);
        iVar13 = iVar13 + -1;
        puVar2 = puVar2 + -8;
        local_20 = local_20 + -8;
      } while (iVar13 != 0);
    }
    local_20 = (undefined4 *)uVar7;
    if (iVar6 < 1) {
      return;
    }
    do {
      FUN_003b5c90(param_2,param_3);
      param_2[6] = param_3[6];
      *(char *)(param_2 + 7) = (char)param_3[7];
      *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);
      local_20 = (undefined4 *)((int)local_20 - 1);
      param_3 = param_3 + 8;
      param_2 = param_2 + 8;
    } while (local_20 != (undefined4 *)0x0);
    return;
  }
  puVar5 = (undefined4 *)*param_1;
  uVar10 = (int)puVar2 - (int)puVar5 >> 5;
  if (0x7ffffff - uVar10 < uVar7) {
                    /* WARNING: Subroutine does not return */
    FUN_003f3a70("vector::_M_range_insert");
  }
  if (uVar7 < uVar10) {
    uVar7 = uVar10;
  }
  local_2c = uVar10 + uVar7;
  if ((CARRY4(uVar10,uVar7)) || (0x7ffffff < local_2c)) {
    iVar6 = -0x20;
    local_2c = 0x7ffffff;
  }
  else {
    local_28 = (undefined4 *)0x0;
    if (local_2c == 0) goto LAB_00345692;
    iVar6 = local_2c * 0x20;
  }
  local_28 = (undefined4 *)FUN_003ac4d0(iVar6);
  puVar5 = (undefined4 *)*param_1;
LAB_00345692:
  puVar2 = local_28;
  if (param_2 != puVar5) {
    puVar2 = puVar5 + 2;
    puVar4 = local_28;
    do {
      *puVar4 = puVar4 + 2;
      if ((undefined4 *)puVar2[-2] == puVar2) {
        puVar4[2] = *puVar2;
        puVar4[3] = puVar2[1];
        puVar4[4] = puVar2[2];
        puVar4[5] = puVar2[3];
      }
      else {
        *puVar4 = (undefined4 *)puVar2[-2];
        puVar4[2] = *puVar2;
      }
      puVar4[1] = puVar2[-1];
      puVar2[-2] = puVar2;
      puVar8 = puVar2 + 8;
      puVar2[-1] = 0;
      *(undefined1 *)puVar2 = 0;
      puVar4[6] = puVar2[4];
      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5);
      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15);
      puVar2 = puVar8;
      puVar4 = puVar4 + 8;
    } while (puVar8 != param_2 + 2);
    puVar2 = local_28 + (((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8;
  }
  do {
    *puVar2 = puVar2 + 2;
                    /* try { // try from 003457c3 to 003457c7 has its CatchHandler @ 00345a9c */
    FUN_0014fca0(puVar2,*param_3,param_3[1] + *param_3,0);
    piVar11 = param_3 + 8;
    puVar5 = puVar2 + 8;
    puVar2[6] = param_3[6];
    *(char *)(puVar2 + 7) = (char)param_3[7];
    *(undefined1 *)((int)puVar2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);
    param_3 = piVar11;
    puVar2 = puVar5;
  } while (param_4 != piVar11);
  puVar2 = (undefined4 *)param_1[1];
  if (param_2 != puVar2) {
    puVar4 = param_2 + 2;
    puVar8 = puVar5;
    do {
      puVar3 = (undefined4 *)puVar4[-2];
      *puVar8 = puVar8 + 2;
      if (puVar4 == puVar3) {
        puVar8[2] = *puVar4;
        puVar8[3] = puVar4[1];
        puVar8[4] = puVar4[2];
        puVar8[5] = puVar4[3];
      }
      else {
        *puVar8 = puVar3;
        puVar8[2] = *puVar4;
      }
      uVar1 = puVar4[-1];
      puVar4[-2] = puVar4;
      puVar3 = puVar4 + 8;
      puVar4[-1] = 0;
      puVar8[1] = uVar1;
      *(undefined1 *)puVar4 = 0;
      puVar8[6] = puVar4[4];
      *(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5);
      *(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);
      puVar4 = puVar3;
      puVar8 = puVar8 + 8;
    } while (puVar2 + 2 != puVar3);
    puVar5 = puVar5 + (((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8;
    puVar2 = (undefined4 *)param_1[1];
  }
  puVar4 = (undefined4 *)*param_1;
  if (puVar4 != puVar2) {
    do {
      if ((undefined4 *)*puVar4 != puVar4 + 2) {
        FUN_003ae080((undefined4 *)*puVar4);
      }
      puVar4 = puVar4 + 8;
    } while (puVar4 != puVar2);
    puVar2 = (undefined4 *)*param_1;
  }
  if (puVar2 != (undefined4 *)0x0) {
    FUN_003ae080(puVar2);
  }
  param_1[1] = puVar5;
  *param_1 = local_28;
  param_1[2] = local_28 + local_2c * 8;
  return;
}


CALL 0x00074f02
ADD EAX,0x2a4bab
PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x3c
MOV dword ptr [EBP + -0x20],EAX
MOV ESI,dword ptr [EBP + 0x10]
CMP ESI,dword ptr [EBP + 0x14]
JZ 0x00345623
MOV EAX,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EBP + 0x14]
MOV EDI,dword ptr [EBP + 0xc]
MOV EBX,dword ptr [EAX + 0x4]
MOV EAX,dword ptr [EAX + 0x8]
SUB EDX,ESI
MOV dword ptr [EBP + -0x2c],EDX
SAR EDX,0x5
MOV dword ptr [EBP + -0x1c],EAX
SUB EAX,EBX
SAR EAX,0x5
MOV dword ptr [EBP + -0x28],EDX
MOV dword ptr [EBP + -0x34],EDX
MOV dword ptr [EBP + -0x24],EBX
CMP EAX,EDX
JC 0x00345630
SUB EBX,EDI
MOV dword ptr [EBP + -0x30],EBX
SAR EBX,0x5
MOV dword ptr [EBP + -0x38],EBX
MOV dword ptr [EBP + -0x3c],EBX
CMP EDX,EBX
JC 0x00345888
MOV EAX,dword ptr [EBP + -0x30]
LEA EBX,[ESI + EAX*0x1]
MOV EAX,dword ptr [EBP + -0x24]
CMP dword ptr [EBP + 0x14],EBX
JZ 0x00345517
MOV dword ptr [EBP + -0x1c],EAX
LEA ESI,[ESI]
MOV ECX,dword ptr [EBP + -0x1c]
LEA EAX,[ECX + 0x8]
MOV dword ptr [ECX],EAX
MOV EAX,dword ptr [EBX]
PUSH 0x0
MOV EDX,dword ptr [EBX + 0x4]
ADD EDX,EAX
PUSH EDX
PUSH EAX
PUSH ECX
CALL 0x0014fca0
MOV EAX,dword ptr [EBX + 0x18]
MOV ECX,dword ptr [EBP + -0x1c]
ADD ESP,0x10
ADD EBX,0x20
MOV dword ptr [ECX + 0x18],EAX
MOVZX EAX,byte ptr [EBX + -0x4]
ADD ECX,0x20
MOV byte ptr [ECX + -0x4],AL
MOVZX EAX,byte ptr [EBX + -0x3]
MOV byte ptr [ECX + -0x3],AL
MOV dword ptr [EBP + -0x1c],ECX
CMP dword ptr [EBP + 0x14],EBX
JNZ 0x003454d0
MOV EAX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX + 0x4]
MOV EDX,dword ptr [EBP + -0x28]
SUB EDX,dword ptr [EBP + -0x38]
SHL EDX,0x5
MOV ECX,dword ptr [EBP + -0x24]
ADD EDX,EAX
MOV EAX,dword ptr [EBP + 0x8]
LEA EBX,[ECX + 0x8]
MOV dword ptr [EAX + 0x4],EDX
MOV EAX,dword ptr [EBP + 0xc]
ADD EAX,0x8
CMP ECX,dword ptr [EBP + 0xc]
JZ 0x00345729
MOV dword ptr [EBP + -0x1c],ESI
JMP 0x00345585
MOV dword ptr [EDX],ECX
MOV ECX,dword ptr [EAX]
MOV dword ptr [EDX + 0x8],ECX
MOV ECX,dword ptr [EAX + -0x4]
ADD EDX,0x20
MOV dword ptr [EDX + -0x1c],ECX
MOV ECX,dword ptr [EAX + 0x10]
MOV dword ptr [EAX + -0x8],EAX
ADD EAX,0x20
MOV dword ptr [EAX + -0x24],0x0
MOV byte ptr [EAX + -0x20],0x0
MOV dword ptr [EDX + -0x8],ECX
MOVZX ECX,byte ptr [EAX + -0xc]
MOV byte ptr [EDX + -0x4],CL
MOVZX ECX,byte ptr [EAX + -0xb]
MOV byte ptr [EDX + -0x3],CL
CMP EBX,EAX
JZ 0x00345720
LEA ECX,[EDX + 0x8]
MOV ESI,ECX
MOV dword ptr [EDX],ECX
MOV ECX,dword ptr [EAX + -0x8]
CMP EAX,ECX
JNZ 0x00345548
MOV ECX,dword ptr [EAX]
MOV dword ptr [EDX + 0x8],ECX
MOV ECX,dword ptr [EAX + 0x4]
MOV dword ptr [ESI + 0x4],ECX
MOV ECX,dword ptr [EAX + 0x8]
MOV dword ptr [ESI + 0x8],ECX
MOV ECX,dword ptr [EAX + 0xc]
MOV dword ptr [ESI + 0xc],ECX
JMP 0x0034554f
MOV EAX,dword ptr [EBP + -0x1c]
ADD EAX,0x1
SHL EAX,0x5
ADD ESI,EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX + 0x4]
MOV EDX,EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV EDI,dword ptr [EAX]
CMP EDI,EDX
JZ 0x003455f7
MOV dword ptr [EBP + -0x1c],EDX
NOP
MOV EAX,dword ptr [EDI]
LEA EDX,[EDI + 0x8]
CMP EAX,EDX
JZ 0x003455e8
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x20]
PUSH EAX
CALL 0x003ae080
ADD ESP,0x10
ADD EDI,0x20
CMP EDI,dword ptr [EBP + -0x1c]
JNZ 0x003455d0
MOV EAX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX]
MOV EDX,EAX
TEST EDX,EDX
JZ 0x0034560a
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x20]
PUSH EDX
CALL 0x003ae080
ADD ESP,0x10
MOV EAX,dword ptr [EBP + 0x8]
MOV EDI,dword ptr [EBP + -0x24]
MOV dword ptr [EAX + 0x4],ESI
MOV ESI,dword ptr [EBP + 0x8]
MOV dword ptr [EAX],EDI
MOV EAX,dword ptr [EBP + -0x28]
SHL EAX,0x5
ADD EAX,EDI
MOV dword ptr [ESI + 0x8],EAX
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EBP + 0x8]
MOV EDX,0x7ffffff
MOV ECX,dword ptr [EAX]
MOV EAX,dword ptr [EBP + -0x24]
SUB EAX,ECX
SAR EAX,0x5
SUB EDX,EAX
CMP dword ptr [EBP + -0x28],EDX
JA 0x00345a88
MOV ESI,dword ptr [EBP + -0x28]
CMP ESI,EAX
MOV EDX,ESI
CMOVC EDX,EAX
ADD EAX,EDX
MOV dword ptr [EBP + -0x28],EAX
JC 0x00345780
CMP EAX,0x7ffffff
JA 0x00345780
MOV dword ptr [EBP + -0x24],0x0
TEST EAX,EAX
JZ 0x00345692
SHL EAX,0x5
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x20]
PUSH EAX
CALL 0x003ac4d0
ADD ESP,0x10
MOV dword ptr [EBP + -0x24],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV ECX,dword ptr [EAX]
CMP dword ptr [EBP + 0xc],ECX
JZ 0x00345a80
MOV ESI,dword ptr [EBP + 0xc]
LEA EAX,[ECX + 0x8]
MOV EDX,dword ptr [EBP + -0x24]
LEA EDI,[ESI + -0x20]
ADD ESI,0x8
SUB EDI,ECX
SHR EDI,0x5
JMP 0x003456f5
MOV dword ptr [EDX],ECX
MOV ECX,dword ptr [EAX]
MOV dword ptr [EDX + 0x8],ECX
MOV ECX,dword ptr [EAX + -0x4]
ADD EDX,0x20
MOV dword ptr [EDX + -0x1c],ECX
MOV ECX,dword ptr [EAX + 0x10]
MOV dword ptr [EAX + -0x8],EAX
ADD EAX,0x20
MOV dword ptr [EAX + -0x24],0x0
MOV byte ptr [EAX + -0x20],0x0
MOV dword ptr [EDX + -0x8],ECX
MOVZX ECX,byte ptr [EAX + -0xc]
MOV byte ptr [EDX + -0x4],CL
MOVZX ECX,byte ptr [EAX + -0xb]
MOV byte ptr [EDX + -0x3],CL
CMP EAX,ESI
JZ 0x00345798
LEA EBX,[EDX + 0x8]
MOV dword ptr [EDX],EBX
MOV ECX,dword ptr [EAX + -0x8]
CMP ECX,EAX
JNZ 0x003456b8
MOV ECX,dword ptr [EAX]
MOV dword ptr [EDX + 0x8],ECX
MOV ECX,dword ptr [EAX + 0x4]
MOV dword ptr [EDX + 0xc],ECX
MOV ECX,dword ptr [EAX + 0x8]
MOV dword ptr [EDX + 0x10],ECX
MOV ECX,dword ptr [EAX + 0xc]
MOV dword ptr [EDX + 0x14],ECX
JMP 0x003456bf
MOV EAX,dword ptr [EBP + 0x8]
MOV ESI,dword ptr [EBP + -0x1c]
MOV EDX,dword ptr [EAX + 0x4]
MOV EAX,dword ptr [EBP + -0x30]
MOV EBX,dword ptr [EBP + 0x8]
ADD EDX,EAX
MOV dword ptr [EBX + 0x4],EDX
TEST EAX,EAX
JLE 0x00345623
MOV EAX,dword ptr [EBP + -0x3c]
MOV dword ptr [EBP + -0x1c],EAX
LEA ESI,[ESI]
SUB ESP,0x8
MOV EBX,dword ptr [EBP + -0x20]
PUSH ESI
ADD ESI,0x20
PUSH EDI
ADD EDI,0x20
CALL 0x003b5c90
MOV EAX,dword ptr [ESI + -0x8]
ADD ESP,0x10
MOV dword ptr [EDI + -0x8],EAX
MOVZX EAX,byte ptr [ESI + -0x4]
MOV byte ptr [EDI + -0x4],AL
MOVZX EAX,byte ptr [ESI + -0x3]
MOV byte ptr [EDI + -0x3],AL
SUB dword ptr [EBP + -0x1c],0x1
JNZ 0x00345748
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,0xffffffe0
MOV dword ptr [EBP + -0x28],0x7ffffff
JMP 0x0034567b
ADD EDI,0x1
SHL EDI,0x5
ADD EDI,dword ptr [EBP + -0x24]
MOV EAX,dword ptr [EBP + 0x10]
MOV ESI,EDI
MOV EDX,EAX
LEA ESI,[ESI]
NOP
LEA EAX,[ESI + 0x8]
MOV EBX,EDX
MOV dword ptr [ESI],EAX
MOV EAX,dword ptr [EDX]
PUSH 0x0
MOV EDX,dword ptr [EDX + 0x4]
ADD EDX,EAX
PUSH EDX
PUSH EAX
PUSH ESI
CALL 0x0014fca0
MOV EAX,dword ptr [EBX + 0x18]
ADD EBX,0x20
ADD ESP,0x10
ADD ESI,0x20
MOV dword ptr [ESI + -0x8],EAX
MOVZX EAX,byte ptr [EBX + -0x4]
MOV byte ptr [ESI + -0x4],AL
MOVZX EAX,byte ptr [EBX + -0x3]
MOV EDX,EBX
MOV byte ptr [ESI + -0x3],AL
CMP dword ptr [EBP + 0x14],EBX
JNZ 0x003457b0
MOV EAX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX + 0x4]
MOV EDX,EAX
CMP dword ptr [EBP + 0xc],EAX
JZ 0x003455c3
MOV EDI,EDX
SUB EDI,dword ptr [EBP + 0xc]
MOV EAX,dword ptr [EBP + 0xc]
LEA EDX,[EDI + -0x20]
MOV EDI,dword ptr [EBP + 0xc]
MOV EBX,EDX
ADD EAX,0x8
SHR EBX,0x5
LEA EDI,[EDX + EDI*0x1 + 0x28]
MOV EDX,ESI
MOV dword ptr [EBP + -0x1c],EBX
JMP 0x0034585d
MOV dword ptr [EDX],ECX
MOV ECX,dword ptr [EAX]
MOV dword ptr [EDX + 0x8],ECX
MOV ECX,dword ptr [EAX + -0x4]
MOV dword ptr [EAX + -0x8],EAX
ADD EAX,0x20
ADD EDX,0x20
MOV dword ptr [EAX + -0x24],0x0
MOV dword ptr [EDX + -0x1c],ECX
MOV ECX,dword ptr [EAX + -0x10]
MOV byte ptr [EAX + -0x20],0x0
MOV dword ptr [EDX + -0x8],ECX
MOVZX ECX,byte ptr [EAX + -0xc]
MOV byte ptr [EDX + -0x4],CL
MOVZX ECX,byte ptr [EAX + -0xb]
MOV byte ptr [EDX + -0x3],CL
CMP EDI,EAX
JZ 0x003455b0
MOV ECX,dword ptr [EAX + -0x8]
LEA EBX,[EDX + 0x8]
MOV dword ptr [EDX],EBX
CMP EAX,ECX
JNZ 0x00345820
MOV ECX,dword ptr [EAX]
MOV dword ptr [EDX + 0x8],ECX
MOV ECX,dword ptr [EAX + 0x4]
MOV dword ptr [EDX + 0xc],ECX
MOV ECX,dword ptr [EAX + 0x8]
MOV dword ptr [EDX + 0x10],ECX
MOV ECX,dword ptr [EAX + 0xc]
MOV dword ptr [EDX + 0x14],ECX
JMP 0x00345827
MOV EDX,dword ptr [EBP + -0x24]
MOV EAX,EDX
LEA EBX,[EDX + 0x8]
SUB EAX,dword ptr [EBP + -0x2c]
MOV dword ptr [EBP + -0x28],EAX
ADD EAX,0x8
MOV dword ptr [EBP + -0x1c],EBX
JMP 0x003458da
MOV dword ptr [EDX],ECX
MOV ECX,dword ptr [EAX]
MOV dword ptr [EDX + 0x8],ECX
MOV ECX,dword ptr [EAX + -0x4]
ADD EDX,0x20
MOV dword ptr [EDX + -0x1c],ECX
MOV ECX,dword ptr [EAX + 0x10]
MOV dword ptr [EAX + -0x8],EAX
ADD EAX,0x20
MOV dword ptr [EAX + -0x24],0x0
MOV byte ptr [EAX + -0x20],0x0
MOV dword ptr [EDX + -0x8],ECX
MOVZX ECX,byte ptr [EAX + -0xc]
MOV byte ptr [EDX + -0x4],CL
MOVZX ECX,byte ptr [EAX + -0xb]
MOV byte ptr [EDX + -0x3],CL
CMP dword ptr [EBP + -0x1c],EAX
JZ 0x00345900
LEA EBX,[EDX + 0x8]
MOV dword ptr [EDX],EBX
MOV ECX,dword ptr [EAX + -0x8]
CMP ECX,EAX
JNZ 0x003458a0
MOV ECX,dword ptr [EAX]
MOV dword ptr [EDX + 0x8],ECX
MOV ECX,dword ptr [EAX + 0x4]
MOV dword ptr [EDX + 0xc],ECX
MOV ECX,dword ptr [EAX + 0x8]
MOV dword ptr [EDX + 0x10],ECX
MOV ECX,dword ptr [EAX + 0xc]
MOV dword ptr [EDX + 0x14],ECX
JMP 0x003458a7
MOV EAX,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EBP + -0x2c]
ADD dword ptr [EAX + 0x4],EDX
MOV EDX,dword ptr [EBP + -0x28]
MOV EAX,EDX
SUB EDX,0x18
SUB EAX,dword ptr [EBP + 0xc]
MOV ECX,EDX
MOV EDX,dword ptr [EBP + -0x24]
MOV EBX,EAX
SAR EBX,0x5
SUB EDX,0x18
TEST EAX,EAX
JLE 0x00345a15
MOV dword ptr [EBP + -0x24],EDI
MOV EDI,EDX
MOV EDX,ESI
MOV ESI,EBX
MOV dword ptr [EBP + -0x1c],ECX
JMP 0x0034599f
CMP EAX,EDI
JZ 0x003459f0
MOV dword ptr [EDI + -0x8],ECX
MOV ECX,dword ptr [EBP + -0x1c]
MOV EBX,dword ptr [EDI]
MOV ECX,dword ptr [ECX + -0x4]
MOV dword ptr [EDI + -0x4],ECX
MOV ECX,dword ptr [EBP + -0x1c]
MOV ECX,dword ptr [ECX]
MOV dword ptr [EDI],ECX
TEST EAX,EAX
JZ 0x00345a00
MOV ECX,dword ptr [EBP + -0x1c]
MOV dword ptr [ECX + -0x8],EAX
MOV dword ptr [ECX],EBX
MOV EBX,dword ptr [EBP + -0x1c]
SUB EDI,0x20
MOV EAX,dword ptr [EBX + -0x8]
MOV dword ptr [EBX + -0x4],0x0
SUB EBX,0x20
MOV byte ptr [EAX],0x0
MOV EAX,dword ptr [EBX + 0x30]
MOV dword ptr [EDI + 0x30],EAX
MOVZX EAX,byte ptr [EBX + 0x34]
MOV byte ptr [EDI + 0x34],AL
MOVZX EAX,byte ptr [EBX + 0x35]
MOV dword ptr [EBP + -0x1c],EBX
MOV byte ptr [EDI + 0x35],AL
SUB ESI,0x1
JZ 0x00345a10
MOV EBX,dword ptr [EBP + -0x1c]
MOV EAX,dword ptr [EDI + -0x8]
MOV ECX,dword ptr [EBX + -0x8]
CMP ECX,EBX
JNZ 0x00345940
MOV ECX,dword ptr [EBX + -0x4]
TEST ECX,ECX
JZ 0x003459e0
CMP ECX,0x1
JZ 0x00345a70
SUB ESP,0x4
MOV EBX,dword ptr [EBP + -0x20]
MOV dword ptr [EBP + -0x28],EDX
PUSH ECX
PUSH dword ptr [EBP + -0x1c]
PUSH EAX
CALL 0x000392d0
MOV EDX,dword ptr [EBP + -0x1c]
MOV EAX,dword ptr [EDI + -0x8]
ADD ESP,0x10
MOV ECX,dword ptr [EDX + -0x4]
MOV EDX,dword ptr [EBP + -0x28]
NOP
MOV dword ptr [EDI + -0x4],ECX
MOV byte ptr [EAX + ECX*0x1],0x0
JMP 0x0034596d
MOV EBX,dword ptr [EBP + -0x1c]
MOV dword ptr [EDI + -0x8],ECX
MOV EAX,dword ptr [EBX + -0x4]
MOV dword ptr [EDI + -0x4],EAX
MOV EAX,dword ptr [EBX]
MOV dword ptr [EDI],EAX
MOV EAX,dword ptr [EBP + -0x1c]
MOV dword ptr [EAX + -0x8],EAX
JMP 0x0034596d
MOV EDI,dword ptr [EBP + -0x24]
MOV ESI,EDX
MOV EAX,dword ptr [EBP + -0x2c]
TEST EAX,EAX
JLE 0x00345623
MOV EAX,dword ptr [EBP + -0x34]
MOV dword ptr [EBP + -0x1c],EAX
LEA ESI,[ESI]
LEA ESI,[ESI]
SUB ESP,0x8
MOV EBX,dword ptr [EBP + -0x20]
PUSH ESI
ADD ESI,0x20
PUSH EDI
ADD EDI,0x20
CALL 0x003b5c90
MOV EAX,dword ptr [ESI + -0x8]
ADD ESP,0x10
MOV dword ptr [EDI + -0x8],EAX
MOVZX EAX,byte ptr [ESI + -0x4]
MOV byte ptr [EDI + -0x4],AL
MOVZX EAX,byte ptr [ESI + -0x3]
MOV byte ptr [EDI + -0x3],AL
SUB dword ptr [EBP + -0x1c],0x1
JNZ 0x00345a30
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOVZX ECX,byte ptr [EBX]
MOV byte ptr [EAX],CL
MOV EAX,dword ptr [EDI + -0x8]
MOV ECX,dword ptr [EBX + -0x4]
JMP 0x003459e0
MOV EDI,dword ptr [EBP + -0x24]
JMP 0x003457a1
MOV EBX,dword ptr [EBP + -0x20]
SUB ESP,0xc
LEA EAX,[EBX + 0xffe9b856]
PUSH EAX
CALL 0x003f3a70
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_00345450(undefined4 *param_1,undefined4 *param_2,int *param_3,int *param_4)\n\n{\n  undefined4 uVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  size_t __n;\n  int iVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  uint uVar10;\n  int *piVar11;\n  int *piVar12;\n  int iVar13;\n  uint local_2c;\n  undefined4 *local_28;\n  undefined4 *local_20;\n  \n  if (param_3 == param_4) {\n    return;\n  }\n  puVar2 = (undefined4 *)param_1[1];\n  iVar6 = (int)param_4 - (int)param_3;\n  uVar7 = iVar6 >> 5;\n  if (uVar7 <= (uint)(param_1[2] - (int)puVar2 >> 5)) {\n    iVar9 = (int)puVar2 - (int)param_2;\n    uVar10 = iVar9 >> 5;\n    if (uVar10 <= uVar7) {\n      piVar11 = (int *)((int)param_3 + iVar9);\n      puVar5 = puVar2;\n      local_20 = puVar2;\n      if (param_4 != piVar11) {\n        do {\n          *local_20 = local_20 + 2;\n                    /* try { // try from 003454e4 to 003454e8 has its CatchHandler @ 00345a9a */\n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      puVar5 = puVar5 + (uVar7 - uVar10) * 8;\n      param_1[1] = puVar5;\n      puVar4 = param_2 + 2;\n      if (puVar2 != param_2) {\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = (int)puVar5 + iVar9;\n      local_20 = (undefined4 *)uVar10;\n      if (iVar9 < 1) {\n        return;\n      }\n      do {\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      } while (local_20 != (undefined4 *)0x0);\n      return;\n    }\n    puVar5 = (undefined4 *)((int)puVar2 + (8 - iVar6));\n    puVar4 = puVar2;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar5[-2] == puVar5) {\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }\n      puVar4[1] = puVar5[-1];\n      puVar5[-2] = puVar5;\n      puVar8 = puVar5 + 8;\n      puVar5[-1] = 0;\n      *(undefined1 *)puVar5 = 0;\n      puVar4[6] = puVar5[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15);\n      puVar5 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar2 + 2 != puVar8);\n    param_1[1] = param_1[1] + iVar6;\n    local_20 = (undefined4 *)((int)puVar2 + (-0x18 - iVar6));\n    iVar9 = (int)puVar2 + (-(int)param_2 - iVar6);\n    iVar13 = iVar9 >> 5;\n    puVar2 = puVar2 + -6;\n    if (0 < iVar9) {\n      do {\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      } while (iVar13 != 0);\n    }\n    local_20 = (undefined4 *)uVar7;\n    if (iVar6 < 1) {\n      return;\n    }\n    do {\n      FUN_003b5c90(param_2,param_3);\n      param_2[6] = param_3[6];\n      *(char *)(param_2 + 7) = (char)param_3[7];\n      *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n      local_20 = (undefined4 *)((int)local_20 - 1);\n      param_3 = param_3 + 8;\n      param_2 = param_2 + 8;\n    } while (local_20 != (undefined4 *)0x0);\n    return;\n  }\n  puVar5 = (undefined4 *)*param_1;\n  uVar10 = (int)puVar2 - (int)puVar5 >> 5;\n  if (0x7ffffff - uVar10 < uVar7) {\n                    /* WARNING: Subroutine does not return */\n    FUN_003f3a70("vector::_M_range_insert");\n  }\n  if (uVar7 < uVar10) {\n    uVar7 = uVar10;\n  }\n  local_2c = uVar10 + uVar7;\n  if ((CARRY4(uVar10,uVar7)) || (0x7ffffff < local_2c)) {\n    iVar6 = -0x20;\n    local_2c = 0x7ffffff;\n  }\n  else {\n    local_28 = (undefined4 *)0x0;\n    if (local_2c == 0) goto LAB_00345692;\n    iVar6 = local_2c * 0x20;\n  }\n  local_28 = (undefined4 *)FUN_003ac4d0(iVar6);\n  puVar5 = (undefined4 *)*param_1;\nLAB_00345692:\n  puVar2 = local_28;\n  if (param_2 != puVar5) {\n    puVar2 = puVar5 + 2;\n    puVar4 = local_28;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar2[-2] == puVar2) {\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }\n      puVar4[1] = puVar2[-1];\n      puVar2[-2] = puVar2;\n      puVar8 = puVar2 + 8;\n      puVar2[-1] = 0;\n      *(undefined1 *)puVar2 = 0;\n      puVar4[6] = puVar2[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15);\n      puVar2 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar8 != param_2 + 2);\n    puVar2 = local_28 + (((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8;\n  }\n  do {\n    *puVar2 = puVar2 + 2;\n                    /* try { // try from 003457c3 to 003457c7 has its CatchHandler @ 00345a9c */\n    FUN_0014fca0(puVar2,*param_3,param_3[1] + *param_3,0);\n    piVar11 = param_3 + 8;\n    puVar5 = puVar2 + 8;\n    puVar2[6] = param_3[6];\n    *(char *)(puVar2 + 7) = (char)param_3[7];\n    *(undefined1 *)((int)puVar2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n    param_3 = piVar11;\n    puVar2 = puVar5;\n  } while (param_4 != piVar11);\n  puVar2 = (undefined4 *)param_1[1];\n  if (param_2 != puVar2) {\n    puVar4 = param_2 + 2;\n    puVar8 = puVar5;\n    do {\n      puVar3 = (undefined4 *)puVar4[-2];\n      *puVar8 = puVar8 + 2;\n      if (puVar4 == puVar3) {\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }\n      else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }\n      uVar1 = puVar4[-1];\n      puVar4[-2] = puVar4;\n      puVar3 = puVar4 + 8;\n      puVar4[-1] = 0;\n      puVar8[1] = uVar1;\n      *(undefined1 *)puVar4 = 0;\n      puVar8[6] = puVar4[4];\n      *(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5);\n      *(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n      puVar4 = puVar3;\n      puVar8 = puVar8 + 8;\n    } while (puVar2 + 2 != puVar3);\n    puVar5 = puVar5 + (((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8;\n    puVar2 = (undefined4 *)param_1[1];\n  }\n  puVar4 = (undefined4 *)*param_1;\n  if (puVar4 != puVar2) {\n    do {\n      if ((undefined4 *)*puVar4 != puVar4 + 2) {\n        FUN_003ae080((undefined4 *)*puVar4);\n      }\n      puVar4 = puVar4 + 8;\n    } while (puVar4 != puVar2);\n    puVar2 = (undefined4 *)*param_1;\n  }\n  if (puVar2 != (undefined4 *)0x0) {\n    FUN_003ae080(puVar2);\n  }\n  param_1[1] = puVar5;\n  *param_1 = local_28;\n  param_1[2] = local_28 + local_2c * 8;\n  return;\n}\n\n" comment (function_definition "void FUN_00345450(undefined4 *param_1,undefined4 *param_2,int *param_3,int *param_4)\n\n{\n  undefined4 uVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  size_t __n;\n  int iVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  uint uVar10;\n  int *piVar11;\n  int *piVar12;\n  int iVar13;\n  uint local_2c;\n  undefined4 *local_28;\n  undefined4 *local_20;\n  \n  if (param_3 == param_4) {\n    return;\n  }\n  puVar2 = (undefined4 *)param_1[1];\n  iVar6 = (int)param_4 - (int)param_3;\n  uVar7 = iVar6 >> 5;\n  if (uVar7 <= (uint)(param_1[2] - (int)puVar2 >> 5)) {\n    iVar9 = (int)puVar2 - (int)param_2;\n    uVar10 = iVar9 >> 5;\n    if (uVar10 <= uVar7) {\n      piVar11 = (int *)((int)param_3 + iVar9);\n      puVar5 = puVar2;\n      local_20 = puVar2;\n      if (param_4 != piVar11) {\n        do {\n          *local_20 = local_20 + 2;\n                    /* try { // try from 003454e4 to 003454e8 has its CatchHandler @ 00345a9a */\n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      puVar5 = puVar5 + (uVar7 - uVar10) * 8;\n      param_1[1] = puVar5;\n      puVar4 = param_2 + 2;\n      if (puVar2 != param_2) {\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = (int)puVar5 + iVar9;\n      local_20 = (undefined4 *)uVar10;\n      if (iVar9 < 1) {\n        return;\n      }\n      do {\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      } while (local_20 != (undefined4 *)0x0);\n      return;\n    }\n    puVar5 = (undefined4 *)((int)puVar2 + (8 - iVar6));\n    puVar4 = puVar2;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar5[-2] == puVar5) {\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }\n      puVar4[1] = puVar5[-1];\n      puVar5[-2] = puVar5;\n      puVar8 = puVar5 + 8;\n      puVar5[-1] = 0;\n      *(undefined1 *)puVar5 = 0;\n      puVar4[6] = puVar5[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15);\n      puVar5 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar2 + 2 != puVar8);\n    param_1[1] = param_1[1] + iVar6;\n    local_20 = (undefined4 *)((int)puVar2 + (-0x18 - iVar6));\n    iVar9 = (int)puVar2 + (-(int)param_2 - iVar6);\n    iVar13 = iVar9 >> 5;\n    puVar2 = puVar2 + -6;\n    if (0 < iVar9) {\n      do {\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      } while (iVar13 != 0);\n    }\n    local_20 = (undefined4 *)uVar7;\n    if (iVar6 < 1) {\n      return;\n    }\n    do {\n      FUN_003b5c90(param_2,param_3);\n      param_2[6] = param_3[6];\n      *(char *)(param_2 + 7) = (char)param_3[7];\n      *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n      local_20 = (undefined4 *)((int)local_20 - 1);\n      param_3 = param_3 + 8;\n      param_2 = param_2 + 8;\n    } while (local_20 != (undefined4 *)0x0);\n    return;\n  }\n  puVar5 = (undefined4 *)*param_1;\n  uVar10 = (int)puVar2 - (int)puVar5 >> 5;\n  if (0x7ffffff - uVar10 < uVar7) {\n                    /* WARNING: Subroutine does not return */\n    FUN_003f3a70("vector::_M_range_insert");\n  }\n  if (uVar7 < uVar10) {\n    uVar7 = uVar10;\n  }\n  local_2c = uVar10 + uVar7;\n  if ((CARRY4(uVar10,uVar7)) || (0x7ffffff < local_2c)) {\n    iVar6 = -0x20;\n    local_2c = 0x7ffffff;\n  }\n  else {\n    local_28 = (undefined4 *)0x0;\n    if (local_2c == 0) goto LAB_00345692;\n    iVar6 = local_2c * 0x20;\n  }\n  local_28 = (undefined4 *)FUN_003ac4d0(iVar6);\n  puVar5 = (undefined4 *)*param_1;\nLAB_00345692:\n  puVar2 = local_28;\n  if (param_2 != puVar5) {\n    puVar2 = puVar5 + 2;\n    puVar4 = local_28;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar2[-2] == puVar2) {\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }\n      puVar4[1] = puVar2[-1];\n      puVar2[-2] = puVar2;\n      puVar8 = puVar2 + 8;\n      puVar2[-1] = 0;\n      *(undefined1 *)puVar2 = 0;\n      puVar4[6] = puVar2[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15);\n      puVar2 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar8 != param_2 + 2);\n    puVar2 = local_28 + (((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8;\n  }\n  do {\n    *puVar2 = puVar2 + 2;\n                    /* try { // try from 003457c3 to 003457c7 has its CatchHandler @ 00345a9c */\n    FUN_0014fca0(puVar2,*param_3,param_3[1] + *param_3,0);\n    piVar11 = param_3 + 8;\n    puVar5 = puVar2 + 8;\n    puVar2[6] = param_3[6];\n    *(char *)(puVar2 + 7) = (char)param_3[7];\n    *(undefined1 *)((int)puVar2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n    param_3 = piVar11;\n    puVar2 = puVar5;\n  } while (param_4 != piVar11);\n  puVar2 = (undefined4 *)param_1[1];\n  if (param_2 != puVar2) {\n    puVar4 = param_2 + 2;\n    puVar8 = puVar5;\n    do {\n      puVar3 = (undefined4 *)puVar4[-2];\n      *puVar8 = puVar8 + 2;\n      if (puVar4 == puVar3) {\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }\n      else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }\n      uVar1 = puVar4[-1];\n      puVar4[-2] = puVar4;\n      puVar3 = puVar4 + 8;\n      puVar4[-1] = 0;\n      puVar8[1] = uVar1;\n      *(undefined1 *)puVar4 = 0;\n      puVar8[6] = puVar4[4];\n      *(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5);\n      *(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n      puVar4 = puVar3;\n      puVar8 = puVar8 + 8;\n    } while (puVar2 + 2 != puVar3);\n    puVar5 = puVar5 + (((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8;\n    puVar2 = (undefined4 *)param_1[1];\n  }\n  puVar4 = (undefined4 *)*param_1;\n  if (puVar4 != puVar2) {\n    do {\n      if ((undefined4 *)*puVar4 != puVar4 + 2) {\n        FUN_003ae080((undefined4 *)*puVar4);\n      }\n      puVar4 = puVar4 + 8;\n    } while (puVar4 != puVar2);\n    puVar2 = (undefined4 *)*param_1;\n  }\n  if (puVar2 != (undefined4 *)0x0) {\n    FUN_003ae080(puVar2);\n  }\n  param_1[1] = puVar5;\n  *param_1 = local_28;\n  param_1[2] = local_28 + local_2c * 8;\n  return;\n}" primitive_type (function_declarator "FUN_00345450(undefined4 *param_1,undefined4 *param_2,int *param_3,int *param_4)" identifier (parameter_list "(undefined4 *param_1,undefined4 *param_2,int *param_3,int *param_4)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  undefined4 uVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  size_t __n;\n  int iVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  uint uVar10;\n  int *piVar11;\n  int *piVar12;\n  int iVar13;\n  uint local_2c;\n  undefined4 *local_28;\n  undefined4 *local_20;\n  \n  if (param_3 == param_4) {\n    return;\n  }\n  puVar2 = (undefined4 *)param_1[1];\n  iVar6 = (int)param_4 - (int)param_3;\n  uVar7 = iVar6 >> 5;\n  if (uVar7 <= (uint)(param_1[2] - (int)puVar2 >> 5)) {\n    iVar9 = (int)puVar2 - (int)param_2;\n    uVar10 = iVar9 >> 5;\n    if (uVar10 <= uVar7) {\n      piVar11 = (int *)((int)param_3 + iVar9);\n      puVar5 = puVar2;\n      local_20 = puVar2;\n      if (param_4 != piVar11) {\n        do {\n          *local_20 = local_20 + 2;\n                    /* try { // try from 003454e4 to 003454e8 has its CatchHandler @ 00345a9a */\n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      puVar5 = puVar5 + (uVar7 - uVar10) * 8;\n      param_1[1] = puVar5;\n      puVar4 = param_2 + 2;\n      if (puVar2 != param_2) {\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = (int)puVar5 + iVar9;\n      local_20 = (undefined4 *)uVar10;\n      if (iVar9 < 1) {\n        return;\n      }\n      do {\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      } while (local_20 != (undefined4 *)0x0);\n      return;\n    }\n    puVar5 = (undefined4 *)((int)puVar2 + (8 - iVar6));\n    puVar4 = puVar2;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar5[-2] == puVar5) {\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }\n      puVar4[1] = puVar5[-1];\n      puVar5[-2] = puVar5;\n      puVar8 = puVar5 + 8;\n      puVar5[-1] = 0;\n      *(undefined1 *)puVar5 = 0;\n      puVar4[6] = puVar5[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15);\n      puVar5 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar2 + 2 != puVar8);\n    param_1[1] = param_1[1] + iVar6;\n    local_20 = (undefined4 *)((int)puVar2 + (-0x18 - iVar6));\n    iVar9 = (int)puVar2 + (-(int)param_2 - iVar6);\n    iVar13 = iVar9 >> 5;\n    puVar2 = puVar2 + -6;\n    if (0 < iVar9) {\n      do {\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      } while (iVar13 != 0);\n    }\n    local_20 = (undefined4 *)uVar7;\n    if (iVar6 < 1) {\n      return;\n    }\n    do {\n      FUN_003b5c90(param_2,param_3);\n      param_2[6] = param_3[6];\n      *(char *)(param_2 + 7) = (char)param_3[7];\n      *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n      local_20 = (undefined4 *)((int)local_20 - 1);\n      param_3 = param_3 + 8;\n      param_2 = param_2 + 8;\n    } while (local_20 != (undefined4 *)0x0);\n    return;\n  }\n  puVar5 = (undefined4 *)*param_1;\n  uVar10 = (int)puVar2 - (int)puVar5 >> 5;\n  if (0x7ffffff - uVar10 < uVar7) {\n                    /* WARNING: Subroutine does not return */\n    FUN_003f3a70("vector::_M_range_insert");\n  }\n  if (uVar7 < uVar10) {\n    uVar7 = uVar10;\n  }\n  local_2c = uVar10 + uVar7;\n  if ((CARRY4(uVar10,uVar7)) || (0x7ffffff < local_2c)) {\n    iVar6 = -0x20;\n    local_2c = 0x7ffffff;\n  }\n  else {\n    local_28 = (undefined4 *)0x0;\n    if (local_2c == 0) goto LAB_00345692;\n    iVar6 = local_2c * 0x20;\n  }\n  local_28 = (undefined4 *)FUN_003ac4d0(iVar6);\n  puVar5 = (undefined4 *)*param_1;\nLAB_00345692:\n  puVar2 = local_28;\n  if (param_2 != puVar5) {\n    puVar2 = puVar5 + 2;\n    puVar4 = local_28;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar2[-2] == puVar2) {\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }\n      puVar4[1] = puVar2[-1];\n      puVar2[-2] = puVar2;\n      puVar8 = puVar2 + 8;\n      puVar2[-1] = 0;\n      *(undefined1 *)puVar2 = 0;\n      puVar4[6] = puVar2[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15);\n      puVar2 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar8 != param_2 + 2);\n    puVar2 = local_28 + (((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8;\n  }\n  do {\n    *puVar2 = puVar2 + 2;\n                    /* try { // try from 003457c3 to 003457c7 has its CatchHandler @ 00345a9c */\n    FUN_0014fca0(puVar2,*param_3,param_3[1] + *param_3,0);\n    piVar11 = param_3 + 8;\n    puVar5 = puVar2 + 8;\n    puVar2[6] = param_3[6];\n    *(char *)(puVar2 + 7) = (char)param_3[7];\n    *(undefined1 *)((int)puVar2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n    param_3 = piVar11;\n    puVar2 = puVar5;\n  } while (param_4 != piVar11);\n  puVar2 = (undefined4 *)param_1[1];\n  if (param_2 != puVar2) {\n    puVar4 = param_2 + 2;\n    puVar8 = puVar5;\n    do {\n      puVar3 = (undefined4 *)puVar4[-2];\n      *puVar8 = puVar8 + 2;\n      if (puVar4 == puVar3) {\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }\n      else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }\n      uVar1 = puVar4[-1];\n      puVar4[-2] = puVar4;\n      puVar3 = puVar4 + 8;\n      puVar4[-1] = 0;\n      puVar8[1] = uVar1;\n      *(undefined1 *)puVar4 = 0;\n      puVar8[6] = puVar4[4];\n      *(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5);\n      *(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n      puVar4 = puVar3;\n      puVar8 = puVar8 + 8;\n    } while (puVar2 + 2 != puVar3);\n    puVar5 = puVar5 + (((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8;\n    puVar2 = (undefined4 *)param_1[1];\n  }\n  puVar4 = (undefined4 *)*param_1;\n  if (puVar4 != puVar2) {\n    do {\n      if ((undefined4 *)*puVar4 != puVar4 + 2) {\n        FUN_003ae080((undefined4 *)*puVar4);\n      }\n      puVar4 = puVar4 + 8;\n    } while (puVar4 != puVar2);\n    puVar2 = (undefined4 *)*param_1;\n  }\n  if (puVar2 != (undefined4 *)0x0) {\n    FUN_003ae080(puVar2);\n  }\n  param_1[1] = puVar5;\n  *param_1 = local_28;\n  param_1[2] = local_28 + local_2c * 8;\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "undefined4 *local_28;" type_identifier (pointer_declarator "*local_28" * identifier) ;) (declaration "undefined4 *local_20;" type_identifier (pointer_declarator "*local_20" * 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 "puVar2 = (undefined4 *)param_1[1];" (assignment_expression "puVar2 = (undefined4 *)param_1[1]" identifier = (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar6 = (int)param_4 - (int)param_3;" (assignment_expression "iVar6 = (int)param_4 - (int)param_3" identifier = (binary_expression "(int)param_4 - (int)param_3" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar7 = iVar6 >> 5;" (assignment_expression "uVar7 = iVar6 >> 5" identifier = (binary_expression "iVar6 >> 5" identifier >> number_literal)) ;) (if_statement "if (uVar7 <= (uint)(param_1[2] - (int)puVar2 >> 5)) {\n    iVar9 = (int)puVar2 - (int)param_2;\n    uVar10 = iVar9 >> 5;\n    if (uVar10 <= uVar7) {\n      piVar11 = (int *)((int)param_3 + iVar9);\n      puVar5 = puVar2;\n      local_20 = puVar2;\n      if (param_4 != piVar11) {\n        do {\n          *local_20 = local_20 + 2;\n                    /* try { // try from 003454e4 to 003454e8 has its CatchHandler @ 00345a9a */\n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      puVar5 = puVar5 + (uVar7 - uVar10) * 8;\n      param_1[1] = puVar5;\n      puVar4 = param_2 + 2;\n      if (puVar2 != param_2) {\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = (int)puVar5 + iVar9;\n      local_20 = (undefined4 *)uVar10;\n      if (iVar9 < 1) {\n        return;\n      }\n      do {\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      } while (local_20 != (undefined4 *)0x0);\n      return;\n    }\n    puVar5 = (undefined4 *)((int)puVar2 + (8 - iVar6));\n    puVar4 = puVar2;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar5[-2] == puVar5) {\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }\n      puVar4[1] = puVar5[-1];\n      puVar5[-2] = puVar5;\n      puVar8 = puVar5 + 8;\n      puVar5[-1] = 0;\n      *(undefined1 *)puVar5 = 0;\n      puVar4[6] = puVar5[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15);\n      puVar5 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar2 + 2 != puVar8);\n    param_1[1] = param_1[1] + iVar6;\n    local_20 = (undefined4 *)((int)puVar2 + (-0x18 - iVar6));\n    iVar9 = (int)puVar2 + (-(int)param_2 - iVar6);\n    iVar13 = iVar9 >> 5;\n    puVar2 = puVar2 + -6;\n    if (0 < iVar9) {\n      do {\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      } while (iVar13 != 0);\n    }\n    local_20 = (undefined4 *)uVar7;\n    if (iVar6 < 1) {\n      return;\n    }\n    do {\n      FUN_003b5c90(param_2,param_3);\n      param_2[6] = param_3[6];\n      *(char *)(param_2 + 7) = (char)param_3[7];\n      *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n      local_20 = (undefined4 *)((int)local_20 - 1);\n      param_3 = param_3 + 8;\n      param_2 = param_2 + 8;\n    } while (local_20 != (undefined4 *)0x0);\n    return;\n  }" if (parenthesized_expression "(uVar7 <= (uint)(param_1[2] - (int)puVar2 >> 5))" ( (binary_expression "uVar7 <= (uint)(param_1[2] - (int)puVar2 >> 5)" identifier <= (call_expression "(uint)(param_1[2] - (int)puVar2 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1[2] - (int)puVar2 >> 5)" ( (binary_expression "param_1[2] - (int)puVar2 >> 5" (binary_expression "param_1[2] - (int)puVar2" (subscript_expression "param_1[2]" identifier [ number_literal ]) - (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )))) )) (compound_statement "{\n    iVar9 = (int)puVar2 - (int)param_2;\n    uVar10 = iVar9 >> 5;\n    if (uVar10 <= uVar7) {\n      piVar11 = (int *)((int)param_3 + iVar9);\n      puVar5 = puVar2;\n      local_20 = puVar2;\n      if (param_4 != piVar11) {\n        do {\n          *local_20 = local_20 + 2;\n                    /* try { // try from 003454e4 to 003454e8 has its CatchHandler @ 00345a9a */\n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      puVar5 = puVar5 + (uVar7 - uVar10) * 8;\n      param_1[1] = puVar5;\n      puVar4 = param_2 + 2;\n      if (puVar2 != param_2) {\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = (int)puVar5 + iVar9;\n      local_20 = (undefined4 *)uVar10;\n      if (iVar9 < 1) {\n        return;\n      }\n      do {\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      } while (local_20 != (undefined4 *)0x0);\n      return;\n    }\n    puVar5 = (undefined4 *)((int)puVar2 + (8 - iVar6));\n    puVar4 = puVar2;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar5[-2] == puVar5) {\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }\n      puVar4[1] = puVar5[-1];\n      puVar5[-2] = puVar5;\n      puVar8 = puVar5 + 8;\n      puVar5[-1] = 0;\n      *(undefined1 *)puVar5 = 0;\n      puVar4[6] = puVar5[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15);\n      puVar5 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar2 + 2 != puVar8);\n    param_1[1] = param_1[1] + iVar6;\n    local_20 = (undefined4 *)((int)puVar2 + (-0x18 - iVar6));\n    iVar9 = (int)puVar2 + (-(int)param_2 - iVar6);\n    iVar13 = iVar9 >> 5;\n    puVar2 = puVar2 + -6;\n    if (0 < iVar9) {\n      do {\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      } while (iVar13 != 0);\n    }\n    local_20 = (undefined4 *)uVar7;\n    if (iVar6 < 1) {\n      return;\n    }\n    do {\n      FUN_003b5c90(param_2,param_3);\n      param_2[6] = param_3[6];\n      *(char *)(param_2 + 7) = (char)param_3[7];\n      *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n      local_20 = (undefined4 *)((int)local_20 - 1);\n      param_3 = param_3 + 8;\n      param_2 = param_2 + 8;\n    } while (local_20 != (undefined4 *)0x0);\n    return;\n  }" { (expression_statement "iVar9 = (int)puVar2 - (int)param_2;" (assignment_expression "iVar9 = (int)puVar2 - (int)param_2" identifier = (binary_expression "(int)puVar2 - (int)param_2" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar10 = iVar9 >> 5;" (assignment_expression "uVar10 = iVar9 >> 5" identifier = (binary_expression "iVar9 >> 5" identifier >> number_literal)) ;) (if_statement "if (uVar10 <= uVar7) {\n      piVar11 = (int *)((int)param_3 + iVar9);\n      puVar5 = puVar2;\n      local_20 = puVar2;\n      if (param_4 != piVar11) {\n        do {\n          *local_20 = local_20 + 2;\n                    /* try { // try from 003454e4 to 003454e8 has its CatchHandler @ 00345a9a */\n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      puVar5 = puVar5 + (uVar7 - uVar10) * 8;\n      param_1[1] = puVar5;\n      puVar4 = param_2 + 2;\n      if (puVar2 != param_2) {\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = (int)puVar5 + iVar9;\n      local_20 = (undefined4 *)uVar10;\n      if (iVar9 < 1) {\n        return;\n      }\n      do {\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      } while (local_20 != (undefined4 *)0x0);\n      return;\n    }" if (parenthesized_expression "(uVar10 <= uVar7)" ( (binary_expression "uVar10 <= uVar7" identifier <= identifier) )) (compound_statement "{\n      piVar11 = (int *)((int)param_3 + iVar9);\n      puVar5 = puVar2;\n      local_20 = puVar2;\n      if (param_4 != piVar11) {\n        do {\n          *local_20 = local_20 + 2;\n                    /* try { // try from 003454e4 to 003454e8 has its CatchHandler @ 00345a9a */\n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      puVar5 = puVar5 + (uVar7 - uVar10) * 8;\n      param_1[1] = puVar5;\n      puVar4 = param_2 + 2;\n      if (puVar2 != param_2) {\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = (int)puVar5 + iVar9;\n      local_20 = (undefined4 *)uVar10;\n      if (iVar9 < 1) {\n        return;\n      }\n      do {\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      } while (local_20 != (undefined4 *)0x0);\n      return;\n    }" { (expression_statement "piVar11 = (int *)((int)param_3 + iVar9);" (assignment_expression "piVar11 = (int *)((int)param_3 + iVar9)" identifier = (cast_expression "(int *)((int)param_3 + iVar9)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 + iVar9)" ( (binary_expression "(int)param_3 + iVar9" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar5 = puVar2;" (assignment_expression "puVar5 = puVar2" identifier = identifier) ;) (expression_statement "local_20 = puVar2;" (assignment_expression "local_20 = puVar2" identifier = identifier) ;) (if_statement "if (param_4 != piVar11) {\n        do {\n          *local_20 = local_20 + 2;\n                    /* try { // try from 003454e4 to 003454e8 has its CatchHandler @ 00345a9a */\n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }" if (parenthesized_expression "(param_4 != piVar11)" ( (binary_expression "param_4 != piVar11" identifier != identifier) )) (compound_statement "{\n        do {\n          *local_20 = local_20 + 2;\n                    /* try { // try from 003454e4 to 003454e8 has its CatchHandler @ 00345a9a */\n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }" { (do_statement "do {\n          *local_20 = local_20 + 2;\n                    /* try { // try from 003454e4 to 003454e8 has its CatchHandler @ 00345a9a */\n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);" do (compound_statement "{\n          *local_20 = local_20 + 2;\n                    /* try { // try from 003454e4 to 003454e8 has its CatchHandler @ 00345a9a */\n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        }" { (expression_statement "*local_20 = local_20 + 2;" (assignment_expression "*local_20 = local_20 + 2" (pointer_expression "*local_20" * identifier) = (binary_expression "local_20 + 2" identifier + number_literal)) ;) comment (expression_statement "FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);" (call_expression "FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0)" identifier (argument_list "(local_20,*piVar11,piVar11[1] + *piVar11,0)" ( identifier , (pointer_expression "*piVar11" * identifier) , (binary_expression "piVar11[1] + *piVar11" (subscript_expression "piVar11[1]" identifier [ number_literal ]) + (pointer_expression "*piVar11" * identifier)) , number_literal ))) ;) (expression_statement "piVar12 = piVar11 + 8;" (assignment_expression "piVar12 = piVar11 + 8" identifier = (binary_expression "piVar11 + 8" identifier + number_literal)) ;) (expression_statement "local_20[6] = piVar11[6];" (assignment_expression "local_20[6] = piVar11[6]" (subscript_expression "local_20[6]" identifier [ number_literal ]) = (subscript_expression "piVar11[6]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(local_20 + 7) = (char)piVar11[7];" (assignment_expression "*(char *)(local_20 + 7) = (char)piVar11[7]" (pointer_expression "*(char *)(local_20 + 7)" * (cast_expression "(char *)(local_20 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 7)" ( (binary_expression "local_20 + 7" identifier + number_literal) )))) = (cast_expression "(char)piVar11[7]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar11[7]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);" (assignment_expression "*(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d)" (pointer_expression "*(undefined1 *)((int)local_20 + 0x1d)" * (cast_expression "(undefined1 *)((int)local_20 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + 0x1d)" ( (binary_expression "(int)local_20 + 0x1d" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined1 *)((int)piVar11 + 0x1d)" * (cast_expression "(undefined1 *)((int)piVar11 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar11 + 0x1d)" ( (binary_expression "(int)piVar11 + 0x1d" (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "piVar11 = piVar12;" (assignment_expression "piVar11 = piVar12" identifier = identifier) ;) (expression_statement "local_20 = local_20 + 8;" (assignment_expression "local_20 = local_20 + 8" identifier = (binary_expression "local_20 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_4 != piVar12)" ( (binary_expression "param_4 != piVar12" identifier != identifier) )) ;) (expression_statement "puVar5 = (undefined4 *)param_1[1];" (assignment_expression "puVar5 = (undefined4 *)param_1[1]" identifier = (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) })) (expression_statement "puVar5 = puVar5 + (uVar7 - uVar10) * 8;" (assignment_expression "puVar5 = puVar5 + (uVar7 - uVar10) * 8" identifier = (binary_expression "puVar5 + (uVar7 - uVar10) * 8" identifier + (binary_expression "(uVar7 - uVar10) * 8" (parenthesized_expression "(uVar7 - uVar10)" ( (binary_expression "uVar7 - uVar10" identifier - identifier) )) * number_literal))) ;) (expression_statement "param_1[1] = puVar5;" (assignment_expression "param_1[1] = puVar5" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4 = param_2 + 2;" (assignment_expression "puVar4 = param_2 + 2" identifier = (binary_expression "param_2 + 2" identifier + number_literal)) ;) (if_statement "if (puVar2 != param_2) {\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }" if (parenthesized_expression "(puVar2 != param_2)" ( (binary_expression "puVar2 != param_2" identifier != identifier) )) (compound_statement "{\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }" { (do_statement "do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);" do (compound_statement "{\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\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 (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }" if (parenthesized_expression "(puVar4 == (undefined4 *)puVar4[-2])" ( (binary_expression "puVar4 == (undefined4 *)puVar4[-2]" identifier == (cast_expression "(undefined4 *)puVar4[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[-2]" identifier [ number_literal ]))) )) (compound_statement "{\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }" { (expression_statement "puVar5[2] = *puVar4;" (assignment_expression "puVar5[2] = *puVar4" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar5[3] = puVar4[1];" (assignment_expression "puVar5[3] = puVar4[1]" (subscript_expression "puVar5[3]" identifier [ number_literal ]) = (subscript_expression "puVar4[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5[4] = puVar4[2];" (assignment_expression "puVar5[4] = puVar4[2]" (subscript_expression "puVar5[4]" identifier [ number_literal ]) = (subscript_expression "puVar4[2]" identifier [ number_literal ])) ;) (expression_statement "puVar5[5] = puVar4[3];" (assignment_expression "puVar5[5] = puVar4[3]" (subscript_expression "puVar5[5]" identifier [ number_literal ]) = (subscript_expression "puVar4[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }" else (compound_statement "{\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }" { (expression_statement "*puVar5 = (undefined4 *)puVar4[-2];" (assignment_expression "*puVar5 = (undefined4 *)puVar4[-2]" (pointer_expression "*puVar5" * identifier) = (cast_expression "(undefined4 *)puVar4[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar5[2] = *puVar4;" (assignment_expression "puVar5[2] = *puVar4" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = (pointer_expression "*puVar4" * identifier)) ;) }))) (expression_statement "puVar5[1] = puVar4[-1];" (assignment_expression "puVar5[1] = puVar4[-1]" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = (subscript_expression "puVar4[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar4[-2] = puVar4;" (assignment_expression "puVar4[-2] = puVar4" (subscript_expression "puVar4[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8 = puVar4 + 8;" (assignment_expression "puVar8 = puVar4 + 8" identifier = (binary_expression "puVar4 + 8" identifier + number_literal)) ;) (expression_statement "puVar4[-1] = 0;" (assignment_expression "puVar4[-1] = 0" (subscript_expression "puVar4[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar4 = 0;" (assignment_expression "*(undefined1 *)puVar4 = 0" (pointer_expression "*(undefined1 *)puVar4" * (cast_expression "(undefined1 *)puVar4" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar5[6] = puVar4[4];" (assignment_expression "puVar5[6] = puVar4[4]" (subscript_expression "puVar5[6]" identifier [ number_literal ]) = (subscript_expression "puVar4[4]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);" (assignment_expression "*(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5)" (pointer_expression "*(undefined1 *)(puVar5 + 7)" * (cast_expression "(undefined1 *)(puVar5 + 7)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 7)" ( (binary_expression "puVar5 + 7" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(puVar4 + 5)" * (cast_expression "(undefined1 *)(puVar4 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 5)" ( (binary_expression "puVar4 + 5" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);" (assignment_expression "*(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15)" (pointer_expression "*(undefined1 *)((int)puVar5 + 0x1d)" * (cast_expression "(undefined1 *)((int)puVar5 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 0x1d)" ( (binary_expression "(int)puVar5 + 0x1d" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined1 *)((int)puVar4 + 0x15)" * (cast_expression "(undefined1 *)((int)puVar4 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + 0x15)" ( (binary_expression "(int)puVar4 + 0x15" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar4 = puVar8;" (assignment_expression "puVar4 = puVar8" identifier = identifier) ;) (expression_statement "puVar5 = puVar5 + 8;" (assignment_expression "puVar5 = puVar5 + 8" identifier = (binary_expression "puVar5 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar2 + 2 != puVar8)" ( (binary_expression "puVar2 + 2 != puVar8" (binary_expression "puVar2 + 2" identifier + number_literal) != identifier) )) ;) (expression_statement "puVar5 = (undefined4 *)param_1[1];" (assignment_expression "puVar5 = (undefined4 *)param_1[1]" identifier = (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) })) (expression_statement "param_1[1] = (int)puVar5 + iVar9;" (assignment_expression "param_1[1] = (int)puVar5 + iVar9" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "(int)puVar5 + iVar9" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (expression_statement "local_20 = (undefined4 *)uVar10;" (assignment_expression "local_20 = (undefined4 *)uVar10" identifier = (cast_expression "(undefined4 *)uVar10" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (iVar9 < 1) {\n        return;\n      }" if (parenthesized_expression "(iVar9 < 1)" ( (binary_expression "iVar9 < 1" identifier < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (do_statement "do {\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      } while (local_20 != (undefined4 *)0x0);" do (compound_statement "{\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      }" { (expression_statement "FUN_003b5c90(param_2,param_3);" (call_expression "FUN_003b5c90(param_2,param_3)" identifier (argument_list "(param_2,param_3)" ( identifier , identifier ))) ;) (expression_statement "param_2[6] = param_3[6];" (assignment_expression "param_2[6] = param_3[6]" (subscript_expression "param_2[6]" identifier [ number_literal ]) = (subscript_expression "param_3[6]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(param_2 + 7) = (char)param_3[7];" (assignment_expression "*(char *)(param_2 + 7) = (char)param_3[7]" (pointer_expression "*(char *)(param_2 + 7)" * (cast_expression "(char *)(param_2 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) )))) = (cast_expression "(char)param_3[7]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_3[7]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);" (assignment_expression "*(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d)" (pointer_expression "*(undefined1 *)((int)param_2 + 0x1d)" * (cast_expression "(undefined1 *)((int)param_2 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x1d)" ( (binary_expression "(int)param_2 + 0x1d" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined1 *)((int)param_3 + 0x1d)" * (cast_expression "(undefined1 *)((int)param_3 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 + 0x1d)" ( (binary_expression "(int)param_3 + 0x1d" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "local_20 = (undefined4 *)((int)local_20 - 1);" (assignment_expression "local_20 = (undefined4 *)((int)local_20 - 1)" identifier = (cast_expression "(undefined4 *)((int)local_20 - 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 - 1)" ( (binary_expression "(int)local_20 - 1" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "param_3 = param_3 + 8;" (assignment_expression "param_3 = param_3 + 8" identifier = (binary_expression "param_3 + 8" identifier + number_literal)) ;) (expression_statement "param_2 = param_2 + 8;" (assignment_expression "param_2 = param_2 + 8" identifier = (binary_expression "param_2 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_20 != (undefined4 *)0x0)" ( (binary_expression "local_20 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (return_statement "return;" return ;) })) (expression_statement "puVar5 = (undefined4 *)((int)puVar2 + (8 - iVar6));" (assignment_expression "puVar5 = (undefined4 *)((int)puVar2 + (8 - iVar6))" identifier = (cast_expression "(undefined4 *)((int)puVar2 + (8 - iVar6))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar2 + (8 - iVar6))" ( (binary_expression "(int)puVar2 + (8 - iVar6)" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(8 - iVar6)" ( (binary_expression "8 - iVar6" number_literal - identifier) ))) )))) ;) (expression_statement "puVar4 = puVar2;" (assignment_expression "puVar4 = puVar2" identifier = identifier) ;) (do_statement "do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar5[-2] == puVar5) {\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }\n      puVar4[1] = puVar5[-1];\n      puVar5[-2] = puVar5;\n      puVar8 = puVar5 + 8;\n      puVar5[-1] = 0;\n      *(undefined1 *)puVar5 = 0;\n      puVar4[6] = puVar5[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15);\n      puVar5 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar2 + 2 != puVar8);" do (compound_statement "{\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar5[-2] == puVar5) {\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }\n      puVar4[1] = puVar5[-1];\n      puVar5[-2] = puVar5;\n      puVar8 = puVar5 + 8;\n      puVar5[-1] = 0;\n      *(undefined1 *)puVar5 = 0;\n      puVar4[6] = puVar5[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15);\n      puVar5 = puVar8;\n      puVar4 = puVar4 + 8;\n    }" { (expression_statement "*puVar4 = puVar4 + 2;" (assignment_expression "*puVar4 = puVar4 + 2" (pointer_expression "*puVar4" * identifier) = (binary_expression "puVar4 + 2" identifier + number_literal)) ;) (if_statement "if ((undefined4 *)puVar5[-2] == puVar5) {\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }" if (parenthesized_expression "((undefined4 *)puVar5[-2] == puVar5)" ( (binary_expression "(undefined4 *)puVar5[-2] == puVar5" (cast_expression "(undefined4 *)puVar5[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar5[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }" { (expression_statement "puVar4[2] = *puVar5;" (assignment_expression "puVar4[2] = *puVar5" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar4[3] = puVar5[1];" (assignment_expression "puVar4[3] = puVar5[1]" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "puVar4[4] = puVar5[2];" (assignment_expression "puVar4[4] = puVar5[2]" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = (subscript_expression "puVar5[2]" identifier [ number_literal ])) ;) (expression_statement "puVar4[5] = puVar5[3];" (assignment_expression "puVar4[5] = puVar5[3]" (subscript_expression "puVar4[5]" identifier [ number_literal ]) = (subscript_expression "puVar5[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }" else (compound_statement "{\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }" { (expression_statement "*puVar4 = (undefined4 *)puVar5[-2];" (assignment_expression "*puVar4 = (undefined4 *)puVar5[-2]" (pointer_expression "*puVar4" * identifier) = (cast_expression "(undefined4 *)puVar5[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar5[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar4[2] = *puVar5;" (assignment_expression "puVar4[2] = *puVar5" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = (pointer_expression "*puVar5" * identifier)) ;) }))) (expression_statement "puVar4[1] = puVar5[-1];" (assignment_expression "puVar4[1] = puVar5[-1]" (subscript_expression "puVar4[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 "puVar8 = puVar5 + 8;" (assignment_expression "puVar8 = puVar5 + 8" identifier = (binary_expression "puVar5 + 8" identifier + number_literal)) ;) (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 "puVar4[6] = puVar5[4];" (assignment_expression "puVar4[6] = puVar5[4]" (subscript_expression "puVar4[6]" identifier [ number_literal ]) = (subscript_expression "puVar5[4]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5);" (assignment_expression "*(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5)" (pointer_expression "*(undefined1 *)(puVar4 + 7)" * (cast_expression "(undefined1 *)(puVar4 + 7)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 7)" ( (binary_expression "puVar4 + 7" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(puVar5 + 5)" * (cast_expression "(undefined1 *)(puVar5 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 5)" ( (binary_expression "puVar5 + 5" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15);" (assignment_expression "*(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15)" (pointer_expression "*(undefined1 *)((int)puVar4 + 0x1d)" * (cast_expression "(undefined1 *)((int)puVar4 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + 0x1d)" ( (binary_expression "(int)puVar4 + 0x1d" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined1 *)((int)puVar5 + 0x15)" * (cast_expression "(undefined1 *)((int)puVar5 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 0x15)" ( (binary_expression "(int)puVar5 + 0x15" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar5 = puVar8;" (assignment_expression "puVar5 = puVar8" identifier = identifier) ;) (expression_statement "puVar4 = puVar4 + 8;" (assignment_expression "puVar4 = puVar4 + 8" identifier = (binary_expression "puVar4 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar2 + 2 != puVar8)" ( (binary_expression "puVar2 + 2 != puVar8" (binary_expression "puVar2 + 2" identifier + number_literal) != identifier) )) ;) (expression_statement "param_1[1] = param_1[1] + iVar6;" (assignment_expression "param_1[1] = param_1[1] + iVar6" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "param_1[1] + iVar6" (subscript_expression "param_1[1]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "local_20 = (undefined4 *)((int)puVar2 + (-0x18 - iVar6));" (assignment_expression "local_20 = (undefined4 *)((int)puVar2 + (-0x18 - iVar6))" identifier = (cast_expression "(undefined4 *)((int)puVar2 + (-0x18 - iVar6))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar2 + (-0x18 - iVar6))" ( (binary_expression "(int)puVar2 + (-0x18 - iVar6)" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-0x18 - iVar6)" ( (binary_expression "-0x18 - iVar6" number_literal - identifier) ))) )))) ;) (expression_statement "iVar9 = (int)puVar2 + (-(int)param_2 - iVar6);" (assignment_expression "iVar9 = (int)puVar2 + (-(int)param_2 - iVar6)" identifier = (binary_expression "(int)puVar2 + (-(int)param_2 - iVar6)" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-(int)param_2 - iVar6)" ( (binary_expression "-(int)param_2 - iVar6" (unary_expression "-(int)param_2" - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) - identifier) )))) ;) (expression_statement "iVar13 = iVar9 >> 5;" (assignment_expression "iVar13 = iVar9 >> 5" identifier = (binary_expression "iVar9 >> 5" identifier >> number_literal)) ;) (expression_statement "puVar2 = puVar2 + -6;" (assignment_expression "puVar2 = puVar2 + -6" identifier = (binary_expression "puVar2 + -6" identifier + number_literal)) ;) (if_statement "if (0 < iVar9) {\n      do {\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      } while (iVar13 != 0);\n    }" if (parenthesized_expression "(0 < iVar9)" ( (binary_expression "0 < iVar9" number_literal < identifier) )) (compound_statement "{\n      do {\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      } while (iVar13 != 0);\n    }" { (do_statement "do {\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      } while (iVar13 != 0);" do (compound_statement "{\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      }" { (expression_statement "puVar5 = (undefined4 *)puVar2[-2];" (assignment_expression "puVar5 = (undefined4 *)puVar2[-2]" identifier = (cast_expression "(undefined4 *)puVar2[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar4 = (undefined4 *)local_20[-2];" (assignment_expression "puVar4 = (undefined4 *)local_20[-2]" identifier = (cast_expression "(undefined4 *)local_20[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_20[-2]" identifier [ number_literal ]))) ;) (if_statement "if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }" if (parenthesized_expression "(puVar4 == local_20)" ( (binary_expression "puVar4 == local_20" identifier == identifier) )) (compound_statement "{\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }" { (expression_statement "__n = local_20[-1];" (assignment_expression "__n = local_20[-1]" identifier = (subscript_expression "local_20[-1]" identifier [ number_literal ])) ;) (if_statement "if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (compound_statement "{\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }" { (if_statement "if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }" if (parenthesized_expression "(__n == 1)" ( (binary_expression "__n == 1" identifier == number_literal) )) (compound_statement "{\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }" { (expression_statement "*(undefined1 *)puVar5 = *(undefined1 *)local_20;" (assignment_expression "*(undefined1 *)puVar5 = *(undefined1 *)local_20" (pointer_expression "*(undefined1 *)puVar5" * (cast_expression "(undefined1 *)puVar5" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined1 *)local_20" * (cast_expression "(undefined1 *)local_20" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar5 = (undefined4 *)puVar2[-2];" (assignment_expression "puVar5 = (undefined4 *)puVar2[-2]" identifier = (cast_expression "(undefined4 *)puVar2[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[-2]" identifier [ number_literal ]))) ;) (expression_statement "__n = local_20[-1];" (assignment_expression "__n = local_20[-1]" identifier = (subscript_expression "local_20[-1]" identifier [ number_literal ])) ;) }) (else_clause "else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }" else (compound_statement "{\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }" { (expression_statement "memcpy(puVar5,local_20,__n);" (call_expression "memcpy(puVar5,local_20,__n)" identifier (argument_list "(puVar5,local_20,__n)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar5 = (undefined4 *)puVar2[-2];" (assignment_expression "puVar5 = (undefined4 *)puVar2[-2]" identifier = (cast_expression "(undefined4 *)puVar2[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[-2]" identifier [ number_literal ]))) ;) (expression_statement "__n = local_20[-1];" (assignment_expression "__n = local_20[-1]" identifier = (subscript_expression "local_20[-1]" identifier [ number_literal ])) ;) }))) })) (expression_statement "puVar2[-1] = __n;" (assignment_expression "puVar2[-1] = __n" (subscript_expression "puVar2[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)((int)puVar5 + __n) = 0;" (assignment_expression "*(undefined1 *)((int)puVar5 + __n) = 0" (pointer_expression "*(undefined1 *)((int)puVar5 + __n)" * (cast_expression "(undefined1 *)((int)puVar5 + __n)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + __n)" ( (binary_expression "(int)puVar5 + __n" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) }) (else_clause "else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }" else (compound_statement "{\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }" { (if_statement "if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }" if (parenthesized_expression "(puVar5 == puVar2)" ( (binary_expression "puVar5 == puVar2" identifier == identifier) )) (compound_statement "{\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }" { (expression_statement "puVar2[-2] = puVar4;" (assignment_expression "puVar2[-2] = puVar4" (subscript_expression "puVar2[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[-1] = local_20[-1];" (assignment_expression "puVar2[-1] = local_20[-1]" (subscript_expression "puVar2[-1]" identifier [ number_literal ]) = (subscript_expression "local_20[-1]" identifier [ number_literal ])) ;) (expression_statement "*puVar2 = *local_20;" (assignment_expression "*puVar2 = *local_20" (pointer_expression "*puVar2" * identifier) = (pointer_expression "*local_20" * identifier)) ;) }) (else_clause "else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }" else (compound_statement "{\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }" { (expression_statement "puVar2[-2] = puVar4;" (assignment_expression "puVar2[-2] = puVar4" (subscript_expression "puVar2[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = *puVar2;" (assignment_expression "uVar1 = *puVar2" identifier = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "puVar2[-1] = local_20[-1];" (assignment_expression "puVar2[-1] = local_20[-1]" (subscript_expression "puVar2[-1]" identifier [ number_literal ]) = (subscript_expression "local_20[-1]" identifier [ number_literal ])) ;) (expression_statement "*puVar2 = *local_20;" (assignment_expression "*puVar2 = *local_20" (pointer_expression "*puVar2" * identifier) = (pointer_expression "*local_20" * identifier)) ;) (if_statement "if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }" if (parenthesized_expression "(puVar5 != (undefined4 *)0x0)" ( (binary_expression "puVar5 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }" { (expression_statement "local_20[-2] = puVar5;" (assignment_expression "local_20[-2] = puVar5" (subscript_expression "local_20[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*local_20 = uVar1;" (assignment_expression "*local_20 = uVar1" (pointer_expression "*local_20" * identifier) = identifier) ;) (goto_statement "goto LAB_0034596d;" goto statement_identifier ;) })) }))) (expression_statement "local_20[-2] = local_20;" (assignment_expression "local_20[-2] = local_20" (subscript_expression "local_20[-2]" identifier [ number_literal ]) = identifier) ;) }))) (labeled_statement "LAB_0034596d:\n        local_20[-1] = 0;" statement_identifier : (expression_statement "local_20[-1] = 0;" (assignment_expression "local_20[-1] = 0" (subscript_expression "local_20[-1]" identifier [ number_literal ]) = number_literal) ;)) (expression_statement "*(undefined1 *)local_20[-2] = 0;" (assignment_expression "*(undefined1 *)local_20[-2] = 0" (pointer_expression "*(undefined1 *)local_20[-2]" * (cast_expression "(undefined1 *)local_20[-2]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_20[-2]" identifier [ number_literal ]))) = number_literal) ;) (expression_statement "puVar2[4] = local_20[4];" (assignment_expression "puVar2[4] = local_20[4]" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = (subscript_expression "local_20[4]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);" (assignment_expression "*(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5)" (pointer_expression "*(undefined1 *)(puVar2 + 5)" * (cast_expression "(undefined1 *)(puVar2 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 5)" ( (binary_expression "puVar2 + 5" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(local_20 + 5)" * (cast_expression "(undefined1 *)(local_20 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 5)" ( (binary_expression "local_20 + 5" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);" (assignment_expression "*(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15)" (pointer_expression "*(undefined1 *)((int)puVar2 + 0x15)" * (cast_expression "(undefined1 *)((int)puVar2 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar2 + 0x15)" ( (binary_expression "(int)puVar2 + 0x15" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined1 *)((int)local_20 + 0x15)" * (cast_expression "(undefined1 *)((int)local_20 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + 0x15)" ( (binary_expression "(int)local_20 + 0x15" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (expression_statement "puVar2 = puVar2 + -8;" (assignment_expression "puVar2 = puVar2 + -8" identifier = (binary_expression "puVar2 + -8" identifier + number_literal)) ;) (expression_statement "local_20 = local_20 + -8;" (assignment_expression "local_20 = local_20 + -8" identifier = (binary_expression "local_20 + -8" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) ;) })) (expression_statement "local_20 = (undefined4 *)uVar7;" (assignment_expression "local_20 = (undefined4 *)uVar7" identifier = (cast_expression "(undefined4 *)uVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (iVar6 < 1) {\n      return;\n    }" if (parenthesized_expression "(iVar6 < 1)" ( (binary_expression "iVar6 < 1" identifier < number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (do_statement "do {\n      FUN_003b5c90(param_2,param_3);\n      param_2[6] = param_3[6];\n      *(char *)(param_2 + 7) = (char)param_3[7];\n      *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n      local_20 = (undefined4 *)((int)local_20 - 1);\n      param_3 = param_3 + 8;\n      param_2 = param_2 + 8;\n    } while (local_20 != (undefined4 *)0x0);" do (compound_statement "{\n      FUN_003b5c90(param_2,param_3);\n      param_2[6] = param_3[6];\n      *(char *)(param_2 + 7) = (char)param_3[7];\n      *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n      local_20 = (undefined4 *)((int)local_20 - 1);\n      param_3 = param_3 + 8;\n      param_2 = param_2 + 8;\n    }" { (expression_statement "FUN_003b5c90(param_2,param_3);" (call_expression "FUN_003b5c90(param_2,param_3)" identifier (argument_list "(param_2,param_3)" ( identifier , identifier ))) ;) (expression_statement "param_2[6] = param_3[6];" (assignment_expression "param_2[6] = param_3[6]" (subscript_expression "param_2[6]" identifier [ number_literal ]) = (subscript_expression "param_3[6]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(param_2 + 7) = (char)param_3[7];" (assignment_expression "*(char *)(param_2 + 7) = (char)param_3[7]" (pointer_expression "*(char *)(param_2 + 7)" * (cast_expression "(char *)(param_2 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) )))) = (cast_expression "(char)param_3[7]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_3[7]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);" (assignment_expression "*(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d)" (pointer_expression "*(undefined1 *)((int)param_2 + 0x1d)" * (cast_expression "(undefined1 *)((int)param_2 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x1d)" ( (binary_expression "(int)param_2 + 0x1d" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined1 *)((int)param_3 + 0x1d)" * (cast_expression "(undefined1 *)((int)param_3 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 + 0x1d)" ( (binary_expression "(int)param_3 + 0x1d" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "local_20 = (undefined4 *)((int)local_20 - 1);" (assignment_expression "local_20 = (undefined4 *)((int)local_20 - 1)" identifier = (cast_expression "(undefined4 *)((int)local_20 - 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 - 1)" ( (binary_expression "(int)local_20 - 1" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "param_3 = param_3 + 8;" (assignment_expression "param_3 = param_3 + 8" identifier = (binary_expression "param_3 + 8" identifier + number_literal)) ;) (expression_statement "param_2 = param_2 + 8;" (assignment_expression "param_2 = param_2 + 8" identifier = (binary_expression "param_2 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_20 != (undefined4 *)0x0)" ( (binary_expression "local_20 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (return_statement "return;" return ;) })) (expression_statement "puVar5 = (undefined4 *)*param_1;" (assignment_expression "puVar5 = (undefined4 *)*param_1" identifier = (cast_expression "(undefined4 *)*param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar10 = (int)puVar2 - (int)puVar5 >> 5;" (assignment_expression "uVar10 = (int)puVar2 - (int)puVar5 >> 5" identifier = (binary_expression "(int)puVar2 - (int)puVar5 >> 5" (binary_expression "(int)puVar2 - (int)puVar5" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (if_statement "if (0x7ffffff - uVar10 < uVar7) {\n                    /* WARNING: Subroutine does not return */\n    FUN_003f3a70("vector::_M_range_insert");\n  }" if (parenthesized_expression "(0x7ffffff - uVar10 < uVar7)" ( (binary_expression "0x7ffffff - uVar10 < uVar7" (binary_expression "0x7ffffff - uVar10" number_literal - identifier) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_003f3a70("vector::_M_range_insert");\n  }" { comment (expression_statement "FUN_003f3a70("vector::_M_range_insert");" (call_expression "FUN_003f3a70("vector::_M_range_insert")" identifier (argument_list "("vector::_M_range_insert")" ( (string_literal ""vector::_M_range_insert"" " string_content ") ))) ;) })) (if_statement "if (uVar7 < uVar10) {\n    uVar7 = uVar10;\n  }" if (parenthesized_expression "(uVar7 < uVar10)" ( (binary_expression "uVar7 < uVar10" identifier < identifier) )) (compound_statement "{\n    uVar7 = uVar10;\n  }" { (expression_statement "uVar7 = uVar10;" (assignment_expression "uVar7 = uVar10" identifier = identifier) ;) })) (expression_statement "local_2c = uVar10 + uVar7;" (assignment_expression "local_2c = uVar10 + uVar7" identifier = (binary_expression "uVar10 + uVar7" identifier + identifier)) ;) (if_statement "if ((CARRY4(uVar10,uVar7)) || (0x7ffffff < local_2c)) {\n    iVar6 = -0x20;\n    local_2c = 0x7ffffff;\n  }\n  else {\n    local_28 = (undefined4 *)0x0;\n    if (local_2c == 0) goto LAB_00345692;\n    iVar6 = local_2c * 0x20;\n  }" if (parenthesized_expression "((CARRY4(uVar10,uVar7)) || (0x7ffffff < local_2c))" ( (binary_expression "(CARRY4(uVar10,uVar7)) || (0x7ffffff < local_2c)" (parenthesized_expression "(CARRY4(uVar10,uVar7))" ( (call_expression "CARRY4(uVar10,uVar7)" identifier (argument_list "(uVar10,uVar7)" ( identifier , identifier ))) )) || (parenthesized_expression "(0x7ffffff < local_2c)" ( (binary_expression "0x7ffffff < local_2c" number_literal < identifier) ))) )) (compound_statement "{\n    iVar6 = -0x20;\n    local_2c = 0x7ffffff;\n  }" { (expression_statement "iVar6 = -0x20;" (assignment_expression "iVar6 = -0x20" identifier = number_literal) ;) (expression_statement "local_2c = 0x7ffffff;" (assignment_expression "local_2c = 0x7ffffff" identifier = number_literal) ;) }) (else_clause "else {\n    local_28 = (undefined4 *)0x0;\n    if (local_2c == 0) goto LAB_00345692;\n    iVar6 = local_2c * 0x20;\n  }" else (compound_statement "{\n    local_28 = (undefined4 *)0x0;\n    if (local_2c == 0) goto LAB_00345692;\n    iVar6 = local_2c * 0x20;\n  }" { (expression_statement "local_28 = (undefined4 *)0x0;" (assignment_expression "local_28 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (local_2c == 0) goto LAB_00345692;" if (parenthesized_expression "(local_2c == 0)" ( (binary_expression "local_2c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00345692;" goto statement_identifier ;)) (expression_statement "iVar6 = local_2c * 0x20;" (assignment_expression "iVar6 = local_2c * 0x20" identifier = (binary_expression "local_2c * 0x20" identifier * number_literal)) ;) }))) (expression_statement "local_28 = (undefined4 *)FUN_003ac4d0(iVar6);" (assignment_expression "local_28 = (undefined4 *)FUN_003ac4d0(iVar6)" identifier = (cast_expression "(undefined4 *)FUN_003ac4d0(iVar6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_003ac4d0(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))))) ;) (expression_statement "puVar5 = (undefined4 *)*param_1;" (assignment_expression "puVar5 = (undefined4 *)*param_1" identifier = (cast_expression "(undefined4 *)*param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (labeled_statement "LAB_00345692:\n  puVar2 = local_28;" statement_identifier : (expression_statement "puVar2 = local_28;" (assignment_expression "puVar2 = local_28" identifier = identifier) ;)) (if_statement "if (param_2 != puVar5) {\n    puVar2 = puVar5 + 2;\n    puVar4 = local_28;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar2[-2] == puVar2) {\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }\n      puVar4[1] = puVar2[-1];\n      puVar2[-2] = puVar2;\n      puVar8 = puVar2 + 8;\n      puVar2[-1] = 0;\n      *(undefined1 *)puVar2 = 0;\n      puVar4[6] = puVar2[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15);\n      puVar2 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar8 != param_2 + 2);\n    puVar2 = local_28 + (((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8;\n  }" if (parenthesized_expression "(param_2 != puVar5)" ( (binary_expression "param_2 != puVar5" identifier != identifier) )) (compound_statement "{\n    puVar2 = puVar5 + 2;\n    puVar4 = local_28;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar2[-2] == puVar2) {\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }\n      puVar4[1] = puVar2[-1];\n      puVar2[-2] = puVar2;\n      puVar8 = puVar2 + 8;\n      puVar2[-1] = 0;\n      *(undefined1 *)puVar2 = 0;\n      puVar4[6] = puVar2[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15);\n      puVar2 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar8 != param_2 + 2);\n    puVar2 = local_28 + (((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8;\n  }" { (expression_statement "puVar2 = puVar5 + 2;" (assignment_expression "puVar2 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "puVar4 = local_28;" (assignment_expression "puVar4 = local_28" identifier = identifier) ;) (do_statement "do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar2[-2] == puVar2) {\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }\n      puVar4[1] = puVar2[-1];\n      puVar2[-2] = puVar2;\n      puVar8 = puVar2 + 8;\n      puVar2[-1] = 0;\n      *(undefined1 *)puVar2 = 0;\n      puVar4[6] = puVar2[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15);\n      puVar2 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar8 != param_2 + 2);" do (compound_statement "{\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar2[-2] == puVar2) {\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }\n      puVar4[1] = puVar2[-1];\n      puVar2[-2] = puVar2;\n      puVar8 = puVar2 + 8;\n      puVar2[-1] = 0;\n      *(undefined1 *)puVar2 = 0;\n      puVar4[6] = puVar2[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15);\n      puVar2 = puVar8;\n      puVar4 = puVar4 + 8;\n    }" { (expression_statement "*puVar4 = puVar4 + 2;" (assignment_expression "*puVar4 = puVar4 + 2" (pointer_expression "*puVar4" * identifier) = (binary_expression "puVar4 + 2" identifier + number_literal)) ;) (if_statement "if ((undefined4 *)puVar2[-2] == puVar2) {\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }" if (parenthesized_expression "((undefined4 *)puVar2[-2] == puVar2)" ( (binary_expression "(undefined4 *)puVar2[-2] == puVar2" (cast_expression "(undefined4 *)puVar2[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }" { (expression_statement "puVar4[2] = *puVar2;" (assignment_expression "puVar4[2] = *puVar2" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "puVar4[3] = puVar2[1];" (assignment_expression "puVar4[3] = puVar2[1]" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (expression_statement "puVar4[4] = puVar2[2];" (assignment_expression "puVar4[4] = puVar2[2]" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = (subscript_expression "puVar2[2]" identifier [ number_literal ])) ;) (expression_statement "puVar4[5] = puVar2[3];" (assignment_expression "puVar4[5] = puVar2[3]" (subscript_expression "puVar4[5]" identifier [ number_literal ]) = (subscript_expression "puVar2[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }" else (compound_statement "{\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }" { (expression_statement "*puVar4 = (undefined4 *)puVar2[-2];" (assignment_expression "*puVar4 = (undefined4 *)puVar2[-2]" (pointer_expression "*puVar4" * identifier) = (cast_expression "(undefined4 *)puVar2[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar4[2] = *puVar2;" (assignment_expression "puVar4[2] = *puVar2" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = (pointer_expression "*puVar2" * identifier)) ;) }))) (expression_statement "puVar4[1] = puVar2[-1];" (assignment_expression "puVar4[1] = puVar2[-1]" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = (subscript_expression "puVar2[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar2[-2] = puVar2;" (assignment_expression "puVar2[-2] = puVar2" (subscript_expression "puVar2[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8 = puVar2 + 8;" (assignment_expression "puVar8 = puVar2 + 8" identifier = (binary_expression "puVar2 + 8" identifier + number_literal)) ;) (expression_statement "puVar2[-1] = 0;" (assignment_expression "puVar2[-1] = 0" (subscript_expression "puVar2[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar2 = 0;" (assignment_expression "*(undefined1 *)puVar2 = 0" (pointer_expression "*(undefined1 *)puVar2" * (cast_expression "(undefined1 *)puVar2" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar4[6] = puVar2[4];" (assignment_expression "puVar4[6] = puVar2[4]" (subscript_expression "puVar4[6]" identifier [ number_literal ]) = (subscript_expression "puVar2[4]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5);" (assignment_expression "*(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5)" (pointer_expression "*(undefined1 *)(puVar4 + 7)" * (cast_expression "(undefined1 *)(puVar4 + 7)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 7)" ( (binary_expression "puVar4 + 7" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(puVar2 + 5)" * (cast_expression "(undefined1 *)(puVar2 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 5)" ( (binary_expression "puVar2 + 5" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15);" (assignment_expression "*(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15)" (pointer_expression "*(undefined1 *)((int)puVar4 + 0x1d)" * (cast_expression "(undefined1 *)((int)puVar4 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + 0x1d)" ( (binary_expression "(int)puVar4 + 0x1d" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined1 *)((int)puVar2 + 0x15)" * (cast_expression "(undefined1 *)((int)puVar2 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar2 + 0x15)" ( (binary_expression "(int)puVar2 + 0x15" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar2 = puVar8;" (assignment_expression "puVar2 = puVar8" identifier = identifier) ;) (expression_statement "puVar4 = puVar4 + 8;" (assignment_expression "puVar4 = puVar4 + 8" identifier = (binary_expression "puVar4 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar8 != param_2 + 2)" ( (binary_expression "puVar8 != param_2 + 2" identifier != (binary_expression "param_2 + 2" identifier + number_literal)) )) ;) (expression_statement "puVar2 = local_28 + (((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8;" (assignment_expression "puVar2 = local_28 + (((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8" identifier = (binary_expression "local_28 + (((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8" identifier + (binary_expression "(((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8" (parenthesized_expression "(((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1)" ( (binary_expression "((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1" (parenthesized_expression "((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5)" ( (binary_expression "(uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5" (call_expression "(uint)((int)param_2 + (-0x20 - (int)puVar5))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)param_2 + (-0x20 - (int)puVar5))" ( (binary_expression "(int)param_2 + (-0x20 - (int)puVar5)" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-0x20 - (int)puVar5)" ( (binary_expression "-0x20 - (int)puVar5" number_literal - (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))) >> number_literal) )) + number_literal) )) * number_literal))) ;) })) (do_statement "do {\n    *puVar2 = puVar2 + 2;\n                    /* try { // try from 003457c3 to 003457c7 has its CatchHandler @ 00345a9c */\n    FUN_0014fca0(puVar2,*param_3,param_3[1] + *param_3,0);\n    piVar11 = param_3 + 8;\n    puVar5 = puVar2 + 8;\n    puVar2[6] = param_3[6];\n    *(char *)(puVar2 + 7) = (char)param_3[7];\n    *(undefined1 *)((int)puVar2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n    param_3 = piVar11;\n    puVar2 = puVar5;\n  } while (param_4 != piVar11);" do (compound_statement "{\n    *puVar2 = puVar2 + 2;\n                    /* try { // try from 003457c3 to 003457c7 has its CatchHandler @ 00345a9c */\n    FUN_0014fca0(puVar2,*param_3,param_3[1] + *param_3,0);\n    piVar11 = param_3 + 8;\n    puVar5 = puVar2 + 8;\n    puVar2[6] = param_3[6];\n    *(char *)(puVar2 + 7) = (char)param_3[7];\n    *(undefined1 *)((int)puVar2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n    param_3 = piVar11;\n    puVar2 = puVar5;\n  }" { (expression_statement "*puVar2 = puVar2 + 2;" (assignment_expression "*puVar2 = puVar2 + 2" (pointer_expression "*puVar2" * identifier) = (binary_expression "puVar2 + 2" identifier + number_literal)) ;) comment (expression_statement "FUN_0014fca0(puVar2,*param_3,param_3[1] + *param_3,0);" (call_expression "FUN_0014fca0(puVar2,*param_3,param_3[1] + *param_3,0)" identifier (argument_list "(puVar2,*param_3,param_3[1] + *param_3,0)" ( identifier , (pointer_expression "*param_3" * identifier) , (binary_expression "param_3[1] + *param_3" (subscript_expression "param_3[1]" identifier [ number_literal ]) + (pointer_expression "*param_3" * identifier)) , number_literal ))) ;) (expression_statement "piVar11 = param_3 + 8;" (assignment_expression "piVar11 = param_3 + 8" identifier = (binary_expression "param_3 + 8" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar2 + 8;" (assignment_expression "puVar5 = puVar2 + 8" identifier = (binary_expression "puVar2 + 8" identifier + number_literal)) ;) (expression_statement "puVar2[6] = param_3[6];" (assignment_expression "puVar2[6] = param_3[6]" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = (subscript_expression "param_3[6]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(puVar2 + 7) = (char)param_3[7];" (assignment_expression "*(char *)(puVar2 + 7) = (char)param_3[7]" (pointer_expression "*(char *)(puVar2 + 7)" * (cast_expression "(char *)(puVar2 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 7)" ( (binary_expression "puVar2 + 7" identifier + number_literal) )))) = (cast_expression "(char)param_3[7]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_3[7]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined1 *)((int)puVar2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);" (assignment_expression "*(undefined1 *)((int)puVar2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d)" (pointer_expression "*(undefined1 *)((int)puVar2 + 0x1d)" * (cast_expression "(undefined1 *)((int)puVar2 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar2 + 0x1d)" ( (binary_expression "(int)puVar2 + 0x1d" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined1 *)((int)param_3 + 0x1d)" * (cast_expression "(undefined1 *)((int)param_3 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 + 0x1d)" ( (binary_expression "(int)param_3 + 0x1d" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "param_3 = piVar11;" (assignment_expression "param_3 = piVar11" identifier = identifier) ;) (expression_statement "puVar2 = puVar5;" (assignment_expression "puVar2 = puVar5" identifier = identifier) ;) }) while (parenthesized_expression "(param_4 != piVar11)" ( (binary_expression "param_4 != piVar11" identifier != identifier) )) ;) (expression_statement "puVar2 = (undefined4 *)param_1[1];" (assignment_expression "puVar2 = (undefined4 *)param_1[1]" identifier = (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (if_statement "if (param_2 != puVar2) {\n    puVar4 = param_2 + 2;\n    puVar8 = puVar5;\n    do {\n      puVar3 = (undefined4 *)puVar4[-2];\n      *puVar8 = puVar8 + 2;\n      if (puVar4 == puVar3) {\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }\n      else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }\n      uVar1 = puVar4[-1];\n      puVar4[-2] = puVar4;\n      puVar3 = puVar4 + 8;\n      puVar4[-1] = 0;\n      puVar8[1] = uVar1;\n      *(undefined1 *)puVar4 = 0;\n      puVar8[6] = puVar4[4];\n      *(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5);\n      *(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n      puVar4 = puVar3;\n      puVar8 = puVar8 + 8;\n    } while (puVar2 + 2 != puVar3);\n    puVar5 = puVar5 + (((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8;\n    puVar2 = (undefined4 *)param_1[1];\n  }" if (parenthesized_expression "(param_2 != puVar2)" ( (binary_expression "param_2 != puVar2" identifier != identifier) )) (compound_statement "{\n    puVar4 = param_2 + 2;\n    puVar8 = puVar5;\n    do {\n      puVar3 = (undefined4 *)puVar4[-2];\n      *puVar8 = puVar8 + 2;\n      if (puVar4 == puVar3) {\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }\n      else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }\n      uVar1 = puVar4[-1];\n      puVar4[-2] = puVar4;\n      puVar3 = puVar4 + 8;\n      puVar4[-1] = 0;\n      puVar8[1] = uVar1;\n      *(undefined1 *)puVar4 = 0;\n      puVar8[6] = puVar4[4];\n      *(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5);\n      *(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n      puVar4 = puVar3;\n      puVar8 = puVar8 + 8;\n    } while (puVar2 + 2 != puVar3);\n    puVar5 = puVar5 + (((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8;\n    puVar2 = (undefined4 *)param_1[1];\n  }" { (expression_statement "puVar4 = param_2 + 2;" (assignment_expression "puVar4 = param_2 + 2" identifier = (binary_expression "param_2 + 2" identifier + number_literal)) ;) (expression_statement "puVar8 = puVar5;" (assignment_expression "puVar8 = puVar5" identifier = identifier) ;) (do_statement "do {\n      puVar3 = (undefined4 *)puVar4[-2];\n      *puVar8 = puVar8 + 2;\n      if (puVar4 == puVar3) {\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }\n      else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }\n      uVar1 = puVar4[-1];\n      puVar4[-2] = puVar4;\n      puVar3 = puVar4 + 8;\n      puVar4[-1] = 0;\n      puVar8[1] = uVar1;\n      *(undefined1 *)puVar4 = 0;\n      puVar8[6] = puVar4[4];\n      *(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5);\n      *(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n      puVar4 = puVar3;\n      puVar8 = puVar8 + 8;\n    } while (puVar2 + 2 != puVar3);" do (compound_statement "{\n      puVar3 = (undefined4 *)puVar4[-2];\n      *puVar8 = puVar8 + 2;\n      if (puVar4 == puVar3) {\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }\n      else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }\n      uVar1 = puVar4[-1];\n      puVar4[-2] = puVar4;\n      puVar3 = puVar4 + 8;\n      puVar4[-1] = 0;\n      puVar8[1] = uVar1;\n      *(undefined1 *)puVar4 = 0;\n      puVar8[6] = puVar4[4];\n      *(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5);\n      *(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n      puVar4 = puVar3;\n      puVar8 = puVar8 + 8;\n    }" { (expression_statement "puVar3 = (undefined4 *)puVar4[-2];" (assignment_expression "puVar3 = (undefined4 *)puVar4[-2]" identifier = (cast_expression "(undefined4 *)puVar4[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[-2]" identifier [ number_literal ]))) ;) (expression_statement "*puVar8 = puVar8 + 2;" (assignment_expression "*puVar8 = puVar8 + 2" (pointer_expression "*puVar8" * identifier) = (binary_expression "puVar8 + 2" identifier + number_literal)) ;) (if_statement "if (puVar4 == puVar3) {\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }\n      else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }" if (parenthesized_expression "(puVar4 == puVar3)" ( (binary_expression "puVar4 == puVar3" identifier == identifier) )) (compound_statement "{\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }" { (expression_statement "puVar8[2] = *puVar4;" (assignment_expression "puVar8[2] = *puVar4" (subscript_expression "puVar8[2]" identifier [ number_literal ]) = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar8[3] = puVar4[1];" (assignment_expression "puVar8[3] = puVar4[1]" (subscript_expression "puVar8[3]" identifier [ number_literal ]) = (subscript_expression "puVar4[1]" identifier [ number_literal ])) ;) (expression_statement "puVar8[4] = puVar4[2];" (assignment_expression "puVar8[4] = puVar4[2]" (subscript_expression "puVar8[4]" identifier [ number_literal ]) = (subscript_expression "puVar4[2]" identifier [ number_literal ])) ;) (expression_statement "puVar8[5] = puVar4[3];" (assignment_expression "puVar8[5] = puVar4[3]" (subscript_expression "puVar8[5]" identifier [ number_literal ]) = (subscript_expression "puVar4[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }" else (compound_statement "{\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }" { (expression_statement "*puVar8 = puVar3;" (assignment_expression "*puVar8 = puVar3" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "puVar8[2] = *puVar4;" (assignment_expression "puVar8[2] = *puVar4" (subscript_expression "puVar8[2]" identifier [ number_literal ]) = (pointer_expression "*puVar4" * identifier)) ;) }))) (expression_statement "uVar1 = puVar4[-1];" (assignment_expression "uVar1 = puVar4[-1]" identifier = (subscript_expression "puVar4[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar4[-2] = puVar4;" (assignment_expression "puVar4[-2] = puVar4" (subscript_expression "puVar4[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3 = puVar4 + 8;" (assignment_expression "puVar3 = puVar4 + 8" identifier = (binary_expression "puVar4 + 8" identifier + number_literal)) ;) (expression_statement "puVar4[-1] = 0;" (assignment_expression "puVar4[-1] = 0" (subscript_expression "puVar4[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[1] = uVar1;" (assignment_expression "puVar8[1] = uVar1" (subscript_expression "puVar8[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)puVar4 = 0;" (assignment_expression "*(undefined1 *)puVar4 = 0" (pointer_expression "*(undefined1 *)puVar4" * (cast_expression "(undefined1 *)puVar4" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar8[6] = puVar4[4];" (assignment_expression "puVar8[6] = puVar4[4]" (subscript_expression "puVar8[6]" identifier [ number_literal ]) = (subscript_expression "puVar4[4]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5);" (assignment_expression "*(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5)" (pointer_expression "*(undefined1 *)(puVar8 + 7)" * (cast_expression "(undefined1 *)(puVar8 + 7)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 7)" ( (binary_expression "puVar8 + 7" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(puVar4 + 5)" * (cast_expression "(undefined1 *)(puVar4 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 5)" ( (binary_expression "puVar4 + 5" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);" (assignment_expression "*(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15)" (pointer_expression "*(undefined1 *)((int)puVar8 + 0x1d)" * (cast_expression "(undefined1 *)((int)puVar8 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + 0x1d)" ( (binary_expression "(int)puVar8 + 0x1d" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined1 *)((int)puVar4 + 0x15)" * (cast_expression "(undefined1 *)((int)puVar4 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + 0x15)" ( (binary_expression "(int)puVar4 + 0x15" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar4 = puVar3;" (assignment_expression "puVar4 = puVar3" identifier = identifier) ;) (expression_statement "puVar8 = puVar8 + 8;" (assignment_expression "puVar8 = puVar8 + 8" identifier = (binary_expression "puVar8 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar2 + 2 != puVar3)" ( (binary_expression "puVar2 + 2 != puVar3" (binary_expression "puVar2 + 2" identifier + number_literal) != identifier) )) ;) (expression_statement "puVar5 = puVar5 + (((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8;" (assignment_expression "puVar5 = puVar5 + (((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8" identifier = (binary_expression "puVar5 + (((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8" identifier + (binary_expression "(((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8" (parenthesized_expression "(((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1)" ( (binary_expression "((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1" (parenthesized_expression "((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5)" ( (binary_expression "(uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5" (call_expression "(uint)((int)puVar2 + (-0x20 - (int)param_2))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar2 + (-0x20 - (int)param_2))" ( (binary_expression "(int)puVar2 + (-0x20 - (int)param_2)" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-0x20 - (int)param_2)" ( (binary_expression "-0x20 - (int)param_2" number_literal - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))) >> number_literal) )) + number_literal) )) * number_literal))) ;) (expression_statement "puVar2 = (undefined4 *)param_1[1];" (assignment_expression "puVar2 = (undefined4 *)param_1[1]" identifier = (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) })) (expression_statement "puVar4 = (undefined4 *)*param_1;" (assignment_expression "puVar4 = (undefined4 *)*param_1" identifier = (cast_expression "(undefined4 *)*param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (puVar4 != puVar2) {\n    do {\n      if ((undefined4 *)*puVar4 != puVar4 + 2) {\n        FUN_003ae080((undefined4 *)*puVar4);\n      }\n      puVar4 = puVar4 + 8;\n    } while (puVar4 != puVar2);\n    puVar2 = (undefined4 *)*param_1;\n  }" if (parenthesized_expression "(puVar4 != puVar2)" ( (binary_expression "puVar4 != puVar2" identifier != identifier) )) (compound_statement "{\n    do {\n      if ((undefined4 *)*puVar4 != puVar4 + 2) {\n        FUN_003ae080((undefined4 *)*puVar4);\n      }\n      puVar4 = puVar4 + 8;\n    } while (puVar4 != puVar2);\n    puVar2 = (undefined4 *)*param_1;\n  }" { (do_statement "do {\n      if ((undefined4 *)*puVar4 != puVar4 + 2) {\n        FUN_003ae080((undefined4 *)*puVar4);\n      }\n      puVar4 = puVar4 + 8;\n    } while (puVar4 != puVar2);" do (compound_statement "{\n      if ((undefined4 *)*puVar4 != puVar4 + 2) {\n        FUN_003ae080((undefined4 *)*puVar4);\n      }\n      puVar4 = puVar4 + 8;\n    }" { (if_statement "if ((undefined4 *)*puVar4 != puVar4 + 2) {\n        FUN_003ae080((undefined4 *)*puVar4);\n      }" if (parenthesized_expression "((undefined4 *)*puVar4 != puVar4 + 2)" ( (binary_expression "(undefined4 *)*puVar4 != puVar4 + 2" (cast_expression "(undefined4 *)*puVar4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar4" * identifier)) != (binary_expression "puVar4 + 2" identifier + number_literal)) )) (compound_statement "{\n        FUN_003ae080((undefined4 *)*puVar4);\n      }" { (expression_statement "FUN_003ae080((undefined4 *)*puVar4);" (call_expression "FUN_003ae080((undefined4 *)*puVar4)" identifier (argument_list "((undefined4 *)*puVar4)" ( (cast_expression "(undefined4 *)*puVar4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar4" * identifier)) ))) ;) })) (expression_statement "puVar4 = puVar4 + 8;" (assignment_expression "puVar4 = puVar4 + 8" identifier = (binary_expression "puVar4 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar4 != puVar2)" ( (binary_expression "puVar4 != puVar2" identifier != identifier) )) ;) (expression_statement "puVar2 = (undefined4 *)*param_1;" (assignment_expression "puVar2 = (undefined4 *)*param_1" identifier = (cast_expression "(undefined4 *)*param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) })) (if_statement "if (puVar2 != (undefined4 *)0x0) {\n    FUN_003ae080(puVar2);\n  }" if (parenthesized_expression "(puVar2 != (undefined4 *)0x0)" ( (binary_expression "puVar2 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    FUN_003ae080(puVar2);\n  }" { (expression_statement "FUN_003ae080(puVar2);" (call_expression "FUN_003ae080(puVar2)" identifier (argument_list "(puVar2)" ( 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 = local_28;" (assignment_expression "*param_1 = local_28" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[2] = local_28 + local_2c * 8;" (assignment_expression "param_1[2] = local_28 + local_2c * 8" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (binary_expression "local_28 + local_2c * 8" identifier + (binary_expression "local_2c * 8" identifier * number_literal))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* DWARF original name: _M_range_insert<__gnu_cxx::__normal_iterator<gold::Version_expression*,\n   std::vector<gold::Version_expression> > >\n   DWARF original prototype: void\n   _M_range_insert<__gnu_cxx::__normal_iterator<gold::Version_expression*,_std::vector<gold::Version_expression>_>_>(vector<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n   * this, iterator __position,\n   __normal_iterator<gold::Version_expression*,_std::vector<gold::Version_expression,_std::allocator<gold::Version_expression>_>_>\n   __first,\n   __normal_iterator<gold::Version_expression*,_std::vector<gold::Version_expression,_std::allocator<gold::Version_expression>_>_>\n   __last, forward_iterator_tag param_5) */\n\nvoid __thiscall\nstd::vector<gold::Version_expression,_std::allocator<gold::Version_expression>_>::\n_M_range_insert<__gnu_cxx::__normal_iterator<gold::Version_expression*,_std::vector<gold::Version_expression>_>_>\n          (vector<gold::Version_expression,_std::allocator<gold::Version_expression>_> *this,\n          pointer __position,int *__first,int *__last)\n\n{\n  pointer *ppVVar1;\n  pointer pcVar2;\n  undefined4 *puVar3;\n  undefined4 uVar4;\n  string *psVar5;\n  pointer pVVar6;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar7;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar8;\n  string *psVar9;\n  string *psVar10;\n  size_t __n;\n  int iVar11;\n  uint uVar12;\n  pointer pVVar13;\n  pointer pVVar14;\n  int iVar15;\n  uint uVar16;\n  int *piVar17;\n  int *piVar18;\n  uint local_2c;\n  pointer local_28;\n  pointer local_20;\n  \n  if (__first == __last) {\n    return;\n  }\n  pVVar13 = (this->\n            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)\n            ._M_impl._M_finish;\n  iVar11 = (int)__last - (int)__first;\n  uVar12 = iVar11 >> 5;\n  if (uVar12 <= (uint)((int)(this->\n                            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                            )._M_impl._M_end_of_storage - (int)pVVar13 >> 5)) {\n    iVar15 = (int)pVVar13 - (int)__position;\n    uVar16 = iVar15 >> 5;\n    if (uVar16 <= uVar12) {\n      piVar17 = (int *)((int)__first + iVar15);\n      pVVar6 = pVVar13;\n      local_20 = pVVar13;\n      if (__last != piVar17) {\n        do {\n          (local_20->pattern)._M_dataplus._M_p = (pointer)&(local_20->pattern).field_2;\n                    /* try { // try from 003454e4 to 003454e8 has its CatchHandler @ 00345a9a */\n          __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char*>(&local_20->pattern,*piVar17,piVar17[1] + *piVar17,0);\n          piVar18 = piVar17 + 8;\n          local_20->language = piVar17[6];\n          local_20->exact_match = SUB41(piVar17[7],0);\n          local_20->was_matched_by_symbol = *(bool *)((int)piVar17 + 0x1d);\n          piVar17 = piVar18;\n          local_20 = local_20 + 1;\n        } while (__last != piVar18);\n        pVVar6 = (this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                 )._M_impl._M_finish;\n      }\n      pVVar6 = pVVar6 + (uVar12 - uVar16);\n      (this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n      )._M_impl._M_finish = pVVar6;\n      paVar8 = &(__position->pattern).field_2;\n      if (pVVar13 != __position) {\n        do {\n          (pVVar6->pattern)._M_dataplus._M_p = (pointer)&(pVVar6->pattern).field_2;\n          if (paVar8 == (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                         *)*(size_type **)(paVar8->_M_local_buf + -8)) {\n            (pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 4) =\n                 *(size_type *)(paVar8->_M_local_buf + 4);\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 8) =\n                 *(size_type *)(paVar8->_M_local_buf + 8);\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 0xc) =\n                 *(size_type *)(paVar8->_M_local_buf + 0xc);\n          }\n          else {\n            (pVVar6->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8)\n            ;\n            (pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n          }\n          (pVVar6->pattern)._M_string_length = *(size_type *)(paVar8->_M_local_buf + -4);\n          *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar8->_M_local_buf + -8) = paVar8;\n          paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                    *)(paVar8->_M_local_buf + 0x20);\n          *(size_type *)(paVar8->_M_local_buf + -4) = 0;\n          paVar8->_M_local_buf[0] = '\0';\n          pVVar6->language = *(Language *)(paVar8->_M_local_buf + 0x10);\n          pVVar6->exact_match = SUB41(*(size_type *)(paVar8->_M_local_buf + 0x14),0);\n          pVVar6->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15];\n          paVar8 = paVar7;\n          pVVar6 = pVVar6 + 1;\n        } while (&(pVVar13->pattern).field_2 != paVar7);\n        pVVar6 = (this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                 )._M_impl._M_finish;\n      }\n      (this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n      )._M_impl._M_finish = (pointer)((int)pVVar6 + iVar15);\n      local_20 = (pointer)uVar16;\n      if (iVar15 < 1) {\n        return;\n      }\n      do {\n        std::string::_M_assign((string *)__position);\n        __position->language = __first[6];\n        __position->exact_match = SUB41(__first[7],0);\n        __position->was_matched_by_symbol = *(bool *)((int)__first + 0x1d);\n        local_20 = (pointer)((int)local_20 - 1);\n        __first = __first + 8;\n        __position = __position + 1;\n      } while (local_20 != (pointer)0x0);\n      return;\n    }\n    psVar10 = (string *)((int)pVVar13 + (8 - iVar11));\n    pVVar6 = pVVar13;\n    do {\n      (pVVar6->pattern)._M_dataplus._M_p = (pointer)&(pVVar6->pattern).field_2;\n      if (*(string **)(psVar10 + -8) == psVar10) {\n        (pVVar6->pattern).field_2._M_allocated_capacity = *(size_type *)psVar10;\n        *(undefined4 *)((int)&(pVVar6->pattern).field_2 + 4) = *(undefined4 *)(psVar10 + 4);\n        *(undefined4 *)((int)&(pVVar6->pattern).field_2 + 8) = *(undefined4 *)(psVar10 + 8);\n        *(undefined4 *)((int)&(pVVar6->pattern).field_2 + 0xc) = *(undefined4 *)(psVar10 + 0xc);\n      }\n      else {\n        (pVVar6->pattern)._M_dataplus._M_p = (pointer)*(string **)(psVar10 + -8);\n        (pVVar6->pattern).field_2._M_allocated_capacity = *(size_type *)psVar10;\n      }\n      (pVVar6->pattern)._M_string_length = *(size_type *)(psVar10 + -4);\n      *(string **)(psVar10 + -8) = psVar10;\n      psVar9 = psVar10 + 0x20;\n      *(undefined4 *)(psVar10 + -4) = 0;\n      *psVar10 = (string)0x0;\n      pVVar6->language = *(Language *)(psVar10 + 0x10);\n      pVVar6->exact_match = (bool)psVar10[0x14];\n      pVVar6->was_matched_by_symbol = (bool)psVar10[0x15];\n      psVar10 = psVar9;\n      pVVar6 = pVVar6 + 1;\n    } while ((string *)&(pVVar13->pattern).field_2 != psVar9);\n    ppVVar1 = &(this->\n               super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n               )._M_impl._M_finish;\n    *ppVVar1 = (pointer)((int)*ppVVar1 + iVar11);\n    local_20 = (pointer)((int)pVVar13 + (-0x18 - iVar11));\n    psVar9 = (string *)((int)pVVar13 + (-(int)__position - iVar11));\n    iVar15 = (int)psVar9 >> 5;\n    psVar10 = (string *)&pVVar13[-1].pattern.field_2;\n    if (0 < (int)psVar9) {\n      do {\n        psVar9 = *(string **)(psVar10 + -8);\n        psVar5 = *(string **)((int)local_20 + -8);\n        if ((pointer)psVar5 == local_20) {\n          __n = *(size_t *)((int)local_20 + -4);\n          if (__n != 0) {\n            if (__n == 1) {\n              *psVar9 = *(string *)local_20;\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }\n            else {\n              memcpy(psVar9,local_20,__n);\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }\n          }\n          *(size_t *)(psVar10 + -4) = __n;\n          psVar9[__n] = (string)0x0;\n        }\n        else {\n          if (psVar9 == psVar10) {\n            *(string **)(psVar10 + -8) = psVar5;\n            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);\n            *(undefined4 *)psVar10 = *(undefined4 *)local_20;\n          }\n          else {\n            *(string **)(psVar10 + -8) = psVar5;\n            uVar4 = *(undefined4 *)psVar10;\n            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);\n            *(undefined4 *)psVar10 = *(undefined4 *)local_20;\n            if (psVar9 != (string *)0x0) {\n              *(string **)((int)local_20 + -8) = psVar9;\n              *(undefined4 *)local_20 = uVar4;\n              goto LAB_0034596d;\n            }\n          }\n          *(pointer *)((int)local_20 + -8) = local_20;\n        }\nLAB_0034596d:\n        *(undefined4 *)((int)local_20 + -4) = 0;\n        **(undefined1 **)((int)local_20 + -8) = 0;\n        *(undefined4 *)(psVar10 + 0x10) = *(undefined4 *)((int)local_20 + 0x10);\n        psVar10[0x14] = *(string *)((int)local_20 + 0x14);\n        psVar10[0x15] = *(string *)((int)local_20 + 0x15);\n        iVar15 = iVar15 + -1;\n        psVar10 = psVar10 + -0x20;\n        local_20 = (pointer)((int)local_20 + -0x20);\n      } while (iVar15 != 0);\n    }\n    local_20 = (pointer)uVar12;\n    if (iVar11 < 1) {\n      return;\n    }\n    do {\n      std::string::_M_assign((string *)__position);\n      __position->language = __first[6];\n      __position->exact_match = SUB41(__first[7],0);\n      __position->was_matched_by_symbol = *(bool *)((int)__first + 0x1d);\n      local_20 = (pointer)((int)local_20 - 1);\n      __first = __first + 8;\n      __position = __position + 1;\n    } while (local_20 != (pointer)0x0);\n    return;\n  }\n  pVVar6 = (this->\n           super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).\n           _M_impl._M_start;\n  uVar16 = (int)pVVar13 - (int)pVVar6 >> 5;\n  if (0x7ffffff - uVar16 < uVar12) {\n                    /* WARNING: Subroutine does not return */\n    __throw_length_error("vector::_M_range_insert");\n  }\n  if (uVar12 < uVar16) {\n    uVar12 = uVar16;\n  }\n  local_2c = uVar16 + uVar12;\n  if ((CARRY4(uVar16,uVar12)) || (0x7ffffff < local_2c)) {\n    uVar12 = 0xffffffe0;\n    local_2c = 0x7ffffff;\n  }\n  else {\n    local_28 = (pointer)0x0;\n    if (local_2c == 0) goto LAB_00345692;\n    uVar12 = local_2c * 0x20;\n  }\n  local_28 = (pointer)operator_new(uVar12);\n  pVVar6 = (this->\n           super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).\n           _M_impl._M_start;\nLAB_00345692:\n  pVVar13 = local_28;\n  if (__position != pVVar6) {\n    paVar8 = &(pVVar6->pattern).field_2;\n    do {\n      (pVVar13->pattern)._M_dataplus._M_p = (pointer)&(pVVar13->pattern).field_2;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)*(size_type **)(paVar8->_M_local_buf + -8) == paVar8) {\n        (pVVar13->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n        *(size_type *)((int)&(pVVar13->pattern).field_2 + 4) =\n             *(size_type *)(paVar8->_M_local_buf + 4);\n        *(size_type *)((int)&(pVVar13->pattern).field_2 + 8) =\n             *(size_type *)(paVar8->_M_local_buf + 8);\n        *(size_type *)((int)&(pVVar13->pattern).field_2 + 0xc) =\n             *(size_type *)(paVar8->_M_local_buf + 0xc);\n      }\n      else {\n        (pVVar13->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8);\n        (pVVar13->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n      }\n      (pVVar13->pattern)._M_string_length = *(size_type *)(paVar8->_M_local_buf + -4);\n      *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar8->_M_local_buf + -8) = paVar8;\n      paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(paVar8->_M_local_buf + 0x20);\n      *(size_type *)(paVar8->_M_local_buf + -4) = 0;\n      paVar8->_M_local_buf[0] = '\0';\n      pVVar13->language = *(Language *)(paVar8->_M_local_buf + 0x10);\n      pVVar13->exact_match = SUB41(*(size_type *)(paVar8->_M_local_buf + 0x14),0);\n      pVVar13->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15];\n      paVar8 = paVar7;\n      pVVar13 = pVVar13 + 1;\n    } while (paVar7 != &(__position->pattern).field_2);\n    pVVar13 = local_28 + ((uint)((int)__position + (-0x20 - (int)pVVar6)) >> 5) + 1;\n  }\n  do {\n    (pVVar13->pattern)._M_dataplus._M_p = (pointer)&(pVVar13->pattern).field_2;\n                    /* try { // try from 003457c3 to 003457c7 has its CatchHandler @ 00345a9c */\n    __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::_M_construct<char*>\n              (&pVVar13->pattern,*__first,__first[1] + *__first,0);\n    piVar17 = __first + 8;\n    pVVar6 = pVVar13 + 1;\n    pVVar13->language = __first[6];\n    pVVar13->exact_match = SUB41(__first[7],0);\n    pVVar13->was_matched_by_symbol = *(bool *)((int)__first + 0x1d);\n    __first = piVar17;\n    pVVar13 = pVVar6;\n  } while (__last != piVar17);\n  pVVar13 = (this->\n            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)\n            ._M_impl._M_finish;\n  if (__position != pVVar13) {\n    paVar8 = &(__position->pattern).field_2;\n    pVVar14 = pVVar6;\n    do {\n      puVar3 = *(undefined4 **)(paVar8->_M_local_buf + -8);\n      ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        *)&pVVar14->pattern)->_M_allocated_capacity = (size_type)((int)&pVVar14->pattern + 8);\n      if (paVar8 == (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)puVar3) {\n        *(size_type *)((int)&pVVar14->pattern + 8) = paVar8->_M_allocated_capacity;\n        *(undefined4 *)((int)&pVVar14->pattern + 0xc) = *(undefined4 *)(paVar8->_M_local_buf + 4);\n        *(undefined4 *)\n         ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)&pVVar14->pattern + 1) = *(undefined4 *)(paVar8->_M_local_buf + 8);\n        *(undefined4 *)((int)&pVVar14->pattern + 0x14) = *(undefined4 *)(paVar8->_M_local_buf + 0xc)\n        ;\n      }\n      else {\n        ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n          *)&pVVar14->pattern)->_M_allocated_capacity = (size_type)puVar3;\n        *(size_type *)((int)&pVVar14->pattern + 8) = paVar8->_M_allocated_capacity;\n      }\n      *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar8->_M_local_buf + -8) = paVar8;\n      paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(paVar8->_M_local_buf + 0x20);\n      *(char *)((int)paVar8 + -0xffffffff00000004) = '\0';\n      *(char *)((int)paVar8 + -0xffffffff00000003) = '\0';\n      *(char *)((int)paVar8 + -0xffffffff00000002) = '\0';\n      *(char *)((int)paVar8 + -0xffffffff00000001) = '\0';\n      *(undefined4 *)((int)&pVVar14->pattern + 4) = *(undefined4 *)(paVar8->_M_local_buf + -4);\n      paVar8->_M_local_buf[0] = '\0';\n      pVVar14->language = *(Language *)(paVar8->_M_local_buf + 0x10);\n      pVVar14->exact_match = (bool)paVar8->_M_local_buf[0x14];\n      pVVar14->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15];\n      paVar8 = paVar7;\n      pVVar14 = pVVar14 + 1;\n    } while (&(pVVar13->pattern).field_2 != paVar7);\n    pVVar6 = pVVar6 + ((uint)((int)pVVar13 + (-0x20 - (int)__position)) >> 5) + 1;\n    pVVar13 = (this->\n              super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n              )._M_impl._M_finish;\n  }\n  pVVar14 = (this->\n            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)\n            ._M_impl._M_start;\n  if (pVVar14 != pVVar13) {\n    do {\n      pcVar2 = (pVVar14->pattern)._M_dataplus._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar2 != &(pVVar14->pattern).field_2) {\n        operator_delete(pcVar2);\n      }\n      pVVar14 = pVVar14 + 1;\n    } while (pVVar14 != pVVar13);\n    pVVar13 = (this->\n              super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n              )._M_impl._M_start;\n  }\n  if (pVVar13 != (pointer)0x0) {\n    operator_delete(pVVar13);\n  }\n  (this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).\n  _M_impl._M_finish = pVVar6;\n  (this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).\n  _M_impl._M_start = local_28;\n  (this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).\n  _M_impl._M_end_of_storage = local_28 + local_2c;\n  return;\n}\n\n" comment comment (declaration "void __thiscall\nstd::vector<gold::Version_expression,_std::allocator<gold::Version_expression>_>::\n_M_range_insert<__gnu_cxx::__normal_iterator<gold::Version_expression*,_std::vector<gold::Version_expression>_>_>\n          (vector<gold::Version_expression,_std::allocator<gold::Version_expression>_> *this,\n          pointer __position,int *__first,int *__last)\n\n{\n  pointer *ppVVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::vector<gold::" identifier : : identifier < identifier : :) identifier , (ERROR "_std::allocator<gold::Version_expression>_>::\n_M_range_insert<__gnu_cxx::__normal_iterator<gold::" identifier : : identifier < identifier : : identifier > identifier > : : identifier < identifier : : identifier < identifier : :) identifier (ERROR "*" *) , (ERROR "_std::vector<gold::Version_expression>_>_>\n          (vector<gold::Version_expression,_std::allocator<gold::Version_expression>_> *this,\n          pointer __position,int *__first,int *__last)\n\n{\n  pointer" identifier : : identifier < identifier : : identifier > identifier > (function_declarator "_>\n          (vector<gold::Version_expression,_std::allocator<gold::Version_expression>_> *this,\n          pointer __position,int *__first,int *__last)" identifier (ERROR ">" >) (parameter_list "(vector<gold::Version_expression,_std::allocator<gold::Version_expression>_> *this,\n          pointer __position,int *__first,int *__last)" ( (parameter_declaration "vector<gold::Version_expression" type_identifier (ERROR "<gold::" < identifier : :) identifier) , (parameter_declaration "_std::allocator<gold::Version_expression>_> *this" type_identifier (ERROR "::allocator<gold::Version_expression>_>" : : identifier < identifier : : identifier > identifier >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "pointer __position" type_identifier identifier) , (parameter_declaration "int *__first" primitive_type (pointer_declarator "*__first" * identifier)) , (parameter_declaration "int *__last" primitive_type (pointer_declarator "*__last" * identifier)) ))) { identifier) (pointer_declarator "*ppVVar1" * identifier) ;) (declaration "pointer pcVar2;" type_identifier identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "string *psVar5;" type_identifier (pointer_declarator "*psVar5" * identifier) ;) (declaration "pointer pVVar6;" 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  *paVar7;" 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  *paVar7;" (binary_expression "allocator<char>_>_9\n  *paVar7" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar7" 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  *paVar8;" 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  *paVar8;" (binary_expression "allocator<char>_>_9\n  *paVar8" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar8" identifier * identifier)) ;)) (declaration "string *psVar9;" type_identifier (pointer_declarator "*psVar9" * identifier) ;) (declaration "string *psVar10;" type_identifier (pointer_declarator "*psVar10" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "pointer pVVar13;" type_identifier identifier ;) (declaration "pointer pVVar14;" type_identifier identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "int *piVar18;" primitive_type (pointer_declarator "*piVar18" * identifier) ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "pointer local_28;" type_identifier identifier ;) (declaration "pointer local_20;" 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 "pVVar13 = (this->\n            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)\n            ._M_impl._M_finish;" (assignment_expression "pVVar13 = (this->\n            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)\n            ._M_impl._M_finish" identifier = (field_expression "(this->\n            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)\n            ._M_impl._M_finish" (field_expression "(this->\n            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)\n            ._M_impl" (parenthesized_expression "(this->\n            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)" ( (ERROR "this->\n            super__Vector_base<gold::Version_expression,_std::allocator<gold::" (comma_expression "this->\n            super__Vector_base<gold::Version_expression,_std" (binary_expression "this->\n            super__Vector_base<gold" (field_expression "this->\n            super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Version_expression" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Version_expression>_>" (binary_expression "Version_expression>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "iVar11 = (int)__last - (int)__first;" (assignment_expression "iVar11 = (int)__last - (int)__first" identifier = (binary_expression "(int)__last - (int)__first" (cast_expression "(int)__last" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__first" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar12 = iVar11 >> 5;" (assignment_expression "uVar12 = iVar11 >> 5" identifier = (binary_expression "iVar11 >> 5" identifier >> number_literal)) ;) (if_statement "if (uVar12 <= (uint)((int)(this->\n                            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                            )._M_impl._M_end_of_storage - (int)pVVar13 >> 5)) {\n    iVar15 = (int)pVVar13 - (int)__position;\n    uVar16 = iVar15 >> 5;\n    if (uVar16 <= uVar12) {\n      piVar17 = (int *)((int)__first + iVar15);\n      pVVar6 = pVVar13;\n      local_20 = pVVar13;\n      if (__last != piVar17) {\n        do {\n          (local_20->pattern)._M_dataplus._M_p = (pointer)&(local_20->pattern).field_2;\n                    /* try { // try from 003454e4 to 003454e8 has its CatchHandler @ 00345a9a */\n          __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char*>(&local_20->pattern,*piVar17,piVar17[1] + *piVar17,0);\n          piVar18 = piVar17 + 8;\n          local_20->language = piVar17[6];\n          local_20->exact_match = SUB41(piVar17[7],0);\n          local_20->was_matched_by_symbol = *(bool *)((int)piVar17 + 0x1d);\n          piVar17 = piVar18;\n          local_20 = local_20 + 1;\n        } while (__last != piVar18);\n        pVVar6 = (this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                 )._M_impl._M_finish;\n      }\n      pVVar6 = pVVar6 + (uVar12 - uVar16);\n      (this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n      )._M_impl._M_finish = pVVar6;\n      paVar8 = &(__position->pattern).field_2;\n      if (pVVar13 != __position) {\n        do {\n          (pVVar6->pattern)._M_dataplus._M_p = (pointer)&(pVVar6->pattern).field_2;\n          if (paVar8 == (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                         *)*(size_type **)(paVar8->_M_local_buf + -8)) {\n            (pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 4) =\n                 *(size_type *)(paVar8->_M_local_buf + 4);\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 8) =\n                 *(size_type *)(paVar8->_M_local_buf + 8);\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 0xc) =\n                 *(size_type *)(paVar8->_M_local_buf + 0xc);\n          }\n          else {\n            (pVVar6->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8)\n            ;\n            (pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n          }\n          (pVVar6->pattern)._M_string_length = *(size_type *)(paVar8->_M_local_buf + -4);\n          *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar8->_M_local_buf + -8) = paVar8;\n          paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                    *)(paVar8->_M_local_buf + 0x20);\n          *(size_type *)(paVar8->_M_local_buf + -4) = 0;\n          paVar8->_M_local_buf[0] = '\0';\n          pVVar6->language = *(Language *)(paVar8->_M_local_buf + 0x10);\n          pVVar6->exact_match = SUB41(*(size_type *)(paVar8->_M_local_buf + 0x14),0);\n          pVVar6->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15];\n          paVar8 = paVar7;\n          pVVar6 = pVVar6 + 1;\n        } while (&(pVVar13->pattern).field_2 != paVar7);\n        pVVar6 = (this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                 )._M_impl._M_finish;\n      }\n      (this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n      )._M_impl._M_finish = (pointer)((int)pVVar6 + iVar15);\n      local_20 = (pointer)uVar16;\n      if (iVar15 < 1) {\n        return;\n      }\n      do {\n        std::string::_M_assign((string *)__position);\n        __position->language = __first[6];\n        __position->exact_match = SUB41(__first[7],0);\n        __position->was_matched_by_symbol = *(bool *)((int)__first + 0x1d);\n        local_20 = (pointer)((int)local_20 - 1);\n        __first = __first + 8;\n        __position = __position + 1;\n      } while (local_20 != (pointer)0x0);\n      return;\n    }\n    psVar10 = (string *)((int)pVVar13 + (8 - iVar11));\n    pVVar6 = pVVar13;\n    do {\n      (pVVar6->pattern)._M_dataplus._M_p = (pointer)&(pVVar6->pattern).field_2;\n      if (*(string **)(psVar10 + -8) == psVar10) {\n        (pVVar6->pattern).field_2._M_allocated_capacity = *(size_type *)psVar10;\n        *(undefined4 *)((int)&(pVVar6->pattern).field_2 + 4) = *(undefined4 *)(psVar10 + 4);\n        *(undefined4 *)((int)&(pVVar6->pattern).field_2 + 8) = *(undefined4 *)(psVar10 + 8);\n        *(undefined4 *)((int)&(pVVar6->pattern).field_2 + 0xc) = *(undefined4 *)(psVar10 + 0xc);\n      }\n      else {\n        (pVVar6->pattern)._M_dataplus._M_p = (pointer)*(string **)(psVar10 + -8);\n        (pVVar6->pattern).field_2._M_allocated_capacity = *(size_type *)psVar10;\n      }\n      (pVVar6->pattern)._M_string_length = *(size_type *)(psVar10 + -4);\n      *(string **)(psVar10 + -8) = psVar10;\n      psVar9 = psVar10 + 0x20;\n      *(undefined4 *)(psVar10 + -4) = 0;\n      *psVar10 = (string)0x0;\n      pVVar6->language = *(Language *)(psVar10 + 0x10);\n      pVVar6->exact_match = (bool)psVar10[0x14];\n      pVVar6->was_matched_by_symbol = (bool)psVar10[0x15];\n      psVar10 = psVar9;\n      pVVar6 = pVVar6 + 1;\n    } while ((string *)&(pVVar13->pattern).field_2 != psVar9);\n    ppVVar1 = &(this->\n               super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n               )._M_impl._M_finish;\n    *ppVVar1 = (pointer)((int)*ppVVar1 + iVar11);\n    local_20 = (pointer)((int)pVVar13 + (-0x18 - iVar11));\n    psVar9 = (string *)((int)pVVar13 + (-(int)__position - iVar11));\n    iVar15 = (int)psVar9 >> 5;\n    psVar10 = (string *)&pVVar13[-1].pattern.field_2;\n    if (0 < (int)psVar9) {\n      do {\n        psVar9 = *(string **)(psVar10 + -8);\n        psVar5 = *(string **)((int)local_20 + -8);\n        if ((pointer)psVar5 == local_20) {\n          __n = *(size_t *)((int)local_20 + -4);\n          if (__n != 0) {\n            if (__n == 1) {\n              *psVar9 = *(string *)local_20;\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }\n            else {\n              memcpy(psVar9,local_20,__n);\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }\n          }\n          *(size_t *)(psVar10 + -4) = __n;\n          psVar9[__n] = (string)0x0;\n        }\n        else {\n          if (psVar9 == psVar10) {\n            *(string **)(psVar10 + -8) = psVar5;\n            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);\n            *(undefined4 *)psVar10 = *(undefined4 *)local_20;\n          }\n          else {\n            *(string **)(psVar10 + -8) = psVar5;\n            uVar4 = *(undefined4 *)psVar10;\n            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);\n            *(undefined4 *)psVar10 = *(undefined4 *)local_20;\n            if (psVar9 != (string *)0x0) {\n              *(string **)((int)local_20 + -8) = psVar9;\n              *(undefined4 *)local_20 = uVar4;\n              goto LAB_0034596d;\n            }\n          }\n          *(pointer *)((int)local_20 + -8) = local_20;\n        }\nLAB_0034596d:\n        *(undefined4 *)((int)local_20 + -4) = 0;\n        **(undefined1 **)((int)local_20 + -8) = 0;\n        *(undefined4 *)(psVar10 + 0x10) = *(undefined4 *)((int)local_20 + 0x10);\n        psVar10[0x14] = *(string *)((int)local_20 + 0x14);\n        psVar10[0x15] = *(string *)((int)local_20 + 0x15);\n        iVar15 = iVar15 + -1;\n        psVar10 = psVar10 + -0x20;\n        local_20 = (pointer)((int)local_20 + -0x20);\n      } while (iVar15 != 0);\n    }\n    local_20 = (pointer)uVar12;\n    if (iVar11 < 1) {\n      return;\n    }\n    do {\n      std::string::_M_assign((string *)__position);\n      __position->language = __first[6];\n      __position->exact_match = SUB41(__first[7],0);\n      __position->was_matched_by_symbol = *(bool *)((int)__first + 0x1d);\n      local_20 = (pointer)((int)local_20 - 1);\n      __first = __first + 8;\n      __position = __position + 1;\n    } while (local_20 != (pointer)0x0);\n    return;\n  }" if (parenthesized_expression "(uVar12 <= (uint)((int)(this->\n                            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                            )._M_impl._M_end_of_storage - (int)pVVar13 >> 5))" ( (binary_expression "uVar12 <= (uint)((int)(this->\n                            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                            )._M_impl._M_end_of_storage - (int)pVVar13 >> 5)" identifier <= (call_expression "(uint)((int)(this->\n                            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                            )._M_impl._M_end_of_storage - (int)pVVar13 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)(this->\n                            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                            )._M_impl._M_end_of_storage - (int)pVVar13 >> 5)" ( (binary_expression "(int)(this->\n                            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                            )._M_impl._M_end_of_storage - (int)pVVar13 >> 5" (binary_expression "(int)(this->\n                            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                            )._M_impl._M_end_of_storage - (int)pVVar13" (cast_expression "(int)(this->\n                            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                            )._M_impl._M_end_of_storage" ( (type_descriptor "int" primitive_type) ) (field_expression "(this->\n                            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                            )._M_impl._M_end_of_storage" (field_expression "(this->\n                            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                            )._M_impl" (parenthesized_expression "(this->\n                            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                            )" ( (ERROR "this->\n                            super__Vector_base<gold::Version_expression,_std::allocator<gold::" (comma_expression "this->\n                            super__Vector_base<gold::Version_expression,_std" (binary_expression "this->\n                            super__Vector_base<gold" (field_expression "this->\n                            super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Version_expression" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Version_expression>_>" (binary_expression "Version_expression>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) - (cast_expression "(int)pVVar13" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )))) )) (compound_statement "{\n    iVar15 = (int)pVVar13 - (int)__position;\n    uVar16 = iVar15 >> 5;\n    if (uVar16 <= uVar12) {\n      piVar17 = (int *)((int)__first + iVar15);\n      pVVar6 = pVVar13;\n      local_20 = pVVar13;\n      if (__last != piVar17) {\n        do {\n          (local_20->pattern)._M_dataplus._M_p = (pointer)&(local_20->pattern).field_2;\n                    /* try { // try from 003454e4 to 003454e8 has its CatchHandler @ 00345a9a */\n          __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char*>(&local_20->pattern,*piVar17,piVar17[1] + *piVar17,0);\n          piVar18 = piVar17 + 8;\n          local_20->language = piVar17[6];\n          local_20->exact_match = SUB41(piVar17[7],0);\n          local_20->was_matched_by_symbol = *(bool *)((int)piVar17 + 0x1d);\n          piVar17 = piVar18;\n          local_20 = local_20 + 1;\n        } while (__last != piVar18);\n        pVVar6 = (this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                 )._M_impl._M_finish;\n      }\n      pVVar6 = pVVar6 + (uVar12 - uVar16);\n      (this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n      )._M_impl._M_finish = pVVar6;\n      paVar8 = &(__position->pattern).field_2;\n      if (pVVar13 != __position) {\n        do {\n          (pVVar6->pattern)._M_dataplus._M_p = (pointer)&(pVVar6->pattern).field_2;\n          if (paVar8 == (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                         *)*(size_type **)(paVar8->_M_local_buf + -8)) {\n            (pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 4) =\n                 *(size_type *)(paVar8->_M_local_buf + 4);\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 8) =\n                 *(size_type *)(paVar8->_M_local_buf + 8);\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 0xc) =\n                 *(size_type *)(paVar8->_M_local_buf + 0xc);\n          }\n          else {\n            (pVVar6->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8)\n            ;\n            (pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n          }\n          (pVVar6->pattern)._M_string_length = *(size_type *)(paVar8->_M_local_buf + -4);\n          *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar8->_M_local_buf + -8) = paVar8;\n          paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                    *)(paVar8->_M_local_buf + 0x20);\n          *(size_type *)(paVar8->_M_local_buf + -4) = 0;\n          paVar8->_M_local_buf[0] = '\0';\n          pVVar6->language = *(Language *)(paVar8->_M_local_buf + 0x10);\n          pVVar6->exact_match = SUB41(*(size_type *)(paVar8->_M_local_buf + 0x14),0);\n          pVVar6->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15];\n          paVar8 = paVar7;\n          pVVar6 = pVVar6 + 1;\n        } while (&(pVVar13->pattern).field_2 != paVar7);\n        pVVar6 = (this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                 )._M_impl._M_finish;\n      }\n      (this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n      )._M_impl._M_finish = (pointer)((int)pVVar6 + iVar15);\n      local_20 = (pointer)uVar16;\n      if (iVar15 < 1) {\n        return;\n      }\n      do {\n        std::string::_M_assign((string *)__position);\n        __position->language = __first[6];\n        __position->exact_match = SUB41(__first[7],0);\n        __position->was_matched_by_symbol = *(bool *)((int)__first + 0x1d);\n        local_20 = (pointer)((int)local_20 - 1);\n        __first = __first + 8;\n        __position = __position + 1;\n      } while (local_20 != (pointer)0x0);\n      return;\n    }\n    psVar10 = (string *)((int)pVVar13 + (8 - iVar11));\n    pVVar6 = pVVar13;\n    do {\n      (pVVar6->pattern)._M_dataplus._M_p = (pointer)&(pVVar6->pattern).field_2;\n      if (*(string **)(psVar10 + -8) == psVar10) {\n        (pVVar6->pattern).field_2._M_allocated_capacity = *(size_type *)psVar10;\n        *(undefined4 *)((int)&(pVVar6->pattern).field_2 + 4) = *(undefined4 *)(psVar10 + 4);\n        *(undefined4 *)((int)&(pVVar6->pattern).field_2 + 8) = *(undefined4 *)(psVar10 + 8);\n        *(undefined4 *)((int)&(pVVar6->pattern).field_2 + 0xc) = *(undefined4 *)(psVar10 + 0xc);\n      }\n      else {\n        (pVVar6->pattern)._M_dataplus._M_p = (pointer)*(string **)(psVar10 + -8);\n        (pVVar6->pattern).field_2._M_allocated_capacity = *(size_type *)psVar10;\n      }\n      (pVVar6->pattern)._M_string_length = *(size_type *)(psVar10 + -4);\n      *(string **)(psVar10 + -8) = psVar10;\n      psVar9 = psVar10 + 0x20;\n      *(undefined4 *)(psVar10 + -4) = 0;\n      *psVar10 = (string)0x0;\n      pVVar6->language = *(Language *)(psVar10 + 0x10);\n      pVVar6->exact_match = (bool)psVar10[0x14];\n      pVVar6->was_matched_by_symbol = (bool)psVar10[0x15];\n      psVar10 = psVar9;\n      pVVar6 = pVVar6 + 1;\n    } while ((string *)&(pVVar13->pattern).field_2 != psVar9);\n    ppVVar1 = &(this->\n               super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n               )._M_impl._M_finish;\n    *ppVVar1 = (pointer)((int)*ppVVar1 + iVar11);\n    local_20 = (pointer)((int)pVVar13 + (-0x18 - iVar11));\n    psVar9 = (string *)((int)pVVar13 + (-(int)__position - iVar11));\n    iVar15 = (int)psVar9 >> 5;\n    psVar10 = (string *)&pVVar13[-1].pattern.field_2;\n    if (0 < (int)psVar9) {\n      do {\n        psVar9 = *(string **)(psVar10 + -8);\n        psVar5 = *(string **)((int)local_20 + -8);\n        if ((pointer)psVar5 == local_20) {\n          __n = *(size_t *)((int)local_20 + -4);\n          if (__n != 0) {\n            if (__n == 1) {\n              *psVar9 = *(string *)local_20;\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }\n            else {\n              memcpy(psVar9,local_20,__n);\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }\n          }\n          *(size_t *)(psVar10 + -4) = __n;\n          psVar9[__n] = (string)0x0;\n        }\n        else {\n          if (psVar9 == psVar10) {\n            *(string **)(psVar10 + -8) = psVar5;\n            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);\n            *(undefined4 *)psVar10 = *(undefined4 *)local_20;\n          }\n          else {\n            *(string **)(psVar10 + -8) = psVar5;\n            uVar4 = *(undefined4 *)psVar10;\n            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);\n            *(undefined4 *)psVar10 = *(undefined4 *)local_20;\n            if (psVar9 != (string *)0x0) {\n              *(string **)((int)local_20 + -8) = psVar9;\n              *(undefined4 *)local_20 = uVar4;\n              goto LAB_0034596d;\n            }\n          }\n          *(pointer *)((int)local_20 + -8) = local_20;\n        }\nLAB_0034596d:\n        *(undefined4 *)((int)local_20 + -4) = 0;\n        **(undefined1 **)((int)local_20 + -8) = 0;\n        *(undefined4 *)(psVar10 + 0x10) = *(undefined4 *)((int)local_20 + 0x10);\n        psVar10[0x14] = *(string *)((int)local_20 + 0x14);\n        psVar10[0x15] = *(string *)((int)local_20 + 0x15);\n        iVar15 = iVar15 + -1;\n        psVar10 = psVar10 + -0x20;\n        local_20 = (pointer)((int)local_20 + -0x20);\n      } while (iVar15 != 0);\n    }\n    local_20 = (pointer)uVar12;\n    if (iVar11 < 1) {\n      return;\n    }\n    do {\n      std::string::_M_assign((string *)__position);\n      __position->language = __first[6];\n      __position->exact_match = SUB41(__first[7],0);\n      __position->was_matched_by_symbol = *(bool *)((int)__first + 0x1d);\n      local_20 = (pointer)((int)local_20 - 1);\n      __first = __first + 8;\n      __position = __position + 1;\n    } while (local_20 != (pointer)0x0);\n    return;\n  }" { (expression_statement "iVar15 = (int)pVVar13 - (int)__position;" (assignment_expression "iVar15 = (int)pVVar13 - (int)__position" identifier = (binary_expression "(int)pVVar13 - (int)__position" (cast_expression "(int)pVVar13" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__position" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar16 = iVar15 >> 5;" (assignment_expression "uVar16 = iVar15 >> 5" identifier = (binary_expression "iVar15 >> 5" identifier >> number_literal)) ;) (if_statement "if (uVar16 <= uVar12) {\n      piVar17 = (int *)((int)__first + iVar15);\n      pVVar6 = pVVar13;\n      local_20 = pVVar13;\n      if (__last != piVar17) {\n        do {\n          (local_20->pattern)._M_dataplus._M_p = (pointer)&(local_20->pattern).field_2;\n                    /* try { // try from 003454e4 to 003454e8 has its CatchHandler @ 00345a9a */\n          __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char*>(&local_20->pattern,*piVar17,piVar17[1] + *piVar17,0);\n          piVar18 = piVar17 + 8;\n          local_20->language = piVar17[6];\n          local_20->exact_match = SUB41(piVar17[7],0);\n          local_20->was_matched_by_symbol = *(bool *)((int)piVar17 + 0x1d);\n          piVar17 = piVar18;\n          local_20 = local_20 + 1;\n        } while (__last != piVar18);\n        pVVar6 = (this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                 )._M_impl._M_finish;\n      }\n      pVVar6 = pVVar6 + (uVar12 - uVar16);\n      (this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n      )._M_impl._M_finish = pVVar6;\n      paVar8 = &(__position->pattern).field_2;\n      if (pVVar13 != __position) {\n        do {\n          (pVVar6->pattern)._M_dataplus._M_p = (pointer)&(pVVar6->pattern).field_2;\n          if (paVar8 == (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                         *)*(size_type **)(paVar8->_M_local_buf + -8)) {\n            (pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 4) =\n                 *(size_type *)(paVar8->_M_local_buf + 4);\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 8) =\n                 *(size_type *)(paVar8->_M_local_buf + 8);\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 0xc) =\n                 *(size_type *)(paVar8->_M_local_buf + 0xc);\n          }\n          else {\n            (pVVar6->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8)\n            ;\n            (pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n          }\n          (pVVar6->pattern)._M_string_length = *(size_type *)(paVar8->_M_local_buf + -4);\n          *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar8->_M_local_buf + -8) = paVar8;\n          paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                    *)(paVar8->_M_local_buf + 0x20);\n          *(size_type *)(paVar8->_M_local_buf + -4) = 0;\n          paVar8->_M_local_buf[0] = '\0';\n          pVVar6->language = *(Language *)(paVar8->_M_local_buf + 0x10);\n          pVVar6->exact_match = SUB41(*(size_type *)(paVar8->_M_local_buf + 0x14),0);\n          pVVar6->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15];\n          paVar8 = paVar7;\n          pVVar6 = pVVar6 + 1;\n        } while (&(pVVar13->pattern).field_2 != paVar7);\n        pVVar6 = (this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                 )._M_impl._M_finish;\n      }\n      (this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n      )._M_impl._M_finish = (pointer)((int)pVVar6 + iVar15);\n      local_20 = (pointer)uVar16;\n      if (iVar15 < 1) {\n        return;\n      }\n      do {\n        std::string::_M_assign((string *)__position);\n        __position->language = __first[6];\n        __position->exact_match = SUB41(__first[7],0);\n        __position->was_matched_by_symbol = *(bool *)((int)__first + 0x1d);\n        local_20 = (pointer)((int)local_20 - 1);\n        __first = __first + 8;\n        __position = __position + 1;\n      } while (local_20 != (pointer)0x0);\n      return;\n    }" if (parenthesized_expression "(uVar16 <= uVar12)" ( (binary_expression "uVar16 <= uVar12" identifier <= identifier) )) (compound_statement "{\n      piVar17 = (int *)((int)__first + iVar15);\n      pVVar6 = pVVar13;\n      local_20 = pVVar13;\n      if (__last != piVar17) {\n        do {\n          (local_20->pattern)._M_dataplus._M_p = (pointer)&(local_20->pattern).field_2;\n                    /* try { // try from 003454e4 to 003454e8 has its CatchHandler @ 00345a9a */\n          __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char*>(&local_20->pattern,*piVar17,piVar17[1] + *piVar17,0);\n          piVar18 = piVar17 + 8;\n          local_20->language = piVar17[6];\n          local_20->exact_match = SUB41(piVar17[7],0);\n          local_20->was_matched_by_symbol = *(bool *)((int)piVar17 + 0x1d);\n          piVar17 = piVar18;\n          local_20 = local_20 + 1;\n        } while (__last != piVar18);\n        pVVar6 = (this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                 )._M_impl._M_finish;\n      }\n      pVVar6 = pVVar6 + (uVar12 - uVar16);\n      (this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n      )._M_impl._M_finish = pVVar6;\n      paVar8 = &(__position->pattern).field_2;\n      if (pVVar13 != __position) {\n        do {\n          (pVVar6->pattern)._M_dataplus._M_p = (pointer)&(pVVar6->pattern).field_2;\n          if (paVar8 == (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                         *)*(size_type **)(paVar8->_M_local_buf + -8)) {\n            (pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 4) =\n                 *(size_type *)(paVar8->_M_local_buf + 4);\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 8) =\n                 *(size_type *)(paVar8->_M_local_buf + 8);\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 0xc) =\n                 *(size_type *)(paVar8->_M_local_buf + 0xc);\n          }\n          else {\n            (pVVar6->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8)\n            ;\n            (pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n          }\n          (pVVar6->pattern)._M_string_length = *(size_type *)(paVar8->_M_local_buf + -4);\n          *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar8->_M_local_buf + -8) = paVar8;\n          paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                    *)(paVar8->_M_local_buf + 0x20);\n          *(size_type *)(paVar8->_M_local_buf + -4) = 0;\n          paVar8->_M_local_buf[0] = '\0';\n          pVVar6->language = *(Language *)(paVar8->_M_local_buf + 0x10);\n          pVVar6->exact_match = SUB41(*(size_type *)(paVar8->_M_local_buf + 0x14),0);\n          pVVar6->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15];\n          paVar8 = paVar7;\n          pVVar6 = pVVar6 + 1;\n        } while (&(pVVar13->pattern).field_2 != paVar7);\n        pVVar6 = (this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                 )._M_impl._M_finish;\n      }\n      (this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n      )._M_impl._M_finish = (pointer)((int)pVVar6 + iVar15);\n      local_20 = (pointer)uVar16;\n      if (iVar15 < 1) {\n        return;\n      }\n      do {\n        std::string::_M_assign((string *)__position);\n        __position->language = __first[6];\n        __position->exact_match = SUB41(__first[7],0);\n        __position->was_matched_by_symbol = *(bool *)((int)__first + 0x1d);\n        local_20 = (pointer)((int)local_20 - 1);\n        __first = __first + 8;\n        __position = __position + 1;\n      } while (local_20 != (pointer)0x0);\n      return;\n    }" { (expression_statement "piVar17 = (int *)((int)__first + iVar15);" (assignment_expression "piVar17 = (int *)((int)__first + iVar15)" identifier = (cast_expression "(int *)((int)__first + iVar15)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__first + iVar15)" ( (binary_expression "(int)__first + iVar15" (cast_expression "(int)__first" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "pVVar6 = pVVar13;" (assignment_expression "pVVar6 = pVVar13" identifier = identifier) ;) (expression_statement "local_20 = pVVar13;" (assignment_expression "local_20 = pVVar13" identifier = identifier) ;) (if_statement "if (__last != piVar17) {\n        do {\n          (local_20->pattern)._M_dataplus._M_p = (pointer)&(local_20->pattern).field_2;\n                    /* try { // try from 003454e4 to 003454e8 has its CatchHandler @ 00345a9a */\n          __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char*>(&local_20->pattern,*piVar17,piVar17[1] + *piVar17,0);\n          piVar18 = piVar17 + 8;\n          local_20->language = piVar17[6];\n          local_20->exact_match = SUB41(piVar17[7],0);\n          local_20->was_matched_by_symbol = *(bool *)((int)piVar17 + 0x1d);\n          piVar17 = piVar18;\n          local_20 = local_20 + 1;\n        } while (__last != piVar18);\n        pVVar6 = (this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                 )._M_impl._M_finish;\n      }" if (parenthesized_expression "(__last != piVar17)" ( (binary_expression "__last != piVar17" identifier != identifier) )) (compound_statement "{\n        do {\n          (local_20->pattern)._M_dataplus._M_p = (pointer)&(local_20->pattern).field_2;\n                    /* try { // try from 003454e4 to 003454e8 has its CatchHandler @ 00345a9a */\n          __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char*>(&local_20->pattern,*piVar17,piVar17[1] + *piVar17,0);\n          piVar18 = piVar17 + 8;\n          local_20->language = piVar17[6];\n          local_20->exact_match = SUB41(piVar17[7],0);\n          local_20->was_matched_by_symbol = *(bool *)((int)piVar17 + 0x1d);\n          piVar17 = piVar18;\n          local_20 = local_20 + 1;\n        } while (__last != piVar18);\n        pVVar6 = (this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                 )._M_impl._M_finish;\n      }" { (do_statement "do {\n          (local_20->pattern)._M_dataplus._M_p = (pointer)&(local_20->pattern).field_2;\n                    /* try { // try from 003454e4 to 003454e8 has its CatchHandler @ 00345a9a */\n          __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char*>(&local_20->pattern,*piVar17,piVar17[1] + *piVar17,0);\n          piVar18 = piVar17 + 8;\n          local_20->language = piVar17[6];\n          local_20->exact_match = SUB41(piVar17[7],0);\n          local_20->was_matched_by_symbol = *(bool *)((int)piVar17 + 0x1d);\n          piVar17 = piVar18;\n          local_20 = local_20 + 1;\n        } while (__last != piVar18);" do (compound_statement "{\n          (local_20->pattern)._M_dataplus._M_p = (pointer)&(local_20->pattern).field_2;\n                    /* try { // try from 003454e4 to 003454e8 has its CatchHandler @ 00345a9a */\n          __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n          _M_construct<char*>(&local_20->pattern,*piVar17,piVar17[1] + *piVar17,0);\n          piVar18 = piVar17 + 8;\n          local_20->language = piVar17[6];\n          local_20->exact_match = SUB41(piVar17[7],0);\n          local_20->was_matched_by_symbol = *(bool *)((int)piVar17 + 0x1d);\n          piVar17 = piVar18;\n          local_20 = local_20 + 1;\n        }" { (expression_statement "(local_20->pattern)._M_dataplus._M_p = (pointer)&(local_20->pattern).field_2;" (assignment_expression "(local_20->pattern)._M_dataplus._M_p = (pointer)&(local_20->pattern).field_2" (field_expression "(local_20->pattern)._M_dataplus._M_p" (field_expression "(local_20->pattern)._M_dataplus" (parenthesized_expression "(local_20->pattern)" ( (field_expression "local_20->pattern" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "(pointer)&(local_20->pattern).field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(local_20->pattern).field_2" (parenthesized_expression "(local_20->pattern)" ( (field_expression "local_20->pattern" identifier -> field_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*>(&local_20->pattern,*piVar17,piVar17[1] + *piVar17,0);" (binary_expression "allocator<char>_>::\n          _M_construct<char*>(&local_20->pattern,*piVar17,piVar17[1] + *piVar17,0)" (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 "(&local_20->pattern,*piVar17,piVar17[1] + *piVar17,0)" ( (comma_expression "&local_20->pattern,*piVar17,piVar17[1] + *piVar17,0" (pointer_expression "&local_20->pattern" & (field_expression "local_20->pattern" identifier -> field_identifier)) , (comma_expression "*piVar17,piVar17[1] + *piVar17,0" (pointer_expression "*piVar17" * identifier) , (comma_expression "piVar17[1] + *piVar17,0" (binary_expression "piVar17[1] + *piVar17" (subscript_expression "piVar17[1]" identifier [ number_literal ]) + (pointer_expression "*piVar17" * identifier)) , number_literal))) ))) ;) (expression_statement "piVar18 = piVar17 + 8;" (assignment_expression "piVar18 = piVar17 + 8" identifier = (binary_expression "piVar17 + 8" identifier + number_literal)) ;) (expression_statement "local_20->language = piVar17[6];" (assignment_expression "local_20->language = piVar17[6]" (field_expression "local_20->language" identifier -> field_identifier) = (subscript_expression "piVar17[6]" identifier [ number_literal ])) ;) (expression_statement "local_20->exact_match = SUB41(piVar17[7],0);" (assignment_expression "local_20->exact_match = SUB41(piVar17[7],0)" (field_expression "local_20->exact_match" identifier -> field_identifier) = (call_expression "SUB41(piVar17[7],0)" identifier (argument_list "(piVar17[7],0)" ( (subscript_expression "piVar17[7]" identifier [ number_literal ]) , number_literal )))) ;) (expression_statement "local_20->was_matched_by_symbol = *(bool *)((int)piVar17 + 0x1d);" (assignment_expression "local_20->was_matched_by_symbol = *(bool *)((int)piVar17 + 0x1d)" (field_expression "local_20->was_matched_by_symbol" identifier -> field_identifier) = (pointer_expression "*(bool *)((int)piVar17 + 0x1d)" * (cast_expression "(bool *)((int)piVar17 + 0x1d)" ( (type_descriptor "bool *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar17 + 0x1d)" ( (binary_expression "(int)piVar17 + 0x1d" (cast_expression "(int)piVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "piVar17 = piVar18;" (assignment_expression "piVar17 = piVar18" identifier = identifier) ;) (expression_statement "local_20 = local_20 + 1;" (assignment_expression "local_20 = local_20 + 1" identifier = (binary_expression "local_20 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(__last != piVar18)" ( (binary_expression "__last != piVar18" identifier != identifier) )) ;) (expression_statement "pVVar6 = (this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                 )._M_impl._M_finish;" (assignment_expression "pVVar6 = (this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                 )._M_impl._M_finish" identifier = (field_expression "(this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                 )._M_impl._M_finish" (field_expression "(this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                 )._M_impl" (parenthesized_expression "(this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                 )" ( (ERROR "this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::" (comma_expression "this->\n                 super__Vector_base<gold::Version_expression,_std" (binary_expression "this->\n                 super__Vector_base<gold" (field_expression "this->\n                 super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Version_expression" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Version_expression>_>" (binary_expression "Version_expression>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) })) (expression_statement "pVVar6 = pVVar6 + (uVar12 - uVar16);" (assignment_expression "pVVar6 = pVVar6 + (uVar12 - uVar16)" identifier = (binary_expression "pVVar6 + (uVar12 - uVar16)" identifier + (parenthesized_expression "(uVar12 - uVar16)" ( (binary_expression "uVar12 - uVar16" identifier - identifier) )))) ;) (expression_statement "(this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n      )._M_impl._M_finish = pVVar6;" (assignment_expression "(this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n      )._M_impl._M_finish = pVVar6" (field_expression "(this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n      )._M_impl._M_finish" (field_expression "(this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n      )._M_impl" (parenthesized_expression "(this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n      )" ( (ERROR "this->super__Vector_base<gold::Version_expression,_std::allocator<gold::" (comma_expression "this->super__Vector_base<gold::Version_expression,_std" (binary_expression "this->super__Vector_base<gold" (field_expression "this->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Version_expression" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Version_expression>_>" (binary_expression "Version_expression>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "paVar8 = &(__position->pattern).field_2;" (assignment_expression "paVar8 = &(__position->pattern).field_2" identifier = (pointer_expression "&(__position->pattern).field_2" & (field_expression "(__position->pattern).field_2" (parenthesized_expression "(__position->pattern)" ( (field_expression "__position->pattern" identifier -> field_identifier) )) . field_identifier))) ;) (if_statement "if (pVVar13 != __position) {\n        do {\n          (pVVar6->pattern)._M_dataplus._M_p = (pointer)&(pVVar6->pattern).field_2;\n          if (paVar8 == (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                         *)*(size_type **)(paVar8->_M_local_buf + -8)) {\n            (pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 4) =\n                 *(size_type *)(paVar8->_M_local_buf + 4);\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 8) =\n                 *(size_type *)(paVar8->_M_local_buf + 8);\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 0xc) =\n                 *(size_type *)(paVar8->_M_local_buf + 0xc);\n          }\n          else {\n            (pVVar6->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8)\n            ;\n            (pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n          }\n          (pVVar6->pattern)._M_string_length = *(size_type *)(paVar8->_M_local_buf + -4);\n          *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar8->_M_local_buf + -8) = paVar8;\n          paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                    *)(paVar8->_M_local_buf + 0x20);\n          *(size_type *)(paVar8->_M_local_buf + -4) = 0;\n          paVar8->_M_local_buf[0] = '\0';\n          pVVar6->language = *(Language *)(paVar8->_M_local_buf + 0x10);\n          pVVar6->exact_match = SUB41(*(size_type *)(paVar8->_M_local_buf + 0x14),0);\n          pVVar6->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15];\n          paVar8 = paVar7;\n          pVVar6 = pVVar6 + 1;\n        } while (&(pVVar13->pattern).field_2 != paVar7);\n        pVVar6 = (this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                 )._M_impl._M_finish;\n      }" if (parenthesized_expression "(pVVar13 != __position)" ( (binary_expression "pVVar13 != __position" identifier != identifier) )) (compound_statement "{\n        do {\n          (pVVar6->pattern)._M_dataplus._M_p = (pointer)&(pVVar6->pattern).field_2;\n          if (paVar8 == (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                         *)*(size_type **)(paVar8->_M_local_buf + -8)) {\n            (pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 4) =\n                 *(size_type *)(paVar8->_M_local_buf + 4);\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 8) =\n                 *(size_type *)(paVar8->_M_local_buf + 8);\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 0xc) =\n                 *(size_type *)(paVar8->_M_local_buf + 0xc);\n          }\n          else {\n            (pVVar6->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8)\n            ;\n            (pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n          }\n          (pVVar6->pattern)._M_string_length = *(size_type *)(paVar8->_M_local_buf + -4);\n          *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar8->_M_local_buf + -8) = paVar8;\n          paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                    *)(paVar8->_M_local_buf + 0x20);\n          *(size_type *)(paVar8->_M_local_buf + -4) = 0;\n          paVar8->_M_local_buf[0] = '\0';\n          pVVar6->language = *(Language *)(paVar8->_M_local_buf + 0x10);\n          pVVar6->exact_match = SUB41(*(size_type *)(paVar8->_M_local_buf + 0x14),0);\n          pVVar6->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15];\n          paVar8 = paVar7;\n          pVVar6 = pVVar6 + 1;\n        } while (&(pVVar13->pattern).field_2 != paVar7);\n        pVVar6 = (this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                 )._M_impl._M_finish;\n      }" { (do_statement "do {\n          (pVVar6->pattern)._M_dataplus._M_p = (pointer)&(pVVar6->pattern).field_2;\n          if (paVar8 == (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                         *)*(size_type **)(paVar8->_M_local_buf + -8)) {\n            (pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 4) =\n                 *(size_type *)(paVar8->_M_local_buf + 4);\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 8) =\n                 *(size_type *)(paVar8->_M_local_buf + 8);\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 0xc) =\n                 *(size_type *)(paVar8->_M_local_buf + 0xc);\n          }\n          else {\n            (pVVar6->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8)\n            ;\n            (pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n          }\n          (pVVar6->pattern)._M_string_length = *(size_type *)(paVar8->_M_local_buf + -4);\n          *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar8->_M_local_buf + -8) = paVar8;\n          paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                    *)(paVar8->_M_local_buf + 0x20);\n          *(size_type *)(paVar8->_M_local_buf + -4) = 0;\n          paVar8->_M_local_buf[0] = '\0';\n          pVVar6->language = *(Language *)(paVar8->_M_local_buf + 0x10);\n          pVVar6->exact_match = SUB41(*(size_type *)(paVar8->_M_local_buf + 0x14),0);\n          pVVar6->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15];\n          paVar8 = paVar7;\n          pVVar6 = pVVar6 + 1;\n        } while (&(pVVar13->pattern).field_2 != paVar7);" do (compound_statement "{\n          (pVVar6->pattern)._M_dataplus._M_p = (pointer)&(pVVar6->pattern).field_2;\n          if (paVar8 == (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                         *)*(size_type **)(paVar8->_M_local_buf + -8)) {\n            (pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 4) =\n                 *(size_type *)(paVar8->_M_local_buf + 4);\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 8) =\n                 *(size_type *)(paVar8->_M_local_buf + 8);\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 0xc) =\n                 *(size_type *)(paVar8->_M_local_buf + 0xc);\n          }\n          else {\n            (pVVar6->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8)\n            ;\n            (pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n          }\n          (pVVar6->pattern)._M_string_length = *(size_type *)(paVar8->_M_local_buf + -4);\n          *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar8->_M_local_buf + -8) = paVar8;\n          paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                    *)(paVar8->_M_local_buf + 0x20);\n          *(size_type *)(paVar8->_M_local_buf + -4) = 0;\n          paVar8->_M_local_buf[0] = '\0';\n          pVVar6->language = *(Language *)(paVar8->_M_local_buf + 0x10);\n          pVVar6->exact_match = SUB41(*(size_type *)(paVar8->_M_local_buf + 0x14),0);\n          pVVar6->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15];\n          paVar8 = paVar7;\n          pVVar6 = pVVar6 + 1;\n        }" { (expression_statement "(pVVar6->pattern)._M_dataplus._M_p = (pointer)&(pVVar6->pattern).field_2;" (assignment_expression "(pVVar6->pattern)._M_dataplus._M_p = (pointer)&(pVVar6->pattern).field_2" (field_expression "(pVVar6->pattern)._M_dataplus._M_p" (field_expression "(pVVar6->pattern)._M_dataplus" (parenthesized_expression "(pVVar6->pattern)" ( (field_expression "pVVar6->pattern" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "(pointer)&(pVVar6->pattern).field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(pVVar6->pattern).field_2" (parenthesized_expression "(pVVar6->pattern)" ( (field_expression "pVVar6->pattern" identifier -> field_identifier) )) . field_identifier))) ;) (if_statement "if (paVar8 == (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                         *)*(size_type **)(paVar8->_M_local_buf + -8)) {\n            (pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 4) =\n                 *(size_type *)(paVar8->_M_local_buf + 4);\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 8) =\n                 *(size_type *)(paVar8->_M_local_buf + 8);\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 0xc) =\n                 *(size_type *)(paVar8->_M_local_buf + 0xc);\n          }\n          else {\n            (pVVar6->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8)\n            ;\n            (pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n          }" if (parenthesized_expression "(paVar8 == (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                         *)*(size_type **)(paVar8->_M_local_buf + -8))" ( (binary_expression "paVar8 == (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                         *)*(size_type **)(paVar8->_M_local_buf + -8)" identifier == (binary_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                         *)*(size_type **)(paVar8->_M_local_buf + -8)" (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 **)(paVar8->_M_local_buf + -8)" ( (type_descriptor "size_type **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(paVar8->_M_local_buf + -8)" ( (binary_expression "paVar8->_M_local_buf + -8" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) )) (compound_statement "{\n            (pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 4) =\n                 *(size_type *)(paVar8->_M_local_buf + 4);\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 8) =\n                 *(size_type *)(paVar8->_M_local_buf + 8);\n            *(size_type *)((int)&(pVVar6->pattern).field_2 + 0xc) =\n                 *(size_type *)(paVar8->_M_local_buf + 0xc);\n          }" { (expression_statement "(pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;" (assignment_expression "(pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity" (field_expression "(pVVar6->pattern).field_2._M_allocated_capacity" (field_expression "(pVVar6->pattern).field_2" (parenthesized_expression "(pVVar6->pattern)" ( (field_expression "pVVar6->pattern" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "paVar8->_M_allocated_capacity" identifier -> field_identifier)) ;) (expression_statement "*(size_type *)((int)&(pVVar6->pattern).field_2 + 4) =\n                 *(size_type *)(paVar8->_M_local_buf + 4);" (assignment_expression "*(size_type *)((int)&(pVVar6->pattern).field_2 + 4) =\n                 *(size_type *)(paVar8->_M_local_buf + 4)" (pointer_expression "*(size_type *)((int)&(pVVar6->pattern).field_2 + 4)" * (cast_expression "(size_type *)((int)&(pVVar6->pattern).field_2 + 4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pVVar6->pattern).field_2 + 4)" ( (binary_expression "(int)&(pVVar6->pattern).field_2 + 4" (cast_expression "(int)&(pVVar6->pattern).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pVVar6->pattern).field_2" & (field_expression "(pVVar6->pattern).field_2" (parenthesized_expression "(pVVar6->pattern)" ( (field_expression "pVVar6->pattern" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(size_type *)(paVar8->_M_local_buf + 4)" * (cast_expression "(size_type *)(paVar8->_M_local_buf + 4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar8->_M_local_buf + 4)" ( (binary_expression "paVar8->_M_local_buf + 4" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "*(size_type *)((int)&(pVVar6->pattern).field_2 + 8) =\n                 *(size_type *)(paVar8->_M_local_buf + 8);" (assignment_expression "*(size_type *)((int)&(pVVar6->pattern).field_2 + 8) =\n                 *(size_type *)(paVar8->_M_local_buf + 8)" (pointer_expression "*(size_type *)((int)&(pVVar6->pattern).field_2 + 8)" * (cast_expression "(size_type *)((int)&(pVVar6->pattern).field_2 + 8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pVVar6->pattern).field_2 + 8)" ( (binary_expression "(int)&(pVVar6->pattern).field_2 + 8" (cast_expression "(int)&(pVVar6->pattern).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pVVar6->pattern).field_2" & (field_expression "(pVVar6->pattern).field_2" (parenthesized_expression "(pVVar6->pattern)" ( (field_expression "pVVar6->pattern" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(size_type *)(paVar8->_M_local_buf + 8)" * (cast_expression "(size_type *)(paVar8->_M_local_buf + 8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar8->_M_local_buf + 8)" ( (binary_expression "paVar8->_M_local_buf + 8" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "*(size_type *)((int)&(pVVar6->pattern).field_2 + 0xc) =\n                 *(size_type *)(paVar8->_M_local_buf + 0xc);" (assignment_expression "*(size_type *)((int)&(pVVar6->pattern).field_2 + 0xc) =\n                 *(size_type *)(paVar8->_M_local_buf + 0xc)" (pointer_expression "*(size_type *)((int)&(pVVar6->pattern).field_2 + 0xc)" * (cast_expression "(size_type *)((int)&(pVVar6->pattern).field_2 + 0xc)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pVVar6->pattern).field_2 + 0xc)" ( (binary_expression "(int)&(pVVar6->pattern).field_2 + 0xc" (cast_expression "(int)&(pVVar6->pattern).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pVVar6->pattern).field_2" & (field_expression "(pVVar6->pattern).field_2" (parenthesized_expression "(pVVar6->pattern)" ( (field_expression "pVVar6->pattern" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(size_type *)(paVar8->_M_local_buf + 0xc)" * (cast_expression "(size_type *)(paVar8->_M_local_buf + 0xc)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar8->_M_local_buf + 0xc)" ( (binary_expression "paVar8->_M_local_buf + 0xc" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) }) (else_clause "else {\n            (pVVar6->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8)\n            ;\n            (pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n          }" else (compound_statement "{\n            (pVVar6->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8)\n            ;\n            (pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n          }" { (expression_statement "(pVVar6->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8)\n            ;" (assignment_expression "(pVVar6->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8)" (field_expression "(pVVar6->pattern)._M_dataplus._M_p" (field_expression "(pVVar6->pattern)._M_dataplus" (parenthesized_expression "(pVVar6->pattern)" ( (field_expression "pVVar6->pattern" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "(pointer)*(size_type **)(paVar8->_M_local_buf + -8)" (parenthesized_expression "(pointer)" ( identifier )) * (cast_expression "(size_type **)(paVar8->_M_local_buf + -8)" ( (type_descriptor "size_type **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(paVar8->_M_local_buf + -8)" ( (binary_expression "paVar8->_M_local_buf + -8" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "(pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;" (assignment_expression "(pVVar6->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity" (field_expression "(pVVar6->pattern).field_2._M_allocated_capacity" (field_expression "(pVVar6->pattern).field_2" (parenthesized_expression "(pVVar6->pattern)" ( (field_expression "pVVar6->pattern" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "paVar8->_M_allocated_capacity" identifier -> field_identifier)) ;) }))) (expression_statement "(pVVar6->pattern)._M_string_length = *(size_type *)(paVar8->_M_local_buf + -4);" (assignment_expression "(pVVar6->pattern)._M_string_length = *(size_type *)(paVar8->_M_local_buf + -4)" (field_expression "(pVVar6->pattern)._M_string_length" (parenthesized_expression "(pVVar6->pattern)" ( (field_expression "pVVar6->pattern" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*(size_type *)(paVar8->_M_local_buf + -4)" * (cast_expression "(size_type *)(paVar8->_M_local_buf + -4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar8->_M_local_buf + -4)" ( (binary_expression "paVar8->_M_local_buf + -4" (field_expression "paVar8->_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            **)(paVar8->_M_local_buf + -8) = paVar8;" (assignment_expression "*(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar8->_M_local_buf + -8) = paVar8" (pointer_expression "*(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar8->_M_local_buf + -8)" * (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            **)(paVar8->_M_local_buf + -8)" (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 "(paVar8->_M_local_buf + -8)" ( (binary_expression "paVar8->_M_local_buf + -8" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                    *)(paVar8->_M_local_buf + 0x20);" (assignment_expression "paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                    *)(paVar8->_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                    *)(paVar8->_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 "(paVar8->_M_local_buf + 0x20)" ( (binary_expression "paVar8->_M_local_buf + 0x20" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "*(size_type *)(paVar8->_M_local_buf + -4) = 0;" (assignment_expression "*(size_type *)(paVar8->_M_local_buf + -4) = 0" (pointer_expression "*(size_type *)(paVar8->_M_local_buf + -4)" * (cast_expression "(size_type *)(paVar8->_M_local_buf + -4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar8->_M_local_buf + -4)" ( (binary_expression "paVar8->_M_local_buf + -4" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) )))) = number_literal) ;) (expression_statement "paVar8->_M_local_buf[0] = '\0';" (assignment_expression "paVar8->_M_local_buf[0] = '\0'" (subscript_expression "paVar8->_M_local_buf[0]" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pVVar6->language = *(Language *)(paVar8->_M_local_buf + 0x10);" (assignment_expression "pVVar6->language = *(Language *)(paVar8->_M_local_buf + 0x10)" (field_expression "pVVar6->language" identifier -> field_identifier) = (pointer_expression "*(Language *)(paVar8->_M_local_buf + 0x10)" * (cast_expression "(Language *)(paVar8->_M_local_buf + 0x10)" ( (type_descriptor "Language *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar8->_M_local_buf + 0x10)" ( (binary_expression "paVar8->_M_local_buf + 0x10" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "pVVar6->exact_match = SUB41(*(size_type *)(paVar8->_M_local_buf + 0x14),0);" (assignment_expression "pVVar6->exact_match = SUB41(*(size_type *)(paVar8->_M_local_buf + 0x14),0)" (field_expression "pVVar6->exact_match" identifier -> field_identifier) = (call_expression "SUB41(*(size_type *)(paVar8->_M_local_buf + 0x14),0)" identifier (argument_list "(*(size_type *)(paVar8->_M_local_buf + 0x14),0)" ( (pointer_expression "*(size_type *)(paVar8->_M_local_buf + 0x14)" * (cast_expression "(size_type *)(paVar8->_M_local_buf + 0x14)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar8->_M_local_buf + 0x14)" ( (binary_expression "paVar8->_M_local_buf + 0x14" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) )))) , number_literal )))) ;) (expression_statement "pVVar6->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15];" (assignment_expression "pVVar6->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15]" (field_expression "pVVar6->was_matched_by_symbol" identifier -> field_identifier) = (cast_expression "(bool)paVar8->_M_local_buf[0x15]" ( (type_descriptor "bool" primitive_type) ) (subscript_expression "paVar8->_M_local_buf[0x15]" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) [ number_literal ]))) ;) (expression_statement "paVar8 = paVar7;" (assignment_expression "paVar8 = paVar7" identifier = identifier) ;) (expression_statement "pVVar6 = pVVar6 + 1;" (assignment_expression "pVVar6 = pVVar6 + 1" identifier = (binary_expression "pVVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(&(pVVar13->pattern).field_2 != paVar7)" ( (binary_expression "&(pVVar13->pattern).field_2 != paVar7" (pointer_expression "&(pVVar13->pattern).field_2" & (field_expression "(pVVar13->pattern).field_2" (parenthesized_expression "(pVVar13->pattern)" ( (field_expression "pVVar13->pattern" identifier -> field_identifier) )) . field_identifier)) != identifier) )) ;) (expression_statement "pVVar6 = (this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                 )._M_impl._M_finish;" (assignment_expression "pVVar6 = (this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                 )._M_impl._M_finish" identifier = (field_expression "(this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                 )._M_impl._M_finish" (field_expression "(this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                 )._M_impl" (parenthesized_expression "(this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n                 )" ( (ERROR "this->\n                 super__Vector_base<gold::Version_expression,_std::allocator<gold::" (comma_expression "this->\n                 super__Vector_base<gold::Version_expression,_std" (binary_expression "this->\n                 super__Vector_base<gold" (field_expression "this->\n                 super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Version_expression" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Version_expression>_>" (binary_expression "Version_expression>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) })) (expression_statement "(this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n      )._M_impl._M_finish = (pointer)((int)pVVar6 + iVar15);" (assignment_expression "(this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n      )._M_impl._M_finish = (pointer)((int)pVVar6 + iVar15)" (field_expression "(this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n      )._M_impl._M_finish" (field_expression "(this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n      )._M_impl" (parenthesized_expression "(this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n      )" ( (ERROR "this->super__Vector_base<gold::Version_expression,_std::allocator<gold::" (comma_expression "this->super__Vector_base<gold::Version_expression,_std" (binary_expression "this->super__Vector_base<gold" (field_expression "this->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Version_expression" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Version_expression>_>" (binary_expression "Version_expression>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier) = (call_expression "(pointer)((int)pVVar6 + iVar15)" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((int)pVVar6 + iVar15)" ( (binary_expression "(int)pVVar6 + iVar15" (cast_expression "(int)pVVar6" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "local_20 = (pointer)uVar16;" (assignment_expression "local_20 = (pointer)uVar16" identifier = (cast_expression "(pointer)uVar16" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (if_statement "if (iVar15 < 1) {\n        return;\n      }" if (parenthesized_expression "(iVar15 < 1)" ( (binary_expression "iVar15 < 1" identifier < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (do_statement "do {\n        std::string::_M_assign((string *)__position);\n        __position->language = __first[6];\n        __position->exact_match = SUB41(__first[7],0);\n        __position->was_matched_by_symbol = *(bool *)((int)__first + 0x1d);\n        local_20 = (pointer)((int)local_20 - 1);\n        __first = __first + 8;\n        __position = __position + 1;\n      } while (local_20 != (pointer)0x0);" do (compound_statement "{\n        std::string::_M_assign((string *)__position);\n        __position->language = __first[6];\n        __position->exact_match = SUB41(__first[7],0);\n        __position->was_matched_by_symbol = *(bool *)((int)__first + 0x1d);\n        local_20 = (pointer)((int)local_20 - 1);\n        __first = __first + 8;\n        __position = __position + 1;\n      }" { (labeled_statement "std::string::_M_assign((string *)__position);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_assign((string *)__position);" statement_identifier : (ERROR ":" :) (expression_statement "_M_assign((string *)__position);" (call_expression "_M_assign((string *)__position)" identifier (argument_list "((string *)__position)" ( (cast_expression "(string *)__position" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) (expression_statement "__position->language = __first[6];" (assignment_expression "__position->language = __first[6]" (field_expression "__position->language" identifier -> field_identifier) = (subscript_expression "__first[6]" identifier [ number_literal ])) ;) (expression_statement "__position->exact_match = SUB41(__first[7],0);" (assignment_expression "__position->exact_match = SUB41(__first[7],0)" (field_expression "__position->exact_match" identifier -> field_identifier) = (call_expression "SUB41(__first[7],0)" identifier (argument_list "(__first[7],0)" ( (subscript_expression "__first[7]" identifier [ number_literal ]) , number_literal )))) ;) (expression_statement "__position->was_matched_by_symbol = *(bool *)((int)__first + 0x1d);" (assignment_expression "__position->was_matched_by_symbol = *(bool *)((int)__first + 0x1d)" (field_expression "__position->was_matched_by_symbol" identifier -> field_identifier) = (pointer_expression "*(bool *)((int)__first + 0x1d)" * (cast_expression "(bool *)((int)__first + 0x1d)" ( (type_descriptor "bool *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__first + 0x1d)" ( (binary_expression "(int)__first + 0x1d" (cast_expression "(int)__first" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "local_20 = (pointer)((int)local_20 - 1);" (assignment_expression "local_20 = (pointer)((int)local_20 - 1)" identifier = (call_expression "(pointer)((int)local_20 - 1)" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((int)local_20 - 1)" ( (binary_expression "(int)local_20 - 1" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "__first = __first + 8;" (assignment_expression "__first = __first + 8" identifier = (binary_expression "__first + 8" 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_20 != (pointer)0x0)" ( (binary_expression "local_20 != (pointer)0x0" identifier != (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) )) ;) (return_statement "return;" return ;) })) (expression_statement "psVar10 = (string *)((int)pVVar13 + (8 - iVar11));" (assignment_expression "psVar10 = (string *)((int)pVVar13 + (8 - iVar11))" identifier = (cast_expression "(string *)((int)pVVar13 + (8 - iVar11))" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pVVar13 + (8 - iVar11))" ( (binary_expression "(int)pVVar13 + (8 - iVar11)" (cast_expression "(int)pVVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(8 - iVar11)" ( (binary_expression "8 - iVar11" number_literal - identifier) ))) )))) ;) (expression_statement "pVVar6 = pVVar13;" (assignment_expression "pVVar6 = pVVar13" identifier = identifier) ;) (do_statement "do {\n      (pVVar6->pattern)._M_dataplus._M_p = (pointer)&(pVVar6->pattern).field_2;\n      if (*(string **)(psVar10 + -8) == psVar10) {\n        (pVVar6->pattern).field_2._M_allocated_capacity = *(size_type *)psVar10;\n        *(undefined4 *)((int)&(pVVar6->pattern).field_2 + 4) = *(undefined4 *)(psVar10 + 4);\n        *(undefined4 *)((int)&(pVVar6->pattern).field_2 + 8) = *(undefined4 *)(psVar10 + 8);\n        *(undefined4 *)((int)&(pVVar6->pattern).field_2 + 0xc) = *(undefined4 *)(psVar10 + 0xc);\n      }\n      else {\n        (pVVar6->pattern)._M_dataplus._M_p = (pointer)*(string **)(psVar10 + -8);\n        (pVVar6->pattern).field_2._M_allocated_capacity = *(size_type *)psVar10;\n      }\n      (pVVar6->pattern)._M_string_length = *(size_type *)(psVar10 + -4);\n      *(string **)(psVar10 + -8) = psVar10;\n      psVar9 = psVar10 + 0x20;\n      *(undefined4 *)(psVar10 + -4) = 0;\n      *psVar10 = (string)0x0;\n      pVVar6->language = *(Language *)(psVar10 + 0x10);\n      pVVar6->exact_match = (bool)psVar10[0x14];\n      pVVar6->was_matched_by_symbol = (bool)psVar10[0x15];\n      psVar10 = psVar9;\n      pVVar6 = pVVar6 + 1;\n    } while ((string *)&(pVVar13->pattern).field_2 != psVar9);" do (compound_statement "{\n      (pVVar6->pattern)._M_dataplus._M_p = (pointer)&(pVVar6->pattern).field_2;\n      if (*(string **)(psVar10 + -8) == psVar10) {\n        (pVVar6->pattern).field_2._M_allocated_capacity = *(size_type *)psVar10;\n        *(undefined4 *)((int)&(pVVar6->pattern).field_2 + 4) = *(undefined4 *)(psVar10 + 4);\n        *(undefined4 *)((int)&(pVVar6->pattern).field_2 + 8) = *(undefined4 *)(psVar10 + 8);\n        *(undefined4 *)((int)&(pVVar6->pattern).field_2 + 0xc) = *(undefined4 *)(psVar10 + 0xc);\n      }\n      else {\n        (pVVar6->pattern)._M_dataplus._M_p = (pointer)*(string **)(psVar10 + -8);\n        (pVVar6->pattern).field_2._M_allocated_capacity = *(size_type *)psVar10;\n      }\n      (pVVar6->pattern)._M_string_length = *(size_type *)(psVar10 + -4);\n      *(string **)(psVar10 + -8) = psVar10;\n      psVar9 = psVar10 + 0x20;\n      *(undefined4 *)(psVar10 + -4) = 0;\n      *psVar10 = (string)0x0;\n      pVVar6->language = *(Language *)(psVar10 + 0x10);\n      pVVar6->exact_match = (bool)psVar10[0x14];\n      pVVar6->was_matched_by_symbol = (bool)psVar10[0x15];\n      psVar10 = psVar9;\n      pVVar6 = pVVar6 + 1;\n    }" { (expression_statement "(pVVar6->pattern)._M_dataplus._M_p = (pointer)&(pVVar6->pattern).field_2;" (assignment_expression "(pVVar6->pattern)._M_dataplus._M_p = (pointer)&(pVVar6->pattern).field_2" (field_expression "(pVVar6->pattern)._M_dataplus._M_p" (field_expression "(pVVar6->pattern)._M_dataplus" (parenthesized_expression "(pVVar6->pattern)" ( (field_expression "pVVar6->pattern" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "(pointer)&(pVVar6->pattern).field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(pVVar6->pattern).field_2" (parenthesized_expression "(pVVar6->pattern)" ( (field_expression "pVVar6->pattern" identifier -> field_identifier) )) . field_identifier))) ;) (if_statement "if (*(string **)(psVar10 + -8) == psVar10) {\n        (pVVar6->pattern).field_2._M_allocated_capacity = *(size_type *)psVar10;\n        *(undefined4 *)((int)&(pVVar6->pattern).field_2 + 4) = *(undefined4 *)(psVar10 + 4);\n        *(undefined4 *)((int)&(pVVar6->pattern).field_2 + 8) = *(undefined4 *)(psVar10 + 8);\n        *(undefined4 *)((int)&(pVVar6->pattern).field_2 + 0xc) = *(undefined4 *)(psVar10 + 0xc);\n      }\n      else {\n        (pVVar6->pattern)._M_dataplus._M_p = (pointer)*(string **)(psVar10 + -8);\n        (pVVar6->pattern).field_2._M_allocated_capacity = *(size_type *)psVar10;\n      }" if (parenthesized_expression "(*(string **)(psVar10 + -8) == psVar10)" ( (binary_expression "*(string **)(psVar10 + -8) == psVar10" (pointer_expression "*(string **)(psVar10 + -8)" * (cast_expression "(string **)(psVar10 + -8)" ( (type_descriptor "string **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar10 + -8)" ( (binary_expression "psVar10 + -8" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n        (pVVar6->pattern).field_2._M_allocated_capacity = *(size_type *)psVar10;\n        *(undefined4 *)((int)&(pVVar6->pattern).field_2 + 4) = *(undefined4 *)(psVar10 + 4);\n        *(undefined4 *)((int)&(pVVar6->pattern).field_2 + 8) = *(undefined4 *)(psVar10 + 8);\n        *(undefined4 *)((int)&(pVVar6->pattern).field_2 + 0xc) = *(undefined4 *)(psVar10 + 0xc);\n      }" { (expression_statement "(pVVar6->pattern).field_2._M_allocated_capacity = *(size_type *)psVar10;" (assignment_expression "(pVVar6->pattern).field_2._M_allocated_capacity = *(size_type *)psVar10" (field_expression "(pVVar6->pattern).field_2._M_allocated_capacity" (field_expression "(pVVar6->pattern).field_2" (parenthesized_expression "(pVVar6->pattern)" ( (field_expression "pVVar6->pattern" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (pointer_expression "*(size_type *)psVar10" * (cast_expression "(size_type *)psVar10" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(undefined4 *)((int)&(pVVar6->pattern).field_2 + 4) = *(undefined4 *)(psVar10 + 4);" (assignment_expression "*(undefined4 *)((int)&(pVVar6->pattern).field_2 + 4) = *(undefined4 *)(psVar10 + 4)" (pointer_expression "*(undefined4 *)((int)&(pVVar6->pattern).field_2 + 4)" * (cast_expression "(undefined4 *)((int)&(pVVar6->pattern).field_2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pVVar6->pattern).field_2 + 4)" ( (binary_expression "(int)&(pVVar6->pattern).field_2 + 4" (cast_expression "(int)&(pVVar6->pattern).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pVVar6->pattern).field_2" & (field_expression "(pVVar6->pattern).field_2" (parenthesized_expression "(pVVar6->pattern)" ( (field_expression "pVVar6->pattern" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(undefined4 *)(psVar10 + 4)" * (cast_expression "(undefined4 *)(psVar10 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar10 + 4)" ( (binary_expression "psVar10 + 4" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)&(pVVar6->pattern).field_2 + 8) = *(undefined4 *)(psVar10 + 8);" (assignment_expression "*(undefined4 *)((int)&(pVVar6->pattern).field_2 + 8) = *(undefined4 *)(psVar10 + 8)" (pointer_expression "*(undefined4 *)((int)&(pVVar6->pattern).field_2 + 8)" * (cast_expression "(undefined4 *)((int)&(pVVar6->pattern).field_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pVVar6->pattern).field_2 + 8)" ( (binary_expression "(int)&(pVVar6->pattern).field_2 + 8" (cast_expression "(int)&(pVVar6->pattern).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pVVar6->pattern).field_2" & (field_expression "(pVVar6->pattern).field_2" (parenthesized_expression "(pVVar6->pattern)" ( (field_expression "pVVar6->pattern" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(undefined4 *)(psVar10 + 8)" * (cast_expression "(undefined4 *)(psVar10 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar10 + 8)" ( (binary_expression "psVar10 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)&(pVVar6->pattern).field_2 + 0xc) = *(undefined4 *)(psVar10 + 0xc);" (assignment_expression "*(undefined4 *)((int)&(pVVar6->pattern).field_2 + 0xc) = *(undefined4 *)(psVar10 + 0xc)" (pointer_expression "*(undefined4 *)((int)&(pVVar6->pattern).field_2 + 0xc)" * (cast_expression "(undefined4 *)((int)&(pVVar6->pattern).field_2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pVVar6->pattern).field_2 + 0xc)" ( (binary_expression "(int)&(pVVar6->pattern).field_2 + 0xc" (cast_expression "(int)&(pVVar6->pattern).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pVVar6->pattern).field_2" & (field_expression "(pVVar6->pattern).field_2" (parenthesized_expression "(pVVar6->pattern)" ( (field_expression "pVVar6->pattern" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(undefined4 *)(psVar10 + 0xc)" * (cast_expression "(undefined4 *)(psVar10 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar10 + 0xc)" ( (binary_expression "psVar10 + 0xc" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        (pVVar6->pattern)._M_dataplus._M_p = (pointer)*(string **)(psVar10 + -8);\n        (pVVar6->pattern).field_2._M_allocated_capacity = *(size_type *)psVar10;\n      }" else (compound_statement "{\n        (pVVar6->pattern)._M_dataplus._M_p = (pointer)*(string **)(psVar10 + -8);\n        (pVVar6->pattern).field_2._M_allocated_capacity = *(size_type *)psVar10;\n      }" { (expression_statement "(pVVar6->pattern)._M_dataplus._M_p = (pointer)*(string **)(psVar10 + -8);" (assignment_expression "(pVVar6->pattern)._M_dataplus._M_p = (pointer)*(string **)(psVar10 + -8)" (field_expression "(pVVar6->pattern)._M_dataplus._M_p" (field_expression "(pVVar6->pattern)._M_dataplus" (parenthesized_expression "(pVVar6->pattern)" ( (field_expression "pVVar6->pattern" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "(pointer)*(string **)(psVar10 + -8)" (parenthesized_expression "(pointer)" ( identifier )) * (cast_expression "(string **)(psVar10 + -8)" ( (type_descriptor "string **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar10 + -8)" ( (binary_expression "psVar10 + -8" identifier + number_literal) ))))) ;) (expression_statement "(pVVar6->pattern).field_2._M_allocated_capacity = *(size_type *)psVar10;" (assignment_expression "(pVVar6->pattern).field_2._M_allocated_capacity = *(size_type *)psVar10" (field_expression "(pVVar6->pattern).field_2._M_allocated_capacity" (field_expression "(pVVar6->pattern).field_2" (parenthesized_expression "(pVVar6->pattern)" ( (field_expression "pVVar6->pattern" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (pointer_expression "*(size_type *)psVar10" * (cast_expression "(size_type *)psVar10" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) }))) (expression_statement "(pVVar6->pattern)._M_string_length = *(size_type *)(psVar10 + -4);" (assignment_expression "(pVVar6->pattern)._M_string_length = *(size_type *)(psVar10 + -4)" (field_expression "(pVVar6->pattern)._M_string_length" (parenthesized_expression "(pVVar6->pattern)" ( (field_expression "pVVar6->pattern" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*(size_type *)(psVar10 + -4)" * (cast_expression "(size_type *)(psVar10 + -4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar10 + -4)" ( (binary_expression "psVar10 + -4" identifier + number_literal) ))))) ;) (expression_statement "*(string **)(psVar10 + -8) = psVar10;" (assignment_expression "*(string **)(psVar10 + -8) = psVar10" (pointer_expression "*(string **)(psVar10 + -8)" * (cast_expression "(string **)(psVar10 + -8)" ( (type_descriptor "string **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar10 + -8)" ( (binary_expression "psVar10 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "psVar9 = psVar10 + 0x20;" (assignment_expression "psVar9 = psVar10 + 0x20" identifier = (binary_expression "psVar10 + 0x20" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(psVar10 + -4) = 0;" (assignment_expression "*(undefined4 *)(psVar10 + -4) = 0" (pointer_expression "*(undefined4 *)(psVar10 + -4)" * (cast_expression "(undefined4 *)(psVar10 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar10 + -4)" ( (binary_expression "psVar10 + -4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*psVar10 = (string)0x0;" (assignment_expression "*psVar10 = (string)0x0" (pointer_expression "*psVar10" * identifier) = (cast_expression "(string)0x0" ( (type_descriptor "string" type_identifier) ) number_literal)) ;) (expression_statement "pVVar6->language = *(Language *)(psVar10 + 0x10);" (assignment_expression "pVVar6->language = *(Language *)(psVar10 + 0x10)" (field_expression "pVVar6->language" identifier -> field_identifier) = (pointer_expression "*(Language *)(psVar10 + 0x10)" * (cast_expression "(Language *)(psVar10 + 0x10)" ( (type_descriptor "Language *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar10 + 0x10)" ( (binary_expression "psVar10 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "pVVar6->exact_match = (bool)psVar10[0x14];" (assignment_expression "pVVar6->exact_match = (bool)psVar10[0x14]" (field_expression "pVVar6->exact_match" identifier -> field_identifier) = (cast_expression "(bool)psVar10[0x14]" ( (type_descriptor "bool" primitive_type) ) (subscript_expression "psVar10[0x14]" identifier [ number_literal ]))) ;) (expression_statement "pVVar6->was_matched_by_symbol = (bool)psVar10[0x15];" (assignment_expression "pVVar6->was_matched_by_symbol = (bool)psVar10[0x15]" (field_expression "pVVar6->was_matched_by_symbol" identifier -> field_identifier) = (cast_expression "(bool)psVar10[0x15]" ( (type_descriptor "bool" primitive_type) ) (subscript_expression "psVar10[0x15]" identifier [ number_literal ]))) ;) (expression_statement "psVar10 = psVar9;" (assignment_expression "psVar10 = psVar9" identifier = identifier) ;) (expression_statement "pVVar6 = pVVar6 + 1;" (assignment_expression "pVVar6 = pVVar6 + 1" identifier = (binary_expression "pVVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((string *)&(pVVar13->pattern).field_2 != psVar9)" ( (binary_expression "(string *)&(pVVar13->pattern).field_2 != psVar9" (cast_expression "(string *)&(pVVar13->pattern).field_2" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pVVar13->pattern).field_2" & (field_expression "(pVVar13->pattern).field_2" (parenthesized_expression "(pVVar13->pattern)" ( (field_expression "pVVar13->pattern" identifier -> field_identifier) )) . field_identifier))) != identifier) )) ;) (expression_statement "ppVVar1 = &(this->\n               super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n               )._M_impl._M_finish;" (assignment_expression "ppVVar1 = &(this->\n               super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n               )._M_impl._M_finish" identifier = (pointer_expression "&(this->\n               super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n               )._M_impl._M_finish" & (field_expression "(this->\n               super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n               )._M_impl._M_finish" (field_expression "(this->\n               super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n               )._M_impl" (parenthesized_expression "(this->\n               super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n               )" ( (ERROR "this->\n               super__Vector_base<gold::Version_expression,_std::allocator<gold::" (comma_expression "this->\n               super__Vector_base<gold::Version_expression,_std" (binary_expression "this->\n               super__Vector_base<gold" (field_expression "this->\n               super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Version_expression" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Version_expression>_>" (binary_expression "Version_expression>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "*ppVVar1 = (pointer)((int)*ppVVar1 + iVar11);" (assignment_expression "*ppVVar1 = (pointer)((int)*ppVVar1 + iVar11)" (pointer_expression "*ppVVar1" * identifier) = (call_expression "(pointer)((int)*ppVVar1 + iVar11)" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((int)*ppVVar1 + iVar11)" ( (binary_expression "(int)*ppVVar1 + iVar11" (cast_expression "(int)*ppVVar1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppVVar1" * identifier)) + identifier) )))) ;) (expression_statement "local_20 = (pointer)((int)pVVar13 + (-0x18 - iVar11));" (assignment_expression "local_20 = (pointer)((int)pVVar13 + (-0x18 - iVar11))" identifier = (call_expression "(pointer)((int)pVVar13 + (-0x18 - iVar11))" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((int)pVVar13 + (-0x18 - iVar11))" ( (binary_expression "(int)pVVar13 + (-0x18 - iVar11)" (cast_expression "(int)pVVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-0x18 - iVar11)" ( (binary_expression "-0x18 - iVar11" number_literal - identifier) ))) )))) ;) (expression_statement "psVar9 = (string *)((int)pVVar13 + (-(int)__position - iVar11));" (assignment_expression "psVar9 = (string *)((int)pVVar13 + (-(int)__position - iVar11))" identifier = (cast_expression "(string *)((int)pVVar13 + (-(int)__position - iVar11))" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pVVar13 + (-(int)__position - iVar11))" ( (binary_expression "(int)pVVar13 + (-(int)__position - iVar11)" (cast_expression "(int)pVVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-(int)__position - iVar11)" ( (binary_expression "-(int)__position - iVar11" (unary_expression "-(int)__position" - (cast_expression "(int)__position" ( (type_descriptor "int" primitive_type) ) identifier)) - identifier) ))) )))) ;) (expression_statement "iVar15 = (int)psVar9 >> 5;" (assignment_expression "iVar15 = (int)psVar9 >> 5" identifier = (binary_expression "(int)psVar9 >> 5" (cast_expression "(int)psVar9" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "psVar10 = (string *)&pVVar13[-1].pattern.field_2;" (assignment_expression "psVar10 = (string *)&pVVar13[-1].pattern.field_2" identifier = (cast_expression "(string *)&pVVar13[-1].pattern.field_2" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pVVar13[-1].pattern.field_2" & (field_expression "pVVar13[-1].pattern.field_2" (field_expression "pVVar13[-1].pattern" (subscript_expression "pVVar13[-1]" identifier [ number_literal ]) . field_identifier) . field_identifier)))) ;) (if_statement "if (0 < (int)psVar9) {\n      do {\n        psVar9 = *(string **)(psVar10 + -8);\n        psVar5 = *(string **)((int)local_20 + -8);\n        if ((pointer)psVar5 == local_20) {\n          __n = *(size_t *)((int)local_20 + -4);\n          if (__n != 0) {\n            if (__n == 1) {\n              *psVar9 = *(string *)local_20;\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }\n            else {\n              memcpy(psVar9,local_20,__n);\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }\n          }\n          *(size_t *)(psVar10 + -4) = __n;\n          psVar9[__n] = (string)0x0;\n        }\n        else {\n          if (psVar9 == psVar10) {\n            *(string **)(psVar10 + -8) = psVar5;\n            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);\n            *(undefined4 *)psVar10 = *(undefined4 *)local_20;\n          }\n          else {\n            *(string **)(psVar10 + -8) = psVar5;\n            uVar4 = *(undefined4 *)psVar10;\n            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);\n            *(undefined4 *)psVar10 = *(undefined4 *)local_20;\n            if (psVar9 != (string *)0x0) {\n              *(string **)((int)local_20 + -8) = psVar9;\n              *(undefined4 *)local_20 = uVar4;\n              goto LAB_0034596d;\n            }\n          }\n          *(pointer *)((int)local_20 + -8) = local_20;\n        }\nLAB_0034596d:\n        *(undefined4 *)((int)local_20 + -4) = 0;\n        **(undefined1 **)((int)local_20 + -8) = 0;\n        *(undefined4 *)(psVar10 + 0x10) = *(undefined4 *)((int)local_20 + 0x10);\n        psVar10[0x14] = *(string *)((int)local_20 + 0x14);\n        psVar10[0x15] = *(string *)((int)local_20 + 0x15);\n        iVar15 = iVar15 + -1;\n        psVar10 = psVar10 + -0x20;\n        local_20 = (pointer)((int)local_20 + -0x20);\n      } while (iVar15 != 0);\n    }" if (parenthesized_expression "(0 < (int)psVar9)" ( (binary_expression "0 < (int)psVar9" number_literal < (cast_expression "(int)psVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      do {\n        psVar9 = *(string **)(psVar10 + -8);\n        psVar5 = *(string **)((int)local_20 + -8);\n        if ((pointer)psVar5 == local_20) {\n          __n = *(size_t *)((int)local_20 + -4);\n          if (__n != 0) {\n            if (__n == 1) {\n              *psVar9 = *(string *)local_20;\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }\n            else {\n              memcpy(psVar9,local_20,__n);\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }\n          }\n          *(size_t *)(psVar10 + -4) = __n;\n          psVar9[__n] = (string)0x0;\n        }\n        else {\n          if (psVar9 == psVar10) {\n            *(string **)(psVar10 + -8) = psVar5;\n            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);\n            *(undefined4 *)psVar10 = *(undefined4 *)local_20;\n          }\n          else {\n            *(string **)(psVar10 + -8) = psVar5;\n            uVar4 = *(undefined4 *)psVar10;\n            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);\n            *(undefined4 *)psVar10 = *(undefined4 *)local_20;\n            if (psVar9 != (string *)0x0) {\n              *(string **)((int)local_20 + -8) = psVar9;\n              *(undefined4 *)local_20 = uVar4;\n              goto LAB_0034596d;\n            }\n          }\n          *(pointer *)((int)local_20 + -8) = local_20;\n        }\nLAB_0034596d:\n        *(undefined4 *)((int)local_20 + -4) = 0;\n        **(undefined1 **)((int)local_20 + -8) = 0;\n        *(undefined4 *)(psVar10 + 0x10) = *(undefined4 *)((int)local_20 + 0x10);\n        psVar10[0x14] = *(string *)((int)local_20 + 0x14);\n        psVar10[0x15] = *(string *)((int)local_20 + 0x15);\n        iVar15 = iVar15 + -1;\n        psVar10 = psVar10 + -0x20;\n        local_20 = (pointer)((int)local_20 + -0x20);\n      } while (iVar15 != 0);\n    }" { (do_statement "do {\n        psVar9 = *(string **)(psVar10 + -8);\n        psVar5 = *(string **)((int)local_20 + -8);\n        if ((pointer)psVar5 == local_20) {\n          __n = *(size_t *)((int)local_20 + -4);\n          if (__n != 0) {\n            if (__n == 1) {\n              *psVar9 = *(string *)local_20;\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }\n            else {\n              memcpy(psVar9,local_20,__n);\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }\n          }\n          *(size_t *)(psVar10 + -4) = __n;\n          psVar9[__n] = (string)0x0;\n        }\n        else {\n          if (psVar9 == psVar10) {\n            *(string **)(psVar10 + -8) = psVar5;\n            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);\n            *(undefined4 *)psVar10 = *(undefined4 *)local_20;\n          }\n          else {\n            *(string **)(psVar10 + -8) = psVar5;\n            uVar4 = *(undefined4 *)psVar10;\n            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);\n            *(undefined4 *)psVar10 = *(undefined4 *)local_20;\n            if (psVar9 != (string *)0x0) {\n              *(string **)((int)local_20 + -8) = psVar9;\n              *(undefined4 *)local_20 = uVar4;\n              goto LAB_0034596d;\n            }\n          }\n          *(pointer *)((int)local_20 + -8) = local_20;\n        }\nLAB_0034596d:\n        *(undefined4 *)((int)local_20 + -4) = 0;\n        **(undefined1 **)((int)local_20 + -8) = 0;\n        *(undefined4 *)(psVar10 + 0x10) = *(undefined4 *)((int)local_20 + 0x10);\n        psVar10[0x14] = *(string *)((int)local_20 + 0x14);\n        psVar10[0x15] = *(string *)((int)local_20 + 0x15);\n        iVar15 = iVar15 + -1;\n        psVar10 = psVar10 + -0x20;\n        local_20 = (pointer)((int)local_20 + -0x20);\n      } while (iVar15 != 0);" do (compound_statement "{\n        psVar9 = *(string **)(psVar10 + -8);\n        psVar5 = *(string **)((int)local_20 + -8);\n        if ((pointer)psVar5 == local_20) {\n          __n = *(size_t *)((int)local_20 + -4);\n          if (__n != 0) {\n            if (__n == 1) {\n              *psVar9 = *(string *)local_20;\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }\n            else {\n              memcpy(psVar9,local_20,__n);\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }\n          }\n          *(size_t *)(psVar10 + -4) = __n;\n          psVar9[__n] = (string)0x0;\n        }\n        else {\n          if (psVar9 == psVar10) {\n            *(string **)(psVar10 + -8) = psVar5;\n            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);\n            *(undefined4 *)psVar10 = *(undefined4 *)local_20;\n          }\n          else {\n            *(string **)(psVar10 + -8) = psVar5;\n            uVar4 = *(undefined4 *)psVar10;\n            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);\n            *(undefined4 *)psVar10 = *(undefined4 *)local_20;\n            if (psVar9 != (string *)0x0) {\n              *(string **)((int)local_20 + -8) = psVar9;\n              *(undefined4 *)local_20 = uVar4;\n              goto LAB_0034596d;\n            }\n          }\n          *(pointer *)((int)local_20 + -8) = local_20;\n        }\nLAB_0034596d:\n        *(undefined4 *)((int)local_20 + -4) = 0;\n        **(undefined1 **)((int)local_20 + -8) = 0;\n        *(undefined4 *)(psVar10 + 0x10) = *(undefined4 *)((int)local_20 + 0x10);\n        psVar10[0x14] = *(string *)((int)local_20 + 0x14);\n        psVar10[0x15] = *(string *)((int)local_20 + 0x15);\n        iVar15 = iVar15 + -1;\n        psVar10 = psVar10 + -0x20;\n        local_20 = (pointer)((int)local_20 + -0x20);\n      }" { (expression_statement "psVar9 = *(string **)(psVar10 + -8);" (assignment_expression "psVar9 = *(string **)(psVar10 + -8)" identifier = (pointer_expression "*(string **)(psVar10 + -8)" * (cast_expression "(string **)(psVar10 + -8)" ( (type_descriptor "string **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar10 + -8)" ( (binary_expression "psVar10 + -8" identifier + number_literal) ))))) ;) (expression_statement "psVar5 = *(string **)((int)local_20 + -8);" (assignment_expression "psVar5 = *(string **)((int)local_20 + -8)" identifier = (pointer_expression "*(string **)((int)local_20 + -8)" * (cast_expression "(string **)((int)local_20 + -8)" ( (type_descriptor "string **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_20 + -8)" ( (binary_expression "(int)local_20 + -8" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if ((pointer)psVar5 == local_20) {\n          __n = *(size_t *)((int)local_20 + -4);\n          if (__n != 0) {\n            if (__n == 1) {\n              *psVar9 = *(string *)local_20;\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }\n            else {\n              memcpy(psVar9,local_20,__n);\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }\n          }\n          *(size_t *)(psVar10 + -4) = __n;\n          psVar9[__n] = (string)0x0;\n        }\n        else {\n          if (psVar9 == psVar10) {\n            *(string **)(psVar10 + -8) = psVar5;\n            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);\n            *(undefined4 *)psVar10 = *(undefined4 *)local_20;\n          }\n          else {\n            *(string **)(psVar10 + -8) = psVar5;\n            uVar4 = *(undefined4 *)psVar10;\n            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);\n            *(undefined4 *)psVar10 = *(undefined4 *)local_20;\n            if (psVar9 != (string *)0x0) {\n              *(string **)((int)local_20 + -8) = psVar9;\n              *(undefined4 *)local_20 = uVar4;\n              goto LAB_0034596d;\n            }\n          }\n          *(pointer *)((int)local_20 + -8) = local_20;\n        }" if (parenthesized_expression "((pointer)psVar5 == local_20)" ( (binary_expression "(pointer)psVar5 == local_20" (cast_expression "(pointer)psVar5" ( (type_descriptor "pointer" type_identifier) ) identifier) == identifier) )) (compound_statement "{\n          __n = *(size_t *)((int)local_20 + -4);\n          if (__n != 0) {\n            if (__n == 1) {\n              *psVar9 = *(string *)local_20;\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }\n            else {\n              memcpy(psVar9,local_20,__n);\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }\n          }\n          *(size_t *)(psVar10 + -4) = __n;\n          psVar9[__n] = (string)0x0;\n        }" { (expression_statement "__n = *(size_t *)((int)local_20 + -4);" (assignment_expression "__n = *(size_t *)((int)local_20 + -4)" identifier = (pointer_expression "*(size_t *)((int)local_20 + -4)" * (cast_expression "(size_t *)((int)local_20 + -4)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + -4)" ( (binary_expression "(int)local_20 + -4" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (__n != 0) {\n            if (__n == 1) {\n              *psVar9 = *(string *)local_20;\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }\n            else {\n              memcpy(psVar9,local_20,__n);\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }\n          }" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (compound_statement "{\n            if (__n == 1) {\n              *psVar9 = *(string *)local_20;\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }\n            else {\n              memcpy(psVar9,local_20,__n);\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }\n          }" { (if_statement "if (__n == 1) {\n              *psVar9 = *(string *)local_20;\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }\n            else {\n              memcpy(psVar9,local_20,__n);\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }" if (parenthesized_expression "(__n == 1)" ( (binary_expression "__n == 1" identifier == number_literal) )) (compound_statement "{\n              *psVar9 = *(string *)local_20;\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }" { (expression_statement "*psVar9 = *(string *)local_20;" (assignment_expression "*psVar9 = *(string *)local_20" (pointer_expression "*psVar9" * identifier) = (pointer_expression "*(string *)local_20" * (cast_expression "(string *)local_20" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "psVar9 = *(string **)(psVar10 + -8);" (assignment_expression "psVar9 = *(string **)(psVar10 + -8)" identifier = (pointer_expression "*(string **)(psVar10 + -8)" * (cast_expression "(string **)(psVar10 + -8)" ( (type_descriptor "string **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar10 + -8)" ( (binary_expression "psVar10 + -8" identifier + number_literal) ))))) ;) (expression_statement "__n = *(size_t *)((int)local_20 + -4);" (assignment_expression "__n = *(size_t *)((int)local_20 + -4)" identifier = (pointer_expression "*(size_t *)((int)local_20 + -4)" * (cast_expression "(size_t *)((int)local_20 + -4)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + -4)" ( (binary_expression "(int)local_20 + -4" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n              memcpy(psVar9,local_20,__n);\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }" else (compound_statement "{\n              memcpy(psVar9,local_20,__n);\n              psVar9 = *(string **)(psVar10 + -8);\n              __n = *(size_t *)((int)local_20 + -4);\n            }" { (expression_statement "memcpy(psVar9,local_20,__n);" (call_expression "memcpy(psVar9,local_20,__n)" identifier (argument_list "(psVar9,local_20,__n)" ( identifier , identifier , identifier ))) ;) (expression_statement "psVar9 = *(string **)(psVar10 + -8);" (assignment_expression "psVar9 = *(string **)(psVar10 + -8)" identifier = (pointer_expression "*(string **)(psVar10 + -8)" * (cast_expression "(string **)(psVar10 + -8)" ( (type_descriptor "string **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar10 + -8)" ( (binary_expression "psVar10 + -8" identifier + number_literal) ))))) ;) (expression_statement "__n = *(size_t *)((int)local_20 + -4);" (assignment_expression "__n = *(size_t *)((int)local_20 + -4)" identifier = (pointer_expression "*(size_t *)((int)local_20 + -4)" * (cast_expression "(size_t *)((int)local_20 + -4)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + -4)" ( (binary_expression "(int)local_20 + -4" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) })) (expression_statement "*(size_t *)(psVar10 + -4) = __n;" (assignment_expression "*(size_t *)(psVar10 + -4) = __n" (pointer_expression "*(size_t *)(psVar10 + -4)" * (cast_expression "(size_t *)(psVar10 + -4)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar10 + -4)" ( (binary_expression "psVar10 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "psVar9[__n] = (string)0x0;" (assignment_expression "psVar9[__n] = (string)0x0" (subscript_expression "psVar9[__n]" identifier [ identifier ]) = (cast_expression "(string)0x0" ( (type_descriptor "string" type_identifier) ) number_literal)) ;) }) (else_clause "else {\n          if (psVar9 == psVar10) {\n            *(string **)(psVar10 + -8) = psVar5;\n            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);\n            *(undefined4 *)psVar10 = *(undefined4 *)local_20;\n          }\n          else {\n            *(string **)(psVar10 + -8) = psVar5;\n            uVar4 = *(undefined4 *)psVar10;\n            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);\n            *(undefined4 *)psVar10 = *(undefined4 *)local_20;\n            if (psVar9 != (string *)0x0) {\n              *(string **)((int)local_20 + -8) = psVar9;\n              *(undefined4 *)local_20 = uVar4;\n              goto LAB_0034596d;\n            }\n          }\n          *(pointer *)((int)local_20 + -8) = local_20;\n        }" else (compound_statement "{\n          if (psVar9 == psVar10) {\n            *(string **)(psVar10 + -8) = psVar5;\n            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);\n            *(undefined4 *)psVar10 = *(undefined4 *)local_20;\n          }\n          else {\n            *(string **)(psVar10 + -8) = psVar5;\n            uVar4 = *(undefined4 *)psVar10;\n            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);\n            *(undefined4 *)psVar10 = *(undefined4 *)local_20;\n            if (psVar9 != (string *)0x0) {\n              *(string **)((int)local_20 + -8) = psVar9;\n              *(undefined4 *)local_20 = uVar4;\n              goto LAB_0034596d;\n            }\n          }\n          *(pointer *)((int)local_20 + -8) = local_20;\n        }" { (if_statement "if (psVar9 == psVar10) {\n            *(string **)(psVar10 + -8) = psVar5;\n            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);\n            *(undefined4 *)psVar10 = *(undefined4 *)local_20;\n          }\n          else {\n            *(string **)(psVar10 + -8) = psVar5;\n            uVar4 = *(undefined4 *)psVar10;\n            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);\n            *(undefined4 *)psVar10 = *(undefined4 *)local_20;\n            if (psVar9 != (string *)0x0) {\n              *(string **)((int)local_20 + -8) = psVar9;\n              *(undefined4 *)local_20 = uVar4;\n              goto LAB_0034596d;\n            }\n          }" if (parenthesized_expression "(psVar9 == psVar10)" ( (binary_expression "psVar9 == psVar10" identifier == identifier) )) (compound_statement "{\n            *(string **)(psVar10 + -8) = psVar5;\n            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);\n            *(undefined4 *)psVar10 = *(undefined4 *)local_20;\n          }" { (expression_statement "*(string **)(psVar10 + -8) = psVar5;" (assignment_expression "*(string **)(psVar10 + -8) = psVar5" (pointer_expression "*(string **)(psVar10 + -8)" * (cast_expression "(string **)(psVar10 + -8)" ( (type_descriptor "string **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar10 + -8)" ( (binary_expression "psVar10 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);" (assignment_expression "*(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4)" (pointer_expression "*(undefined4 *)(psVar10 + -4)" * (cast_expression "(undefined4 *)(psVar10 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar10 + -4)" ( (binary_expression "psVar10 + -4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)local_20 + -4)" * (cast_expression "(undefined4 *)((int)local_20 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + -4)" ( (binary_expression "(int)local_20 + -4" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)psVar10 = *(undefined4 *)local_20;" (assignment_expression "*(undefined4 *)psVar10 = *(undefined4 *)local_20" (pointer_expression "*(undefined4 *)psVar10" * (cast_expression "(undefined4 *)psVar10" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)local_20" * (cast_expression "(undefined4 *)local_20" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) }) (else_clause "else {\n            *(string **)(psVar10 + -8) = psVar5;\n            uVar4 = *(undefined4 *)psVar10;\n            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);\n            *(undefined4 *)psVar10 = *(undefined4 *)local_20;\n            if (psVar9 != (string *)0x0) {\n              *(string **)((int)local_20 + -8) = psVar9;\n              *(undefined4 *)local_20 = uVar4;\n              goto LAB_0034596d;\n            }\n          }" else (compound_statement "{\n            *(string **)(psVar10 + -8) = psVar5;\n            uVar4 = *(undefined4 *)psVar10;\n            *(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);\n            *(undefined4 *)psVar10 = *(undefined4 *)local_20;\n            if (psVar9 != (string *)0x0) {\n              *(string **)((int)local_20 + -8) = psVar9;\n              *(undefined4 *)local_20 = uVar4;\n              goto LAB_0034596d;\n            }\n          }" { (expression_statement "*(string **)(psVar10 + -8) = psVar5;" (assignment_expression "*(string **)(psVar10 + -8) = psVar5" (pointer_expression "*(string **)(psVar10 + -8)" * (cast_expression "(string **)(psVar10 + -8)" ( (type_descriptor "string **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar10 + -8)" ( (binary_expression "psVar10 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar4 = *(undefined4 *)psVar10;" (assignment_expression "uVar4 = *(undefined4 *)psVar10" identifier = (pointer_expression "*(undefined4 *)psVar10" * (cast_expression "(undefined4 *)psVar10" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4);" (assignment_expression "*(undefined4 *)(psVar10 + -4) = *(undefined4 *)((int)local_20 + -4)" (pointer_expression "*(undefined4 *)(psVar10 + -4)" * (cast_expression "(undefined4 *)(psVar10 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar10 + -4)" ( (binary_expression "psVar10 + -4" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)local_20 + -4)" * (cast_expression "(undefined4 *)((int)local_20 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + -4)" ( (binary_expression "(int)local_20 + -4" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)psVar10 = *(undefined4 *)local_20;" (assignment_expression "*(undefined4 *)psVar10 = *(undefined4 *)local_20" (pointer_expression "*(undefined4 *)psVar10" * (cast_expression "(undefined4 *)psVar10" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)local_20" * (cast_expression "(undefined4 *)local_20" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (psVar9 != (string *)0x0) {\n              *(string **)((int)local_20 + -8) = psVar9;\n              *(undefined4 *)local_20 = uVar4;\n              goto LAB_0034596d;\n            }" if (parenthesized_expression "(psVar9 != (string *)0x0)" ( (binary_expression "psVar9 != (string *)0x0" identifier != (cast_expression "(string *)0x0" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              *(string **)((int)local_20 + -8) = psVar9;\n              *(undefined4 *)local_20 = uVar4;\n              goto LAB_0034596d;\n            }" { (expression_statement "*(string **)((int)local_20 + -8) = psVar9;" (assignment_expression "*(string **)((int)local_20 + -8) = psVar9" (pointer_expression "*(string **)((int)local_20 + -8)" * (cast_expression "(string **)((int)local_20 + -8)" ( (type_descriptor "string **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_20 + -8)" ( (binary_expression "(int)local_20 + -8" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)local_20 = uVar4;" (assignment_expression "*(undefined4 *)local_20 = uVar4" (pointer_expression "*(undefined4 *)local_20" * (cast_expression "(undefined4 *)local_20" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (goto_statement "goto LAB_0034596d;" goto statement_identifier ;) })) }))) (expression_statement "*(pointer *)((int)local_20 + -8) = local_20;" (assignment_expression "*(pointer *)((int)local_20 + -8) = local_20" (pointer_expression "*(pointer *)((int)local_20 + -8)" * (cast_expression "(pointer *)((int)local_20 + -8)" ( (type_descriptor "pointer *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + -8)" ( (binary_expression "(int)local_20 + -8" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) }))) (labeled_statement "LAB_0034596d:\n        *(undefined4 *)((int)local_20 + -4) = 0;" statement_identifier : (expression_statement "*(undefined4 *)((int)local_20 + -4) = 0;" (assignment_expression "*(undefined4 *)((int)local_20 + -4) = 0" (pointer_expression "*(undefined4 *)((int)local_20 + -4)" * (cast_expression "(undefined4 *)((int)local_20 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + -4)" ( (binary_expression "(int)local_20 + -4" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;)) (expression_statement "**(undefined1 **)((int)local_20 + -8) = 0;" (assignment_expression "**(undefined1 **)((int)local_20 + -8) = 0" (pointer_expression "**(undefined1 **)((int)local_20 + -8)" * (pointer_expression "*(undefined1 **)((int)local_20 + -8)" * (cast_expression "(undefined1 **)((int)local_20 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)local_20 + -8)" ( (binary_expression "(int)local_20 + -8" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) = number_literal) ;) (expression_statement "*(undefined4 *)(psVar10 + 0x10) = *(undefined4 *)((int)local_20 + 0x10);" (assignment_expression "*(undefined4 *)(psVar10 + 0x10) = *(undefined4 *)((int)local_20 + 0x10)" (pointer_expression "*(undefined4 *)(psVar10 + 0x10)" * (cast_expression "(undefined4 *)(psVar10 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar10 + 0x10)" ( (binary_expression "psVar10 + 0x10" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)local_20 + 0x10)" * (cast_expression "(undefined4 *)((int)local_20 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + 0x10)" ( (binary_expression "(int)local_20 + 0x10" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "psVar10[0x14] = *(string *)((int)local_20 + 0x14);" (assignment_expression "psVar10[0x14] = *(string *)((int)local_20 + 0x14)" (subscript_expression "psVar10[0x14]" identifier [ number_literal ]) = (pointer_expression "*(string *)((int)local_20 + 0x14)" * (cast_expression "(string *)((int)local_20 + 0x14)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + 0x14)" ( (binary_expression "(int)local_20 + 0x14" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "psVar10[0x15] = *(string *)((int)local_20 + 0x15);" (assignment_expression "psVar10[0x15] = *(string *)((int)local_20 + 0x15)" (subscript_expression "psVar10[0x15]" identifier [ number_literal ]) = (pointer_expression "*(string *)((int)local_20 + 0x15)" * (cast_expression "(string *)((int)local_20 + 0x15)" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + 0x15)" ( (binary_expression "(int)local_20 + 0x15" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "psVar10 = psVar10 + -0x20;" (assignment_expression "psVar10 = psVar10 + -0x20" identifier = (binary_expression "psVar10 + -0x20" identifier + number_literal)) ;) (expression_statement "local_20 = (pointer)((int)local_20 + -0x20);" (assignment_expression "local_20 = (pointer)((int)local_20 + -0x20)" identifier = (call_expression "(pointer)((int)local_20 + -0x20)" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((int)local_20 + -0x20)" ( (binary_expression "(int)local_20 + -0x20" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) ;) })) (expression_statement "local_20 = (pointer)uVar12;" (assignment_expression "local_20 = (pointer)uVar12" identifier = (cast_expression "(pointer)uVar12" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (if_statement "if (iVar11 < 1) {\n      return;\n    }" if (parenthesized_expression "(iVar11 < 1)" ( (binary_expression "iVar11 < 1" identifier < number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (do_statement "do {\n      std::string::_M_assign((string *)__position);\n      __position->language = __first[6];\n      __position->exact_match = SUB41(__first[7],0);\n      __position->was_matched_by_symbol = *(bool *)((int)__first + 0x1d);\n      local_20 = (pointer)((int)local_20 - 1);\n      __first = __first + 8;\n      __position = __position + 1;\n    } while (local_20 != (pointer)0x0);" do (compound_statement "{\n      std::string::_M_assign((string *)__position);\n      __position->language = __first[6];\n      __position->exact_match = SUB41(__first[7],0);\n      __position->was_matched_by_symbol = *(bool *)((int)__first + 0x1d);\n      local_20 = (pointer)((int)local_20 - 1);\n      __first = __first + 8;\n      __position = __position + 1;\n    }" { (labeled_statement "std::string::_M_assign((string *)__position);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_assign((string *)__position);" statement_identifier : (ERROR ":" :) (expression_statement "_M_assign((string *)__position);" (call_expression "_M_assign((string *)__position)" identifier (argument_list "((string *)__position)" ( (cast_expression "(string *)__position" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) (expression_statement "__position->language = __first[6];" (assignment_expression "__position->language = __first[6]" (field_expression "__position->language" identifier -> field_identifier) = (subscript_expression "__first[6]" identifier [ number_literal ])) ;) (expression_statement "__position->exact_match = SUB41(__first[7],0);" (assignment_expression "__position->exact_match = SUB41(__first[7],0)" (field_expression "__position->exact_match" identifier -> field_identifier) = (call_expression "SUB41(__first[7],0)" identifier (argument_list "(__first[7],0)" ( (subscript_expression "__first[7]" identifier [ number_literal ]) , number_literal )))) ;) (expression_statement "__position->was_matched_by_symbol = *(bool *)((int)__first + 0x1d);" (assignment_expression "__position->was_matched_by_symbol = *(bool *)((int)__first + 0x1d)" (field_expression "__position->was_matched_by_symbol" identifier -> field_identifier) = (pointer_expression "*(bool *)((int)__first + 0x1d)" * (cast_expression "(bool *)((int)__first + 0x1d)" ( (type_descriptor "bool *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__first + 0x1d)" ( (binary_expression "(int)__first + 0x1d" (cast_expression "(int)__first" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "local_20 = (pointer)((int)local_20 - 1);" (assignment_expression "local_20 = (pointer)((int)local_20 - 1)" identifier = (call_expression "(pointer)((int)local_20 - 1)" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((int)local_20 - 1)" ( (binary_expression "(int)local_20 - 1" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "__first = __first + 8;" (assignment_expression "__first = __first + 8" identifier = (binary_expression "__first + 8" 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_20 != (pointer)0x0)" ( (binary_expression "local_20 != (pointer)0x0" identifier != (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) )) ;) (return_statement "return;" return ;) })) (expression_statement "pVVar6 = (this->\n           super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).\n           _M_impl._M_start;" (assignment_expression "pVVar6 = (this->\n           super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).\n           _M_impl._M_start" identifier = (field_expression "(this->\n           super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).\n           _M_impl._M_start" (field_expression "(this->\n           super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).\n           _M_impl" (parenthesized_expression "(this->\n           super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)" ( (ERROR "this->\n           super__Vector_base<gold::Version_expression,_std::allocator<gold::" (comma_expression "this->\n           super__Vector_base<gold::Version_expression,_std" (binary_expression "this->\n           super__Vector_base<gold" (field_expression "this->\n           super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Version_expression" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Version_expression>_>" (binary_expression "Version_expression>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "uVar16 = (int)pVVar13 - (int)pVVar6 >> 5;" (assignment_expression "uVar16 = (int)pVVar13 - (int)pVVar6 >> 5" identifier = (binary_expression "(int)pVVar13 - (int)pVVar6 >> 5" (binary_expression "(int)pVVar13 - (int)pVVar6" (cast_expression "(int)pVVar13" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pVVar6" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (if_statement "if (0x7ffffff - uVar16 < uVar12) {\n                    /* WARNING: Subroutine does not return */\n    __throw_length_error("vector::_M_range_insert");\n  }" if (parenthesized_expression "(0x7ffffff - uVar16 < uVar12)" ( (binary_expression "0x7ffffff - uVar16 < uVar12" (binary_expression "0x7ffffff - uVar16" 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 (uVar12 < uVar16) {\n    uVar12 = uVar16;\n  }" if (parenthesized_expression "(uVar12 < uVar16)" ( (binary_expression "uVar12 < uVar16" identifier < identifier) )) (compound_statement "{\n    uVar12 = uVar16;\n  }" { (expression_statement "uVar12 = uVar16;" (assignment_expression "uVar12 = uVar16" identifier = identifier) ;) })) (expression_statement "local_2c = uVar16 + uVar12;" (assignment_expression "local_2c = uVar16 + uVar12" identifier = (binary_expression "uVar16 + uVar12" identifier + identifier)) ;) (if_statement "if ((CARRY4(uVar16,uVar12)) || (0x7ffffff < local_2c)) {\n    uVar12 = 0xffffffe0;\n    local_2c = 0x7ffffff;\n  }\n  else {\n    local_28 = (pointer)0x0;\n    if (local_2c == 0) goto LAB_00345692;\n    uVar12 = local_2c * 0x20;\n  }" if (parenthesized_expression "((CARRY4(uVar16,uVar12)) || (0x7ffffff < local_2c))" ( (binary_expression "(CARRY4(uVar16,uVar12)) || (0x7ffffff < local_2c)" (parenthesized_expression "(CARRY4(uVar16,uVar12))" ( (call_expression "CARRY4(uVar16,uVar12)" identifier (argument_list "(uVar16,uVar12)" ( identifier , identifier ))) )) || (parenthesized_expression "(0x7ffffff < local_2c)" ( (binary_expression "0x7ffffff < local_2c" number_literal < identifier) ))) )) (compound_statement "{\n    uVar12 = 0xffffffe0;\n    local_2c = 0x7ffffff;\n  }" { (expression_statement "uVar12 = 0xffffffe0;" (assignment_expression "uVar12 = 0xffffffe0" identifier = number_literal) ;) (expression_statement "local_2c = 0x7ffffff;" (assignment_expression "local_2c = 0x7ffffff" identifier = number_literal) ;) }) (else_clause "else {\n    local_28 = (pointer)0x0;\n    if (local_2c == 0) goto LAB_00345692;\n    uVar12 = local_2c * 0x20;\n  }" else (compound_statement "{\n    local_28 = (pointer)0x0;\n    if (local_2c == 0) goto LAB_00345692;\n    uVar12 = local_2c * 0x20;\n  }" { (expression_statement "local_28 = (pointer)0x0;" (assignment_expression "local_28 = (pointer)0x0" identifier = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (if_statement "if (local_2c == 0) goto LAB_00345692;" if (parenthesized_expression "(local_2c == 0)" ( (binary_expression "local_2c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00345692;" goto statement_identifier ;)) (expression_statement "uVar12 = local_2c * 0x20;" (assignment_expression "uVar12 = local_2c * 0x20" identifier = (binary_expression "local_2c * 0x20" identifier * number_literal)) ;) }))) (expression_statement "local_28 = (pointer)operator_new(uVar12);" (assignment_expression "local_28 = (pointer)operator_new(uVar12)" identifier = (cast_expression "(pointer)operator_new(uVar12)" ( (type_descriptor "pointer" type_identifier) ) (call_expression "operator_new(uVar12)" identifier (argument_list "(uVar12)" ( identifier ))))) ;) (expression_statement "pVVar6 = (this->\n           super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).\n           _M_impl._M_start;" (assignment_expression "pVVar6 = (this->\n           super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).\n           _M_impl._M_start" identifier = (field_expression "(this->\n           super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).\n           _M_impl._M_start" (field_expression "(this->\n           super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).\n           _M_impl" (parenthesized_expression "(this->\n           super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)" ( (ERROR "this->\n           super__Vector_base<gold::Version_expression,_std::allocator<gold::" (comma_expression "this->\n           super__Vector_base<gold::Version_expression,_std" (binary_expression "this->\n           super__Vector_base<gold" (field_expression "this->\n           super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Version_expression" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Version_expression>_>" (binary_expression "Version_expression>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (labeled_statement "LAB_00345692:\n  pVVar13 = local_28;" statement_identifier : (expression_statement "pVVar13 = local_28;" (assignment_expression "pVVar13 = local_28" identifier = identifier) ;)) (if_statement "if (__position != pVVar6) {\n    paVar8 = &(pVVar6->pattern).field_2;\n    do {\n      (pVVar13->pattern)._M_dataplus._M_p = (pointer)&(pVVar13->pattern).field_2;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)*(size_type **)(paVar8->_M_local_buf + -8) == paVar8) {\n        (pVVar13->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n        *(size_type *)((int)&(pVVar13->pattern).field_2 + 4) =\n             *(size_type *)(paVar8->_M_local_buf + 4);\n        *(size_type *)((int)&(pVVar13->pattern).field_2 + 8) =\n             *(size_type *)(paVar8->_M_local_buf + 8);\n        *(size_type *)((int)&(pVVar13->pattern).field_2 + 0xc) =\n             *(size_type *)(paVar8->_M_local_buf + 0xc);\n      }\n      else {\n        (pVVar13->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8);\n        (pVVar13->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n      }\n      (pVVar13->pattern)._M_string_length = *(size_type *)(paVar8->_M_local_buf + -4);\n      *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar8->_M_local_buf + -8) = paVar8;\n      paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(paVar8->_M_local_buf + 0x20);\n      *(size_type *)(paVar8->_M_local_buf + -4) = 0;\n      paVar8->_M_local_buf[0] = '\0';\n      pVVar13->language = *(Language *)(paVar8->_M_local_buf + 0x10);\n      pVVar13->exact_match = SUB41(*(size_type *)(paVar8->_M_local_buf + 0x14),0);\n      pVVar13->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15];\n      paVar8 = paVar7;\n      pVVar13 = pVVar13 + 1;\n    } while (paVar7 != &(__position->pattern).field_2);\n    pVVar13 = local_28 + ((uint)((int)__position + (-0x20 - (int)pVVar6)) >> 5) + 1;\n  }" if (parenthesized_expression "(__position != pVVar6)" ( (binary_expression "__position != pVVar6" identifier != identifier) )) (compound_statement "{\n    paVar8 = &(pVVar6->pattern).field_2;\n    do {\n      (pVVar13->pattern)._M_dataplus._M_p = (pointer)&(pVVar13->pattern).field_2;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)*(size_type **)(paVar8->_M_local_buf + -8) == paVar8) {\n        (pVVar13->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n        *(size_type *)((int)&(pVVar13->pattern).field_2 + 4) =\n             *(size_type *)(paVar8->_M_local_buf + 4);\n        *(size_type *)((int)&(pVVar13->pattern).field_2 + 8) =\n             *(size_type *)(paVar8->_M_local_buf + 8);\n        *(size_type *)((int)&(pVVar13->pattern).field_2 + 0xc) =\n             *(size_type *)(paVar8->_M_local_buf + 0xc);\n      }\n      else {\n        (pVVar13->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8);\n        (pVVar13->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n      }\n      (pVVar13->pattern)._M_string_length = *(size_type *)(paVar8->_M_local_buf + -4);\n      *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar8->_M_local_buf + -8) = paVar8;\n      paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(paVar8->_M_local_buf + 0x20);\n      *(size_type *)(paVar8->_M_local_buf + -4) = 0;\n      paVar8->_M_local_buf[0] = '\0';\n      pVVar13->language = *(Language *)(paVar8->_M_local_buf + 0x10);\n      pVVar13->exact_match = SUB41(*(size_type *)(paVar8->_M_local_buf + 0x14),0);\n      pVVar13->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15];\n      paVar8 = paVar7;\n      pVVar13 = pVVar13 + 1;\n    } while (paVar7 != &(__position->pattern).field_2);\n    pVVar13 = local_28 + ((uint)((int)__position + (-0x20 - (int)pVVar6)) >> 5) + 1;\n  }" { (expression_statement "paVar8 = &(pVVar6->pattern).field_2;" (assignment_expression "paVar8 = &(pVVar6->pattern).field_2" identifier = (pointer_expression "&(pVVar6->pattern).field_2" & (field_expression "(pVVar6->pattern).field_2" (parenthesized_expression "(pVVar6->pattern)" ( (field_expression "pVVar6->pattern" identifier -> field_identifier) )) . field_identifier))) ;) (do_statement "do {\n      (pVVar13->pattern)._M_dataplus._M_p = (pointer)&(pVVar13->pattern).field_2;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)*(size_type **)(paVar8->_M_local_buf + -8) == paVar8) {\n        (pVVar13->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n        *(size_type *)((int)&(pVVar13->pattern).field_2 + 4) =\n             *(size_type *)(paVar8->_M_local_buf + 4);\n        *(size_type *)((int)&(pVVar13->pattern).field_2 + 8) =\n             *(size_type *)(paVar8->_M_local_buf + 8);\n        *(size_type *)((int)&(pVVar13->pattern).field_2 + 0xc) =\n             *(size_type *)(paVar8->_M_local_buf + 0xc);\n      }\n      else {\n        (pVVar13->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8);\n        (pVVar13->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n      }\n      (pVVar13->pattern)._M_string_length = *(size_type *)(paVar8->_M_local_buf + -4);\n      *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar8->_M_local_buf + -8) = paVar8;\n      paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(paVar8->_M_local_buf + 0x20);\n      *(size_type *)(paVar8->_M_local_buf + -4) = 0;\n      paVar8->_M_local_buf[0] = '\0';\n      pVVar13->language = *(Language *)(paVar8->_M_local_buf + 0x10);\n      pVVar13->exact_match = SUB41(*(size_type *)(paVar8->_M_local_buf + 0x14),0);\n      pVVar13->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15];\n      paVar8 = paVar7;\n      pVVar13 = pVVar13 + 1;\n    } while (paVar7 != &(__position->pattern).field_2);" do (compound_statement "{\n      (pVVar13->pattern)._M_dataplus._M_p = (pointer)&(pVVar13->pattern).field_2;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)*(size_type **)(paVar8->_M_local_buf + -8) == paVar8) {\n        (pVVar13->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n        *(size_type *)((int)&(pVVar13->pattern).field_2 + 4) =\n             *(size_type *)(paVar8->_M_local_buf + 4);\n        *(size_type *)((int)&(pVVar13->pattern).field_2 + 8) =\n             *(size_type *)(paVar8->_M_local_buf + 8);\n        *(size_type *)((int)&(pVVar13->pattern).field_2 + 0xc) =\n             *(size_type *)(paVar8->_M_local_buf + 0xc);\n      }\n      else {\n        (pVVar13->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8);\n        (pVVar13->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n      }\n      (pVVar13->pattern)._M_string_length = *(size_type *)(paVar8->_M_local_buf + -4);\n      *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar8->_M_local_buf + -8) = paVar8;\n      paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(paVar8->_M_local_buf + 0x20);\n      *(size_type *)(paVar8->_M_local_buf + -4) = 0;\n      paVar8->_M_local_buf[0] = '\0';\n      pVVar13->language = *(Language *)(paVar8->_M_local_buf + 0x10);\n      pVVar13->exact_match = SUB41(*(size_type *)(paVar8->_M_local_buf + 0x14),0);\n      pVVar13->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15];\n      paVar8 = paVar7;\n      pVVar13 = pVVar13 + 1;\n    }" { (expression_statement "(pVVar13->pattern)._M_dataplus._M_p = (pointer)&(pVVar13->pattern).field_2;" (assignment_expression "(pVVar13->pattern)._M_dataplus._M_p = (pointer)&(pVVar13->pattern).field_2" (field_expression "(pVVar13->pattern)._M_dataplus._M_p" (field_expression "(pVVar13->pattern)._M_dataplus" (parenthesized_expression "(pVVar13->pattern)" ( (field_expression "pVVar13->pattern" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "(pointer)&(pVVar13->pattern).field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(pVVar13->pattern).field_2" (parenthesized_expression "(pVVar13->pattern)" ( (field_expression "pVVar13->pattern" 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           *)*(size_type **)(paVar8->_M_local_buf + -8) == paVar8) {\n        (pVVar13->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n        *(size_type *)((int)&(pVVar13->pattern).field_2 + 4) =\n             *(size_type *)(paVar8->_M_local_buf + 4);\n        *(size_type *)((int)&(pVVar13->pattern).field_2 + 8) =\n             *(size_type *)(paVar8->_M_local_buf + 8);\n        *(size_type *)((int)&(pVVar13->pattern).field_2 + 0xc) =\n             *(size_type *)(paVar8->_M_local_buf + 0xc);\n      }\n      else {\n        (pVVar13->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8);\n        (pVVar13->pattern).field_2._M_allocated_capacity = paVar8->_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 **)(paVar8->_M_local_buf + -8) == paVar8)" ( (binary_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)*(size_type **)(paVar8->_M_local_buf + -8) == paVar8" (binary_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)*(size_type **)(paVar8->_M_local_buf + -8)" (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 **)(paVar8->_M_local_buf + -8)" ( (type_descriptor "size_type **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(paVar8->_M_local_buf + -8)" ( (binary_expression "paVar8->_M_local_buf + -8" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n        (pVVar13->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n        *(size_type *)((int)&(pVVar13->pattern).field_2 + 4) =\n             *(size_type *)(paVar8->_M_local_buf + 4);\n        *(size_type *)((int)&(pVVar13->pattern).field_2 + 8) =\n             *(size_type *)(paVar8->_M_local_buf + 8);\n        *(size_type *)((int)&(pVVar13->pattern).field_2 + 0xc) =\n             *(size_type *)(paVar8->_M_local_buf + 0xc);\n      }" { (expression_statement "(pVVar13->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;" (assignment_expression "(pVVar13->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity" (field_expression "(pVVar13->pattern).field_2._M_allocated_capacity" (field_expression "(pVVar13->pattern).field_2" (parenthesized_expression "(pVVar13->pattern)" ( (field_expression "pVVar13->pattern" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "paVar8->_M_allocated_capacity" identifier -> field_identifier)) ;) (expression_statement "*(size_type *)((int)&(pVVar13->pattern).field_2 + 4) =\n             *(size_type *)(paVar8->_M_local_buf + 4);" (assignment_expression "*(size_type *)((int)&(pVVar13->pattern).field_2 + 4) =\n             *(size_type *)(paVar8->_M_local_buf + 4)" (pointer_expression "*(size_type *)((int)&(pVVar13->pattern).field_2 + 4)" * (cast_expression "(size_type *)((int)&(pVVar13->pattern).field_2 + 4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pVVar13->pattern).field_2 + 4)" ( (binary_expression "(int)&(pVVar13->pattern).field_2 + 4" (cast_expression "(int)&(pVVar13->pattern).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pVVar13->pattern).field_2" & (field_expression "(pVVar13->pattern).field_2" (parenthesized_expression "(pVVar13->pattern)" ( (field_expression "pVVar13->pattern" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(size_type *)(paVar8->_M_local_buf + 4)" * (cast_expression "(size_type *)(paVar8->_M_local_buf + 4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar8->_M_local_buf + 4)" ( (binary_expression "paVar8->_M_local_buf + 4" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "*(size_type *)((int)&(pVVar13->pattern).field_2 + 8) =\n             *(size_type *)(paVar8->_M_local_buf + 8);" (assignment_expression "*(size_type *)((int)&(pVVar13->pattern).field_2 + 8) =\n             *(size_type *)(paVar8->_M_local_buf + 8)" (pointer_expression "*(size_type *)((int)&(pVVar13->pattern).field_2 + 8)" * (cast_expression "(size_type *)((int)&(pVVar13->pattern).field_2 + 8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pVVar13->pattern).field_2 + 8)" ( (binary_expression "(int)&(pVVar13->pattern).field_2 + 8" (cast_expression "(int)&(pVVar13->pattern).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pVVar13->pattern).field_2" & (field_expression "(pVVar13->pattern).field_2" (parenthesized_expression "(pVVar13->pattern)" ( (field_expression "pVVar13->pattern" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(size_type *)(paVar8->_M_local_buf + 8)" * (cast_expression "(size_type *)(paVar8->_M_local_buf + 8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar8->_M_local_buf + 8)" ( (binary_expression "paVar8->_M_local_buf + 8" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "*(size_type *)((int)&(pVVar13->pattern).field_2 + 0xc) =\n             *(size_type *)(paVar8->_M_local_buf + 0xc);" (assignment_expression "*(size_type *)((int)&(pVVar13->pattern).field_2 + 0xc) =\n             *(size_type *)(paVar8->_M_local_buf + 0xc)" (pointer_expression "*(size_type *)((int)&(pVVar13->pattern).field_2 + 0xc)" * (cast_expression "(size_type *)((int)&(pVVar13->pattern).field_2 + 0xc)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pVVar13->pattern).field_2 + 0xc)" ( (binary_expression "(int)&(pVVar13->pattern).field_2 + 0xc" (cast_expression "(int)&(pVVar13->pattern).field_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pVVar13->pattern).field_2" & (field_expression "(pVVar13->pattern).field_2" (parenthesized_expression "(pVVar13->pattern)" ( (field_expression "pVVar13->pattern" identifier -> field_identifier) )) . field_identifier))) + number_literal) )))) = (pointer_expression "*(size_type *)(paVar8->_M_local_buf + 0xc)" * (cast_expression "(size_type *)(paVar8->_M_local_buf + 0xc)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar8->_M_local_buf + 0xc)" ( (binary_expression "paVar8->_M_local_buf + 0xc" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) }) (else_clause "else {\n        (pVVar13->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8);\n        (pVVar13->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n      }" else (compound_statement "{\n        (pVVar13->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8);\n        (pVVar13->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;\n      }" { (expression_statement "(pVVar13->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8);" (assignment_expression "(pVVar13->pattern)._M_dataplus._M_p = (pointer)*(size_type **)(paVar8->_M_local_buf + -8)" (field_expression "(pVVar13->pattern)._M_dataplus._M_p" (field_expression "(pVVar13->pattern)._M_dataplus" (parenthesized_expression "(pVVar13->pattern)" ( (field_expression "pVVar13->pattern" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "(pointer)*(size_type **)(paVar8->_M_local_buf + -8)" (parenthesized_expression "(pointer)" ( identifier )) * (cast_expression "(size_type **)(paVar8->_M_local_buf + -8)" ( (type_descriptor "size_type **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(paVar8->_M_local_buf + -8)" ( (binary_expression "paVar8->_M_local_buf + -8" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "(pVVar13->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity;" (assignment_expression "(pVVar13->pattern).field_2._M_allocated_capacity = paVar8->_M_allocated_capacity" (field_expression "(pVVar13->pattern).field_2._M_allocated_capacity" (field_expression "(pVVar13->pattern).field_2" (parenthesized_expression "(pVVar13->pattern)" ( (field_expression "pVVar13->pattern" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "paVar8->_M_allocated_capacity" identifier -> field_identifier)) ;) }))) (expression_statement "(pVVar13->pattern)._M_string_length = *(size_type *)(paVar8->_M_local_buf + -4);" (assignment_expression "(pVVar13->pattern)._M_string_length = *(size_type *)(paVar8->_M_local_buf + -4)" (field_expression "(pVVar13->pattern)._M_string_length" (parenthesized_expression "(pVVar13->pattern)" ( (field_expression "pVVar13->pattern" identifier -> field_identifier) )) . field_identifier) = (pointer_expression "*(size_type *)(paVar8->_M_local_buf + -4)" * (cast_expression "(size_type *)(paVar8->_M_local_buf + -4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar8->_M_local_buf + -4)" ( (binary_expression "paVar8->_M_local_buf + -4" (field_expression "paVar8->_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        **)(paVar8->_M_local_buf + -8) = paVar8;" (assignment_expression "*(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar8->_M_local_buf + -8) = paVar8" (pointer_expression "*(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar8->_M_local_buf + -8)" * (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar8->_M_local_buf + -8)" (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 "(paVar8->_M_local_buf + -8)" ( (binary_expression "paVar8->_M_local_buf + -8" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(paVar8->_M_local_buf + 0x20);" (assignment_expression "paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(paVar8->_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                *)(paVar8->_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 "(paVar8->_M_local_buf + 0x20)" ( (binary_expression "paVar8->_M_local_buf + 0x20" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "*(size_type *)(paVar8->_M_local_buf + -4) = 0;" (assignment_expression "*(size_type *)(paVar8->_M_local_buf + -4) = 0" (pointer_expression "*(size_type *)(paVar8->_M_local_buf + -4)" * (cast_expression "(size_type *)(paVar8->_M_local_buf + -4)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar8->_M_local_buf + -4)" ( (binary_expression "paVar8->_M_local_buf + -4" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) )))) = number_literal) ;) (expression_statement "paVar8->_M_local_buf[0] = '\0';" (assignment_expression "paVar8->_M_local_buf[0] = '\0'" (subscript_expression "paVar8->_M_local_buf[0]" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pVVar13->language = *(Language *)(paVar8->_M_local_buf + 0x10);" (assignment_expression "pVVar13->language = *(Language *)(paVar8->_M_local_buf + 0x10)" (field_expression "pVVar13->language" identifier -> field_identifier) = (pointer_expression "*(Language *)(paVar8->_M_local_buf + 0x10)" * (cast_expression "(Language *)(paVar8->_M_local_buf + 0x10)" ( (type_descriptor "Language *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar8->_M_local_buf + 0x10)" ( (binary_expression "paVar8->_M_local_buf + 0x10" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "pVVar13->exact_match = SUB41(*(size_type *)(paVar8->_M_local_buf + 0x14),0);" (assignment_expression "pVVar13->exact_match = SUB41(*(size_type *)(paVar8->_M_local_buf + 0x14),0)" (field_expression "pVVar13->exact_match" identifier -> field_identifier) = (call_expression "SUB41(*(size_type *)(paVar8->_M_local_buf + 0x14),0)" identifier (argument_list "(*(size_type *)(paVar8->_M_local_buf + 0x14),0)" ( (pointer_expression "*(size_type *)(paVar8->_M_local_buf + 0x14)" * (cast_expression "(size_type *)(paVar8->_M_local_buf + 0x14)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar8->_M_local_buf + 0x14)" ( (binary_expression "paVar8->_M_local_buf + 0x14" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) )))) , number_literal )))) ;) (expression_statement "pVVar13->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15];" (assignment_expression "pVVar13->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15]" (field_expression "pVVar13->was_matched_by_symbol" identifier -> field_identifier) = (cast_expression "(bool)paVar8->_M_local_buf[0x15]" ( (type_descriptor "bool" primitive_type) ) (subscript_expression "paVar8->_M_local_buf[0x15]" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) [ number_literal ]))) ;) (expression_statement "paVar8 = paVar7;" (assignment_expression "paVar8 = paVar7" identifier = identifier) ;) (expression_statement "pVVar13 = pVVar13 + 1;" (assignment_expression "pVVar13 = pVVar13 + 1" identifier = (binary_expression "pVVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(paVar7 != &(__position->pattern).field_2)" ( (binary_expression "paVar7 != &(__position->pattern).field_2" identifier != (pointer_expression "&(__position->pattern).field_2" & (field_expression "(__position->pattern).field_2" (parenthesized_expression "(__position->pattern)" ( (field_expression "__position->pattern" identifier -> field_identifier) )) . field_identifier))) )) ;) (expression_statement "pVVar13 = local_28 + ((uint)((int)__position + (-0x20 - (int)pVVar6)) >> 5) + 1;" (assignment_expression "pVVar13 = local_28 + ((uint)((int)__position + (-0x20 - (int)pVVar6)) >> 5) + 1" identifier = (binary_expression "local_28 + ((uint)((int)__position + (-0x20 - (int)pVVar6)) >> 5) + 1" (binary_expression "local_28 + ((uint)((int)__position + (-0x20 - (int)pVVar6)) >> 5)" identifier + (parenthesized_expression "((uint)((int)__position + (-0x20 - (int)pVVar6)) >> 5)" ( (binary_expression "(uint)((int)__position + (-0x20 - (int)pVVar6)) >> 5" (call_expression "(uint)((int)__position + (-0x20 - (int)pVVar6))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)__position + (-0x20 - (int)pVVar6))" ( (binary_expression "(int)__position + (-0x20 - (int)pVVar6)" (cast_expression "(int)__position" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-0x20 - (int)pVVar6)" ( (binary_expression "-0x20 - (int)pVVar6" number_literal - (cast_expression "(int)pVVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))) >> number_literal) ))) + number_literal)) ;) })) (do_statement "do {\n    (pVVar13->pattern)._M_dataplus._M_p = (pointer)&(pVVar13->pattern).field_2;\n                    /* try { // try from 003457c3 to 003457c7 has its CatchHandler @ 00345a9c */\n    __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::_M_construct<char*>\n              (&pVVar13->pattern,*__first,__first[1] + *__first,0);\n    piVar17 = __first + 8;\n    pVVar6 = pVVar13 + 1;\n    pVVar13->language = __first[6];\n    pVVar13->exact_match = SUB41(__first[7],0);\n    pVVar13->was_matched_by_symbol = *(bool *)((int)__first + 0x1d);\n    __first = piVar17;\n    pVVar13 = pVVar6;\n  } while (__last != piVar17);" do (compound_statement "{\n    (pVVar13->pattern)._M_dataplus._M_p = (pointer)&(pVVar13->pattern).field_2;\n                    /* try { // try from 003457c3 to 003457c7 has its CatchHandler @ 00345a9c */\n    __cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::_M_construct<char*>\n              (&pVVar13->pattern,*__first,__first[1] + *__first,0);\n    piVar17 = __first + 8;\n    pVVar6 = pVVar13 + 1;\n    pVVar13->language = __first[6];\n    pVVar13->exact_match = SUB41(__first[7],0);\n    pVVar13->was_matched_by_symbol = *(bool *)((int)__first + 0x1d);\n    __first = piVar17;\n    pVVar13 = pVVar6;\n  }" { (expression_statement "(pVVar13->pattern)._M_dataplus._M_p = (pointer)&(pVVar13->pattern).field_2;" (assignment_expression "(pVVar13->pattern)._M_dataplus._M_p = (pointer)&(pVVar13->pattern).field_2" (field_expression "(pVVar13->pattern)._M_dataplus._M_p" (field_expression "(pVVar13->pattern)._M_dataplus" (parenthesized_expression "(pVVar13->pattern)" ( (field_expression "pVVar13->pattern" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "(pointer)&(pVVar13->pattern).field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(pVVar13->pattern).field_2" (parenthesized_expression "(pVVar13->pattern)" ( (field_expression "pVVar13->pattern" identifier -> field_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              (&pVVar13->pattern,*__first,__first[1] + *__first,0);" (binary_expression "allocator<char>_>::_M_construct<char*>\n              (&pVVar13->pattern,*__first,__first[1] + *__first,0)" (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 "(&pVVar13->pattern,*__first,__first[1] + *__first,0)" ( (comma_expression "&pVVar13->pattern,*__first,__first[1] + *__first,0" (pointer_expression "&pVVar13->pattern" & (field_expression "pVVar13->pattern" identifier -> field_identifier)) , (comma_expression "*__first,__first[1] + *__first,0" (pointer_expression "*__first" * identifier) , (comma_expression "__first[1] + *__first,0" (binary_expression "__first[1] + *__first" (subscript_expression "__first[1]" identifier [ number_literal ]) + (pointer_expression "*__first" * identifier)) , number_literal))) ))) ;) (expression_statement "piVar17 = __first + 8;" (assignment_expression "piVar17 = __first + 8" identifier = (binary_expression "__first + 8" identifier + number_literal)) ;) (expression_statement "pVVar6 = pVVar13 + 1;" (assignment_expression "pVVar6 = pVVar13 + 1" identifier = (binary_expression "pVVar13 + 1" identifier + number_literal)) ;) (expression_statement "pVVar13->language = __first[6];" (assignment_expression "pVVar13->language = __first[6]" (field_expression "pVVar13->language" identifier -> field_identifier) = (subscript_expression "__first[6]" identifier [ number_literal ])) ;) (expression_statement "pVVar13->exact_match = SUB41(__first[7],0);" (assignment_expression "pVVar13->exact_match = SUB41(__first[7],0)" (field_expression "pVVar13->exact_match" identifier -> field_identifier) = (call_expression "SUB41(__first[7],0)" identifier (argument_list "(__first[7],0)" ( (subscript_expression "__first[7]" identifier [ number_literal ]) , number_literal )))) ;) (expression_statement "pVVar13->was_matched_by_symbol = *(bool *)((int)__first + 0x1d);" (assignment_expression "pVVar13->was_matched_by_symbol = *(bool *)((int)__first + 0x1d)" (field_expression "pVVar13->was_matched_by_symbol" identifier -> field_identifier) = (pointer_expression "*(bool *)((int)__first + 0x1d)" * (cast_expression "(bool *)((int)__first + 0x1d)" ( (type_descriptor "bool *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__first + 0x1d)" ( (binary_expression "(int)__first + 0x1d" (cast_expression "(int)__first" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "__first = piVar17;" (assignment_expression "__first = piVar17" identifier = identifier) ;) (expression_statement "pVVar13 = pVVar6;" (assignment_expression "pVVar13 = pVVar6" identifier = identifier) ;) }) while (parenthesized_expression "(__last != piVar17)" ( (binary_expression "__last != piVar17" identifier != identifier) )) ;) (expression_statement "pVVar13 = (this->\n            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)\n            ._M_impl._M_finish;" (assignment_expression "pVVar13 = (this->\n            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)\n            ._M_impl._M_finish" identifier = (field_expression "(this->\n            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)\n            ._M_impl._M_finish" (field_expression "(this->\n            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)\n            ._M_impl" (parenthesized_expression "(this->\n            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)" ( (ERROR "this->\n            super__Vector_base<gold::Version_expression,_std::allocator<gold::" (comma_expression "this->\n            super__Vector_base<gold::Version_expression,_std" (binary_expression "this->\n            super__Vector_base<gold" (field_expression "this->\n            super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Version_expression" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Version_expression>_>" (binary_expression "Version_expression>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (__position != pVVar13) {\n    paVar8 = &(__position->pattern).field_2;\n    pVVar14 = pVVar6;\n    do {\n      puVar3 = *(undefined4 **)(paVar8->_M_local_buf + -8);\n      ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        *)&pVVar14->pattern)->_M_allocated_capacity = (size_type)((int)&pVVar14->pattern + 8);\n      if (paVar8 == (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)puVar3) {\n        *(size_type *)((int)&pVVar14->pattern + 8) = paVar8->_M_allocated_capacity;\n        *(undefined4 *)((int)&pVVar14->pattern + 0xc) = *(undefined4 *)(paVar8->_M_local_buf + 4);\n        *(undefined4 *)\n         ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)&pVVar14->pattern + 1) = *(undefined4 *)(paVar8->_M_local_buf + 8);\n        *(undefined4 *)((int)&pVVar14->pattern + 0x14) = *(undefined4 *)(paVar8->_M_local_buf + 0xc)\n        ;\n      }\n      else {\n        ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n          *)&pVVar14->pattern)->_M_allocated_capacity = (size_type)puVar3;\n        *(size_type *)((int)&pVVar14->pattern + 8) = paVar8->_M_allocated_capacity;\n      }\n      *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar8->_M_local_buf + -8) = paVar8;\n      paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(paVar8->_M_local_buf + 0x20);\n      *(char *)((int)paVar8 + -0xffffffff00000004) = '\0';\n      *(char *)((int)paVar8 + -0xffffffff00000003) = '\0';\n      *(char *)((int)paVar8 + -0xffffffff00000002) = '\0';\n      *(char *)((int)paVar8 + -0xffffffff00000001) = '\0';\n      *(undefined4 *)((int)&pVVar14->pattern + 4) = *(undefined4 *)(paVar8->_M_local_buf + -4);\n      paVar8->_M_local_buf[0] = '\0';\n      pVVar14->language = *(Language *)(paVar8->_M_local_buf + 0x10);\n      pVVar14->exact_match = (bool)paVar8->_M_local_buf[0x14];\n      pVVar14->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15];\n      paVar8 = paVar7;\n      pVVar14 = pVVar14 + 1;\n    } while (&(pVVar13->pattern).field_2 != paVar7);\n    pVVar6 = pVVar6 + ((uint)((int)pVVar13 + (-0x20 - (int)__position)) >> 5) + 1;\n    pVVar13 = (this->\n              super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n              )._M_impl._M_finish;\n  }" if (parenthesized_expression "(__position != pVVar13)" ( (binary_expression "__position != pVVar13" identifier != identifier) )) (compound_statement "{\n    paVar8 = &(__position->pattern).field_2;\n    pVVar14 = pVVar6;\n    do {\n      puVar3 = *(undefined4 **)(paVar8->_M_local_buf + -8);\n      ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        *)&pVVar14->pattern)->_M_allocated_capacity = (size_type)((int)&pVVar14->pattern + 8);\n      if (paVar8 == (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)puVar3) {\n        *(size_type *)((int)&pVVar14->pattern + 8) = paVar8->_M_allocated_capacity;\n        *(undefined4 *)((int)&pVVar14->pattern + 0xc) = *(undefined4 *)(paVar8->_M_local_buf + 4);\n        *(undefined4 *)\n         ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)&pVVar14->pattern + 1) = *(undefined4 *)(paVar8->_M_local_buf + 8);\n        *(undefined4 *)((int)&pVVar14->pattern + 0x14) = *(undefined4 *)(paVar8->_M_local_buf + 0xc)\n        ;\n      }\n      else {\n        ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n          *)&pVVar14->pattern)->_M_allocated_capacity = (size_type)puVar3;\n        *(size_type *)((int)&pVVar14->pattern + 8) = paVar8->_M_allocated_capacity;\n      }\n      *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar8->_M_local_buf + -8) = paVar8;\n      paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(paVar8->_M_local_buf + 0x20);\n      *(char *)((int)paVar8 + -0xffffffff00000004) = '\0';\n      *(char *)((int)paVar8 + -0xffffffff00000003) = '\0';\n      *(char *)((int)paVar8 + -0xffffffff00000002) = '\0';\n      *(char *)((int)paVar8 + -0xffffffff00000001) = '\0';\n      *(undefined4 *)((int)&pVVar14->pattern + 4) = *(undefined4 *)(paVar8->_M_local_buf + -4);\n      paVar8->_M_local_buf[0] = '\0';\n      pVVar14->language = *(Language *)(paVar8->_M_local_buf + 0x10);\n      pVVar14->exact_match = (bool)paVar8->_M_local_buf[0x14];\n      pVVar14->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15];\n      paVar8 = paVar7;\n      pVVar14 = pVVar14 + 1;\n    } while (&(pVVar13->pattern).field_2 != paVar7);\n    pVVar6 = pVVar6 + ((uint)((int)pVVar13 + (-0x20 - (int)__position)) >> 5) + 1;\n    pVVar13 = (this->\n              super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n              )._M_impl._M_finish;\n  }" { (expression_statement "paVar8 = &(__position->pattern).field_2;" (assignment_expression "paVar8 = &(__position->pattern).field_2" identifier = (pointer_expression "&(__position->pattern).field_2" & (field_expression "(__position->pattern).field_2" (parenthesized_expression "(__position->pattern)" ( (field_expression "__position->pattern" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "pVVar14 = pVVar6;" (assignment_expression "pVVar14 = pVVar6" identifier = identifier) ;) (do_statement "do {\n      puVar3 = *(undefined4 **)(paVar8->_M_local_buf + -8);\n      ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        *)&pVVar14->pattern)->_M_allocated_capacity = (size_type)((int)&pVVar14->pattern + 8);\n      if (paVar8 == (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)puVar3) {\n        *(size_type *)((int)&pVVar14->pattern + 8) = paVar8->_M_allocated_capacity;\n        *(undefined4 *)((int)&pVVar14->pattern + 0xc) = *(undefined4 *)(paVar8->_M_local_buf + 4);\n        *(undefined4 *)\n         ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)&pVVar14->pattern + 1) = *(undefined4 *)(paVar8->_M_local_buf + 8);\n        *(undefined4 *)((int)&pVVar14->pattern + 0x14) = *(undefined4 *)(paVar8->_M_local_buf + 0xc)\n        ;\n      }\n      else {\n        ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n          *)&pVVar14->pattern)->_M_allocated_capacity = (size_type)puVar3;\n        *(size_type *)((int)&pVVar14->pattern + 8) = paVar8->_M_allocated_capacity;\n      }\n      *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar8->_M_local_buf + -8) = paVar8;\n      paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(paVar8->_M_local_buf + 0x20);\n      *(char *)((int)paVar8 + -0xffffffff00000004) = '\0';\n      *(char *)((int)paVar8 + -0xffffffff00000003) = '\0';\n      *(char *)((int)paVar8 + -0xffffffff00000002) = '\0';\n      *(char *)((int)paVar8 + -0xffffffff00000001) = '\0';\n      *(undefined4 *)((int)&pVVar14->pattern + 4) = *(undefined4 *)(paVar8->_M_local_buf + -4);\n      paVar8->_M_local_buf[0] = '\0';\n      pVVar14->language = *(Language *)(paVar8->_M_local_buf + 0x10);\n      pVVar14->exact_match = (bool)paVar8->_M_local_buf[0x14];\n      pVVar14->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15];\n      paVar8 = paVar7;\n      pVVar14 = pVVar14 + 1;\n    } while (&(pVVar13->pattern).field_2 != paVar7);" do (compound_statement "{\n      puVar3 = *(undefined4 **)(paVar8->_M_local_buf + -8);\n      ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        *)&pVVar14->pattern)->_M_allocated_capacity = (size_type)((int)&pVVar14->pattern + 8);\n      if (paVar8 == (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)puVar3) {\n        *(size_type *)((int)&pVVar14->pattern + 8) = paVar8->_M_allocated_capacity;\n        *(undefined4 *)((int)&pVVar14->pattern + 0xc) = *(undefined4 *)(paVar8->_M_local_buf + 4);\n        *(undefined4 *)\n         ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)&pVVar14->pattern + 1) = *(undefined4 *)(paVar8->_M_local_buf + 8);\n        *(undefined4 *)((int)&pVVar14->pattern + 0x14) = *(undefined4 *)(paVar8->_M_local_buf + 0xc)\n        ;\n      }\n      else {\n        ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n          *)&pVVar14->pattern)->_M_allocated_capacity = (size_type)puVar3;\n        *(size_type *)((int)&pVVar14->pattern + 8) = paVar8->_M_allocated_capacity;\n      }\n      *(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar8->_M_local_buf + -8) = paVar8;\n      paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(paVar8->_M_local_buf + 0x20);\n      *(char *)((int)paVar8 + -0xffffffff00000004) = '\0';\n      *(char *)((int)paVar8 + -0xffffffff00000003) = '\0';\n      *(char *)((int)paVar8 + -0xffffffff00000002) = '\0';\n      *(char *)((int)paVar8 + -0xffffffff00000001) = '\0';\n      *(undefined4 *)((int)&pVVar14->pattern + 4) = *(undefined4 *)(paVar8->_M_local_buf + -4);\n      paVar8->_M_local_buf[0] = '\0';\n      pVVar14->language = *(Language *)(paVar8->_M_local_buf + 0x10);\n      pVVar14->exact_match = (bool)paVar8->_M_local_buf[0x14];\n      pVVar14->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15];\n      paVar8 = paVar7;\n      pVVar14 = pVVar14 + 1;\n    }" { (expression_statement "puVar3 = *(undefined4 **)(paVar8->_M_local_buf + -8);" (assignment_expression "puVar3 = *(undefined4 **)(paVar8->_M_local_buf + -8)" identifier = (pointer_expression "*(undefined4 **)(paVar8->_M_local_buf + -8)" * (cast_expression "(undefined4 **)(paVar8->_M_local_buf + -8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(paVar8->_M_local_buf + -8)" ( (binary_expression "paVar8->_M_local_buf + -8" (field_expression "paVar8->_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        *)&pVVar14->pattern)->_M_allocated_capacity = (size_type)((int)&pVVar14->pattern + 8);" (assignment_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        *)&pVVar14->pattern)->_M_allocated_capacity = (size_type)((int)&pVVar14->pattern + 8)" (field_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        *)&pVVar14->pattern)->_M_allocated_capacity" (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        *)&pVVar14->pattern)" ( (binary_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        *)&pVVar14->pattern" (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 "*" *) )) & (field_expression "pVVar14->pattern" identifier -> field_identifier)) )) -> field_identifier) = (call_expression "(size_type)((int)&pVVar14->pattern + 8)" (parenthesized_expression "(size_type)" ( identifier )) (argument_list "((int)&pVVar14->pattern + 8)" ( (binary_expression "(int)&pVVar14->pattern + 8" (cast_expression "(int)&pVVar14->pattern" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pVVar14->pattern" & (field_expression "pVVar14->pattern" identifier -> field_identifier))) + number_literal) )))) ;) (if_statement "if (paVar8 == (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)puVar3) {\n        *(size_type *)((int)&pVVar14->pattern + 8) = paVar8->_M_allocated_capacity;\n        *(undefined4 *)((int)&pVVar14->pattern + 0xc) = *(undefined4 *)(paVar8->_M_local_buf + 4);\n        *(undefined4 *)\n         ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)&pVVar14->pattern + 1) = *(undefined4 *)(paVar8->_M_local_buf + 8);\n        *(undefined4 *)((int)&pVVar14->pattern + 0x14) = *(undefined4 *)(paVar8->_M_local_buf + 0xc)\n        ;\n      }\n      else {\n        ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n          *)&pVVar14->pattern)->_M_allocated_capacity = (size_type)puVar3;\n        *(size_type *)((int)&pVVar14->pattern + 8) = paVar8->_M_allocated_capacity;\n      }" if (parenthesized_expression "(paVar8 == (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)puVar3)" ( (binary_expression "paVar8 == (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)puVar3)" identifier == (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)puVar3)" ( (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                     *)puVar3" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n                     *)puVar3" identifier * (ERROR ")" )) identifier)) ))) )) (compound_statement "{\n        *(size_type *)((int)&pVVar14->pattern + 8) = paVar8->_M_allocated_capacity;\n        *(undefined4 *)((int)&pVVar14->pattern + 0xc) = *(undefined4 *)(paVar8->_M_local_buf + 4);\n        *(undefined4 *)\n         ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)&pVVar14->pattern + 1) = *(undefined4 *)(paVar8->_M_local_buf + 8);\n        *(undefined4 *)((int)&pVVar14->pattern + 0x14) = *(undefined4 *)(paVar8->_M_local_buf + 0xc)\n        ;\n      }" { (expression_statement "*(size_type *)((int)&pVVar14->pattern + 8) = paVar8->_M_allocated_capacity;" (assignment_expression "*(size_type *)((int)&pVVar14->pattern + 8) = paVar8->_M_allocated_capacity" (pointer_expression "*(size_type *)((int)&pVVar14->pattern + 8)" * (cast_expression "(size_type *)((int)&pVVar14->pattern + 8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pVVar14->pattern + 8)" ( (binary_expression "(int)&pVVar14->pattern + 8" (cast_expression "(int)&pVVar14->pattern" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pVVar14->pattern" & (field_expression "pVVar14->pattern" identifier -> field_identifier))) + number_literal) )))) = (field_expression "paVar8->_M_allocated_capacity" identifier -> field_identifier)) ;) (expression_statement "*(undefined4 *)((int)&pVVar14->pattern + 0xc) = *(undefined4 *)(paVar8->_M_local_buf + 4);" (assignment_expression "*(undefined4 *)((int)&pVVar14->pattern + 0xc) = *(undefined4 *)(paVar8->_M_local_buf + 4)" (pointer_expression "*(undefined4 *)((int)&pVVar14->pattern + 0xc)" * (cast_expression "(undefined4 *)((int)&pVVar14->pattern + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pVVar14->pattern + 0xc)" ( (binary_expression "(int)&pVVar14->pattern + 0xc" (cast_expression "(int)&pVVar14->pattern" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pVVar14->pattern" & (field_expression "pVVar14->pattern" identifier -> field_identifier))) + number_literal) )))) = (pointer_expression "*(undefined4 *)(paVar8->_M_local_buf + 4)" * (cast_expression "(undefined4 *)(paVar8->_M_local_buf + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar8->_M_local_buf + 4)" ( (binary_expression "paVar8->_M_local_buf + 4" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)\n         ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)&pVVar14->pattern + 1) = *(undefined4 *)(paVar8->_M_local_buf + 8);" (assignment_expression "*(undefined4 *)\n         ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)&pVVar14->pattern + 1) = *(undefined4 *)(paVar8->_M_local_buf + 8)" (pointer_expression "*(undefined4 *)\n         ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)&pVVar14->pattern + 1)" * (cast_expression "(undefined4 *)\n         ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)&pVVar14->pattern + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)&pVVar14->pattern + 1)" ( (binary_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)&pVVar14->pattern + 1" (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 "*" *) )) & (binary_expression "pVVar14->pattern + 1" (field_expression "pVVar14->pattern" identifier -> field_identifier) + number_literal)) )))) = (pointer_expression "*(undefined4 *)(paVar8->_M_local_buf + 8)" * (cast_expression "(undefined4 *)(paVar8->_M_local_buf + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar8->_M_local_buf + 8)" ( (binary_expression "paVar8->_M_local_buf + 8" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)&pVVar14->pattern + 0x14) = *(undefined4 *)(paVar8->_M_local_buf + 0xc)\n        ;" (assignment_expression "*(undefined4 *)((int)&pVVar14->pattern + 0x14) = *(undefined4 *)(paVar8->_M_local_buf + 0xc)" (pointer_expression "*(undefined4 *)((int)&pVVar14->pattern + 0x14)" * (cast_expression "(undefined4 *)((int)&pVVar14->pattern + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pVVar14->pattern + 0x14)" ( (binary_expression "(int)&pVVar14->pattern + 0x14" (cast_expression "(int)&pVVar14->pattern" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pVVar14->pattern" & (field_expression "pVVar14->pattern" identifier -> field_identifier))) + number_literal) )))) = (pointer_expression "*(undefined4 *)(paVar8->_M_local_buf + 0xc)" * (cast_expression "(undefined4 *)(paVar8->_M_local_buf + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar8->_M_local_buf + 0xc)" ( (binary_expression "paVar8->_M_local_buf + 0xc" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) }) (else_clause "else {\n        ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n          *)&pVVar14->pattern)->_M_allocated_capacity = (size_type)puVar3;\n        *(size_type *)((int)&pVVar14->pattern + 8) = paVar8->_M_allocated_capacity;\n      }" else (compound_statement "{\n        ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n          *)&pVVar14->pattern)->_M_allocated_capacity = (size_type)puVar3;\n        *(size_type *)((int)&pVVar14->pattern + 8) = paVar8->_M_allocated_capacity;\n      }" { (expression_statement "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n          *)&pVVar14->pattern)->_M_allocated_capacity = (size_type)puVar3;" (assignment_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n          *)&pVVar14->pattern)->_M_allocated_capacity = (size_type)puVar3" (field_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n          *)&pVVar14->pattern)->_M_allocated_capacity" (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n          *)&pVVar14->pattern)" ( (binary_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n          *)&pVVar14->pattern" (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 "*" *) )) & (field_expression "pVVar14->pattern" identifier -> field_identifier)) )) -> field_identifier) = (cast_expression "(size_type)puVar3" ( (type_descriptor "size_type" type_identifier) ) identifier)) ;) (expression_statement "*(size_type *)((int)&pVVar14->pattern + 8) = paVar8->_M_allocated_capacity;" (assignment_expression "*(size_type *)((int)&pVVar14->pattern + 8) = paVar8->_M_allocated_capacity" (pointer_expression "*(size_type *)((int)&pVVar14->pattern + 8)" * (cast_expression "(size_type *)((int)&pVVar14->pattern + 8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pVVar14->pattern + 8)" ( (binary_expression "(int)&pVVar14->pattern + 8" (cast_expression "(int)&pVVar14->pattern" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pVVar14->pattern" & (field_expression "pVVar14->pattern" identifier -> field_identifier))) + number_literal) )))) = (field_expression "paVar8->_M_allocated_capacity" identifier -> field_identifier)) ;) }))) (expression_statement "*(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar8->_M_local_buf + -8) = paVar8;" (assignment_expression "*(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar8->_M_local_buf + -8) = paVar8" (pointer_expression "*(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar8->_M_local_buf + -8)" * (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n        **)(paVar8->_M_local_buf + -8)" (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 "(paVar8->_M_local_buf + -8)" ( (binary_expression "paVar8->_M_local_buf + -8" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(paVar8->_M_local_buf + 0x20);" (assignment_expression "paVar7 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                *)(paVar8->_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                *)(paVar8->_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 "(paVar8->_M_local_buf + 0x20)" ( (binary_expression "paVar8->_M_local_buf + 0x20" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) )))) ;) (expression_statement "*(char *)((int)paVar8 + -0xffffffff00000004) = '\0';" (assignment_expression "*(char *)((int)paVar8 + -0xffffffff00000004) = '\0'" (pointer_expression "*(char *)((int)paVar8 + -0xffffffff00000004)" * (cast_expression "(char *)((int)paVar8 + -0xffffffff00000004)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar8 + -0xffffffff00000004)" ( (binary_expression "(int)paVar8 + -0xffffffff00000004" (cast_expression "(int)paVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(char *)((int)paVar8 + -0xffffffff00000003) = '\0';" (assignment_expression "*(char *)((int)paVar8 + -0xffffffff00000003) = '\0'" (pointer_expression "*(char *)((int)paVar8 + -0xffffffff00000003)" * (cast_expression "(char *)((int)paVar8 + -0xffffffff00000003)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar8 + -0xffffffff00000003)" ( (binary_expression "(int)paVar8 + -0xffffffff00000003" (cast_expression "(int)paVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(char *)((int)paVar8 + -0xffffffff00000002) = '\0';" (assignment_expression "*(char *)((int)paVar8 + -0xffffffff00000002) = '\0'" (pointer_expression "*(char *)((int)paVar8 + -0xffffffff00000002)" * (cast_expression "(char *)((int)paVar8 + -0xffffffff00000002)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar8 + -0xffffffff00000002)" ( (binary_expression "(int)paVar8 + -0xffffffff00000002" (cast_expression "(int)paVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(char *)((int)paVar8 + -0xffffffff00000001) = '\0';" (assignment_expression "*(char *)((int)paVar8 + -0xffffffff00000001) = '\0'" (pointer_expression "*(char *)((int)paVar8 + -0xffffffff00000001)" * (cast_expression "(char *)((int)paVar8 + -0xffffffff00000001)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)paVar8 + -0xffffffff00000001)" ( (binary_expression "(int)paVar8 + -0xffffffff00000001" (cast_expression "(int)paVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(undefined4 *)((int)&pVVar14->pattern + 4) = *(undefined4 *)(paVar8->_M_local_buf + -4);" (assignment_expression "*(undefined4 *)((int)&pVVar14->pattern + 4) = *(undefined4 *)(paVar8->_M_local_buf + -4)" (pointer_expression "*(undefined4 *)((int)&pVVar14->pattern + 4)" * (cast_expression "(undefined4 *)((int)&pVVar14->pattern + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pVVar14->pattern + 4)" ( (binary_expression "(int)&pVVar14->pattern + 4" (cast_expression "(int)&pVVar14->pattern" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pVVar14->pattern" & (field_expression "pVVar14->pattern" identifier -> field_identifier))) + number_literal) )))) = (pointer_expression "*(undefined4 *)(paVar8->_M_local_buf + -4)" * (cast_expression "(undefined4 *)(paVar8->_M_local_buf + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar8->_M_local_buf + -4)" ( (binary_expression "paVar8->_M_local_buf + -4" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "paVar8->_M_local_buf[0] = '\0';" (assignment_expression "paVar8->_M_local_buf[0] = '\0'" (subscript_expression "paVar8->_M_local_buf[0]" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pVVar14->language = *(Language *)(paVar8->_M_local_buf + 0x10);" (assignment_expression "pVVar14->language = *(Language *)(paVar8->_M_local_buf + 0x10)" (field_expression "pVVar14->language" identifier -> field_identifier) = (pointer_expression "*(Language *)(paVar8->_M_local_buf + 0x10)" * (cast_expression "(Language *)(paVar8->_M_local_buf + 0x10)" ( (type_descriptor "Language *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(paVar8->_M_local_buf + 0x10)" ( (binary_expression "paVar8->_M_local_buf + 0x10" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "pVVar14->exact_match = (bool)paVar8->_M_local_buf[0x14];" (assignment_expression "pVVar14->exact_match = (bool)paVar8->_M_local_buf[0x14]" (field_expression "pVVar14->exact_match" identifier -> field_identifier) = (cast_expression "(bool)paVar8->_M_local_buf[0x14]" ( (type_descriptor "bool" primitive_type) ) (subscript_expression "paVar8->_M_local_buf[0x14]" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) [ number_literal ]))) ;) (expression_statement "pVVar14->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15];" (assignment_expression "pVVar14->was_matched_by_symbol = (bool)paVar8->_M_local_buf[0x15]" (field_expression "pVVar14->was_matched_by_symbol" identifier -> field_identifier) = (cast_expression "(bool)paVar8->_M_local_buf[0x15]" ( (type_descriptor "bool" primitive_type) ) (subscript_expression "paVar8->_M_local_buf[0x15]" (field_expression "paVar8->_M_local_buf" identifier -> field_identifier) [ number_literal ]))) ;) (expression_statement "paVar8 = paVar7;" (assignment_expression "paVar8 = paVar7" identifier = identifier) ;) (expression_statement "pVVar14 = pVVar14 + 1;" (assignment_expression "pVVar14 = pVVar14 + 1" identifier = (binary_expression "pVVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(&(pVVar13->pattern).field_2 != paVar7)" ( (binary_expression "&(pVVar13->pattern).field_2 != paVar7" (pointer_expression "&(pVVar13->pattern).field_2" & (field_expression "(pVVar13->pattern).field_2" (parenthesized_expression "(pVVar13->pattern)" ( (field_expression "pVVar13->pattern" identifier -> field_identifier) )) . field_identifier)) != identifier) )) ;) (expression_statement "pVVar6 = pVVar6 + ((uint)((int)pVVar13 + (-0x20 - (int)__position)) >> 5) + 1;" (assignment_expression "pVVar6 = pVVar6 + ((uint)((int)pVVar13 + (-0x20 - (int)__position)) >> 5) + 1" identifier = (binary_expression "pVVar6 + ((uint)((int)pVVar13 + (-0x20 - (int)__position)) >> 5) + 1" (binary_expression "pVVar6 + ((uint)((int)pVVar13 + (-0x20 - (int)__position)) >> 5)" identifier + (parenthesized_expression "((uint)((int)pVVar13 + (-0x20 - (int)__position)) >> 5)" ( (binary_expression "(uint)((int)pVVar13 + (-0x20 - (int)__position)) >> 5" (call_expression "(uint)((int)pVVar13 + (-0x20 - (int)__position))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pVVar13 + (-0x20 - (int)__position))" ( (binary_expression "(int)pVVar13 + (-0x20 - (int)__position)" (cast_expression "(int)pVVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-0x20 - (int)__position)" ( (binary_expression "-0x20 - (int)__position" number_literal - (cast_expression "(int)__position" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))) >> number_literal) ))) + number_literal)) ;) (expression_statement "pVVar13 = (this->\n              super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n              )._M_impl._M_finish;" (assignment_expression "pVVar13 = (this->\n              super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n              )._M_impl._M_finish" identifier = (field_expression "(this->\n              super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n              )._M_impl._M_finish" (field_expression "(this->\n              super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n              )._M_impl" (parenthesized_expression "(this->\n              super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n              )" ( (ERROR "this->\n              super__Vector_base<gold::Version_expression,_std::allocator<gold::" (comma_expression "this->\n              super__Vector_base<gold::Version_expression,_std" (binary_expression "this->\n              super__Vector_base<gold" (field_expression "this->\n              super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Version_expression" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Version_expression>_>" (binary_expression "Version_expression>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) })) (expression_statement "pVVar14 = (this->\n            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)\n            ._M_impl._M_start;" (assignment_expression "pVVar14 = (this->\n            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)\n            ._M_impl._M_start" identifier = (field_expression "(this->\n            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)\n            ._M_impl._M_start" (field_expression "(this->\n            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)\n            ._M_impl" (parenthesized_expression "(this->\n            super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)" ( (ERROR "this->\n            super__Vector_base<gold::Version_expression,_std::allocator<gold::" (comma_expression "this->\n            super__Vector_base<gold::Version_expression,_std" (binary_expression "this->\n            super__Vector_base<gold" (field_expression "this->\n            super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Version_expression" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Version_expression>_>" (binary_expression "Version_expression>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (pVVar14 != pVVar13) {\n    do {\n      pcVar2 = (pVVar14->pattern)._M_dataplus._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar2 != &(pVVar14->pattern).field_2) {\n        operator_delete(pcVar2);\n      }\n      pVVar14 = pVVar14 + 1;\n    } while (pVVar14 != pVVar13);\n    pVVar13 = (this->\n              super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n              )._M_impl._M_start;\n  }" if (parenthesized_expression "(pVVar14 != pVVar13)" ( (binary_expression "pVVar14 != pVVar13" identifier != identifier) )) (compound_statement "{\n    do {\n      pcVar2 = (pVVar14->pattern)._M_dataplus._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar2 != &(pVVar14->pattern).field_2) {\n        operator_delete(pcVar2);\n      }\n      pVVar14 = pVVar14 + 1;\n    } while (pVVar14 != pVVar13);\n    pVVar13 = (this->\n              super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n              )._M_impl._M_start;\n  }" { (do_statement "do {\n      pcVar2 = (pVVar14->pattern)._M_dataplus._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar2 != &(pVVar14->pattern).field_2) {\n        operator_delete(pcVar2);\n      }\n      pVVar14 = pVVar14 + 1;\n    } while (pVVar14 != pVVar13);" do (compound_statement "{\n      pcVar2 = (pVVar14->pattern)._M_dataplus._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar2 != &(pVVar14->pattern).field_2) {\n        operator_delete(pcVar2);\n      }\n      pVVar14 = pVVar14 + 1;\n    }" { (expression_statement "pcVar2 = (pVVar14->pattern)._M_dataplus._M_p;" (assignment_expression "pcVar2 = (pVVar14->pattern)._M_dataplus._M_p" identifier = (field_expression "(pVVar14->pattern)._M_dataplus._M_p" (field_expression "(pVVar14->pattern)._M_dataplus" (parenthesized_expression "(pVVar14->pattern)" ( (field_expression "pVVar14->pattern" identifier -> field_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           *)pcVar2 != &(pVVar14->pattern).field_2) {\n        operator_delete(pcVar2);\n      }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar2 != &(pVVar14->pattern).field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar2 != &(pVVar14->pattern).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           *)pcVar2 != &(pVVar14->pattern).field_2" (binary_expression "allocator<char>_>_9\n           *)pcVar2" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n           *)pcVar2" identifier * (ERROR ")" )) identifier)) != (pointer_expression "&(pVVar14->pattern).field_2" & (field_expression "(pVVar14->pattern).field_2" (parenthesized_expression "(pVVar14->pattern)" ( (field_expression "pVVar14->pattern" identifier -> field_identifier) )) . field_identifier))) )) )) (compound_statement "{\n        operator_delete(pcVar2);\n      }" { (expression_statement "operator_delete(pcVar2);" (call_expression "operator_delete(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier ))) ;) })) (expression_statement "pVVar14 = pVVar14 + 1;" (assignment_expression "pVVar14 = pVVar14 + 1" identifier = (binary_expression "pVVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pVVar14 != pVVar13)" ( (binary_expression "pVVar14 != pVVar13" identifier != identifier) )) ;) (expression_statement "pVVar13 = (this->\n              super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n              )._M_impl._M_start;" (assignment_expression "pVVar13 = (this->\n              super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n              )._M_impl._M_start" identifier = (field_expression "(this->\n              super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n              )._M_impl._M_start" (field_expression "(this->\n              super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n              )._M_impl" (parenthesized_expression "(this->\n              super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>\n              )" ( (ERROR "this->\n              super__Vector_base<gold::Version_expression,_std::allocator<gold::" (comma_expression "this->\n              super__Vector_base<gold::Version_expression,_std" (binary_expression "this->\n              super__Vector_base<gold" (field_expression "this->\n              super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Version_expression" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Version_expression>_>" (binary_expression "Version_expression>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) })) (if_statement "if (pVVar13 != (pointer)0x0) {\n    operator_delete(pVVar13);\n  }" if (parenthesized_expression "(pVVar13 != (pointer)0x0)" ( (binary_expression "pVVar13 != (pointer)0x0" identifier != (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) )) (compound_statement "{\n    operator_delete(pVVar13);\n  }" { (expression_statement "operator_delete(pVVar13);" (call_expression "operator_delete(pVVar13)" identifier (argument_list "(pVVar13)" ( identifier ))) ;) })) (expression_statement "(this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).\n  _M_impl._M_finish = pVVar6;" (assignment_expression "(this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).\n  _M_impl._M_finish = pVVar6" (field_expression "(this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).\n  _M_impl._M_finish" (field_expression "(this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).\n  _M_impl" (parenthesized_expression "(this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)" ( (ERROR "this->super__Vector_base<gold::Version_expression,_std::allocator<gold::" (comma_expression "this->super__Vector_base<gold::Version_expression,_std" (binary_expression "this->super__Vector_base<gold" (field_expression "this->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Version_expression" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Version_expression>_>" (binary_expression "Version_expression>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).\n  _M_impl._M_start = local_28;" (assignment_expression "(this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).\n  _M_impl._M_start = local_28" (field_expression "(this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).\n  _M_impl._M_start" (field_expression "(this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).\n  _M_impl" (parenthesized_expression "(this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)" ( (ERROR "this->super__Vector_base<gold::Version_expression,_std::allocator<gold::" (comma_expression "this->super__Vector_base<gold::Version_expression,_std" (binary_expression "this->super__Vector_base<gold" (field_expression "this->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Version_expression" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Version_expression>_>" (binary_expression "Version_expression>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).\n  _M_impl._M_end_of_storage = local_28 + local_2c;" (assignment_expression "(this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).\n  _M_impl._M_end_of_storage = local_28 + local_2c" (field_expression "(this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).\n  _M_impl._M_end_of_storage" (field_expression "(this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>).\n  _M_impl" (parenthesized_expression "(this->super__Vector_base<gold::Version_expression,_std::allocator<gold::Version_expression>_>)" ( (ERROR "this->super__Vector_base<gold::Version_expression,_std::allocator<gold::" (comma_expression "this->super__Vector_base<gold::Version_expression,_std" (binary_expression "this->super__Vector_base<gold" (field_expression "this->super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Version_expression" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Version_expression>_>" (binary_expression "Version_expression>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier) = (binary_expression "local_28 + local_2c" identifier + identifier)) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_00345450(undefined4 *param_1,undefined4 *param_2,int *param_3,int *param_4)\n\n{\n  undefined4 uVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  size_t __n;\n  int iVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  uint uVar10;\n  int *piVar11;\n  int *piVar12;\n  int iVar13;\n  uint local_2c;\n  undefined4 *local_28;\n  undefined4 *local_20;\n  \n  if (param_3 == param_4) {\n    return;\n  }\n  puVar2 = (undefined4 *)param_1[1];\n  iVar6 = (int)param_4 - (int)param_3;\n  uVar7 = iVar6 >> 5;\n  if (uVar7 <= (uint)(param_1[2] - (int)puVar2 >> 5)) {\n    iVar9 = (int)puVar2 - (int)param_2;\n    uVar10 = iVar9 >> 5;\n    if (uVar10 <= uVar7) {\n      piVar11 = (int *)((int)param_3 + iVar9);\n      puVar5 = puVar2;\n      local_20 = puVar2;\n      if (param_4 != piVar11) {\n        do {\n          *local_20 = local_20 + 2;\n                    \n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      puVar5 = puVar5 + (uVar7 - uVar10) * 8;\n      param_1[1] = puVar5;\n      puVar4 = param_2 + 2;\n      if (puVar2 != param_2) {\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = (int)puVar5 + iVar9;\n      local_20 = (undefined4 *)uVar10;\n      if (iVar9 < 1) {\n        return;\n      }\n      do {\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      } while (local_20 != (undefined4 *)0x0);\n      return;\n    }\n    puVar5 = (undefined4 *)((int)puVar2 + (8 - iVar6));\n    puVar4 = puVar2;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar5[-2] == puVar5) {\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }\n      puVar4[1] = puVar5[-1];\n      puVar5[-2] = puVar5;\n      puVar8 = puVar5 + 8;\n      puVar5[-1] = 0;\n      *(undefined1 *)puVar5 = 0;\n      puVar4[6] = puVar5[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15);\n      puVar5 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar2 + 2 != puVar8);\n    param_1[1] = param_1[1] + iVar6;\n    local_20 = (undefined4 *)((int)puVar2 + (-0x18 - iVar6));\n    iVar9 = (int)puVar2 + (-(int)param_2 - iVar6);\n    iVar13 = iVar9 >> 5;\n    puVar2 = puVar2 + -6;\n    if (0 < iVar9) {\n      do {\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      } while (iVar13 != 0);\n    }\n    local_20 = (undefined4 *)uVar7;\n    if (iVar6 < 1) {\n      return;\n    }\n    do {\n      FUN_003b5c90(param_2,param_3);\n      param_2[6] = param_3[6];\n      *(char *)(param_2 + 7) = (char)param_3[7];\n      *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n      local_20 = (undefined4 *)((int)local_20 - 1);\n      param_3 = param_3 + 8;\n      param_2 = param_2 + 8;\n    } while (local_20 != (undefined4 *)0x0);\n    return;\n  }\n  puVar5 = (undefined4 *)*param_1;\n  uVar10 = (int)puVar2 - (int)puVar5 >> 5;\n  if (0x7ffffff - uVar10 < uVar7) {\n                    \n    FUN_003f3a70("vector::_M_range_insert");\n  }\n  if (uVar7 < uVar10) {\n    uVar7 = uVar10;\n  }\n  local_2c = uVar10 + uVar7;\n  if ((CARRY4(uVar10,uVar7)) || (0x7ffffff < local_2c)) {\n    iVar6 = -0x20;\n    local_2c = 0x7ffffff;\n  }\n  else {\n    local_28 = (undefined4 *)0x0;\n    if (local_2c == 0) goto LAB_00345692;\n    iVar6 = local_2c * 0x20;\n  }\n  local_28 = (undefined4 *)FUN_003ac4d0(iVar6);\n  puVar5 = (undefined4 *)*param_1;\nLAB_00345692:\n  puVar2 = local_28;\n  if (param_2 != puVar5) {\n    puVar2 = puVar5 + 2;\n    puVar4 = local_28;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar2[-2] == puVar2) {\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }\n      puVar4[1] = puVar2[-1];\n      puVar2[-2] = puVar2;\n      puVar8 = puVar2 + 8;\n      puVar2[-1] = 0;\n      *(undefined1 *)puVar2 = 0;\n      puVar4[6] = puVar2[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15);\n      puVar2 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar8 != param_2 + 2);\n    puVar2 = local_28 + (((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8;\n  }\n  do {\n    *puVar2 = puVar2 + 2;\n                    \n    FUN_0014fca0(puVar2,*param_3,param_3[1] + *param_3,0);\n    piVar11 = param_3 + 8;\n    puVar5 = puVar2 + 8;\n    puVar2[6] = param_3[6];\n    *(char *)(puVar2 + 7) = (char)param_3[7];\n    *(undefined1 *)((int)puVar2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n    param_3 = piVar11;\n    puVar2 = puVar5;\n  } while (param_4 != piVar11);\n  puVar2 = (undefined4 *)param_1[1];\n  if (param_2 != puVar2) {\n    puVar4 = param_2 + 2;\n    puVar8 = puVar5;\n    do {\n      puVar3 = (undefined4 *)puVar4[-2];\n      *puVar8 = puVar8 + 2;\n      if (puVar4 == puVar3) {\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }\n      else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }\n      uVar1 = puVar4[-1];\n      puVar4[-2] = puVar4;\n      puVar3 = puVar4 + 8;\n      puVar4[-1] = 0;\n      puVar8[1] = uVar1;\n      *(undefined1 *)puVar4 = 0;\n      puVar8[6] = puVar4[4];\n      *(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5);\n      *(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n      puVar4 = puVar3;\n      puVar8 = puVar8 + 8;\n    } while (puVar2 + 2 != puVar3);\n    puVar5 = puVar5 + (((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8;\n    puVar2 = (undefined4 *)param_1[1];\n  }\n  puVar4 = (undefined4 *)*param_1;\n  if (puVar4 != puVar2) {\n    do {\n      if ((undefined4 *)*puVar4 != puVar4 + 2) {\n        FUN_003ae080((undefined4 *)*puVar4);\n      }\n      puVar4 = puVar4 + 8;\n    } while (puVar4 != puVar2);\n    puVar2 = (undefined4 *)*param_1;\n  }\n  if (puVar2 != (undefined4 *)0x0) {\n    FUN_003ae080(puVar2);\n  }\n  param_1[1] = puVar5;\n  *param_1 = local_28;\n  param_1[2] = local_28 + local_2c * 8;\n  return;\n}\n\n" (function_definition "void FUN_00345450(undefined4 *param_1,undefined4 *param_2,int *param_3,int *param_4)\n\n{\n  undefined4 uVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  size_t __n;\n  int iVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  uint uVar10;\n  int *piVar11;\n  int *piVar12;\n  int iVar13;\n  uint local_2c;\n  undefined4 *local_28;\n  undefined4 *local_20;\n  \n  if (param_3 == param_4) {\n    return;\n  }\n  puVar2 = (undefined4 *)param_1[1];\n  iVar6 = (int)param_4 - (int)param_3;\n  uVar7 = iVar6 >> 5;\n  if (uVar7 <= (uint)(param_1[2] - (int)puVar2 >> 5)) {\n    iVar9 = (int)puVar2 - (int)param_2;\n    uVar10 = iVar9 >> 5;\n    if (uVar10 <= uVar7) {\n      piVar11 = (int *)((int)param_3 + iVar9);\n      puVar5 = puVar2;\n      local_20 = puVar2;\n      if (param_4 != piVar11) {\n        do {\n          *local_20 = local_20 + 2;\n                    \n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      puVar5 = puVar5 + (uVar7 - uVar10) * 8;\n      param_1[1] = puVar5;\n      puVar4 = param_2 + 2;\n      if (puVar2 != param_2) {\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = (int)puVar5 + iVar9;\n      local_20 = (undefined4 *)uVar10;\n      if (iVar9 < 1) {\n        return;\n      }\n      do {\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      } while (local_20 != (undefined4 *)0x0);\n      return;\n    }\n    puVar5 = (undefined4 *)((int)puVar2 + (8 - iVar6));\n    puVar4 = puVar2;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar5[-2] == puVar5) {\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }\n      puVar4[1] = puVar5[-1];\n      puVar5[-2] = puVar5;\n      puVar8 = puVar5 + 8;\n      puVar5[-1] = 0;\n      *(undefined1 *)puVar5 = 0;\n      puVar4[6] = puVar5[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15);\n      puVar5 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar2 + 2 != puVar8);\n    param_1[1] = param_1[1] + iVar6;\n    local_20 = (undefined4 *)((int)puVar2 + (-0x18 - iVar6));\n    iVar9 = (int)puVar2 + (-(int)param_2 - iVar6);\n    iVar13 = iVar9 >> 5;\n    puVar2 = puVar2 + -6;\n    if (0 < iVar9) {\n      do {\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      } while (iVar13 != 0);\n    }\n    local_20 = (undefined4 *)uVar7;\n    if (iVar6 < 1) {\n      return;\n    }\n    do {\n      FUN_003b5c90(param_2,param_3);\n      param_2[6] = param_3[6];\n      *(char *)(param_2 + 7) = (char)param_3[7];\n      *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n      local_20 = (undefined4 *)((int)local_20 - 1);\n      param_3 = param_3 + 8;\n      param_2 = param_2 + 8;\n    } while (local_20 != (undefined4 *)0x0);\n    return;\n  }\n  puVar5 = (undefined4 *)*param_1;\n  uVar10 = (int)puVar2 - (int)puVar5 >> 5;\n  if (0x7ffffff - uVar10 < uVar7) {\n                    \n    FUN_003f3a70("vector::_M_range_insert");\n  }\n  if (uVar7 < uVar10) {\n    uVar7 = uVar10;\n  }\n  local_2c = uVar10 + uVar7;\n  if ((CARRY4(uVar10,uVar7)) || (0x7ffffff < local_2c)) {\n    iVar6 = -0x20;\n    local_2c = 0x7ffffff;\n  }\n  else {\n    local_28 = (undefined4 *)0x0;\n    if (local_2c == 0) goto LAB_00345692;\n    iVar6 = local_2c * 0x20;\n  }\n  local_28 = (undefined4 *)FUN_003ac4d0(iVar6);\n  puVar5 = (undefined4 *)*param_1;\nLAB_00345692:\n  puVar2 = local_28;\n  if (param_2 != puVar5) {\n    puVar2 = puVar5 + 2;\n    puVar4 = local_28;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar2[-2] == puVar2) {\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }\n      puVar4[1] = puVar2[-1];\n      puVar2[-2] = puVar2;\n      puVar8 = puVar2 + 8;\n      puVar2[-1] = 0;\n      *(undefined1 *)puVar2 = 0;\n      puVar4[6] = puVar2[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15);\n      puVar2 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar8 != param_2 + 2);\n    puVar2 = local_28 + (((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8;\n  }\n  do {\n    *puVar2 = puVar2 + 2;\n                    \n    FUN_0014fca0(puVar2,*param_3,param_3[1] + *param_3,0);\n    piVar11 = param_3 + 8;\n    puVar5 = puVar2 + 8;\n    puVar2[6] = param_3[6];\n    *(char *)(puVar2 + 7) = (char)param_3[7];\n    *(undefined1 *)((int)puVar2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n    param_3 = piVar11;\n    puVar2 = puVar5;\n  } while (param_4 != piVar11);\n  puVar2 = (undefined4 *)param_1[1];\n  if (param_2 != puVar2) {\n    puVar4 = param_2 + 2;\n    puVar8 = puVar5;\n    do {\n      puVar3 = (undefined4 *)puVar4[-2];\n      *puVar8 = puVar8 + 2;\n      if (puVar4 == puVar3) {\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }\n      else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }\n      uVar1 = puVar4[-1];\n      puVar4[-2] = puVar4;\n      puVar3 = puVar4 + 8;\n      puVar4[-1] = 0;\n      puVar8[1] = uVar1;\n      *(undefined1 *)puVar4 = 0;\n      puVar8[6] = puVar4[4];\n      *(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5);\n      *(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n      puVar4 = puVar3;\n      puVar8 = puVar8 + 8;\n    } while (puVar2 + 2 != puVar3);\n    puVar5 = puVar5 + (((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8;\n    puVar2 = (undefined4 *)param_1[1];\n  }\n  puVar4 = (undefined4 *)*param_1;\n  if (puVar4 != puVar2) {\n    do {\n      if ((undefined4 *)*puVar4 != puVar4 + 2) {\n        FUN_003ae080((undefined4 *)*puVar4);\n      }\n      puVar4 = puVar4 + 8;\n    } while (puVar4 != puVar2);\n    puVar2 = (undefined4 *)*param_1;\n  }\n  if (puVar2 != (undefined4 *)0x0) {\n    FUN_003ae080(puVar2);\n  }\n  param_1[1] = puVar5;\n  *param_1 = local_28;\n  param_1[2] = local_28 + local_2c * 8;\n  return;\n}" primitive_type (function_declarator "FUN_00345450(undefined4 *param_1,undefined4 *param_2,int *param_3,int *param_4)" identifier (parameter_list "(undefined4 *param_1,undefined4 *param_2,int *param_3,int *param_4)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  undefined4 uVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  size_t __n;\n  int iVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  uint uVar10;\n  int *piVar11;\n  int *piVar12;\n  int iVar13;\n  uint local_2c;\n  undefined4 *local_28;\n  undefined4 *local_20;\n  \n  if (param_3 == param_4) {\n    return;\n  }\n  puVar2 = (undefined4 *)param_1[1];\n  iVar6 = (int)param_4 - (int)param_3;\n  uVar7 = iVar6 >> 5;\n  if (uVar7 <= (uint)(param_1[2] - (int)puVar2 >> 5)) {\n    iVar9 = (int)puVar2 - (int)param_2;\n    uVar10 = iVar9 >> 5;\n    if (uVar10 <= uVar7) {\n      piVar11 = (int *)((int)param_3 + iVar9);\n      puVar5 = puVar2;\n      local_20 = puVar2;\n      if (param_4 != piVar11) {\n        do {\n          *local_20 = local_20 + 2;\n                    \n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      puVar5 = puVar5 + (uVar7 - uVar10) * 8;\n      param_1[1] = puVar5;\n      puVar4 = param_2 + 2;\n      if (puVar2 != param_2) {\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = (int)puVar5 + iVar9;\n      local_20 = (undefined4 *)uVar10;\n      if (iVar9 < 1) {\n        return;\n      }\n      do {\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      } while (local_20 != (undefined4 *)0x0);\n      return;\n    }\n    puVar5 = (undefined4 *)((int)puVar2 + (8 - iVar6));\n    puVar4 = puVar2;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar5[-2] == puVar5) {\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }\n      puVar4[1] = puVar5[-1];\n      puVar5[-2] = puVar5;\n      puVar8 = puVar5 + 8;\n      puVar5[-1] = 0;\n      *(undefined1 *)puVar5 = 0;\n      puVar4[6] = puVar5[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15);\n      puVar5 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar2 + 2 != puVar8);\n    param_1[1] = param_1[1] + iVar6;\n    local_20 = (undefined4 *)((int)puVar2 + (-0x18 - iVar6));\n    iVar9 = (int)puVar2 + (-(int)param_2 - iVar6);\n    iVar13 = iVar9 >> 5;\n    puVar2 = puVar2 + -6;\n    if (0 < iVar9) {\n      do {\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      } while (iVar13 != 0);\n    }\n    local_20 = (undefined4 *)uVar7;\n    if (iVar6 < 1) {\n      return;\n    }\n    do {\n      FUN_003b5c90(param_2,param_3);\n      param_2[6] = param_3[6];\n      *(char *)(param_2 + 7) = (char)param_3[7];\n      *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n      local_20 = (undefined4 *)((int)local_20 - 1);\n      param_3 = param_3 + 8;\n      param_2 = param_2 + 8;\n    } while (local_20 != (undefined4 *)0x0);\n    return;\n  }\n  puVar5 = (undefined4 *)*param_1;\n  uVar10 = (int)puVar2 - (int)puVar5 >> 5;\n  if (0x7ffffff - uVar10 < uVar7) {\n                    \n    FUN_003f3a70("vector::_M_range_insert");\n  }\n  if (uVar7 < uVar10) {\n    uVar7 = uVar10;\n  }\n  local_2c = uVar10 + uVar7;\n  if ((CARRY4(uVar10,uVar7)) || (0x7ffffff < local_2c)) {\n    iVar6 = -0x20;\n    local_2c = 0x7ffffff;\n  }\n  else {\n    local_28 = (undefined4 *)0x0;\n    if (local_2c == 0) goto LAB_00345692;\n    iVar6 = local_2c * 0x20;\n  }\n  local_28 = (undefined4 *)FUN_003ac4d0(iVar6);\n  puVar5 = (undefined4 *)*param_1;\nLAB_00345692:\n  puVar2 = local_28;\n  if (param_2 != puVar5) {\n    puVar2 = puVar5 + 2;\n    puVar4 = local_28;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar2[-2] == puVar2) {\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }\n      puVar4[1] = puVar2[-1];\n      puVar2[-2] = puVar2;\n      puVar8 = puVar2 + 8;\n      puVar2[-1] = 0;\n      *(undefined1 *)puVar2 = 0;\n      puVar4[6] = puVar2[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15);\n      puVar2 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar8 != param_2 + 2);\n    puVar2 = local_28 + (((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8;\n  }\n  do {\n    *puVar2 = puVar2 + 2;\n                    \n    FUN_0014fca0(puVar2,*param_3,param_3[1] + *param_3,0);\n    piVar11 = param_3 + 8;\n    puVar5 = puVar2 + 8;\n    puVar2[6] = param_3[6];\n    *(char *)(puVar2 + 7) = (char)param_3[7];\n    *(undefined1 *)((int)puVar2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n    param_3 = piVar11;\n    puVar2 = puVar5;\n  } while (param_4 != piVar11);\n  puVar2 = (undefined4 *)param_1[1];\n  if (param_2 != puVar2) {\n    puVar4 = param_2 + 2;\n    puVar8 = puVar5;\n    do {\n      puVar3 = (undefined4 *)puVar4[-2];\n      *puVar8 = puVar8 + 2;\n      if (puVar4 == puVar3) {\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }\n      else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }\n      uVar1 = puVar4[-1];\n      puVar4[-2] = puVar4;\n      puVar3 = puVar4 + 8;\n      puVar4[-1] = 0;\n      puVar8[1] = uVar1;\n      *(undefined1 *)puVar4 = 0;\n      puVar8[6] = puVar4[4];\n      *(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5);\n      *(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n      puVar4 = puVar3;\n      puVar8 = puVar8 + 8;\n    } while (puVar2 + 2 != puVar3);\n    puVar5 = puVar5 + (((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8;\n    puVar2 = (undefined4 *)param_1[1];\n  }\n  puVar4 = (undefined4 *)*param_1;\n  if (puVar4 != puVar2) {\n    do {\n      if ((undefined4 *)*puVar4 != puVar4 + 2) {\n        FUN_003ae080((undefined4 *)*puVar4);\n      }\n      puVar4 = puVar4 + 8;\n    } while (puVar4 != puVar2);\n    puVar2 = (undefined4 *)*param_1;\n  }\n  if (puVar2 != (undefined4 *)0x0) {\n    FUN_003ae080(puVar2);\n  }\n  param_1[1] = puVar5;\n  *param_1 = local_28;\n  param_1[2] = local_28 + local_2c * 8;\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "undefined4 *local_28;" type_identifier (pointer_declarator "*local_28" * identifier) ;) (declaration "undefined4 *local_20;" type_identifier (pointer_declarator "*local_20" * 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 "puVar2 = (undefined4 *)param_1[1];" (assignment_expression "puVar2 = (undefined4 *)param_1[1]" identifier = (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar6 = (int)param_4 - (int)param_3;" (assignment_expression "iVar6 = (int)param_4 - (int)param_3" identifier = (binary_expression "(int)param_4 - (int)param_3" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar7 = iVar6 >> 5;" (assignment_expression "uVar7 = iVar6 >> 5" identifier = (binary_expression "iVar6 >> 5" identifier >> number_literal)) ;) (if_statement "if (uVar7 <= (uint)(param_1[2] - (int)puVar2 >> 5)) {\n    iVar9 = (int)puVar2 - (int)param_2;\n    uVar10 = iVar9 >> 5;\n    if (uVar10 <= uVar7) {\n      piVar11 = (int *)((int)param_3 + iVar9);\n      puVar5 = puVar2;\n      local_20 = puVar2;\n      if (param_4 != piVar11) {\n        do {\n          *local_20 = local_20 + 2;\n                    \n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      puVar5 = puVar5 + (uVar7 - uVar10) * 8;\n      param_1[1] = puVar5;\n      puVar4 = param_2 + 2;\n      if (puVar2 != param_2) {\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = (int)puVar5 + iVar9;\n      local_20 = (undefined4 *)uVar10;\n      if (iVar9 < 1) {\n        return;\n      }\n      do {\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      } while (local_20 != (undefined4 *)0x0);\n      return;\n    }\n    puVar5 = (undefined4 *)((int)puVar2 + (8 - iVar6));\n    puVar4 = puVar2;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar5[-2] == puVar5) {\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }\n      puVar4[1] = puVar5[-1];\n      puVar5[-2] = puVar5;\n      puVar8 = puVar5 + 8;\n      puVar5[-1] = 0;\n      *(undefined1 *)puVar5 = 0;\n      puVar4[6] = puVar5[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15);\n      puVar5 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar2 + 2 != puVar8);\n    param_1[1] = param_1[1] + iVar6;\n    local_20 = (undefined4 *)((int)puVar2 + (-0x18 - iVar6));\n    iVar9 = (int)puVar2 + (-(int)param_2 - iVar6);\n    iVar13 = iVar9 >> 5;\n    puVar2 = puVar2 + -6;\n    if (0 < iVar9) {\n      do {\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      } while (iVar13 != 0);\n    }\n    local_20 = (undefined4 *)uVar7;\n    if (iVar6 < 1) {\n      return;\n    }\n    do {\n      FUN_003b5c90(param_2,param_3);\n      param_2[6] = param_3[6];\n      *(char *)(param_2 + 7) = (char)param_3[7];\n      *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n      local_20 = (undefined4 *)((int)local_20 - 1);\n      param_3 = param_3 + 8;\n      param_2 = param_2 + 8;\n    } while (local_20 != (undefined4 *)0x0);\n    return;\n  }" if (parenthesized_expression "(uVar7 <= (uint)(param_1[2] - (int)puVar2 >> 5))" ( (binary_expression "uVar7 <= (uint)(param_1[2] - (int)puVar2 >> 5)" identifier <= (call_expression "(uint)(param_1[2] - (int)puVar2 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1[2] - (int)puVar2 >> 5)" ( (binary_expression "param_1[2] - (int)puVar2 >> 5" (binary_expression "param_1[2] - (int)puVar2" (subscript_expression "param_1[2]" identifier [ number_literal ]) - (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal) )))) )) (compound_statement "{\n    iVar9 = (int)puVar2 - (int)param_2;\n    uVar10 = iVar9 >> 5;\n    if (uVar10 <= uVar7) {\n      piVar11 = (int *)((int)param_3 + iVar9);\n      puVar5 = puVar2;\n      local_20 = puVar2;\n      if (param_4 != piVar11) {\n        do {\n          *local_20 = local_20 + 2;\n                    \n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      puVar5 = puVar5 + (uVar7 - uVar10) * 8;\n      param_1[1] = puVar5;\n      puVar4 = param_2 + 2;\n      if (puVar2 != param_2) {\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = (int)puVar5 + iVar9;\n      local_20 = (undefined4 *)uVar10;\n      if (iVar9 < 1) {\n        return;\n      }\n      do {\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      } while (local_20 != (undefined4 *)0x0);\n      return;\n    }\n    puVar5 = (undefined4 *)((int)puVar2 + (8 - iVar6));\n    puVar4 = puVar2;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar5[-2] == puVar5) {\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }\n      puVar4[1] = puVar5[-1];\n      puVar5[-2] = puVar5;\n      puVar8 = puVar5 + 8;\n      puVar5[-1] = 0;\n      *(undefined1 *)puVar5 = 0;\n      puVar4[6] = puVar5[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15);\n      puVar5 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar2 + 2 != puVar8);\n    param_1[1] = param_1[1] + iVar6;\n    local_20 = (undefined4 *)((int)puVar2 + (-0x18 - iVar6));\n    iVar9 = (int)puVar2 + (-(int)param_2 - iVar6);\n    iVar13 = iVar9 >> 5;\n    puVar2 = puVar2 + -6;\n    if (0 < iVar9) {\n      do {\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      } while (iVar13 != 0);\n    }\n    local_20 = (undefined4 *)uVar7;\n    if (iVar6 < 1) {\n      return;\n    }\n    do {\n      FUN_003b5c90(param_2,param_3);\n      param_2[6] = param_3[6];\n      *(char *)(param_2 + 7) = (char)param_3[7];\n      *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n      local_20 = (undefined4 *)((int)local_20 - 1);\n      param_3 = param_3 + 8;\n      param_2 = param_2 + 8;\n    } while (local_20 != (undefined4 *)0x0);\n    return;\n  }" { (expression_statement "iVar9 = (int)puVar2 - (int)param_2;" (assignment_expression "iVar9 = (int)puVar2 - (int)param_2" identifier = (binary_expression "(int)puVar2 - (int)param_2" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar10 = iVar9 >> 5;" (assignment_expression "uVar10 = iVar9 >> 5" identifier = (binary_expression "iVar9 >> 5" identifier >> number_literal)) ;) (if_statement "if (uVar10 <= uVar7) {\n      piVar11 = (int *)((int)param_3 + iVar9);\n      puVar5 = puVar2;\n      local_20 = puVar2;\n      if (param_4 != piVar11) {\n        do {\n          *local_20 = local_20 + 2;\n                    \n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      puVar5 = puVar5 + (uVar7 - uVar10) * 8;\n      param_1[1] = puVar5;\n      puVar4 = param_2 + 2;\n      if (puVar2 != param_2) {\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = (int)puVar5 + iVar9;\n      local_20 = (undefined4 *)uVar10;\n      if (iVar9 < 1) {\n        return;\n      }\n      do {\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      } while (local_20 != (undefined4 *)0x0);\n      return;\n    }" if (parenthesized_expression "(uVar10 <= uVar7)" ( (binary_expression "uVar10 <= uVar7" identifier <= identifier) )) (compound_statement "{\n      piVar11 = (int *)((int)param_3 + iVar9);\n      puVar5 = puVar2;\n      local_20 = puVar2;\n      if (param_4 != piVar11) {\n        do {\n          *local_20 = local_20 + 2;\n                    \n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      puVar5 = puVar5 + (uVar7 - uVar10) * 8;\n      param_1[1] = puVar5;\n      puVar4 = param_2 + 2;\n      if (puVar2 != param_2) {\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = (int)puVar5 + iVar9;\n      local_20 = (undefined4 *)uVar10;\n      if (iVar9 < 1) {\n        return;\n      }\n      do {\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      } while (local_20 != (undefined4 *)0x0);\n      return;\n    }" { (expression_statement "piVar11 = (int *)((int)param_3 + iVar9);" (assignment_expression "piVar11 = (int *)((int)param_3 + iVar9)" identifier = (cast_expression "(int *)((int)param_3 + iVar9)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 + iVar9)" ( (binary_expression "(int)param_3 + iVar9" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar5 = puVar2;" (assignment_expression "puVar5 = puVar2" identifier = identifier) ;) (expression_statement "local_20 = puVar2;" (assignment_expression "local_20 = puVar2" identifier = identifier) ;) (if_statement "if (param_4 != piVar11) {\n        do {\n          *local_20 = local_20 + 2;\n                    \n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }" if (parenthesized_expression "(param_4 != piVar11)" ( (binary_expression "param_4 != piVar11" identifier != identifier) )) (compound_statement "{\n        do {\n          *local_20 = local_20 + 2;\n                    \n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }" { (do_statement "do {\n          *local_20 = local_20 + 2;\n                    \n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);" do (compound_statement "{\n          *local_20 = local_20 + 2;\n                    \n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        }" { (expression_statement "*local_20 = local_20 + 2;" (assignment_expression "*local_20 = local_20 + 2" (pointer_expression "*local_20" * identifier) = (binary_expression "local_20 + 2" identifier + number_literal)) ;) (expression_statement "FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);" (call_expression "FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0)" identifier (argument_list "(local_20,*piVar11,piVar11[1] + *piVar11,0)" ( identifier , (pointer_expression "*piVar11" * identifier) , (binary_expression "piVar11[1] + *piVar11" (subscript_expression "piVar11[1]" identifier [ number_literal ]) + (pointer_expression "*piVar11" * identifier)) , number_literal ))) ;) (expression_statement "piVar12 = piVar11 + 8;" (assignment_expression "piVar12 = piVar11 + 8" identifier = (binary_expression "piVar11 + 8" identifier + number_literal)) ;) (expression_statement "local_20[6] = piVar11[6];" (assignment_expression "local_20[6] = piVar11[6]" (subscript_expression "local_20[6]" identifier [ number_literal ]) = (subscript_expression "piVar11[6]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(local_20 + 7) = (char)piVar11[7];" (assignment_expression "*(char *)(local_20 + 7) = (char)piVar11[7]" (pointer_expression "*(char *)(local_20 + 7)" * (cast_expression "(char *)(local_20 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 7)" ( (binary_expression "local_20 + 7" identifier + number_literal) )))) = (cast_expression "(char)piVar11[7]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar11[7]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);" (assignment_expression "*(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d)" (pointer_expression "*(undefined1 *)((int)local_20 + 0x1d)" * (cast_expression "(undefined1 *)((int)local_20 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + 0x1d)" ( (binary_expression "(int)local_20 + 0x1d" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined1 *)((int)piVar11 + 0x1d)" * (cast_expression "(undefined1 *)((int)piVar11 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar11 + 0x1d)" ( (binary_expression "(int)piVar11 + 0x1d" (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "piVar11 = piVar12;" (assignment_expression "piVar11 = piVar12" identifier = identifier) ;) (expression_statement "local_20 = local_20 + 8;" (assignment_expression "local_20 = local_20 + 8" identifier = (binary_expression "local_20 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_4 != piVar12)" ( (binary_expression "param_4 != piVar12" identifier != identifier) )) ;) (expression_statement "puVar5 = (undefined4 *)param_1[1];" (assignment_expression "puVar5 = (undefined4 *)param_1[1]" identifier = (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) })) (expression_statement "puVar5 = puVar5 + (uVar7 - uVar10) * 8;" (assignment_expression "puVar5 = puVar5 + (uVar7 - uVar10) * 8" identifier = (binary_expression "puVar5 + (uVar7 - uVar10) * 8" identifier + (binary_expression "(uVar7 - uVar10) * 8" (parenthesized_expression "(uVar7 - uVar10)" ( (binary_expression "uVar7 - uVar10" identifier - identifier) )) * number_literal))) ;) (expression_statement "param_1[1] = puVar5;" (assignment_expression "param_1[1] = puVar5" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4 = param_2 + 2;" (assignment_expression "puVar4 = param_2 + 2" identifier = (binary_expression "param_2 + 2" identifier + number_literal)) ;) (if_statement "if (puVar2 != param_2) {\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }" if (parenthesized_expression "(puVar2 != param_2)" ( (binary_expression "puVar2 != param_2" identifier != identifier) )) (compound_statement "{\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }" { (do_statement "do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);" do (compound_statement "{\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\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 (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }" if (parenthesized_expression "(puVar4 == (undefined4 *)puVar4[-2])" ( (binary_expression "puVar4 == (undefined4 *)puVar4[-2]" identifier == (cast_expression "(undefined4 *)puVar4[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[-2]" identifier [ number_literal ]))) )) (compound_statement "{\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }" { (expression_statement "puVar5[2] = *puVar4;" (assignment_expression "puVar5[2] = *puVar4" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar5[3] = puVar4[1];" (assignment_expression "puVar5[3] = puVar4[1]" (subscript_expression "puVar5[3]" identifier [ number_literal ]) = (subscript_expression "puVar4[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5[4] = puVar4[2];" (assignment_expression "puVar5[4] = puVar4[2]" (subscript_expression "puVar5[4]" identifier [ number_literal ]) = (subscript_expression "puVar4[2]" identifier [ number_literal ])) ;) (expression_statement "puVar5[5] = puVar4[3];" (assignment_expression "puVar5[5] = puVar4[3]" (subscript_expression "puVar5[5]" identifier [ number_literal ]) = (subscript_expression "puVar4[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }" else (compound_statement "{\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }" { (expression_statement "*puVar5 = (undefined4 *)puVar4[-2];" (assignment_expression "*puVar5 = (undefined4 *)puVar4[-2]" (pointer_expression "*puVar5" * identifier) = (cast_expression "(undefined4 *)puVar4[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar5[2] = *puVar4;" (assignment_expression "puVar5[2] = *puVar4" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = (pointer_expression "*puVar4" * identifier)) ;) }))) (expression_statement "puVar5[1] = puVar4[-1];" (assignment_expression "puVar5[1] = puVar4[-1]" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = (subscript_expression "puVar4[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar4[-2] = puVar4;" (assignment_expression "puVar4[-2] = puVar4" (subscript_expression "puVar4[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8 = puVar4 + 8;" (assignment_expression "puVar8 = puVar4 + 8" identifier = (binary_expression "puVar4 + 8" identifier + number_literal)) ;) (expression_statement "puVar4[-1] = 0;" (assignment_expression "puVar4[-1] = 0" (subscript_expression "puVar4[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar4 = 0;" (assignment_expression "*(undefined1 *)puVar4 = 0" (pointer_expression "*(undefined1 *)puVar4" * (cast_expression "(undefined1 *)puVar4" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar5[6] = puVar4[4];" (assignment_expression "puVar5[6] = puVar4[4]" (subscript_expression "puVar5[6]" identifier [ number_literal ]) = (subscript_expression "puVar4[4]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);" (assignment_expression "*(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5)" (pointer_expression "*(undefined1 *)(puVar5 + 7)" * (cast_expression "(undefined1 *)(puVar5 + 7)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 7)" ( (binary_expression "puVar5 + 7" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(puVar4 + 5)" * (cast_expression "(undefined1 *)(puVar4 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 5)" ( (binary_expression "puVar4 + 5" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);" (assignment_expression "*(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15)" (pointer_expression "*(undefined1 *)((int)puVar5 + 0x1d)" * (cast_expression "(undefined1 *)((int)puVar5 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 0x1d)" ( (binary_expression "(int)puVar5 + 0x1d" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined1 *)((int)puVar4 + 0x15)" * (cast_expression "(undefined1 *)((int)puVar4 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + 0x15)" ( (binary_expression "(int)puVar4 + 0x15" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar4 = puVar8;" (assignment_expression "puVar4 = puVar8" identifier = identifier) ;) (expression_statement "puVar5 = puVar5 + 8;" (assignment_expression "puVar5 = puVar5 + 8" identifier = (binary_expression "puVar5 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar2 + 2 != puVar8)" ( (binary_expression "puVar2 + 2 != puVar8" (binary_expression "puVar2 + 2" identifier + number_literal) != identifier) )) ;) (expression_statement "puVar5 = (undefined4 *)param_1[1];" (assignment_expression "puVar5 = (undefined4 *)param_1[1]" identifier = (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) })) (expression_statement "param_1[1] = (int)puVar5 + iVar9;" (assignment_expression "param_1[1] = (int)puVar5 + iVar9" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "(int)puVar5 + iVar9" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (expression_statement "local_20 = (undefined4 *)uVar10;" (assignment_expression "local_20 = (undefined4 *)uVar10" identifier = (cast_expression "(undefined4 *)uVar10" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (iVar9 < 1) {\n        return;\n      }" if (parenthesized_expression "(iVar9 < 1)" ( (binary_expression "iVar9 < 1" identifier < number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (do_statement "do {\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      } while (local_20 != (undefined4 *)0x0);" do (compound_statement "{\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      }" { (expression_statement "FUN_003b5c90(param_2,param_3);" (call_expression "FUN_003b5c90(param_2,param_3)" identifier (argument_list "(param_2,param_3)" ( identifier , identifier ))) ;) (expression_statement "param_2[6] = param_3[6];" (assignment_expression "param_2[6] = param_3[6]" (subscript_expression "param_2[6]" identifier [ number_literal ]) = (subscript_expression "param_3[6]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(param_2 + 7) = (char)param_3[7];" (assignment_expression "*(char *)(param_2 + 7) = (char)param_3[7]" (pointer_expression "*(char *)(param_2 + 7)" * (cast_expression "(char *)(param_2 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) )))) = (cast_expression "(char)param_3[7]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_3[7]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);" (assignment_expression "*(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d)" (pointer_expression "*(undefined1 *)((int)param_2 + 0x1d)" * (cast_expression "(undefined1 *)((int)param_2 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x1d)" ( (binary_expression "(int)param_2 + 0x1d" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined1 *)((int)param_3 + 0x1d)" * (cast_expression "(undefined1 *)((int)param_3 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 + 0x1d)" ( (binary_expression "(int)param_3 + 0x1d" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "local_20 = (undefined4 *)((int)local_20 - 1);" (assignment_expression "local_20 = (undefined4 *)((int)local_20 - 1)" identifier = (cast_expression "(undefined4 *)((int)local_20 - 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 - 1)" ( (binary_expression "(int)local_20 - 1" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "param_3 = param_3 + 8;" (assignment_expression "param_3 = param_3 + 8" identifier = (binary_expression "param_3 + 8" identifier + number_literal)) ;) (expression_statement "param_2 = param_2 + 8;" (assignment_expression "param_2 = param_2 + 8" identifier = (binary_expression "param_2 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_20 != (undefined4 *)0x0)" ( (binary_expression "local_20 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (return_statement "return;" return ;) })) (expression_statement "puVar5 = (undefined4 *)((int)puVar2 + (8 - iVar6));" (assignment_expression "puVar5 = (undefined4 *)((int)puVar2 + (8 - iVar6))" identifier = (cast_expression "(undefined4 *)((int)puVar2 + (8 - iVar6))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar2 + (8 - iVar6))" ( (binary_expression "(int)puVar2 + (8 - iVar6)" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(8 - iVar6)" ( (binary_expression "8 - iVar6" number_literal - identifier) ))) )))) ;) (expression_statement "puVar4 = puVar2;" (assignment_expression "puVar4 = puVar2" identifier = identifier) ;) (do_statement "do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar5[-2] == puVar5) {\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }\n      puVar4[1] = puVar5[-1];\n      puVar5[-2] = puVar5;\n      puVar8 = puVar5 + 8;\n      puVar5[-1] = 0;\n      *(undefined1 *)puVar5 = 0;\n      puVar4[6] = puVar5[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15);\n      puVar5 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar2 + 2 != puVar8);" do (compound_statement "{\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar5[-2] == puVar5) {\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }\n      puVar4[1] = puVar5[-1];\n      puVar5[-2] = puVar5;\n      puVar8 = puVar5 + 8;\n      puVar5[-1] = 0;\n      *(undefined1 *)puVar5 = 0;\n      puVar4[6] = puVar5[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15);\n      puVar5 = puVar8;\n      puVar4 = puVar4 + 8;\n    }" { (expression_statement "*puVar4 = puVar4 + 2;" (assignment_expression "*puVar4 = puVar4 + 2" (pointer_expression "*puVar4" * identifier) = (binary_expression "puVar4 + 2" identifier + number_literal)) ;) (if_statement "if ((undefined4 *)puVar5[-2] == puVar5) {\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }" if (parenthesized_expression "((undefined4 *)puVar5[-2] == puVar5)" ( (binary_expression "(undefined4 *)puVar5[-2] == puVar5" (cast_expression "(undefined4 *)puVar5[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar5[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }" { (expression_statement "puVar4[2] = *puVar5;" (assignment_expression "puVar4[2] = *puVar5" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar4[3] = puVar5[1];" (assignment_expression "puVar4[3] = puVar5[1]" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "puVar4[4] = puVar5[2];" (assignment_expression "puVar4[4] = puVar5[2]" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = (subscript_expression "puVar5[2]" identifier [ number_literal ])) ;) (expression_statement "puVar4[5] = puVar5[3];" (assignment_expression "puVar4[5] = puVar5[3]" (subscript_expression "puVar4[5]" identifier [ number_literal ]) = (subscript_expression "puVar5[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }" else (compound_statement "{\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }" { (expression_statement "*puVar4 = (undefined4 *)puVar5[-2];" (assignment_expression "*puVar4 = (undefined4 *)puVar5[-2]" (pointer_expression "*puVar4" * identifier) = (cast_expression "(undefined4 *)puVar5[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar5[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar4[2] = *puVar5;" (assignment_expression "puVar4[2] = *puVar5" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = (pointer_expression "*puVar5" * identifier)) ;) }))) (expression_statement "puVar4[1] = puVar5[-1];" (assignment_expression "puVar4[1] = puVar5[-1]" (subscript_expression "puVar4[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 "puVar8 = puVar5 + 8;" (assignment_expression "puVar8 = puVar5 + 8" identifier = (binary_expression "puVar5 + 8" identifier + number_literal)) ;) (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 "puVar4[6] = puVar5[4];" (assignment_expression "puVar4[6] = puVar5[4]" (subscript_expression "puVar4[6]" identifier [ number_literal ]) = (subscript_expression "puVar5[4]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5);" (assignment_expression "*(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5)" (pointer_expression "*(undefined1 *)(puVar4 + 7)" * (cast_expression "(undefined1 *)(puVar4 + 7)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 7)" ( (binary_expression "puVar4 + 7" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(puVar5 + 5)" * (cast_expression "(undefined1 *)(puVar5 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 5)" ( (binary_expression "puVar5 + 5" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15);" (assignment_expression "*(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15)" (pointer_expression "*(undefined1 *)((int)puVar4 + 0x1d)" * (cast_expression "(undefined1 *)((int)puVar4 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + 0x1d)" ( (binary_expression "(int)puVar4 + 0x1d" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined1 *)((int)puVar5 + 0x15)" * (cast_expression "(undefined1 *)((int)puVar5 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 0x15)" ( (binary_expression "(int)puVar5 + 0x15" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar5 = puVar8;" (assignment_expression "puVar5 = puVar8" identifier = identifier) ;) (expression_statement "puVar4 = puVar4 + 8;" (assignment_expression "puVar4 = puVar4 + 8" identifier = (binary_expression "puVar4 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar2 + 2 != puVar8)" ( (binary_expression "puVar2 + 2 != puVar8" (binary_expression "puVar2 + 2" identifier + number_literal) != identifier) )) ;) (expression_statement "param_1[1] = param_1[1] + iVar6;" (assignment_expression "param_1[1] = param_1[1] + iVar6" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "param_1[1] + iVar6" (subscript_expression "param_1[1]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "local_20 = (undefined4 *)((int)puVar2 + (-0x18 - iVar6));" (assignment_expression "local_20 = (undefined4 *)((int)puVar2 + (-0x18 - iVar6))" identifier = (cast_expression "(undefined4 *)((int)puVar2 + (-0x18 - iVar6))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar2 + (-0x18 - iVar6))" ( (binary_expression "(int)puVar2 + (-0x18 - iVar6)" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-0x18 - iVar6)" ( (binary_expression "-0x18 - iVar6" number_literal - identifier) ))) )))) ;) (expression_statement "iVar9 = (int)puVar2 + (-(int)param_2 - iVar6);" (assignment_expression "iVar9 = (int)puVar2 + (-(int)param_2 - iVar6)" identifier = (binary_expression "(int)puVar2 + (-(int)param_2 - iVar6)" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-(int)param_2 - iVar6)" ( (binary_expression "-(int)param_2 - iVar6" (unary_expression "-(int)param_2" - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) - identifier) )))) ;) (expression_statement "iVar13 = iVar9 >> 5;" (assignment_expression "iVar13 = iVar9 >> 5" identifier = (binary_expression "iVar9 >> 5" identifier >> number_literal)) ;) (expression_statement "puVar2 = puVar2 + -6;" (assignment_expression "puVar2 = puVar2 + -6" identifier = (binary_expression "puVar2 + -6" identifier + number_literal)) ;) (if_statement "if (0 < iVar9) {\n      do {\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      } while (iVar13 != 0);\n    }" if (parenthesized_expression "(0 < iVar9)" ( (binary_expression "0 < iVar9" number_literal < identifier) )) (compound_statement "{\n      do {\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      } while (iVar13 != 0);\n    }" { (do_statement "do {\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      } while (iVar13 != 0);" do (compound_statement "{\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      }" { (expression_statement "puVar5 = (undefined4 *)puVar2[-2];" (assignment_expression "puVar5 = (undefined4 *)puVar2[-2]" identifier = (cast_expression "(undefined4 *)puVar2[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar4 = (undefined4 *)local_20[-2];" (assignment_expression "puVar4 = (undefined4 *)local_20[-2]" identifier = (cast_expression "(undefined4 *)local_20[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_20[-2]" identifier [ number_literal ]))) ;) (if_statement "if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }" if (parenthesized_expression "(puVar4 == local_20)" ( (binary_expression "puVar4 == local_20" identifier == identifier) )) (compound_statement "{\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }" { (expression_statement "__n = local_20[-1];" (assignment_expression "__n = local_20[-1]" identifier = (subscript_expression "local_20[-1]" identifier [ number_literal ])) ;) (if_statement "if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (compound_statement "{\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }" { (if_statement "if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }" if (parenthesized_expression "(__n == 1)" ( (binary_expression "__n == 1" identifier == number_literal) )) (compound_statement "{\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }" { (expression_statement "*(undefined1 *)puVar5 = *(undefined1 *)local_20;" (assignment_expression "*(undefined1 *)puVar5 = *(undefined1 *)local_20" (pointer_expression "*(undefined1 *)puVar5" * (cast_expression "(undefined1 *)puVar5" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined1 *)local_20" * (cast_expression "(undefined1 *)local_20" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar5 = (undefined4 *)puVar2[-2];" (assignment_expression "puVar5 = (undefined4 *)puVar2[-2]" identifier = (cast_expression "(undefined4 *)puVar2[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[-2]" identifier [ number_literal ]))) ;) (expression_statement "__n = local_20[-1];" (assignment_expression "__n = local_20[-1]" identifier = (subscript_expression "local_20[-1]" identifier [ number_literal ])) ;) }) (else_clause "else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }" else (compound_statement "{\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }" { (expression_statement "memcpy(puVar5,local_20,__n);" (call_expression "memcpy(puVar5,local_20,__n)" identifier (argument_list "(puVar5,local_20,__n)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar5 = (undefined4 *)puVar2[-2];" (assignment_expression "puVar5 = (undefined4 *)puVar2[-2]" identifier = (cast_expression "(undefined4 *)puVar2[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[-2]" identifier [ number_literal ]))) ;) (expression_statement "__n = local_20[-1];" (assignment_expression "__n = local_20[-1]" identifier = (subscript_expression "local_20[-1]" identifier [ number_literal ])) ;) }))) })) (expression_statement "puVar2[-1] = __n;" (assignment_expression "puVar2[-1] = __n" (subscript_expression "puVar2[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)((int)puVar5 + __n) = 0;" (assignment_expression "*(undefined1 *)((int)puVar5 + __n) = 0" (pointer_expression "*(undefined1 *)((int)puVar5 + __n)" * (cast_expression "(undefined1 *)((int)puVar5 + __n)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + __n)" ( (binary_expression "(int)puVar5 + __n" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) }) (else_clause "else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }" else (compound_statement "{\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }" { (if_statement "if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }" if (parenthesized_expression "(puVar5 == puVar2)" ( (binary_expression "puVar5 == puVar2" identifier == identifier) )) (compound_statement "{\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }" { (expression_statement "puVar2[-2] = puVar4;" (assignment_expression "puVar2[-2] = puVar4" (subscript_expression "puVar2[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[-1] = local_20[-1];" (assignment_expression "puVar2[-1] = local_20[-1]" (subscript_expression "puVar2[-1]" identifier [ number_literal ]) = (subscript_expression "local_20[-1]" identifier [ number_literal ])) ;) (expression_statement "*puVar2 = *local_20;" (assignment_expression "*puVar2 = *local_20" (pointer_expression "*puVar2" * identifier) = (pointer_expression "*local_20" * identifier)) ;) }) (else_clause "else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }" else (compound_statement "{\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }" { (expression_statement "puVar2[-2] = puVar4;" (assignment_expression "puVar2[-2] = puVar4" (subscript_expression "puVar2[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = *puVar2;" (assignment_expression "uVar1 = *puVar2" identifier = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "puVar2[-1] = local_20[-1];" (assignment_expression "puVar2[-1] = local_20[-1]" (subscript_expression "puVar2[-1]" identifier [ number_literal ]) = (subscript_expression "local_20[-1]" identifier [ number_literal ])) ;) (expression_statement "*puVar2 = *local_20;" (assignment_expression "*puVar2 = *local_20" (pointer_expression "*puVar2" * identifier) = (pointer_expression "*local_20" * identifier)) ;) (if_statement "if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }" if (parenthesized_expression "(puVar5 != (undefined4 *)0x0)" ( (binary_expression "puVar5 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }" { (expression_statement "local_20[-2] = puVar5;" (assignment_expression "local_20[-2] = puVar5" (subscript_expression "local_20[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*local_20 = uVar1;" (assignment_expression "*local_20 = uVar1" (pointer_expression "*local_20" * identifier) = identifier) ;) (goto_statement "goto LAB_0034596d;" goto statement_identifier ;) })) }))) (expression_statement "local_20[-2] = local_20;" (assignment_expression "local_20[-2] = local_20" (subscript_expression "local_20[-2]" identifier [ number_literal ]) = identifier) ;) }))) (labeled_statement "LAB_0034596d:\n        local_20[-1] = 0;" statement_identifier : (expression_statement "local_20[-1] = 0;" (assignment_expression "local_20[-1] = 0" (subscript_expression "local_20[-1]" identifier [ number_literal ]) = number_literal) ;)) (expression_statement "*(undefined1 *)local_20[-2] = 0;" (assignment_expression "*(undefined1 *)local_20[-2] = 0" (pointer_expression "*(undefined1 *)local_20[-2]" * (cast_expression "(undefined1 *)local_20[-2]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_20[-2]" identifier [ number_literal ]))) = number_literal) ;) (expression_statement "puVar2[4] = local_20[4];" (assignment_expression "puVar2[4] = local_20[4]" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = (subscript_expression "local_20[4]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);" (assignment_expression "*(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5)" (pointer_expression "*(undefined1 *)(puVar2 + 5)" * (cast_expression "(undefined1 *)(puVar2 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 5)" ( (binary_expression "puVar2 + 5" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(local_20 + 5)" * (cast_expression "(undefined1 *)(local_20 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 5)" ( (binary_expression "local_20 + 5" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);" (assignment_expression "*(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15)" (pointer_expression "*(undefined1 *)((int)puVar2 + 0x15)" * (cast_expression "(undefined1 *)((int)puVar2 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar2 + 0x15)" ( (binary_expression "(int)puVar2 + 0x15" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined1 *)((int)local_20 + 0x15)" * (cast_expression "(undefined1 *)((int)local_20 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 + 0x15)" ( (binary_expression "(int)local_20 + 0x15" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (expression_statement "puVar2 = puVar2 + -8;" (assignment_expression "puVar2 = puVar2 + -8" identifier = (binary_expression "puVar2 + -8" identifier + number_literal)) ;) (expression_statement "local_20 = local_20 + -8;" (assignment_expression "local_20 = local_20 + -8" identifier = (binary_expression "local_20 + -8" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) ;) })) (expression_statement "local_20 = (undefined4 *)uVar7;" (assignment_expression "local_20 = (undefined4 *)uVar7" identifier = (cast_expression "(undefined4 *)uVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (iVar6 < 1) {\n      return;\n    }" if (parenthesized_expression "(iVar6 < 1)" ( (binary_expression "iVar6 < 1" identifier < number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (do_statement "do {\n      FUN_003b5c90(param_2,param_3);\n      param_2[6] = param_3[6];\n      *(char *)(param_2 + 7) = (char)param_3[7];\n      *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n      local_20 = (undefined4 *)((int)local_20 - 1);\n      param_3 = param_3 + 8;\n      param_2 = param_2 + 8;\n    } while (local_20 != (undefined4 *)0x0);" do (compound_statement "{\n      FUN_003b5c90(param_2,param_3);\n      param_2[6] = param_3[6];\n      *(char *)(param_2 + 7) = (char)param_3[7];\n      *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n      local_20 = (undefined4 *)((int)local_20 - 1);\n      param_3 = param_3 + 8;\n      param_2 = param_2 + 8;\n    }" { (expression_statement "FUN_003b5c90(param_2,param_3);" (call_expression "FUN_003b5c90(param_2,param_3)" identifier (argument_list "(param_2,param_3)" ( identifier , identifier ))) ;) (expression_statement "param_2[6] = param_3[6];" (assignment_expression "param_2[6] = param_3[6]" (subscript_expression "param_2[6]" identifier [ number_literal ]) = (subscript_expression "param_3[6]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(param_2 + 7) = (char)param_3[7];" (assignment_expression "*(char *)(param_2 + 7) = (char)param_3[7]" (pointer_expression "*(char *)(param_2 + 7)" * (cast_expression "(char *)(param_2 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 7)" ( (binary_expression "param_2 + 7" identifier + number_literal) )))) = (cast_expression "(char)param_3[7]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_3[7]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);" (assignment_expression "*(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d)" (pointer_expression "*(undefined1 *)((int)param_2 + 0x1d)" * (cast_expression "(undefined1 *)((int)param_2 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x1d)" ( (binary_expression "(int)param_2 + 0x1d" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined1 *)((int)param_3 + 0x1d)" * (cast_expression "(undefined1 *)((int)param_3 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 + 0x1d)" ( (binary_expression "(int)param_3 + 0x1d" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "local_20 = (undefined4 *)((int)local_20 - 1);" (assignment_expression "local_20 = (undefined4 *)((int)local_20 - 1)" identifier = (cast_expression "(undefined4 *)((int)local_20 - 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_20 - 1)" ( (binary_expression "(int)local_20 - 1" (cast_expression "(int)local_20" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "param_3 = param_3 + 8;" (assignment_expression "param_3 = param_3 + 8" identifier = (binary_expression "param_3 + 8" identifier + number_literal)) ;) (expression_statement "param_2 = param_2 + 8;" (assignment_expression "param_2 = param_2 + 8" identifier = (binary_expression "param_2 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_20 != (undefined4 *)0x0)" ( (binary_expression "local_20 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (return_statement "return;" return ;) })) (expression_statement "puVar5 = (undefined4 *)*param_1;" (assignment_expression "puVar5 = (undefined4 *)*param_1" identifier = (cast_expression "(undefined4 *)*param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar10 = (int)puVar2 - (int)puVar5 >> 5;" (assignment_expression "uVar10 = (int)puVar2 - (int)puVar5 >> 5" identifier = (binary_expression "(int)puVar2 - (int)puVar5 >> 5" (binary_expression "(int)puVar2 - (int)puVar5" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (if_statement "if (0x7ffffff - uVar10 < uVar7) {\n                    \n    FUN_003f3a70("vector::_M_range_insert");\n  }" if (parenthesized_expression "(0x7ffffff - uVar10 < uVar7)" ( (binary_expression "0x7ffffff - uVar10 < uVar7" (binary_expression "0x7ffffff - uVar10" number_literal - identifier) < identifier) )) (compound_statement "{\n                    \n    FUN_003f3a70("vector::_M_range_insert");\n  }" { (expression_statement "FUN_003f3a70("vector::_M_range_insert");" (call_expression "FUN_003f3a70("vector::_M_range_insert")" identifier (argument_list "("vector::_M_range_insert")" ( (string_literal ""vector::_M_range_insert"" " string_content ") ))) ;) })) (if_statement "if (uVar7 < uVar10) {\n    uVar7 = uVar10;\n  }" if (parenthesized_expression "(uVar7 < uVar10)" ( (binary_expression "uVar7 < uVar10" identifier < identifier) )) (compound_statement "{\n    uVar7 = uVar10;\n  }" { (expression_statement "uVar7 = uVar10;" (assignment_expression "uVar7 = uVar10" identifier = identifier) ;) })) (expression_statement "local_2c = uVar10 + uVar7;" (assignment_expression "local_2c = uVar10 + uVar7" identifier = (binary_expression "uVar10 + uVar7" identifier + identifier)) ;) (if_statement "if ((CARRY4(uVar10,uVar7)) || (0x7ffffff < local_2c)) {\n    iVar6 = -0x20;\n    local_2c = 0x7ffffff;\n  }\n  else {\n    local_28 = (undefined4 *)0x0;\n    if (local_2c == 0) goto LAB_00345692;\n    iVar6 = local_2c * 0x20;\n  }" if (parenthesized_expression "((CARRY4(uVar10,uVar7)) || (0x7ffffff < local_2c))" ( (binary_expression "(CARRY4(uVar10,uVar7)) || (0x7ffffff < local_2c)" (parenthesized_expression "(CARRY4(uVar10,uVar7))" ( (call_expression "CARRY4(uVar10,uVar7)" identifier (argument_list "(uVar10,uVar7)" ( identifier , identifier ))) )) || (parenthesized_expression "(0x7ffffff < local_2c)" ( (binary_expression "0x7ffffff < local_2c" number_literal < identifier) ))) )) (compound_statement "{\n    iVar6 = -0x20;\n    local_2c = 0x7ffffff;\n  }" { (expression_statement "iVar6 = -0x20;" (assignment_expression "iVar6 = -0x20" identifier = number_literal) ;) (expression_statement "local_2c = 0x7ffffff;" (assignment_expression "local_2c = 0x7ffffff" identifier = number_literal) ;) }) (else_clause "else {\n    local_28 = (undefined4 *)0x0;\n    if (local_2c == 0) goto LAB_00345692;\n    iVar6 = local_2c * 0x20;\n  }" else (compound_statement "{\n    local_28 = (undefined4 *)0x0;\n    if (local_2c == 0) goto LAB_00345692;\n    iVar6 = local_2c * 0x20;\n  }" { (expression_statement "local_28 = (undefined4 *)0x0;" (assignment_expression "local_28 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (local_2c == 0) goto LAB_00345692;" if (parenthesized_expression "(local_2c == 0)" ( (binary_expression "local_2c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00345692;" goto statement_identifier ;)) (expression_statement "iVar6 = local_2c * 0x20;" (assignment_expression "iVar6 = local_2c * 0x20" identifier = (binary_expression "local_2c * 0x20" identifier * number_literal)) ;) }))) (expression_statement "local_28 = (undefined4 *)FUN_003ac4d0(iVar6);" (assignment_expression "local_28 = (undefined4 *)FUN_003ac4d0(iVar6)" identifier = (cast_expression "(undefined4 *)FUN_003ac4d0(iVar6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_003ac4d0(iVar6)" identifier (argument_list "(iVar6)" ( identifier ))))) ;) (expression_statement "puVar5 = (undefined4 *)*param_1;" (assignment_expression "puVar5 = (undefined4 *)*param_1" identifier = (cast_expression "(undefined4 *)*param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (labeled_statement "LAB_00345692:\n  puVar2 = local_28;" statement_identifier : (expression_statement "puVar2 = local_28;" (assignment_expression "puVar2 = local_28" identifier = identifier) ;)) (if_statement "if (param_2 != puVar5) {\n    puVar2 = puVar5 + 2;\n    puVar4 = local_28;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar2[-2] == puVar2) {\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }\n      puVar4[1] = puVar2[-1];\n      puVar2[-2] = puVar2;\n      puVar8 = puVar2 + 8;\n      puVar2[-1] = 0;\n      *(undefined1 *)puVar2 = 0;\n      puVar4[6] = puVar2[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15);\n      puVar2 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar8 != param_2 + 2);\n    puVar2 = local_28 + (((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8;\n  }" if (parenthesized_expression "(param_2 != puVar5)" ( (binary_expression "param_2 != puVar5" identifier != identifier) )) (compound_statement "{\n    puVar2 = puVar5 + 2;\n    puVar4 = local_28;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar2[-2] == puVar2) {\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }\n      puVar4[1] = puVar2[-1];\n      puVar2[-2] = puVar2;\n      puVar8 = puVar2 + 8;\n      puVar2[-1] = 0;\n      *(undefined1 *)puVar2 = 0;\n      puVar4[6] = puVar2[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15);\n      puVar2 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar8 != param_2 + 2);\n    puVar2 = local_28 + (((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8;\n  }" { (expression_statement "puVar2 = puVar5 + 2;" (assignment_expression "puVar2 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "puVar4 = local_28;" (assignment_expression "puVar4 = local_28" identifier = identifier) ;) (do_statement "do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar2[-2] == puVar2) {\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }\n      puVar4[1] = puVar2[-1];\n      puVar2[-2] = puVar2;\n      puVar8 = puVar2 + 8;\n      puVar2[-1] = 0;\n      *(undefined1 *)puVar2 = 0;\n      puVar4[6] = puVar2[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15);\n      puVar2 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar8 != param_2 + 2);" do (compound_statement "{\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar2[-2] == puVar2) {\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }\n      puVar4[1] = puVar2[-1];\n      puVar2[-2] = puVar2;\n      puVar8 = puVar2 + 8;\n      puVar2[-1] = 0;\n      *(undefined1 *)puVar2 = 0;\n      puVar4[6] = puVar2[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15);\n      puVar2 = puVar8;\n      puVar4 = puVar4 + 8;\n    }" { (expression_statement "*puVar4 = puVar4 + 2;" (assignment_expression "*puVar4 = puVar4 + 2" (pointer_expression "*puVar4" * identifier) = (binary_expression "puVar4 + 2" identifier + number_literal)) ;) (if_statement "if ((undefined4 *)puVar2[-2] == puVar2) {\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }" if (parenthesized_expression "((undefined4 *)puVar2[-2] == puVar2)" ( (binary_expression "(undefined4 *)puVar2[-2] == puVar2" (cast_expression "(undefined4 *)puVar2[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[-2]" identifier [ number_literal ])) == identifier) )) (compound_statement "{\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }" { (expression_statement "puVar4[2] = *puVar2;" (assignment_expression "puVar4[2] = *puVar2" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "puVar4[3] = puVar2[1];" (assignment_expression "puVar4[3] = puVar2[1]" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (expression_statement "puVar4[4] = puVar2[2];" (assignment_expression "puVar4[4] = puVar2[2]" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = (subscript_expression "puVar2[2]" identifier [ number_literal ])) ;) (expression_statement "puVar4[5] = puVar2[3];" (assignment_expression "puVar4[5] = puVar2[3]" (subscript_expression "puVar4[5]" identifier [ number_literal ]) = (subscript_expression "puVar2[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }" else (compound_statement "{\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }" { (expression_statement "*puVar4 = (undefined4 *)puVar2[-2];" (assignment_expression "*puVar4 = (undefined4 *)puVar2[-2]" (pointer_expression "*puVar4" * identifier) = (cast_expression "(undefined4 *)puVar2[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[-2]" identifier [ number_literal ]))) ;) (expression_statement "puVar4[2] = *puVar2;" (assignment_expression "puVar4[2] = *puVar2" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = (pointer_expression "*puVar2" * identifier)) ;) }))) (expression_statement "puVar4[1] = puVar2[-1];" (assignment_expression "puVar4[1] = puVar2[-1]" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = (subscript_expression "puVar2[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar2[-2] = puVar2;" (assignment_expression "puVar2[-2] = puVar2" (subscript_expression "puVar2[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar8 = puVar2 + 8;" (assignment_expression "puVar8 = puVar2 + 8" identifier = (binary_expression "puVar2 + 8" identifier + number_literal)) ;) (expression_statement "puVar2[-1] = 0;" (assignment_expression "puVar2[-1] = 0" (subscript_expression "puVar2[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar2 = 0;" (assignment_expression "*(undefined1 *)puVar2 = 0" (pointer_expression "*(undefined1 *)puVar2" * (cast_expression "(undefined1 *)puVar2" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar4[6] = puVar2[4];" (assignment_expression "puVar4[6] = puVar2[4]" (subscript_expression "puVar4[6]" identifier [ number_literal ]) = (subscript_expression "puVar2[4]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5);" (assignment_expression "*(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5)" (pointer_expression "*(undefined1 *)(puVar4 + 7)" * (cast_expression "(undefined1 *)(puVar4 + 7)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 7)" ( (binary_expression "puVar4 + 7" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(puVar2 + 5)" * (cast_expression "(undefined1 *)(puVar2 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 5)" ( (binary_expression "puVar2 + 5" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15);" (assignment_expression "*(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15)" (pointer_expression "*(undefined1 *)((int)puVar4 + 0x1d)" * (cast_expression "(undefined1 *)((int)puVar4 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + 0x1d)" ( (binary_expression "(int)puVar4 + 0x1d" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined1 *)((int)puVar2 + 0x15)" * (cast_expression "(undefined1 *)((int)puVar2 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar2 + 0x15)" ( (binary_expression "(int)puVar2 + 0x15" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar2 = puVar8;" (assignment_expression "puVar2 = puVar8" identifier = identifier) ;) (expression_statement "puVar4 = puVar4 + 8;" (assignment_expression "puVar4 = puVar4 + 8" identifier = (binary_expression "puVar4 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar8 != param_2 + 2)" ( (binary_expression "puVar8 != param_2 + 2" identifier != (binary_expression "param_2 + 2" identifier + number_literal)) )) ;) (expression_statement "puVar2 = local_28 + (((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8;" (assignment_expression "puVar2 = local_28 + (((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8" identifier = (binary_expression "local_28 + (((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8" identifier + (binary_expression "(((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8" (parenthesized_expression "(((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1)" ( (binary_expression "((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1" (parenthesized_expression "((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5)" ( (binary_expression "(uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5" (call_expression "(uint)((int)param_2 + (-0x20 - (int)puVar5))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)param_2 + (-0x20 - (int)puVar5))" ( (binary_expression "(int)param_2 + (-0x20 - (int)puVar5)" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-0x20 - (int)puVar5)" ( (binary_expression "-0x20 - (int)puVar5" number_literal - (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))) >> number_literal) )) + number_literal) )) * number_literal))) ;) })) (do_statement "do {\n    *puVar2 = puVar2 + 2;\n                    \n    FUN_0014fca0(puVar2,*param_3,param_3[1] + *param_3,0);\n    piVar11 = param_3 + 8;\n    puVar5 = puVar2 + 8;\n    puVar2[6] = param_3[6];\n    *(char *)(puVar2 + 7) = (char)param_3[7];\n    *(undefined1 *)((int)puVar2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n    param_3 = piVar11;\n    puVar2 = puVar5;\n  } while (param_4 != piVar11);" do (compound_statement "{\n    *puVar2 = puVar2 + 2;\n                    \n    FUN_0014fca0(puVar2,*param_3,param_3[1] + *param_3,0);\n    piVar11 = param_3 + 8;\n    puVar5 = puVar2 + 8;\n    puVar2[6] = param_3[6];\n    *(char *)(puVar2 + 7) = (char)param_3[7];\n    *(undefined1 *)((int)puVar2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n    param_3 = piVar11;\n    puVar2 = puVar5;\n  }" { (expression_statement "*puVar2 = puVar2 + 2;" (assignment_expression "*puVar2 = puVar2 + 2" (pointer_expression "*puVar2" * identifier) = (binary_expression "puVar2 + 2" identifier + number_literal)) ;) (expression_statement "FUN_0014fca0(puVar2,*param_3,param_3[1] + *param_3,0);" (call_expression "FUN_0014fca0(puVar2,*param_3,param_3[1] + *param_3,0)" identifier (argument_list "(puVar2,*param_3,param_3[1] + *param_3,0)" ( identifier , (pointer_expression "*param_3" * identifier) , (binary_expression "param_3[1] + *param_3" (subscript_expression "param_3[1]" identifier [ number_literal ]) + (pointer_expression "*param_3" * identifier)) , number_literal ))) ;) (expression_statement "piVar11 = param_3 + 8;" (assignment_expression "piVar11 = param_3 + 8" identifier = (binary_expression "param_3 + 8" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar2 + 8;" (assignment_expression "puVar5 = puVar2 + 8" identifier = (binary_expression "puVar2 + 8" identifier + number_literal)) ;) (expression_statement "puVar2[6] = param_3[6];" (assignment_expression "puVar2[6] = param_3[6]" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = (subscript_expression "param_3[6]" identifier [ number_literal ])) ;) (expression_statement "*(char *)(puVar2 + 7) = (char)param_3[7];" (assignment_expression "*(char *)(puVar2 + 7) = (char)param_3[7]" (pointer_expression "*(char *)(puVar2 + 7)" * (cast_expression "(char *)(puVar2 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 7)" ( (binary_expression "puVar2 + 7" identifier + number_literal) )))) = (cast_expression "(char)param_3[7]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_3[7]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined1 *)((int)puVar2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);" (assignment_expression "*(undefined1 *)((int)puVar2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d)" (pointer_expression "*(undefined1 *)((int)puVar2 + 0x1d)" * (cast_expression "(undefined1 *)((int)puVar2 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar2 + 0x1d)" ( (binary_expression "(int)puVar2 + 0x1d" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined1 *)((int)param_3 + 0x1d)" * (cast_expression "(undefined1 *)((int)param_3 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 + 0x1d)" ( (binary_expression "(int)param_3 + 0x1d" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "param_3 = piVar11;" (assignment_expression "param_3 = piVar11" identifier = identifier) ;) (expression_statement "puVar2 = puVar5;" (assignment_expression "puVar2 = puVar5" identifier = identifier) ;) }) while (parenthesized_expression "(param_4 != piVar11)" ( (binary_expression "param_4 != piVar11" identifier != identifier) )) ;) (expression_statement "puVar2 = (undefined4 *)param_1[1];" (assignment_expression "puVar2 = (undefined4 *)param_1[1]" identifier = (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (if_statement "if (param_2 != puVar2) {\n    puVar4 = param_2 + 2;\n    puVar8 = puVar5;\n    do {\n      puVar3 = (undefined4 *)puVar4[-2];\n      *puVar8 = puVar8 + 2;\n      if (puVar4 == puVar3) {\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }\n      else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }\n      uVar1 = puVar4[-1];\n      puVar4[-2] = puVar4;\n      puVar3 = puVar4 + 8;\n      puVar4[-1] = 0;\n      puVar8[1] = uVar1;\n      *(undefined1 *)puVar4 = 0;\n      puVar8[6] = puVar4[4];\n      *(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5);\n      *(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n      puVar4 = puVar3;\n      puVar8 = puVar8 + 8;\n    } while (puVar2 + 2 != puVar3);\n    puVar5 = puVar5 + (((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8;\n    puVar2 = (undefined4 *)param_1[1];\n  }" if (parenthesized_expression "(param_2 != puVar2)" ( (binary_expression "param_2 != puVar2" identifier != identifier) )) (compound_statement "{\n    puVar4 = param_2 + 2;\n    puVar8 = puVar5;\n    do {\n      puVar3 = (undefined4 *)puVar4[-2];\n      *puVar8 = puVar8 + 2;\n      if (puVar4 == puVar3) {\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }\n      else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }\n      uVar1 = puVar4[-1];\n      puVar4[-2] = puVar4;\n      puVar3 = puVar4 + 8;\n      puVar4[-1] = 0;\n      puVar8[1] = uVar1;\n      *(undefined1 *)puVar4 = 0;\n      puVar8[6] = puVar4[4];\n      *(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5);\n      *(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n      puVar4 = puVar3;\n      puVar8 = puVar8 + 8;\n    } while (puVar2 + 2 != puVar3);\n    puVar5 = puVar5 + (((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8;\n    puVar2 = (undefined4 *)param_1[1];\n  }" { (expression_statement "puVar4 = param_2 + 2;" (assignment_expression "puVar4 = param_2 + 2" identifier = (binary_expression "param_2 + 2" identifier + number_literal)) ;) (expression_statement "puVar8 = puVar5;" (assignment_expression "puVar8 = puVar5" identifier = identifier) ;) (do_statement "do {\n      puVar3 = (undefined4 *)puVar4[-2];\n      *puVar8 = puVar8 + 2;\n      if (puVar4 == puVar3) {\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }\n      else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }\n      uVar1 = puVar4[-1];\n      puVar4[-2] = puVar4;\n      puVar3 = puVar4 + 8;\n      puVar4[-1] = 0;\n      puVar8[1] = uVar1;\n      *(undefined1 *)puVar4 = 0;\n      puVar8[6] = puVar4[4];\n      *(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5);\n      *(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n      puVar4 = puVar3;\n      puVar8 = puVar8 + 8;\n    } while (puVar2 + 2 != puVar3);" do (compound_statement "{\n      puVar3 = (undefined4 *)puVar4[-2];\n      *puVar8 = puVar8 + 2;\n      if (puVar4 == puVar3) {\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }\n      else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }\n      uVar1 = puVar4[-1];\n      puVar4[-2] = puVar4;\n      puVar3 = puVar4 + 8;\n      puVar4[-1] = 0;\n      puVar8[1] = uVar1;\n      *(undefined1 *)puVar4 = 0;\n      puVar8[6] = puVar4[4];\n      *(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5);\n      *(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n      puVar4 = puVar3;\n      puVar8 = puVar8 + 8;\n    }" { (expression_statement "puVar3 = (undefined4 *)puVar4[-2];" (assignment_expression "puVar3 = (undefined4 *)puVar4[-2]" identifier = (cast_expression "(undefined4 *)puVar4[-2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[-2]" identifier [ number_literal ]))) ;) (expression_statement "*puVar8 = puVar8 + 2;" (assignment_expression "*puVar8 = puVar8 + 2" (pointer_expression "*puVar8" * identifier) = (binary_expression "puVar8 + 2" identifier + number_literal)) ;) (if_statement "if (puVar4 == puVar3) {\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }\n      else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }" if (parenthesized_expression "(puVar4 == puVar3)" ( (binary_expression "puVar4 == puVar3" identifier == identifier) )) (compound_statement "{\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }" { (expression_statement "puVar8[2] = *puVar4;" (assignment_expression "puVar8[2] = *puVar4" (subscript_expression "puVar8[2]" identifier [ number_literal ]) = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar8[3] = puVar4[1];" (assignment_expression "puVar8[3] = puVar4[1]" (subscript_expression "puVar8[3]" identifier [ number_literal ]) = (subscript_expression "puVar4[1]" identifier [ number_literal ])) ;) (expression_statement "puVar8[4] = puVar4[2];" (assignment_expression "puVar8[4] = puVar4[2]" (subscript_expression "puVar8[4]" identifier [ number_literal ]) = (subscript_expression "puVar4[2]" identifier [ number_literal ])) ;) (expression_statement "puVar8[5] = puVar4[3];" (assignment_expression "puVar8[5] = puVar4[3]" (subscript_expression "puVar8[5]" identifier [ number_literal ]) = (subscript_expression "puVar4[3]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }" else (compound_statement "{\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }" { (expression_statement "*puVar8 = puVar3;" (assignment_expression "*puVar8 = puVar3" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "puVar8[2] = *puVar4;" (assignment_expression "puVar8[2] = *puVar4" (subscript_expression "puVar8[2]" identifier [ number_literal ]) = (pointer_expression "*puVar4" * identifier)) ;) }))) (expression_statement "uVar1 = puVar4[-1];" (assignment_expression "uVar1 = puVar4[-1]" identifier = (subscript_expression "puVar4[-1]" identifier [ number_literal ])) ;) (expression_statement "puVar4[-2] = puVar4;" (assignment_expression "puVar4[-2] = puVar4" (subscript_expression "puVar4[-2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3 = puVar4 + 8;" (assignment_expression "puVar3 = puVar4 + 8" identifier = (binary_expression "puVar4 + 8" identifier + number_literal)) ;) (expression_statement "puVar4[-1] = 0;" (assignment_expression "puVar4[-1] = 0" (subscript_expression "puVar4[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar8[1] = uVar1;" (assignment_expression "puVar8[1] = uVar1" (subscript_expression "puVar8[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)puVar4 = 0;" (assignment_expression "*(undefined1 *)puVar4 = 0" (pointer_expression "*(undefined1 *)puVar4" * (cast_expression "(undefined1 *)puVar4" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "puVar8[6] = puVar4[4];" (assignment_expression "puVar8[6] = puVar4[4]" (subscript_expression "puVar8[6]" identifier [ number_literal ]) = (subscript_expression "puVar4[4]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5);" (assignment_expression "*(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5)" (pointer_expression "*(undefined1 *)(puVar8 + 7)" * (cast_expression "(undefined1 *)(puVar8 + 7)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 7)" ( (binary_expression "puVar8 + 7" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(puVar4 + 5)" * (cast_expression "(undefined1 *)(puVar4 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 5)" ( (binary_expression "puVar4 + 5" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);" (assignment_expression "*(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15)" (pointer_expression "*(undefined1 *)((int)puVar8 + 0x1d)" * (cast_expression "(undefined1 *)((int)puVar8 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + 0x1d)" ( (binary_expression "(int)puVar8 + 0x1d" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined1 *)((int)puVar4 + 0x15)" * (cast_expression "(undefined1 *)((int)puVar4 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar4 + 0x15)" ( (binary_expression "(int)puVar4 + 0x15" (cast_expression "(int)puVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar4 = puVar3;" (assignment_expression "puVar4 = puVar3" identifier = identifier) ;) (expression_statement "puVar8 = puVar8 + 8;" (assignment_expression "puVar8 = puVar8 + 8" identifier = (binary_expression "puVar8 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar2 + 2 != puVar3)" ( (binary_expression "puVar2 + 2 != puVar3" (binary_expression "puVar2 + 2" identifier + number_literal) != identifier) )) ;) (expression_statement "puVar5 = puVar5 + (((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8;" (assignment_expression "puVar5 = puVar5 + (((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8" identifier = (binary_expression "puVar5 + (((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8" identifier + (binary_expression "(((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8" (parenthesized_expression "(((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1)" ( (binary_expression "((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1" (parenthesized_expression "((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5)" ( (binary_expression "(uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5" (call_expression "(uint)((int)puVar2 + (-0x20 - (int)param_2))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar2 + (-0x20 - (int)param_2))" ( (binary_expression "(int)puVar2 + (-0x20 - (int)param_2)" (cast_expression "(int)puVar2" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-0x20 - (int)param_2)" ( (binary_expression "-0x20 - (int)param_2" number_literal - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))) >> number_literal) )) + number_literal) )) * number_literal))) ;) (expression_statement "puVar2 = (undefined4 *)param_1[1];" (assignment_expression "puVar2 = (undefined4 *)param_1[1]" identifier = (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) })) (expression_statement "puVar4 = (undefined4 *)*param_1;" (assignment_expression "puVar4 = (undefined4 *)*param_1" identifier = (cast_expression "(undefined4 *)*param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (puVar4 != puVar2) {\n    do {\n      if ((undefined4 *)*puVar4 != puVar4 + 2) {\n        FUN_003ae080((undefined4 *)*puVar4);\n      }\n      puVar4 = puVar4 + 8;\n    } while (puVar4 != puVar2);\n    puVar2 = (undefined4 *)*param_1;\n  }" if (parenthesized_expression "(puVar4 != puVar2)" ( (binary_expression "puVar4 != puVar2" identifier != identifier) )) (compound_statement "{\n    do {\n      if ((undefined4 *)*puVar4 != puVar4 + 2) {\n        FUN_003ae080((undefined4 *)*puVar4);\n      }\n      puVar4 = puVar4 + 8;\n    } while (puVar4 != puVar2);\n    puVar2 = (undefined4 *)*param_1;\n  }" { (do_statement "do {\n      if ((undefined4 *)*puVar4 != puVar4 + 2) {\n        FUN_003ae080((undefined4 *)*puVar4);\n      }\n      puVar4 = puVar4 + 8;\n    } while (puVar4 != puVar2);" do (compound_statement "{\n      if ((undefined4 *)*puVar4 != puVar4 + 2) {\n        FUN_003ae080((undefined4 *)*puVar4);\n      }\n      puVar4 = puVar4 + 8;\n    }" { (if_statement "if ((undefined4 *)*puVar4 != puVar4 + 2) {\n        FUN_003ae080((undefined4 *)*puVar4);\n      }" if (parenthesized_expression "((undefined4 *)*puVar4 != puVar4 + 2)" ( (binary_expression "(undefined4 *)*puVar4 != puVar4 + 2" (cast_expression "(undefined4 *)*puVar4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar4" * identifier)) != (binary_expression "puVar4 + 2" identifier + number_literal)) )) (compound_statement "{\n        FUN_003ae080((undefined4 *)*puVar4);\n      }" { (expression_statement "FUN_003ae080((undefined4 *)*puVar4);" (call_expression "FUN_003ae080((undefined4 *)*puVar4)" identifier (argument_list "((undefined4 *)*puVar4)" ( (cast_expression "(undefined4 *)*puVar4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar4" * identifier)) ))) ;) })) (expression_statement "puVar4 = puVar4 + 8;" (assignment_expression "puVar4 = puVar4 + 8" identifier = (binary_expression "puVar4 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar4 != puVar2)" ( (binary_expression "puVar4 != puVar2" identifier != identifier) )) ;) (expression_statement "puVar2 = (undefined4 *)*param_1;" (assignment_expression "puVar2 = (undefined4 *)*param_1" identifier = (cast_expression "(undefined4 *)*param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) })) (if_statement "if (puVar2 != (undefined4 *)0x0) {\n    FUN_003ae080(puVar2);\n  }" if (parenthesized_expression "(puVar2 != (undefined4 *)0x0)" ( (binary_expression "puVar2 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    FUN_003ae080(puVar2);\n  }" { (expression_statement "FUN_003ae080(puVar2);" (call_expression "FUN_003ae080(puVar2)" identifier (argument_list "(puVar2)" ( 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 = local_28;" (assignment_expression "*param_1 = local_28" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[2] = local_28 + local_2c * 8;" (assignment_expression "param_1[2] = local_28 + local_2c * 8" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (binary_expression "local_28 + local_2c * 8" identifier + (binary_expression "local_2c * 8" 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 TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_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 TYPE) ) IDENT)) >> LIT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (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)) , LIT ))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) }) (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 (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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 *)) ) IDENT)) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != IDENT) )) ;) (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 TYPE) ) IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return ;) })) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - IDENT) ))) )))) ;) (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 (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) }) (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 (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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 *)) ) IDENT)) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != IDENT) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - IDENT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)) - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < 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 TYPE) ) 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 (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 (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (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) )) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return ;) })) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) 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) ;) (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)) ;) (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 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 (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) }) (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 (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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 *)) ) IDENT)) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + LIT)) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) ))) >> LIT) )) + LIT) )) * LIT))) ;) })) (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)) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) 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 IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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 (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) ))) >> LIT) )) + LIT) )) * LIT))) ;) (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 *)) ) (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 ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) ))) ;) })) (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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (return_statement return ;) })))
(function_definition "void FUN_00345450(undefined4 *param_1,undefined4 *param_2,int *param_3,int *param_4)\n\n{\n  undefined4 uVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  size_t __n;\n  int iVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  uint uVar10;\n  int *piVar11;\n  int *piVar12;\n  int iVar13;\n  uint local_2c;\n  undefined4 *local_28;\n  undefined4 *local_20;\n  \n  if (param_3 == param_4) {\n    return;\n  }\n  puVar2 = (undefined4 *)param_1[1];\n  iVar6 = (int)param_4 - (int)param_3;\n  uVar7 = iVar6 >> 5;\n  if (uVar7 <= (uint)(param_1[2] - (int)puVar2 >> 5)) {\n    iVar9 = (int)puVar2 - (int)param_2;\n    uVar10 = iVar9 >> 5;\n    if (uVar10 <= uVar7) {\n      piVar11 = (int *)((int)param_3 + iVar9);\n      puVar5 = puVar2;\n      local_20 = puVar2;\n      if (param_4 != piVar11) {\n        do {\n          *local_20 = local_20 + 2;\n                    \n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      puVar5 = puVar5 + (uVar7 - uVar10) * 8;\n      param_1[1] = puVar5;\n      puVar4 = param_2 + 2;\n      if (puVar2 != param_2) {\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = (int)puVar5 + iVar9;\n      local_20 = (undefined4 *)uVar10;\n      if (iVar9 < 1) {\n        return;\n      }\n      do {\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      } while (local_20 != (undefined4 *)0x0);\n      return;\n    }\n    puVar5 = (undefined4 *)((int)puVar2 + (8 - iVar6));\n    puVar4 = puVar2;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar5[-2] == puVar5) {\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }\n      puVar4[1] = puVar5[-1];\n      puVar5[-2] = puVar5;\n      puVar8 = puVar5 + 8;\n      puVar5[-1] = 0;\n      *(undefined1 *)puVar5 = 0;\n      puVar4[6] = puVar5[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15);\n      puVar5 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar2 + 2 != puVar8);\n    param_1[1] = param_1[1] + iVar6;\n    local_20 = (undefined4 *)((int)puVar2 + (-0x18 - iVar6));\n    iVar9 = (int)puVar2 + (-(int)param_2 - iVar6);\n    iVar13 = iVar9 >> 5;\n    puVar2 = puVar2 + -6;\n    if (0 < iVar9) {\n      do {\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      } while (iVar13 != 0);\n    }\n    local_20 = (undefined4 *)uVar7;\n    if (iVar6 < 1) {\n      return;\n    }\n    do {\n      FUN_003b5c90(param_2,param_3);\n      param_2[6] = param_3[6];\n      *(char *)(param_2 + 7) = (char)param_3[7];\n      *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n      local_20 = (undefined4 *)((int)local_20 - 1);\n      param_3 = param_3 + 8;\n      param_2 = param_2 + 8;\n    } while (local_20 != (undefined4 *)0x0);\n    return;\n  }\n  puVar5 = (undefined4 *)*param_1;\n  uVar10 = (int)puVar2 - (int)puVar5 >> 5;\n  if (0x7ffffff - uVar10 < uVar7) {\n                    \n    FUN_003f3a70("vector::_M_range_insert");\n  }\n  if (uVar7 < uVar10) {\n    uVar7 = uVar10;\n  }\n  local_2c = uVar10 + uVar7;\n  if ((CARRY4(uVar10,uVar7)) || (0x7ffffff < local_2c)) {\n    iVar6 = -0x20;\n    local_2c = 0x7ffffff;\n  }\n  else {\n    local_28 = (undefined4 *)0x0;\n    if (local_2c == 0) goto LAB_00345692;\n    iVar6 = local_2c * 0x20;\n  }\n  local_28 = (undefined4 *)FUN_003ac4d0(iVar6);\n  puVar5 = (undefined4 *)*param_1;\nLAB_00345692:\n  puVar2 = local_28;\n  if (param_2 != puVar5) {\n    puVar2 = puVar5 + 2;\n    puVar4 = local_28;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar2[-2] == puVar2) {\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }\n      puVar4[1] = puVar2[-1];\n      puVar2[-2] = puVar2;\n      puVar8 = puVar2 + 8;\n      puVar2[-1] = 0;\n      *(undefined1 *)puVar2 = 0;\n      puVar4[6] = puVar2[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15);\n      puVar2 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar8 != param_2 + 2);\n    puVar2 = local_28 + (((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8;\n  }\n  do {\n    *puVar2 = puVar2 + 2;\n                    \n    FUN_0014fca0(puVar2,*param_3,param_3[1] + *param_3,0);\n    piVar11 = param_3 + 8;\n    puVar5 = puVar2 + 8;\n    puVar2[6] = param_3[6];\n    *(char *)(puVar2 + 7) = (char)param_3[7];\n    *(undefined1 *)((int)puVar2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n    param_3 = piVar11;\n    puVar2 = puVar5;\n  } while (param_4 != piVar11);\n  puVar2 = (undefined4 *)param_1[1];\n  if (param_2 != puVar2) {\n    puVar4 = param_2 + 2;\n    puVar8 = puVar5;\n    do {\n      puVar3 = (undefined4 *)puVar4[-2];\n      *puVar8 = puVar8 + 2;\n      if (puVar4 == puVar3) {\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }\n      else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }\n      uVar1 = puVar4[-1];\n      puVar4[-2] = puVar4;\n      puVar3 = puVar4 + 8;\n      puVar4[-1] = 0;\n      puVar8[1] = uVar1;\n      *(undefined1 *)puVar4 = 0;\n      puVar8[6] = puVar4[4];\n      *(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5);\n      *(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n      puVar4 = puVar3;\n      puVar8 = puVar8 + 8;\n    } while (puVar2 + 2 != puVar3);\n    puVar5 = puVar5 + (((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8;\n    puVar2 = (undefined4 *)param_1[1];\n  }\n  puVar4 = (undefined4 *)*param_1;\n  if (puVar4 != puVar2) {\n    do {\n      if ((undefined4 *)*puVar4 != puVar4 + 2) {\n        FUN_003ae080((undefined4 *)*puVar4);\n      }\n      puVar4 = puVar4 + 8;\n    } while (puVar4 != puVar2);\n    puVar2 = (undefined4 *)*param_1;\n  }\n  if (puVar2 != (undefined4 *)0x0) {\n    FUN_003ae080(puVar2);\n  }\n  param_1[1] = puVar5;\n  *param_1 = local_28;\n  param_1[2] = local_28 + local_2c * 8;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00345450(undefined4 *param_1,undefined4 *param_2,int *param_3,int *param_4)" (identifier "FUN_00345450") (parameter_list "(undefined4 *param_1,undefined4 *param_2,int *param_3,int *param_4)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "int *param_4" (primitive_type "int") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  size_t __n;\n  int iVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  uint uVar10;\n  int *piVar11;\n  int *piVar12;\n  int iVar13;\n  uint local_2c;\n  undefined4 *local_28;\n  undefined4 *local_20;\n  \n  if (param_3 == param_4) {\n    return;\n  }\n  puVar2 = (undefined4 *)param_1[1];\n  iVar6 = (int)param_4 - (int)param_3;\n  uVar7 = iVar6 >> 5;\n  if (uVar7 <= (uint)(param_1[2] - (int)puVar2 >> 5)) {\n    iVar9 = (int)puVar2 - (int)param_2;\n    uVar10 = iVar9 >> 5;\n    if (uVar10 <= uVar7) {\n      piVar11 = (int *)((int)param_3 + iVar9);\n      puVar5 = puVar2;\n      local_20 = puVar2;\n      if (param_4 != piVar11) {\n        do {\n          *local_20 = local_20 + 2;\n                    \n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      puVar5 = puVar5 + (uVar7 - uVar10) * 8;\n      param_1[1] = puVar5;\n      puVar4 = param_2 + 2;\n      if (puVar2 != param_2) {\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = (int)puVar5 + iVar9;\n      local_20 = (undefined4 *)uVar10;\n      if (iVar9 < 1) {\n        return;\n      }\n      do {\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      } while (local_20 != (undefined4 *)0x0);\n      return;\n    }\n    puVar5 = (undefined4 *)((int)puVar2 + (8 - iVar6));\n    puVar4 = puVar2;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar5[-2] == puVar5) {\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }\n      puVar4[1] = puVar5[-1];\n      puVar5[-2] = puVar5;\n      puVar8 = puVar5 + 8;\n      puVar5[-1] = 0;\n      *(undefined1 *)puVar5 = 0;\n      puVar4[6] = puVar5[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15);\n      puVar5 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar2 + 2 != puVar8);\n    param_1[1] = param_1[1] + iVar6;\n    local_20 = (undefined4 *)((int)puVar2 + (-0x18 - iVar6));\n    iVar9 = (int)puVar2 + (-(int)param_2 - iVar6);\n    iVar13 = iVar9 >> 5;\n    puVar2 = puVar2 + -6;\n    if (0 < iVar9) {\n      do {\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      } while (iVar13 != 0);\n    }\n    local_20 = (undefined4 *)uVar7;\n    if (iVar6 < 1) {\n      return;\n    }\n    do {\n      FUN_003b5c90(param_2,param_3);\n      param_2[6] = param_3[6];\n      *(char *)(param_2 + 7) = (char)param_3[7];\n      *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n      local_20 = (undefined4 *)((int)local_20 - 1);\n      param_3 = param_3 + 8;\n      param_2 = param_2 + 8;\n    } while (local_20 != (undefined4 *)0x0);\n    return;\n  }\n  puVar5 = (undefined4 *)*param_1;\n  uVar10 = (int)puVar2 - (int)puVar5 >> 5;\n  if (0x7ffffff - uVar10 < uVar7) {\n                    \n    FUN_003f3a70("vector::_M_range_insert");\n  }\n  if (uVar7 < uVar10) {\n    uVar7 = uVar10;\n  }\n  local_2c = uVar10 + uVar7;\n  if ((CARRY4(uVar10,uVar7)) || (0x7ffffff < local_2c)) {\n    iVar6 = -0x20;\n    local_2c = 0x7ffffff;\n  }\n  else {\n    local_28 = (undefined4 *)0x0;\n    if (local_2c == 0) goto LAB_00345692;\n    iVar6 = local_2c * 0x20;\n  }\n  local_28 = (undefined4 *)FUN_003ac4d0(iVar6);\n  puVar5 = (undefined4 *)*param_1;\nLAB_00345692:\n  puVar2 = local_28;\n  if (param_2 != puVar5) {\n    puVar2 = puVar5 + 2;\n    puVar4 = local_28;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar2[-2] == puVar2) {\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }\n      puVar4[1] = puVar2[-1];\n      puVar2[-2] = puVar2;\n      puVar8 = puVar2 + 8;\n      puVar2[-1] = 0;\n      *(undefined1 *)puVar2 = 0;\n      puVar4[6] = puVar2[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15);\n      puVar2 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar8 != param_2 + 2);\n    puVar2 = local_28 + (((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8;\n  }\n  do {\n    *puVar2 = puVar2 + 2;\n                    \n    FUN_0014fca0(puVar2,*param_3,param_3[1] + *param_3,0);\n    piVar11 = param_3 + 8;\n    puVar5 = puVar2 + 8;\n    puVar2[6] = param_3[6];\n    *(char *)(puVar2 + 7) = (char)param_3[7];\n    *(undefined1 *)((int)puVar2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n    param_3 = piVar11;\n    puVar2 = puVar5;\n  } while (param_4 != piVar11);\n  puVar2 = (undefined4 *)param_1[1];\n  if (param_2 != puVar2) {\n    puVar4 = param_2 + 2;\n    puVar8 = puVar5;\n    do {\n      puVar3 = (undefined4 *)puVar4[-2];\n      *puVar8 = puVar8 + 2;\n      if (puVar4 == puVar3) {\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }\n      else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }\n      uVar1 = puVar4[-1];\n      puVar4[-2] = puVar4;\n      puVar3 = puVar4 + 8;\n      puVar4[-1] = 0;\n      puVar8[1] = uVar1;\n      *(undefined1 *)puVar4 = 0;\n      puVar8[6] = puVar4[4];\n      *(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5);\n      *(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n      puVar4 = puVar3;\n      puVar8 = puVar8 + 8;\n    } while (puVar2 + 2 != puVar3);\n    puVar5 = puVar5 + (((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8;\n    puVar2 = (undefined4 *)param_1[1];\n  }\n  puVar4 = (undefined4 *)*param_1;\n  if (puVar4 != puVar2) {\n    do {\n      if ((undefined4 *)*puVar4 != puVar4 + 2) {\n        FUN_003ae080((undefined4 *)*puVar4);\n      }\n      puVar4 = puVar4 + 8;\n    } while (puVar4 != puVar2);\n    puVar2 = (undefined4 *)*param_1;\n  }\n  if (puVar2 != (undefined4 *)0x0) {\n    FUN_003ae080(puVar2);\n  }\n  param_1[1] = puVar5;\n  *param_1 = local_28;\n  param_1[2] = local_28 + local_2c * 8;\n  return;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "undefined4 *puVar2;" (type_identifier "undefined4") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined4 *puVar3;" (type_identifier "undefined4") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined4 *puVar5;" (type_identifier "undefined4") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "undefined4 *puVar8;" (type_identifier "undefined4") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "int *piVar11;" (primitive_type "int") (pointer_declarator "*piVar11" (* "*") (identifier "piVar11")) (; ";")) (declaration "int *piVar12;" (primitive_type "int") (pointer_declarator "*piVar12" (* "*") (identifier "piVar12")) (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "uint local_2c;" (type_identifier "uint") (identifier "local_2c") (; ";")) (declaration "undefined4 *local_28;" (type_identifier "undefined4") (pointer_declarator "*local_28" (* "*") (identifier "local_28")) (; ";")) (declaration "undefined4 *local_20;" (type_identifier "undefined4") (pointer_declarator "*local_20" (* "*") (identifier "local_20")) (; ";")) (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 "puVar2 = (undefined4 *)param_1[1];" (assignment_expression "puVar2 = (undefined4 *)param_1[1]" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)param_1[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "iVar6 = (int)param_4 - (int)param_3;" (assignment_expression "iVar6 = (int)param_4 - (int)param_3" (identifier "iVar6") (= "=") (binary_expression "(int)param_4 - (int)param_3" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (- "-") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")))) (; ";")) (expression_statement "uVar7 = iVar6 >> 5;" (assignment_expression "uVar7 = iVar6 >> 5" (identifier "uVar7") (= "=") (binary_expression "iVar6 >> 5" (identifier "iVar6") (>> ">>") (number_literal "5"))) (; ";")) (if_statement "if (uVar7 <= (uint)(param_1[2] - (int)puVar2 >> 5)) {\n    iVar9 = (int)puVar2 - (int)param_2;\n    uVar10 = iVar9 >> 5;\n    if (uVar10 <= uVar7) {\n      piVar11 = (int *)((int)param_3 + iVar9);\n      puVar5 = puVar2;\n      local_20 = puVar2;\n      if (param_4 != piVar11) {\n        do {\n          *local_20 = local_20 + 2;\n                    \n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      puVar5 = puVar5 + (uVar7 - uVar10) * 8;\n      param_1[1] = puVar5;\n      puVar4 = param_2 + 2;\n      if (puVar2 != param_2) {\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = (int)puVar5 + iVar9;\n      local_20 = (undefined4 *)uVar10;\n      if (iVar9 < 1) {\n        return;\n      }\n      do {\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      } while (local_20 != (undefined4 *)0x0);\n      return;\n    }\n    puVar5 = (undefined4 *)((int)puVar2 + (8 - iVar6));\n    puVar4 = puVar2;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar5[-2] == puVar5) {\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }\n      puVar4[1] = puVar5[-1];\n      puVar5[-2] = puVar5;\n      puVar8 = puVar5 + 8;\n      puVar5[-1] = 0;\n      *(undefined1 *)puVar5 = 0;\n      puVar4[6] = puVar5[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15);\n      puVar5 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar2 + 2 != puVar8);\n    param_1[1] = param_1[1] + iVar6;\n    local_20 = (undefined4 *)((int)puVar2 + (-0x18 - iVar6));\n    iVar9 = (int)puVar2 + (-(int)param_2 - iVar6);\n    iVar13 = iVar9 >> 5;\n    puVar2 = puVar2 + -6;\n    if (0 < iVar9) {\n      do {\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      } while (iVar13 != 0);\n    }\n    local_20 = (undefined4 *)uVar7;\n    if (iVar6 < 1) {\n      return;\n    }\n    do {\n      FUN_003b5c90(param_2,param_3);\n      param_2[6] = param_3[6];\n      *(char *)(param_2 + 7) = (char)param_3[7];\n      *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n      local_20 = (undefined4 *)((int)local_20 - 1);\n      param_3 = param_3 + 8;\n      param_2 = param_2 + 8;\n    } while (local_20 != (undefined4 *)0x0);\n    return;\n  }" (if "if") (parenthesized_expression "(uVar7 <= (uint)(param_1[2] - (int)puVar2 >> 5))" (( "(") (binary_expression "uVar7 <= (uint)(param_1[2] - (int)puVar2 >> 5)" (identifier "uVar7") (<= "<=") (call_expression "(uint)(param_1[2] - (int)puVar2 >> 5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_1[2] - (int)puVar2 >> 5)" (( "(") (binary_expression "param_1[2] - (int)puVar2 >> 5" (binary_expression "param_1[2] - (int)puVar2" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (- "-") (cast_expression "(int)puVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar2"))) (>> ">>") (number_literal "5")) () ")")))) () ")")) (compound_statement "{\n    iVar9 = (int)puVar2 - (int)param_2;\n    uVar10 = iVar9 >> 5;\n    if (uVar10 <= uVar7) {\n      piVar11 = (int *)((int)param_3 + iVar9);\n      puVar5 = puVar2;\n      local_20 = puVar2;\n      if (param_4 != piVar11) {\n        do {\n          *local_20 = local_20 + 2;\n                    \n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      puVar5 = puVar5 + (uVar7 - uVar10) * 8;\n      param_1[1] = puVar5;\n      puVar4 = param_2 + 2;\n      if (puVar2 != param_2) {\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = (int)puVar5 + iVar9;\n      local_20 = (undefined4 *)uVar10;\n      if (iVar9 < 1) {\n        return;\n      }\n      do {\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      } while (local_20 != (undefined4 *)0x0);\n      return;\n    }\n    puVar5 = (undefined4 *)((int)puVar2 + (8 - iVar6));\n    puVar4 = puVar2;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar5[-2] == puVar5) {\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }\n      puVar4[1] = puVar5[-1];\n      puVar5[-2] = puVar5;\n      puVar8 = puVar5 + 8;\n      puVar5[-1] = 0;\n      *(undefined1 *)puVar5 = 0;\n      puVar4[6] = puVar5[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15);\n      puVar5 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar2 + 2 != puVar8);\n    param_1[1] = param_1[1] + iVar6;\n    local_20 = (undefined4 *)((int)puVar2 + (-0x18 - iVar6));\n    iVar9 = (int)puVar2 + (-(int)param_2 - iVar6);\n    iVar13 = iVar9 >> 5;\n    puVar2 = puVar2 + -6;\n    if (0 < iVar9) {\n      do {\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      } while (iVar13 != 0);\n    }\n    local_20 = (undefined4 *)uVar7;\n    if (iVar6 < 1) {\n      return;\n    }\n    do {\n      FUN_003b5c90(param_2,param_3);\n      param_2[6] = param_3[6];\n      *(char *)(param_2 + 7) = (char)param_3[7];\n      *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n      local_20 = (undefined4 *)((int)local_20 - 1);\n      param_3 = param_3 + 8;\n      param_2 = param_2 + 8;\n    } while (local_20 != (undefined4 *)0x0);\n    return;\n  }" ({ "{") (expression_statement "iVar9 = (int)puVar2 - (int)param_2;" (assignment_expression "iVar9 = (int)puVar2 - (int)param_2" (identifier "iVar9") (= "=") (binary_expression "(int)puVar2 - (int)param_2" (cast_expression "(int)puVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar2")) (- "-") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")))) (; ";")) (expression_statement "uVar10 = iVar9 >> 5;" (assignment_expression "uVar10 = iVar9 >> 5" (identifier "uVar10") (= "=") (binary_expression "iVar9 >> 5" (identifier "iVar9") (>> ">>") (number_literal "5"))) (; ";")) (if_statement "if (uVar10 <= uVar7) {\n      piVar11 = (int *)((int)param_3 + iVar9);\n      puVar5 = puVar2;\n      local_20 = puVar2;\n      if (param_4 != piVar11) {\n        do {\n          *local_20 = local_20 + 2;\n                    \n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      puVar5 = puVar5 + (uVar7 - uVar10) * 8;\n      param_1[1] = puVar5;\n      puVar4 = param_2 + 2;\n      if (puVar2 != param_2) {\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = (int)puVar5 + iVar9;\n      local_20 = (undefined4 *)uVar10;\n      if (iVar9 < 1) {\n        return;\n      }\n      do {\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      } while (local_20 != (undefined4 *)0x0);\n      return;\n    }" (if "if") (parenthesized_expression "(uVar10 <= uVar7)" (( "(") (binary_expression "uVar10 <= uVar7" (identifier "uVar10") (<= "<=") (identifier "uVar7")) () ")")) (compound_statement "{\n      piVar11 = (int *)((int)param_3 + iVar9);\n      puVar5 = puVar2;\n      local_20 = puVar2;\n      if (param_4 != piVar11) {\n        do {\n          *local_20 = local_20 + 2;\n                    \n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      puVar5 = puVar5 + (uVar7 - uVar10) * 8;\n      param_1[1] = puVar5;\n      puVar4 = param_2 + 2;\n      if (puVar2 != param_2) {\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }\n      param_1[1] = (int)puVar5 + iVar9;\n      local_20 = (undefined4 *)uVar10;\n      if (iVar9 < 1) {\n        return;\n      }\n      do {\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      } while (local_20 != (undefined4 *)0x0);\n      return;\n    }" ({ "{") (expression_statement "piVar11 = (int *)((int)param_3 + iVar9);" (assignment_expression "piVar11 = (int *)((int)param_3 + iVar9)" (identifier "piVar11") (= "=") (cast_expression "(int *)((int)param_3 + iVar9)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_3 + iVar9)" (( "(") (binary_expression "(int)param_3 + iVar9" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (+ "+") (identifier "iVar9")) () ")")))) (; ";")) (expression_statement "puVar5 = puVar2;" (assignment_expression "puVar5 = puVar2" (identifier "puVar5") (= "=") (identifier "puVar2")) (; ";")) (expression_statement "local_20 = puVar2;" (assignment_expression "local_20 = puVar2" (identifier "local_20") (= "=") (identifier "puVar2")) (; ";")) (if_statement "if (param_4 != piVar11) {\n        do {\n          *local_20 = local_20 + 2;\n                    \n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }" (if "if") (parenthesized_expression "(param_4 != piVar11)" (( "(") (binary_expression "param_4 != piVar11" (identifier "param_4") (!= "!=") (identifier "piVar11")) () ")")) (compound_statement "{\n        do {\n          *local_20 = local_20 + 2;\n                    \n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);\n        puVar5 = (undefined4 *)param_1[1];\n      }" ({ "{") (do_statement "do {\n          *local_20 = local_20 + 2;\n                    \n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        } while (param_4 != piVar12);" (do "do") (compound_statement "{\n          *local_20 = local_20 + 2;\n                    \n          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);\n          piVar12 = piVar11 + 8;\n          local_20[6] = piVar11[6];\n          *(char *)(local_20 + 7) = (char)piVar11[7];\n          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);\n          piVar11 = piVar12;\n          local_20 = local_20 + 8;\n        }" ({ "{") (expression_statement "*local_20 = local_20 + 2;" (assignment_expression "*local_20 = local_20 + 2" (pointer_expression "*local_20" (* "*") (identifier "local_20")) (= "=") (binary_expression "local_20 + 2" (identifier "local_20") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);" (call_expression "FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0)" (identifier "FUN_0014fca0") (argument_list "(local_20,*piVar11,piVar11[1] + *piVar11,0)" (( "(") (identifier "local_20") (, ",") (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (, ",") (binary_expression "piVar11[1] + *piVar11" (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]")) (+ "+") (pointer_expression "*piVar11" (* "*") (identifier "piVar11"))) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "piVar12 = piVar11 + 8;" (assignment_expression "piVar12 = piVar11 + 8" (identifier "piVar12") (= "=") (binary_expression "piVar11 + 8" (identifier "piVar11") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "local_20[6] = piVar11[6];" (assignment_expression "local_20[6] = piVar11[6]" (subscript_expression "local_20[6]" (identifier "local_20") ([ "[") (number_literal "6") (] "]")) (= "=") (subscript_expression "piVar11[6]" (identifier "piVar11") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "*(char *)(local_20 + 7) = (char)piVar11[7];" (assignment_expression "*(char *)(local_20 + 7) = (char)piVar11[7]" (pointer_expression "*(char *)(local_20 + 7)" (* "*") (cast_expression "(char *)(local_20 + 7)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_20 + 7)" (( "(") (binary_expression "local_20 + 7" (identifier "local_20") (+ "+") (number_literal "7")) () ")")))) (= "=") (cast_expression "(char)piVar11[7]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "piVar11[7]" (identifier "piVar11") ([ "[") (number_literal "7") (] "]")))) (; ";")) (expression_statement "*(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);" (assignment_expression "*(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d)" (pointer_expression "*(undefined1 *)((int)local_20 + 0x1d)" (* "*") (cast_expression "(undefined1 *)((int)local_20 + 0x1d)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_20 + 0x1d)" (( "(") (binary_expression "(int)local_20 + 0x1d" (cast_expression "(int)local_20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_20")) (+ "+") (number_literal "0x1d")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)((int)piVar11 + 0x1d)" (* "*") (cast_expression "(undefined1 *)((int)piVar11 + 0x1d)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar11 + 0x1d)" (( "(") (binary_expression "(int)piVar11 + 0x1d" (cast_expression "(int)piVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar11")) (+ "+") (number_literal "0x1d")) () ")"))))) (; ";")) (expression_statement "piVar11 = piVar12;" (assignment_expression "piVar11 = piVar12" (identifier "piVar11") (= "=") (identifier "piVar12")) (; ";")) (expression_statement "local_20 = local_20 + 8;" (assignment_expression "local_20 = local_20 + 8" (identifier "local_20") (= "=") (binary_expression "local_20 + 8" (identifier "local_20") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_4 != piVar12)" (( "(") (binary_expression "param_4 != piVar12" (identifier "param_4") (!= "!=") (identifier "piVar12")) () ")")) (; ";")) (expression_statement "puVar5 = (undefined4 *)param_1[1];" (assignment_expression "puVar5 = (undefined4 *)param_1[1]" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)param_1[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}"))) (expression_statement "puVar5 = puVar5 + (uVar7 - uVar10) * 8;" (assignment_expression "puVar5 = puVar5 + (uVar7 - uVar10) * 8" (identifier "puVar5") (= "=") (binary_expression "puVar5 + (uVar7 - uVar10) * 8" (identifier "puVar5") (+ "+") (binary_expression "(uVar7 - uVar10) * 8" (parenthesized_expression "(uVar7 - uVar10)" (( "(") (binary_expression "uVar7 - uVar10" (identifier "uVar7") (- "-") (identifier "uVar10")) () ")")) (* "*") (number_literal "8")))) (; ";")) (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 "puVar4 = param_2 + 2;" (assignment_expression "puVar4 = param_2 + 2" (identifier "puVar4") (= "=") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (puVar2 != param_2) {\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }" (if "if") (parenthesized_expression "(puVar2 != param_2)" (( "(") (binary_expression "puVar2 != param_2" (identifier "puVar2") (!= "!=") (identifier "param_2")) () ")")) (compound_statement "{\n        do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);\n        puVar5 = (undefined4 *)param_1[1];\n      }" ({ "{") (do_statement "do {\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\n        } while (puVar2 + 2 != puVar8);" (do "do") (compound_statement "{\n          *puVar5 = puVar5 + 2;\n          if (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }\n          puVar5[1] = puVar4[-1];\n          puVar4[-2] = puVar4;\n          puVar8 = puVar4 + 8;\n          puVar4[-1] = 0;\n          *(undefined1 *)puVar4 = 0;\n          puVar5[6] = puVar4[4];\n          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);\n          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n          puVar4 = puVar8;\n          puVar5 = puVar5 + 8;\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 (puVar4 == (undefined4 *)puVar4[-2]) {\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }\n          else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }" (if "if") (parenthesized_expression "(puVar4 == (undefined4 *)puVar4[-2])" (( "(") (binary_expression "puVar4 == (undefined4 *)puVar4[-2]" (identifier "puVar4") (== "==") (cast_expression "(undefined4 *)puVar4[-2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[-2]" (identifier "puVar4") ([ "[") (number_literal "-2") (] "]")))) () ")")) (compound_statement "{\n            puVar5[2] = *puVar4;\n            puVar5[3] = puVar4[1];\n            puVar5[4] = puVar4[2];\n            puVar5[5] = puVar4[3];\n          }" ({ "{") (expression_statement "puVar5[2] = *puVar4;" (assignment_expression "puVar5[2] = *puVar4" (subscript_expression "puVar5[2]" (identifier "puVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (expression_statement "puVar5[3] = puVar4[1];" (assignment_expression "puVar5[3] = puVar4[1]" (subscript_expression "puVar5[3]" (identifier "puVar5") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar5[4] = puVar4[2];" (assignment_expression "puVar5[4] = puVar4[2]" (subscript_expression "puVar5[4]" (identifier "puVar5") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar5[5] = puVar4[3];" (assignment_expression "puVar5[5] = puVar4[3]" (subscript_expression "puVar5[5]" (identifier "puVar5") ([ "[") (number_literal "5") (] "]")) (= "=") (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }" (else "else") (compound_statement "{\n            *puVar5 = (undefined4 *)puVar4[-2];\n            puVar5[2] = *puVar4;\n          }" ({ "{") (expression_statement "*puVar5 = (undefined4 *)puVar4[-2];" (assignment_expression "*puVar5 = (undefined4 *)puVar4[-2]" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (cast_expression "(undefined4 *)puVar4[-2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[-2]" (identifier "puVar4") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "puVar5[2] = *puVar4;" (assignment_expression "puVar5[2] = *puVar4" (subscript_expression "puVar5[2]" (identifier "puVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (} "}")))) (expression_statement "puVar5[1] = puVar4[-1];" (assignment_expression "puVar5[1] = puVar4[-1]" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "puVar4[-1]" (identifier "puVar4") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "puVar4[-2] = puVar4;" (assignment_expression "puVar4[-2] = puVar4" (subscript_expression "puVar4[-2]" (identifier "puVar4") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "puVar8 = puVar4 + 8;" (assignment_expression "puVar8 = puVar4 + 8" (identifier "puVar8") (= "=") (binary_expression "puVar4 + 8" (identifier "puVar4") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "puVar4[-1] = 0;" (assignment_expression "puVar4[-1] = 0" (subscript_expression "puVar4[-1]" (identifier "puVar4") ([ "[") (number_literal "-1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)puVar4 = 0;" (assignment_expression "*(undefined1 *)puVar4 = 0" (pointer_expression "*(undefined1 *)puVar4" (* "*") (cast_expression "(undefined1 *)puVar4" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar4"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar5[6] = puVar4[4];" (assignment_expression "puVar5[6] = puVar4[4]" (subscript_expression "puVar5[6]" (identifier "puVar5") ([ "[") (number_literal "6") (] "]")) (= "=") (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "*(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);" (assignment_expression "*(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5)" (pointer_expression "*(undefined1 *)(puVar5 + 7)" (* "*") (cast_expression "(undefined1 *)(puVar5 + 7)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 7)" (( "(") (binary_expression "puVar5 + 7" (identifier "puVar5") (+ "+") (number_literal "7")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)(puVar4 + 5)" (* "*") (cast_expression "(undefined1 *)(puVar4 + 5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 5)" (( "(") (binary_expression "puVar4 + 5" (identifier "puVar4") (+ "+") (number_literal "5")) () ")"))))) (; ";")) (expression_statement "*(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);" (assignment_expression "*(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15)" (pointer_expression "*(undefined1 *)((int)puVar5 + 0x1d)" (* "*") (cast_expression "(undefined1 *)((int)puVar5 + 0x1d)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 0x1d)" (( "(") (binary_expression "(int)puVar5 + 0x1d" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "0x1d")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)((int)puVar4 + 0x15)" (* "*") (cast_expression "(undefined1 *)((int)puVar4 + 0x15)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar4 + 0x15)" (( "(") (binary_expression "(int)puVar4 + 0x15" (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4")) (+ "+") (number_literal "0x15")) () ")"))))) (; ";")) (expression_statement "puVar4 = puVar8;" (assignment_expression "puVar4 = puVar8" (identifier "puVar4") (= "=") (identifier "puVar8")) (; ";")) (expression_statement "puVar5 = puVar5 + 8;" (assignment_expression "puVar5 = puVar5 + 8" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 8" (identifier "puVar5") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar2 + 2 != puVar8)" (( "(") (binary_expression "puVar2 + 2 != puVar8" (binary_expression "puVar2 + 2" (identifier "puVar2") (+ "+") (number_literal "2")) (!= "!=") (identifier "puVar8")) () ")")) (; ";")) (expression_statement "puVar5 = (undefined4 *)param_1[1];" (assignment_expression "puVar5 = (undefined4 *)param_1[1]" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)param_1[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}"))) (expression_statement "param_1[1] = (int)puVar5 + iVar9;" (assignment_expression "param_1[1] = (int)puVar5 + iVar9" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "(int)puVar5 + iVar9" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (identifier "iVar9"))) (; ";")) (expression_statement "local_20 = (undefined4 *)uVar10;" (assignment_expression "local_20 = (undefined4 *)uVar10" (identifier "local_20") (= "=") (cast_expression "(undefined4 *)uVar10" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar10"))) (; ";")) (if_statement "if (iVar9 < 1) {\n        return;\n      }" (if "if") (parenthesized_expression "(iVar9 < 1)" (( "(") (binary_expression "iVar9 < 1" (identifier "iVar9") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (do_statement "do {\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      } while (local_20 != (undefined4 *)0x0);" (do "do") (compound_statement "{\n        FUN_003b5c90(param_2,param_3);\n        param_2[6] = param_3[6];\n        *(char *)(param_2 + 7) = (char)param_3[7];\n        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n        local_20 = (undefined4 *)((int)local_20 - 1);\n        param_3 = param_3 + 8;\n        param_2 = param_2 + 8;\n      }" ({ "{") (expression_statement "FUN_003b5c90(param_2,param_3);" (call_expression "FUN_003b5c90(param_2,param_3)" (identifier "FUN_003b5c90") (argument_list "(param_2,param_3)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "param_2[6] = param_3[6];" (assignment_expression "param_2[6] = param_3[6]" (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (= "=") (subscript_expression "param_3[6]" (identifier "param_3") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "*(char *)(param_2 + 7) = (char)param_3[7];" (assignment_expression "*(char *)(param_2 + 7) = (char)param_3[7]" (pointer_expression "*(char *)(param_2 + 7)" (* "*") (cast_expression "(char *)(param_2 + 7)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 7)" (( "(") (binary_expression "param_2 + 7" (identifier "param_2") (+ "+") (number_literal "7")) () ")")))) (= "=") (cast_expression "(char)param_3[7]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_3[7]" (identifier "param_3") ([ "[") (number_literal "7") (] "]")))) (; ";")) (expression_statement "*(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);" (assignment_expression "*(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d)" (pointer_expression "*(undefined1 *)((int)param_2 + 0x1d)" (* "*") (cast_expression "(undefined1 *)((int)param_2 + 0x1d)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + 0x1d)" (( "(") (binary_expression "(int)param_2 + 0x1d" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "0x1d")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)((int)param_3 + 0x1d)" (* "*") (cast_expression "(undefined1 *)((int)param_3 + 0x1d)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_3 + 0x1d)" (( "(") (binary_expression "(int)param_3 + 0x1d" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (+ "+") (number_literal "0x1d")) () ")"))))) (; ";")) (expression_statement "local_20 = (undefined4 *)((int)local_20 - 1);" (assignment_expression "local_20 = (undefined4 *)((int)local_20 - 1)" (identifier "local_20") (= "=") (cast_expression "(undefined4 *)((int)local_20 - 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_20 - 1)" (( "(") (binary_expression "(int)local_20 - 1" (cast_expression "(int)local_20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_20")) (- "-") (number_literal "1")) () ")")))) (; ";")) (expression_statement "param_3 = param_3 + 8;" (assignment_expression "param_3 = param_3 + 8" (identifier "param_3") (= "=") (binary_expression "param_3 + 8" (identifier "param_3") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "param_2 = param_2 + 8;" (assignment_expression "param_2 = param_2 + 8" (identifier "param_2") (= "=") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_20 != (undefined4 *)0x0)" (( "(") (binary_expression "local_20 != (undefined4 *)0x0" (identifier "local_20") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "puVar5 = (undefined4 *)((int)puVar2 + (8 - iVar6));" (assignment_expression "puVar5 = (undefined4 *)((int)puVar2 + (8 - iVar6))" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)((int)puVar2 + (8 - iVar6))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar2 + (8 - iVar6))" (( "(") (binary_expression "(int)puVar2 + (8 - iVar6)" (cast_expression "(int)puVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar2")) (+ "+") (parenthesized_expression "(8 - iVar6)" (( "(") (binary_expression "8 - iVar6" (number_literal "8") (- "-") (identifier "iVar6")) () ")"))) () ")")))) (; ";")) (expression_statement "puVar4 = puVar2;" (assignment_expression "puVar4 = puVar2" (identifier "puVar4") (= "=") (identifier "puVar2")) (; ";")) (do_statement "do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar5[-2] == puVar5) {\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }\n      puVar4[1] = puVar5[-1];\n      puVar5[-2] = puVar5;\n      puVar8 = puVar5 + 8;\n      puVar5[-1] = 0;\n      *(undefined1 *)puVar5 = 0;\n      puVar4[6] = puVar5[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15);\n      puVar5 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar2 + 2 != puVar8);" (do "do") (compound_statement "{\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar5[-2] == puVar5) {\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }\n      puVar4[1] = puVar5[-1];\n      puVar5[-2] = puVar5;\n      puVar8 = puVar5 + 8;\n      puVar5[-1] = 0;\n      *(undefined1 *)puVar5 = 0;\n      puVar4[6] = puVar5[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15);\n      puVar5 = puVar8;\n      puVar4 = puVar4 + 8;\n    }" ({ "{") (expression_statement "*puVar4 = puVar4 + 2;" (assignment_expression "*puVar4 = puVar4 + 2" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (binary_expression "puVar4 + 2" (identifier "puVar4") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if ((undefined4 *)puVar5[-2] == puVar5) {\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }" (if "if") (parenthesized_expression "((undefined4 *)puVar5[-2] == puVar5)" (( "(") (binary_expression "(undefined4 *)puVar5[-2] == puVar5" (cast_expression "(undefined4 *)puVar5[-2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar5[-2]" (identifier "puVar5") ([ "[") (number_literal "-2") (] "]"))) (== "==") (identifier "puVar5")) () ")")) (compound_statement "{\n        puVar4[2] = *puVar5;\n        puVar4[3] = puVar5[1];\n        puVar4[4] = puVar5[2];\n        puVar4[5] = puVar5[3];\n      }" ({ "{") (expression_statement "puVar4[2] = *puVar5;" (assignment_expression "puVar4[2] = *puVar5" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "puVar4[3] = puVar5[1];" (assignment_expression "puVar4[3] = puVar5[1]" (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar4[4] = puVar5[2];" (assignment_expression "puVar4[4] = puVar5[2]" (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "puVar5[2]" (identifier "puVar5") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar4[5] = puVar5[3];" (assignment_expression "puVar4[5] = puVar5[3]" (subscript_expression "puVar4[5]" (identifier "puVar4") ([ "[") (number_literal "5") (] "]")) (= "=") (subscript_expression "puVar5[3]" (identifier "puVar5") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }" (else "else") (compound_statement "{\n        *puVar4 = (undefined4 *)puVar5[-2];\n        puVar4[2] = *puVar5;\n      }" ({ "{") (expression_statement "*puVar4 = (undefined4 *)puVar5[-2];" (assignment_expression "*puVar4 = (undefined4 *)puVar5[-2]" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (cast_expression "(undefined4 *)puVar5[-2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar5[-2]" (identifier "puVar5") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "puVar4[2] = *puVar5;" (assignment_expression "puVar4[2] = *puVar5" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (} "}")))) (expression_statement "puVar4[1] = puVar5[-1];" (assignment_expression "puVar4[1] = puVar5[-1]" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (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 "puVar8 = puVar5 + 8;" (assignment_expression "puVar8 = puVar5 + 8" (identifier "puVar8") (= "=") (binary_expression "puVar5 + 8" (identifier "puVar5") (+ "+") (number_literal "8"))) (; ";")) (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 "puVar4[6] = puVar5[4];" (assignment_expression "puVar4[6] = puVar5[4]" (subscript_expression "puVar4[6]" (identifier "puVar4") ([ "[") (number_literal "6") (] "]")) (= "=") (subscript_expression "puVar5[4]" (identifier "puVar5") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "*(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5);" (assignment_expression "*(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5)" (pointer_expression "*(undefined1 *)(puVar4 + 7)" (* "*") (cast_expression "(undefined1 *)(puVar4 + 7)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 7)" (( "(") (binary_expression "puVar4 + 7" (identifier "puVar4") (+ "+") (number_literal "7")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)(puVar5 + 5)" (* "*") (cast_expression "(undefined1 *)(puVar5 + 5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 5)" (( "(") (binary_expression "puVar5 + 5" (identifier "puVar5") (+ "+") (number_literal "5")) () ")"))))) (; ";")) (expression_statement "*(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15);" (assignment_expression "*(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15)" (pointer_expression "*(undefined1 *)((int)puVar4 + 0x1d)" (* "*") (cast_expression "(undefined1 *)((int)puVar4 + 0x1d)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar4 + 0x1d)" (( "(") (binary_expression "(int)puVar4 + 0x1d" (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4")) (+ "+") (number_literal "0x1d")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)((int)puVar5 + 0x15)" (* "*") (cast_expression "(undefined1 *)((int)puVar5 + 0x15)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 0x15)" (( "(") (binary_expression "(int)puVar5 + 0x15" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "0x15")) () ")"))))) (; ";")) (expression_statement "puVar5 = puVar8;" (assignment_expression "puVar5 = puVar8" (identifier "puVar5") (= "=") (identifier "puVar8")) (; ";")) (expression_statement "puVar4 = puVar4 + 8;" (assignment_expression "puVar4 = puVar4 + 8" (identifier "puVar4") (= "=") (binary_expression "puVar4 + 8" (identifier "puVar4") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar2 + 2 != puVar8)" (( "(") (binary_expression "puVar2 + 2 != puVar8" (binary_expression "puVar2 + 2" (identifier "puVar2") (+ "+") (number_literal "2")) (!= "!=") (identifier "puVar8")) () ")")) (; ";")) (expression_statement "param_1[1] = param_1[1] + iVar6;" (assignment_expression "param_1[1] = param_1[1] + iVar6" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "param_1[1] + iVar6" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (identifier "iVar6"))) (; ";")) (expression_statement "local_20 = (undefined4 *)((int)puVar2 + (-0x18 - iVar6));" (assignment_expression "local_20 = (undefined4 *)((int)puVar2 + (-0x18 - iVar6))" (identifier "local_20") (= "=") (cast_expression "(undefined4 *)((int)puVar2 + (-0x18 - iVar6))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar2 + (-0x18 - iVar6))" (( "(") (binary_expression "(int)puVar2 + (-0x18 - iVar6)" (cast_expression "(int)puVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar2")) (+ "+") (parenthesized_expression "(-0x18 - iVar6)" (( "(") (binary_expression "-0x18 - iVar6" (number_literal "-0x18") (- "-") (identifier "iVar6")) () ")"))) () ")")))) (; ";")) (expression_statement "iVar9 = (int)puVar2 + (-(int)param_2 - iVar6);" (assignment_expression "iVar9 = (int)puVar2 + (-(int)param_2 - iVar6)" (identifier "iVar9") (= "=") (binary_expression "(int)puVar2 + (-(int)param_2 - iVar6)" (cast_expression "(int)puVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar2")) (+ "+") (parenthesized_expression "(-(int)param_2 - iVar6)" (( "(") (binary_expression "-(int)param_2 - iVar6" (unary_expression "-(int)param_2" (- "-") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) (- "-") (identifier "iVar6")) () ")")))) (; ";")) (expression_statement "iVar13 = iVar9 >> 5;" (assignment_expression "iVar13 = iVar9 >> 5" (identifier "iVar13") (= "=") (binary_expression "iVar9 >> 5" (identifier "iVar9") (>> ">>") (number_literal "5"))) (; ";")) (expression_statement "puVar2 = puVar2 + -6;" (assignment_expression "puVar2 = puVar2 + -6" (identifier "puVar2") (= "=") (binary_expression "puVar2 + -6" (identifier "puVar2") (+ "+") (number_literal "-6"))) (; ";")) (if_statement "if (0 < iVar9) {\n      do {\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      } while (iVar13 != 0);\n    }" (if "if") (parenthesized_expression "(0 < iVar9)" (( "(") (binary_expression "0 < iVar9" (number_literal "0") (< "<") (identifier "iVar9")) () ")")) (compound_statement "{\n      do {\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      } while (iVar13 != 0);\n    }" ({ "{") (do_statement "do {\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      } while (iVar13 != 0);" (do "do") (compound_statement "{\n        puVar5 = (undefined4 *)puVar2[-2];\n        puVar4 = (undefined4 *)local_20[-2];\n        if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }\nLAB_0034596d:\n        local_20[-1] = 0;\n        *(undefined1 *)local_20[-2] = 0;\n        puVar2[4] = local_20[4];\n        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);\n        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);\n        iVar13 = iVar13 + -1;\n        puVar2 = puVar2 + -8;\n        local_20 = local_20 + -8;\n      }" ({ "{") (expression_statement "puVar5 = (undefined4 *)puVar2[-2];" (assignment_expression "puVar5 = (undefined4 *)puVar2[-2]" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)puVar2[-2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[-2]" (identifier "puVar2") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "puVar4 = (undefined4 *)local_20[-2];" (assignment_expression "puVar4 = (undefined4 *)local_20[-2]" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)local_20[-2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_20[-2]" (identifier "local_20") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (if_statement "if (puVar4 == local_20) {\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }\n        else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }" (if "if") (parenthesized_expression "(puVar4 == local_20)" (( "(") (binary_expression "puVar4 == local_20" (identifier "puVar4") (== "==") (identifier "local_20")) () ")")) (compound_statement "{\n          __n = local_20[-1];\n          if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }\n          puVar2[-1] = __n;\n          *(undefined1 *)((int)puVar5 + __n) = 0;\n        }" ({ "{") (expression_statement "__n = local_20[-1];" (assignment_expression "__n = local_20[-1]" (identifier "__n") (= "=") (subscript_expression "local_20[-1]" (identifier "local_20") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (if_statement "if (__n != 0) {\n            if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-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 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n          }" ({ "{") (if_statement "if (__n == 1) {\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }\n            else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }" (if "if") (parenthesized_expression "(__n == 1)" (( "(") (binary_expression "__n == 1" (identifier "__n") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n              *(undefined1 *)puVar5 = *(undefined1 *)local_20;\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }" ({ "{") (expression_statement "*(undefined1 *)puVar5 = *(undefined1 *)local_20;" (assignment_expression "*(undefined1 *)puVar5 = *(undefined1 *)local_20" (pointer_expression "*(undefined1 *)puVar5" (* "*") (cast_expression "(undefined1 *)puVar5" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar5"))) (= "=") (pointer_expression "*(undefined1 *)local_20" (* "*") (cast_expression "(undefined1 *)local_20" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_20")))) (; ";")) (expression_statement "puVar5 = (undefined4 *)puVar2[-2];" (assignment_expression "puVar5 = (undefined4 *)puVar2[-2]" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)puVar2[-2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[-2]" (identifier "puVar2") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "__n = local_20[-1];" (assignment_expression "__n = local_20[-1]" (identifier "__n") (= "=") (subscript_expression "local_20[-1]" (identifier "local_20") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }" (else "else") (compound_statement "{\n              memcpy(puVar5,local_20,__n);\n              puVar5 = (undefined4 *)puVar2[-2];\n              __n = local_20[-1];\n            }" ({ "{") (expression_statement "memcpy(puVar5,local_20,__n);" (call_expression "memcpy(puVar5,local_20,__n)" (identifier "memcpy") (argument_list "(puVar5,local_20,__n)" (( "(") (identifier "puVar5") (, ",") (identifier "local_20") (, ",") (identifier "__n") () ")"))) (; ";")) (expression_statement "puVar5 = (undefined4 *)puVar2[-2];" (assignment_expression "puVar5 = (undefined4 *)puVar2[-2]" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)puVar2[-2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[-2]" (identifier "puVar2") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "__n = local_20[-1];" (assignment_expression "__n = local_20[-1]" (identifier "__n") (= "=") (subscript_expression "local_20[-1]" (identifier "local_20") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "puVar2[-1] = __n;" (assignment_expression "puVar2[-1] = __n" (subscript_expression "puVar2[-1]" (identifier "puVar2") ([ "[") (number_literal "-1") (] "]")) (= "=") (identifier "__n")) (; ";")) (expression_statement "*(undefined1 *)((int)puVar5 + __n) = 0;" (assignment_expression "*(undefined1 *)((int)puVar5 + __n) = 0" (pointer_expression "*(undefined1 *)((int)puVar5 + __n)" (* "*") (cast_expression "(undefined1 *)((int)puVar5 + __n)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + __n)" (( "(") (binary_expression "(int)puVar5 + __n" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (identifier "__n")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }" (else "else") (compound_statement "{\n          if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }\n          local_20[-2] = local_20;\n        }" ({ "{") (if_statement "if (puVar5 == puVar2) {\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }\n          else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }" (if "if") (parenthesized_expression "(puVar5 == puVar2)" (( "(") (binary_expression "puVar5 == puVar2" (identifier "puVar5") (== "==") (identifier "puVar2")) () ")")) (compound_statement "{\n            puVar2[-2] = puVar4;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n          }" ({ "{") (expression_statement "puVar2[-2] = puVar4;" (assignment_expression "puVar2[-2] = puVar4" (subscript_expression "puVar2[-2]" (identifier "puVar2") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "puVar2[-1] = local_20[-1];" (assignment_expression "puVar2[-1] = local_20[-1]" (subscript_expression "puVar2[-1]" (identifier "puVar2") ([ "[") (number_literal "-1") (] "]")) (= "=") (subscript_expression "local_20[-1]" (identifier "local_20") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "*puVar2 = *local_20;" (assignment_expression "*puVar2 = *local_20" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "*local_20" (* "*") (identifier "local_20"))) (; ";")) (} "}")) (else_clause "else {\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }" (else "else") (compound_statement "{\n            puVar2[-2] = puVar4;\n            uVar1 = *puVar2;\n            puVar2[-1] = local_20[-1];\n            *puVar2 = *local_20;\n            if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }\n          }" ({ "{") (expression_statement "puVar2[-2] = puVar4;" (assignment_expression "puVar2[-2] = puVar4" (subscript_expression "puVar2[-2]" (identifier "puVar2") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "uVar1 = *puVar2;" (assignment_expression "uVar1 = *puVar2" (identifier "uVar1") (= "=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (; ";")) (expression_statement "puVar2[-1] = local_20[-1];" (assignment_expression "puVar2[-1] = local_20[-1]" (subscript_expression "puVar2[-1]" (identifier "puVar2") ([ "[") (number_literal "-1") (] "]")) (= "=") (subscript_expression "local_20[-1]" (identifier "local_20") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "*puVar2 = *local_20;" (assignment_expression "*puVar2 = *local_20" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "*local_20" (* "*") (identifier "local_20"))) (; ";")) (if_statement "if (puVar5 != (undefined4 *)0x0) {\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }" (if "if") (parenthesized_expression "(puVar5 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar5 != (undefined4 *)0x0" (identifier "puVar5") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              local_20[-2] = puVar5;\n              *local_20 = uVar1;\n              goto LAB_0034596d;\n            }" ({ "{") (expression_statement "local_20[-2] = puVar5;" (assignment_expression "local_20[-2] = puVar5" (subscript_expression "local_20[-2]" (identifier "local_20") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "puVar5")) (; ";")) (expression_statement "*local_20 = uVar1;" (assignment_expression "*local_20 = uVar1" (pointer_expression "*local_20" (* "*") (identifier "local_20")) (= "=") (identifier "uVar1")) (; ";")) (goto_statement "goto LAB_0034596d;" (goto "goto") (statement_identifier "LAB_0034596d") (; ";")) (} "}"))) (} "}")))) (expression_statement "local_20[-2] = local_20;" (assignment_expression "local_20[-2] = local_20" (subscript_expression "local_20[-2]" (identifier "local_20") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "local_20")) (; ";")) (} "}")))) (labeled_statement "LAB_0034596d:\n        local_20[-1] = 0;" (statement_identifier "LAB_0034596d") (: ":") (expression_statement "local_20[-1] = 0;" (assignment_expression "local_20[-1] = 0" (subscript_expression "local_20[-1]" (identifier "local_20") ([ "[") (number_literal "-1") (] "]")) (= "=") (number_literal "0")) (; ";"))) (expression_statement "*(undefined1 *)local_20[-2] = 0;" (assignment_expression "*(undefined1 *)local_20[-2] = 0" (pointer_expression "*(undefined1 *)local_20[-2]" (* "*") (cast_expression "(undefined1 *)local_20[-2]" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_20[-2]" (identifier "local_20") ([ "[") (number_literal "-2") (] "]")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[4] = local_20[4];" (assignment_expression "puVar2[4] = local_20[4]" (subscript_expression "puVar2[4]" (identifier "puVar2") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "local_20[4]" (identifier "local_20") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "*(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);" (assignment_expression "*(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5)" (pointer_expression "*(undefined1 *)(puVar2 + 5)" (* "*") (cast_expression "(undefined1 *)(puVar2 + 5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 5)" (( "(") (binary_expression "puVar2 + 5" (identifier "puVar2") (+ "+") (number_literal "5")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)(local_20 + 5)" (* "*") (cast_expression "(undefined1 *)(local_20 + 5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_20 + 5)" (( "(") (binary_expression "local_20 + 5" (identifier "local_20") (+ "+") (number_literal "5")) () ")"))))) (; ";")) (expression_statement "*(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);" (assignment_expression "*(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15)" (pointer_expression "*(undefined1 *)((int)puVar2 + 0x15)" (* "*") (cast_expression "(undefined1 *)((int)puVar2 + 0x15)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar2 + 0x15)" (( "(") (binary_expression "(int)puVar2 + 0x15" (cast_expression "(int)puVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar2")) (+ "+") (number_literal "0x15")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)((int)local_20 + 0x15)" (* "*") (cast_expression "(undefined1 *)((int)local_20 + 0x15)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_20 + 0x15)" (( "(") (binary_expression "(int)local_20 + 0x15" (cast_expression "(int)local_20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_20")) (+ "+") (number_literal "0x15")) () ")"))))) (; ";")) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + -1" (identifier "iVar13") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar2 = puVar2 + -8;" (assignment_expression "puVar2 = puVar2 + -8" (identifier "puVar2") (= "=") (binary_expression "puVar2 + -8" (identifier "puVar2") (+ "+") (number_literal "-8"))) (; ";")) (expression_statement "local_20 = local_20 + -8;" (assignment_expression "local_20 = local_20 + -8" (identifier "local_20") (= "=") (binary_expression "local_20 + -8" (identifier "local_20") (+ "+") (number_literal "-8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "local_20 = (undefined4 *)uVar7;" (assignment_expression "local_20 = (undefined4 *)uVar7" (identifier "local_20") (= "=") (cast_expression "(undefined4 *)uVar7" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar7"))) (; ";")) (if_statement "if (iVar6 < 1) {\n      return;\n    }" (if "if") (parenthesized_expression "(iVar6 < 1)" (( "(") (binary_expression "iVar6 < 1" (identifier "iVar6") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (do_statement "do {\n      FUN_003b5c90(param_2,param_3);\n      param_2[6] = param_3[6];\n      *(char *)(param_2 + 7) = (char)param_3[7];\n      *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n      local_20 = (undefined4 *)((int)local_20 - 1);\n      param_3 = param_3 + 8;\n      param_2 = param_2 + 8;\n    } while (local_20 != (undefined4 *)0x0);" (do "do") (compound_statement "{\n      FUN_003b5c90(param_2,param_3);\n      param_2[6] = param_3[6];\n      *(char *)(param_2 + 7) = (char)param_3[7];\n      *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n      local_20 = (undefined4 *)((int)local_20 - 1);\n      param_3 = param_3 + 8;\n      param_2 = param_2 + 8;\n    }" ({ "{") (expression_statement "FUN_003b5c90(param_2,param_3);" (call_expression "FUN_003b5c90(param_2,param_3)" (identifier "FUN_003b5c90") (argument_list "(param_2,param_3)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "param_2[6] = param_3[6];" (assignment_expression "param_2[6] = param_3[6]" (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]")) (= "=") (subscript_expression "param_3[6]" (identifier "param_3") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "*(char *)(param_2 + 7) = (char)param_3[7];" (assignment_expression "*(char *)(param_2 + 7) = (char)param_3[7]" (pointer_expression "*(char *)(param_2 + 7)" (* "*") (cast_expression "(char *)(param_2 + 7)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 7)" (( "(") (binary_expression "param_2 + 7" (identifier "param_2") (+ "+") (number_literal "7")) () ")")))) (= "=") (cast_expression "(char)param_3[7]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_3[7]" (identifier "param_3") ([ "[") (number_literal "7") (] "]")))) (; ";")) (expression_statement "*(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);" (assignment_expression "*(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d)" (pointer_expression "*(undefined1 *)((int)param_2 + 0x1d)" (* "*") (cast_expression "(undefined1 *)((int)param_2 + 0x1d)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + 0x1d)" (( "(") (binary_expression "(int)param_2 + 0x1d" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "0x1d")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)((int)param_3 + 0x1d)" (* "*") (cast_expression "(undefined1 *)((int)param_3 + 0x1d)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_3 + 0x1d)" (( "(") (binary_expression "(int)param_3 + 0x1d" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (+ "+") (number_literal "0x1d")) () ")"))))) (; ";")) (expression_statement "local_20 = (undefined4 *)((int)local_20 - 1);" (assignment_expression "local_20 = (undefined4 *)((int)local_20 - 1)" (identifier "local_20") (= "=") (cast_expression "(undefined4 *)((int)local_20 - 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_20 - 1)" (( "(") (binary_expression "(int)local_20 - 1" (cast_expression "(int)local_20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_20")) (- "-") (number_literal "1")) () ")")))) (; ";")) (expression_statement "param_3 = param_3 + 8;" (assignment_expression "param_3 = param_3 + 8" (identifier "param_3") (= "=") (binary_expression "param_3 + 8" (identifier "param_3") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "param_2 = param_2 + 8;" (assignment_expression "param_2 = param_2 + 8" (identifier "param_2") (= "=") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_20 != (undefined4 *)0x0)" (( "(") (binary_expression "local_20 != (undefined4 *)0x0" (identifier "local_20") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "puVar5 = (undefined4 *)*param_1;" (assignment_expression "puVar5 = (undefined4 *)*param_1" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)*param_1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "uVar10 = (int)puVar2 - (int)puVar5 >> 5;" (assignment_expression "uVar10 = (int)puVar2 - (int)puVar5 >> 5" (identifier "uVar10") (= "=") (binary_expression "(int)puVar2 - (int)puVar5 >> 5" (binary_expression "(int)puVar2 - (int)puVar5" (cast_expression "(int)puVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar2")) (- "-") (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5"))) (>> ">>") (number_literal "5"))) (; ";")) (if_statement "if (0x7ffffff - uVar10 < uVar7) {\n                    \n    FUN_003f3a70("vector::_M_range_insert");\n  }" (if "if") (parenthesized_expression "(0x7ffffff - uVar10 < uVar7)" (( "(") (binary_expression "0x7ffffff - uVar10 < uVar7" (binary_expression "0x7ffffff - uVar10" (number_literal "0x7ffffff") (- "-") (identifier "uVar10")) (< "<") (identifier "uVar7")) () ")")) (compound_statement "{\n                    \n    FUN_003f3a70("vector::_M_range_insert");\n  }" ({ "{") (expression_statement "FUN_003f3a70("vector::_M_range_insert");" (call_expression "FUN_003f3a70("vector::_M_range_insert")" (identifier "FUN_003f3a70") (argument_list "("vector::_M_range_insert")" (( "(") (string_literal ""vector::_M_range_insert"" (" """) (string_content "vector::_M_range_insert") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (uVar7 < uVar10) {\n    uVar7 = uVar10;\n  }" (if "if") (parenthesized_expression "(uVar7 < uVar10)" (( "(") (binary_expression "uVar7 < uVar10" (identifier "uVar7") (< "<") (identifier "uVar10")) () ")")) (compound_statement "{\n    uVar7 = uVar10;\n  }" ({ "{") (expression_statement "uVar7 = uVar10;" (assignment_expression "uVar7 = uVar10" (identifier "uVar7") (= "=") (identifier "uVar10")) (; ";")) (} "}"))) (expression_statement "local_2c = uVar10 + uVar7;" (assignment_expression "local_2c = uVar10 + uVar7" (identifier "local_2c") (= "=") (binary_expression "uVar10 + uVar7" (identifier "uVar10") (+ "+") (identifier "uVar7"))) (; ";")) (if_statement "if ((CARRY4(uVar10,uVar7)) || (0x7ffffff < local_2c)) {\n    iVar6 = -0x20;\n    local_2c = 0x7ffffff;\n  }\n  else {\n    local_28 = (undefined4 *)0x0;\n    if (local_2c == 0) goto LAB_00345692;\n    iVar6 = local_2c * 0x20;\n  }" (if "if") (parenthesized_expression "((CARRY4(uVar10,uVar7)) || (0x7ffffff < local_2c))" (( "(") (binary_expression "(CARRY4(uVar10,uVar7)) || (0x7ffffff < local_2c)" (parenthesized_expression "(CARRY4(uVar10,uVar7))" (( "(") (call_expression "CARRY4(uVar10,uVar7)" (identifier "CARRY4") (argument_list "(uVar10,uVar7)" (( "(") (identifier "uVar10") (, ",") (identifier "uVar7") () ")"))) () ")")) (|| "||") (parenthesized_expression "(0x7ffffff < local_2c)" (( "(") (binary_expression "0x7ffffff < local_2c" (number_literal "0x7ffffff") (< "<") (identifier "local_2c")) () ")"))) () ")")) (compound_statement "{\n    iVar6 = -0x20;\n    local_2c = 0x7ffffff;\n  }" ({ "{") (expression_statement "iVar6 = -0x20;" (assignment_expression "iVar6 = -0x20" (identifier "iVar6") (= "=") (number_literal "-0x20")) (; ";")) (expression_statement "local_2c = 0x7ffffff;" (assignment_expression "local_2c = 0x7ffffff" (identifier "local_2c") (= "=") (number_literal "0x7ffffff")) (; ";")) (} "}")) (else_clause "else {\n    local_28 = (undefined4 *)0x0;\n    if (local_2c == 0) goto LAB_00345692;\n    iVar6 = local_2c * 0x20;\n  }" (else "else") (compound_statement "{\n    local_28 = (undefined4 *)0x0;\n    if (local_2c == 0) goto LAB_00345692;\n    iVar6 = local_2c * 0x20;\n  }" ({ "{") (expression_statement "local_28 = (undefined4 *)0x0;" (assignment_expression "local_28 = (undefined4 *)0x0" (identifier "local_28") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (local_2c == 0) goto LAB_00345692;" (if "if") (parenthesized_expression "(local_2c == 0)" (( "(") (binary_expression "local_2c == 0" (identifier "local_2c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00345692;" (goto "goto") (statement_identifier "LAB_00345692") (; ";"))) (expression_statement "iVar6 = local_2c * 0x20;" (assignment_expression "iVar6 = local_2c * 0x20" (identifier "iVar6") (= "=") (binary_expression "local_2c * 0x20" (identifier "local_2c") (* "*") (number_literal "0x20"))) (; ";")) (} "}")))) (expression_statement "local_28 = (undefined4 *)FUN_003ac4d0(iVar6);" (assignment_expression "local_28 = (undefined4 *)FUN_003ac4d0(iVar6)" (identifier "local_28") (= "=") (cast_expression "(undefined4 *)FUN_003ac4d0(iVar6)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_003ac4d0(iVar6)" (identifier "FUN_003ac4d0") (argument_list "(iVar6)" (( "(") (identifier "iVar6") () ")"))))) (; ";")) (expression_statement "puVar5 = (undefined4 *)*param_1;" (assignment_expression "puVar5 = (undefined4 *)*param_1" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)*param_1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (labeled_statement "LAB_00345692:\n  puVar2 = local_28;" (statement_identifier "LAB_00345692") (: ":") (expression_statement "puVar2 = local_28;" (assignment_expression "puVar2 = local_28" (identifier "puVar2") (= "=") (identifier "local_28")) (; ";"))) (if_statement "if (param_2 != puVar5) {\n    puVar2 = puVar5 + 2;\n    puVar4 = local_28;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar2[-2] == puVar2) {\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }\n      puVar4[1] = puVar2[-1];\n      puVar2[-2] = puVar2;\n      puVar8 = puVar2 + 8;\n      puVar2[-1] = 0;\n      *(undefined1 *)puVar2 = 0;\n      puVar4[6] = puVar2[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15);\n      puVar2 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar8 != param_2 + 2);\n    puVar2 = local_28 + (((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8;\n  }" (if "if") (parenthesized_expression "(param_2 != puVar5)" (( "(") (binary_expression "param_2 != puVar5" (identifier "param_2") (!= "!=") (identifier "puVar5")) () ")")) (compound_statement "{\n    puVar2 = puVar5 + 2;\n    puVar4 = local_28;\n    do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar2[-2] == puVar2) {\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }\n      puVar4[1] = puVar2[-1];\n      puVar2[-2] = puVar2;\n      puVar8 = puVar2 + 8;\n      puVar2[-1] = 0;\n      *(undefined1 *)puVar2 = 0;\n      puVar4[6] = puVar2[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15);\n      puVar2 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar8 != param_2 + 2);\n    puVar2 = local_28 + (((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8;\n  }" ({ "{") (expression_statement "puVar2 = puVar5 + 2;" (assignment_expression "puVar2 = puVar5 + 2" (identifier "puVar2") (= "=") (binary_expression "puVar5 + 2" (identifier "puVar5") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar4 = local_28;" (assignment_expression "puVar4 = local_28" (identifier "puVar4") (= "=") (identifier "local_28")) (; ";")) (do_statement "do {\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar2[-2] == puVar2) {\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }\n      puVar4[1] = puVar2[-1];\n      puVar2[-2] = puVar2;\n      puVar8 = puVar2 + 8;\n      puVar2[-1] = 0;\n      *(undefined1 *)puVar2 = 0;\n      puVar4[6] = puVar2[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15);\n      puVar2 = puVar8;\n      puVar4 = puVar4 + 8;\n    } while (puVar8 != param_2 + 2);" (do "do") (compound_statement "{\n      *puVar4 = puVar4 + 2;\n      if ((undefined4 *)puVar2[-2] == puVar2) {\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }\n      puVar4[1] = puVar2[-1];\n      puVar2[-2] = puVar2;\n      puVar8 = puVar2 + 8;\n      puVar2[-1] = 0;\n      *(undefined1 *)puVar2 = 0;\n      puVar4[6] = puVar2[4];\n      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5);\n      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15);\n      puVar2 = puVar8;\n      puVar4 = puVar4 + 8;\n    }" ({ "{") (expression_statement "*puVar4 = puVar4 + 2;" (assignment_expression "*puVar4 = puVar4 + 2" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (binary_expression "puVar4 + 2" (identifier "puVar4") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if ((undefined4 *)puVar2[-2] == puVar2) {\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }\n      else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }" (if "if") (parenthesized_expression "((undefined4 *)puVar2[-2] == puVar2)" (( "(") (binary_expression "(undefined4 *)puVar2[-2] == puVar2" (cast_expression "(undefined4 *)puVar2[-2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[-2]" (identifier "puVar2") ([ "[") (number_literal "-2") (] "]"))) (== "==") (identifier "puVar2")) () ")")) (compound_statement "{\n        puVar4[2] = *puVar2;\n        puVar4[3] = puVar2[1];\n        puVar4[4] = puVar2[2];\n        puVar4[5] = puVar2[3];\n      }" ({ "{") (expression_statement "puVar4[2] = *puVar2;" (assignment_expression "puVar4[2] = *puVar2" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (; ";")) (expression_statement "puVar4[3] = puVar2[1];" (assignment_expression "puVar4[3] = puVar2[1]" (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar4[4] = puVar2[2];" (assignment_expression "puVar4[4] = puVar2[2]" (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar4[5] = puVar2[3];" (assignment_expression "puVar4[5] = puVar2[3]" (subscript_expression "puVar4[5]" (identifier "puVar4") ([ "[") (number_literal "5") (] "]")) (= "=") (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }" (else "else") (compound_statement "{\n        *puVar4 = (undefined4 *)puVar2[-2];\n        puVar4[2] = *puVar2;\n      }" ({ "{") (expression_statement "*puVar4 = (undefined4 *)puVar2[-2];" (assignment_expression "*puVar4 = (undefined4 *)puVar2[-2]" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (cast_expression "(undefined4 *)puVar2[-2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[-2]" (identifier "puVar2") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "puVar4[2] = *puVar2;" (assignment_expression "puVar4[2] = *puVar2" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (; ";")) (} "}")))) (expression_statement "puVar4[1] = puVar2[-1];" (assignment_expression "puVar4[1] = puVar2[-1]" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "puVar2[-1]" (identifier "puVar2") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "puVar2[-2] = puVar2;" (assignment_expression "puVar2[-2] = puVar2" (subscript_expression "puVar2[-2]" (identifier "puVar2") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar8 = puVar2 + 8;" (assignment_expression "puVar8 = puVar2 + 8" (identifier "puVar8") (= "=") (binary_expression "puVar2 + 8" (identifier "puVar2") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "puVar2[-1] = 0;" (assignment_expression "puVar2[-1] = 0" (subscript_expression "puVar2[-1]" (identifier "puVar2") ([ "[") (number_literal "-1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)puVar2 = 0;" (assignment_expression "*(undefined1 *)puVar2 = 0" (pointer_expression "*(undefined1 *)puVar2" (* "*") (cast_expression "(undefined1 *)puVar2" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[6] = puVar2[4];" (assignment_expression "puVar4[6] = puVar2[4]" (subscript_expression "puVar4[6]" (identifier "puVar4") ([ "[") (number_literal "6") (] "]")) (= "=") (subscript_expression "puVar2[4]" (identifier "puVar2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "*(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5);" (assignment_expression "*(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5)" (pointer_expression "*(undefined1 *)(puVar4 + 7)" (* "*") (cast_expression "(undefined1 *)(puVar4 + 7)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 7)" (( "(") (binary_expression "puVar4 + 7" (identifier "puVar4") (+ "+") (number_literal "7")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)(puVar2 + 5)" (* "*") (cast_expression "(undefined1 *)(puVar2 + 5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 5)" (( "(") (binary_expression "puVar2 + 5" (identifier "puVar2") (+ "+") (number_literal "5")) () ")"))))) (; ";")) (expression_statement "*(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15);" (assignment_expression "*(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15)" (pointer_expression "*(undefined1 *)((int)puVar4 + 0x1d)" (* "*") (cast_expression "(undefined1 *)((int)puVar4 + 0x1d)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar4 + 0x1d)" (( "(") (binary_expression "(int)puVar4 + 0x1d" (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4")) (+ "+") (number_literal "0x1d")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)((int)puVar2 + 0x15)" (* "*") (cast_expression "(undefined1 *)((int)puVar2 + 0x15)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar2 + 0x15)" (( "(") (binary_expression "(int)puVar2 + 0x15" (cast_expression "(int)puVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar2")) (+ "+") (number_literal "0x15")) () ")"))))) (; ";")) (expression_statement "puVar2 = puVar8;" (assignment_expression "puVar2 = puVar8" (identifier "puVar2") (= "=") (identifier "puVar8")) (; ";")) (expression_statement "puVar4 = puVar4 + 8;" (assignment_expression "puVar4 = puVar4 + 8" (identifier "puVar4") (= "=") (binary_expression "puVar4 + 8" (identifier "puVar4") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar8 != param_2 + 2)" (( "(") (binary_expression "puVar8 != param_2 + 2" (identifier "puVar8") (!= "!=") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2"))) () ")")) (; ";")) (expression_statement "puVar2 = local_28 + (((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8;" (assignment_expression "puVar2 = local_28 + (((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8" (identifier "puVar2") (= "=") (binary_expression "local_28 + (((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8" (identifier "local_28") (+ "+") (binary_expression "(((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8" (parenthesized_expression "(((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1)" (( "(") (binary_expression "((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1" (parenthesized_expression "((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5)" (( "(") (binary_expression "(uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5" (call_expression "(uint)((int)param_2 + (-0x20 - (int)puVar5))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)param_2 + (-0x20 - (int)puVar5))" (( "(") (binary_expression "(int)param_2 + (-0x20 - (int)puVar5)" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (parenthesized_expression "(-0x20 - (int)puVar5)" (( "(") (binary_expression "-0x20 - (int)puVar5" (number_literal "-0x20") (- "-") (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5"))) () ")"))) () ")"))) (>> ">>") (number_literal "5")) () ")")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "8")))) (; ";")) (} "}"))) (do_statement "do {\n    *puVar2 = puVar2 + 2;\n                    \n    FUN_0014fca0(puVar2,*param_3,param_3[1] + *param_3,0);\n    piVar11 = param_3 + 8;\n    puVar5 = puVar2 + 8;\n    puVar2[6] = param_3[6];\n    *(char *)(puVar2 + 7) = (char)param_3[7];\n    *(undefined1 *)((int)puVar2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n    param_3 = piVar11;\n    puVar2 = puVar5;\n  } while (param_4 != piVar11);" (do "do") (compound_statement "{\n    *puVar2 = puVar2 + 2;\n                    \n    FUN_0014fca0(puVar2,*param_3,param_3[1] + *param_3,0);\n    piVar11 = param_3 + 8;\n    puVar5 = puVar2 + 8;\n    puVar2[6] = param_3[6];\n    *(char *)(puVar2 + 7) = (char)param_3[7];\n    *(undefined1 *)((int)puVar2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);\n    param_3 = piVar11;\n    puVar2 = puVar5;\n  }" ({ "{") (expression_statement "*puVar2 = puVar2 + 2;" (assignment_expression "*puVar2 = puVar2 + 2" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (binary_expression "puVar2 + 2" (identifier "puVar2") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "FUN_0014fca0(puVar2,*param_3,param_3[1] + *param_3,0);" (call_expression "FUN_0014fca0(puVar2,*param_3,param_3[1] + *param_3,0)" (identifier "FUN_0014fca0") (argument_list "(puVar2,*param_3,param_3[1] + *param_3,0)" (( "(") (identifier "puVar2") (, ",") (pointer_expression "*param_3" (* "*") (identifier "param_3")) (, ",") (binary_expression "param_3[1] + *param_3" (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) (+ "+") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "piVar11 = param_3 + 8;" (assignment_expression "piVar11 = param_3 + 8" (identifier "piVar11") (= "=") (binary_expression "param_3 + 8" (identifier "param_3") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "puVar5 = puVar2 + 8;" (assignment_expression "puVar5 = puVar2 + 8" (identifier "puVar5") (= "=") (binary_expression "puVar2 + 8" (identifier "puVar2") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "puVar2[6] = param_3[6];" (assignment_expression "puVar2[6] = param_3[6]" (subscript_expression "puVar2[6]" (identifier "puVar2") ([ "[") (number_literal "6") (] "]")) (= "=") (subscript_expression "param_3[6]" (identifier "param_3") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "*(char *)(puVar2 + 7) = (char)param_3[7];" (assignment_expression "*(char *)(puVar2 + 7) = (char)param_3[7]" (pointer_expression "*(char *)(puVar2 + 7)" (* "*") (cast_expression "(char *)(puVar2 + 7)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 7)" (( "(") (binary_expression "puVar2 + 7" (identifier "puVar2") (+ "+") (number_literal "7")) () ")")))) (= "=") (cast_expression "(char)param_3[7]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_3[7]" (identifier "param_3") ([ "[") (number_literal "7") (] "]")))) (; ";")) (expression_statement "*(undefined1 *)((int)puVar2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);" (assignment_expression "*(undefined1 *)((int)puVar2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d)" (pointer_expression "*(undefined1 *)((int)puVar2 + 0x1d)" (* "*") (cast_expression "(undefined1 *)((int)puVar2 + 0x1d)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar2 + 0x1d)" (( "(") (binary_expression "(int)puVar2 + 0x1d" (cast_expression "(int)puVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar2")) (+ "+") (number_literal "0x1d")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)((int)param_3 + 0x1d)" (* "*") (cast_expression "(undefined1 *)((int)param_3 + 0x1d)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_3 + 0x1d)" (( "(") (binary_expression "(int)param_3 + 0x1d" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (+ "+") (number_literal "0x1d")) () ")"))))) (; ";")) (expression_statement "param_3 = piVar11;" (assignment_expression "param_3 = piVar11" (identifier "param_3") (= "=") (identifier "piVar11")) (; ";")) (expression_statement "puVar2 = puVar5;" (assignment_expression "puVar2 = puVar5" (identifier "puVar2") (= "=") (identifier "puVar5")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_4 != piVar11)" (( "(") (binary_expression "param_4 != piVar11" (identifier "param_4") (!= "!=") (identifier "piVar11")) () ")")) (; ";")) (expression_statement "puVar2 = (undefined4 *)param_1[1];" (assignment_expression "puVar2 = (undefined4 *)param_1[1]" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)param_1[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (param_2 != puVar2) {\n    puVar4 = param_2 + 2;\n    puVar8 = puVar5;\n    do {\n      puVar3 = (undefined4 *)puVar4[-2];\n      *puVar8 = puVar8 + 2;\n      if (puVar4 == puVar3) {\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }\n      else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }\n      uVar1 = puVar4[-1];\n      puVar4[-2] = puVar4;\n      puVar3 = puVar4 + 8;\n      puVar4[-1] = 0;\n      puVar8[1] = uVar1;\n      *(undefined1 *)puVar4 = 0;\n      puVar8[6] = puVar4[4];\n      *(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5);\n      *(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n      puVar4 = puVar3;\n      puVar8 = puVar8 + 8;\n    } while (puVar2 + 2 != puVar3);\n    puVar5 = puVar5 + (((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8;\n    puVar2 = (undefined4 *)param_1[1];\n  }" (if "if") (parenthesized_expression "(param_2 != puVar2)" (( "(") (binary_expression "param_2 != puVar2" (identifier "param_2") (!= "!=") (identifier "puVar2")) () ")")) (compound_statement "{\n    puVar4 = param_2 + 2;\n    puVar8 = puVar5;\n    do {\n      puVar3 = (undefined4 *)puVar4[-2];\n      *puVar8 = puVar8 + 2;\n      if (puVar4 == puVar3) {\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }\n      else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }\n      uVar1 = puVar4[-1];\n      puVar4[-2] = puVar4;\n      puVar3 = puVar4 + 8;\n      puVar4[-1] = 0;\n      puVar8[1] = uVar1;\n      *(undefined1 *)puVar4 = 0;\n      puVar8[6] = puVar4[4];\n      *(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5);\n      *(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n      puVar4 = puVar3;\n      puVar8 = puVar8 + 8;\n    } while (puVar2 + 2 != puVar3);\n    puVar5 = puVar5 + (((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8;\n    puVar2 = (undefined4 *)param_1[1];\n  }" ({ "{") (expression_statement "puVar4 = param_2 + 2;" (assignment_expression "puVar4 = param_2 + 2" (identifier "puVar4") (= "=") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar8 = puVar5;" (assignment_expression "puVar8 = puVar5" (identifier "puVar8") (= "=") (identifier "puVar5")) (; ";")) (do_statement "do {\n      puVar3 = (undefined4 *)puVar4[-2];\n      *puVar8 = puVar8 + 2;\n      if (puVar4 == puVar3) {\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }\n      else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }\n      uVar1 = puVar4[-1];\n      puVar4[-2] = puVar4;\n      puVar3 = puVar4 + 8;\n      puVar4[-1] = 0;\n      puVar8[1] = uVar1;\n      *(undefined1 *)puVar4 = 0;\n      puVar8[6] = puVar4[4];\n      *(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5);\n      *(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n      puVar4 = puVar3;\n      puVar8 = puVar8 + 8;\n    } while (puVar2 + 2 != puVar3);" (do "do") (compound_statement "{\n      puVar3 = (undefined4 *)puVar4[-2];\n      *puVar8 = puVar8 + 2;\n      if (puVar4 == puVar3) {\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }\n      else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }\n      uVar1 = puVar4[-1];\n      puVar4[-2] = puVar4;\n      puVar3 = puVar4 + 8;\n      puVar4[-1] = 0;\n      puVar8[1] = uVar1;\n      *(undefined1 *)puVar4 = 0;\n      puVar8[6] = puVar4[4];\n      *(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5);\n      *(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);\n      puVar4 = puVar3;\n      puVar8 = puVar8 + 8;\n    }" ({ "{") (expression_statement "puVar3 = (undefined4 *)puVar4[-2];" (assignment_expression "puVar3 = (undefined4 *)puVar4[-2]" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)puVar4[-2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[-2]" (identifier "puVar4") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (expression_statement "*puVar8 = puVar8 + 2;" (assignment_expression "*puVar8 = puVar8 + 2" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (binary_expression "puVar8 + 2" (identifier "puVar8") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (puVar4 == puVar3) {\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }\n      else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }" (if "if") (parenthesized_expression "(puVar4 == puVar3)" (( "(") (binary_expression "puVar4 == puVar3" (identifier "puVar4") (== "==") (identifier "puVar3")) () ")")) (compound_statement "{\n        puVar8[2] = *puVar4;\n        puVar8[3] = puVar4[1];\n        puVar8[4] = puVar4[2];\n        puVar8[5] = puVar4[3];\n      }" ({ "{") (expression_statement "puVar8[2] = *puVar4;" (assignment_expression "puVar8[2] = *puVar4" (subscript_expression "puVar8[2]" (identifier "puVar8") ([ "[") (number_literal "2") (] "]")) (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (expression_statement "puVar8[3] = puVar4[1];" (assignment_expression "puVar8[3] = puVar4[1]" (subscript_expression "puVar8[3]" (identifier "puVar8") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar8[4] = puVar4[2];" (assignment_expression "puVar8[4] = puVar4[2]" (subscript_expression "puVar8[4]" (identifier "puVar8") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar8[5] = puVar4[3];" (assignment_expression "puVar8[5] = puVar4[3]" (subscript_expression "puVar8[5]" (identifier "puVar8") ([ "[") (number_literal "5") (] "]")) (= "=") (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }" (else "else") (compound_statement "{\n        *puVar8 = puVar3;\n        puVar8[2] = *puVar4;\n      }" ({ "{") (expression_statement "*puVar8 = puVar3;" (assignment_expression "*puVar8 = puVar3" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (identifier "puVar3")) (; ";")) (expression_statement "puVar8[2] = *puVar4;" (assignment_expression "puVar8[2] = *puVar4" (subscript_expression "puVar8[2]" (identifier "puVar8") ([ "[") (number_literal "2") (] "]")) (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (} "}")))) (expression_statement "uVar1 = puVar4[-1];" (assignment_expression "uVar1 = puVar4[-1]" (identifier "uVar1") (= "=") (subscript_expression "puVar4[-1]" (identifier "puVar4") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "puVar4[-2] = puVar4;" (assignment_expression "puVar4[-2] = puVar4" (subscript_expression "puVar4[-2]" (identifier "puVar4") ([ "[") (number_literal "-2") (] "]")) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "puVar3 = puVar4 + 8;" (assignment_expression "puVar3 = puVar4 + 8" (identifier "puVar3") (= "=") (binary_expression "puVar4 + 8" (identifier "puVar4") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "puVar4[-1] = 0;" (assignment_expression "puVar4[-1] = 0" (subscript_expression "puVar4[-1]" (identifier "puVar4") ([ "[") (number_literal "-1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[1] = uVar1;" (assignment_expression "puVar8[1] = uVar1" (subscript_expression "puVar8[1]" (identifier "puVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "*(undefined1 *)puVar4 = 0;" (assignment_expression "*(undefined1 *)puVar4 = 0" (pointer_expression "*(undefined1 *)puVar4" (* "*") (cast_expression "(undefined1 *)puVar4" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar4"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8[6] = puVar4[4];" (assignment_expression "puVar8[6] = puVar4[4]" (subscript_expression "puVar8[6]" (identifier "puVar8") ([ "[") (number_literal "6") (] "]")) (= "=") (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "*(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5);" (assignment_expression "*(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5)" (pointer_expression "*(undefined1 *)(puVar8 + 7)" (* "*") (cast_expression "(undefined1 *)(puVar8 + 7)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 7)" (( "(") (binary_expression "puVar8 + 7" (identifier "puVar8") (+ "+") (number_literal "7")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)(puVar4 + 5)" (* "*") (cast_expression "(undefined1 *)(puVar4 + 5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 5)" (( "(") (binary_expression "puVar4 + 5" (identifier "puVar4") (+ "+") (number_literal "5")) () ")"))))) (; ";")) (expression_statement "*(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);" (assignment_expression "*(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15)" (pointer_expression "*(undefined1 *)((int)puVar8 + 0x1d)" (* "*") (cast_expression "(undefined1 *)((int)puVar8 + 0x1d)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 + 0x1d)" (( "(") (binary_expression "(int)puVar8 + 0x1d" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (number_literal "0x1d")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)((int)puVar4 + 0x15)" (* "*") (cast_expression "(undefined1 *)((int)puVar4 + 0x15)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar4 + 0x15)" (( "(") (binary_expression "(int)puVar4 + 0x15" (cast_expression "(int)puVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar4")) (+ "+") (number_literal "0x15")) () ")"))))) (; ";")) (expression_statement "puVar4 = puVar3;" (assignment_expression "puVar4 = puVar3" (identifier "puVar4") (= "=") (identifier "puVar3")) (; ";")) (expression_statement "puVar8 = puVar8 + 8;" (assignment_expression "puVar8 = puVar8 + 8" (identifier "puVar8") (= "=") (binary_expression "puVar8 + 8" (identifier "puVar8") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar2 + 2 != puVar3)" (( "(") (binary_expression "puVar2 + 2 != puVar3" (binary_expression "puVar2 + 2" (identifier "puVar2") (+ "+") (number_literal "2")) (!= "!=") (identifier "puVar3")) () ")")) (; ";")) (expression_statement "puVar5 = puVar5 + (((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8;" (assignment_expression "puVar5 = puVar5 + (((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8" (identifier "puVar5") (= "=") (binary_expression "puVar5 + (((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8" (identifier "puVar5") (+ "+") (binary_expression "(((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8" (parenthesized_expression "(((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1)" (( "(") (binary_expression "((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1" (parenthesized_expression "((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5)" (( "(") (binary_expression "(uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5" (call_expression "(uint)((int)puVar2 + (-0x20 - (int)param_2))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)puVar2 + (-0x20 - (int)param_2))" (( "(") (binary_expression "(int)puVar2 + (-0x20 - (int)param_2)" (cast_expression "(int)puVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar2")) (+ "+") (parenthesized_expression "(-0x20 - (int)param_2)" (( "(") (binary_expression "-0x20 - (int)param_2" (number_literal "-0x20") (- "-") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) () ")"))) () ")"))) (>> ">>") (number_literal "5")) () ")")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "8")))) (; ";")) (expression_statement "puVar2 = (undefined4 *)param_1[1];" (assignment_expression "puVar2 = (undefined4 *)param_1[1]" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)param_1[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}"))) (expression_statement "puVar4 = (undefined4 *)*param_1;" (assignment_expression "puVar4 = (undefined4 *)*param_1" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)*param_1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (if_statement "if (puVar4 != puVar2) {\n    do {\n      if ((undefined4 *)*puVar4 != puVar4 + 2) {\n        FUN_003ae080((undefined4 *)*puVar4);\n      }\n      puVar4 = puVar4 + 8;\n    } while (puVar4 != puVar2);\n    puVar2 = (undefined4 *)*param_1;\n  }" (if "if") (parenthesized_expression "(puVar4 != puVar2)" (( "(") (binary_expression "puVar4 != puVar2" (identifier "puVar4") (!= "!=") (identifier "puVar2")) () ")")) (compound_statement "{\n    do {\n      if ((undefined4 *)*puVar4 != puVar4 + 2) {\n        FUN_003ae080((undefined4 *)*puVar4);\n      }\n      puVar4 = puVar4 + 8;\n    } while (puVar4 != puVar2);\n    puVar2 = (undefined4 *)*param_1;\n  }" ({ "{") (do_statement "do {\n      if ((undefined4 *)*puVar4 != puVar4 + 2) {\n        FUN_003ae080((undefined4 *)*puVar4);\n      }\n      puVar4 = puVar4 + 8;\n    } while (puVar4 != puVar2);" (do "do") (compound_statement "{\n      if ((undefined4 *)*puVar4 != puVar4 + 2) {\n        FUN_003ae080((undefined4 *)*puVar4);\n      }\n      puVar4 = puVar4 + 8;\n    }" ({ "{") (if_statement "if ((undefined4 *)*puVar4 != puVar4 + 2) {\n        FUN_003ae080((undefined4 *)*puVar4);\n      }" (if "if") (parenthesized_expression "((undefined4 *)*puVar4 != puVar4 + 2)" (( "(") (binary_expression "(undefined4 *)*puVar4 != puVar4 + 2" (cast_expression "(undefined4 *)*puVar4" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (!= "!=") (binary_expression "puVar4 + 2" (identifier "puVar4") (+ "+") (number_literal "2"))) () ")")) (compound_statement "{\n        FUN_003ae080((undefined4 *)*puVar4);\n      }" ({ "{") (expression_statement "FUN_003ae080((undefined4 *)*puVar4);" (call_expression "FUN_003ae080((undefined4 *)*puVar4)" (identifier "FUN_003ae080") (argument_list "((undefined4 *)*puVar4)" (( "(") (cast_expression "(undefined4 *)*puVar4" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) () ")"))) (; ";")) (} "}"))) (expression_statement "puVar4 = puVar4 + 8;" (assignment_expression "puVar4 = puVar4 + 8" (identifier "puVar4") (= "=") (binary_expression "puVar4 + 8" (identifier "puVar4") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar4 != puVar2)" (( "(") (binary_expression "puVar4 != puVar2" (identifier "puVar4") (!= "!=") (identifier "puVar2")) () ")")) (; ";")) (expression_statement "puVar2 = (undefined4 *)*param_1;" (assignment_expression "puVar2 = (undefined4 *)*param_1" (identifier "puVar2") (= "=") (cast_expression "(undefined4 *)*param_1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (} "}"))) (if_statement "if (puVar2 != (undefined4 *)0x0) {\n    FUN_003ae080(puVar2);\n  }" (if "if") (parenthesized_expression "(puVar2 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar2 != (undefined4 *)0x0" (identifier "puVar2") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    FUN_003ae080(puVar2);\n  }" ({ "{") (expression_statement "FUN_003ae080(puVar2);" (call_expression "FUN_003ae080(puVar2)" (identifier "FUN_003ae080") (argument_list "(puVar2)" (( "(") (identifier "puVar2") () ")"))) (; ";")) (} "}"))) (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 = local_28;" (assignment_expression "*param_1 = local_28" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "local_28")) (; ";")) (expression_statement "param_1[2] = local_28 + local_2c * 8;" (assignment_expression "param_1[2] = local_28 + local_2c * 8" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "local_28 + local_2c * 8" (identifier "local_28") (+ "+") (binary_expression "local_2c * 8" (identifier "local_2c") (* "*") (number_literal "8")))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* DWARF original name: _M_range_insert<__gnu_cxx::__normal_iterator<gold::Version_expression*,
   std::vector<gold::Version_expression> > >
   DWARF original prototype: void
   _M_range_insert<__gnu_cxx::__normal_iterator<gold::Version_expression*,_std::vector<gold::Version_expression>_>_>(vector<gold::Version_expression,_std::allocator<gold::Version_expression>_>
   * this, iterator __position,
   __normal_iterator<gold::Version_expression*,_std::vector<gold::Version_expression,_std::allocator<gold::Version_expression>_>_>
   __first,
   __normal_iterator<gold::Version_expression*,_std::vector<gold::Version_expression,_std::allocator<gold::Version_expression>_>_>
   __last, forward_iterator_tag param_5) */

void __thiscall
std::vector<gold::var_9,_std::var_1<gold::var_9>var_3>::
_M_range_insert<__gnu_cxx::__normal_iterator<gold::var_9*,_std::vector<gold::var_9>var_3>var_3>
          (vector<gold::var_9,_std::var_1<gold::var_9>var_3> *this,
          type_1 var_22,int *var_7,int *var_8)

{
  type_1 *ppVVar1;
  type_1 var_35;
  type_2 *var_33;
  type_2 uVar4;
  type_3 *psVar5;
  type_1 var_20;
  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;
  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_6;
  type_3 *var_25;
  type_3 *var_24;
  size_t var_26;
  int var_11;
  type_4 var_12;
  type_1 var_21;
  type_1 var_34;
  int var_13;
  type_4 var_14;
  int *var_15;
  int *var_19;
  type_4 var_30;
  type_1 var_32;
  type_1 var_18;
  
  if (var_7 == var_8) {
    return;
  }
  var_21 = (this->
            super__Vector_base<gold::var_9,_std::var_1<gold::var_9>var_3>var_10)
            ._M_impl._M_finish;
  var_11 = (int)var_8 - (int)var_7;
  var_12 = var_11 >> 5;
  if (var_12 <= (type_4)((int)(this->
                            super__Vector_base<gold::var_9,_std::var_1<gold::var_9>var_3>var_10
                            )._M_impl._M_end_of_storage - (int)var_21 >> 5)) {
    var_13 = (int)var_21 - (int)var_22;
    var_14 = var_13 >> 5;
    if (var_14 <= var_12) {
      var_15 = (int *)((int)var_7 + var_13);
      var_20 = var_21;
      var_18 = var_21;
      if (var_8 != var_15) {
        do {
          (var_18->pattern)._M_dataplus._M_p = (type_1)&(var_18->pattern).field_2;
                    /* try { // try from 003454e4 to 003454e8 has its CatchHandler @ 00345a9a */
          __cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>::
          var_16<var_2*>(&var_18->pattern,*var_15,var_15[1] + *var_15,0);
          var_19 = var_15 + 8;
          var_18->language = var_15[6];
          var_18->exact_match = var_17(var_15[7],0);
          var_18->was_matched_by_symbol = *(bool *)((int)var_15 + 0x1d);
          var_15 = var_19;
          var_18 = var_18 + 1;
        } while (var_8 != var_19);
        var_20 = (this->
                 super__Vector_base<gold::var_9,_std::var_1<gold::var_9>var_3>var_10
                 )._M_impl._M_finish;
      }
      var_20 = var_20 + (var_12 - var_14);
      (this->super__Vector_base<gold::var_9,_std::var_1<gold::var_9>var_3>var_10
      )._M_impl._M_finish = var_20;
      var_6 = &(var_22->pattern).field_2;
      if (var_21 != var_22) {
        do {
          (var_20->pattern)._M_dataplus._M_p = (type_1)&(var_20->pattern).field_2;
          if (var_6 == (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_5 **)(var_6->_M_local_buf + -8)) {
            (var_20->pattern).field_2._M_allocated_capacity = var_6->_M_allocated_capacity;
            *(type_5 *)((int)&(var_20->pattern).field_2 + 4) =
                 *(type_5 *)(var_6->_M_local_buf + 4);
            *(type_5 *)((int)&(var_20->pattern).field_2 + 8) =
                 *(type_5 *)(var_6->_M_local_buf + 8);
            *(type_5 *)((int)&(var_20->pattern).field_2 + 0xc) =
                 *(type_5 *)(var_6->_M_local_buf + 0xc);
          }
          else {
            (var_20->pattern)._M_dataplus._M_p = (type_1)*(type_5 **)(var_6->_M_local_buf + -8)
            ;
            (var_20->pattern).field_2._M_allocated_capacity = var_6->_M_allocated_capacity;
          }
          (var_20->pattern)._M_string_length = *(type_5 *)(var_6->_M_local_buf + -4);
          *(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_10)(var_6->_M_local_buf + -8) = var_6;
          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_6->_M_local_buf + 0x20);
          *(type_5 *)(var_6->_M_local_buf + -4) = 0;
          var_6->_M_local_buf[0] = '\0';
          var_20->language = *(type_6 *)(var_6->_M_local_buf + 0x10);
          var_20->exact_match = var_17(*(type_5 *)(var_6->_M_local_buf + 0x14),0);
          var_20->was_matched_by_symbol = (bool)var_6->_M_local_buf[0x15];
          var_6 = var_5;
          var_20 = var_20 + 1;
        } while (&(var_21->pattern).field_2 != var_5);
        var_20 = (this->
                 super__Vector_base<gold::var_9,_std::var_1<gold::var_9>var_3>var_10
                 )._M_impl._M_finish;
      }
      (this->super__Vector_base<gold::var_9,_std::var_1<gold::var_9>var_3>var_10
      )._M_impl._M_finish = (type_1)((int)var_20 + var_13);
      var_18 = (type_1)var_14;
      if (var_13 < 1) {
        return;
      }
      do {
        std::string::var_23((type_3 *)var_22);
        var_22->language = var_7[6];
        var_22->exact_match = var_17(var_7[7],0);
        var_22->was_matched_by_symbol = *(bool *)((int)var_7 + 0x1d);
        var_18 = (type_1)((int)var_18 - 1);
        var_7 = var_7 + 8;
        var_22 = var_22 + 1;
      } while (var_18 != (type_1)0x0);
      return;
    }
    var_24 = (type_3 *)((int)var_21 + (8 - var_11));
    var_20 = var_21;
    do {
      (var_20->pattern)._M_dataplus._M_p = (type_1)&(var_20->pattern).field_2;
      if (*(type_3 **)(var_24 + -8) == var_24) {
        (var_20->pattern).field_2._M_allocated_capacity = *(type_5 *)var_24;
        *(type_2 *)((int)&(var_20->pattern).field_2 + 4) = *(type_2 *)(var_24 + 4);
        *(type_2 *)((int)&(var_20->pattern).field_2 + 8) = *(type_2 *)(var_24 + 8);
        *(type_2 *)((int)&(var_20->pattern).field_2 + 0xc) = *(type_2 *)(var_24 + 0xc);
      }
      else {
        (var_20->pattern)._M_dataplus._M_p = (type_1)*(type_3 **)(var_24 + -8);
        (var_20->pattern).field_2._M_allocated_capacity = *(type_5 *)var_24;
      }
      (var_20->pattern)._M_string_length = *(type_5 *)(var_24 + -4);
      *(type_3 **)(var_24 + -8) = var_24;
      var_25 = var_24 + 0x20;
      *(type_2 *)(var_24 + -4) = 0;
      *var_24 = (type_3)0x0;
      var_20->language = *(type_6 *)(var_24 + 0x10);
      var_20->exact_match = (bool)var_24[0x14];
      var_20->was_matched_by_symbol = (bool)var_24[0x15];
      var_24 = var_25;
      var_20 = var_20 + 1;
    } while ((type_3 *)&(var_21->pattern).field_2 != var_25);
    ppVVar1 = &(this->
               super__Vector_base<gold::var_9,_std::var_1<gold::var_9>var_3>var_10
               )._M_impl._M_finish;
    *ppVVar1 = (type_1)((int)*ppVVar1 + var_11);
    var_18 = (type_1)((int)var_21 + (-0x18 - var_11));
    var_25 = (type_3 *)((int)var_21 + (-(int)var_22 - var_11));
    var_13 = (int)var_25 >> 5;
    var_24 = (type_3 *)&var_21[-1].pattern.field_2;
    if (0 < (int)var_25) {
      do {
        var_25 = *(type_3 **)(var_24 + -8);
        psVar5 = *(type_3 **)((int)var_18 + -8);
        if ((type_1)psVar5 == var_18) {
          var_26 = *(size_t *)((int)var_18 + -4);
          if (var_26 != 0) {
            if (var_26 == 1) {
              *var_25 = *(type_3 *)var_18;
              var_25 = *(type_3 **)(var_24 + -8);
              var_26 = *(size_t *)((int)var_18 + -4);
            }
            else {
              var_27(var_25,var_18,var_26);
              var_25 = *(type_3 **)(var_24 + -8);
              var_26 = *(size_t *)((int)var_18 + -4);
            }
          }
          *(size_t *)(var_24 + -4) = var_26;
          var_25[var_26] = (type_3)0x0;
        }
        else {
          if (var_25 == var_24) {
            *(type_3 **)(var_24 + -8) = psVar5;
            *(type_2 *)(var_24 + -4) = *(type_2 *)((int)var_18 + -4);
            *(type_2 *)var_24 = *(type_2 *)var_18;
          }
          else {
            *(type_3 **)(var_24 + -8) = psVar5;
            uVar4 = *(type_2 *)var_24;
            *(type_2 *)(var_24 + -4) = *(type_2 *)((int)var_18 + -4);
            *(type_2 *)var_24 = *(type_2 *)var_18;
            if (var_25 != (type_3 *)0x0) {
              *(type_3 **)((int)var_18 + -8) = var_25;
              *(type_2 *)var_18 = uVar4;
              goto LAB_0034596d;
            }
          }
          *(type_1 *)((int)var_18 + -8) = var_18;
        }
LAB_0034596d:
        *(type_2 *)((int)var_18 + -4) = 0;
        **(type_7 **)((int)var_18 + -8) = 0;
        *(type_2 *)(var_24 + 0x10) = *(type_2 *)((int)var_18 + 0x10);
        var_24[0x14] = *(type_3 *)((int)var_18 + 0x14);
        var_24[0x15] = *(type_3 *)((int)var_18 + 0x15);
        var_13 = var_13 + -1;
        var_24 = var_24 + -0x20;
        var_18 = (type_1)((int)var_18 + -0x20);
      } while (var_13 != 0);
    }
    var_18 = (type_1)var_12;
    if (var_11 < 1) {
      return;
    }
    do {
      std::string::var_23((type_3 *)var_22);
      var_22->language = var_7[6];
      var_22->exact_match = var_17(var_7[7],0);
      var_22->was_matched_by_symbol = *(bool *)((int)var_7 + 0x1d);
      var_18 = (type_1)((int)var_18 - 1);
      var_7 = var_7 + 8;
      var_22 = var_22 + 1;
    } while (var_18 != (type_1)0x0);
    return;
  }
  var_20 = (this->
           super__Vector_base<gold::var_9,_std::var_1<gold::var_9>var_3>var_10).
           _M_impl._M_start;
  var_14 = (int)var_21 - (int)var_20 >> 5;
  if (0x7ffffff - var_14 < var_12) {
                    /* WARNING: Subroutine does not return */
    var_28("vector::_M_range_insert");
  }
  if (var_12 < var_14) {
    var_12 = var_14;
  }
  var_30 = var_14 + var_12;
  if ((var_29(var_14,var_12)) || (0x7ffffff < var_30)) {
    var_12 = 0xffffffe0;
    var_30 = 0x7ffffff;
  }
  else {
    var_32 = (type_1)0x0;
    if (var_30 == 0) goto LAB_00345692;
    var_12 = var_30 * 0x20;
  }
  var_32 = (type_1)var_31(var_12);
  var_20 = (this->
           super__Vector_base<gold::var_9,_std::var_1<gold::var_9>var_3>var_10).
           _M_impl._M_start;
LAB_00345692:
  var_21 = var_32;
  if (var_22 != var_20) {
    var_6 = &(var_20->pattern).field_2;
    do {
      (var_21->pattern)._M_dataplus._M_p = (type_1)&(var_21->pattern).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_5 **)(var_6->_M_local_buf + -8) == var_6) {
        (var_21->pattern).field_2._M_allocated_capacity = var_6->_M_allocated_capacity;
        *(type_5 *)((int)&(var_21->pattern).field_2 + 4) =
             *(type_5 *)(var_6->_M_local_buf + 4);
        *(type_5 *)((int)&(var_21->pattern).field_2 + 8) =
             *(type_5 *)(var_6->_M_local_buf + 8);
        *(type_5 *)((int)&(var_21->pattern).field_2 + 0xc) =
             *(type_5 *)(var_6->_M_local_buf + 0xc);
      }
      else {
        (var_21->pattern)._M_dataplus._M_p = (type_1)*(type_5 **)(var_6->_M_local_buf + -8);
        (var_21->pattern).field_2._M_allocated_capacity = var_6->_M_allocated_capacity;
      }
      (var_21->pattern)._M_string_length = *(type_5 *)(var_6->_M_local_buf + -4);
      *(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_10)(var_6->_M_local_buf + -8) = var_6;
      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_6->_M_local_buf + 0x20);
      *(type_5 *)(var_6->_M_local_buf + -4) = 0;
      var_6->_M_local_buf[0] = '\0';
      var_21->language = *(type_6 *)(var_6->_M_local_buf + 0x10);
      var_21->exact_match = var_17(*(type_5 *)(var_6->_M_local_buf + 0x14),0);
      var_21->was_matched_by_symbol = (bool)var_6->_M_local_buf[0x15];
      var_6 = var_5;
      var_21 = var_21 + 1;
    } while (var_5 != &(var_22->pattern).field_2);
    var_21 = var_32 + ((type_4)((int)var_22 + (-0x20 - (int)var_20)) >> 5) + 1;
  }
  do {
    (var_21->pattern)._M_dataplus._M_p = (type_1)&(var_21->pattern).field_2;
                    /* try { // try from 003457c3 to 003457c7 has its CatchHandler @ 00345a9c */
    __cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>::var_16<var_2*>
              (&var_21->pattern,*var_7,var_7[1] + *var_7,0);
    var_15 = var_7 + 8;
    var_20 = var_21 + 1;
    var_21->language = var_7[6];
    var_21->exact_match = var_17(var_7[7],0);
    var_21->was_matched_by_symbol = *(bool *)((int)var_7 + 0x1d);
    var_7 = var_15;
    var_21 = var_20;
  } while (var_8 != var_15);
  var_21 = (this->
            super__Vector_base<gold::var_9,_std::var_1<gold::var_9>var_3>var_10)
            ._M_impl._M_finish;
  if (var_22 != var_21) {
    var_6 = &(var_22->pattern).field_2;
    var_34 = var_20;
    do {
      var_33 = *(type_2 **)(var_6->_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_34->pattern)->_M_allocated_capacity = (type_5)((int)&var_34->pattern + 8);
      if (var_6 == (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_33) {
        *(type_5 *)((int)&var_34->pattern + 8) = var_6->_M_allocated_capacity;
        *(type_2 *)((int)&var_34->pattern + 0xc) = *(type_2 *)(var_6->_M_local_buf + 4);
        *(type_2 *)
         ((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_34->pattern + 1) = *(type_2 *)(var_6->_M_local_buf + 8);
        *(type_2 *)((int)&var_34->pattern + 0x14) = *(type_2 *)(var_6->_M_local_buf + 0xc)
        ;
      }
      else {
        ((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_34->pattern)->_M_allocated_capacity = (type_5)var_33;
        *(type_5 *)((int)&var_34->pattern + 8) = var_6->_M_allocated_capacity;
      }
      *(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_10)(var_6->_M_local_buf + -8) = var_6;
      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_6->_M_local_buf + 0x20);
      *(char *)((int)var_6 + -0xffffffff00000004) = '\0';
      *(char *)((int)var_6 + -0xffffffff00000003) = '\0';
      *(char *)((int)var_6 + -0xffffffff00000002) = '\0';
      *(char *)((int)var_6 + -0xffffffff00000001) = '\0';
      *(type_2 *)((int)&var_34->pattern + 4) = *(type_2 *)(var_6->_M_local_buf + -4);
      var_6->_M_local_buf[0] = '\0';
      var_34->language = *(type_6 *)(var_6->_M_local_buf + 0x10);
      var_34->exact_match = (bool)var_6->_M_local_buf[0x14];
      var_34->was_matched_by_symbol = (bool)var_6->_M_local_buf[0x15];
      var_6 = var_5;
      var_34 = var_34 + 1;
    } while (&(var_21->pattern).field_2 != var_5);
    var_20 = var_20 + ((type_4)((int)var_21 + (-0x20 - (int)var_22)) >> 5) + 1;
    var_21 = (this->
              super__Vector_base<gold::var_9,_std::var_1<gold::var_9>var_3>var_10
              )._M_impl._M_finish;
  }
  var_34 = (this->
            super__Vector_base<gold::var_9,_std::var_1<gold::var_9>var_3>var_10)
            ._M_impl._M_start;
  if (var_34 != var_21) {
    do {
      var_35 = (var_34->pattern)._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_34->pattern).field_2) {
        var_36(var_35);
      }
      var_34 = var_34 + 1;
    } while (var_34 != var_21);
    var_21 = (this->
              super__Vector_base<gold::var_9,_std::var_1<gold::var_9>var_3>var_10
              )._M_impl._M_start;
  }
  if (var_21 != (type_1)0x0) {
    var_36(var_21);
  }
  (this->super__Vector_base<gold::var_9,_std::var_1<gold::var_9>var_3>var_10).
  _M_impl._M_finish = var_20;
  (this->super__Vector_base<gold::var_9,_std::var_1<gold::var_9>var_3>var_10).
  _M_impl._M_start = var_32;
  (this->super__Vector_base<gold::var_9,_std::var_1<gold::var_9>var_3>var_10).
  _M_impl._M_end_of_storage = var_32 + var_30;
  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: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) 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))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_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: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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: (primitive_type)) value: (identifier))) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (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))) (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (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: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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))) (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 (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: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal))))) 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: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (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: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (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: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (primitive_type)) value: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement))) (do_statement body: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (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: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) 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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier)))))))) (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: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal))))) 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: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (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: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (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: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (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: (primitive_type)) 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: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (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: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement))) (do_statement body: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (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: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) 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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal)))) (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))) (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)))) (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: (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: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal))))) 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: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (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: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (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: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (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: (parenthesized_expression (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: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) right: (number_literal))) right: (number_literal))) 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)))) (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))) (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)))) (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (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: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (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: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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: (pointer_expression argument: (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: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (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: (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: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (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: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (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: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) right: (number_literal))) 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: (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 (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))))) (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (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: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (return_statement))))

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void MASKED(undefined4 *param_1,undefined4 *param_2,int *param_3,int *param_4)

{
  undefined4 uVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  size_t __n;
  int iVar6;
  uint uVar7;
  undefined4 *puVar8;
  int iVar9;
  uint uVar10;
  int *piVar11;
  int *piVar12;
  int iVar13;
  uint local_2c;
  undefined4 *local_28;
  undefined4 *local_20;
  
  if (param_3 == param_4) {
    return;
  }
  puVar2 = (undefined4 *)param_1[1];
  iVar6 = (int)param_4 - (int)param_3;
  uVar7 = iVar6 >> 5;
  if (uVar7 <= (uint)(param_1[2] - (int)puVar2 >> 5)) {
    iVar9 = (int)puVar2 - (int)param_2;
    uVar10 = iVar9 >> 5;
    if (uVar10 <= uVar7) {
      piVar11 = (int *)((int)param_3 + iVar9);
      puVar5 = puVar2;
      local_20 = puVar2;
      if (param_4 != piVar11) {
        do {
          *local_20 = local_20 + 2;
                    /* try { // try from 003454e4 to 003454e8 has its CatchHandler @ 00345a9a */
          FUN_0014fca0(local_20,*piVar11,piVar11[1] + *piVar11,0);
          piVar12 = piVar11 + 8;
          local_20[6] = piVar11[6];
          *(char *)(local_20 + 7) = (char)piVar11[7];
          *(undefined1 *)((int)local_20 + 0x1d) = *(undefined1 *)((int)piVar11 + 0x1d);
          piVar11 = piVar12;
          local_20 = local_20 + 8;
        } while (param_4 != piVar12);
        puVar5 = (undefined4 *)param_1[1];
      }
      puVar5 = puVar5 + (uVar7 - uVar10) * 8;
      param_1[1] = puVar5;
      puVar4 = param_2 + 2;
      if (puVar2 != param_2) {
        do {
          *puVar5 = puVar5 + 2;
          if (puVar4 == (undefined4 *)puVar4[-2]) {
            puVar5[2] = *puVar4;
            puVar5[3] = puVar4[1];
            puVar5[4] = puVar4[2];
            puVar5[5] = puVar4[3];
          }
          else {
            *puVar5 = (undefined4 *)puVar4[-2];
            puVar5[2] = *puVar4;
          }
          puVar5[1] = puVar4[-1];
          puVar4[-2] = puVar4;
          puVar8 = puVar4 + 8;
          puVar4[-1] = 0;
          *(undefined1 *)puVar4 = 0;
          puVar5[6] = puVar4[4];
          *(undefined1 *)(puVar5 + 7) = *(undefined1 *)(puVar4 + 5);
          *(undefined1 *)((int)puVar5 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);
          puVar4 = puVar8;
          puVar5 = puVar5 + 8;
        } while (puVar2 + 2 != puVar8);
        puVar5 = (undefined4 *)param_1[1];
      }
      param_1[1] = (int)puVar5 + iVar9;
      local_20 = (undefined4 *)uVar10;
      if (iVar9 < 1) {
        return;
      }
      do {
        FUN_003b5c90(param_2,param_3);
        param_2[6] = param_3[6];
        *(char *)(param_2 + 7) = (char)param_3[7];
        *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);
        local_20 = (undefined4 *)((int)local_20 - 1);
        param_3 = param_3 + 8;
        param_2 = param_2 + 8;
      } while (local_20 != (undefined4 *)0x0);
      return;
    }
    puVar5 = (undefined4 *)((int)puVar2 + (8 - iVar6));
    puVar4 = puVar2;
    do {
      *puVar4 = puVar4 + 2;
      if ((undefined4 *)puVar5[-2] == puVar5) {
        puVar4[2] = *puVar5;
        puVar4[3] = puVar5[1];
        puVar4[4] = puVar5[2];
        puVar4[5] = puVar5[3];
      }
      else {
        *puVar4 = (undefined4 *)puVar5[-2];
        puVar4[2] = *puVar5;
      }
      puVar4[1] = puVar5[-1];
      puVar5[-2] = puVar5;
      puVar8 = puVar5 + 8;
      puVar5[-1] = 0;
      *(undefined1 *)puVar5 = 0;
      puVar4[6] = puVar5[4];
      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar5 + 5);
      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar5 + 0x15);
      puVar5 = puVar8;
      puVar4 = puVar4 + 8;
    } while (puVar2 + 2 != puVar8);
    param_1[1] = param_1[1] + iVar6;
    local_20 = (undefined4 *)((int)puVar2 + (-0x18 - iVar6));
    iVar9 = (int)puVar2 + (-(int)param_2 - iVar6);
    iVar13 = iVar9 >> 5;
    puVar2 = puVar2 + -6;
    if (0 < iVar9) {
      do {
        puVar5 = (undefined4 *)puVar2[-2];
        puVar4 = (undefined4 *)local_20[-2];
        if (puVar4 == local_20) {
          __n = local_20[-1];
          if (__n != 0) {
            if (__n == 1) {
              *(undefined1 *)puVar5 = *(undefined1 *)local_20;
              puVar5 = (undefined4 *)puVar2[-2];
              __n = local_20[-1];
            }
            else {
              memcpy(puVar5,local_20,__n);
              puVar5 = (undefined4 *)puVar2[-2];
              __n = local_20[-1];
            }
          }
          puVar2[-1] = __n;
          *(undefined1 *)((int)puVar5 + __n) = 0;
        }
        else {
          if (puVar5 == puVar2) {
            puVar2[-2] = puVar4;
            puVar2[-1] = local_20[-1];
            *puVar2 = *local_20;
          }
          else {
            puVar2[-2] = puVar4;
            uVar1 = *puVar2;
            puVar2[-1] = local_20[-1];
            *puVar2 = *local_20;
            if (puVar5 != (undefined4 *)0x0) {
              local_20[-2] = puVar5;
              *local_20 = uVar1;
              goto LAB_0034596d;
            }
          }
          local_20[-2] = local_20;
        }
LAB_0034596d:
        local_20[-1] = 0;
        *(undefined1 *)local_20[-2] = 0;
        puVar2[4] = local_20[4];
        *(undefined1 *)(puVar2 + 5) = *(undefined1 *)(local_20 + 5);
        *(undefined1 *)((int)puVar2 + 0x15) = *(undefined1 *)((int)local_20 + 0x15);
        iVar13 = iVar13 + -1;
        puVar2 = puVar2 + -8;
        local_20 = local_20 + -8;
      } while (iVar13 != 0);
    }
    local_20 = (undefined4 *)uVar7;
    if (iVar6 < 1) {
      return;
    }
    do {
      FUN_003b5c90(param_2,param_3);
      param_2[6] = param_3[6];
      *(char *)(param_2 + 7) = (char)param_3[7];
      *(undefined1 *)((int)param_2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);
      local_20 = (undefined4 *)((int)local_20 - 1);
      param_3 = param_3 + 8;
      param_2 = param_2 + 8;
    } while (local_20 != (undefined4 *)0x0);
    return;
  }
  puVar5 = (undefined4 *)*param_1;
  uVar10 = (int)puVar2 - (int)puVar5 >> 5;
  if (0x7ffffff - uVar10 < uVar7) {
                    /* WARNING: Subroutine does not return */
    FUN_003f3a70("vector::_M_range_insert");
  }
  if (uVar7 < uVar10) {
    uVar7 = uVar10;
  }
  local_2c = uVar10 + uVar7;
  if ((CARRY4(uVar10,uVar7)) || (0x7ffffff < local_2c)) {
    iVar6 = -0x20;
    local_2c = 0x7ffffff;
  }
  else {
    local_28 = (undefined4 *)0x0;
    if (local_2c == 0) goto LAB_00345692;
    iVar6 = local_2c * 0x20;
  }
  local_28 = (undefined4 *)FUN_003ac4d0(iVar6);
  puVar5 = (undefined4 *)*param_1;
LAB_00345692:
  puVar2 = local_28;
  if (param_2 != puVar5) {
    puVar2 = puVar5 + 2;
    puVar4 = local_28;
    do {
      *puVar4 = puVar4 + 2;
      if ((undefined4 *)puVar2[-2] == puVar2) {
        puVar4[2] = *puVar2;
        puVar4[3] = puVar2[1];
        puVar4[4] = puVar2[2];
        puVar4[5] = puVar2[3];
      }
      else {
        *puVar4 = (undefined4 *)puVar2[-2];
        puVar4[2] = *puVar2;
      }
      puVar4[1] = puVar2[-1];
      puVar2[-2] = puVar2;
      puVar8 = puVar2 + 8;
      puVar2[-1] = 0;
      *(undefined1 *)puVar2 = 0;
      puVar4[6] = puVar2[4];
      *(undefined1 *)(puVar4 + 7) = *(undefined1 *)(puVar2 + 5);
      *(undefined1 *)((int)puVar4 + 0x1d) = *(undefined1 *)((int)puVar2 + 0x15);
      puVar2 = puVar8;
      puVar4 = puVar4 + 8;
    } while (puVar8 != param_2 + 2);
    puVar2 = local_28 + (((uint)((int)param_2 + (-0x20 - (int)puVar5)) >> 5) + 1) * 8;
  }
  do {
    *puVar2 = puVar2 + 2;
                    /* try { // try from 003457c3 to 003457c7 has its CatchHandler @ 00345a9c */
    FUN_0014fca0(puVar2,*param_3,param_3[1] + *param_3,0);
    piVar11 = param_3 + 8;
    puVar5 = puVar2 + 8;
    puVar2[6] = param_3[6];
    *(char *)(puVar2 + 7) = (char)param_3[7];
    *(undefined1 *)((int)puVar2 + 0x1d) = *(undefined1 *)((int)param_3 + 0x1d);
    param_3 = piVar11;
    puVar2 = puVar5;
  } while (param_4 != piVar11);
  puVar2 = (undefined4 *)param_1[1];
  if (param_2 != puVar2) {
    puVar4 = param_2 + 2;
    puVar8 = puVar5;
    do {
      puVar3 = (undefined4 *)puVar4[-2];
      *puVar8 = puVar8 + 2;
      if (puVar4 == puVar3) {
        puVar8[2] = *puVar4;
        puVar8[3] = puVar4[1];
        puVar8[4] = puVar4[2];
        puVar8[5] = puVar4[3];
      }
      else {
        *puVar8 = puVar3;
        puVar8[2] = *puVar4;
      }
      uVar1 = puVar4[-1];
      puVar4[-2] = puVar4;
      puVar3 = puVar4 + 8;
      puVar4[-1] = 0;
      puVar8[1] = uVar1;
      *(undefined1 *)puVar4 = 0;
      puVar8[6] = puVar4[4];
      *(undefined1 *)(puVar8 + 7) = *(undefined1 *)(puVar4 + 5);
      *(undefined1 *)((int)puVar8 + 0x1d) = *(undefined1 *)((int)puVar4 + 0x15);
      puVar4 = puVar3;
      puVar8 = puVar8 + 8;
    } while (puVar2 + 2 != puVar3);
    puVar5 = puVar5 + (((uint)((int)puVar2 + (-0x20 - (int)param_2)) >> 5) + 1) * 8;
    puVar2 = (undefined4 *)param_1[1];
  }
  puVar4 = (undefined4 *)*param_1;
  if (puVar4 != puVar2) {
    do {
      if ((undefined4 *)*puVar4 != puVar4 + 2) {
        FUN_003ae080((undefined4 *)*puVar4);
      }
      puVar4 = puVar4 + 8;
    } while (puVar4 != puVar2);
    puVar2 = (undefined4 *)*param_1;
  }
  if (puVar2 != (undefined4 *)0x0) {
    FUN_003ae080(puVar2);
  }
  param_1[1] = puVar5;
  *param_1 = local_28;
  param_1[2] = local_28 + local_2c * 8;
  return;
}

