SdbpFreePackageAttributes

void __fastcall SdbpFreePackageAttributes(__int64 a1){
  unsigned __int64 v1; 
  unsigned __int64 v2; 
  __int64 v4; 
  unsigned __int64 v5; 
  unsigned __int64 v6; 
  unsigned __int64 v7; 
  void *v8; 
  void *v9; 
  if( a1 )
  {
    v1 = *(_QWORD *)(a1 + 16);
    v2 = 0i64;
    if( v1 )
    {
      do
      {
        v4 = 0i64;
        if( v2 < v1 )
        {
          v5 = *(_QWORD *)(a1 + 8) * v2;
          if( !is_mul_ok(*(_QWORD *)(a1 + 8), v2) || (v6 = *(_QWORD *)(a1 + 40), 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 *)(a1 + 16);
          }
        }
        ++v2;
        v1 = v7;
      }
      while( v2 < v7 );
    }
    v9 = *(void **)(a1 + 40);
    if( v9 )
      ExFreePoolWithTag(v9, 0x72615452u);
    *(_OWORD *)a1 = 0i64;
    *(_OWORD *)(a1 + 16) = 0i64;
    *(_OWORD *)(a1 + 32) = 0i64;
  }
}

Referenced by:

SdbpReleaseSearchDBContext