SdbpFreePackageAttributes

VOID __stdcall SdbpFreePackageAttributes(_RTL_ARRAY *AttributeArray){
  unsigned __int64 v1; 
  unsigned __int64 v2; 
  __int64 v4; 
  unsigned __int64 v5; 
  unsigned __int64 v6; 
  unsigned __int64 v7; 
  void *v8; 
  void *v9; 

  if( AttributeArray )
  {
    v1 = *((_QWORD *)AttributeArray + 2);
    v2 = 0i64;
    if( v1 )
    {
      do
      {
        v4 = 0i64;
        if( v2 < v1 )
        {
          v5 = *((_QWORD *)AttributeArray + 1) * v2;
          if( !is_mul_ok(*((_QWORD *)AttributeArray + 1), v2)
            || (v6 = *((_QWORD *)AttributeArray + 5), v4 = v6 + v5, v6 + v5 < v6) )
          {
            v4 = 0i64;
          }
        }
        if( (unsigned __int16)(*(_WORD *)v4 - 24617) <= 1u || (v7 = v1, *(_WORD *)v4 == 24619) )
        {
          v8 = *(void **)(v4 + 8);
          v7 = v1;
          if( v8 )
          {
            ExFreePoolWithTag(v8, 0x74705041u);
            v7 = *((_QWORD *)AttributeArray + 2);
          }
        }
        ++v2;
        v1 = v7;
      }
      while( v2 < v7 );
    }
    v9 = (void *)*((_QWORD *)AttributeArray + 5);
    if( v9 )
      ExFreePoolWithTag(v9, 0x72615452u);
    *(_OWORD *)AttributeArray = 0i64;
    *((_OWORD *)AttributeArray + 1) = 0i64;
    *((_OWORD *)AttributeArray + 2) = 0i64;
  }
}

Referenced by:

SdbpReleaseSearchDBContext