
/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name:
   __introsort_loop<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,
   std::vector<std::__cxx11::basic_string<char> > >, long int,
   __gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare> > */

void std::
     __introsort_loop<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,_long_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>
               (__normal_iterator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>*,_std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>
                __first,basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *__last,
               long __depth_limit)

{
  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *this;
  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *this_00;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *__src;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar1;
  pointer pcVar2;
  int iVar3;
  ulong uVar4;
  ulong uVar5;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar6;
  size_t __n;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *__dest;
  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *this_01;
  char *pcVar7;
  ulong uVar8;
  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *pbVar9;
  undefined1 in_stack_00000008;
  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *local_98;
  long local_90;
  __normal_iterator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>*,_std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>
  local_80;
  _ValueType __value;
  size_type *local_58;
  size_type local_50;
  size_type local_48;
  undefined8 uStack_40;
  
  if (0x200 < (long)__last - (long)__first._M_current) {
    local_80._M_current = __last;
    if (__depth_limit != 0) {
      this = __first._M_current + 1;
      uVar8 = 0;
      local_98 = __last;
      local_90 = __depth_limit;
LAB_00285459:
      local_90 = local_90 + -1;
      this_00 = local_98 + -1;
      uVar4 = string::rfind((string *)this,'/',0xffffffffffffffff);
      this_01 = __first._M_current +
                (((long)local_98 - (long)__first._M_current >> 5) -
                 ((long)local_98 - (long)__first._M_current >> 0x3f) >> 1);
      uVar5 = string::rfind((string *)this_01,'/',0xffffffffffffffff);
      if (uVar4 == 0xffffffffffffffff) {
        uVar4 = uVar8;
      }
      if (uVar5 == 0xffffffffffffffff) {
        uVar5 = uVar8;
      }
      iVar3 = string::compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_01,uVar5,
                              0xffffffffffffffff);
      local_80._M_current = this;
      pbVar9 = local_98;
      if (iVar3 < 0) {
        uVar4 = string::rfind((string *)this_01,'/',0xffffffffffffffff);
        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);
        if (uVar4 == 0xffffffffffffffff) {
          uVar4 = uVar8;
        }
        if (uVar5 == 0xffffffffffffffff) {
          uVar5 = uVar8;
        }
        iVar3 = string::compare((string *)this_01,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,
                                0xffffffffffffffff);
        if (iVar3 < 0) {
LAB_002858b2:
          string::swap((string *)__first._M_current,(string *)this_01);
          goto LAB_002855a0;
        }
        uVar4 = string::rfind((string *)this,'/',0xffffffffffffffff);
        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);
        if (uVar4 == 0xffffffffffffffff) {
          uVar4 = uVar8;
        }
        if (uVar5 == 0xffffffffffffffff) {
          uVar5 = uVar8;
        }
        iVar3 = string::compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,
                                0xffffffffffffffff);
        if (-1 < iVar3) {
          string::swap((string *)__first._M_current,(string *)this);
          goto LAB_002855a0;
        }
      }
      else {
        uVar4 = string::rfind((string *)this,'/',0xffffffffffffffff);
        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);
        if (uVar4 == 0xffffffffffffffff) {
          uVar4 = uVar8;
        }
        if (uVar5 == 0xffffffffffffffff) {
          uVar5 = uVar8;
        }
        iVar3 = string::compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,
                                0xffffffffffffffff);
        if (iVar3 < 0) {
          string::swap((string *)__first._M_current,(string *)this);
          goto LAB_002855a0;
        }
        uVar4 = string::rfind((string *)this_01,'/',0xffffffffffffffff);
        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);
        if (uVar4 == 0xffffffffffffffff) {
          uVar4 = uVar8;
        }
        if (uVar5 == 0xffffffffffffffff) {
          uVar5 = uVar8;
        }
        iVar3 = string::compare((string *)this_01,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,
                                0xffffffffffffffff);
        if (-1 < iVar3) goto LAB_002858b2;
      }
      string::swap((string *)__first._M_current,(string *)this_00);
LAB_002855a0:
      do {
        uVar4 = string::rfind((string *)local_80._M_current,'/',0xffffffffffffffff);
        uVar5 = string::rfind((string *)__first._M_current,'/',0xffffffffffffffff);
        if (uVar4 == 0xffffffffffffffff) {
          uVar4 = uVar8;
        }
        if (uVar5 == 0xffffffffffffffff) {
          uVar5 = uVar8;
        }
        iVar3 = string::compare((string *)local_80._M_current,uVar4,0xffffffffffffffff,
                                (string *)__first._M_current,uVar5,0xffffffffffffffff);
        if (-1 < iVar3) {
          do {
            pbVar9 = pbVar9 + -1;
            uVar4 = string::rfind((string *)__first._M_current,'/',0xffffffffffffffff);
            uVar5 = string::rfind((string *)pbVar9,'/',0xffffffffffffffff);
            if (uVar4 == 0xffffffffffffffff) {
              uVar4 = uVar8;
            }
            if (uVar5 == 0xffffffffffffffff) {
              uVar5 = uVar8;
            }
            iVar3 = string::compare((string *)__first._M_current,uVar4,0xffffffffffffffff,
                                    (string *)pbVar9,uVar5,0xffffffffffffffff);
          } while (iVar3 < 0);
          if (pbVar9 <= local_80._M_current) goto LAB_00285680;
          string::swap((string *)local_80._M_current,(string *)pbVar9);
        }
        local_80._M_current = local_80._M_current + 1;
      } while( true );
    }
LAB_002856b5:
    __src = &(__first._M_current)->field_2;
    paVar1 = &__value.field_2;
    __dest = &local_80._M_current[-1].field_2;
    local_58 = (size_type *)CONCAT71(local_58._1_7_,in_stack_00000008);
    __make_heap<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>
              (__first,local_80,(_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58);
    do {
      __value._M_dataplus._M_p =
           (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->
           _M_dataplus)._M_p;
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)__value._M_dataplus._M_p == __dest) {
        __value.field_2._M_allocated_capacity = __dest->_M_allocated_capacity;
        __value.field_2._8_8_ = *(size_type *)((long)__dest + 8);
        __value._M_dataplus._M_p = (pointer)paVar1;
      }
      else {
        __value.field_2._M_allocated_capacity = __dest->_M_allocated_capacity;
      }
      __value._M_string_length = *(size_type *)((long)__dest + -8);
      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->
      _M_dataplus)._M_p = (pointer)__dest;
      *(size_type *)((long)__dest + -8) = 0;
      __dest->_M_local_buf[0] = '\0';
      pcVar2 = ((__first._M_current)->_M_dataplus)._M_p;
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)pcVar2 == __src) {
        __n = (__first._M_current)->_M_string_length;
        if (__n != 0) {
          if (__n == 1) {
            __dest->_M_local_buf[0] = ((__first._M_current)->field_2)._M_local_buf[0];
            __n = (__first._M_current)->_M_string_length;
          }
          else {
            memcpy(__dest,__src,__n);
            __n = (__first._M_current)->_M_string_length;
          }
        }
        pcVar2 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)
                  (__dest + -1))->_M_dataplus)._M_p;
        *(size_t *)((long)__dest + -8) = __n;
        pcVar2[__n] = '\0';
        paVar6 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                  *)((__first._M_current)->_M_dataplus)._M_p;
      }
      else {
        (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->
        _M_dataplus)._M_p = pcVar2;
        *(size_type *)((long)__dest + -8) = (__first._M_current)->_M_string_length;
        __dest->_M_allocated_capacity = ((__first._M_current)->field_2)._M_allocated_capacity;
        ((__first._M_current)->_M_dataplus)._M_p = (pointer)__src;
        paVar6 = __src;
      }
      (__first._M_current)->_M_string_length = 0;
      paVar6->_M_local_buf[0] = '\0';
      local_58 = &local_48;
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)__value._M_dataplus._M_p == paVar1) {
        uStack_40 = __value.field_2._8_8_;
      }
      else {
        local_58 = (size_type *)__value._M_dataplus._M_p;
      }
      local_48 = __value.field_2._M_allocated_capacity;
      pcVar7 = __dest->_M_local_buf + (-0x10 - (long)__first._M_current);
      local_50 = __value._M_string_length;
      __value._M_string_length = 0;
      __value.field_2._M_allocated_capacity =
           __value.field_2._M_allocated_capacity & 0xffffffffffffff00;
      __value._M_dataplus._M_p = (pointer)paVar1;
                    /* try { // try from 002857a4 to 002857a8 has its CatchHandler @ 00285962 */
      __adjust_heap<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,_long_int,_std::__cxx11::basic_string<char>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>
                (__first._M_current,0,(long)pcVar7 >> 5,
                 (_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58);
      if (local_58 != &local_48) {
        operator_delete(local_58);
      }
      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
           *)__value._M_dataplus._M_p != paVar1) {
        operator_delete(__value._M_dataplus._M_p);
      }
      __dest = __dest + -2;
    } while (0x20 < (long)pcVar7);
  }
  return;
LAB_00285680:
  __introsort_loop<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,_long_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>
            (local_80._M_current,local_98,local_90);
  if ((long)local_80._M_current - (long)__first._M_current < 0x201) {
    return;
  }
  local_98 = local_80._M_current;
  if (local_90 == 0) goto LAB_002856b5;
  goto LAB_00285459;
}



/* WARNING: Removing unreachable block (ram,0x002857c6) */

void FUN_00285410(undefined8 *param_1,undefined8 *param_2,long param_3)

{
  undefined8 *puVar1;
  ulong uVar2;
  int iVar3;
  long lVar4;
  long lVar5;
  undefined8 *puVar6;
  size_t __n;
  ulong *__dest;
  undefined8 *puVar7;
  undefined1 *puVar8;
  long lVar9;
  undefined8 *puVar10;
  undefined1 in_stack_00000008;
  undefined8 *local_98;
  long local_90;
  undefined8 *local_80;
  ulong *local_78;
  ulong local_68;
  ulong uStack_60;
  ulong *local_58;
  ulong local_50;
  ulong local_48;
  ulong uStack_40;
  
  if (0x200 < (long)param_2 - (long)param_1) {
    local_80 = param_2;
    if (param_3 != 0) {
      puVar1 = param_1 + 4;
      lVar9 = 0;
      local_98 = param_2;
      local_90 = param_3;
LAB_00285459:
      local_90 = local_90 + -1;
      puVar6 = local_98 + -4;
      lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);
      puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -
                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4;
      lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);
      if (lVar4 == -1) {
        lVar4 = lVar9;
      }
      if (lVar5 == -1) {
        lVar5 = lVar9;
      }
      iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff);
      local_80 = puVar1;
      puVar10 = local_98;
      if (iVar3 < 0) {
        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);
        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);
        if (lVar4 == -1) {
          lVar4 = lVar9;
        }
        if (lVar5 == -1) {
          lVar5 = lVar9;
        }
        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);
        if (iVar3 < 0) {
LAB_002858b2:
          FUN_002e3180(param_1,puVar7);
          goto LAB_002855a0;
        }
        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);
        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);
        if (lVar4 == -1) {
          lVar4 = lVar9;
        }
        if (lVar5 == -1) {
          lVar5 = lVar9;
        }
        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);
        if (-1 < iVar3) {
          FUN_002e3180(param_1,puVar1);
          goto LAB_002855a0;
        }
      }
      else {
        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);
        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);
        if (lVar4 == -1) {
          lVar4 = lVar9;
        }
        if (lVar5 == -1) {
          lVar5 = lVar9;
        }
        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);
        if (iVar3 < 0) {
          FUN_002e3180(param_1,puVar1);
          goto LAB_002855a0;
        }
        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);
        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);
        if (lVar4 == -1) {
          lVar4 = lVar9;
        }
        if (lVar5 == -1) {
          lVar5 = lVar9;
        }
        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);
        if (-1 < iVar3) goto LAB_002858b2;
      }
      FUN_002e3180(param_1,puVar6);
LAB_002855a0:
      do {
        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);
        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);
        if (lVar4 == -1) {
          lVar4 = lVar9;
        }
        if (lVar5 == -1) {
          lVar5 = lVar9;
        }
        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);
        if (-1 < iVar3) {
          do {
            puVar10 = puVar10 + -4;
            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);
            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);
            if (lVar4 == -1) {
              lVar4 = lVar9;
            }
            if (lVar5 == -1) {
              lVar5 = lVar9;
            }
            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);
          } while (iVar3 < 0);
          if (puVar10 <= local_80) goto LAB_00285680;
          FUN_002e3180(local_80,puVar10);
        }
        local_80 = local_80 + 4;
      } while( true );
    }
LAB_002856b5:
    puVar1 = param_1 + 2;
    __dest = local_80 + -2;
    local_58 = (ulong *)CONCAT71(local_58._1_7_,in_stack_00000008);
    FUN_00285270(param_1,local_80,&local_58);
    do {
      local_78 = (ulong *)__dest[-2];
      if (local_78 == __dest) {
        local_68 = *__dest;
        uStack_60 = __dest[1];
        local_78 = &local_68;
      }
      else {
        local_68 = *__dest;
      }
      uVar2 = __dest[-1];
      __dest[-2] = (ulong)__dest;
      __dest[-1] = 0;
      *(undefined1 *)__dest = 0;
      if ((undefined8 *)*param_1 == puVar1) {
        __n = param_1[1];
        if (__n != 0) {
          if (__n == 1) {
            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);
            __n = param_1[1];
          }
          else {
            memcpy(__dest,puVar1,__n);
            __n = param_1[1];
          }
        }
        __dest[-1] = __n;
        *(undefined1 *)(__dest[-2] + __n) = 0;
        puVar6 = (undefined8 *)*param_1;
      }
      else {
        __dest[-2] = (ulong)*param_1;
        __dest[-1] = param_1[1];
        *__dest = param_1[2];
        *param_1 = puVar1;
        puVar6 = puVar1;
      }
      param_1[1] = 0;
      *(undefined1 *)puVar6 = 0;
      local_58 = &local_48;
      if (local_78 == &local_68) {
        uStack_40 = uStack_60;
      }
      else {
        local_58 = local_78;
      }
      local_48 = local_68;
      puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1));
      local_68 = local_68 & 0xffffffffffffff00;
      local_50 = uVar2;
                    /* try { // try from 002857a4 to 002857a8 has its CatchHandler @ 00285962 */
      FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58);
      if (local_58 != &local_48) {
        FUN_002dac70();
      }
      __dest = __dest + -4;
    } while (0x20 < (long)puVar8);
  }
  return;
LAB_00285680:
  FUN_00285410(local_80,local_98,local_90);
  if ((long)local_80 - (long)param_1 < 0x201) {
    return;
  }
  local_98 = local_80;
  if (local_90 == 0) goto LAB_002856b5;
  goto LAB_00285459;
}


PUSH R15
MOV RAX,RSI
PUSH R14
SUB RAX,RDI
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x78
MOV qword ptr [RSP + 0x18],RDX
MOV qword ptr [RSP + 0x10],RSI
CMP RAX,0x200
JLE 0x002858c8
MOV RBP,RDI
TEST RDX,RDX
JZ 0x00285958
LEA RAX,[RDI + 0x20]
MOV RBX,-0x1
XOR R13D,R13D
MOV qword ptr [RSP + 0x8],RAX
MOV RCX,qword ptr [RSP + 0x10]
MOV RDI,qword ptr [RSP + 0x8]
MOV RDX,RBX
MOV ESI,0x2f
SUB qword ptr [RSP + 0x18],0x1
MOV R12,RCX
LEA R14,[RCX + -0x20]
SUB R12,RBP
MOV RAX,R12
SAR RAX,0x5
MOV R12,RAX
SHR R12,0x3f
ADD R12,RAX
CALL 0x002e34f0
SAR R12,0x1
MOV RDX,RBX
MOV ESI,0x2f
SHL R12,0x5
MOV R15,RAX
ADD R12,RBP
MOV RDI,R12
CALL 0x002e34f0
CMP R15,-0x1
MOV RDX,RBX
MOV R9,RBX
MOV R8,RAX
CMOVZ R15,R13
CMP RAX,-0x1
MOV RDI,qword ptr [RSP + 0x8]
CMOVZ R8,R13
MOV RCX,R12
MOV RSI,R15
CALL 0x002e39a0
MOV RDX,RBX
MOV ESI,0x2f
TEST EAX,EAX
JNS 0x00285800
MOV RDI,R12
CALL 0x002e34f0
MOV RDX,RBX
MOV ESI,0x2f
MOV RDI,R14
MOV R15,RAX
CALL 0x002e34f0
CMP R15,-0x1
MOV R9,RBX
MOV RCX,R14
CMOVZ R15,R13
MOV R8,RAX
CMP RAX,-0x1
MOV RDX,RBX
CMOVZ R8,R13
MOV RDI,R12
MOV RSI,R15
CALL 0x002e39a0
TEST EAX,EAX
JS 0x002858b2
MOV R15,qword ptr [RSP + 0x8]
MOV RDX,RBX
MOV ESI,0x2f
MOV RDI,R15
CALL 0x002e34f0
MOV RDX,RBX
MOV ESI,0x2f
MOV RDI,R14
MOV R12,RAX
CALL 0x002e34f0
CMP R12,-0x1
MOV R9,RBX
MOV RCX,R14
CMOVZ R12,R13
MOV R8,RAX
CMP RAX,-0x1
MOV RDX,RBX
CMOVZ R8,R13
MOV RDI,R15
MOV RSI,R12
CALL 0x002e39a0
TEST EAX,EAX
JNS 0x002858e0
MOV RSI,R14
MOV RDI,RBP
CALL 0x002e3180
MOV R12,qword ptr [RSP + 0x8]
MOV R15,qword ptr [RSP + 0x10]
NOP dword ptr [RAX]
MOV RDX,RBX
MOV ESI,0x2f
MOV RDI,R12
MOV qword ptr [RSP + 0x28],R12
CALL 0x002e34f0
MOV RDX,RBX
MOV ESI,0x2f
MOV RDI,RBP
MOV R14,RAX
CALL 0x002e34f0
CMP R14,-0x1
MOV R9,RBX
MOV RCX,RBP
CMOVZ R14,R13
MOV R8,RAX
CMP RAX,-0x1
MOV RDX,RBX
CMOVZ R8,R13
MOV RDI,R12
MOV RSI,R14
CALL 0x002e39a0
TEST EAX,EAX
JS 0x0028566d
MOV qword ptr [RSP + 0x20],R12
LEA R14,[R15 + -0x20]
NOP dword ptr [RAX]
MOV RDX,RBX
MOV ESI,0x2f
MOV RDI,RBP
MOV R12,R14
CALL 0x002e34f0
MOV RDI,R14
MOV RDX,RBX
MOV ESI,0x2f
MOV R15,RAX
CALL 0x002e34f0
CMP R15,-0x1
MOV RCX,R14
MOV R9,RBX
MOV R8,RAX
CMOVZ R15,R13
CMP RAX,-0x1
MOV RDX,RBX
CMOVZ R8,R13
MOV RDI,RBP
SUB R14,0x20
MOV RSI,R15
CALL 0x002e39a0
TEST EAX,EAX
JS 0x00285600
MOV R15,R12
MOV R12,qword ptr [RSP + 0x20]
CMP R12,R15
JNC 0x00285680
MOV RSI,R15
MOV RDI,R12
CALL 0x002e3180
ADD R12,0x20
JMP 0x002855a0
MOV RDX,qword ptr [RSP + 0x18]
MOV RSI,qword ptr [RSP + 0x10]
MOV RDI,R12
CALL 0x00285410
MOV RAX,R12
SUB RAX,RBP
CMP RAX,0x200
JLE 0x002858c8
CMP qword ptr [RSP + 0x18],0x0
MOV qword ptr [RSP + 0x10],R12
JNZ 0x00285459
MOV RBX,qword ptr [RSP + 0x28]
LEA R13,[RSP + 0x50]
MOV RDI,RBP
LEA R14,[RBP + 0x10]
MOVZX EAX,byte ptr [RSP + 0xb0]
MOV RDX,R13
LEA R15,[RSP + 0x40]
MOV RSI,RBX
SUB RBX,0x10
MOV byte ptr [RSP + 0x50],AL
CALL 0x00285270
LEA RAX,[RSP + 0x30]
MOV qword ptr [RSP + 0x8],RAX
JMP 0x002857d9
MOV qword ptr [RSP + 0x30],RAX
MOV RAX,qword ptr [RBX]
MOV qword ptr [RSP + 0x40],RAX
MOV RAX,qword ptr [RBX + -0x8]
MOV qword ptr [RBX + -0x10],RBX
MOV qword ptr [RBX + -0x8],0x0
MOV qword ptr [RSP + 0x38],RAX
MOV byte ptr [RBX],0x0
MOV RAX,qword ptr [RBP]
CMP RAX,R14
JZ 0x00285910
MOV qword ptr [RBX + -0x10],RAX
MOV RAX,qword ptr [RBP + 0x8]
MOV qword ptr [RBX + -0x8],RAX
MOV RAX,qword ptr [RBP + 0x10]
MOV qword ptr [RBX],RAX
MOV RAX,R14
MOV qword ptr [RBP],R14
MOV qword ptr [RBP + 0x8],0x0
MOV byte ptr [RAX],0x0
LEA RAX,[R13 + 0x10]
MOV qword ptr [RSP + 0x50],RAX
MOV RAX,qword ptr [RSP + 0x30]
CMP RAX,R15
JZ 0x002858f8
MOV qword ptr [RSP + 0x50],RAX
MOV RAX,qword ptr [RSP + 0x40]
MOV qword ptr [RSP + 0x60],RAX
SUB R12,RBP
MOV RAX,qword ptr [RSP + 0x38]
MOV RCX,R13
XOR ESI,ESI
MOV RDX,R12
MOV RDI,RBP
MOV qword ptr [RSP + 0x30],R15
SAR RDX,0x5
MOV qword ptr [RSP + 0x58],RAX
MOV qword ptr [RSP + 0x38],0x0
MOV byte ptr [RSP + 0x40],0x0
CALL 0x00284c60
MOV RDI,qword ptr [RSP + 0x50]
LEA RAX,[R13 + 0x10]
CMP RDI,RAX
JZ 0x002857bc
CALL 0x002dac70
MOV RDI,qword ptr [RSP + 0x30]
CMP RDI,R15
JZ 0x002857cb
CALL 0x002dac70
SUB RBX,0x20
CMP R12,0x20
JLE 0x002858c8
MOV RAX,qword ptr [RBX + -0x10]
LEA R12,[RBX + -0x10]
MOV qword ptr [RSP + 0x30],R15
CMP RAX,RBX
JNZ 0x002856f8
MOVDQU XMM0,xmmword ptr [RBX]
MOVAPS xmmword ptr [RSP + 0x40],XMM0
JMP 0x00285705
MOV RDI,qword ptr [RSP + 0x8]
CALL 0x002e34f0
MOV RDX,RBX
MOV ESI,0x2f
MOV RDI,R14
MOV R15,RAX
CALL 0x002e34f0
CMP R15,-0x1
MOV R9,RBX
MOV RCX,R14
CMOVZ R15,R13
MOV R8,RAX
CMP RAX,-0x1
MOV RDX,RBX
CMOVZ R8,R13
MOV RSI,R15
MOV R15,qword ptr [RSP + 0x8]
MOV RDI,R15
CALL 0x002e39a0
TEST EAX,EAX
JNS 0x00285860
MOV RSI,R15
MOV RDI,RBP
CALL 0x002e3180
JMP 0x00285593
MOV RDX,RBX
MOV ESI,0x2f
MOV RDI,R12
CALL 0x002e34f0
MOV RDX,RBX
MOV ESI,0x2f
MOV RDI,R14
MOV R15,RAX
CALL 0x002e34f0
CMP R15,-0x1
MOV R9,RBX
MOV RCX,R14
CMOVZ R15,R13
MOV R8,RAX
CMP RAX,-0x1
MOV RDX,RBX
CMOVZ R8,R13
MOV RDI,R12
MOV RSI,R15
CALL 0x002e39a0
TEST EAX,EAX
JS 0x00285588
MOV RSI,R12
MOV RDI,RBP
CALL 0x002e3180
JMP 0x00285593
ADD RSP,0x78
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RSI,qword ptr [RSP + 0x8]
MOV RDI,RBP
CALL 0x002e3180
JMP 0x00285593
MOVDQA XMM1,xmmword ptr [RSP + 0x40]
MOVAPS xmmword ptr [RSP + 0x60],XMM1
JMP 0x00285775
MOV RDX,qword ptr [RBP + 0x8]
TEST RDX,RDX
JZ 0x0028592e
CMP RDX,0x1
JZ 0x00285948
MOV RSI,R14
MOV RDI,RBX
CALL 0x00147aa0
MOV RDX,qword ptr [RBP + 0x8]
MOV RAX,qword ptr [RBX + -0x10]
MOV qword ptr [RBX + -0x8],RDX
MOV byte ptr [RAX + RDX*0x1],0x0
MOV RAX,qword ptr [RBP]
JMP 0x00285744
MOVZX EAX,byte ptr [RBP + 0x10]
MOV byte ptr [RBX],AL
MOV RDX,qword ptr [RBP + 0x8]
JMP 0x0028592e
MOV qword ptr [RSP + 0x28],RSI
JMP 0x002856b5
(translation_unit "/* WARNING: Removing unreachable block (ram,0x002857c6) */\n\nvoid FUN_00285410(undefined8 *param_1,undefined8 *param_2,long param_3)\n\n{\n  undefined8 *puVar1;\n  ulong uVar2;\n  int iVar3;\n  long lVar4;\n  long lVar5;\n  undefined8 *puVar6;\n  size_t __n;\n  ulong *__dest;\n  undefined8 *puVar7;\n  undefined1 *puVar8;\n  long lVar9;\n  undefined8 *puVar10;\n  undefined1 in_stack_00000008;\n  undefined8 *local_98;\n  long local_90;\n  undefined8 *local_80;\n  ulong *local_78;\n  ulong local_68;\n  ulong uStack_60;\n  ulong *local_58;\n  ulong local_50;\n  ulong local_48;\n  ulong uStack_40;\n  \n  if (0x200 < (long)param_2 - (long)param_1) {\n    local_80 = param_2;\n    if (param_3 != 0) {\n      puVar1 = param_1 + 4;\n      lVar9 = 0;\n      local_98 = param_2;\n      local_90 = param_3;\nLAB_00285459:\n      local_90 = local_90 + -1;\n      puVar6 = local_98 + -4;\n      lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n      puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4;\n      lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n      if (lVar4 == -1) {\n        lVar4 = lVar9;\n      }\n      if (lVar5 == -1) {\n        lVar5 = lVar9;\n      }\n      iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff);\n      local_80 = puVar1;\n      puVar10 = local_98;\n      if (iVar3 < 0) {\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }\n      FUN_002e3180(param_1,puVar6);\nLAB_002855a0:\n      do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );\n    }\nLAB_002856b5:\n    puVar1 = param_1 + 2;\n    __dest = local_80 + -2;\n    local_58 = (ulong *)CONCAT71(local_58._1_7_,in_stack_00000008);\n    FUN_00285270(param_1,local_80,&local_58);\n    do {\n      local_78 = (ulong *)__dest[-2];\n      if (local_78 == __dest) {\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }\n      else {\n        local_68 = *__dest;\n      }\n      uVar2 = __dest[-1];\n      __dest[-2] = (ulong)__dest;\n      __dest[-1] = 0;\n      *(undefined1 *)__dest = 0;\n      if ((undefined8 *)*param_1 == puVar1) {\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }\n      else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }\n      param_1[1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      local_58 = &local_48;\n      if (local_78 == &local_68) {\n        uStack_40 = uStack_60;\n      }\n      else {\n        local_58 = local_78;\n      }\n      local_48 = local_68;\n      puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1));\n      local_68 = local_68 & 0xffffffffffffff00;\n      local_50 = uVar2;\n                    /* try { // try from 002857a4 to 002857a8 has its CatchHandler @ 00285962 */\n      FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58);\n      if (local_58 != &local_48) {\n        FUN_002dac70();\n      }\n      __dest = __dest + -4;\n    } while (0x20 < (long)puVar8);\n  }\n  return;\nLAB_00285680:\n  FUN_00285410(local_80,local_98,local_90);\n  if ((long)local_80 - (long)param_1 < 0x201) {\n    return;\n  }\n  local_98 = local_80;\n  if (local_90 == 0) goto LAB_002856b5;\n  goto LAB_00285459;\n}\n\n" comment (function_definition "void FUN_00285410(undefined8 *param_1,undefined8 *param_2,long param_3)\n\n{\n  undefined8 *puVar1;\n  ulong uVar2;\n  int iVar3;\n  long lVar4;\n  long lVar5;\n  undefined8 *puVar6;\n  size_t __n;\n  ulong *__dest;\n  undefined8 *puVar7;\n  undefined1 *puVar8;\n  long lVar9;\n  undefined8 *puVar10;\n  undefined1 in_stack_00000008;\n  undefined8 *local_98;\n  long local_90;\n  undefined8 *local_80;\n  ulong *local_78;\n  ulong local_68;\n  ulong uStack_60;\n  ulong *local_58;\n  ulong local_50;\n  ulong local_48;\n  ulong uStack_40;\n  \n  if (0x200 < (long)param_2 - (long)param_1) {\n    local_80 = param_2;\n    if (param_3 != 0) {\n      puVar1 = param_1 + 4;\n      lVar9 = 0;\n      local_98 = param_2;\n      local_90 = param_3;\nLAB_00285459:\n      local_90 = local_90 + -1;\n      puVar6 = local_98 + -4;\n      lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n      puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4;\n      lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n      if (lVar4 == -1) {\n        lVar4 = lVar9;\n      }\n      if (lVar5 == -1) {\n        lVar5 = lVar9;\n      }\n      iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff);\n      local_80 = puVar1;\n      puVar10 = local_98;\n      if (iVar3 < 0) {\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }\n      FUN_002e3180(param_1,puVar6);\nLAB_002855a0:\n      do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );\n    }\nLAB_002856b5:\n    puVar1 = param_1 + 2;\n    __dest = local_80 + -2;\n    local_58 = (ulong *)CONCAT71(local_58._1_7_,in_stack_00000008);\n    FUN_00285270(param_1,local_80,&local_58);\n    do {\n      local_78 = (ulong *)__dest[-2];\n      if (local_78 == __dest) {\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }\n      else {\n        local_68 = *__dest;\n      }\n      uVar2 = __dest[-1];\n      __dest[-2] = (ulong)__dest;\n      __dest[-1] = 0;\n      *(undefined1 *)__dest = 0;\n      if ((undefined8 *)*param_1 == puVar1) {\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }\n      else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }\n      param_1[1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      local_58 = &local_48;\n      if (local_78 == &local_68) {\n        uStack_40 = uStack_60;\n      }\n      else {\n        local_58 = local_78;\n      }\n      local_48 = local_68;\n      puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1));\n      local_68 = local_68 & 0xffffffffffffff00;\n      local_50 = uVar2;\n                    /* try { // try from 002857a4 to 002857a8 has its CatchHandler @ 00285962 */\n      FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58);\n      if (local_58 != &local_48) {\n        FUN_002dac70();\n      }\n      __dest = __dest + -4;\n    } while (0x20 < (long)puVar8);\n  }\n  return;\nLAB_00285680:\n  FUN_00285410(local_80,local_98,local_90);\n  if ((long)local_80 - (long)param_1 < 0x201) {\n    return;\n  }\n  local_98 = local_80;\n  if (local_90 == 0) goto LAB_002856b5;\n  goto LAB_00285459;\n}" primitive_type (function_declarator "FUN_00285410(undefined8 *param_1,undefined8 *param_2,long param_3)" identifier (parameter_list "(undefined8 *param_1,undefined8 *param_2,long param_3)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  undefined8 *puVar1;\n  ulong uVar2;\n  int iVar3;\n  long lVar4;\n  long lVar5;\n  undefined8 *puVar6;\n  size_t __n;\n  ulong *__dest;\n  undefined8 *puVar7;\n  undefined1 *puVar8;\n  long lVar9;\n  undefined8 *puVar10;\n  undefined1 in_stack_00000008;\n  undefined8 *local_98;\n  long local_90;\n  undefined8 *local_80;\n  ulong *local_78;\n  ulong local_68;\n  ulong uStack_60;\n  ulong *local_58;\n  ulong local_50;\n  ulong local_48;\n  ulong uStack_40;\n  \n  if (0x200 < (long)param_2 - (long)param_1) {\n    local_80 = param_2;\n    if (param_3 != 0) {\n      puVar1 = param_1 + 4;\n      lVar9 = 0;\n      local_98 = param_2;\n      local_90 = param_3;\nLAB_00285459:\n      local_90 = local_90 + -1;\n      puVar6 = local_98 + -4;\n      lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n      puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4;\n      lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n      if (lVar4 == -1) {\n        lVar4 = lVar9;\n      }\n      if (lVar5 == -1) {\n        lVar5 = lVar9;\n      }\n      iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff);\n      local_80 = puVar1;\n      puVar10 = local_98;\n      if (iVar3 < 0) {\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }\n      FUN_002e3180(param_1,puVar6);\nLAB_002855a0:\n      do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );\n    }\nLAB_002856b5:\n    puVar1 = param_1 + 2;\n    __dest = local_80 + -2;\n    local_58 = (ulong *)CONCAT71(local_58._1_7_,in_stack_00000008);\n    FUN_00285270(param_1,local_80,&local_58);\n    do {\n      local_78 = (ulong *)__dest[-2];\n      if (local_78 == __dest) {\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }\n      else {\n        local_68 = *__dest;\n      }\n      uVar2 = __dest[-1];\n      __dest[-2] = (ulong)__dest;\n      __dest[-1] = 0;\n      *(undefined1 *)__dest = 0;\n      if ((undefined8 *)*param_1 == puVar1) {\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }\n      else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }\n      param_1[1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      local_58 = &local_48;\n      if (local_78 == &local_68) {\n        uStack_40 = uStack_60;\n      }\n      else {\n        local_58 = local_78;\n      }\n      local_48 = local_68;\n      puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1));\n      local_68 = local_68 & 0xffffffffffffff00;\n      local_50 = uVar2;\n                    /* try { // try from 002857a4 to 002857a8 has its CatchHandler @ 00285962 */\n      FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58);\n      if (local_58 != &local_48) {\n        FUN_002dac70();\n      }\n      __dest = __dest + -4;\n    } while (0x20 < (long)puVar8);\n  }\n  return;\nLAB_00285680:\n  FUN_00285410(local_80,local_98,local_90);\n  if ((long)local_80 - (long)param_1 < 0x201) {\n    return;\n  }\n  local_98 = local_80;\n  if (local_90 == 0) goto LAB_002856b5;\n  goto LAB_00285459;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "ulong *__dest;" type_identifier (pointer_declarator "*__dest" * identifier) ;) (declaration "undefined8 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined1 in_stack_00000008;" type_identifier identifier ;) (declaration "undefined8 *local_98;" type_identifier (pointer_declarator "*local_98" * identifier) ;) (declaration "long local_90;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "ulong *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "ulong local_68;" type_identifier identifier ;) (declaration "ulong uStack_60;" type_identifier identifier ;) (declaration "ulong *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "ulong local_50;" type_identifier identifier ;) (declaration "ulong local_48;" type_identifier identifier ;) (declaration "ulong uStack_40;" type_identifier identifier ;) (if_statement "if (0x200 < (long)param_2 - (long)param_1) {\n    local_80 = param_2;\n    if (param_3 != 0) {\n      puVar1 = param_1 + 4;\n      lVar9 = 0;\n      local_98 = param_2;\n      local_90 = param_3;\nLAB_00285459:\n      local_90 = local_90 + -1;\n      puVar6 = local_98 + -4;\n      lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n      puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4;\n      lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n      if (lVar4 == -1) {\n        lVar4 = lVar9;\n      }\n      if (lVar5 == -1) {\n        lVar5 = lVar9;\n      }\n      iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff);\n      local_80 = puVar1;\n      puVar10 = local_98;\n      if (iVar3 < 0) {\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }\n      FUN_002e3180(param_1,puVar6);\nLAB_002855a0:\n      do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );\n    }\nLAB_002856b5:\n    puVar1 = param_1 + 2;\n    __dest = local_80 + -2;\n    local_58 = (ulong *)CONCAT71(local_58._1_7_,in_stack_00000008);\n    FUN_00285270(param_1,local_80,&local_58);\n    do {\n      local_78 = (ulong *)__dest[-2];\n      if (local_78 == __dest) {\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }\n      else {\n        local_68 = *__dest;\n      }\n      uVar2 = __dest[-1];\n      __dest[-2] = (ulong)__dest;\n      __dest[-1] = 0;\n      *(undefined1 *)__dest = 0;\n      if ((undefined8 *)*param_1 == puVar1) {\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }\n      else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }\n      param_1[1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      local_58 = &local_48;\n      if (local_78 == &local_68) {\n        uStack_40 = uStack_60;\n      }\n      else {\n        local_58 = local_78;\n      }\n      local_48 = local_68;\n      puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1));\n      local_68 = local_68 & 0xffffffffffffff00;\n      local_50 = uVar2;\n                    /* try { // try from 002857a4 to 002857a8 has its CatchHandler @ 00285962 */\n      FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58);\n      if (local_58 != &local_48) {\n        FUN_002dac70();\n      }\n      __dest = __dest + -4;\n    } while (0x20 < (long)puVar8);\n  }" if (parenthesized_expression "(0x200 < (long)param_2 - (long)param_1)" ( (binary_expression "0x200 < (long)param_2 - (long)param_1" number_literal < (binary_expression "(long)param_2 - (long)param_1" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) )) (compound_statement "{\n    local_80 = param_2;\n    if (param_3 != 0) {\n      puVar1 = param_1 + 4;\n      lVar9 = 0;\n      local_98 = param_2;\n      local_90 = param_3;\nLAB_00285459:\n      local_90 = local_90 + -1;\n      puVar6 = local_98 + -4;\n      lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n      puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4;\n      lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n      if (lVar4 == -1) {\n        lVar4 = lVar9;\n      }\n      if (lVar5 == -1) {\n        lVar5 = lVar9;\n      }\n      iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff);\n      local_80 = puVar1;\n      puVar10 = local_98;\n      if (iVar3 < 0) {\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }\n      FUN_002e3180(param_1,puVar6);\nLAB_002855a0:\n      do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );\n    }\nLAB_002856b5:\n    puVar1 = param_1 + 2;\n    __dest = local_80 + -2;\n    local_58 = (ulong *)CONCAT71(local_58._1_7_,in_stack_00000008);\n    FUN_00285270(param_1,local_80,&local_58);\n    do {\n      local_78 = (ulong *)__dest[-2];\n      if (local_78 == __dest) {\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }\n      else {\n        local_68 = *__dest;\n      }\n      uVar2 = __dest[-1];\n      __dest[-2] = (ulong)__dest;\n      __dest[-1] = 0;\n      *(undefined1 *)__dest = 0;\n      if ((undefined8 *)*param_1 == puVar1) {\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }\n      else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }\n      param_1[1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      local_58 = &local_48;\n      if (local_78 == &local_68) {\n        uStack_40 = uStack_60;\n      }\n      else {\n        local_58 = local_78;\n      }\n      local_48 = local_68;\n      puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1));\n      local_68 = local_68 & 0xffffffffffffff00;\n      local_50 = uVar2;\n                    /* try { // try from 002857a4 to 002857a8 has its CatchHandler @ 00285962 */\n      FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58);\n      if (local_58 != &local_48) {\n        FUN_002dac70();\n      }\n      __dest = __dest + -4;\n    } while (0x20 < (long)puVar8);\n  }" { (expression_statement "local_80 = param_2;" (assignment_expression "local_80 = param_2" identifier = identifier) ;) (if_statement "if (param_3 != 0) {\n      puVar1 = param_1 + 4;\n      lVar9 = 0;\n      local_98 = param_2;\n      local_90 = param_3;\nLAB_00285459:\n      local_90 = local_90 + -1;\n      puVar6 = local_98 + -4;\n      lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n      puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4;\n      lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n      if (lVar4 == -1) {\n        lVar4 = lVar9;\n      }\n      if (lVar5 == -1) {\n        lVar5 = lVar9;\n      }\n      iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff);\n      local_80 = puVar1;\n      puVar10 = local_98;\n      if (iVar3 < 0) {\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }\n      FUN_002e3180(param_1,puVar6);\nLAB_002855a0:\n      do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );\n    }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar1 = param_1 + 4;\n      lVar9 = 0;\n      local_98 = param_2;\n      local_90 = param_3;\nLAB_00285459:\n      local_90 = local_90 + -1;\n      puVar6 = local_98 + -4;\n      lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n      puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4;\n      lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n      if (lVar4 == -1) {\n        lVar4 = lVar9;\n      }\n      if (lVar5 == -1) {\n        lVar5 = lVar9;\n      }\n      iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff);\n      local_80 = puVar1;\n      puVar10 = local_98;\n      if (iVar3 < 0) {\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }\n      FUN_002e3180(param_1,puVar6);\nLAB_002855a0:\n      do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );\n    }" { (expression_statement "puVar1 = param_1 + 4;" (assignment_expression "puVar1 = param_1 + 4" identifier = (binary_expression "param_1 + 4" identifier + number_literal)) ;) (expression_statement "lVar9 = 0;" (assignment_expression "lVar9 = 0" identifier = number_literal) ;) (expression_statement "local_98 = param_2;" (assignment_expression "local_98 = param_2" identifier = identifier) ;) (expression_statement "local_90 = param_3;" (assignment_expression "local_90 = param_3" identifier = identifier) ;) (labeled_statement "LAB_00285459:\n      local_90 = local_90 + -1;" statement_identifier : (expression_statement "local_90 = local_90 + -1;" (assignment_expression "local_90 = local_90 + -1" identifier = (binary_expression "local_90 + -1" identifier + number_literal)) ;)) (expression_statement "puVar6 = local_98 + -4;" (assignment_expression "puVar6 = local_98 + -4" identifier = (binary_expression "local_98 + -4" identifier + number_literal)) ;) (expression_statement "lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);" (assignment_expression "lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff)" identifier (argument_list "(puVar1,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4;" (assignment_expression "puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4" identifier = (binary_expression "param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4" identifier + (binary_expression "(((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4" (parenthesized_expression "(((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1)" ( (binary_expression "((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1" (binary_expression "((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f)" (parenthesized_expression "((long)local_98 - (long)param_1 >> 5)" ( (binary_expression "(long)local_98 - (long)param_1 >> 5" (binary_expression "(long)local_98 - (long)param_1" (cast_expression "(long)local_98" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) )) - (parenthesized_expression "((long)local_98 - (long)param_1 >> 0x3f)" ( (binary_expression "(long)local_98 - (long)param_1 >> 0x3f" (binary_expression "(long)local_98 - (long)param_1" (cast_expression "(long)local_98" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) ))) >> number_literal) )) * number_literal))) ;) (expression_statement "lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);" (assignment_expression "lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff)" identifier (argument_list "(puVar7,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (lVar4 == -1) {\n        lVar4 = lVar9;\n      }" if (parenthesized_expression "(lVar4 == -1)" ( (binary_expression "lVar4 == -1" identifier == number_literal) )) (compound_statement "{\n        lVar4 = lVar9;\n      }" { (expression_statement "lVar4 = lVar9;" (assignment_expression "lVar4 = lVar9" identifier = identifier) ;) })) (if_statement "if (lVar5 == -1) {\n        lVar5 = lVar9;\n      }" if (parenthesized_expression "(lVar5 == -1)" ( (binary_expression "lVar5 == -1" identifier == number_literal) )) (compound_statement "{\n        lVar5 = lVar9;\n      }" { (expression_statement "lVar5 = lVar9;" (assignment_expression "lVar5 = lVar9" identifier = identifier) ;) })) (expression_statement "iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff);" (assignment_expression "iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff)" identifier = (call_expression "FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff)" identifier (argument_list "(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff)" ( identifier , identifier , number_literal , identifier , identifier , number_literal )))) ;) (expression_statement "local_80 = puVar1;" (assignment_expression "local_80 = puVar1" identifier = identifier) ;) (expression_statement "puVar10 = local_98;" (assignment_expression "puVar10 = local_98" identifier = identifier) ;) (if_statement "if (iVar3 < 0) {\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }" { (expression_statement "lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);" (assignment_expression "lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff)" identifier (argument_list "(puVar7,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);" (assignment_expression "lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff)" identifier (argument_list "(puVar6,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }" if (parenthesized_expression "(lVar4 == -1)" ( (binary_expression "lVar4 == -1" identifier == number_literal) )) (compound_statement "{\n          lVar4 = lVar9;\n        }" { (expression_statement "lVar4 = lVar9;" (assignment_expression "lVar4 = lVar9" identifier = identifier) ;) })) (if_statement "if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }" if (parenthesized_expression "(lVar5 == -1)" ( (binary_expression "lVar5 == -1" identifier == number_literal) )) (compound_statement "{\n          lVar5 = lVar9;\n        }" { (expression_statement "lVar5 = lVar9;" (assignment_expression "lVar5 = lVar9" identifier = identifier) ;) })) (expression_statement "iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);" (assignment_expression "iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" identifier = (call_expression "FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" identifier (argument_list "(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" ( identifier , identifier , number_literal , identifier , identifier , number_literal )))) ;) (if_statement "if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }" { (labeled_statement "LAB_002858b2:\n          FUN_002e3180(param_1,puVar7);" statement_identifier : (expression_statement "FUN_002e3180(param_1,puVar7);" (call_expression "FUN_002e3180(param_1,puVar7)" identifier (argument_list "(param_1,puVar7)" ( identifier , identifier ))) ;)) (goto_statement "goto LAB_002855a0;" goto statement_identifier ;) })) (expression_statement "lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);" (assignment_expression "lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff)" identifier (argument_list "(puVar1,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);" (assignment_expression "lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff)" identifier (argument_list "(puVar6,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }" if (parenthesized_expression "(lVar4 == -1)" ( (binary_expression "lVar4 == -1" identifier == number_literal) )) (compound_statement "{\n          lVar4 = lVar9;\n        }" { (expression_statement "lVar4 = lVar9;" (assignment_expression "lVar4 = lVar9" identifier = identifier) ;) })) (if_statement "if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }" if (parenthesized_expression "(lVar5 == -1)" ( (binary_expression "lVar5 == -1" identifier == number_literal) )) (compound_statement "{\n          lVar5 = lVar9;\n        }" { (expression_statement "lVar5 = lVar9;" (assignment_expression "lVar5 = lVar9" identifier = identifier) ;) })) (expression_statement "iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);" (assignment_expression "iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" identifier = (call_expression "FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" identifier (argument_list "(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" ( identifier , identifier , number_literal , identifier , identifier , number_literal )))) ;) (if_statement "if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }" if (parenthesized_expression "(-1 < iVar3)" ( (binary_expression "-1 < iVar3" number_literal < identifier) )) (compound_statement "{\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }" { (expression_statement "FUN_002e3180(param_1,puVar1);" (call_expression "FUN_002e3180(param_1,puVar1)" identifier (argument_list "(param_1,puVar1)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_002855a0;" goto statement_identifier ;) })) }) (else_clause "else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }" else (compound_statement "{\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }" { (expression_statement "lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);" (assignment_expression "lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff)" identifier (argument_list "(puVar1,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);" (assignment_expression "lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff)" identifier (argument_list "(puVar6,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }" if (parenthesized_expression "(lVar4 == -1)" ( (binary_expression "lVar4 == -1" identifier == number_literal) )) (compound_statement "{\n          lVar4 = lVar9;\n        }" { (expression_statement "lVar4 = lVar9;" (assignment_expression "lVar4 = lVar9" identifier = identifier) ;) })) (if_statement "if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }" if (parenthesized_expression "(lVar5 == -1)" ( (binary_expression "lVar5 == -1" identifier == number_literal) )) (compound_statement "{\n          lVar5 = lVar9;\n        }" { (expression_statement "lVar5 = lVar9;" (assignment_expression "lVar5 = lVar9" identifier = identifier) ;) })) (expression_statement "iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);" (assignment_expression "iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" identifier = (call_expression "FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" identifier (argument_list "(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" ( identifier , identifier , number_literal , identifier , identifier , number_literal )))) ;) (if_statement "if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }" { (expression_statement "FUN_002e3180(param_1,puVar1);" (call_expression "FUN_002e3180(param_1,puVar1)" identifier (argument_list "(param_1,puVar1)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_002855a0;" goto statement_identifier ;) })) (expression_statement "lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);" (assignment_expression "lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff)" identifier (argument_list "(puVar7,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);" (assignment_expression "lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff)" identifier (argument_list "(puVar6,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }" if (parenthesized_expression "(lVar4 == -1)" ( (binary_expression "lVar4 == -1" identifier == number_literal) )) (compound_statement "{\n          lVar4 = lVar9;\n        }" { (expression_statement "lVar4 = lVar9;" (assignment_expression "lVar4 = lVar9" identifier = identifier) ;) })) (if_statement "if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }" if (parenthesized_expression "(lVar5 == -1)" ( (binary_expression "lVar5 == -1" identifier == number_literal) )) (compound_statement "{\n          lVar5 = lVar9;\n        }" { (expression_statement "lVar5 = lVar9;" (assignment_expression "lVar5 = lVar9" identifier = identifier) ;) })) (expression_statement "iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);" (assignment_expression "iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" identifier = (call_expression "FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" identifier (argument_list "(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" ( identifier , identifier , number_literal , identifier , identifier , number_literal )))) ;) (if_statement "if (-1 < iVar3) goto LAB_002858b2;" if (parenthesized_expression "(-1 < iVar3)" ( (binary_expression "-1 < iVar3" number_literal < identifier) )) (goto_statement "goto LAB_002858b2;" goto statement_identifier ;)) }))) (expression_statement "FUN_002e3180(param_1,puVar6);" (call_expression "FUN_002e3180(param_1,puVar6)" identifier (argument_list "(param_1,puVar6)" ( identifier , identifier ))) ;) (labeled_statement "LAB_002855a0:\n      do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );" statement_identifier : (do_statement "do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );" do (compound_statement "{\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      }" { (expression_statement "lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);" (assignment_expression "lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(local_80,0x2f,0xffffffffffffffff)" identifier (argument_list "(local_80,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);" (assignment_expression "lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(param_1,0x2f,0xffffffffffffffff)" identifier (argument_list "(param_1,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }" if (parenthesized_expression "(lVar4 == -1)" ( (binary_expression "lVar4 == -1" identifier == number_literal) )) (compound_statement "{\n          lVar4 = lVar9;\n        }" { (expression_statement "lVar4 = lVar9;" (assignment_expression "lVar4 = lVar9" identifier = identifier) ;) })) (if_statement "if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }" if (parenthesized_expression "(lVar5 == -1)" ( (binary_expression "lVar5 == -1" identifier == number_literal) )) (compound_statement "{\n          lVar5 = lVar9;\n        }" { (expression_statement "lVar5 = lVar9;" (assignment_expression "lVar5 = lVar9" identifier = identifier) ;) })) (expression_statement "iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);" (assignment_expression "iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff)" identifier = (call_expression "FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff)" identifier (argument_list "(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff)" ( identifier , identifier , number_literal , identifier , identifier , number_literal )))) ;) (if_statement "if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }" if (parenthesized_expression "(-1 < iVar3)" ( (binary_expression "-1 < iVar3" number_literal < identifier) )) (compound_statement "{\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }" { (do_statement "do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);" do (compound_statement "{\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          }" { (expression_statement "puVar10 = puVar10 + -4;" (assignment_expression "puVar10 = puVar10 + -4" identifier = (binary_expression "puVar10 + -4" identifier + number_literal)) ;) (expression_statement "lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);" (assignment_expression "lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(param_1,0x2f,0xffffffffffffffff)" identifier (argument_list "(param_1,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);" (assignment_expression "lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff)" identifier (argument_list "(puVar10,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }" if (parenthesized_expression "(lVar4 == -1)" ( (binary_expression "lVar4 == -1" identifier == number_literal) )) (compound_statement "{\n              lVar4 = lVar9;\n            }" { (expression_statement "lVar4 = lVar9;" (assignment_expression "lVar4 = lVar9" identifier = identifier) ;) })) (if_statement "if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }" if (parenthesized_expression "(lVar5 == -1)" ( (binary_expression "lVar5 == -1" identifier == number_literal) )) (compound_statement "{\n              lVar5 = lVar9;\n            }" { (expression_statement "lVar5 = lVar9;" (assignment_expression "lVar5 = lVar9" identifier = identifier) ;) })) (expression_statement "iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);" (assignment_expression "iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff)" identifier = (call_expression "FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff)" identifier (argument_list "(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff)" ( identifier , identifier , number_literal , identifier , identifier , number_literal )))) ;) }) while (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) ;) (if_statement "if (puVar10 <= local_80) goto LAB_00285680;" if (parenthesized_expression "(puVar10 <= local_80)" ( (binary_expression "puVar10 <= local_80" identifier <= identifier) )) (goto_statement "goto LAB_00285680;" goto statement_identifier ;)) (expression_statement "FUN_002e3180(local_80,puVar10);" (call_expression "FUN_002e3180(local_80,puVar10)" identifier (argument_list "(local_80,puVar10)" ( identifier , identifier ))) ;) })) (expression_statement "local_80 = local_80 + 4;" (assignment_expression "local_80 = local_80 + 4" identifier = (binary_expression "local_80 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (labeled_statement "LAB_002856b5:\n    puVar1 = param_1 + 2;" statement_identifier : (expression_statement "puVar1 = param_1 + 2;" (assignment_expression "puVar1 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;)) (expression_statement "__dest = local_80 + -2;" (assignment_expression "__dest = local_80 + -2" identifier = (binary_expression "local_80 + -2" identifier + number_literal)) ;) (expression_statement "local_58 = (ulong *)CONCAT71(local_58._1_7_,in_stack_00000008);" (assignment_expression "local_58 = (ulong *)CONCAT71(local_58._1_7_,in_stack_00000008)" identifier = (cast_expression "(ulong *)CONCAT71(local_58._1_7_,in_stack_00000008)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_58._1_7_,in_stack_00000008)" identifier (argument_list "(local_58._1_7_,in_stack_00000008)" ( (field_expression "local_58._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "FUN_00285270(param_1,local_80,&local_58);" (call_expression "FUN_00285270(param_1,local_80,&local_58)" identifier (argument_list "(param_1,local_80,&local_58)" ( identifier , identifier , (pointer_expression "&local_58" & identifier) ))) ;) (do_statement "do {\n      local_78 = (ulong *)__dest[-2];\n      if (local_78 == __dest) {\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }\n      else {\n        local_68 = *__dest;\n      }\n      uVar2 = __dest[-1];\n      __dest[-2] = (ulong)__dest;\n      __dest[-1] = 0;\n      *(undefined1 *)__dest = 0;\n      if ((undefined8 *)*param_1 == puVar1) {\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }\n      else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }\n      param_1[1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      local_58 = &local_48;\n      if (local_78 == &local_68) {\n        uStack_40 = uStack_60;\n      }\n      else {\n        local_58 = local_78;\n      }\n      local_48 = local_68;\n      puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1));\n      local_68 = local_68 & 0xffffffffffffff00;\n      local_50 = uVar2;\n                    /* try { // try from 002857a4 to 002857a8 has its CatchHandler @ 00285962 */\n      FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58);\n      if (local_58 != &local_48) {\n        FUN_002dac70();\n      }\n      __dest = __dest + -4;\n    } while (0x20 < (long)puVar8);" do (compound_statement "{\n      local_78 = (ulong *)__dest[-2];\n      if (local_78 == __dest) {\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }\n      else {\n        local_68 = *__dest;\n      }\n      uVar2 = __dest[-1];\n      __dest[-2] = (ulong)__dest;\n      __dest[-1] = 0;\n      *(undefined1 *)__dest = 0;\n      if ((undefined8 *)*param_1 == puVar1) {\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }\n      else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }\n      param_1[1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      local_58 = &local_48;\n      if (local_78 == &local_68) {\n        uStack_40 = uStack_60;\n      }\n      else {\n        local_58 = local_78;\n      }\n      local_48 = local_68;\n      puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1));\n      local_68 = local_68 & 0xffffffffffffff00;\n      local_50 = uVar2;\n                    /* try { // try from 002857a4 to 002857a8 has its CatchHandler @ 00285962 */\n      FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58);\n      if (local_58 != &local_48) {\n        FUN_002dac70();\n      }\n      __dest = __dest + -4;\n    }" { (expression_statement "local_78 = (ulong *)__dest[-2];" (assignment_expression "local_78 = (ulong *)__dest[-2]" identifier = (cast_expression "(ulong *)__dest[-2]" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "__dest[-2]" identifier [ number_literal ]))) ;) (if_statement "if (local_78 == __dest) {\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }\n      else {\n        local_68 = *__dest;\n      }" if (parenthesized_expression "(local_78 == __dest)" ( (binary_expression "local_78 == __dest" identifier == identifier) )) (compound_statement "{\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }" { (expression_statement "local_68 = *__dest;" (assignment_expression "local_68 = *__dest" identifier = (pointer_expression "*__dest" * identifier)) ;) (expression_statement "uStack_60 = __dest[1];" (assignment_expression "uStack_60 = __dest[1]" identifier = (subscript_expression "__dest[1]" identifier [ number_literal ])) ;) (expression_statement "local_78 = &local_68;" (assignment_expression "local_78 = &local_68" identifier = (pointer_expression "&local_68" & identifier)) ;) }) (else_clause "else {\n        local_68 = *__dest;\n      }" else (compound_statement "{\n        local_68 = *__dest;\n      }" { (expression_statement "local_68 = *__dest;" (assignment_expression "local_68 = *__dest" identifier = (pointer_expression "*__dest" * identifier)) ;) }))) (expression_statement "uVar2 = __dest[-1];" (assignment_expression "uVar2 = __dest[-1]" identifier = (subscript_expression "__dest[-1]" identifier [ number_literal ])) ;) (expression_statement "__dest[-2] = (ulong)__dest;" (assignment_expression "__dest[-2] = (ulong)__dest" (subscript_expression "__dest[-2]" identifier [ number_literal ]) = (cast_expression "(ulong)__dest" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "__dest[-1] = 0;" (assignment_expression "__dest[-1] = 0" (subscript_expression "__dest[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)__dest = 0;" (assignment_expression "*(undefined1 *)__dest = 0" (pointer_expression "*(undefined1 *)__dest" * (cast_expression "(undefined1 *)__dest" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (if_statement "if ((undefined8 *)*param_1 == puVar1) {\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }\n      else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }" if (parenthesized_expression "((undefined8 *)*param_1 == puVar1)" ( (binary_expression "(undefined8 *)*param_1 == puVar1" (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) == identifier) )) (compound_statement "{\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }" { (expression_statement "__n = param_1[1];" (assignment_expression "__n = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (compound_statement "{\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }" { (if_statement "if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }" if (parenthesized_expression "(__n == 1)" ( (binary_expression "__n == 1" identifier == number_literal) )) (compound_statement "{\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }" { (expression_statement "*(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);" (assignment_expression "*(undefined1 *)__dest = *(undefined1 *)(param_1 + 2)" (pointer_expression "*(undefined1 *)__dest" * (cast_expression "(undefined1 *)__dest" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined1 *)(param_1 + 2)" * (cast_expression "(undefined1 *)(param_1 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "__n = param_1[1];" (assignment_expression "__n = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) }) (else_clause "else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }" else (compound_statement "{\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }" { (expression_statement "memcpy(__dest,puVar1,__n);" (call_expression "memcpy(__dest,puVar1,__n)" identifier (argument_list "(__dest,puVar1,__n)" ( identifier , identifier , identifier ))) ;) (expression_statement "__n = param_1[1];" (assignment_expression "__n = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) }))) })) (expression_statement "__dest[-1] = __n;" (assignment_expression "__dest[-1] = __n" (subscript_expression "__dest[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(__dest[-2] + __n) = 0;" (assignment_expression "*(undefined1 *)(__dest[-2] + __n) = 0" (pointer_expression "*(undefined1 *)(__dest[-2] + __n)" * (cast_expression "(undefined1 *)(__dest[-2] + __n)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__dest[-2] + __n)" ( (binary_expression "__dest[-2] + __n" (subscript_expression "__dest[-2]" identifier [ number_literal ]) + identifier) )))) = number_literal) ;) (expression_statement "puVar6 = (undefined8 *)*param_1;" (assignment_expression "puVar6 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) }) (else_clause "else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }" else (compound_statement "{\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }" { (expression_statement "__dest[-2] = (ulong)*param_1;" (assignment_expression "__dest[-2] = (ulong)*param_1" (subscript_expression "__dest[-2]" identifier [ number_literal ]) = (binary_expression "(ulong)*param_1" (parenthesized_expression "(ulong)" ( identifier )) * identifier)) ;) (expression_statement "__dest[-1] = param_1[1];" (assignment_expression "__dest[-1] = param_1[1]" (subscript_expression "__dest[-1]" identifier [ number_literal ]) = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "*__dest = param_1[2];" (assignment_expression "*__dest = param_1[2]" (pointer_expression "*__dest" * identifier) = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "*param_1 = puVar1;" (assignment_expression "*param_1 = puVar1" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "puVar6 = puVar1;" (assignment_expression "puVar6 = puVar1" identifier = identifier) ;) }))) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar6 = 0;" (assignment_expression "*(undefined1 *)puVar6 = 0" (pointer_expression "*(undefined1 *)puVar6" * (cast_expression "(undefined1 *)puVar6" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "local_58 = &local_48;" (assignment_expression "local_58 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) ;) (if_statement "if (local_78 == &local_68) {\n        uStack_40 = uStack_60;\n      }\n      else {\n        local_58 = local_78;\n      }" if (parenthesized_expression "(local_78 == &local_68)" ( (binary_expression "local_78 == &local_68" identifier == (pointer_expression "&local_68" & identifier)) )) (compound_statement "{\n        uStack_40 = uStack_60;\n      }" { (expression_statement "uStack_40 = uStack_60;" (assignment_expression "uStack_40 = uStack_60" identifier = identifier) ;) }) (else_clause "else {\n        local_58 = local_78;\n      }" else (compound_statement "{\n        local_58 = local_78;\n      }" { (expression_statement "local_58 = local_78;" (assignment_expression "local_58 = local_78" identifier = identifier) ;) }))) (expression_statement "local_48 = local_68;" (assignment_expression "local_48 = local_68" identifier = identifier) ;) (expression_statement "puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1));" (assignment_expression "puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1))" identifier = (cast_expression "(undefined1 *)((long)__dest + (-0x10 - (long)param_1))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest + (-0x10 - (long)param_1))" ( (binary_expression "(long)__dest + (-0x10 - (long)param_1)" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-0x10 - (long)param_1)" ( (binary_expression "-0x10 - (long)param_1" number_literal - (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) )))) ;) (expression_statement "local_68 = local_68 & 0xffffffffffffff00;" (assignment_expression "local_68 = local_68 & 0xffffffffffffff00" identifier = (binary_expression "local_68 & 0xffffffffffffff00" identifier & number_literal)) ;) (expression_statement "local_50 = uVar2;" (assignment_expression "local_50 = uVar2" identifier = identifier) ;) comment (expression_statement "FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58);" (call_expression "FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58)" identifier (argument_list "(param_1,0,(long)puVar8 >> 5,&local_58)" ( identifier , number_literal , (binary_expression "(long)puVar8 >> 5" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) , (pointer_expression "&local_58" & identifier) ))) ;) (if_statement "if (local_58 != &local_48) {\n        FUN_002dac70();\n      }" if (parenthesized_expression "(local_58 != &local_48)" ( (binary_expression "local_58 != &local_48" identifier != (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n        FUN_002dac70();\n      }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "__dest = __dest + -4;" (assignment_expression "__dest = __dest + -4" identifier = (binary_expression "__dest + -4" identifier + number_literal)) ;) }) while (parenthesized_expression "(0x20 < (long)puVar8)" ( (binary_expression "0x20 < (long)puVar8" number_literal < (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) ;) })) (return_statement "return;" return ;) (labeled_statement "LAB_00285680:\n  FUN_00285410(local_80,local_98,local_90);" statement_identifier : (expression_statement "FUN_00285410(local_80,local_98,local_90);" (call_expression "FUN_00285410(local_80,local_98,local_90)" identifier (argument_list "(local_80,local_98,local_90)" ( identifier , identifier , identifier ))) ;)) (if_statement "if ((long)local_80 - (long)param_1 < 0x201) {\n    return;\n  }" if (parenthesized_expression "((long)local_80 - (long)param_1 < 0x201)" ( (binary_expression "(long)local_80 - (long)param_1 < 0x201" (binary_expression "(long)local_80 - (long)param_1" (cast_expression "(long)local_80" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) < number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "local_98 = local_80;" (assignment_expression "local_98 = local_80" identifier = identifier) ;) (if_statement "if (local_90 == 0) goto LAB_002856b5;" if (parenthesized_expression "(local_90 == 0)" ( (binary_expression "local_90 == 0" identifier == number_literal) )) (goto_statement "goto LAB_002856b5;" goto statement_identifier ;)) (goto_statement "goto LAB_00285459;" goto statement_identifier ;) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n/* DWARF original name:\n   __introsort_loop<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,\n   std::vector<std::__cxx11::basic_string<char> > >, long int,\n   __gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare> > */\n\nvoid std::\n     __introsort_loop<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,_long_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n               (__normal_iterator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>*,_std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n                __first,basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *__last,\n               long __depth_limit)\n\n{\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *this;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *this_00;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *__src;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar1;\n  pointer pcVar2;\n  int iVar3;\n  ulong uVar4;\n  ulong uVar5;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar6;\n  size_t __n;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *__dest;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *this_01;\n  char *pcVar7;\n  ulong uVar8;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *pbVar9;\n  undefined1 in_stack_00000008;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *local_98;\n  long local_90;\n  __normal_iterator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>*,_std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n  local_80;\n  _ValueType __value;\n  size_type *local_58;\n  size_type local_50;\n  size_type local_48;\n  undefined8 uStack_40;\n  \n  if (0x200 < (long)__last - (long)__first._M_current) {\n    local_80._M_current = __last;\n    if (__depth_limit != 0) {\n      this = __first._M_current + 1;\n      uVar8 = 0;\n      local_98 = __last;\n      local_90 = __depth_limit;\nLAB_00285459:\n      local_90 = local_90 + -1;\n      this_00 = local_98 + -1;\n      uVar4 = string::rfind((string *)this,'/',0xffffffffffffffff);\n      this_01 = __first._M_current +\n                (((long)local_98 - (long)__first._M_current >> 5) -\n                 ((long)local_98 - (long)__first._M_current >> 0x3f) >> 1);\n      uVar5 = string::rfind((string *)this_01,'/',0xffffffffffffffff);\n      if (uVar4 == 0xffffffffffffffff) {\n        uVar4 = uVar8;\n      }\n      if (uVar5 == 0xffffffffffffffff) {\n        uVar5 = uVar8;\n      }\n      iVar3 = string::compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_01,uVar5,\n                              0xffffffffffffffff);\n      local_80._M_current = this;\n      pbVar9 = local_98;\n      if (iVar3 < 0) {\n        uVar4 = string::rfind((string *)this_01,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this_01,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          string::swap((string *)__first._M_current,(string *)this_01);\n          goto LAB_002855a0;\n        }\n        uVar4 = string::rfind((string *)this,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (-1 < iVar3) {\n          string::swap((string *)__first._M_current,(string *)this);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        uVar4 = string::rfind((string *)this,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (iVar3 < 0) {\n          string::swap((string *)__first._M_current,(string *)this);\n          goto LAB_002855a0;\n        }\n        uVar4 = string::rfind((string *)this_01,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this_01,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }\n      string::swap((string *)__first._M_current,(string *)this_00);\nLAB_002855a0:\n      do {\n        uVar4 = string::rfind((string *)local_80._M_current,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)__first._M_current,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)local_80._M_current,uVar4,0xffffffffffffffff,\n                                (string *)__first._M_current,uVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            pbVar9 = pbVar9 + -1;\n            uVar4 = string::rfind((string *)__first._M_current,'/',0xffffffffffffffff);\n            uVar5 = string::rfind((string *)pbVar9,'/',0xffffffffffffffff);\n            if (uVar4 == 0xffffffffffffffff) {\n              uVar4 = uVar8;\n            }\n            if (uVar5 == 0xffffffffffffffff) {\n              uVar5 = uVar8;\n            }\n            iVar3 = string::compare((string *)__first._M_current,uVar4,0xffffffffffffffff,\n                                    (string *)pbVar9,uVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (pbVar9 <= local_80._M_current) goto LAB_00285680;\n          string::swap((string *)local_80._M_current,(string *)pbVar9);\n        }\n        local_80._M_current = local_80._M_current + 1;\n      } while( true );\n    }\nLAB_002856b5:\n    __src = &(__first._M_current)->field_2;\n    paVar1 = &__value.field_2;\n    __dest = &local_80._M_current[-1].field_2;\n    local_58 = (size_type *)CONCAT71(local_58._1_7_,in_stack_00000008);\n    __make_heap<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n              (__first,local_80,(_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58);\n    do {\n      __value._M_dataplus._M_p =\n           (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n           _M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value._M_dataplus._M_p == __dest) {\n        __value.field_2._M_allocated_capacity = __dest->_M_allocated_capacity;\n        __value.field_2._8_8_ = *(size_type *)((long)__dest + 8);\n        __value._M_dataplus._M_p = (pointer)paVar1;\n      }\n      else {\n        __value.field_2._M_allocated_capacity = __dest->_M_allocated_capacity;\n      }\n      __value._M_string_length = *(size_type *)((long)__dest + -8);\n      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n      _M_dataplus)._M_p = (pointer)__dest;\n      *(size_type *)((long)__dest + -8) = 0;\n      __dest->_M_local_buf[0] = '\0';\n      pcVar2 = ((__first._M_current)->_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 == __src) {\n        __n = (__first._M_current)->_M_string_length;\n        if (__n != 0) {\n          if (__n == 1) {\n            __dest->_M_local_buf[0] = ((__first._M_current)->field_2)._M_local_buf[0];\n            __n = (__first._M_current)->_M_string_length;\n          }\n          else {\n            memcpy(__dest,__src,__n);\n            __n = (__first._M_current)->_M_string_length;\n          }\n        }\n        pcVar2 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                  (__dest + -1))->_M_dataplus)._M_p;\n        *(size_t *)((long)__dest + -8) = __n;\n        pcVar2[__n] = '\0';\n        paVar6 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)((__first._M_current)->_M_dataplus)._M_p;\n      }\n      else {\n        (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n        _M_dataplus)._M_p = pcVar2;\n        *(size_type *)((long)__dest + -8) = (__first._M_current)->_M_string_length;\n        __dest->_M_allocated_capacity = ((__first._M_current)->field_2)._M_allocated_capacity;\n        ((__first._M_current)->_M_dataplus)._M_p = (pointer)__src;\n        paVar6 = __src;\n      }\n      (__first._M_current)->_M_string_length = 0;\n      paVar6->_M_local_buf[0] = '\0';\n      local_58 = &local_48;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value._M_dataplus._M_p == paVar1) {\n        uStack_40 = __value.field_2._8_8_;\n      }\n      else {\n        local_58 = (size_type *)__value._M_dataplus._M_p;\n      }\n      local_48 = __value.field_2._M_allocated_capacity;\n      pcVar7 = __dest->_M_local_buf + (-0x10 - (long)__first._M_current);\n      local_50 = __value._M_string_length;\n      __value._M_string_length = 0;\n      __value.field_2._M_allocated_capacity =\n           __value.field_2._M_allocated_capacity & 0xffffffffffffff00;\n      __value._M_dataplus._M_p = (pointer)paVar1;\n                    /* try { // try from 002857a4 to 002857a8 has its CatchHandler @ 00285962 */\n      __adjust_heap<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,_long_int,_std::__cxx11::basic_string<char>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n                (__first._M_current,0,(long)pcVar7 >> 5,\n                 (_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58);\n      if (local_58 != &local_48) {\n        operator_delete(local_58);\n      }\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value._M_dataplus._M_p != paVar1) {\n        operator_delete(__value._M_dataplus._M_p);\n      }\n      __dest = __dest + -2;\n    } while (0x20 < (long)pcVar7);\n  }\n  return;\nLAB_00285680:\n  __introsort_loop<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,_long_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n            (local_80._M_current,local_98,local_90);\n  if ((long)local_80._M_current - (long)__first._M_current < 0x201) {\n    return;\n  }\n  local_98 = local_80._M_current;\n  if (local_90 == 0) goto LAB_002856b5;\n  goto LAB_00285459;\n}\n\n" comment comment (declaration "void std::\n     __introsort_loop<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,_long_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n               (__normal_iterator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>*,_std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n                __first,basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *__last,\n               long __depth_limit)\n\n{\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *this;" primitive_type (ERROR "std::\n     __introsort_loop<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>" identifier : : identifier < identifier : : identifier < identifier : : identifier : : identifier < primitive_type >) (pointer_declarator "*,_std::vector<std::__cxx11::basic_string<char>_>_" * (ERROR ",_std::vector<std::__cxx11::basic_string<char>_>" , identifier : : identifier < identifier : : identifier : : identifier < primitive_type > identifier >) identifier) (ERROR ">" >) , identifier , (ERROR "___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n               (__normal_iterator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>*,_std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n                __first,basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *__last,\n               long __depth_limit)\n\n{\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_>" identifier : : identifier : : identifier < identifier : : identifier > (function_declarator "_>\n               (__normal_iterator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>*,_std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n                __first,basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *__last,\n               long __depth_limit)" identifier (ERROR ">" >) (parameter_list "(__normal_iterator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>*,_std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n                __first,basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *__last,\n               long __depth_limit)" ( (parameter_declaration "__normal_iterator<std::__cxx11::basic_string" type_identifier (ERROR "<std::__cxx11::" < identifier : : identifier : :) identifier) (ERROR "<char" < primitive_type) , (parameter_declaration "_std::char_traits" type_identifier (ERROR "::" : :) identifier) (ERROR "<char>" < primitive_type >) , (parameter_declaration "_std::allocator<char>_>*" type_identifier (ERROR "::allocator<char>_>" : : identifier < primitive_type > identifier >) (abstract_pointer_declarator "*" *)) , (parameter_declaration "_std::vector<std::__cxx11::basic_string" type_identifier (ERROR "::vector<std::__cxx11::" : : identifier < identifier : : identifier : :) identifier) (ERROR "<char" < primitive_type) , (parameter_declaration "_std::char_traits" type_identifier (ERROR "::" : :) identifier) (ERROR "<char>" < primitive_type >) , (parameter_declaration "_std::allocator<char>_" type_identifier (ERROR "::allocator<char>" : : identifier < primitive_type >) identifier) (ERROR ">" >) , (parameter_declaration "_std::allocator<std::__cxx11::basic_string" type_identifier (ERROR "::allocator<std::__cxx11::" : : identifier < identifier : : identifier : :) identifier) (ERROR "<char" < primitive_type) , (parameter_declaration "_std::char_traits" type_identifier (ERROR "::" : :) identifier) (ERROR "<char>" < primitive_type >) , (parameter_declaration "_std::allocator<char>_>_>_>_>\n                __first" type_identifier (ERROR "::allocator<char>_>_>_>_>" : : identifier < primitive_type > identifier > identifier > identifier > identifier >) identifier) , (parameter_declaration "basic_string" type_identifier) (ERROR "<char" < primitive_type) , (parameter_declaration "_std::char_traits" type_identifier (ERROR "::" : :) identifier) (ERROR "<char>" < primitive_type >) , (parameter_declaration "_std::allocator<char>_> *__last" type_identifier (ERROR "::allocator<char>_>" : : identifier < primitive_type > identifier >) (pointer_declarator "*__last" * identifier)) , (parameter_declaration "long __depth_limit" (sized_type_specifier "long" long) identifier) ))) { identifier < primitive_type , identifier : : identifier < primitive_type > , identifier : : identifier < primitive_type > identifier >) (pointer_declarator "*this" * identifier) ;) (ERROR "basic_string<char," (binary_expression "basic_string<char" identifier < identifier) ,) (labeled_statement "_std::char_traits<char>,_std::allocator<char>_> *this_00;" 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>_> *this_00;" (binary_expression "allocator<char>_> *this_00" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*this_00" * 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  *__src;" 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  *__src;" (binary_expression "allocator<char>_>_9\n  *__src" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *__src" 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  *paVar1;" 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  *paVar1;" (binary_expression "allocator<char>_>_9\n  *paVar1" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar1" identifier * identifier)) ;)) (declaration "pointer pcVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" 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  *paVar6;" 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  *paVar6;" (binary_expression "allocator<char>_>_9\n  *paVar6" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar6" identifier * identifier)) ;)) (declaration "size_t __n;" primitive_type 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  *__dest;" 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  *__dest;" (binary_expression "allocator<char>_>_9\n  *__dest" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *__dest" identifier * identifier)) ;)) (ERROR "basic_string<char," (binary_expression "basic_string<char" identifier < identifier) ,) (labeled_statement "_std::char_traits<char>,_std::allocator<char>_> *this_01;" 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>_> *this_01;" (binary_expression "allocator<char>_> *this_01" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*this_01" * identifier)) ;)) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (ERROR "basic_string<char," (binary_expression "basic_string<char" identifier < identifier) ,) (labeled_statement "_std::char_traits<char>,_std::allocator<char>_> *pbVar9;" statement_identifier (ERROR "::char_traits<char>,_std:" : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) :) : (expression_statement "allocator<char>_> *pbVar9;" (binary_expression "allocator<char>_> *pbVar9" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*pbVar9" * identifier)) ;)) (declaration "undefined1 in_stack_00000008;" type_identifier identifier ;) (ERROR "basic_string<char," (binary_expression "basic_string<char" identifier < identifier) ,) (labeled_statement "_std::char_traits<char>,_std::allocator<char>_> *local_98;" 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>_> *local_98;" (binary_expression "allocator<char>_> *local_98" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*local_98" * identifier)) ;)) (declaration "long local_90;" (sized_type_specifier "long" long) identifier ;) (ERROR "__normal_iterator<std::" (binary_expression "__normal_iterator<std" identifier < identifier) : :) (labeled_statement "__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>*,_std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>_>\n  local_80;" statement_identifier (ERROR "::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>*,_std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std:" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<char>_>*,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*,_std" * (ERROR "," ,) identifier)) : : (binary_expression "vector<std" identifier < identifier) : : (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) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (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  local_80;" (binary_expression "allocator<char>_>_>_>_>\n  local_80" (binary_expression "allocator<char>_>_>_>_" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) > identifier) > identifier) ;)) (declaration "_ValueType __value;" type_identifier identifier ;) (declaration "size_type *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "size_type local_50;" type_identifier identifier ;) (declaration "size_type local_48;" type_identifier identifier ;) (declaration "undefined8 uStack_40;" type_identifier identifier ;) (if_statement "if (0x200 < (long)__last - (long)__first._M_current) {\n    local_80._M_current = __last;\n    if (__depth_limit != 0) {\n      this = __first._M_current + 1;\n      uVar8 = 0;\n      local_98 = __last;\n      local_90 = __depth_limit;\nLAB_00285459:\n      local_90 = local_90 + -1;\n      this_00 = local_98 + -1;\n      uVar4 = string::rfind((string *)this,'/',0xffffffffffffffff);\n      this_01 = __first._M_current +\n                (((long)local_98 - (long)__first._M_current >> 5) -\n                 ((long)local_98 - (long)__first._M_current >> 0x3f) >> 1);\n      uVar5 = string::rfind((string *)this_01,'/',0xffffffffffffffff);\n      if (uVar4 == 0xffffffffffffffff) {\n        uVar4 = uVar8;\n      }\n      if (uVar5 == 0xffffffffffffffff) {\n        uVar5 = uVar8;\n      }\n      iVar3 = string::compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_01,uVar5,\n                              0xffffffffffffffff);\n      local_80._M_current = this;\n      pbVar9 = local_98;\n      if (iVar3 < 0) {\n        uVar4 = string::rfind((string *)this_01,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this_01,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          string::swap((string *)__first._M_current,(string *)this_01);\n          goto LAB_002855a0;\n        }\n        uVar4 = string::rfind((string *)this,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (-1 < iVar3) {\n          string::swap((string *)__first._M_current,(string *)this);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        uVar4 = string::rfind((string *)this,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (iVar3 < 0) {\n          string::swap((string *)__first._M_current,(string *)this);\n          goto LAB_002855a0;\n        }\n        uVar4 = string::rfind((string *)this_01,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this_01,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }\n      string::swap((string *)__first._M_current,(string *)this_00);\nLAB_002855a0:\n      do {\n        uVar4 = string::rfind((string *)local_80._M_current,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)__first._M_current,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)local_80._M_current,uVar4,0xffffffffffffffff,\n                                (string *)__first._M_current,uVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            pbVar9 = pbVar9 + -1;\n            uVar4 = string::rfind((string *)__first._M_current,'/',0xffffffffffffffff);\n            uVar5 = string::rfind((string *)pbVar9,'/',0xffffffffffffffff);\n            if (uVar4 == 0xffffffffffffffff) {\n              uVar4 = uVar8;\n            }\n            if (uVar5 == 0xffffffffffffffff) {\n              uVar5 = uVar8;\n            }\n            iVar3 = string::compare((string *)__first._M_current,uVar4,0xffffffffffffffff,\n                                    (string *)pbVar9,uVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (pbVar9 <= local_80._M_current) goto LAB_00285680;\n          string::swap((string *)local_80._M_current,(string *)pbVar9);\n        }\n        local_80._M_current = local_80._M_current + 1;\n      } while( true );\n    }\nLAB_002856b5:\n    __src = &(__first._M_current)->field_2;\n    paVar1 = &__value.field_2;\n    __dest = &local_80._M_current[-1].field_2;\n    local_58 = (size_type *)CONCAT71(local_58._1_7_,in_stack_00000008);\n    __make_heap<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n              (__first,local_80,(_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58);\n    do {\n      __value._M_dataplus._M_p =\n           (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n           _M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value._M_dataplus._M_p == __dest) {\n        __value.field_2._M_allocated_capacity = __dest->_M_allocated_capacity;\n        __value.field_2._8_8_ = *(size_type *)((long)__dest + 8);\n        __value._M_dataplus._M_p = (pointer)paVar1;\n      }\n      else {\n        __value.field_2._M_allocated_capacity = __dest->_M_allocated_capacity;\n      }\n      __value._M_string_length = *(size_type *)((long)__dest + -8);\n      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n      _M_dataplus)._M_p = (pointer)__dest;\n      *(size_type *)((long)__dest + -8) = 0;\n      __dest->_M_local_buf[0] = '\0';\n      pcVar2 = ((__first._M_current)->_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 == __src) {\n        __n = (__first._M_current)->_M_string_length;\n        if (__n != 0) {\n          if (__n == 1) {\n            __dest->_M_local_buf[0] = ((__first._M_current)->field_2)._M_local_buf[0];\n            __n = (__first._M_current)->_M_string_length;\n          }\n          else {\n            memcpy(__dest,__src,__n);\n            __n = (__first._M_current)->_M_string_length;\n          }\n        }\n        pcVar2 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                  (__dest + -1))->_M_dataplus)._M_p;\n        *(size_t *)((long)__dest + -8) = __n;\n        pcVar2[__n] = '\0';\n        paVar6 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)((__first._M_current)->_M_dataplus)._M_p;\n      }\n      else {\n        (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n        _M_dataplus)._M_p = pcVar2;\n        *(size_type *)((long)__dest + -8) = (__first._M_current)->_M_string_length;\n        __dest->_M_allocated_capacity = ((__first._M_current)->field_2)._M_allocated_capacity;\n        ((__first._M_current)->_M_dataplus)._M_p = (pointer)__src;\n        paVar6 = __src;\n      }\n      (__first._M_current)->_M_string_length = 0;\n      paVar6->_M_local_buf[0] = '\0';\n      local_58 = &local_48;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value._M_dataplus._M_p == paVar1) {\n        uStack_40 = __value.field_2._8_8_;\n      }\n      else {\n        local_58 = (size_type *)__value._M_dataplus._M_p;\n      }\n      local_48 = __value.field_2._M_allocated_capacity;\n      pcVar7 = __dest->_M_local_buf + (-0x10 - (long)__first._M_current);\n      local_50 = __value._M_string_length;\n      __value._M_string_length = 0;\n      __value.field_2._M_allocated_capacity =\n           __value.field_2._M_allocated_capacity & 0xffffffffffffff00;\n      __value._M_dataplus._M_p = (pointer)paVar1;\n                    /* try { // try from 002857a4 to 002857a8 has its CatchHandler @ 00285962 */\n      __adjust_heap<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,_long_int,_std::__cxx11::basic_string<char>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n                (__first._M_current,0,(long)pcVar7 >> 5,\n                 (_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58);\n      if (local_58 != &local_48) {\n        operator_delete(local_58);\n      }\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value._M_dataplus._M_p != paVar1) {\n        operator_delete(__value._M_dataplus._M_p);\n      }\n      __dest = __dest + -2;\n    } while (0x20 < (long)pcVar7);\n  }" if (parenthesized_expression "(0x200 < (long)__last - (long)__first._M_current)" ( (binary_expression "0x200 < (long)__last - (long)__first._M_current" number_literal < (binary_expression "(long)__last - (long)__first._M_current" (cast_expression "(long)__last" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__first._M_current" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "__first._M_current" identifier . field_identifier)))) )) (compound_statement "{\n    local_80._M_current = __last;\n    if (__depth_limit != 0) {\n      this = __first._M_current + 1;\n      uVar8 = 0;\n      local_98 = __last;\n      local_90 = __depth_limit;\nLAB_00285459:\n      local_90 = local_90 + -1;\n      this_00 = local_98 + -1;\n      uVar4 = string::rfind((string *)this,'/',0xffffffffffffffff);\n      this_01 = __first._M_current +\n                (((long)local_98 - (long)__first._M_current >> 5) -\n                 ((long)local_98 - (long)__first._M_current >> 0x3f) >> 1);\n      uVar5 = string::rfind((string *)this_01,'/',0xffffffffffffffff);\n      if (uVar4 == 0xffffffffffffffff) {\n        uVar4 = uVar8;\n      }\n      if (uVar5 == 0xffffffffffffffff) {\n        uVar5 = uVar8;\n      }\n      iVar3 = string::compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_01,uVar5,\n                              0xffffffffffffffff);\n      local_80._M_current = this;\n      pbVar9 = local_98;\n      if (iVar3 < 0) {\n        uVar4 = string::rfind((string *)this_01,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this_01,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          string::swap((string *)__first._M_current,(string *)this_01);\n          goto LAB_002855a0;\n        }\n        uVar4 = string::rfind((string *)this,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (-1 < iVar3) {\n          string::swap((string *)__first._M_current,(string *)this);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        uVar4 = string::rfind((string *)this,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (iVar3 < 0) {\n          string::swap((string *)__first._M_current,(string *)this);\n          goto LAB_002855a0;\n        }\n        uVar4 = string::rfind((string *)this_01,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this_01,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }\n      string::swap((string *)__first._M_current,(string *)this_00);\nLAB_002855a0:\n      do {\n        uVar4 = string::rfind((string *)local_80._M_current,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)__first._M_current,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)local_80._M_current,uVar4,0xffffffffffffffff,\n                                (string *)__first._M_current,uVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            pbVar9 = pbVar9 + -1;\n            uVar4 = string::rfind((string *)__first._M_current,'/',0xffffffffffffffff);\n            uVar5 = string::rfind((string *)pbVar9,'/',0xffffffffffffffff);\n            if (uVar4 == 0xffffffffffffffff) {\n              uVar4 = uVar8;\n            }\n            if (uVar5 == 0xffffffffffffffff) {\n              uVar5 = uVar8;\n            }\n            iVar3 = string::compare((string *)__first._M_current,uVar4,0xffffffffffffffff,\n                                    (string *)pbVar9,uVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (pbVar9 <= local_80._M_current) goto LAB_00285680;\n          string::swap((string *)local_80._M_current,(string *)pbVar9);\n        }\n        local_80._M_current = local_80._M_current + 1;\n      } while( true );\n    }\nLAB_002856b5:\n    __src = &(__first._M_current)->field_2;\n    paVar1 = &__value.field_2;\n    __dest = &local_80._M_current[-1].field_2;\n    local_58 = (size_type *)CONCAT71(local_58._1_7_,in_stack_00000008);\n    __make_heap<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n              (__first,local_80,(_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58);\n    do {\n      __value._M_dataplus._M_p =\n           (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n           _M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value._M_dataplus._M_p == __dest) {\n        __value.field_2._M_allocated_capacity = __dest->_M_allocated_capacity;\n        __value.field_2._8_8_ = *(size_type *)((long)__dest + 8);\n        __value._M_dataplus._M_p = (pointer)paVar1;\n      }\n      else {\n        __value.field_2._M_allocated_capacity = __dest->_M_allocated_capacity;\n      }\n      __value._M_string_length = *(size_type *)((long)__dest + -8);\n      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n      _M_dataplus)._M_p = (pointer)__dest;\n      *(size_type *)((long)__dest + -8) = 0;\n      __dest->_M_local_buf[0] = '\0';\n      pcVar2 = ((__first._M_current)->_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 == __src) {\n        __n = (__first._M_current)->_M_string_length;\n        if (__n != 0) {\n          if (__n == 1) {\n            __dest->_M_local_buf[0] = ((__first._M_current)->field_2)._M_local_buf[0];\n            __n = (__first._M_current)->_M_string_length;\n          }\n          else {\n            memcpy(__dest,__src,__n);\n            __n = (__first._M_current)->_M_string_length;\n          }\n        }\n        pcVar2 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                  (__dest + -1))->_M_dataplus)._M_p;\n        *(size_t *)((long)__dest + -8) = __n;\n        pcVar2[__n] = '\0';\n        paVar6 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)((__first._M_current)->_M_dataplus)._M_p;\n      }\n      else {\n        (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n        _M_dataplus)._M_p = pcVar2;\n        *(size_type *)((long)__dest + -8) = (__first._M_current)->_M_string_length;\n        __dest->_M_allocated_capacity = ((__first._M_current)->field_2)._M_allocated_capacity;\n        ((__first._M_current)->_M_dataplus)._M_p = (pointer)__src;\n        paVar6 = __src;\n      }\n      (__first._M_current)->_M_string_length = 0;\n      paVar6->_M_local_buf[0] = '\0';\n      local_58 = &local_48;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value._M_dataplus._M_p == paVar1) {\n        uStack_40 = __value.field_2._8_8_;\n      }\n      else {\n        local_58 = (size_type *)__value._M_dataplus._M_p;\n      }\n      local_48 = __value.field_2._M_allocated_capacity;\n      pcVar7 = __dest->_M_local_buf + (-0x10 - (long)__first._M_current);\n      local_50 = __value._M_string_length;\n      __value._M_string_length = 0;\n      __value.field_2._M_allocated_capacity =\n           __value.field_2._M_allocated_capacity & 0xffffffffffffff00;\n      __value._M_dataplus._M_p = (pointer)paVar1;\n                    /* try { // try from 002857a4 to 002857a8 has its CatchHandler @ 00285962 */\n      __adjust_heap<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,_long_int,_std::__cxx11::basic_string<char>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n                (__first._M_current,0,(long)pcVar7 >> 5,\n                 (_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58);\n      if (local_58 != &local_48) {\n        operator_delete(local_58);\n      }\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value._M_dataplus._M_p != paVar1) {\n        operator_delete(__value._M_dataplus._M_p);\n      }\n      __dest = __dest + -2;\n    } while (0x20 < (long)pcVar7);\n  }" { (expression_statement "local_80._M_current = __last;" (assignment_expression "local_80._M_current = __last" (field_expression "local_80._M_current" identifier . field_identifier) = identifier) ;) (if_statement "if (__depth_limit != 0) {\n      this = __first._M_current + 1;\n      uVar8 = 0;\n      local_98 = __last;\n      local_90 = __depth_limit;\nLAB_00285459:\n      local_90 = local_90 + -1;\n      this_00 = local_98 + -1;\n      uVar4 = string::rfind((string *)this,'/',0xffffffffffffffff);\n      this_01 = __first._M_current +\n                (((long)local_98 - (long)__first._M_current >> 5) -\n                 ((long)local_98 - (long)__first._M_current >> 0x3f) >> 1);\n      uVar5 = string::rfind((string *)this_01,'/',0xffffffffffffffff);\n      if (uVar4 == 0xffffffffffffffff) {\n        uVar4 = uVar8;\n      }\n      if (uVar5 == 0xffffffffffffffff) {\n        uVar5 = uVar8;\n      }\n      iVar3 = string::compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_01,uVar5,\n                              0xffffffffffffffff);\n      local_80._M_current = this;\n      pbVar9 = local_98;\n      if (iVar3 < 0) {\n        uVar4 = string::rfind((string *)this_01,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this_01,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          string::swap((string *)__first._M_current,(string *)this_01);\n          goto LAB_002855a0;\n        }\n        uVar4 = string::rfind((string *)this,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (-1 < iVar3) {\n          string::swap((string *)__first._M_current,(string *)this);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        uVar4 = string::rfind((string *)this,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (iVar3 < 0) {\n          string::swap((string *)__first._M_current,(string *)this);\n          goto LAB_002855a0;\n        }\n        uVar4 = string::rfind((string *)this_01,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this_01,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }\n      string::swap((string *)__first._M_current,(string *)this_00);\nLAB_002855a0:\n      do {\n        uVar4 = string::rfind((string *)local_80._M_current,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)__first._M_current,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)local_80._M_current,uVar4,0xffffffffffffffff,\n                                (string *)__first._M_current,uVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            pbVar9 = pbVar9 + -1;\n            uVar4 = string::rfind((string *)__first._M_current,'/',0xffffffffffffffff);\n            uVar5 = string::rfind((string *)pbVar9,'/',0xffffffffffffffff);\n            if (uVar4 == 0xffffffffffffffff) {\n              uVar4 = uVar8;\n            }\n            if (uVar5 == 0xffffffffffffffff) {\n              uVar5 = uVar8;\n            }\n            iVar3 = string::compare((string *)__first._M_current,uVar4,0xffffffffffffffff,\n                                    (string *)pbVar9,uVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (pbVar9 <= local_80._M_current) goto LAB_00285680;\n          string::swap((string *)local_80._M_current,(string *)pbVar9);\n        }\n        local_80._M_current = local_80._M_current + 1;\n      } while( true );\n    }" if (parenthesized_expression "(__depth_limit != 0)" ( (binary_expression "__depth_limit != 0" identifier != number_literal) )) (compound_statement "{\n      this = __first._M_current + 1;\n      uVar8 = 0;\n      local_98 = __last;\n      local_90 = __depth_limit;\nLAB_00285459:\n      local_90 = local_90 + -1;\n      this_00 = local_98 + -1;\n      uVar4 = string::rfind((string *)this,'/',0xffffffffffffffff);\n      this_01 = __first._M_current +\n                (((long)local_98 - (long)__first._M_current >> 5) -\n                 ((long)local_98 - (long)__first._M_current >> 0x3f) >> 1);\n      uVar5 = string::rfind((string *)this_01,'/',0xffffffffffffffff);\n      if (uVar4 == 0xffffffffffffffff) {\n        uVar4 = uVar8;\n      }\n      if (uVar5 == 0xffffffffffffffff) {\n        uVar5 = uVar8;\n      }\n      iVar3 = string::compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_01,uVar5,\n                              0xffffffffffffffff);\n      local_80._M_current = this;\n      pbVar9 = local_98;\n      if (iVar3 < 0) {\n        uVar4 = string::rfind((string *)this_01,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this_01,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          string::swap((string *)__first._M_current,(string *)this_01);\n          goto LAB_002855a0;\n        }\n        uVar4 = string::rfind((string *)this,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (-1 < iVar3) {\n          string::swap((string *)__first._M_current,(string *)this);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        uVar4 = string::rfind((string *)this,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (iVar3 < 0) {\n          string::swap((string *)__first._M_current,(string *)this);\n          goto LAB_002855a0;\n        }\n        uVar4 = string::rfind((string *)this_01,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this_01,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }\n      string::swap((string *)__first._M_current,(string *)this_00);\nLAB_002855a0:\n      do {\n        uVar4 = string::rfind((string *)local_80._M_current,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)__first._M_current,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)local_80._M_current,uVar4,0xffffffffffffffff,\n                                (string *)__first._M_current,uVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            pbVar9 = pbVar9 + -1;\n            uVar4 = string::rfind((string *)__first._M_current,'/',0xffffffffffffffff);\n            uVar5 = string::rfind((string *)pbVar9,'/',0xffffffffffffffff);\n            if (uVar4 == 0xffffffffffffffff) {\n              uVar4 = uVar8;\n            }\n            if (uVar5 == 0xffffffffffffffff) {\n              uVar5 = uVar8;\n            }\n            iVar3 = string::compare((string *)__first._M_current,uVar4,0xffffffffffffffff,\n                                    (string *)pbVar9,uVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (pbVar9 <= local_80._M_current) goto LAB_00285680;\n          string::swap((string *)local_80._M_current,(string *)pbVar9);\n        }\n        local_80._M_current = local_80._M_current + 1;\n      } while( true );\n    }" { (expression_statement "this = __first._M_current + 1;" (assignment_expression "this = __first._M_current + 1" identifier = (binary_expression "__first._M_current + 1" (field_expression "__first._M_current" identifier . field_identifier) + number_literal)) ;) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "local_98 = __last;" (assignment_expression "local_98 = __last" identifier = identifier) ;) (expression_statement "local_90 = __depth_limit;" (assignment_expression "local_90 = __depth_limit" identifier = identifier) ;) (labeled_statement "LAB_00285459:\n      local_90 = local_90 + -1;" statement_identifier : (expression_statement "local_90 = local_90 + -1;" (assignment_expression "local_90 = local_90 + -1" identifier = (binary_expression "local_90 + -1" identifier + number_literal)) ;)) (expression_statement "this_00 = local_98 + -1;" (assignment_expression "this_00 = local_98 + -1" identifier = (binary_expression "local_98 + -1" identifier + number_literal)) ;) (ERROR "uVar4 = string::" (assignment_expression "uVar4 = string" identifier = identifier) : :) (expression_statement "rfind((string *)this,'/',0xffffffffffffffff);" (call_expression "rfind((string *)this,'/',0xffffffffffffffff)" identifier (argument_list "((string *)this,'/',0xffffffffffffffff)" ( (cast_expression "(string *)this" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (char_literal "'/'" ' character ') , number_literal ))) ;) (expression_statement "this_01 = __first._M_current +\n                (((long)local_98 - (long)__first._M_current >> 5) -\n                 ((long)local_98 - (long)__first._M_current >> 0x3f) >> 1);" (assignment_expression "this_01 = __first._M_current +\n                (((long)local_98 - (long)__first._M_current >> 5) -\n                 ((long)local_98 - (long)__first._M_current >> 0x3f) >> 1)" identifier = (binary_expression "__first._M_current +\n                (((long)local_98 - (long)__first._M_current >> 5) -\n                 ((long)local_98 - (long)__first._M_current >> 0x3f) >> 1)" (field_expression "__first._M_current" identifier . field_identifier) + (parenthesized_expression "(((long)local_98 - (long)__first._M_current >> 5) -\n                 ((long)local_98 - (long)__first._M_current >> 0x3f) >> 1)" ( (binary_expression "((long)local_98 - (long)__first._M_current >> 5) -\n                 ((long)local_98 - (long)__first._M_current >> 0x3f) >> 1" (binary_expression "((long)local_98 - (long)__first._M_current >> 5) -\n                 ((long)local_98 - (long)__first._M_current >> 0x3f)" (parenthesized_expression "((long)local_98 - (long)__first._M_current >> 5)" ( (binary_expression "(long)local_98 - (long)__first._M_current >> 5" (binary_expression "(long)local_98 - (long)__first._M_current" (cast_expression "(long)local_98" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__first._M_current" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "__first._M_current" identifier . field_identifier))) >> number_literal) )) - (parenthesized_expression "((long)local_98 - (long)__first._M_current >> 0x3f)" ( (binary_expression "(long)local_98 - (long)__first._M_current >> 0x3f" (binary_expression "(long)local_98 - (long)__first._M_current" (cast_expression "(long)local_98" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__first._M_current" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "__first._M_current" identifier . field_identifier))) >> number_literal) ))) >> number_literal) )))) ;) (ERROR "uVar5 = string::" (assignment_expression "uVar5 = string" identifier = identifier) : :) (expression_statement "rfind((string *)this_01,'/',0xffffffffffffffff);" (call_expression "rfind((string *)this_01,'/',0xffffffffffffffff)" identifier (argument_list "((string *)this_01,'/',0xffffffffffffffff)" ( (cast_expression "(string *)this_01" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (char_literal "'/'" ' character ') , number_literal ))) ;) (if_statement "if (uVar4 == 0xffffffffffffffff) {\n        uVar4 = uVar8;\n      }" if (parenthesized_expression "(uVar4 == 0xffffffffffffffff)" ( (binary_expression "uVar4 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n        uVar4 = uVar8;\n      }" { (expression_statement "uVar4 = uVar8;" (assignment_expression "uVar4 = uVar8" identifier = identifier) ;) })) (if_statement "if (uVar5 == 0xffffffffffffffff) {\n        uVar5 = uVar8;\n      }" if (parenthesized_expression "(uVar5 == 0xffffffffffffffff)" ( (binary_expression "uVar5 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n        uVar5 = uVar8;\n      }" { (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" identifier = identifier) ;) })) (ERROR "iVar3 = string::" (assignment_expression "iVar3 = string" identifier = identifier) : :) (expression_statement "compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_01,uVar5,\n                              0xffffffffffffffff);" (call_expression "compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_01,uVar5,\n                              0xffffffffffffffff)" identifier (argument_list "((string *)this,uVar4,0xffffffffffffffff,(string *)this_01,uVar5,\n                              0xffffffffffffffff)" ( (cast_expression "(string *)this" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , number_literal , (cast_expression "(string *)this_01" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , number_literal ))) ;) (expression_statement "local_80._M_current = this;" (assignment_expression "local_80._M_current = this" (field_expression "local_80._M_current" identifier . field_identifier) = identifier) ;) (expression_statement "pbVar9 = local_98;" (assignment_expression "pbVar9 = local_98" identifier = identifier) ;) (if_statement "if (iVar3 < 0) {\n        uVar4 = string::rfind((string *)this_01,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this_01,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          string::swap((string *)__first._M_current,(string *)this_01);\n          goto LAB_002855a0;\n        }\n        uVar4 = string::rfind((string *)this,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (-1 < iVar3) {\n          string::swap((string *)__first._M_current,(string *)this);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        uVar4 = string::rfind((string *)this,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (iVar3 < 0) {\n          string::swap((string *)__first._M_current,(string *)this);\n          goto LAB_002855a0;\n        }\n        uVar4 = string::rfind((string *)this_01,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this_01,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n        uVar4 = string::rfind((string *)this_01,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this_01,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          string::swap((string *)__first._M_current,(string *)this_01);\n          goto LAB_002855a0;\n        }\n        uVar4 = string::rfind((string *)this,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (-1 < iVar3) {\n          string::swap((string *)__first._M_current,(string *)this);\n          goto LAB_002855a0;\n        }\n      }" { (ERROR "uVar4 = string::" (assignment_expression "uVar4 = string" identifier = identifier) : :) (expression_statement "rfind((string *)this_01,'/',0xffffffffffffffff);" (call_expression "rfind((string *)this_01,'/',0xffffffffffffffff)" identifier (argument_list "((string *)this_01,'/',0xffffffffffffffff)" ( (cast_expression "(string *)this_01" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (char_literal "'/'" ' character ') , number_literal ))) ;) (ERROR "uVar5 = string::" (assignment_expression "uVar5 = string" identifier = identifier) : :) (expression_statement "rfind((string *)this_00,'/',0xffffffffffffffff);" (call_expression "rfind((string *)this_00,'/',0xffffffffffffffff)" identifier (argument_list "((string *)this_00,'/',0xffffffffffffffff)" ( (cast_expression "(string *)this_00" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (char_literal "'/'" ' character ') , number_literal ))) ;) (if_statement "if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }" if (parenthesized_expression "(uVar4 == 0xffffffffffffffff)" ( (binary_expression "uVar4 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n          uVar4 = uVar8;\n        }" { (expression_statement "uVar4 = uVar8;" (assignment_expression "uVar4 = uVar8" identifier = identifier) ;) })) (if_statement "if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }" if (parenthesized_expression "(uVar5 == 0xffffffffffffffff)" ( (binary_expression "uVar5 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n          uVar5 = uVar8;\n        }" { (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" identifier = identifier) ;) })) (ERROR "iVar3 = string::" (assignment_expression "iVar3 = string" identifier = identifier) : :) (expression_statement "compare((string *)this_01,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);" (call_expression "compare((string *)this_01,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff)" identifier (argument_list "((string *)this_01,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff)" ( (cast_expression "(string *)this_01" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , number_literal , (cast_expression "(string *)this_00" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , number_literal ))) ;) (if_statement "if (iVar3 < 0) {\nLAB_002858b2:\n          string::swap((string *)__first._M_current,(string *)this_01);\n          goto LAB_002855a0;\n        }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\nLAB_002858b2:\n          string::swap((string *)__first._M_current,(string *)this_01);\n          goto LAB_002855a0;\n        }" { (labeled_statement "LAB_002858b2:\n          string::swap((string *)__first._M_current,(string *)this_01);" statement_identifier : (labeled_statement "string::swap((string *)__first._M_current,(string *)this_01);" statement_identifier : (ERROR ":" :) (expression_statement "swap((string *)__first._M_current,(string *)this_01);" (call_expression "swap((string *)__first._M_current,(string *)this_01)" identifier (argument_list "((string *)__first._M_current,(string *)this_01)" ( (cast_expression "(string *)__first._M_current" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "__first._M_current" identifier . field_identifier)) , (cast_expression "(string *)this_01" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) (goto_statement "goto LAB_002855a0;" goto statement_identifier ;) })) (ERROR "uVar4 = string::" (assignment_expression "uVar4 = string" identifier = identifier) : :) (expression_statement "rfind((string *)this,'/',0xffffffffffffffff);" (call_expression "rfind((string *)this,'/',0xffffffffffffffff)" identifier (argument_list "((string *)this,'/',0xffffffffffffffff)" ( (cast_expression "(string *)this" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (char_literal "'/'" ' character ') , number_literal ))) ;) (ERROR "uVar5 = string::" (assignment_expression "uVar5 = string" identifier = identifier) : :) (expression_statement "rfind((string *)this_00,'/',0xffffffffffffffff);" (call_expression "rfind((string *)this_00,'/',0xffffffffffffffff)" identifier (argument_list "((string *)this_00,'/',0xffffffffffffffff)" ( (cast_expression "(string *)this_00" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (char_literal "'/'" ' character ') , number_literal ))) ;) (if_statement "if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }" if (parenthesized_expression "(uVar4 == 0xffffffffffffffff)" ( (binary_expression "uVar4 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n          uVar4 = uVar8;\n        }" { (expression_statement "uVar4 = uVar8;" (assignment_expression "uVar4 = uVar8" identifier = identifier) ;) })) (if_statement "if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }" if (parenthesized_expression "(uVar5 == 0xffffffffffffffff)" ( (binary_expression "uVar5 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n          uVar5 = uVar8;\n        }" { (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" identifier = identifier) ;) })) (ERROR "iVar3 = string::" (assignment_expression "iVar3 = string" identifier = identifier) : :) (expression_statement "compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);" (call_expression "compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff)" identifier (argument_list "((string *)this,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff)" ( (cast_expression "(string *)this" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , number_literal , (cast_expression "(string *)this_00" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , number_literal ))) ;) (if_statement "if (-1 < iVar3) {\n          string::swap((string *)__first._M_current,(string *)this);\n          goto LAB_002855a0;\n        }" if (parenthesized_expression "(-1 < iVar3)" ( (binary_expression "-1 < iVar3" number_literal < identifier) )) (compound_statement "{\n          string::swap((string *)__first._M_current,(string *)this);\n          goto LAB_002855a0;\n        }" { (labeled_statement "string::swap((string *)__first._M_current,(string *)this);" statement_identifier : (ERROR ":" :) (expression_statement "swap((string *)__first._M_current,(string *)this);" (call_expression "swap((string *)__first._M_current,(string *)this)" identifier (argument_list "((string *)__first._M_current,(string *)this)" ( (cast_expression "(string *)__first._M_current" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "__first._M_current" identifier . field_identifier)) , (cast_expression "(string *)this" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (goto_statement "goto LAB_002855a0;" goto statement_identifier ;) })) }) (else_clause "else {\n        uVar4 = string::rfind((string *)this,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (iVar3 < 0) {\n          string::swap((string *)__first._M_current,(string *)this);\n          goto LAB_002855a0;\n        }\n        uVar4 = string::rfind((string *)this_01,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this_01,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }" else (compound_statement "{\n        uVar4 = string::rfind((string *)this,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (iVar3 < 0) {\n          string::swap((string *)__first._M_current,(string *)this);\n          goto LAB_002855a0;\n        }\n        uVar4 = string::rfind((string *)this_01,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)this_00,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)this_01,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }" { (ERROR "uVar4 = string::" (assignment_expression "uVar4 = string" identifier = identifier) : :) (expression_statement "rfind((string *)this,'/',0xffffffffffffffff);" (call_expression "rfind((string *)this,'/',0xffffffffffffffff)" identifier (argument_list "((string *)this,'/',0xffffffffffffffff)" ( (cast_expression "(string *)this" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (char_literal "'/'" ' character ') , number_literal ))) ;) (ERROR "uVar5 = string::" (assignment_expression "uVar5 = string" identifier = identifier) : :) (expression_statement "rfind((string *)this_00,'/',0xffffffffffffffff);" (call_expression "rfind((string *)this_00,'/',0xffffffffffffffff)" identifier (argument_list "((string *)this_00,'/',0xffffffffffffffff)" ( (cast_expression "(string *)this_00" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (char_literal "'/'" ' character ') , number_literal ))) ;) (if_statement "if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }" if (parenthesized_expression "(uVar4 == 0xffffffffffffffff)" ( (binary_expression "uVar4 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n          uVar4 = uVar8;\n        }" { (expression_statement "uVar4 = uVar8;" (assignment_expression "uVar4 = uVar8" identifier = identifier) ;) })) (if_statement "if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }" if (parenthesized_expression "(uVar5 == 0xffffffffffffffff)" ( (binary_expression "uVar5 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n          uVar5 = uVar8;\n        }" { (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" identifier = identifier) ;) })) (ERROR "iVar3 = string::" (assignment_expression "iVar3 = string" identifier = identifier) : :) (expression_statement "compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);" (call_expression "compare((string *)this,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff)" identifier (argument_list "((string *)this,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff)" ( (cast_expression "(string *)this" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , number_literal , (cast_expression "(string *)this_00" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , number_literal ))) ;) (if_statement "if (iVar3 < 0) {\n          string::swap((string *)__first._M_current,(string *)this);\n          goto LAB_002855a0;\n        }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n          string::swap((string *)__first._M_current,(string *)this);\n          goto LAB_002855a0;\n        }" { (labeled_statement "string::swap((string *)__first._M_current,(string *)this);" statement_identifier : (ERROR ":" :) (expression_statement "swap((string *)__first._M_current,(string *)this);" (call_expression "swap((string *)__first._M_current,(string *)this)" identifier (argument_list "((string *)__first._M_current,(string *)this)" ( (cast_expression "(string *)__first._M_current" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "__first._M_current" identifier . field_identifier)) , (cast_expression "(string *)this" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (goto_statement "goto LAB_002855a0;" goto statement_identifier ;) })) (ERROR "uVar4 = string::" (assignment_expression "uVar4 = string" identifier = identifier) : :) (expression_statement "rfind((string *)this_01,'/',0xffffffffffffffff);" (call_expression "rfind((string *)this_01,'/',0xffffffffffffffff)" identifier (argument_list "((string *)this_01,'/',0xffffffffffffffff)" ( (cast_expression "(string *)this_01" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (char_literal "'/'" ' character ') , number_literal ))) ;) (ERROR "uVar5 = string::" (assignment_expression "uVar5 = string" identifier = identifier) : :) (expression_statement "rfind((string *)this_00,'/',0xffffffffffffffff);" (call_expression "rfind((string *)this_00,'/',0xffffffffffffffff)" identifier (argument_list "((string *)this_00,'/',0xffffffffffffffff)" ( (cast_expression "(string *)this_00" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (char_literal "'/'" ' character ') , number_literal ))) ;) (if_statement "if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }" if (parenthesized_expression "(uVar4 == 0xffffffffffffffff)" ( (binary_expression "uVar4 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n          uVar4 = uVar8;\n        }" { (expression_statement "uVar4 = uVar8;" (assignment_expression "uVar4 = uVar8" identifier = identifier) ;) })) (if_statement "if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }" if (parenthesized_expression "(uVar5 == 0xffffffffffffffff)" ( (binary_expression "uVar5 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n          uVar5 = uVar8;\n        }" { (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" identifier = identifier) ;) })) (ERROR "iVar3 = string::" (assignment_expression "iVar3 = string" identifier = identifier) : :) (expression_statement "compare((string *)this_01,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff);" (call_expression "compare((string *)this_01,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff)" identifier (argument_list "((string *)this_01,uVar4,0xffffffffffffffff,(string *)this_00,uVar5,\n                                0xffffffffffffffff)" ( (cast_expression "(string *)this_01" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , number_literal , (cast_expression "(string *)this_00" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , number_literal ))) ;) (if_statement "if (-1 < iVar3) goto LAB_002858b2;" if (parenthesized_expression "(-1 < iVar3)" ( (binary_expression "-1 < iVar3" number_literal < identifier) )) (goto_statement "goto LAB_002858b2;" goto statement_identifier ;)) }))) (labeled_statement "string::swap((string *)__first._M_current,(string *)this_00);" statement_identifier : (ERROR ":" :) (expression_statement "swap((string *)__first._M_current,(string *)this_00);" (call_expression "swap((string *)__first._M_current,(string *)this_00)" identifier (argument_list "((string *)__first._M_current,(string *)this_00)" ( (cast_expression "(string *)__first._M_current" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "__first._M_current" identifier . field_identifier)) , (cast_expression "(string *)this_00" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (labeled_statement "LAB_002855a0:\n      do {\n        uVar4 = string::rfind((string *)local_80._M_current,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)__first._M_current,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)local_80._M_current,uVar4,0xffffffffffffffff,\n                                (string *)__first._M_current,uVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            pbVar9 = pbVar9 + -1;\n            uVar4 = string::rfind((string *)__first._M_current,'/',0xffffffffffffffff);\n            uVar5 = string::rfind((string *)pbVar9,'/',0xffffffffffffffff);\n            if (uVar4 == 0xffffffffffffffff) {\n              uVar4 = uVar8;\n            }\n            if (uVar5 == 0xffffffffffffffff) {\n              uVar5 = uVar8;\n            }\n            iVar3 = string::compare((string *)__first._M_current,uVar4,0xffffffffffffffff,\n                                    (string *)pbVar9,uVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (pbVar9 <= local_80._M_current) goto LAB_00285680;\n          string::swap((string *)local_80._M_current,(string *)pbVar9);\n        }\n        local_80._M_current = local_80._M_current + 1;\n      } while( true );" statement_identifier : (do_statement "do {\n        uVar4 = string::rfind((string *)local_80._M_current,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)__first._M_current,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)local_80._M_current,uVar4,0xffffffffffffffff,\n                                (string *)__first._M_current,uVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            pbVar9 = pbVar9 + -1;\n            uVar4 = string::rfind((string *)__first._M_current,'/',0xffffffffffffffff);\n            uVar5 = string::rfind((string *)pbVar9,'/',0xffffffffffffffff);\n            if (uVar4 == 0xffffffffffffffff) {\n              uVar4 = uVar8;\n            }\n            if (uVar5 == 0xffffffffffffffff) {\n              uVar5 = uVar8;\n            }\n            iVar3 = string::compare((string *)__first._M_current,uVar4,0xffffffffffffffff,\n                                    (string *)pbVar9,uVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (pbVar9 <= local_80._M_current) goto LAB_00285680;\n          string::swap((string *)local_80._M_current,(string *)pbVar9);\n        }\n        local_80._M_current = local_80._M_current + 1;\n      } while( true );" do (compound_statement "{\n        uVar4 = string::rfind((string *)local_80._M_current,'/',0xffffffffffffffff);\n        uVar5 = string::rfind((string *)__first._M_current,'/',0xffffffffffffffff);\n        if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }\n        if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }\n        iVar3 = string::compare((string *)local_80._M_current,uVar4,0xffffffffffffffff,\n                                (string *)__first._M_current,uVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            pbVar9 = pbVar9 + -1;\n            uVar4 = string::rfind((string *)__first._M_current,'/',0xffffffffffffffff);\n            uVar5 = string::rfind((string *)pbVar9,'/',0xffffffffffffffff);\n            if (uVar4 == 0xffffffffffffffff) {\n              uVar4 = uVar8;\n            }\n            if (uVar5 == 0xffffffffffffffff) {\n              uVar5 = uVar8;\n            }\n            iVar3 = string::compare((string *)__first._M_current,uVar4,0xffffffffffffffff,\n                                    (string *)pbVar9,uVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (pbVar9 <= local_80._M_current) goto LAB_00285680;\n          string::swap((string *)local_80._M_current,(string *)pbVar9);\n        }\n        local_80._M_current = local_80._M_current + 1;\n      }" { (ERROR "uVar4 = string::" (assignment_expression "uVar4 = string" identifier = identifier) : :) (expression_statement "rfind((string *)local_80._M_current,'/',0xffffffffffffffff);" (call_expression "rfind((string *)local_80._M_current,'/',0xffffffffffffffff)" identifier (argument_list "((string *)local_80._M_current,'/',0xffffffffffffffff)" ( (cast_expression "(string *)local_80._M_current" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_80._M_current" identifier . field_identifier)) , (char_literal "'/'" ' character ') , number_literal ))) ;) (ERROR "uVar5 = string::" (assignment_expression "uVar5 = string" identifier = identifier) : :) (expression_statement "rfind((string *)__first._M_current,'/',0xffffffffffffffff);" (call_expression "rfind((string *)__first._M_current,'/',0xffffffffffffffff)" identifier (argument_list "((string *)__first._M_current,'/',0xffffffffffffffff)" ( (cast_expression "(string *)__first._M_current" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "__first._M_current" identifier . field_identifier)) , (char_literal "'/'" ' character ') , number_literal ))) ;) (if_statement "if (uVar4 == 0xffffffffffffffff) {\n          uVar4 = uVar8;\n        }" if (parenthesized_expression "(uVar4 == 0xffffffffffffffff)" ( (binary_expression "uVar4 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n          uVar4 = uVar8;\n        }" { (expression_statement "uVar4 = uVar8;" (assignment_expression "uVar4 = uVar8" identifier = identifier) ;) })) (if_statement "if (uVar5 == 0xffffffffffffffff) {\n          uVar5 = uVar8;\n        }" if (parenthesized_expression "(uVar5 == 0xffffffffffffffff)" ( (binary_expression "uVar5 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n          uVar5 = uVar8;\n        }" { (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" identifier = identifier) ;) })) (ERROR "iVar3 = string::" (assignment_expression "iVar3 = string" identifier = identifier) : :) (expression_statement "compare((string *)local_80._M_current,uVar4,0xffffffffffffffff,\n                                (string *)__first._M_current,uVar5,0xffffffffffffffff);" (call_expression "compare((string *)local_80._M_current,uVar4,0xffffffffffffffff,\n                                (string *)__first._M_current,uVar5,0xffffffffffffffff)" identifier (argument_list "((string *)local_80._M_current,uVar4,0xffffffffffffffff,\n                                (string *)__first._M_current,uVar5,0xffffffffffffffff)" ( (cast_expression "(string *)local_80._M_current" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_80._M_current" identifier . field_identifier)) , identifier , number_literal , (cast_expression "(string *)__first._M_current" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "__first._M_current" identifier . field_identifier)) , identifier , number_literal ))) ;) (if_statement "if (-1 < iVar3) {\n          do {\n            pbVar9 = pbVar9 + -1;\n            uVar4 = string::rfind((string *)__first._M_current,'/',0xffffffffffffffff);\n            uVar5 = string::rfind((string *)pbVar9,'/',0xffffffffffffffff);\n            if (uVar4 == 0xffffffffffffffff) {\n              uVar4 = uVar8;\n            }\n            if (uVar5 == 0xffffffffffffffff) {\n              uVar5 = uVar8;\n            }\n            iVar3 = string::compare((string *)__first._M_current,uVar4,0xffffffffffffffff,\n                                    (string *)pbVar9,uVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (pbVar9 <= local_80._M_current) goto LAB_00285680;\n          string::swap((string *)local_80._M_current,(string *)pbVar9);\n        }" if (parenthesized_expression "(-1 < iVar3)" ( (binary_expression "-1 < iVar3" number_literal < identifier) )) (compound_statement "{\n          do {\n            pbVar9 = pbVar9 + -1;\n            uVar4 = string::rfind((string *)__first._M_current,'/',0xffffffffffffffff);\n            uVar5 = string::rfind((string *)pbVar9,'/',0xffffffffffffffff);\n            if (uVar4 == 0xffffffffffffffff) {\n              uVar4 = uVar8;\n            }\n            if (uVar5 == 0xffffffffffffffff) {\n              uVar5 = uVar8;\n            }\n            iVar3 = string::compare((string *)__first._M_current,uVar4,0xffffffffffffffff,\n                                    (string *)pbVar9,uVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (pbVar9 <= local_80._M_current) goto LAB_00285680;\n          string::swap((string *)local_80._M_current,(string *)pbVar9);\n        }" { (do_statement "do {\n            pbVar9 = pbVar9 + -1;\n            uVar4 = string::rfind((string *)__first._M_current,'/',0xffffffffffffffff);\n            uVar5 = string::rfind((string *)pbVar9,'/',0xffffffffffffffff);\n            if (uVar4 == 0xffffffffffffffff) {\n              uVar4 = uVar8;\n            }\n            if (uVar5 == 0xffffffffffffffff) {\n              uVar5 = uVar8;\n            }\n            iVar3 = string::compare((string *)__first._M_current,uVar4,0xffffffffffffffff,\n                                    (string *)pbVar9,uVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);" do (compound_statement "{\n            pbVar9 = pbVar9 + -1;\n            uVar4 = string::rfind((string *)__first._M_current,'/',0xffffffffffffffff);\n            uVar5 = string::rfind((string *)pbVar9,'/',0xffffffffffffffff);\n            if (uVar4 == 0xffffffffffffffff) {\n              uVar4 = uVar8;\n            }\n            if (uVar5 == 0xffffffffffffffff) {\n              uVar5 = uVar8;\n            }\n            iVar3 = string::compare((string *)__first._M_current,uVar4,0xffffffffffffffff,\n                                    (string *)pbVar9,uVar5,0xffffffffffffffff);\n          }" { (expression_statement "pbVar9 = pbVar9 + -1;" (assignment_expression "pbVar9 = pbVar9 + -1" identifier = (binary_expression "pbVar9 + -1" identifier + number_literal)) ;) (ERROR "uVar4 = string::" (assignment_expression "uVar4 = string" identifier = identifier) : :) (expression_statement "rfind((string *)__first._M_current,'/',0xffffffffffffffff);" (call_expression "rfind((string *)__first._M_current,'/',0xffffffffffffffff)" identifier (argument_list "((string *)__first._M_current,'/',0xffffffffffffffff)" ( (cast_expression "(string *)__first._M_current" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "__first._M_current" identifier . field_identifier)) , (char_literal "'/'" ' character ') , number_literal ))) ;) (ERROR "uVar5 = string::" (assignment_expression "uVar5 = string" identifier = identifier) : :) (expression_statement "rfind((string *)pbVar9,'/',0xffffffffffffffff);" (call_expression "rfind((string *)pbVar9,'/',0xffffffffffffffff)" identifier (argument_list "((string *)pbVar9,'/',0xffffffffffffffff)" ( (cast_expression "(string *)pbVar9" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (char_literal "'/'" ' character ') , number_literal ))) ;) (if_statement "if (uVar4 == 0xffffffffffffffff) {\n              uVar4 = uVar8;\n            }" if (parenthesized_expression "(uVar4 == 0xffffffffffffffff)" ( (binary_expression "uVar4 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n              uVar4 = uVar8;\n            }" { (expression_statement "uVar4 = uVar8;" (assignment_expression "uVar4 = uVar8" identifier = identifier) ;) })) (if_statement "if (uVar5 == 0xffffffffffffffff) {\n              uVar5 = uVar8;\n            }" if (parenthesized_expression "(uVar5 == 0xffffffffffffffff)" ( (binary_expression "uVar5 == 0xffffffffffffffff" identifier == number_literal) )) (compound_statement "{\n              uVar5 = uVar8;\n            }" { (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" identifier = identifier) ;) })) (ERROR "iVar3 = string::" (assignment_expression "iVar3 = string" identifier = identifier) : :) (expression_statement "compare((string *)__first._M_current,uVar4,0xffffffffffffffff,\n                                    (string *)pbVar9,uVar5,0xffffffffffffffff);" (call_expression "compare((string *)__first._M_current,uVar4,0xffffffffffffffff,\n                                    (string *)pbVar9,uVar5,0xffffffffffffffff)" identifier (argument_list "((string *)__first._M_current,uVar4,0xffffffffffffffff,\n                                    (string *)pbVar9,uVar5,0xffffffffffffffff)" ( (cast_expression "(string *)__first._M_current" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "__first._M_current" identifier . field_identifier)) , identifier , number_literal , (cast_expression "(string *)pbVar9" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , number_literal ))) ;) }) while (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) ;) (if_statement "if (pbVar9 <= local_80._M_current) goto LAB_00285680;" if (parenthesized_expression "(pbVar9 <= local_80._M_current)" ( (binary_expression "pbVar9 <= local_80._M_current" identifier <= (field_expression "local_80._M_current" identifier . field_identifier)) )) (goto_statement "goto LAB_00285680;" goto statement_identifier ;)) (labeled_statement "string::swap((string *)local_80._M_current,(string *)pbVar9);" statement_identifier : (ERROR ":" :) (expression_statement "swap((string *)local_80._M_current,(string *)pbVar9);" (call_expression "swap((string *)local_80._M_current,(string *)pbVar9)" identifier (argument_list "((string *)local_80._M_current,(string *)pbVar9)" ( (cast_expression "(string *)local_80._M_current" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_80._M_current" identifier . field_identifier)) , (cast_expression "(string *)pbVar9" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) })) (expression_statement "local_80._M_current = local_80._M_current + 1;" (assignment_expression "local_80._M_current = local_80._M_current + 1" (field_expression "local_80._M_current" identifier . field_identifier) = (binary_expression "local_80._M_current + 1" (field_expression "local_80._M_current" identifier . field_identifier) + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (labeled_statement "LAB_002856b5:\n    __src = &(__first._M_current)->field_2;" statement_identifier : (expression_statement "__src = &(__first._M_current)->field_2;" (assignment_expression "__src = &(__first._M_current)->field_2" identifier = (pointer_expression "&(__first._M_current)->field_2" & (field_expression "(__first._M_current)->field_2" (parenthesized_expression "(__first._M_current)" ( (field_expression "__first._M_current" identifier . field_identifier) )) -> field_identifier))) ;)) (expression_statement "paVar1 = &__value.field_2;" (assignment_expression "paVar1 = &__value.field_2" identifier = (pointer_expression "&__value.field_2" & (field_expression "__value.field_2" identifier . field_identifier))) ;) (expression_statement "__dest = &local_80._M_current[-1].field_2;" (assignment_expression "__dest = &local_80._M_current[-1].field_2" identifier = (pointer_expression "&local_80._M_current[-1].field_2" & (field_expression "local_80._M_current[-1].field_2" (subscript_expression "local_80._M_current[-1]" (field_expression "local_80._M_current" identifier . field_identifier) [ number_literal ]) . field_identifier))) ;) (expression_statement "local_58 = (size_type *)CONCAT71(local_58._1_7_,in_stack_00000008);" (assignment_expression "local_58 = (size_type *)CONCAT71(local_58._1_7_,in_stack_00000008)" identifier = (cast_expression "(size_type *)CONCAT71(local_58._1_7_,in_stack_00000008)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_58._1_7_,in_stack_00000008)" identifier (argument_list "(local_58._1_7_,in_stack_00000008)" ( (field_expression "local_58._1_7_" identifier . field_identifier) , identifier ))))) ;) (ERROR "__make_heap<__gnu_cxx::__normal_iterator<std::" (binary_expression "__make_heap<__gnu_cxx::__normal_iterator<std" (binary_expression "__make_heap<__gnu_cxx" identifier < identifier) (ERROR "::__normal_iterator" : : identifier) < identifier) : :) (labeled_statement "__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n              (__first,local_80,(_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58);" statement_identifier (ERROR "::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,___gnu_cxx:" : : (binary_expression "basic_string<char>*,_std" (binary_expression "basic_string<char" identifier < identifier) > (pointer_expression "*,_std" * (ERROR "," ,) identifier)) : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char>_>_>,___gnu_cxx" identifier (ERROR "::basic_string<char>_>_>" : : (binary_expression "basic_string<char>_>_" (binary_expression "basic_string<char>_" (binary_expression "basic_string<char" identifier < identifier) > identifier) > identifier) >) , identifier) :) : (labeled_statement "__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n              (__first,local_80,(_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58);" statement_identifier (ERROR "::_Iter_comp_iter<gold:" : : (binary_expression "_Iter_comp_iter<gold" identifier < identifier) :) : (expression_statement "Odr_violation_compare>_>\n              (__first,local_80,(_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58);" (binary_expression "Odr_violation_compare>_>\n              (__first,local_80,(_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58)" (binary_expression "Odr_violation_compare>_" identifier > identifier) > (parenthesized_expression "(__first,local_80,(_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58)" ( (comma_expression "__first,local_80,(_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58" identifier , (comma_expression "local_80,(_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58" identifier , (binary_expression "(_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58" (parenthesized_expression "(_Iter_comp_iter<gold::Odr_violation_compare> *)" ( (ERROR "_Iter_comp_iter<gold::" (binary_expression "_Iter_comp_iter<gold" identifier < identifier) : :) (binary_expression "Odr_violation_compare> *" identifier > (pointer_expression "*" * identifier)) )) & identifier))) ))) ;))) (do_statement "do {\n      __value._M_dataplus._M_p =\n           (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n           _M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value._M_dataplus._M_p == __dest) {\n        __value.field_2._M_allocated_capacity = __dest->_M_allocated_capacity;\n        __value.field_2._8_8_ = *(size_type *)((long)__dest + 8);\n        __value._M_dataplus._M_p = (pointer)paVar1;\n      }\n      else {\n        __value.field_2._M_allocated_capacity = __dest->_M_allocated_capacity;\n      }\n      __value._M_string_length = *(size_type *)((long)__dest + -8);\n      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n      _M_dataplus)._M_p = (pointer)__dest;\n      *(size_type *)((long)__dest + -8) = 0;\n      __dest->_M_local_buf[0] = '\0';\n      pcVar2 = ((__first._M_current)->_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 == __src) {\n        __n = (__first._M_current)->_M_string_length;\n        if (__n != 0) {\n          if (__n == 1) {\n            __dest->_M_local_buf[0] = ((__first._M_current)->field_2)._M_local_buf[0];\n            __n = (__first._M_current)->_M_string_length;\n          }\n          else {\n            memcpy(__dest,__src,__n);\n            __n = (__first._M_current)->_M_string_length;\n          }\n        }\n        pcVar2 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                  (__dest + -1))->_M_dataplus)._M_p;\n        *(size_t *)((long)__dest + -8) = __n;\n        pcVar2[__n] = '\0';\n        paVar6 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)((__first._M_current)->_M_dataplus)._M_p;\n      }\n      else {\n        (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n        _M_dataplus)._M_p = pcVar2;\n        *(size_type *)((long)__dest + -8) = (__first._M_current)->_M_string_length;\n        __dest->_M_allocated_capacity = ((__first._M_current)->field_2)._M_allocated_capacity;\n        ((__first._M_current)->_M_dataplus)._M_p = (pointer)__src;\n        paVar6 = __src;\n      }\n      (__first._M_current)->_M_string_length = 0;\n      paVar6->_M_local_buf[0] = '\0';\n      local_58 = &local_48;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value._M_dataplus._M_p == paVar1) {\n        uStack_40 = __value.field_2._8_8_;\n      }\n      else {\n        local_58 = (size_type *)__value._M_dataplus._M_p;\n      }\n      local_48 = __value.field_2._M_allocated_capacity;\n      pcVar7 = __dest->_M_local_buf + (-0x10 - (long)__first._M_current);\n      local_50 = __value._M_string_length;\n      __value._M_string_length = 0;\n      __value.field_2._M_allocated_capacity =\n           __value.field_2._M_allocated_capacity & 0xffffffffffffff00;\n      __value._M_dataplus._M_p = (pointer)paVar1;\n                    /* try { // try from 002857a4 to 002857a8 has its CatchHandler @ 00285962 */\n      __adjust_heap<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,_long_int,_std::__cxx11::basic_string<char>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n                (__first._M_current,0,(long)pcVar7 >> 5,\n                 (_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58);\n      if (local_58 != &local_48) {\n        operator_delete(local_58);\n      }\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value._M_dataplus._M_p != paVar1) {\n        operator_delete(__value._M_dataplus._M_p);\n      }\n      __dest = __dest + -2;\n    } while (0x20 < (long)pcVar7);" do (compound_statement "{\n      __value._M_dataplus._M_p =\n           (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n           _M_dataplus)._M_p;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value._M_dataplus._M_p == __dest) {\n        __value.field_2._M_allocated_capacity = __dest->_M_allocated_capacity;\n        __value.field_2._8_8_ = *(size_type *)((long)__dest + 8);\n        __value._M_dataplus._M_p = (pointer)paVar1;\n      }\n      else {\n        __value.field_2._M_allocated_capacity = __dest->_M_allocated_capacity;\n      }\n      __value._M_string_length = *(size_type *)((long)__dest + -8);\n      (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n      _M_dataplus)._M_p = (pointer)__dest;\n      *(size_type *)((long)__dest + -8) = 0;\n      __dest->_M_local_buf[0] = '\0';\n      pcVar2 = ((__first._M_current)->_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 == __src) {\n        __n = (__first._M_current)->_M_string_length;\n        if (__n != 0) {\n          if (__n == 1) {\n            __dest->_M_local_buf[0] = ((__first._M_current)->field_2)._M_local_buf[0];\n            __n = (__first._M_current)->_M_string_length;\n          }\n          else {\n            memcpy(__dest,__src,__n);\n            __n = (__first._M_current)->_M_string_length;\n          }\n        }\n        pcVar2 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                  (__dest + -1))->_M_dataplus)._M_p;\n        *(size_t *)((long)__dest + -8) = __n;\n        pcVar2[__n] = '\0';\n        paVar6 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)((__first._M_current)->_M_dataplus)._M_p;\n      }\n      else {\n        (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n        _M_dataplus)._M_p = pcVar2;\n        *(size_type *)((long)__dest + -8) = (__first._M_current)->_M_string_length;\n        __dest->_M_allocated_capacity = ((__first._M_current)->field_2)._M_allocated_capacity;\n        ((__first._M_current)->_M_dataplus)._M_p = (pointer)__src;\n        paVar6 = __src;\n      }\n      (__first._M_current)->_M_string_length = 0;\n      paVar6->_M_local_buf[0] = '\0';\n      local_58 = &local_48;\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value._M_dataplus._M_p == paVar1) {\n        uStack_40 = __value.field_2._8_8_;\n      }\n      else {\n        local_58 = (size_type *)__value._M_dataplus._M_p;\n      }\n      local_48 = __value.field_2._M_allocated_capacity;\n      pcVar7 = __dest->_M_local_buf + (-0x10 - (long)__first._M_current);\n      local_50 = __value._M_string_length;\n      __value._M_string_length = 0;\n      __value.field_2._M_allocated_capacity =\n           __value.field_2._M_allocated_capacity & 0xffffffffffffff00;\n      __value._M_dataplus._M_p = (pointer)paVar1;\n                    /* try { // try from 002857a4 to 002857a8 has its CatchHandler @ 00285962 */\n      __adjust_heap<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,_long_int,_std::__cxx11::basic_string<char>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n                (__first._M_current,0,(long)pcVar7 >> 5,\n                 (_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58);\n      if (local_58 != &local_48) {\n        operator_delete(local_58);\n      }\n      if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value._M_dataplus._M_p != paVar1) {\n        operator_delete(__value._M_dataplus._M_p);\n      }\n      __dest = __dest + -2;\n    }" { (expression_statement "__value._M_dataplus._M_p =\n           (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n           _M_dataplus)._M_p;" (assignment_expression "__value._M_dataplus._M_p =\n           (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n           _M_dataplus)._M_p" (field_expression "__value._M_dataplus._M_p" (field_expression "__value._M_dataplus" identifier . field_identifier) . field_identifier) = (field_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n           _M_dataplus)._M_p" (parenthesized_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n           _M_dataplus)" ( (field_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n           _M_dataplus" (parenthesized_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))" ( (call_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1)" (parenthesized_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)" ( (ERROR "basic_string<char,_std::char_traits<char>,_std::" (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_> *" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*" * identifier)) )) (argument_list "(__dest + -1)" ( (binary_expression "__dest + -1" identifier + number_literal) ))) )) -> 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           *)__value._M_dataplus._M_p == __dest) {\n        __value.field_2._M_allocated_capacity = __dest->_M_allocated_capacity;\n        __value.field_2._8_8_ = *(size_type *)((long)__dest + 8);\n        __value._M_dataplus._M_p = (pointer)paVar1;\n      }\n      else {\n        __value.field_2._M_allocated_capacity = __dest->_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           *)__value._M_dataplus._M_p == __dest)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value._M_dataplus._M_p == __dest)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n           *)__value._M_dataplus._M_p == __dest" (binary_expression "allocator<char>_>_9\n           *)__value._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n           *)__value._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "__value._M_dataplus._M_p" (field_expression "__value._M_dataplus" identifier . field_identifier) . field_identifier))) == identifier) )) )) (compound_statement "{\n        __value.field_2._M_allocated_capacity = __dest->_M_allocated_capacity;\n        __value.field_2._8_8_ = *(size_type *)((long)__dest + 8);\n        __value._M_dataplus._M_p = (pointer)paVar1;\n      }" { (expression_statement "__value.field_2._M_allocated_capacity = __dest->_M_allocated_capacity;" (assignment_expression "__value.field_2._M_allocated_capacity = __dest->_M_allocated_capacity" (field_expression "__value.field_2._M_allocated_capacity" (field_expression "__value.field_2" identifier . field_identifier) . field_identifier) = (field_expression "__dest->_M_allocated_capacity" identifier -> field_identifier)) ;) (expression_statement "__value.field_2._8_8_ = *(size_type *)((long)__dest + 8);" (assignment_expression "__value.field_2._8_8_ = *(size_type *)((long)__dest + 8)" (field_expression "__value.field_2._8_8_" (field_expression "__value.field_2" identifier . field_identifier) . field_identifier) = (pointer_expression "*(size_type *)((long)__dest + 8)" * (cast_expression "(size_type *)((long)__dest + 8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest + 8)" ( (binary_expression "(long)__dest + 8" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "__value._M_dataplus._M_p = (pointer)paVar1;" (assignment_expression "__value._M_dataplus._M_p = (pointer)paVar1" (field_expression "__value._M_dataplus._M_p" (field_expression "__value._M_dataplus" identifier . field_identifier) . field_identifier) = (cast_expression "(pointer)paVar1" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) }) (else_clause "else {\n        __value.field_2._M_allocated_capacity = __dest->_M_allocated_capacity;\n      }" else (compound_statement "{\n        __value.field_2._M_allocated_capacity = __dest->_M_allocated_capacity;\n      }" { (expression_statement "__value.field_2._M_allocated_capacity = __dest->_M_allocated_capacity;" (assignment_expression "__value.field_2._M_allocated_capacity = __dest->_M_allocated_capacity" (field_expression "__value.field_2._M_allocated_capacity" (field_expression "__value.field_2" identifier . field_identifier) . field_identifier) = (field_expression "__dest->_M_allocated_capacity" identifier -> field_identifier)) ;) }))) (expression_statement "__value._M_string_length = *(size_type *)((long)__dest + -8);" (assignment_expression "__value._M_string_length = *(size_type *)((long)__dest + -8)" (field_expression "__value._M_string_length" identifier . field_identifier) = (pointer_expression "*(size_type *)((long)__dest + -8)" * (cast_expression "(size_type *)((long)__dest + -8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest + -8)" ( (binary_expression "(long)__dest + -8" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n      _M_dataplus)._M_p = (pointer)__dest;" (assignment_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n      _M_dataplus)._M_p = (pointer)__dest" (field_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n      _M_dataplus)._M_p" (parenthesized_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n      _M_dataplus)" ( (field_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n      _M_dataplus" (parenthesized_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))" ( (call_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1)" (parenthesized_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)" ( (ERROR "basic_string<char,_std::char_traits<char>,_std::" (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_> *" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*" * identifier)) )) (argument_list "(__dest + -1)" ( (binary_expression "__dest + -1" identifier + number_literal) ))) )) -> field_identifier) )) . field_identifier) = (cast_expression "(pointer)__dest" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "*(size_type *)((long)__dest + -8) = 0;" (assignment_expression "*(size_type *)((long)__dest + -8) = 0" (pointer_expression "*(size_type *)((long)__dest + -8)" * (cast_expression "(size_type *)((long)__dest + -8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest + -8)" ( (binary_expression "(long)__dest + -8" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "__dest->_M_local_buf[0] = '\0';" (assignment_expression "__dest->_M_local_buf[0] = '\0'" (subscript_expression "__dest->_M_local_buf[0]" (field_expression "__dest->_M_local_buf" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar2 = ((__first._M_current)->_M_dataplus)._M_p;" (assignment_expression "pcVar2 = ((__first._M_current)->_M_dataplus)._M_p" identifier = (field_expression "((__first._M_current)->_M_dataplus)._M_p" (parenthesized_expression "((__first._M_current)->_M_dataplus)" ( (field_expression "(__first._M_current)->_M_dataplus" (parenthesized_expression "(__first._M_current)" ( (field_expression "__first._M_current" 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 == __src) {\n        __n = (__first._M_current)->_M_string_length;\n        if (__n != 0) {\n          if (__n == 1) {\n            __dest->_M_local_buf[0] = ((__first._M_current)->field_2)._M_local_buf[0];\n            __n = (__first._M_current)->_M_string_length;\n          }\n          else {\n            memcpy(__dest,__src,__n);\n            __n = (__first._M_current)->_M_string_length;\n          }\n        }\n        pcVar2 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                  (__dest + -1))->_M_dataplus)._M_p;\n        *(size_t *)((long)__dest + -8) = __n;\n        pcVar2[__n] = '\0';\n        paVar6 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)((__first._M_current)->_M_dataplus)._M_p;\n      }\n      else {\n        (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n        _M_dataplus)._M_p = pcVar2;\n        *(size_type *)((long)__dest + -8) = (__first._M_current)->_M_string_length;\n        __dest->_M_allocated_capacity = ((__first._M_current)->field_2)._M_allocated_capacity;\n        ((__first._M_current)->_M_dataplus)._M_p = (pointer)__src;\n        paVar6 = __src;\n      }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar2 == __src)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)pcVar2 == __src)" ( (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 == __src" (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)) == identifier) )) )) (compound_statement "{\n        __n = (__first._M_current)->_M_string_length;\n        if (__n != 0) {\n          if (__n == 1) {\n            __dest->_M_local_buf[0] = ((__first._M_current)->field_2)._M_local_buf[0];\n            __n = (__first._M_current)->_M_string_length;\n          }\n          else {\n            memcpy(__dest,__src,__n);\n            __n = (__first._M_current)->_M_string_length;\n          }\n        }\n        pcVar2 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                  (__dest + -1))->_M_dataplus)._M_p;\n        *(size_t *)((long)__dest + -8) = __n;\n        pcVar2[__n] = '\0';\n        paVar6 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)((__first._M_current)->_M_dataplus)._M_p;\n      }" { (expression_statement "__n = (__first._M_current)->_M_string_length;" (assignment_expression "__n = (__first._M_current)->_M_string_length" identifier = (field_expression "(__first._M_current)->_M_string_length" (parenthesized_expression "(__first._M_current)" ( (field_expression "__first._M_current" identifier . field_identifier) )) -> field_identifier)) ;) (if_statement "if (__n != 0) {\n          if (__n == 1) {\n            __dest->_M_local_buf[0] = ((__first._M_current)->field_2)._M_local_buf[0];\n            __n = (__first._M_current)->_M_string_length;\n          }\n          else {\n            memcpy(__dest,__src,__n);\n            __n = (__first._M_current)->_M_string_length;\n          }\n        }" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (compound_statement "{\n          if (__n == 1) {\n            __dest->_M_local_buf[0] = ((__first._M_current)->field_2)._M_local_buf[0];\n            __n = (__first._M_current)->_M_string_length;\n          }\n          else {\n            memcpy(__dest,__src,__n);\n            __n = (__first._M_current)->_M_string_length;\n          }\n        }" { (if_statement "if (__n == 1) {\n            __dest->_M_local_buf[0] = ((__first._M_current)->field_2)._M_local_buf[0];\n            __n = (__first._M_current)->_M_string_length;\n          }\n          else {\n            memcpy(__dest,__src,__n);\n            __n = (__first._M_current)->_M_string_length;\n          }" if (parenthesized_expression "(__n == 1)" ( (binary_expression "__n == 1" identifier == number_literal) )) (compound_statement "{\n            __dest->_M_local_buf[0] = ((__first._M_current)->field_2)._M_local_buf[0];\n            __n = (__first._M_current)->_M_string_length;\n          }" { (expression_statement "__dest->_M_local_buf[0] = ((__first._M_current)->field_2)._M_local_buf[0];" (assignment_expression "__dest->_M_local_buf[0] = ((__first._M_current)->field_2)._M_local_buf[0]" (subscript_expression "__dest->_M_local_buf[0]" (field_expression "__dest->_M_local_buf" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "((__first._M_current)->field_2)._M_local_buf[0]" (field_expression "((__first._M_current)->field_2)._M_local_buf" (parenthesized_expression "((__first._M_current)->field_2)" ( (field_expression "(__first._M_current)->field_2" (parenthesized_expression "(__first._M_current)" ( (field_expression "__first._M_current" identifier . field_identifier) )) -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (expression_statement "__n = (__first._M_current)->_M_string_length;" (assignment_expression "__n = (__first._M_current)->_M_string_length" identifier = (field_expression "(__first._M_current)->_M_string_length" (parenthesized_expression "(__first._M_current)" ( (field_expression "__first._M_current" identifier . field_identifier) )) -> field_identifier)) ;) }) (else_clause "else {\n            memcpy(__dest,__src,__n);\n            __n = (__first._M_current)->_M_string_length;\n          }" else (compound_statement "{\n            memcpy(__dest,__src,__n);\n            __n = (__first._M_current)->_M_string_length;\n          }" { (expression_statement "memcpy(__dest,__src,__n);" (call_expression "memcpy(__dest,__src,__n)" identifier (argument_list "(__dest,__src,__n)" ( identifier , identifier , identifier ))) ;) (expression_statement "__n = (__first._M_current)->_M_string_length;" (assignment_expression "__n = (__first._M_current)->_M_string_length" identifier = (field_expression "(__first._M_current)->_M_string_length" (parenthesized_expression "(__first._M_current)" ( (field_expression "__first._M_current" identifier . field_identifier) )) -> field_identifier)) ;) }))) })) (expression_statement "pcVar2 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                  (__dest + -1))->_M_dataplus)._M_p;" (assignment_expression "pcVar2 = (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                  (__dest + -1))->_M_dataplus)._M_p" identifier = (field_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                  (__dest + -1))->_M_dataplus)._M_p" (parenthesized_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                  (__dest + -1))->_M_dataplus)" ( (field_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                  (__dest + -1))->_M_dataplus" (parenthesized_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                  (__dest + -1))" ( (call_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n                  (__dest + -1)" (parenthesized_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)" ( (ERROR "basic_string<char,_std::char_traits<char>,_std::" (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_> *" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*" * identifier)) )) (argument_list "(__dest + -1)" ( (binary_expression "__dest + -1" identifier + number_literal) ))) )) -> field_identifier) )) . field_identifier)) ;) (expression_statement "*(size_t *)((long)__dest + -8) = __n;" (assignment_expression "*(size_t *)((long)__dest + -8) = __n" (pointer_expression "*(size_t *)((long)__dest + -8)" * (cast_expression "(size_t *)((long)__dest + -8)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest + -8)" ( (binary_expression "(long)__dest + -8" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "pcVar2[__n] = '\0';" (assignment_expression "pcVar2[__n] = '\0'" (subscript_expression "pcVar2[__n]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "paVar6 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)((__first._M_current)->_M_dataplus)._M_p;" (assignment_expression "paVar6 = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)((__first._M_current)->_M_dataplus)._M_p" identifier = (field_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)((__first._M_current)->_M_dataplus)._M_p" (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)((__first._M_current)->_M_dataplus)" (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 "((__first._M_current)->_M_dataplus)" ( (field_expression "(__first._M_current)->_M_dataplus" (parenthesized_expression "(__first._M_current)" ( (field_expression "__first._M_current" identifier . field_identifier) )) -> field_identifier) ))) . field_identifier)) ;) }) (else_clause "else {\n        (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n        _M_dataplus)._M_p = pcVar2;\n        *(size_type *)((long)__dest + -8) = (__first._M_current)->_M_string_length;\n        __dest->_M_allocated_capacity = ((__first._M_current)->field_2)._M_allocated_capacity;\n        ((__first._M_current)->_M_dataplus)._M_p = (pointer)__src;\n        paVar6 = __src;\n      }" else (compound_statement "{\n        (((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n        _M_dataplus)._M_p = pcVar2;\n        *(size_type *)((long)__dest + -8) = (__first._M_current)->_M_string_length;\n        __dest->_M_allocated_capacity = ((__first._M_current)->field_2)._M_allocated_capacity;\n        ((__first._M_current)->_M_dataplus)._M_p = (pointer)__src;\n        paVar6 = __src;\n      }" { (expression_statement "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n        _M_dataplus)._M_p = pcVar2;" (assignment_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n        _M_dataplus)._M_p = pcVar2" (field_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n        _M_dataplus)._M_p" (parenthesized_expression "(((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n        _M_dataplus)" ( (field_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))->\n        _M_dataplus" (parenthesized_expression "((basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1))" ( (call_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)(__dest + -1)" (parenthesized_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)" ( (ERROR "basic_string<char,_std::char_traits<char>,_std::" (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_> *" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*" * identifier)) )) (argument_list "(__dest + -1)" ( (binary_expression "__dest + -1" identifier + number_literal) ))) )) -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "*(size_type *)((long)__dest + -8) = (__first._M_current)->_M_string_length;" (assignment_expression "*(size_type *)((long)__dest + -8) = (__first._M_current)->_M_string_length" (pointer_expression "*(size_type *)((long)__dest + -8)" * (cast_expression "(size_type *)((long)__dest + -8)" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest + -8)" ( (binary_expression "(long)__dest + -8" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (field_expression "(__first._M_current)->_M_string_length" (parenthesized_expression "(__first._M_current)" ( (field_expression "__first._M_current" identifier . field_identifier) )) -> field_identifier)) ;) (expression_statement "__dest->_M_allocated_capacity = ((__first._M_current)->field_2)._M_allocated_capacity;" (assignment_expression "__dest->_M_allocated_capacity = ((__first._M_current)->field_2)._M_allocated_capacity" (field_expression "__dest->_M_allocated_capacity" identifier -> field_identifier) = (field_expression "((__first._M_current)->field_2)._M_allocated_capacity" (parenthesized_expression "((__first._M_current)->field_2)" ( (field_expression "(__first._M_current)->field_2" (parenthesized_expression "(__first._M_current)" ( (field_expression "__first._M_current" identifier . field_identifier) )) -> field_identifier) )) . field_identifier)) ;) (expression_statement "((__first._M_current)->_M_dataplus)._M_p = (pointer)__src;" (assignment_expression "((__first._M_current)->_M_dataplus)._M_p = (pointer)__src" (field_expression "((__first._M_current)->_M_dataplus)._M_p" (parenthesized_expression "((__first._M_current)->_M_dataplus)" ( (field_expression "(__first._M_current)->_M_dataplus" (parenthesized_expression "(__first._M_current)" ( (field_expression "__first._M_current" identifier . field_identifier) )) -> field_identifier) )) . field_identifier) = (cast_expression "(pointer)__src" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "paVar6 = __src;" (assignment_expression "paVar6 = __src" identifier = identifier) ;) }))) (expression_statement "(__first._M_current)->_M_string_length = 0;" (assignment_expression "(__first._M_current)->_M_string_length = 0" (field_expression "(__first._M_current)->_M_string_length" (parenthesized_expression "(__first._M_current)" ( (field_expression "__first._M_current" identifier . field_identifier) )) -> field_identifier) = number_literal) ;) (expression_statement "paVar6->_M_local_buf[0] = '\0';" (assignment_expression "paVar6->_M_local_buf[0] = '\0'" (subscript_expression "paVar6->_M_local_buf[0]" (field_expression "paVar6->_M_local_buf" identifier -> field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_58 = &local_48;" (assignment_expression "local_58 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value._M_dataplus._M_p == paVar1) {\n        uStack_40 = __value.field_2._8_8_;\n      }\n      else {\n        local_58 = (size_type *)__value._M_dataplus._M_p;\n      }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value._M_dataplus._M_p == paVar1)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value._M_dataplus._M_p == paVar1)" ( (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           *)__value._M_dataplus._M_p == paVar1" (binary_expression "allocator<char>_>_9\n           *)__value._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n           *)__value._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "__value._M_dataplus._M_p" (field_expression "__value._M_dataplus" identifier . field_identifier) . field_identifier))) == identifier) )) )) (compound_statement "{\n        uStack_40 = __value.field_2._8_8_;\n      }" { (expression_statement "uStack_40 = __value.field_2._8_8_;" (assignment_expression "uStack_40 = __value.field_2._8_8_" identifier = (field_expression "__value.field_2._8_8_" (field_expression "__value.field_2" identifier . field_identifier) . field_identifier)) ;) }) (else_clause "else {\n        local_58 = (size_type *)__value._M_dataplus._M_p;\n      }" else (compound_statement "{\n        local_58 = (size_type *)__value._M_dataplus._M_p;\n      }" { (expression_statement "local_58 = (size_type *)__value._M_dataplus._M_p;" (assignment_expression "local_58 = (size_type *)__value._M_dataplus._M_p" identifier = (cast_expression "(size_type *)__value._M_dataplus._M_p" ( (type_descriptor "size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "__value._M_dataplus._M_p" (field_expression "__value._M_dataplus" identifier . field_identifier) . field_identifier))) ;) }))) (expression_statement "local_48 = __value.field_2._M_allocated_capacity;" (assignment_expression "local_48 = __value.field_2._M_allocated_capacity" identifier = (field_expression "__value.field_2._M_allocated_capacity" (field_expression "__value.field_2" identifier . field_identifier) . field_identifier)) ;) (expression_statement "pcVar7 = __dest->_M_local_buf + (-0x10 - (long)__first._M_current);" (assignment_expression "pcVar7 = __dest->_M_local_buf + (-0x10 - (long)__first._M_current)" identifier = (binary_expression "__dest->_M_local_buf + (-0x10 - (long)__first._M_current)" (field_expression "__dest->_M_local_buf" identifier -> field_identifier) + (parenthesized_expression "(-0x10 - (long)__first._M_current)" ( (binary_expression "-0x10 - (long)__first._M_current" number_literal - (cast_expression "(long)__first._M_current" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "__first._M_current" identifier . field_identifier))) )))) ;) (expression_statement "local_50 = __value._M_string_length;" (assignment_expression "local_50 = __value._M_string_length" identifier = (field_expression "__value._M_string_length" identifier . field_identifier)) ;) (expression_statement "__value._M_string_length = 0;" (assignment_expression "__value._M_string_length = 0" (field_expression "__value._M_string_length" identifier . field_identifier) = number_literal) ;) (expression_statement "__value.field_2._M_allocated_capacity =\n           __value.field_2._M_allocated_capacity & 0xffffffffffffff00;" (assignment_expression "__value.field_2._M_allocated_capacity =\n           __value.field_2._M_allocated_capacity & 0xffffffffffffff00" (field_expression "__value.field_2._M_allocated_capacity" (field_expression "__value.field_2" identifier . field_identifier) . field_identifier) = (binary_expression "__value.field_2._M_allocated_capacity & 0xffffffffffffff00" (field_expression "__value.field_2._M_allocated_capacity" (field_expression "__value.field_2" identifier . field_identifier) . field_identifier) & number_literal)) ;) (expression_statement "__value._M_dataplus._M_p = (pointer)paVar1;" (assignment_expression "__value._M_dataplus._M_p = (pointer)paVar1" (field_expression "__value._M_dataplus._M_p" (field_expression "__value._M_dataplus" identifier . field_identifier) . field_identifier) = (cast_expression "(pointer)paVar1" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) comment (ERROR "__adjust_heap<__gnu_cxx::__normal_iterator<std::" (binary_expression "__adjust_heap<__gnu_cxx::__normal_iterator<std" (binary_expression "__adjust_heap<__gnu_cxx" identifier < identifier) (ERROR "::__normal_iterator" : : identifier) < identifier) : :) (labeled_statement "__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,_long_int,_std::__cxx11::basic_string<char>,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n                (__first._M_current,0,(long)pcVar7 >> 5,\n                 (_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58);" statement_identifier (ERROR "::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,_long_int,_std::__cxx11::basic_string<char>,___gnu_cxx:" : : (binary_expression "basic_string<char>*,_std" (binary_expression "basic_string<char" identifier < identifier) > (pointer_expression "*,_std" * (ERROR "," ,) identifier)) : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char>_>_>,_long_int,_std" identifier (ERROR "::basic_string<char>_>_>" : : (binary_expression "basic_string<char>_>_" (binary_expression "basic_string<char>_" (binary_expression "basic_string<char" identifier < identifier) > identifier) > identifier) >) , (comma_expression "_long_int,_std" identifier , identifier)) : : (comma_expression "__cxx11::basic_string<char>,___gnu_cxx" identifier (ERROR "::basic_string<char>" : : (binary_expression "basic_string<char" identifier < identifier) >) , identifier) :) : (labeled_statement "__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n                (__first._M_current,0,(long)pcVar7 >> 5,\n                 (_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58);" statement_identifier (ERROR "::_Iter_comp_iter<gold:" : : (binary_expression "_Iter_comp_iter<gold" identifier < identifier) :) : (expression_statement "Odr_violation_compare>_>\n                (__first._M_current,0,(long)pcVar7 >> 5,\n                 (_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58);" (binary_expression "Odr_violation_compare>_>\n                (__first._M_current,0,(long)pcVar7 >> 5,\n                 (_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58)" (binary_expression "Odr_violation_compare>_" identifier > identifier) > (parenthesized_expression "(__first._M_current,0,(long)pcVar7 >> 5,\n                 (_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58)" ( (comma_expression "__first._M_current,0,(long)pcVar7 >> 5,\n                 (_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58" (field_expression "__first._M_current" identifier . field_identifier) , (comma_expression "0,(long)pcVar7 >> 5,\n                 (_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58" number_literal , (comma_expression "(long)pcVar7 >> 5,\n                 (_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58" (binary_expression "(long)pcVar7 >> 5" (cast_expression "(long)pcVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) , (binary_expression "(_Iter_comp_iter<gold::Odr_violation_compare> *)&local_58" (parenthesized_expression "(_Iter_comp_iter<gold::Odr_violation_compare> *)" ( (ERROR "_Iter_comp_iter<gold::" (binary_expression "_Iter_comp_iter<gold" identifier < identifier) : :) (binary_expression "Odr_violation_compare> *" identifier > (pointer_expression "*" * identifier)) )) & identifier)))) ))) ;))) (if_statement "if (local_58 != &local_48) {\n        operator_delete(local_58);\n      }" if (parenthesized_expression "(local_58 != &local_48)" ( (binary_expression "local_58 != &local_48" identifier != (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n        operator_delete(local_58);\n      }" { (expression_statement "operator_delete(local_58);" (call_expression "operator_delete(local_58)" identifier (argument_list "(local_58)" ( identifier ))) ;) })) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value._M_dataplus._M_p != paVar1) {\n        operator_delete(__value._M_dataplus._M_p);\n      }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value._M_dataplus._M_p != paVar1)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n           *)__value._M_dataplus._M_p != paVar1)" ( (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           *)__value._M_dataplus._M_p != paVar1" (binary_expression "allocator<char>_>_9\n           *)__value._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n           *)__value._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "__value._M_dataplus._M_p" (field_expression "__value._M_dataplus" identifier . field_identifier) . field_identifier))) != identifier) )) )) (compound_statement "{\n        operator_delete(__value._M_dataplus._M_p);\n      }" { (expression_statement "operator_delete(__value._M_dataplus._M_p);" (call_expression "operator_delete(__value._M_dataplus._M_p)" identifier (argument_list "(__value._M_dataplus._M_p)" ( (field_expression "__value._M_dataplus._M_p" (field_expression "__value._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) })) (expression_statement "__dest = __dest + -2;" (assignment_expression "__dest = __dest + -2" identifier = (binary_expression "__dest + -2" identifier + number_literal)) ;) }) while (parenthesized_expression "(0x20 < (long)pcVar7)" ( (binary_expression "0x20 < (long)pcVar7" number_literal < (cast_expression "(long)pcVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) ;) })) (return_statement "return;" return ;) (labeled_statement "LAB_00285680:\n  __introsort_loop<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,_long_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n            (local_80._M_current,local_98,local_90);" statement_identifier : (ERROR "__introsort_loop<__gnu_cxx::__normal_iterator<std::" (binary_expression "__introsort_loop<__gnu_cxx::__normal_iterator<std" (binary_expression "__introsort_loop<__gnu_cxx" identifier < identifier) (ERROR "::__normal_iterator" : : identifier) < identifier) : :) (labeled_statement "__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,_long_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n            (local_80._M_current,local_98,local_90);" statement_identifier (ERROR "::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>_>_>,_long_int,___gnu_cxx:" : : (binary_expression "basic_string<char>*,_std" (binary_expression "basic_string<char" identifier < identifier) > (pointer_expression "*,_std" * (ERROR "," ,) identifier)) : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char>_>_>,_long_int,___gnu_cxx" identifier (ERROR "::basic_string<char>_>_>" : : (binary_expression "basic_string<char>_>_" (binary_expression "basic_string<char>_" (binary_expression "basic_string<char" identifier < identifier) > identifier) > identifier) >) , (comma_expression "_long_int,___gnu_cxx" identifier , identifier)) :) : (labeled_statement "__ops::_Iter_comp_iter<gold::Odr_violation_compare>_>\n            (local_80._M_current,local_98,local_90);" statement_identifier (ERROR "::_Iter_comp_iter<gold:" : : (binary_expression "_Iter_comp_iter<gold" identifier < identifier) :) : (expression_statement "Odr_violation_compare>_>\n            (local_80._M_current,local_98,local_90);" (binary_expression "Odr_violation_compare>_>\n            (local_80._M_current,local_98,local_90)" (binary_expression "Odr_violation_compare>_" identifier > identifier) > (parenthesized_expression "(local_80._M_current,local_98,local_90)" ( (comma_expression "local_80._M_current,local_98,local_90" (field_expression "local_80._M_current" identifier . field_identifier) , (comma_expression "local_98,local_90" identifier , identifier)) ))) ;)))) (if_statement "if ((long)local_80._M_current - (long)__first._M_current < 0x201) {\n    return;\n  }" if (parenthesized_expression "((long)local_80._M_current - (long)__first._M_current < 0x201)" ( (binary_expression "(long)local_80._M_current - (long)__first._M_current < 0x201" (binary_expression "(long)local_80._M_current - (long)__first._M_current" (cast_expression "(long)local_80._M_current" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "local_80._M_current" identifier . field_identifier)) - (cast_expression "(long)__first._M_current" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "__first._M_current" identifier . field_identifier))) < number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "local_98 = local_80._M_current;" (assignment_expression "local_98 = local_80._M_current" identifier = (field_expression "local_80._M_current" identifier . field_identifier)) ;) (if_statement "if (local_90 == 0) goto LAB_002856b5;" if (parenthesized_expression "(local_90 == 0)" ( (binary_expression "local_90 == 0" identifier == number_literal) )) (goto_statement "goto LAB_002856b5;" goto statement_identifier ;)) (goto_statement "goto LAB_00285459;" goto statement_identifier ;) (ERROR "}" }))
(translation_unit "void FUN_00285410(undefined8 *param_1,undefined8 *param_2,long param_3)\n\n{\n  undefined8 *puVar1;\n  ulong uVar2;\n  int iVar3;\n  long lVar4;\n  long lVar5;\n  undefined8 *puVar6;\n  size_t __n;\n  ulong *__dest;\n  undefined8 *puVar7;\n  undefined1 *puVar8;\n  long lVar9;\n  undefined8 *puVar10;\n  undefined1 in_stack_00000008;\n  undefined8 *local_98;\n  long local_90;\n  undefined8 *local_80;\n  ulong *local_78;\n  ulong local_68;\n  ulong uStack_60;\n  ulong *local_58;\n  ulong local_50;\n  ulong local_48;\n  ulong uStack_40;\n  \n  if (0x200 < (long)param_2 - (long)param_1) {\n    local_80 = param_2;\n    if (param_3 != 0) {\n      puVar1 = param_1 + 4;\n      lVar9 = 0;\n      local_98 = param_2;\n      local_90 = param_3;\nLAB_00285459:\n      local_90 = local_90 + -1;\n      puVar6 = local_98 + -4;\n      lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n      puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4;\n      lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n      if (lVar4 == -1) {\n        lVar4 = lVar9;\n      }\n      if (lVar5 == -1) {\n        lVar5 = lVar9;\n      }\n      iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff);\n      local_80 = puVar1;\n      puVar10 = local_98;\n      if (iVar3 < 0) {\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }\n      FUN_002e3180(param_1,puVar6);\nLAB_002855a0:\n      do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );\n    }\nLAB_002856b5:\n    puVar1 = param_1 + 2;\n    __dest = local_80 + -2;\n    local_58 = (ulong *)CONCAT71(local_58._1_7_,in_stack_00000008);\n    FUN_00285270(param_1,local_80,&local_58);\n    do {\n      local_78 = (ulong *)__dest[-2];\n      if (local_78 == __dest) {\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }\n      else {\n        local_68 = *__dest;\n      }\n      uVar2 = __dest[-1];\n      __dest[-2] = (ulong)__dest;\n      __dest[-1] = 0;\n      *(undefined1 *)__dest = 0;\n      if ((undefined8 *)*param_1 == puVar1) {\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }\n      else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }\n      param_1[1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      local_58 = &local_48;\n      if (local_78 == &local_68) {\n        uStack_40 = uStack_60;\n      }\n      else {\n        local_58 = local_78;\n      }\n      local_48 = local_68;\n      puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1));\n      local_68 = local_68 & 0xffffffffffffff00;\n      local_50 = uVar2;\n                    \n      FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58);\n      if (local_58 != &local_48) {\n        FUN_002dac70();\n      }\n      __dest = __dest + -4;\n    } while (0x20 < (long)puVar8);\n  }\n  return;\nLAB_00285680:\n  FUN_00285410(local_80,local_98,local_90);\n  if ((long)local_80 - (long)param_1 < 0x201) {\n    return;\n  }\n  local_98 = local_80;\n  if (local_90 == 0) goto LAB_002856b5;\n  goto LAB_00285459;\n}\n\n" (function_definition "void FUN_00285410(undefined8 *param_1,undefined8 *param_2,long param_3)\n\n{\n  undefined8 *puVar1;\n  ulong uVar2;\n  int iVar3;\n  long lVar4;\n  long lVar5;\n  undefined8 *puVar6;\n  size_t __n;\n  ulong *__dest;\n  undefined8 *puVar7;\n  undefined1 *puVar8;\n  long lVar9;\n  undefined8 *puVar10;\n  undefined1 in_stack_00000008;\n  undefined8 *local_98;\n  long local_90;\n  undefined8 *local_80;\n  ulong *local_78;\n  ulong local_68;\n  ulong uStack_60;\n  ulong *local_58;\n  ulong local_50;\n  ulong local_48;\n  ulong uStack_40;\n  \n  if (0x200 < (long)param_2 - (long)param_1) {\n    local_80 = param_2;\n    if (param_3 != 0) {\n      puVar1 = param_1 + 4;\n      lVar9 = 0;\n      local_98 = param_2;\n      local_90 = param_3;\nLAB_00285459:\n      local_90 = local_90 + -1;\n      puVar6 = local_98 + -4;\n      lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n      puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4;\n      lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n      if (lVar4 == -1) {\n        lVar4 = lVar9;\n      }\n      if (lVar5 == -1) {\n        lVar5 = lVar9;\n      }\n      iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff);\n      local_80 = puVar1;\n      puVar10 = local_98;\n      if (iVar3 < 0) {\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }\n      FUN_002e3180(param_1,puVar6);\nLAB_002855a0:\n      do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );\n    }\nLAB_002856b5:\n    puVar1 = param_1 + 2;\n    __dest = local_80 + -2;\n    local_58 = (ulong *)CONCAT71(local_58._1_7_,in_stack_00000008);\n    FUN_00285270(param_1,local_80,&local_58);\n    do {\n      local_78 = (ulong *)__dest[-2];\n      if (local_78 == __dest) {\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }\n      else {\n        local_68 = *__dest;\n      }\n      uVar2 = __dest[-1];\n      __dest[-2] = (ulong)__dest;\n      __dest[-1] = 0;\n      *(undefined1 *)__dest = 0;\n      if ((undefined8 *)*param_1 == puVar1) {\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }\n      else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }\n      param_1[1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      local_58 = &local_48;\n      if (local_78 == &local_68) {\n        uStack_40 = uStack_60;\n      }\n      else {\n        local_58 = local_78;\n      }\n      local_48 = local_68;\n      puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1));\n      local_68 = local_68 & 0xffffffffffffff00;\n      local_50 = uVar2;\n                    \n      FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58);\n      if (local_58 != &local_48) {\n        FUN_002dac70();\n      }\n      __dest = __dest + -4;\n    } while (0x20 < (long)puVar8);\n  }\n  return;\nLAB_00285680:\n  FUN_00285410(local_80,local_98,local_90);\n  if ((long)local_80 - (long)param_1 < 0x201) {\n    return;\n  }\n  local_98 = local_80;\n  if (local_90 == 0) goto LAB_002856b5;\n  goto LAB_00285459;\n}" primitive_type (function_declarator "FUN_00285410(undefined8 *param_1,undefined8 *param_2,long param_3)" identifier (parameter_list "(undefined8 *param_1,undefined8 *param_2,long param_3)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  undefined8 *puVar1;\n  ulong uVar2;\n  int iVar3;\n  long lVar4;\n  long lVar5;\n  undefined8 *puVar6;\n  size_t __n;\n  ulong *__dest;\n  undefined8 *puVar7;\n  undefined1 *puVar8;\n  long lVar9;\n  undefined8 *puVar10;\n  undefined1 in_stack_00000008;\n  undefined8 *local_98;\n  long local_90;\n  undefined8 *local_80;\n  ulong *local_78;\n  ulong local_68;\n  ulong uStack_60;\n  ulong *local_58;\n  ulong local_50;\n  ulong local_48;\n  ulong uStack_40;\n  \n  if (0x200 < (long)param_2 - (long)param_1) {\n    local_80 = param_2;\n    if (param_3 != 0) {\n      puVar1 = param_1 + 4;\n      lVar9 = 0;\n      local_98 = param_2;\n      local_90 = param_3;\nLAB_00285459:\n      local_90 = local_90 + -1;\n      puVar6 = local_98 + -4;\n      lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n      puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4;\n      lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n      if (lVar4 == -1) {\n        lVar4 = lVar9;\n      }\n      if (lVar5 == -1) {\n        lVar5 = lVar9;\n      }\n      iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff);\n      local_80 = puVar1;\n      puVar10 = local_98;\n      if (iVar3 < 0) {\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }\n      FUN_002e3180(param_1,puVar6);\nLAB_002855a0:\n      do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );\n    }\nLAB_002856b5:\n    puVar1 = param_1 + 2;\n    __dest = local_80 + -2;\n    local_58 = (ulong *)CONCAT71(local_58._1_7_,in_stack_00000008);\n    FUN_00285270(param_1,local_80,&local_58);\n    do {\n      local_78 = (ulong *)__dest[-2];\n      if (local_78 == __dest) {\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }\n      else {\n        local_68 = *__dest;\n      }\n      uVar2 = __dest[-1];\n      __dest[-2] = (ulong)__dest;\n      __dest[-1] = 0;\n      *(undefined1 *)__dest = 0;\n      if ((undefined8 *)*param_1 == puVar1) {\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }\n      else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }\n      param_1[1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      local_58 = &local_48;\n      if (local_78 == &local_68) {\n        uStack_40 = uStack_60;\n      }\n      else {\n        local_58 = local_78;\n      }\n      local_48 = local_68;\n      puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1));\n      local_68 = local_68 & 0xffffffffffffff00;\n      local_50 = uVar2;\n                    \n      FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58);\n      if (local_58 != &local_48) {\n        FUN_002dac70();\n      }\n      __dest = __dest + -4;\n    } while (0x20 < (long)puVar8);\n  }\n  return;\nLAB_00285680:\n  FUN_00285410(local_80,local_98,local_90);\n  if ((long)local_80 - (long)param_1 < 0x201) {\n    return;\n  }\n  local_98 = local_80;\n  if (local_90 == 0) goto LAB_002856b5;\n  goto LAB_00285459;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "ulong *__dest;" type_identifier (pointer_declarator "*__dest" * identifier) ;) (declaration "undefined8 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined1 in_stack_00000008;" type_identifier identifier ;) (declaration "undefined8 *local_98;" type_identifier (pointer_declarator "*local_98" * identifier) ;) (declaration "long local_90;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "ulong *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "ulong local_68;" type_identifier identifier ;) (declaration "ulong uStack_60;" type_identifier identifier ;) (declaration "ulong *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "ulong local_50;" type_identifier identifier ;) (declaration "ulong local_48;" type_identifier identifier ;) (declaration "ulong uStack_40;" type_identifier identifier ;) (if_statement "if (0x200 < (long)param_2 - (long)param_1) {\n    local_80 = param_2;\n    if (param_3 != 0) {\n      puVar1 = param_1 + 4;\n      lVar9 = 0;\n      local_98 = param_2;\n      local_90 = param_3;\nLAB_00285459:\n      local_90 = local_90 + -1;\n      puVar6 = local_98 + -4;\n      lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n      puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4;\n      lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n      if (lVar4 == -1) {\n        lVar4 = lVar9;\n      }\n      if (lVar5 == -1) {\n        lVar5 = lVar9;\n      }\n      iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff);\n      local_80 = puVar1;\n      puVar10 = local_98;\n      if (iVar3 < 0) {\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }\n      FUN_002e3180(param_1,puVar6);\nLAB_002855a0:\n      do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );\n    }\nLAB_002856b5:\n    puVar1 = param_1 + 2;\n    __dest = local_80 + -2;\n    local_58 = (ulong *)CONCAT71(local_58._1_7_,in_stack_00000008);\n    FUN_00285270(param_1,local_80,&local_58);\n    do {\n      local_78 = (ulong *)__dest[-2];\n      if (local_78 == __dest) {\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }\n      else {\n        local_68 = *__dest;\n      }\n      uVar2 = __dest[-1];\n      __dest[-2] = (ulong)__dest;\n      __dest[-1] = 0;\n      *(undefined1 *)__dest = 0;\n      if ((undefined8 *)*param_1 == puVar1) {\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }\n      else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }\n      param_1[1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      local_58 = &local_48;\n      if (local_78 == &local_68) {\n        uStack_40 = uStack_60;\n      }\n      else {\n        local_58 = local_78;\n      }\n      local_48 = local_68;\n      puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1));\n      local_68 = local_68 & 0xffffffffffffff00;\n      local_50 = uVar2;\n                    \n      FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58);\n      if (local_58 != &local_48) {\n        FUN_002dac70();\n      }\n      __dest = __dest + -4;\n    } while (0x20 < (long)puVar8);\n  }" if (parenthesized_expression "(0x200 < (long)param_2 - (long)param_1)" ( (binary_expression "0x200 < (long)param_2 - (long)param_1" number_literal < (binary_expression "(long)param_2 - (long)param_1" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) )) (compound_statement "{\n    local_80 = param_2;\n    if (param_3 != 0) {\n      puVar1 = param_1 + 4;\n      lVar9 = 0;\n      local_98 = param_2;\n      local_90 = param_3;\nLAB_00285459:\n      local_90 = local_90 + -1;\n      puVar6 = local_98 + -4;\n      lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n      puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4;\n      lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n      if (lVar4 == -1) {\n        lVar4 = lVar9;\n      }\n      if (lVar5 == -1) {\n        lVar5 = lVar9;\n      }\n      iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff);\n      local_80 = puVar1;\n      puVar10 = local_98;\n      if (iVar3 < 0) {\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }\n      FUN_002e3180(param_1,puVar6);\nLAB_002855a0:\n      do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );\n    }\nLAB_002856b5:\n    puVar1 = param_1 + 2;\n    __dest = local_80 + -2;\n    local_58 = (ulong *)CONCAT71(local_58._1_7_,in_stack_00000008);\n    FUN_00285270(param_1,local_80,&local_58);\n    do {\n      local_78 = (ulong *)__dest[-2];\n      if (local_78 == __dest) {\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }\n      else {\n        local_68 = *__dest;\n      }\n      uVar2 = __dest[-1];\n      __dest[-2] = (ulong)__dest;\n      __dest[-1] = 0;\n      *(undefined1 *)__dest = 0;\n      if ((undefined8 *)*param_1 == puVar1) {\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }\n      else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }\n      param_1[1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      local_58 = &local_48;\n      if (local_78 == &local_68) {\n        uStack_40 = uStack_60;\n      }\n      else {\n        local_58 = local_78;\n      }\n      local_48 = local_68;\n      puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1));\n      local_68 = local_68 & 0xffffffffffffff00;\n      local_50 = uVar2;\n                    \n      FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58);\n      if (local_58 != &local_48) {\n        FUN_002dac70();\n      }\n      __dest = __dest + -4;\n    } while (0x20 < (long)puVar8);\n  }" { (expression_statement "local_80 = param_2;" (assignment_expression "local_80 = param_2" identifier = identifier) ;) (if_statement "if (param_3 != 0) {\n      puVar1 = param_1 + 4;\n      lVar9 = 0;\n      local_98 = param_2;\n      local_90 = param_3;\nLAB_00285459:\n      local_90 = local_90 + -1;\n      puVar6 = local_98 + -4;\n      lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n      puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4;\n      lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n      if (lVar4 == -1) {\n        lVar4 = lVar9;\n      }\n      if (lVar5 == -1) {\n        lVar5 = lVar9;\n      }\n      iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff);\n      local_80 = puVar1;\n      puVar10 = local_98;\n      if (iVar3 < 0) {\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }\n      FUN_002e3180(param_1,puVar6);\nLAB_002855a0:\n      do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );\n    }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar1 = param_1 + 4;\n      lVar9 = 0;\n      local_98 = param_2;\n      local_90 = param_3;\nLAB_00285459:\n      local_90 = local_90 + -1;\n      puVar6 = local_98 + -4;\n      lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n      puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4;\n      lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n      if (lVar4 == -1) {\n        lVar4 = lVar9;\n      }\n      if (lVar5 == -1) {\n        lVar5 = lVar9;\n      }\n      iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff);\n      local_80 = puVar1;\n      puVar10 = local_98;\n      if (iVar3 < 0) {\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }\n      FUN_002e3180(param_1,puVar6);\nLAB_002855a0:\n      do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );\n    }" { (expression_statement "puVar1 = param_1 + 4;" (assignment_expression "puVar1 = param_1 + 4" identifier = (binary_expression "param_1 + 4" identifier + number_literal)) ;) (expression_statement "lVar9 = 0;" (assignment_expression "lVar9 = 0" identifier = number_literal) ;) (expression_statement "local_98 = param_2;" (assignment_expression "local_98 = param_2" identifier = identifier) ;) (expression_statement "local_90 = param_3;" (assignment_expression "local_90 = param_3" identifier = identifier) ;) (labeled_statement "LAB_00285459:\n      local_90 = local_90 + -1;" statement_identifier : (expression_statement "local_90 = local_90 + -1;" (assignment_expression "local_90 = local_90 + -1" identifier = (binary_expression "local_90 + -1" identifier + number_literal)) ;)) (expression_statement "puVar6 = local_98 + -4;" (assignment_expression "puVar6 = local_98 + -4" identifier = (binary_expression "local_98 + -4" identifier + number_literal)) ;) (expression_statement "lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);" (assignment_expression "lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff)" identifier (argument_list "(puVar1,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4;" (assignment_expression "puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4" identifier = (binary_expression "param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4" identifier + (binary_expression "(((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4" (parenthesized_expression "(((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1)" ( (binary_expression "((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1" (binary_expression "((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f)" (parenthesized_expression "((long)local_98 - (long)param_1 >> 5)" ( (binary_expression "(long)local_98 - (long)param_1 >> 5" (binary_expression "(long)local_98 - (long)param_1" (cast_expression "(long)local_98" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) )) - (parenthesized_expression "((long)local_98 - (long)param_1 >> 0x3f)" ( (binary_expression "(long)local_98 - (long)param_1 >> 0x3f" (binary_expression "(long)local_98 - (long)param_1" (cast_expression "(long)local_98" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) ))) >> number_literal) )) * number_literal))) ;) (expression_statement "lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);" (assignment_expression "lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff)" identifier (argument_list "(puVar7,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (lVar4 == -1) {\n        lVar4 = lVar9;\n      }" if (parenthesized_expression "(lVar4 == -1)" ( (binary_expression "lVar4 == -1" identifier == number_literal) )) (compound_statement "{\n        lVar4 = lVar9;\n      }" { (expression_statement "lVar4 = lVar9;" (assignment_expression "lVar4 = lVar9" identifier = identifier) ;) })) (if_statement "if (lVar5 == -1) {\n        lVar5 = lVar9;\n      }" if (parenthesized_expression "(lVar5 == -1)" ( (binary_expression "lVar5 == -1" identifier == number_literal) )) (compound_statement "{\n        lVar5 = lVar9;\n      }" { (expression_statement "lVar5 = lVar9;" (assignment_expression "lVar5 = lVar9" identifier = identifier) ;) })) (expression_statement "iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff);" (assignment_expression "iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff)" identifier = (call_expression "FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff)" identifier (argument_list "(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff)" ( identifier , identifier , number_literal , identifier , identifier , number_literal )))) ;) (expression_statement "local_80 = puVar1;" (assignment_expression "local_80 = puVar1" identifier = identifier) ;) (expression_statement "puVar10 = local_98;" (assignment_expression "puVar10 = local_98" identifier = identifier) ;) (if_statement "if (iVar3 < 0) {\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }" { (expression_statement "lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);" (assignment_expression "lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff)" identifier (argument_list "(puVar7,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);" (assignment_expression "lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff)" identifier (argument_list "(puVar6,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }" if (parenthesized_expression "(lVar4 == -1)" ( (binary_expression "lVar4 == -1" identifier == number_literal) )) (compound_statement "{\n          lVar4 = lVar9;\n        }" { (expression_statement "lVar4 = lVar9;" (assignment_expression "lVar4 = lVar9" identifier = identifier) ;) })) (if_statement "if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }" if (parenthesized_expression "(lVar5 == -1)" ( (binary_expression "lVar5 == -1" identifier == number_literal) )) (compound_statement "{\n          lVar5 = lVar9;\n        }" { (expression_statement "lVar5 = lVar9;" (assignment_expression "lVar5 = lVar9" identifier = identifier) ;) })) (expression_statement "iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);" (assignment_expression "iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" identifier = (call_expression "FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" identifier (argument_list "(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" ( identifier , identifier , number_literal , identifier , identifier , number_literal )))) ;) (if_statement "if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }" { (labeled_statement "LAB_002858b2:\n          FUN_002e3180(param_1,puVar7);" statement_identifier : (expression_statement "FUN_002e3180(param_1,puVar7);" (call_expression "FUN_002e3180(param_1,puVar7)" identifier (argument_list "(param_1,puVar7)" ( identifier , identifier ))) ;)) (goto_statement "goto LAB_002855a0;" goto statement_identifier ;) })) (expression_statement "lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);" (assignment_expression "lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff)" identifier (argument_list "(puVar1,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);" (assignment_expression "lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff)" identifier (argument_list "(puVar6,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }" if (parenthesized_expression "(lVar4 == -1)" ( (binary_expression "lVar4 == -1" identifier == number_literal) )) (compound_statement "{\n          lVar4 = lVar9;\n        }" { (expression_statement "lVar4 = lVar9;" (assignment_expression "lVar4 = lVar9" identifier = identifier) ;) })) (if_statement "if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }" if (parenthesized_expression "(lVar5 == -1)" ( (binary_expression "lVar5 == -1" identifier == number_literal) )) (compound_statement "{\n          lVar5 = lVar9;\n        }" { (expression_statement "lVar5 = lVar9;" (assignment_expression "lVar5 = lVar9" identifier = identifier) ;) })) (expression_statement "iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);" (assignment_expression "iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" identifier = (call_expression "FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" identifier (argument_list "(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" ( identifier , identifier , number_literal , identifier , identifier , number_literal )))) ;) (if_statement "if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }" if (parenthesized_expression "(-1 < iVar3)" ( (binary_expression "-1 < iVar3" number_literal < identifier) )) (compound_statement "{\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }" { (expression_statement "FUN_002e3180(param_1,puVar1);" (call_expression "FUN_002e3180(param_1,puVar1)" identifier (argument_list "(param_1,puVar1)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_002855a0;" goto statement_identifier ;) })) }) (else_clause "else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }" else (compound_statement "{\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }" { (expression_statement "lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);" (assignment_expression "lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff)" identifier (argument_list "(puVar1,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);" (assignment_expression "lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff)" identifier (argument_list "(puVar6,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }" if (parenthesized_expression "(lVar4 == -1)" ( (binary_expression "lVar4 == -1" identifier == number_literal) )) (compound_statement "{\n          lVar4 = lVar9;\n        }" { (expression_statement "lVar4 = lVar9;" (assignment_expression "lVar4 = lVar9" identifier = identifier) ;) })) (if_statement "if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }" if (parenthesized_expression "(lVar5 == -1)" ( (binary_expression "lVar5 == -1" identifier == number_literal) )) (compound_statement "{\n          lVar5 = lVar9;\n        }" { (expression_statement "lVar5 = lVar9;" (assignment_expression "lVar5 = lVar9" identifier = identifier) ;) })) (expression_statement "iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);" (assignment_expression "iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" identifier = (call_expression "FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" identifier (argument_list "(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" ( identifier , identifier , number_literal , identifier , identifier , number_literal )))) ;) (if_statement "if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }" { (expression_statement "FUN_002e3180(param_1,puVar1);" (call_expression "FUN_002e3180(param_1,puVar1)" identifier (argument_list "(param_1,puVar1)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_002855a0;" goto statement_identifier ;) })) (expression_statement "lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);" (assignment_expression "lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff)" identifier (argument_list "(puVar7,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);" (assignment_expression "lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff)" identifier (argument_list "(puVar6,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }" if (parenthesized_expression "(lVar4 == -1)" ( (binary_expression "lVar4 == -1" identifier == number_literal) )) (compound_statement "{\n          lVar4 = lVar9;\n        }" { (expression_statement "lVar4 = lVar9;" (assignment_expression "lVar4 = lVar9" identifier = identifier) ;) })) (if_statement "if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }" if (parenthesized_expression "(lVar5 == -1)" ( (binary_expression "lVar5 == -1" identifier == number_literal) )) (compound_statement "{\n          lVar5 = lVar9;\n        }" { (expression_statement "lVar5 = lVar9;" (assignment_expression "lVar5 = lVar9" identifier = identifier) ;) })) (expression_statement "iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);" (assignment_expression "iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" identifier = (call_expression "FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" identifier (argument_list "(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" ( identifier , identifier , number_literal , identifier , identifier , number_literal )))) ;) (if_statement "if (-1 < iVar3) goto LAB_002858b2;" if (parenthesized_expression "(-1 < iVar3)" ( (binary_expression "-1 < iVar3" number_literal < identifier) )) (goto_statement "goto LAB_002858b2;" goto statement_identifier ;)) }))) (expression_statement "FUN_002e3180(param_1,puVar6);" (call_expression "FUN_002e3180(param_1,puVar6)" identifier (argument_list "(param_1,puVar6)" ( identifier , identifier ))) ;) (labeled_statement "LAB_002855a0:\n      do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );" statement_identifier : (do_statement "do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );" do (compound_statement "{\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      }" { (expression_statement "lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);" (assignment_expression "lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(local_80,0x2f,0xffffffffffffffff)" identifier (argument_list "(local_80,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);" (assignment_expression "lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(param_1,0x2f,0xffffffffffffffff)" identifier (argument_list "(param_1,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }" if (parenthesized_expression "(lVar4 == -1)" ( (binary_expression "lVar4 == -1" identifier == number_literal) )) (compound_statement "{\n          lVar4 = lVar9;\n        }" { (expression_statement "lVar4 = lVar9;" (assignment_expression "lVar4 = lVar9" identifier = identifier) ;) })) (if_statement "if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }" if (parenthesized_expression "(lVar5 == -1)" ( (binary_expression "lVar5 == -1" identifier == number_literal) )) (compound_statement "{\n          lVar5 = lVar9;\n        }" { (expression_statement "lVar5 = lVar9;" (assignment_expression "lVar5 = lVar9" identifier = identifier) ;) })) (expression_statement "iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);" (assignment_expression "iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff)" identifier = (call_expression "FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff)" identifier (argument_list "(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff)" ( identifier , identifier , number_literal , identifier , identifier , number_literal )))) ;) (if_statement "if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }" if (parenthesized_expression "(-1 < iVar3)" ( (binary_expression "-1 < iVar3" number_literal < identifier) )) (compound_statement "{\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }" { (do_statement "do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);" do (compound_statement "{\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          }" { (expression_statement "puVar10 = puVar10 + -4;" (assignment_expression "puVar10 = puVar10 + -4" identifier = (binary_expression "puVar10 + -4" identifier + number_literal)) ;) (expression_statement "lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);" (assignment_expression "lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(param_1,0x2f,0xffffffffffffffff)" identifier (argument_list "(param_1,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);" (assignment_expression "lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff)" identifier = (call_expression "FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff)" identifier (argument_list "(puVar10,0x2f,0xffffffffffffffff)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }" if (parenthesized_expression "(lVar4 == -1)" ( (binary_expression "lVar4 == -1" identifier == number_literal) )) (compound_statement "{\n              lVar4 = lVar9;\n            }" { (expression_statement "lVar4 = lVar9;" (assignment_expression "lVar4 = lVar9" identifier = identifier) ;) })) (if_statement "if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }" if (parenthesized_expression "(lVar5 == -1)" ( (binary_expression "lVar5 == -1" identifier == number_literal) )) (compound_statement "{\n              lVar5 = lVar9;\n            }" { (expression_statement "lVar5 = lVar9;" (assignment_expression "lVar5 = lVar9" identifier = identifier) ;) })) (expression_statement "iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);" (assignment_expression "iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff)" identifier = (call_expression "FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff)" identifier (argument_list "(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff)" ( identifier , identifier , number_literal , identifier , identifier , number_literal )))) ;) }) while (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) ;) (if_statement "if (puVar10 <= local_80) goto LAB_00285680;" if (parenthesized_expression "(puVar10 <= local_80)" ( (binary_expression "puVar10 <= local_80" identifier <= identifier) )) (goto_statement "goto LAB_00285680;" goto statement_identifier ;)) (expression_statement "FUN_002e3180(local_80,puVar10);" (call_expression "FUN_002e3180(local_80,puVar10)" identifier (argument_list "(local_80,puVar10)" ( identifier , identifier ))) ;) })) (expression_statement "local_80 = local_80 + 4;" (assignment_expression "local_80 = local_80 + 4" identifier = (binary_expression "local_80 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (labeled_statement "LAB_002856b5:\n    puVar1 = param_1 + 2;" statement_identifier : (expression_statement "puVar1 = param_1 + 2;" (assignment_expression "puVar1 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;)) (expression_statement "__dest = local_80 + -2;" (assignment_expression "__dest = local_80 + -2" identifier = (binary_expression "local_80 + -2" identifier + number_literal)) ;) (expression_statement "local_58 = (ulong *)CONCAT71(local_58._1_7_,in_stack_00000008);" (assignment_expression "local_58 = (ulong *)CONCAT71(local_58._1_7_,in_stack_00000008)" identifier = (cast_expression "(ulong *)CONCAT71(local_58._1_7_,in_stack_00000008)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_58._1_7_,in_stack_00000008)" identifier (argument_list "(local_58._1_7_,in_stack_00000008)" ( (field_expression "local_58._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "FUN_00285270(param_1,local_80,&local_58);" (call_expression "FUN_00285270(param_1,local_80,&local_58)" identifier (argument_list "(param_1,local_80,&local_58)" ( identifier , identifier , (pointer_expression "&local_58" & identifier) ))) ;) (do_statement "do {\n      local_78 = (ulong *)__dest[-2];\n      if (local_78 == __dest) {\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }\n      else {\n        local_68 = *__dest;\n      }\n      uVar2 = __dest[-1];\n      __dest[-2] = (ulong)__dest;\n      __dest[-1] = 0;\n      *(undefined1 *)__dest = 0;\n      if ((undefined8 *)*param_1 == puVar1) {\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }\n      else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }\n      param_1[1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      local_58 = &local_48;\n      if (local_78 == &local_68) {\n        uStack_40 = uStack_60;\n      }\n      else {\n        local_58 = local_78;\n      }\n      local_48 = local_68;\n      puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1));\n      local_68 = local_68 & 0xffffffffffffff00;\n      local_50 = uVar2;\n                    \n      FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58);\n      if (local_58 != &local_48) {\n        FUN_002dac70();\n      }\n      __dest = __dest + -4;\n    } while (0x20 < (long)puVar8);" do (compound_statement "{\n      local_78 = (ulong *)__dest[-2];\n      if (local_78 == __dest) {\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }\n      else {\n        local_68 = *__dest;\n      }\n      uVar2 = __dest[-1];\n      __dest[-2] = (ulong)__dest;\n      __dest[-1] = 0;\n      *(undefined1 *)__dest = 0;\n      if ((undefined8 *)*param_1 == puVar1) {\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }\n      else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }\n      param_1[1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      local_58 = &local_48;\n      if (local_78 == &local_68) {\n        uStack_40 = uStack_60;\n      }\n      else {\n        local_58 = local_78;\n      }\n      local_48 = local_68;\n      puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1));\n      local_68 = local_68 & 0xffffffffffffff00;\n      local_50 = uVar2;\n                    \n      FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58);\n      if (local_58 != &local_48) {\n        FUN_002dac70();\n      }\n      __dest = __dest + -4;\n    }" { (expression_statement "local_78 = (ulong *)__dest[-2];" (assignment_expression "local_78 = (ulong *)__dest[-2]" identifier = (cast_expression "(ulong *)__dest[-2]" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "__dest[-2]" identifier [ number_literal ]))) ;) (if_statement "if (local_78 == __dest) {\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }\n      else {\n        local_68 = *__dest;\n      }" if (parenthesized_expression "(local_78 == __dest)" ( (binary_expression "local_78 == __dest" identifier == identifier) )) (compound_statement "{\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }" { (expression_statement "local_68 = *__dest;" (assignment_expression "local_68 = *__dest" identifier = (pointer_expression "*__dest" * identifier)) ;) (expression_statement "uStack_60 = __dest[1];" (assignment_expression "uStack_60 = __dest[1]" identifier = (subscript_expression "__dest[1]" identifier [ number_literal ])) ;) (expression_statement "local_78 = &local_68;" (assignment_expression "local_78 = &local_68" identifier = (pointer_expression "&local_68" & identifier)) ;) }) (else_clause "else {\n        local_68 = *__dest;\n      }" else (compound_statement "{\n        local_68 = *__dest;\n      }" { (expression_statement "local_68 = *__dest;" (assignment_expression "local_68 = *__dest" identifier = (pointer_expression "*__dest" * identifier)) ;) }))) (expression_statement "uVar2 = __dest[-1];" (assignment_expression "uVar2 = __dest[-1]" identifier = (subscript_expression "__dest[-1]" identifier [ number_literal ])) ;) (expression_statement "__dest[-2] = (ulong)__dest;" (assignment_expression "__dest[-2] = (ulong)__dest" (subscript_expression "__dest[-2]" identifier [ number_literal ]) = (cast_expression "(ulong)__dest" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "__dest[-1] = 0;" (assignment_expression "__dest[-1] = 0" (subscript_expression "__dest[-1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)__dest = 0;" (assignment_expression "*(undefined1 *)__dest = 0" (pointer_expression "*(undefined1 *)__dest" * (cast_expression "(undefined1 *)__dest" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (if_statement "if ((undefined8 *)*param_1 == puVar1) {\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }\n      else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }" if (parenthesized_expression "((undefined8 *)*param_1 == puVar1)" ( (binary_expression "(undefined8 *)*param_1 == puVar1" (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) == identifier) )) (compound_statement "{\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }" { (expression_statement "__n = param_1[1];" (assignment_expression "__n = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (compound_statement "{\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }" { (if_statement "if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }" if (parenthesized_expression "(__n == 1)" ( (binary_expression "__n == 1" identifier == number_literal) )) (compound_statement "{\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }" { (expression_statement "*(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);" (assignment_expression "*(undefined1 *)__dest = *(undefined1 *)(param_1 + 2)" (pointer_expression "*(undefined1 *)__dest" * (cast_expression "(undefined1 *)__dest" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined1 *)(param_1 + 2)" * (cast_expression "(undefined1 *)(param_1 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "__n = param_1[1];" (assignment_expression "__n = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) }) (else_clause "else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }" else (compound_statement "{\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }" { (expression_statement "memcpy(__dest,puVar1,__n);" (call_expression "memcpy(__dest,puVar1,__n)" identifier (argument_list "(__dest,puVar1,__n)" ( identifier , identifier , identifier ))) ;) (expression_statement "__n = param_1[1];" (assignment_expression "__n = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) }))) })) (expression_statement "__dest[-1] = __n;" (assignment_expression "__dest[-1] = __n" (subscript_expression "__dest[-1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(__dest[-2] + __n) = 0;" (assignment_expression "*(undefined1 *)(__dest[-2] + __n) = 0" (pointer_expression "*(undefined1 *)(__dest[-2] + __n)" * (cast_expression "(undefined1 *)(__dest[-2] + __n)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__dest[-2] + __n)" ( (binary_expression "__dest[-2] + __n" (subscript_expression "__dest[-2]" identifier [ number_literal ]) + identifier) )))) = number_literal) ;) (expression_statement "puVar6 = (undefined8 *)*param_1;" (assignment_expression "puVar6 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) }) (else_clause "else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }" else (compound_statement "{\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }" { (expression_statement "__dest[-2] = (ulong)*param_1;" (assignment_expression "__dest[-2] = (ulong)*param_1" (subscript_expression "__dest[-2]" identifier [ number_literal ]) = (binary_expression "(ulong)*param_1" (parenthesized_expression "(ulong)" ( identifier )) * identifier)) ;) (expression_statement "__dest[-1] = param_1[1];" (assignment_expression "__dest[-1] = param_1[1]" (subscript_expression "__dest[-1]" identifier [ number_literal ]) = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "*__dest = param_1[2];" (assignment_expression "*__dest = param_1[2]" (pointer_expression "*__dest" * identifier) = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "*param_1 = puVar1;" (assignment_expression "*param_1 = puVar1" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "puVar6 = puVar1;" (assignment_expression "puVar6 = puVar1" identifier = identifier) ;) }))) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)puVar6 = 0;" (assignment_expression "*(undefined1 *)puVar6 = 0" (pointer_expression "*(undefined1 *)puVar6" * (cast_expression "(undefined1 *)puVar6" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "local_58 = &local_48;" (assignment_expression "local_58 = &local_48" identifier = (pointer_expression "&local_48" & identifier)) ;) (if_statement "if (local_78 == &local_68) {\n        uStack_40 = uStack_60;\n      }\n      else {\n        local_58 = local_78;\n      }" if (parenthesized_expression "(local_78 == &local_68)" ( (binary_expression "local_78 == &local_68" identifier == (pointer_expression "&local_68" & identifier)) )) (compound_statement "{\n        uStack_40 = uStack_60;\n      }" { (expression_statement "uStack_40 = uStack_60;" (assignment_expression "uStack_40 = uStack_60" identifier = identifier) ;) }) (else_clause "else {\n        local_58 = local_78;\n      }" else (compound_statement "{\n        local_58 = local_78;\n      }" { (expression_statement "local_58 = local_78;" (assignment_expression "local_58 = local_78" identifier = identifier) ;) }))) (expression_statement "local_48 = local_68;" (assignment_expression "local_48 = local_68" identifier = identifier) ;) (expression_statement "puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1));" (assignment_expression "puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1))" identifier = (cast_expression "(undefined1 *)((long)__dest + (-0x10 - (long)param_1))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__dest + (-0x10 - (long)param_1))" ( (binary_expression "(long)__dest + (-0x10 - (long)param_1)" (cast_expression "(long)__dest" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-0x10 - (long)param_1)" ( (binary_expression "-0x10 - (long)param_1" number_literal - (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) )))) ;) (expression_statement "local_68 = local_68 & 0xffffffffffffff00;" (assignment_expression "local_68 = local_68 & 0xffffffffffffff00" identifier = (binary_expression "local_68 & 0xffffffffffffff00" identifier & number_literal)) ;) (expression_statement "local_50 = uVar2;" (assignment_expression "local_50 = uVar2" identifier = identifier) ;) (expression_statement "FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58);" (call_expression "FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58)" identifier (argument_list "(param_1,0,(long)puVar8 >> 5,&local_58)" ( identifier , number_literal , (binary_expression "(long)puVar8 >> 5" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) , (pointer_expression "&local_58" & identifier) ))) ;) (if_statement "if (local_58 != &local_48) {\n        FUN_002dac70();\n      }" if (parenthesized_expression "(local_58 != &local_48)" ( (binary_expression "local_58 != &local_48" identifier != (pointer_expression "&local_48" & identifier)) )) (compound_statement "{\n        FUN_002dac70();\n      }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "__dest = __dest + -4;" (assignment_expression "__dest = __dest + -4" identifier = (binary_expression "__dest + -4" identifier + number_literal)) ;) }) while (parenthesized_expression "(0x20 < (long)puVar8)" ( (binary_expression "0x20 < (long)puVar8" number_literal < (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) ;) })) (return_statement "return;" return ;) (labeled_statement "LAB_00285680:\n  FUN_00285410(local_80,local_98,local_90);" statement_identifier : (expression_statement "FUN_00285410(local_80,local_98,local_90);" (call_expression "FUN_00285410(local_80,local_98,local_90)" identifier (argument_list "(local_80,local_98,local_90)" ( identifier , identifier , identifier ))) ;)) (if_statement "if ((long)local_80 - (long)param_1 < 0x201) {\n    return;\n  }" if (parenthesized_expression "((long)local_80 - (long)param_1 < 0x201)" ( (binary_expression "(long)local_80 - (long)param_1 < 0x201" (binary_expression "(long)local_80 - (long)param_1" (cast_expression "(long)local_80" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) < number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "local_98 = local_80;" (assignment_expression "local_98 = local_80" identifier = identifier) ;) (if_statement "if (local_90 == 0) goto LAB_002856b5;" if (parenthesized_expression "(local_90 == 0)" ( (binary_expression "local_90 == 0" identifier == number_literal) )) (goto_statement "goto LAB_002856b5;" goto statement_identifier ;)) (goto_statement "goto LAB_00285459;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) >> LIT) )) - (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) >> LIT) ))) >> LIT) )) * LIT))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , IDENT , IDENT , LIT )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( BOOL )) ;)) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (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 ( (field_expression IDENT . field_identifier) , IDENT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) ))) ;) (do_statement do (compound_statement { (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 = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_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 *)) ) (parenthesized_expression ( (binary_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 = (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 (subscript_expression IDENT [ LIT ]) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) >> LIT) , (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression & IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )) ;) })) (return_statement return ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) < LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })))
(function_definition "void FUN_00285410(undefined8 *param_1,undefined8 *param_2,long param_3)\n\n{\n  undefined8 *puVar1;\n  ulong uVar2;\n  int iVar3;\n  long lVar4;\n  long lVar5;\n  undefined8 *puVar6;\n  size_t __n;\n  ulong *__dest;\n  undefined8 *puVar7;\n  undefined1 *puVar8;\n  long lVar9;\n  undefined8 *puVar10;\n  undefined1 in_stack_00000008;\n  undefined8 *local_98;\n  long local_90;\n  undefined8 *local_80;\n  ulong *local_78;\n  ulong local_68;\n  ulong uStack_60;\n  ulong *local_58;\n  ulong local_50;\n  ulong local_48;\n  ulong uStack_40;\n  \n  if (0x200 < (long)param_2 - (long)param_1) {\n    local_80 = param_2;\n    if (param_3 != 0) {\n      puVar1 = param_1 + 4;\n      lVar9 = 0;\n      local_98 = param_2;\n      local_90 = param_3;\nLAB_00285459:\n      local_90 = local_90 + -1;\n      puVar6 = local_98 + -4;\n      lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n      puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4;\n      lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n      if (lVar4 == -1) {\n        lVar4 = lVar9;\n      }\n      if (lVar5 == -1) {\n        lVar5 = lVar9;\n      }\n      iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff);\n      local_80 = puVar1;\n      puVar10 = local_98;\n      if (iVar3 < 0) {\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }\n      FUN_002e3180(param_1,puVar6);\nLAB_002855a0:\n      do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );\n    }\nLAB_002856b5:\n    puVar1 = param_1 + 2;\n    __dest = local_80 + -2;\n    local_58 = (ulong *)CONCAT71(local_58._1_7_,in_stack_00000008);\n    FUN_00285270(param_1,local_80,&local_58);\n    do {\n      local_78 = (ulong *)__dest[-2];\n      if (local_78 == __dest) {\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }\n      else {\n        local_68 = *__dest;\n      }\n      uVar2 = __dest[-1];\n      __dest[-2] = (ulong)__dest;\n      __dest[-1] = 0;\n      *(undefined1 *)__dest = 0;\n      if ((undefined8 *)*param_1 == puVar1) {\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }\n      else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }\n      param_1[1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      local_58 = &local_48;\n      if (local_78 == &local_68) {\n        uStack_40 = uStack_60;\n      }\n      else {\n        local_58 = local_78;\n      }\n      local_48 = local_68;\n      puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1));\n      local_68 = local_68 & 0xffffffffffffff00;\n      local_50 = uVar2;\n                    \n      FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58);\n      if (local_58 != &local_48) {\n        FUN_002dac70();\n      }\n      __dest = __dest + -4;\n    } while (0x20 < (long)puVar8);\n  }\n  return;\nLAB_00285680:\n  FUN_00285410(local_80,local_98,local_90);\n  if ((long)local_80 - (long)param_1 < 0x201) {\n    return;\n  }\n  local_98 = local_80;\n  if (local_90 == 0) goto LAB_002856b5;\n  goto LAB_00285459;\n}" (primitive_type "void") (function_declarator "FUN_00285410(undefined8 *param_1,undefined8 *param_2,long param_3)" (identifier "FUN_00285410") (parameter_list "(undefined8 *param_1,undefined8 *param_2,long param_3)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined8 *param_2" (type_identifier "undefined8") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) () ")"))) (compound_statement "{\n  undefined8 *puVar1;\n  ulong uVar2;\n  int iVar3;\n  long lVar4;\n  long lVar5;\n  undefined8 *puVar6;\n  size_t __n;\n  ulong *__dest;\n  undefined8 *puVar7;\n  undefined1 *puVar8;\n  long lVar9;\n  undefined8 *puVar10;\n  undefined1 in_stack_00000008;\n  undefined8 *local_98;\n  long local_90;\n  undefined8 *local_80;\n  ulong *local_78;\n  ulong local_68;\n  ulong uStack_60;\n  ulong *local_58;\n  ulong local_50;\n  ulong local_48;\n  ulong uStack_40;\n  \n  if (0x200 < (long)param_2 - (long)param_1) {\n    local_80 = param_2;\n    if (param_3 != 0) {\n      puVar1 = param_1 + 4;\n      lVar9 = 0;\n      local_98 = param_2;\n      local_90 = param_3;\nLAB_00285459:\n      local_90 = local_90 + -1;\n      puVar6 = local_98 + -4;\n      lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n      puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4;\n      lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n      if (lVar4 == -1) {\n        lVar4 = lVar9;\n      }\n      if (lVar5 == -1) {\n        lVar5 = lVar9;\n      }\n      iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff);\n      local_80 = puVar1;\n      puVar10 = local_98;\n      if (iVar3 < 0) {\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }\n      FUN_002e3180(param_1,puVar6);\nLAB_002855a0:\n      do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );\n    }\nLAB_002856b5:\n    puVar1 = param_1 + 2;\n    __dest = local_80 + -2;\n    local_58 = (ulong *)CONCAT71(local_58._1_7_,in_stack_00000008);\n    FUN_00285270(param_1,local_80,&local_58);\n    do {\n      local_78 = (ulong *)__dest[-2];\n      if (local_78 == __dest) {\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }\n      else {\n        local_68 = *__dest;\n      }\n      uVar2 = __dest[-1];\n      __dest[-2] = (ulong)__dest;\n      __dest[-1] = 0;\n      *(undefined1 *)__dest = 0;\n      if ((undefined8 *)*param_1 == puVar1) {\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }\n      else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }\n      param_1[1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      local_58 = &local_48;\n      if (local_78 == &local_68) {\n        uStack_40 = uStack_60;\n      }\n      else {\n        local_58 = local_78;\n      }\n      local_48 = local_68;\n      puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1));\n      local_68 = local_68 & 0xffffffffffffff00;\n      local_50 = uVar2;\n                    \n      FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58);\n      if (local_58 != &local_48) {\n        FUN_002dac70();\n      }\n      __dest = __dest + -4;\n    } while (0x20 < (long)puVar8);\n  }\n  return;\nLAB_00285680:\n  FUN_00285410(local_80,local_98,local_90);\n  if ((long)local_80 - (long)param_1 < 0x201) {\n    return;\n  }\n  local_98 = local_80;\n  if (local_90 == 0) goto LAB_002856b5;\n  goto LAB_00285459;\n}" ({ "{") (declaration "undefined8 *puVar1;" (type_identifier "undefined8") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "ulong uVar2;" (type_identifier "ulong") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "undefined8 *puVar6;" (type_identifier "undefined8") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "ulong *__dest;" (type_identifier "ulong") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "undefined8 *puVar7;" (type_identifier "undefined8") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "undefined1 *puVar8;" (type_identifier "undefined1") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "long lVar9;" (sized_type_specifier "long" (long "long")) (identifier "lVar9") (; ";")) (declaration "undefined8 *puVar10;" (type_identifier "undefined8") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "undefined1 in_stack_00000008;" (type_identifier "undefined1") (identifier "in_stack_00000008") (; ";")) (declaration "undefined8 *local_98;" (type_identifier "undefined8") (pointer_declarator "*local_98" (* "*") (identifier "local_98")) (; ";")) (declaration "long local_90;" (sized_type_specifier "long" (long "long")) (identifier "local_90") (; ";")) (declaration "undefined8 *local_80;" (type_identifier "undefined8") (pointer_declarator "*local_80" (* "*") (identifier "local_80")) (; ";")) (declaration "ulong *local_78;" (type_identifier "ulong") (pointer_declarator "*local_78" (* "*") (identifier "local_78")) (; ";")) (declaration "ulong local_68;" (type_identifier "ulong") (identifier "local_68") (; ";")) (declaration "ulong uStack_60;" (type_identifier "ulong") (identifier "uStack_60") (; ";")) (declaration "ulong *local_58;" (type_identifier "ulong") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "ulong local_50;" (type_identifier "ulong") (identifier "local_50") (; ";")) (declaration "ulong local_48;" (type_identifier "ulong") (identifier "local_48") (; ";")) (declaration "ulong uStack_40;" (type_identifier "ulong") (identifier "uStack_40") (; ";")) (if_statement "if (0x200 < (long)param_2 - (long)param_1) {\n    local_80 = param_2;\n    if (param_3 != 0) {\n      puVar1 = param_1 + 4;\n      lVar9 = 0;\n      local_98 = param_2;\n      local_90 = param_3;\nLAB_00285459:\n      local_90 = local_90 + -1;\n      puVar6 = local_98 + -4;\n      lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n      puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4;\n      lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n      if (lVar4 == -1) {\n        lVar4 = lVar9;\n      }\n      if (lVar5 == -1) {\n        lVar5 = lVar9;\n      }\n      iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff);\n      local_80 = puVar1;\n      puVar10 = local_98;\n      if (iVar3 < 0) {\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }\n      FUN_002e3180(param_1,puVar6);\nLAB_002855a0:\n      do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );\n    }\nLAB_002856b5:\n    puVar1 = param_1 + 2;\n    __dest = local_80 + -2;\n    local_58 = (ulong *)CONCAT71(local_58._1_7_,in_stack_00000008);\n    FUN_00285270(param_1,local_80,&local_58);\n    do {\n      local_78 = (ulong *)__dest[-2];\n      if (local_78 == __dest) {\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }\n      else {\n        local_68 = *__dest;\n      }\n      uVar2 = __dest[-1];\n      __dest[-2] = (ulong)__dest;\n      __dest[-1] = 0;\n      *(undefined1 *)__dest = 0;\n      if ((undefined8 *)*param_1 == puVar1) {\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }\n      else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }\n      param_1[1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      local_58 = &local_48;\n      if (local_78 == &local_68) {\n        uStack_40 = uStack_60;\n      }\n      else {\n        local_58 = local_78;\n      }\n      local_48 = local_68;\n      puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1));\n      local_68 = local_68 & 0xffffffffffffff00;\n      local_50 = uVar2;\n                    \n      FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58);\n      if (local_58 != &local_48) {\n        FUN_002dac70();\n      }\n      __dest = __dest + -4;\n    } while (0x20 < (long)puVar8);\n  }" (if "if") (parenthesized_expression "(0x200 < (long)param_2 - (long)param_1)" (( "(") (binary_expression "0x200 < (long)param_2 - (long)param_1" (number_literal "0x200") (< "<") (binary_expression "(long)param_2 - (long)param_1" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (- "-") (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")))) () ")")) (compound_statement "{\n    local_80 = param_2;\n    if (param_3 != 0) {\n      puVar1 = param_1 + 4;\n      lVar9 = 0;\n      local_98 = param_2;\n      local_90 = param_3;\nLAB_00285459:\n      local_90 = local_90 + -1;\n      puVar6 = local_98 + -4;\n      lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n      puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4;\n      lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n      if (lVar4 == -1) {\n        lVar4 = lVar9;\n      }\n      if (lVar5 == -1) {\n        lVar5 = lVar9;\n      }\n      iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff);\n      local_80 = puVar1;\n      puVar10 = local_98;\n      if (iVar3 < 0) {\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }\n      FUN_002e3180(param_1,puVar6);\nLAB_002855a0:\n      do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );\n    }\nLAB_002856b5:\n    puVar1 = param_1 + 2;\n    __dest = local_80 + -2;\n    local_58 = (ulong *)CONCAT71(local_58._1_7_,in_stack_00000008);\n    FUN_00285270(param_1,local_80,&local_58);\n    do {\n      local_78 = (ulong *)__dest[-2];\n      if (local_78 == __dest) {\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }\n      else {\n        local_68 = *__dest;\n      }\n      uVar2 = __dest[-1];\n      __dest[-2] = (ulong)__dest;\n      __dest[-1] = 0;\n      *(undefined1 *)__dest = 0;\n      if ((undefined8 *)*param_1 == puVar1) {\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }\n      else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }\n      param_1[1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      local_58 = &local_48;\n      if (local_78 == &local_68) {\n        uStack_40 = uStack_60;\n      }\n      else {\n        local_58 = local_78;\n      }\n      local_48 = local_68;\n      puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1));\n      local_68 = local_68 & 0xffffffffffffff00;\n      local_50 = uVar2;\n                    \n      FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58);\n      if (local_58 != &local_48) {\n        FUN_002dac70();\n      }\n      __dest = __dest + -4;\n    } while (0x20 < (long)puVar8);\n  }" ({ "{") (expression_statement "local_80 = param_2;" (assignment_expression "local_80 = param_2" (identifier "local_80") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (param_3 != 0) {\n      puVar1 = param_1 + 4;\n      lVar9 = 0;\n      local_98 = param_2;\n      local_90 = param_3;\nLAB_00285459:\n      local_90 = local_90 + -1;\n      puVar6 = local_98 + -4;\n      lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n      puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4;\n      lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n      if (lVar4 == -1) {\n        lVar4 = lVar9;\n      }\n      if (lVar5 == -1) {\n        lVar5 = lVar9;\n      }\n      iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff);\n      local_80 = puVar1;\n      puVar10 = local_98;\n      if (iVar3 < 0) {\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }\n      FUN_002e3180(param_1,puVar6);\nLAB_002855a0:\n      do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );\n    }" (if "if") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      puVar1 = param_1 + 4;\n      lVar9 = 0;\n      local_98 = param_2;\n      local_90 = param_3;\nLAB_00285459:\n      local_90 = local_90 + -1;\n      puVar6 = local_98 + -4;\n      lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n      puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4;\n      lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n      if (lVar4 == -1) {\n        lVar4 = lVar9;\n      }\n      if (lVar5 == -1) {\n        lVar5 = lVar9;\n      }\n      iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff);\n      local_80 = puVar1;\n      puVar10 = local_98;\n      if (iVar3 < 0) {\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }\n      FUN_002e3180(param_1,puVar6);\nLAB_002855a0:\n      do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );\n    }" ({ "{") (expression_statement "puVar1 = param_1 + 4;" (assignment_expression "puVar1 = param_1 + 4" (identifier "puVar1") (= "=") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "lVar9 = 0;" (assignment_expression "lVar9 = 0" (identifier "lVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_98 = param_2;" (assignment_expression "local_98 = param_2" (identifier "local_98") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_90 = param_3;" (assignment_expression "local_90 = param_3" (identifier "local_90") (= "=") (identifier "param_3")) (; ";")) (labeled_statement "LAB_00285459:\n      local_90 = local_90 + -1;" (statement_identifier "LAB_00285459") (: ":") (expression_statement "local_90 = local_90 + -1;" (assignment_expression "local_90 = local_90 + -1" (identifier "local_90") (= "=") (binary_expression "local_90 + -1" (identifier "local_90") (+ "+") (number_literal "-1"))) (; ";"))) (expression_statement "puVar6 = local_98 + -4;" (assignment_expression "puVar6 = local_98 + -4" (identifier "puVar6") (= "=") (binary_expression "local_98 + -4" (identifier "local_98") (+ "+") (number_literal "-4"))) (; ";")) (expression_statement "lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);" (assignment_expression "lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff)" (identifier "lVar4") (= "=") (call_expression "FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff)" (identifier "FUN_002e34f0") (argument_list "(puVar1,0x2f,0xffffffffffffffff)" (( "(") (identifier "puVar1") (, ",") (number_literal "0x2f") (, ",") (number_literal "0xffffffffffffffff") () ")")))) (; ";")) (expression_statement "puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4;" (assignment_expression "puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4" (identifier "puVar7") (= "=") (binary_expression "param_1 + (((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4" (identifier "param_1") (+ "+") (binary_expression "(((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4" (parenthesized_expression "(((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1)" (( "(") (binary_expression "((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1" (binary_expression "((long)local_98 - (long)param_1 >> 5) -\n                          ((long)local_98 - (long)param_1 >> 0x3f)" (parenthesized_expression "((long)local_98 - (long)param_1 >> 5)" (( "(") (binary_expression "(long)local_98 - (long)param_1 >> 5" (binary_expression "(long)local_98 - (long)param_1" (cast_expression "(long)local_98" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_98")) (- "-") (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1"))) (>> ">>") (number_literal "5")) () ")")) (- "-") (parenthesized_expression "((long)local_98 - (long)param_1 >> 0x3f)" (( "(") (binary_expression "(long)local_98 - (long)param_1 >> 0x3f" (binary_expression "(long)local_98 - (long)param_1" (cast_expression "(long)local_98" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_98")) (- "-") (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1"))) (>> ">>") (number_literal "0x3f")) () ")"))) (>> ">>") (number_literal "1")) () ")")) (* "*") (number_literal "4")))) (; ";")) (expression_statement "lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);" (assignment_expression "lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff)" (identifier "lVar5") (= "=") (call_expression "FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff)" (identifier "FUN_002e34f0") (argument_list "(puVar7,0x2f,0xffffffffffffffff)" (( "(") (identifier "puVar7") (, ",") (number_literal "0x2f") (, ",") (number_literal "0xffffffffffffffff") () ")")))) (; ";")) (if_statement "if (lVar4 == -1) {\n        lVar4 = lVar9;\n      }" (if "if") (parenthesized_expression "(lVar4 == -1)" (( "(") (binary_expression "lVar4 == -1" (identifier "lVar4") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        lVar4 = lVar9;\n      }" ({ "{") (expression_statement "lVar4 = lVar9;" (assignment_expression "lVar4 = lVar9" (identifier "lVar4") (= "=") (identifier "lVar9")) (; ";")) (} "}"))) (if_statement "if (lVar5 == -1) {\n        lVar5 = lVar9;\n      }" (if "if") (parenthesized_expression "(lVar5 == -1)" (( "(") (binary_expression "lVar5 == -1" (identifier "lVar5") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        lVar5 = lVar9;\n      }" ({ "{") (expression_statement "lVar5 = lVar9;" (assignment_expression "lVar5 = lVar9" (identifier "lVar5") (= "=") (identifier "lVar9")) (; ";")) (} "}"))) (expression_statement "iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff);" (assignment_expression "iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff)" (identifier "iVar3") (= "=") (call_expression "FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff)" (identifier "FUN_002e39a0") (argument_list "(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff)" (( "(") (identifier "puVar1") (, ",") (identifier "lVar4") (, ",") (number_literal "0xffffffffffffffff") (, ",") (identifier "puVar7") (, ",") (identifier "lVar5") (, ",") (number_literal "0xffffffffffffffff") () ")")))) (; ";")) (expression_statement "local_80 = puVar1;" (assignment_expression "local_80 = puVar1" (identifier "local_80") (= "=") (identifier "puVar1")) (; ";")) (expression_statement "puVar10 = local_98;" (assignment_expression "puVar10 = local_98" (identifier "puVar10") (= "=") (identifier "local_98")) (; ";")) (if_statement "if (iVar3 < 0) {\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }\n      else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }" (if "if") (parenthesized_expression "(iVar3 < 0)" (( "(") (binary_expression "iVar3 < 0" (identifier "iVar3") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n      }" ({ "{") (expression_statement "lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);" (assignment_expression "lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff)" (identifier "lVar4") (= "=") (call_expression "FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff)" (identifier "FUN_002e34f0") (argument_list "(puVar7,0x2f,0xffffffffffffffff)" (( "(") (identifier "puVar7") (, ",") (number_literal "0x2f") (, ",") (number_literal "0xffffffffffffffff") () ")")))) (; ";")) (expression_statement "lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);" (assignment_expression "lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff)" (identifier "lVar5") (= "=") (call_expression "FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff)" (identifier "FUN_002e34f0") (argument_list "(puVar6,0x2f,0xffffffffffffffff)" (( "(") (identifier "puVar6") (, ",") (number_literal "0x2f") (, ",") (number_literal "0xffffffffffffffff") () ")")))) (; ";")) (if_statement "if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }" (if "if") (parenthesized_expression "(lVar4 == -1)" (( "(") (binary_expression "lVar4 == -1" (identifier "lVar4") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n          lVar4 = lVar9;\n        }" ({ "{") (expression_statement "lVar4 = lVar9;" (assignment_expression "lVar4 = lVar9" (identifier "lVar4") (= "=") (identifier "lVar9")) (; ";")) (} "}"))) (if_statement "if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }" (if "if") (parenthesized_expression "(lVar5 == -1)" (( "(") (binary_expression "lVar5 == -1" (identifier "lVar5") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n          lVar5 = lVar9;\n        }" ({ "{") (expression_statement "lVar5 = lVar9;" (assignment_expression "lVar5 = lVar9" (identifier "lVar5") (= "=") (identifier "lVar9")) (; ";")) (} "}"))) (expression_statement "iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);" (assignment_expression "iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" (identifier "iVar3") (= "=") (call_expression "FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" (identifier "FUN_002e39a0") (argument_list "(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" (( "(") (identifier "puVar7") (, ",") (identifier "lVar4") (, ",") (number_literal "0xffffffffffffffff") (, ",") (identifier "puVar6") (, ",") (identifier "lVar5") (, ",") (number_literal "0xffffffffffffffff") () ")")))) (; ";")) (if_statement "if (iVar3 < 0) {\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }" (if "if") (parenthesized_expression "(iVar3 < 0)" (( "(") (binary_expression "iVar3 < 0" (identifier "iVar3") (< "<") (number_literal "0")) () ")")) (compound_statement "{\nLAB_002858b2:\n          FUN_002e3180(param_1,puVar7);\n          goto LAB_002855a0;\n        }" ({ "{") (labeled_statement "LAB_002858b2:\n          FUN_002e3180(param_1,puVar7);" (statement_identifier "LAB_002858b2") (: ":") (expression_statement "FUN_002e3180(param_1,puVar7);" (call_expression "FUN_002e3180(param_1,puVar7)" (identifier "FUN_002e3180") (argument_list "(param_1,puVar7)" (( "(") (identifier "param_1") (, ",") (identifier "puVar7") () ")"))) (; ";"))) (goto_statement "goto LAB_002855a0;" (goto "goto") (statement_identifier "LAB_002855a0") (; ";")) (} "}"))) (expression_statement "lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);" (assignment_expression "lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff)" (identifier "lVar4") (= "=") (call_expression "FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff)" (identifier "FUN_002e34f0") (argument_list "(puVar1,0x2f,0xffffffffffffffff)" (( "(") (identifier "puVar1") (, ",") (number_literal "0x2f") (, ",") (number_literal "0xffffffffffffffff") () ")")))) (; ";")) (expression_statement "lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);" (assignment_expression "lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff)" (identifier "lVar5") (= "=") (call_expression "FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff)" (identifier "FUN_002e34f0") (argument_list "(puVar6,0x2f,0xffffffffffffffff)" (( "(") (identifier "puVar6") (, ",") (number_literal "0x2f") (, ",") (number_literal "0xffffffffffffffff") () ")")))) (; ";")) (if_statement "if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }" (if "if") (parenthesized_expression "(lVar4 == -1)" (( "(") (binary_expression "lVar4 == -1" (identifier "lVar4") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n          lVar4 = lVar9;\n        }" ({ "{") (expression_statement "lVar4 = lVar9;" (assignment_expression "lVar4 = lVar9" (identifier "lVar4") (= "=") (identifier "lVar9")) (; ";")) (} "}"))) (if_statement "if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }" (if "if") (parenthesized_expression "(lVar5 == -1)" (( "(") (binary_expression "lVar5 == -1" (identifier "lVar5") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n          lVar5 = lVar9;\n        }" ({ "{") (expression_statement "lVar5 = lVar9;" (assignment_expression "lVar5 = lVar9" (identifier "lVar5") (= "=") (identifier "lVar9")) (; ";")) (} "}"))) (expression_statement "iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);" (assignment_expression "iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" (identifier "iVar3") (= "=") (call_expression "FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" (identifier "FUN_002e39a0") (argument_list "(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" (( "(") (identifier "puVar1") (, ",") (identifier "lVar4") (, ",") (number_literal "0xffffffffffffffff") (, ",") (identifier "puVar6") (, ",") (identifier "lVar5") (, ",") (number_literal "0xffffffffffffffff") () ")")))) (; ";")) (if_statement "if (-1 < iVar3) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }" (if "if") (parenthesized_expression "(-1 < iVar3)" (( "(") (binary_expression "-1 < iVar3" (number_literal "-1") (< "<") (identifier "iVar3")) () ")")) (compound_statement "{\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }" ({ "{") (expression_statement "FUN_002e3180(param_1,puVar1);" (call_expression "FUN_002e3180(param_1,puVar1)" (identifier "FUN_002e3180") (argument_list "(param_1,puVar1)" (( "(") (identifier "param_1") (, ",") (identifier "puVar1") () ")"))) (; ";")) (goto_statement "goto LAB_002855a0;" (goto "goto") (statement_identifier "LAB_002855a0") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }" (else "else") (compound_statement "{\n        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }\n        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) goto LAB_002858b2;\n      }" ({ "{") (expression_statement "lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);" (assignment_expression "lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff)" (identifier "lVar4") (= "=") (call_expression "FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff)" (identifier "FUN_002e34f0") (argument_list "(puVar1,0x2f,0xffffffffffffffff)" (( "(") (identifier "puVar1") (, ",") (number_literal "0x2f") (, ",") (number_literal "0xffffffffffffffff") () ")")))) (; ";")) (expression_statement "lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);" (assignment_expression "lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff)" (identifier "lVar5") (= "=") (call_expression "FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff)" (identifier "FUN_002e34f0") (argument_list "(puVar6,0x2f,0xffffffffffffffff)" (( "(") (identifier "puVar6") (, ",") (number_literal "0x2f") (, ",") (number_literal "0xffffffffffffffff") () ")")))) (; ";")) (if_statement "if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }" (if "if") (parenthesized_expression "(lVar4 == -1)" (( "(") (binary_expression "lVar4 == -1" (identifier "lVar4") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n          lVar4 = lVar9;\n        }" ({ "{") (expression_statement "lVar4 = lVar9;" (assignment_expression "lVar4 = lVar9" (identifier "lVar4") (= "=") (identifier "lVar9")) (; ";")) (} "}"))) (if_statement "if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }" (if "if") (parenthesized_expression "(lVar5 == -1)" (( "(") (binary_expression "lVar5 == -1" (identifier "lVar5") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n          lVar5 = lVar9;\n        }" ({ "{") (expression_statement "lVar5 = lVar9;" (assignment_expression "lVar5 = lVar9" (identifier "lVar5") (= "=") (identifier "lVar9")) (; ";")) (} "}"))) (expression_statement "iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);" (assignment_expression "iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" (identifier "iVar3") (= "=") (call_expression "FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" (identifier "FUN_002e39a0") (argument_list "(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" (( "(") (identifier "puVar1") (, ",") (identifier "lVar4") (, ",") (number_literal "0xffffffffffffffff") (, ",") (identifier "puVar6") (, ",") (identifier "lVar5") (, ",") (number_literal "0xffffffffffffffff") () ")")))) (; ";")) (if_statement "if (iVar3 < 0) {\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }" (if "if") (parenthesized_expression "(iVar3 < 0)" (( "(") (binary_expression "iVar3 < 0" (identifier "iVar3") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_002e3180(param_1,puVar1);\n          goto LAB_002855a0;\n        }" ({ "{") (expression_statement "FUN_002e3180(param_1,puVar1);" (call_expression "FUN_002e3180(param_1,puVar1)" (identifier "FUN_002e3180") (argument_list "(param_1,puVar1)" (( "(") (identifier "param_1") (, ",") (identifier "puVar1") () ")"))) (; ";")) (goto_statement "goto LAB_002855a0;" (goto "goto") (statement_identifier "LAB_002855a0") (; ";")) (} "}"))) (expression_statement "lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);" (assignment_expression "lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff)" (identifier "lVar4") (= "=") (call_expression "FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff)" (identifier "FUN_002e34f0") (argument_list "(puVar7,0x2f,0xffffffffffffffff)" (( "(") (identifier "puVar7") (, ",") (number_literal "0x2f") (, ",") (number_literal "0xffffffffffffffff") () ")")))) (; ";")) (expression_statement "lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);" (assignment_expression "lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff)" (identifier "lVar5") (= "=") (call_expression "FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff)" (identifier "FUN_002e34f0") (argument_list "(puVar6,0x2f,0xffffffffffffffff)" (( "(") (identifier "puVar6") (, ",") (number_literal "0x2f") (, ",") (number_literal "0xffffffffffffffff") () ")")))) (; ";")) (if_statement "if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }" (if "if") (parenthesized_expression "(lVar4 == -1)" (( "(") (binary_expression "lVar4 == -1" (identifier "lVar4") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n          lVar4 = lVar9;\n        }" ({ "{") (expression_statement "lVar4 = lVar9;" (assignment_expression "lVar4 = lVar9" (identifier "lVar4") (= "=") (identifier "lVar9")) (; ";")) (} "}"))) (if_statement "if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }" (if "if") (parenthesized_expression "(lVar5 == -1)" (( "(") (binary_expression "lVar5 == -1" (identifier "lVar5") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n          lVar5 = lVar9;\n        }" ({ "{") (expression_statement "lVar5 = lVar9;" (assignment_expression "lVar5 = lVar9" (identifier "lVar5") (= "=") (identifier "lVar9")) (; ";")) (} "}"))) (expression_statement "iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);" (assignment_expression "iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" (identifier "iVar3") (= "=") (call_expression "FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" (identifier "FUN_002e39a0") (argument_list "(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff)" (( "(") (identifier "puVar7") (, ",") (identifier "lVar4") (, ",") (number_literal "0xffffffffffffffff") (, ",") (identifier "puVar6") (, ",") (identifier "lVar5") (, ",") (number_literal "0xffffffffffffffff") () ")")))) (; ";")) (if_statement "if (-1 < iVar3) goto LAB_002858b2;" (if "if") (parenthesized_expression "(-1 < iVar3)" (( "(") (binary_expression "-1 < iVar3" (number_literal "-1") (< "<") (identifier "iVar3")) () ")")) (goto_statement "goto LAB_002858b2;" (goto "goto") (statement_identifier "LAB_002858b2") (; ";"))) (} "}")))) (expression_statement "FUN_002e3180(param_1,puVar6);" (call_expression "FUN_002e3180(param_1,puVar6)" (identifier "FUN_002e3180") (argument_list "(param_1,puVar6)" (( "(") (identifier "param_1") (, ",") (identifier "puVar6") () ")"))) (; ";")) (labeled_statement "LAB_002855a0:\n      do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );" (statement_identifier "LAB_002855a0") (: ":") (do_statement "do {\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      } while( true );" (do "do") (compound_statement "{\n        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);\n        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n        if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }\n        if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }\n        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);\n        if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }\n        local_80 = local_80 + 4;\n      }" ({ "{") (expression_statement "lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);" (assignment_expression "lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff)" (identifier "lVar4") (= "=") (call_expression "FUN_002e34f0(local_80,0x2f,0xffffffffffffffff)" (identifier "FUN_002e34f0") (argument_list "(local_80,0x2f,0xffffffffffffffff)" (( "(") (identifier "local_80") (, ",") (number_literal "0x2f") (, ",") (number_literal "0xffffffffffffffff") () ")")))) (; ";")) (expression_statement "lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);" (assignment_expression "lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff)" (identifier "lVar5") (= "=") (call_expression "FUN_002e34f0(param_1,0x2f,0xffffffffffffffff)" (identifier "FUN_002e34f0") (argument_list "(param_1,0x2f,0xffffffffffffffff)" (( "(") (identifier "param_1") (, ",") (number_literal "0x2f") (, ",") (number_literal "0xffffffffffffffff") () ")")))) (; ";")) (if_statement "if (lVar4 == -1) {\n          lVar4 = lVar9;\n        }" (if "if") (parenthesized_expression "(lVar4 == -1)" (( "(") (binary_expression "lVar4 == -1" (identifier "lVar4") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n          lVar4 = lVar9;\n        }" ({ "{") (expression_statement "lVar4 = lVar9;" (assignment_expression "lVar4 = lVar9" (identifier "lVar4") (= "=") (identifier "lVar9")) (; ";")) (} "}"))) (if_statement "if (lVar5 == -1) {\n          lVar5 = lVar9;\n        }" (if "if") (parenthesized_expression "(lVar5 == -1)" (( "(") (binary_expression "lVar5 == -1" (identifier "lVar5") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n          lVar5 = lVar9;\n        }" ({ "{") (expression_statement "lVar5 = lVar9;" (assignment_expression "lVar5 = lVar9" (identifier "lVar5") (= "=") (identifier "lVar9")) (; ";")) (} "}"))) (expression_statement "iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);" (assignment_expression "iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff)" (identifier "iVar3") (= "=") (call_expression "FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff)" (identifier "FUN_002e39a0") (argument_list "(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff)" (( "(") (identifier "local_80") (, ",") (identifier "lVar4") (, ",") (number_literal "0xffffffffffffffff") (, ",") (identifier "param_1") (, ",") (identifier "lVar5") (, ",") (number_literal "0xffffffffffffffff") () ")")))) (; ";")) (if_statement "if (-1 < iVar3) {\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }" (if "if") (parenthesized_expression "(-1 < iVar3)" (( "(") (binary_expression "-1 < iVar3" (number_literal "-1") (< "<") (identifier "iVar3")) () ")")) (compound_statement "{\n          do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);\n          if (puVar10 <= local_80) goto LAB_00285680;\n          FUN_002e3180(local_80,puVar10);\n        }" ({ "{") (do_statement "do {\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          } while (iVar3 < 0);" (do "do") (compound_statement "{\n            puVar10 = puVar10 + -4;\n            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);\n            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);\n            if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }\n            if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }\n            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);\n          }" ({ "{") (expression_statement "puVar10 = puVar10 + -4;" (assignment_expression "puVar10 = puVar10 + -4" (identifier "puVar10") (= "=") (binary_expression "puVar10 + -4" (identifier "puVar10") (+ "+") (number_literal "-4"))) (; ";")) (expression_statement "lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);" (assignment_expression "lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff)" (identifier "lVar4") (= "=") (call_expression "FUN_002e34f0(param_1,0x2f,0xffffffffffffffff)" (identifier "FUN_002e34f0") (argument_list "(param_1,0x2f,0xffffffffffffffff)" (( "(") (identifier "param_1") (, ",") (number_literal "0x2f") (, ",") (number_literal "0xffffffffffffffff") () ")")))) (; ";")) (expression_statement "lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);" (assignment_expression "lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff)" (identifier "lVar5") (= "=") (call_expression "FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff)" (identifier "FUN_002e34f0") (argument_list "(puVar10,0x2f,0xffffffffffffffff)" (( "(") (identifier "puVar10") (, ",") (number_literal "0x2f") (, ",") (number_literal "0xffffffffffffffff") () ")")))) (; ";")) (if_statement "if (lVar4 == -1) {\n              lVar4 = lVar9;\n            }" (if "if") (parenthesized_expression "(lVar4 == -1)" (( "(") (binary_expression "lVar4 == -1" (identifier "lVar4") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n              lVar4 = lVar9;\n            }" ({ "{") (expression_statement "lVar4 = lVar9;" (assignment_expression "lVar4 = lVar9" (identifier "lVar4") (= "=") (identifier "lVar9")) (; ";")) (} "}"))) (if_statement "if (lVar5 == -1) {\n              lVar5 = lVar9;\n            }" (if "if") (parenthesized_expression "(lVar5 == -1)" (( "(") (binary_expression "lVar5 == -1" (identifier "lVar5") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n              lVar5 = lVar9;\n            }" ({ "{") (expression_statement "lVar5 = lVar9;" (assignment_expression "lVar5 = lVar9" (identifier "lVar5") (= "=") (identifier "lVar9")) (; ";")) (} "}"))) (expression_statement "iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);" (assignment_expression "iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff)" (identifier "iVar3") (= "=") (call_expression "FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff)" (identifier "FUN_002e39a0") (argument_list "(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff)" (( "(") (identifier "param_1") (, ",") (identifier "lVar4") (, ",") (number_literal "0xffffffffffffffff") (, ",") (identifier "puVar10") (, ",") (identifier "lVar5") (, ",") (number_literal "0xffffffffffffffff") () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar3 < 0)" (( "(") (binary_expression "iVar3 < 0" (identifier "iVar3") (< "<") (number_literal "0")) () ")")) (; ";")) (if_statement "if (puVar10 <= local_80) goto LAB_00285680;" (if "if") (parenthesized_expression "(puVar10 <= local_80)" (( "(") (binary_expression "puVar10 <= local_80" (identifier "puVar10") (<= "<=") (identifier "local_80")) () ")")) (goto_statement "goto LAB_00285680;" (goto "goto") (statement_identifier "LAB_00285680") (; ";"))) (expression_statement "FUN_002e3180(local_80,puVar10);" (call_expression "FUN_002e3180(local_80,puVar10)" (identifier "FUN_002e3180") (argument_list "(local_80,puVar10)" (( "(") (identifier "local_80") (, ",") (identifier "puVar10") () ")"))) (; ";")) (} "}"))) (expression_statement "local_80 = local_80 + 4;" (assignment_expression "local_80 = local_80 + 4" (identifier "local_80") (= "=") (binary_expression "local_80 + 4" (identifier "local_80") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (} "}"))) (labeled_statement "LAB_002856b5:\n    puVar1 = param_1 + 2;" (statement_identifier "LAB_002856b5") (: ":") (expression_statement "puVar1 = param_1 + 2;" (assignment_expression "puVar1 = param_1 + 2" (identifier "puVar1") (= "=") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2"))) (; ";"))) (expression_statement "__dest = local_80 + -2;" (assignment_expression "__dest = local_80 + -2" (identifier "__dest") (= "=") (binary_expression "local_80 + -2" (identifier "local_80") (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "local_58 = (ulong *)CONCAT71(local_58._1_7_,in_stack_00000008);" (assignment_expression "local_58 = (ulong *)CONCAT71(local_58._1_7_,in_stack_00000008)" (identifier "local_58") (= "=") (cast_expression "(ulong *)CONCAT71(local_58._1_7_,in_stack_00000008)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "CONCAT71(local_58._1_7_,in_stack_00000008)" (identifier "CONCAT71") (argument_list "(local_58._1_7_,in_stack_00000008)" (( "(") (field_expression "local_58._1_7_" (identifier "local_58") (. ".") (field_identifier "_1_7_")) (, ",") (identifier "in_stack_00000008") () ")"))))) (; ";")) (expression_statement "FUN_00285270(param_1,local_80,&local_58);" (call_expression "FUN_00285270(param_1,local_80,&local_58)" (identifier "FUN_00285270") (argument_list "(param_1,local_80,&local_58)" (( "(") (identifier "param_1") (, ",") (identifier "local_80") (, ",") (pointer_expression "&local_58" (& "&") (identifier "local_58")) () ")"))) (; ";")) (do_statement "do {\n      local_78 = (ulong *)__dest[-2];\n      if (local_78 == __dest) {\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }\n      else {\n        local_68 = *__dest;\n      }\n      uVar2 = __dest[-1];\n      __dest[-2] = (ulong)__dest;\n      __dest[-1] = 0;\n      *(undefined1 *)__dest = 0;\n      if ((undefined8 *)*param_1 == puVar1) {\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }\n      else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }\n      param_1[1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      local_58 = &local_48;\n      if (local_78 == &local_68) {\n        uStack_40 = uStack_60;\n      }\n      else {\n        local_58 = local_78;\n      }\n      local_48 = local_68;\n      puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1));\n      local_68 = local_68 & 0xffffffffffffff00;\n      local_50 = uVar2;\n                    \n      FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58);\n      if (local_58 != &local_48) {\n        FUN_002dac70();\n      }\n      __dest = __dest + -4;\n    } while (0x20 < (long)puVar8);" (do "do") (compound_statement "{\n      local_78 = (ulong *)__dest[-2];\n      if (local_78 == __dest) {\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }\n      else {\n        local_68 = *__dest;\n      }\n      uVar2 = __dest[-1];\n      __dest[-2] = (ulong)__dest;\n      __dest[-1] = 0;\n      *(undefined1 *)__dest = 0;\n      if ((undefined8 *)*param_1 == puVar1) {\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }\n      else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }\n      param_1[1] = 0;\n      *(undefined1 *)puVar6 = 0;\n      local_58 = &local_48;\n      if (local_78 == &local_68) {\n        uStack_40 = uStack_60;\n      }\n      else {\n        local_58 = local_78;\n      }\n      local_48 = local_68;\n      puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1));\n      local_68 = local_68 & 0xffffffffffffff00;\n      local_50 = uVar2;\n                    \n      FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58);\n      if (local_58 != &local_48) {\n        FUN_002dac70();\n      }\n      __dest = __dest + -4;\n    }" ({ "{") (expression_statement "local_78 = (ulong *)__dest[-2];" (assignment_expression "local_78 = (ulong *)__dest[-2]" (identifier "local_78") (= "=") (cast_expression "(ulong *)__dest[-2]" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "__dest[-2]" (identifier "__dest") ([ "[") (number_literal "-2") (] "]")))) (; ";")) (if_statement "if (local_78 == __dest) {\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }\n      else {\n        local_68 = *__dest;\n      }" (if "if") (parenthesized_expression "(local_78 == __dest)" (( "(") (binary_expression "local_78 == __dest" (identifier "local_78") (== "==") (identifier "__dest")) () ")")) (compound_statement "{\n        local_68 = *__dest;\n        uStack_60 = __dest[1];\n        local_78 = &local_68;\n      }" ({ "{") (expression_statement "local_68 = *__dest;" (assignment_expression "local_68 = *__dest" (identifier "local_68") (= "=") (pointer_expression "*__dest" (* "*") (identifier "__dest"))) (; ";")) (expression_statement "uStack_60 = __dest[1];" (assignment_expression "uStack_60 = __dest[1]" (identifier "uStack_60") (= "=") (subscript_expression "__dest[1]" (identifier "__dest") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_78 = &local_68;" (assignment_expression "local_78 = &local_68" (identifier "local_78") (= "=") (pointer_expression "&local_68" (& "&") (identifier "local_68"))) (; ";")) (} "}")) (else_clause "else {\n        local_68 = *__dest;\n      }" (else "else") (compound_statement "{\n        local_68 = *__dest;\n      }" ({ "{") (expression_statement "local_68 = *__dest;" (assignment_expression "local_68 = *__dest" (identifier "local_68") (= "=") (pointer_expression "*__dest" (* "*") (identifier "__dest"))) (; ";")) (} "}")))) (expression_statement "uVar2 = __dest[-1];" (assignment_expression "uVar2 = __dest[-1]" (identifier "uVar2") (= "=") (subscript_expression "__dest[-1]" (identifier "__dest") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "__dest[-2] = (ulong)__dest;" (assignment_expression "__dest[-2] = (ulong)__dest" (subscript_expression "__dest[-2]" (identifier "__dest") ([ "[") (number_literal "-2") (] "]")) (= "=") (cast_expression "(ulong)__dest" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "__dest"))) (; ";")) (expression_statement "__dest[-1] = 0;" (assignment_expression "__dest[-1] = 0" (subscript_expression "__dest[-1]" (identifier "__dest") ([ "[") (number_literal "-1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)__dest = 0;" (assignment_expression "*(undefined1 *)__dest = 0" (pointer_expression "*(undefined1 *)__dest" (* "*") (cast_expression "(undefined1 *)__dest" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "__dest"))) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((undefined8 *)*param_1 == puVar1) {\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }\n      else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }" (if "if") (parenthesized_expression "((undefined8 *)*param_1 == puVar1)" (( "(") (binary_expression "(undefined8 *)*param_1 == puVar1" (cast_expression "(undefined8 *)*param_1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (== "==") (identifier "puVar1")) () ")")) (compound_statement "{\n        __n = param_1[1];\n        if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }\n        __dest[-1] = __n;\n        *(undefined1 *)(__dest[-2] + __n) = 0;\n        puVar6 = (undefined8 *)*param_1;\n      }" ({ "{") (expression_statement "__n = param_1[1];" (assignment_expression "__n = param_1[1]" (identifier "__n") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (__n != 0) {\n          if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[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 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }\n        }" ({ "{") (if_statement "if (__n == 1) {\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }\n          else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }" (if "if") (parenthesized_expression "(__n == 1)" (( "(") (binary_expression "__n == 1" (identifier "__n") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);\n            __n = param_1[1];\n          }" ({ "{") (expression_statement "*(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);" (assignment_expression "*(undefined1 *)__dest = *(undefined1 *)(param_1 + 2)" (pointer_expression "*(undefined1 *)__dest" (* "*") (cast_expression "(undefined1 *)__dest" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "__dest"))) (= "=") (pointer_expression "*(undefined1 *)(param_1 + 2)" (* "*") (cast_expression "(undefined1 *)(param_1 + 2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "__n = param_1[1];" (assignment_expression "__n = param_1[1]" (identifier "__n") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }" (else "else") (compound_statement "{\n            memcpy(__dest,puVar1,__n);\n            __n = param_1[1];\n          }" ({ "{") (expression_statement "memcpy(__dest,puVar1,__n);" (call_expression "memcpy(__dest,puVar1,__n)" (identifier "memcpy") (argument_list "(__dest,puVar1,__n)" (( "(") (identifier "__dest") (, ",") (identifier "puVar1") (, ",") (identifier "__n") () ")"))) (; ";")) (expression_statement "__n = param_1[1];" (assignment_expression "__n = param_1[1]" (identifier "__n") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "__dest[-1] = __n;" (assignment_expression "__dest[-1] = __n" (subscript_expression "__dest[-1]" (identifier "__dest") ([ "[") (number_literal "-1") (] "]")) (= "=") (identifier "__n")) (; ";")) (expression_statement "*(undefined1 *)(__dest[-2] + __n) = 0;" (assignment_expression "*(undefined1 *)(__dest[-2] + __n) = 0" (pointer_expression "*(undefined1 *)(__dest[-2] + __n)" (* "*") (cast_expression "(undefined1 *)(__dest[-2] + __n)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(__dest[-2] + __n)" (( "(") (binary_expression "__dest[-2] + __n" (subscript_expression "__dest[-2]" (identifier "__dest") ([ "[") (number_literal "-2") (] "]")) (+ "+") (identifier "__n")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6 = (undefined8 *)*param_1;" (assignment_expression "puVar6 = (undefined8 *)*param_1" (identifier "puVar6") (= "=") (cast_expression "(undefined8 *)*param_1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (} "}")) (else_clause "else {\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }" (else "else") (compound_statement "{\n        __dest[-2] = (ulong)*param_1;\n        __dest[-1] = param_1[1];\n        *__dest = param_1[2];\n        *param_1 = puVar1;\n        puVar6 = puVar1;\n      }" ({ "{") (expression_statement "__dest[-2] = (ulong)*param_1;" (assignment_expression "__dest[-2] = (ulong)*param_1" (subscript_expression "__dest[-2]" (identifier "__dest") ([ "[") (number_literal "-2") (] "]")) (= "=") (binary_expression "(ulong)*param_1" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (identifier "param_1"))) (; ";")) (expression_statement "__dest[-1] = param_1[1];" (assignment_expression "__dest[-1] = param_1[1]" (subscript_expression "__dest[-1]" (identifier "__dest") ([ "[") (number_literal "-1") (] "]")) (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*__dest = param_1[2];" (assignment_expression "*__dest = param_1[2]" (pointer_expression "*__dest" (* "*") (identifier "__dest")) (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*param_1 = puVar1;" (assignment_expression "*param_1 = puVar1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "puVar1")) (; ";")) (expression_statement "puVar6 = puVar1;" (assignment_expression "puVar6 = puVar1" (identifier "puVar6") (= "=") (identifier "puVar1")) (; ";")) (} "}")))) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)puVar6 = 0;" (assignment_expression "*(undefined1 *)puVar6 = 0" (pointer_expression "*(undefined1 *)puVar6" (* "*") (cast_expression "(undefined1 *)puVar6" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar6"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_58 = &local_48;" (assignment_expression "local_58 = &local_48" (identifier "local_58") (= "=") (pointer_expression "&local_48" (& "&") (identifier "local_48"))) (; ";")) (if_statement "if (local_78 == &local_68) {\n        uStack_40 = uStack_60;\n      }\n      else {\n        local_58 = local_78;\n      }" (if "if") (parenthesized_expression "(local_78 == &local_68)" (( "(") (binary_expression "local_78 == &local_68" (identifier "local_78") (== "==") (pointer_expression "&local_68" (& "&") (identifier "local_68"))) () ")")) (compound_statement "{\n        uStack_40 = uStack_60;\n      }" ({ "{") (expression_statement "uStack_40 = uStack_60;" (assignment_expression "uStack_40 = uStack_60" (identifier "uStack_40") (= "=") (identifier "uStack_60")) (; ";")) (} "}")) (else_clause "else {\n        local_58 = local_78;\n      }" (else "else") (compound_statement "{\n        local_58 = local_78;\n      }" ({ "{") (expression_statement "local_58 = local_78;" (assignment_expression "local_58 = local_78" (identifier "local_58") (= "=") (identifier "local_78")) (; ";")) (} "}")))) (expression_statement "local_48 = local_68;" (assignment_expression "local_48 = local_68" (identifier "local_48") (= "=") (identifier "local_68")) (; ";")) (expression_statement "puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1));" (assignment_expression "puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1))" (identifier "puVar8") (= "=") (cast_expression "(undefined1 *)((long)__dest + (-0x10 - (long)param_1))" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)__dest + (-0x10 - (long)param_1))" (( "(") (binary_expression "(long)__dest + (-0x10 - (long)param_1)" (cast_expression "(long)__dest" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__dest")) (+ "+") (parenthesized_expression "(-0x10 - (long)param_1)" (( "(") (binary_expression "-0x10 - (long)param_1" (number_literal "-0x10") (- "-") (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1"))) () ")"))) () ")")))) (; ";")) (expression_statement "local_68 = local_68 & 0xffffffffffffff00;" (assignment_expression "local_68 = local_68 & 0xffffffffffffff00" (identifier "local_68") (= "=") (binary_expression "local_68 & 0xffffffffffffff00" (identifier "local_68") (& "&") (number_literal "0xffffffffffffff00"))) (; ";")) (expression_statement "local_50 = uVar2;" (assignment_expression "local_50 = uVar2" (identifier "local_50") (= "=") (identifier "uVar2")) (; ";")) (expression_statement "FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58);" (call_expression "FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58)" (identifier "FUN_00284c60") (argument_list "(param_1,0,(long)puVar8 >> 5,&local_58)" (( "(") (identifier "param_1") (, ",") (number_literal "0") (, ",") (binary_expression "(long)puVar8 >> 5" (cast_expression "(long)puVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar8")) (>> ">>") (number_literal "5")) (, ",") (pointer_expression "&local_58" (& "&") (identifier "local_58")) () ")"))) (; ";")) (if_statement "if (local_58 != &local_48) {\n        FUN_002dac70();\n      }" (if "if") (parenthesized_expression "(local_58 != &local_48)" (( "(") (binary_expression "local_58 != &local_48" (identifier "local_58") (!= "!=") (pointer_expression "&local_48" (& "&") (identifier "local_48"))) () ")")) (compound_statement "{\n        FUN_002dac70();\n      }" ({ "{") (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" (identifier "FUN_002dac70") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "__dest = __dest + -4;" (assignment_expression "__dest = __dest + -4" (identifier "__dest") (= "=") (binary_expression "__dest + -4" (identifier "__dest") (+ "+") (number_literal "-4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0x20 < (long)puVar8)" (( "(") (binary_expression "0x20 < (long)puVar8" (number_literal "0x20") (< "<") (cast_expression "(long)puVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar8"))) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (labeled_statement "LAB_00285680:\n  FUN_00285410(local_80,local_98,local_90);" (statement_identifier "LAB_00285680") (: ":") (expression_statement "FUN_00285410(local_80,local_98,local_90);" (call_expression "FUN_00285410(local_80,local_98,local_90)" (identifier "FUN_00285410") (argument_list "(local_80,local_98,local_90)" (( "(") (identifier "local_80") (, ",") (identifier "local_98") (, ",") (identifier "local_90") () ")"))) (; ";"))) (if_statement "if ((long)local_80 - (long)param_1 < 0x201) {\n    return;\n  }" (if "if") (parenthesized_expression "((long)local_80 - (long)param_1 < 0x201)" (( "(") (binary_expression "(long)local_80 - (long)param_1 < 0x201" (binary_expression "(long)local_80 - (long)param_1" (cast_expression "(long)local_80" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_80")) (- "-") (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1"))) (< "<") (number_literal "0x201")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "local_98 = local_80;" (assignment_expression "local_98 = local_80" (identifier "local_98") (= "=") (identifier "local_80")) (; ";")) (if_statement "if (local_90 == 0) goto LAB_002856b5;" (if "if") (parenthesized_expression "(local_90 == 0)" (( "(") (binary_expression "local_90 == 0" (identifier "local_90") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_002856b5;" (goto "goto") (statement_identifier "LAB_002856b5") (; ";"))) (goto_statement "goto LAB_00285459;" (goto "goto") (statement_identifier "LAB_00285459") (; ";")) (} "}")))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */
/* DWARF original name:
   __introsort_loop<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,
   std::vector<std::__cxx11::basic_string<char> > >, long int,
   __gnu_cxx::__ops::_Iter_comp_iter<gold::Odr_violation_compare> > */

void std::
     __introsort_loop<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*,_std::vector<std::__cxx11::basic_string<char>var_3>var_3>,_long_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::var_21>var_3>
               (__normal_iterator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::var_1<char>var_3>*,_std::vector<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::var_1<char>var_3>,_std::var_1<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::var_1<char>var_3>var_3>var_3>var_3>
                __first,basic_string<char,_std::char_traits<char>,_std::var_1<char>var_3> *__last,
               long var_10)

{
  basic_string<char,_std::char_traits<char>,_std::var_1<char>var_3> *this;
  basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *this_00;
  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_1 var_23;
  int var_17;
  type_2 var_14;
  type_2 var_15;
  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_7;
  size_t var_24;
  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_8;
  basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *this_01;
  char *pcVar7;
  type_2 uVar8;
  basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *var_19;
  type_3 in_stack_00000008;
  basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *var_12;
  long var_11;
  __normal_iterator<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>*,_std::vector<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>var_3>
  var_9;
  type_4 __value;
  type_5 *var_22;
  type_5 local_50;
  type_5 local_48;
  type_6 uStack_40;
  
  if (0x200 < (long)__last - (long)__first._M_current) {
    var_9._M_current = __last;
    if (var_10 != 0) {
      this = __first._M_current + 1;
      uVar8 = 0;
      var_12 = __last;
      var_11 = var_10;
LAB_00285459:
      var_11 = var_11 + -1;
      this_00 = var_12 + -1;
      var_14 = type_7::var_13((type_7 *)this,'/',0xffffffffffffffff);
      this_01 = __first._M_current +
                (((long)var_12 - (long)__first._M_current >> 5) -
                 ((long)var_12 - (long)__first._M_current >> 0x3f) >> 1);
      var_15 = type_7::var_13((type_7 *)this_01,'/',0xffffffffffffffff);
      if (var_14 == 0xffffffffffffffff) {
        var_14 = uVar8;
      }
      if (var_15 == 0xffffffffffffffff) {
        var_15 = uVar8;
      }
      var_17 = type_7::var_16((type_7 *)this,var_14,0xffffffffffffffff,(type_7 *)this_01,var_15,
                              0xffffffffffffffff);
      var_9._M_current = this;
      var_19 = var_12;
      if (var_17 < 0) {
        var_14 = type_7::var_13((type_7 *)this_01,'/',0xffffffffffffffff);
        var_15 = type_7::var_13((type_7 *)this_00,'/',0xffffffffffffffff);
        if (var_14 == 0xffffffffffffffff) {
          var_14 = uVar8;
        }
        if (var_15 == 0xffffffffffffffff) {
          var_15 = uVar8;
        }
        var_17 = type_7::var_16((type_7 *)this_01,var_14,0xffffffffffffffff,(type_7 *)this_00,var_15,
                                0xffffffffffffffff);
        if (var_17 < 0) {
LAB_002858b2:
          string::var_18((type_7 *)__first._M_current,(type_7 *)this_01);
          goto LAB_002855a0;
        }
        var_14 = type_7::var_13((type_7 *)this,'/',0xffffffffffffffff);
        var_15 = type_7::var_13((type_7 *)this_00,'/',0xffffffffffffffff);
        if (var_14 == 0xffffffffffffffff) {
          var_14 = uVar8;
        }
        if (var_15 == 0xffffffffffffffff) {
          var_15 = uVar8;
        }
        var_17 = type_7::var_16((type_7 *)this,var_14,0xffffffffffffffff,(type_7 *)this_00,var_15,
                                0xffffffffffffffff);
        if (-1 < var_17) {
          string::var_18((type_7 *)__first._M_current,(type_7 *)this);
          goto LAB_002855a0;
        }
      }
      else {
        var_14 = type_7::var_13((type_7 *)this,'/',0xffffffffffffffff);
        var_15 = type_7::var_13((type_7 *)this_00,'/',0xffffffffffffffff);
        if (var_14 == 0xffffffffffffffff) {
          var_14 = uVar8;
        }
        if (var_15 == 0xffffffffffffffff) {
          var_15 = uVar8;
        }
        var_17 = type_7::var_16((type_7 *)this,var_14,0xffffffffffffffff,(type_7 *)this_00,var_15,
                                0xffffffffffffffff);
        if (var_17 < 0) {
          string::var_18((type_7 *)__first._M_current,(type_7 *)this);
          goto LAB_002855a0;
        }
        var_14 = type_7::var_13((type_7 *)this_01,'/',0xffffffffffffffff);
        var_15 = type_7::var_13((type_7 *)this_00,'/',0xffffffffffffffff);
        if (var_14 == 0xffffffffffffffff) {
          var_14 = uVar8;
        }
        if (var_15 == 0xffffffffffffffff) {
          var_15 = uVar8;
        }
        var_17 = type_7::var_16((type_7 *)this_01,var_14,0xffffffffffffffff,(type_7 *)this_00,var_15,
                                0xffffffffffffffff);
        if (-1 < var_17) goto LAB_002858b2;
      }
      string::var_18((type_7 *)__first._M_current,(type_7 *)this_00);
LAB_002855a0:
      do {
        var_14 = type_7::var_13((type_7 *)var_9._M_current,'/',0xffffffffffffffff);
        var_15 = type_7::var_13((type_7 *)__first._M_current,'/',0xffffffffffffffff);
        if (var_14 == 0xffffffffffffffff) {
          var_14 = uVar8;
        }
        if (var_15 == 0xffffffffffffffff) {
          var_15 = uVar8;
        }
        var_17 = type_7::var_16((type_7 *)var_9._M_current,var_14,0xffffffffffffffff,
                                (type_7 *)__first._M_current,var_15,0xffffffffffffffff);
        if (-1 < var_17) {
          do {
            var_19 = var_19 + -1;
            var_14 = type_7::var_13((type_7 *)__first._M_current,'/',0xffffffffffffffff);
            var_15 = type_7::var_13((type_7 *)var_19,'/',0xffffffffffffffff);
            if (var_14 == 0xffffffffffffffff) {
              var_14 = uVar8;
            }
            if (var_15 == 0xffffffffffffffff) {
              var_15 = uVar8;
            }
            var_17 = type_7::var_16((type_7 *)__first._M_current,var_14,0xffffffffffffffff,
                                    (type_7 *)var_19,var_15,0xffffffffffffffff);
          } while (var_17 < 0);
          if (var_19 <= var_9._M_current) goto LAB_00285680;
          string::var_18((type_7 *)var_9._M_current,(type_7 *)var_19);
        }
        var_9._M_current = var_9._M_current + 1;
      } while( true );
    }
LAB_002856b5:
    var_5 = &(__first._M_current)->field_2;
    var_6 = &__value.field_2;
    var_8 = &var_9._M_current[-1].field_2;
    var_22 = (type_5 *)var_20(var_22._1_7_,in_stack_00000008);
    __make_heap<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<var_2>*,_std::vector<std::__cxx11::basic_string<var_2>var_3>var_3>,___gnu_cxx::__ops::_Iter_comp_iter<gold::var_21>var_3>
              (__first,var_9,(_Iter_comp_iter<gold::var_21> *)&var_22);
    do {
      __value._M_dataplus._M_p =
           (((basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *)(var_8 + -1))->
           _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
           *)__value._M_dataplus._M_p == var_8) {
        __value.field_2._M_allocated_capacity = var_8->_M_allocated_capacity;
        __value.field_2._8_8_ = *(type_5 *)((long)var_8 + 8);
        __value._M_dataplus._M_p = (type_1)var_6;
      }
      else {
        __value.field_2._M_allocated_capacity = var_8->_M_allocated_capacity;
      }
      __value._M_string_length = *(type_5 *)((long)var_8 + -8);
      (((basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *)(var_8 + -1))->
      _M_dataplus)._M_p = (type_1)var_8;
      *(type_5 *)((long)var_8 + -8) = 0;
      var_8->_M_local_buf[0] = '\0';
      var_23 = ((__first._M_current)->_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_23 == var_5) {
        var_24 = (__first._M_current)->_M_string_length;
        if (var_24 != 0) {
          if (var_24 == 1) {
            var_8->_M_local_buf[0] = ((__first._M_current)->field_2)._M_local_buf[0];
            var_24 = (__first._M_current)->_M_string_length;
          }
          else {
            var_25(var_8,var_5,var_24);
            var_24 = (__first._M_current)->_M_string_length;
          }
        }
        var_23 = (((basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *)
                  (var_8 + -1))->_M_dataplus)._M_p;
        *(size_t *)((long)var_8 + -8) = var_24;
        var_23[var_24] = '\0';
        var_7 = (anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
                  *)((__first._M_current)->_M_dataplus)._M_p;
      }
      else {
        (((basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> *)(var_8 + -1))->
        _M_dataplus)._M_p = var_23;
        *(type_5 *)((long)var_8 + -8) = (__first._M_current)->_M_string_length;
        var_8->_M_allocated_capacity = ((__first._M_current)->field_2)._M_allocated_capacity;
        ((__first._M_current)->_M_dataplus)._M_p = (type_1)var_5;
        var_7 = var_5;
      }
      (__first._M_current)->_M_string_length = 0;
      var_7->_M_local_buf[0] = '\0';
      var_22 = &local_48;
      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
           *)__value._M_dataplus._M_p == var_6) {
        uStack_40 = __value.field_2._8_8_;
      }
      else {
        var_22 = (type_5 *)__value._M_dataplus._M_p;
      }
      local_48 = __value.field_2._M_allocated_capacity;
      pcVar7 = var_8->_M_local_buf + (-0x10 - (long)__first._M_current);
      local_50 = __value._M_string_length;
      __value._M_string_length = 0;
      __value.field_2._M_allocated_capacity =
           __value.field_2._M_allocated_capacity & 0xffffffffffffff00;
      __value._M_dataplus._M_p = (type_1)var_6;
                    /* try { // try from 002857a4 to 002857a8 has its CatchHandler @ 00285962 */
      __adjust_heap<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<var_2>*,_std::vector<std::__cxx11::basic_string<var_2>var_3>var_3>,_long_int,_std::__cxx11::basic_string<var_2>,___gnu_cxx::__ops::_Iter_comp_iter<gold::var_21>var_3>
                (__first._M_current,0,(long)pcVar7 >> 5,
                 (_Iter_comp_iter<gold::var_21> *)&var_22);
      if (var_22 != &local_48) {
        var_26(var_22);
      }
      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
           *)__value._M_dataplus._M_p != var_6) {
        var_26(__value._M_dataplus._M_p);
      }
      var_8 = var_8 + -2;
    } while (0x20 < (long)pcVar7);
  }
  return;
LAB_00285680:
  __introsort_loop<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<var_2>*,_std::vector<std::__cxx11::basic_string<var_2>var_3>var_3>,_long_int,___gnu_cxx::__ops::_Iter_comp_iter<gold::var_21>var_3>
            (var_9._M_current,var_12,var_11);
  if ((long)var_9._M_current - (long)__first._M_current < 0x201) {
    return;
  }
  var_12 = var_9._M_current;
  if (var_11 == 0) goto LAB_002856b5;
  goto LAB_00285459;
}


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

/* WARNING: Removing unreachable block (ram,0x002857c6) */

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

{
  undefined8 *puVar1;
  ulong uVar2;
  int iVar3;
  long lVar4;
  long lVar5;
  undefined8 *puVar6;
  size_t __n;
  ulong *__dest;
  undefined8 *puVar7;
  undefined1 *puVar8;
  long lVar9;
  undefined8 *puVar10;
  undefined1 in_stack_00000008;
  undefined8 *local_98;
  long local_90;
  undefined8 *local_80;
  ulong *local_78;
  ulong local_68;
  ulong uStack_60;
  ulong *local_58;
  ulong local_50;
  ulong local_48;
  ulong uStack_40;
  
  if (0x200 < (long)param_2 - (long)param_1) {
    local_80 = param_2;
    if (param_3 != 0) {
      puVar1 = param_1 + 4;
      lVar9 = 0;
      local_98 = param_2;
      local_90 = param_3;
LAB_00285459:
      local_90 = local_90 + -1;
      puVar6 = local_98 + -4;
      lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);
      puVar7 = param_1 + (((long)local_98 - (long)param_1 >> 5) -
                          ((long)local_98 - (long)param_1 >> 0x3f) >> 1) * 4;
      lVar5 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);
      if (lVar4 == -1) {
        lVar4 = lVar9;
      }
      if (lVar5 == -1) {
        lVar5 = lVar9;
      }
      iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar7,lVar5,0xffffffffffffffff);
      local_80 = puVar1;
      puVar10 = local_98;
      if (iVar3 < 0) {
        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);
        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);
        if (lVar4 == -1) {
          lVar4 = lVar9;
        }
        if (lVar5 == -1) {
          lVar5 = lVar9;
        }
        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);
        if (iVar3 < 0) {
LAB_002858b2:
          FUN_002e3180(param_1,puVar7);
          goto LAB_002855a0;
        }
        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);
        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);
        if (lVar4 == -1) {
          lVar4 = lVar9;
        }
        if (lVar5 == -1) {
          lVar5 = lVar9;
        }
        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);
        if (-1 < iVar3) {
          FUN_002e3180(param_1,puVar1);
          goto LAB_002855a0;
        }
      }
      else {
        lVar4 = FUN_002e34f0(puVar1,0x2f,0xffffffffffffffff);
        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);
        if (lVar4 == -1) {
          lVar4 = lVar9;
        }
        if (lVar5 == -1) {
          lVar5 = lVar9;
        }
        iVar3 = FUN_002e39a0(puVar1,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);
        if (iVar3 < 0) {
          FUN_002e3180(param_1,puVar1);
          goto LAB_002855a0;
        }
        lVar4 = FUN_002e34f0(puVar7,0x2f,0xffffffffffffffff);
        lVar5 = FUN_002e34f0(puVar6,0x2f,0xffffffffffffffff);
        if (lVar4 == -1) {
          lVar4 = lVar9;
        }
        if (lVar5 == -1) {
          lVar5 = lVar9;
        }
        iVar3 = FUN_002e39a0(puVar7,lVar4,0xffffffffffffffff,puVar6,lVar5,0xffffffffffffffff);
        if (-1 < iVar3) goto LAB_002858b2;
      }
      FUN_002e3180(param_1,puVar6);
LAB_002855a0:
      do {
        lVar4 = FUN_002e34f0(local_80,0x2f,0xffffffffffffffff);
        lVar5 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);
        if (lVar4 == -1) {
          lVar4 = lVar9;
        }
        if (lVar5 == -1) {
          lVar5 = lVar9;
        }
        iVar3 = FUN_002e39a0(local_80,lVar4,0xffffffffffffffff,param_1,lVar5,0xffffffffffffffff);
        if (-1 < iVar3) {
          do {
            puVar10 = puVar10 + -4;
            lVar4 = FUN_002e34f0(param_1,0x2f,0xffffffffffffffff);
            lVar5 = FUN_002e34f0(puVar10,0x2f,0xffffffffffffffff);
            if (lVar4 == -1) {
              lVar4 = lVar9;
            }
            if (lVar5 == -1) {
              lVar5 = lVar9;
            }
            iVar3 = FUN_002e39a0(param_1,lVar4,0xffffffffffffffff,puVar10,lVar5,0xffffffffffffffff);
          } while (iVar3 < 0);
          if (puVar10 <= local_80) goto LAB_00285680;
          FUN_002e3180(local_80,puVar10);
        }
        local_80 = local_80 + 4;
      } while( true );
    }
LAB_002856b5:
    puVar1 = param_1 + 2;
    __dest = local_80 + -2;
    local_58 = (ulong *)CONCAT71(local_58._1_7_,in_stack_00000008);
    FUN_00285270(param_1,local_80,&local_58);
    do {
      local_78 = (ulong *)__dest[-2];
      if (local_78 == __dest) {
        local_68 = *__dest;
        uStack_60 = __dest[1];
        local_78 = &local_68;
      }
      else {
        local_68 = *__dest;
      }
      uVar2 = __dest[-1];
      __dest[-2] = (ulong)__dest;
      __dest[-1] = 0;
      *(undefined1 *)__dest = 0;
      if ((undefined8 *)*param_1 == puVar1) {
        __n = param_1[1];
        if (__n != 0) {
          if (__n == 1) {
            *(undefined1 *)__dest = *(undefined1 *)(param_1 + 2);
            __n = param_1[1];
          }
          else {
            memcpy(__dest,puVar1,__n);
            __n = param_1[1];
          }
        }
        __dest[-1] = __n;
        *(undefined1 *)(__dest[-2] + __n) = 0;
        puVar6 = (undefined8 *)*param_1;
      }
      else {
        __dest[-2] = (ulong)*param_1;
        __dest[-1] = param_1[1];
        *__dest = param_1[2];
        *param_1 = puVar1;
        puVar6 = puVar1;
      }
      param_1[1] = 0;
      *(undefined1 *)puVar6 = 0;
      local_58 = &local_48;
      if (local_78 == &local_68) {
        uStack_40 = uStack_60;
      }
      else {
        local_58 = local_78;
      }
      local_48 = local_68;
      puVar8 = (undefined1 *)((long)__dest + (-0x10 - (long)param_1));
      local_68 = local_68 & 0xffffffffffffff00;
      local_50 = uVar2;
                    /* try { // try from 002857a4 to 002857a8 has its CatchHandler @ 00285962 */
      FUN_00284c60(param_1,0,(long)puVar8 >> 5,&local_58);
      if (local_58 != &local_48) {
        FUN_002dac70();
      }
      __dest = __dest + -4;
    } while (0x20 < (long)puVar8);
  }
  return;
LAB_00285680:
  MASKED(local_80,local_98,local_90);
  if ((long)local_80 - (long)param_1 < 0x201) {
    return;
  }
  local_98 = local_80;
  if (local_90 == 0) goto LAB_002856b5;
  goto LAB_00285459;
}

