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