AuthzBasepFreeSecurityAttributesList
void __fastcall AuthzBasepFreeSecurityAttributesList(_DWORD *a1){
_DWORD **v2;
_DWORD *v3;
__int64 v4;
_QWORD *v5;
void **v6;
_DWORD *v7;
int v8;
_QWORD *v9;
void **v10;
_DWORD *v11;
_DWORD **v12;
void **v13;
int v14;
INT64 *v15;
v2 = (_DWORD **)(a1 + 2);
while( 1 )
{
v3 = *v2;
if( *v2 == (_DWORD *)v2 )
break;
if( (v3[14] & 1) != 0 )
{
v4 = *(_QWORD *)v3;
if( *(_DWORD **)(*(_QWORD *)v3 + 8i64) != v3 || (v5 = (_QWORD *)*((_QWORD *)v3 + 1), (_DWORD *)*v5 != v3) )
LABEL_19:
__fastfail(3u);
*v5 = v4;
*(_QWORD *)(v4 + 8) = v5;
v3[14] &= ~1u;
if( a1 )
--*a1;
}
v6 = (void **)(v3 + 18);
while( 1 )
{
v7 = *v6;
if( *v6 == v6 )
break;
v8 = v7[8];
if( (v8 & 2) != 0 )
{
v12 = (_DWORD **)*((_QWORD *)v7 + 2);
if( v12[1] != v7 + 4 )
goto LABEL_19;
v13 = (void **)*((_QWORD *)v7 + 3);
if( *v13 != v7 + 4 )
goto LABEL_19;
*v13 = v12;
v12[1] = v13;
v7[8] &= ~2u;
--v3[22];
v8 = v7[8];
}
if( (v8 & 1) != 0 )
{
v9 = *(_QWORD **)v7;
if( *(_DWORD **)(*(_QWORD *)v7 + 8i64) != v7 )
goto LABEL_19;
v10 = (void **)*((_QWORD *)v7 + 1);
if( *v10 != v7 )
goto LABEL_19;
*v10 = v9;
v9[1] = v10;
v7[8] &= ~1u;
--v3[15];
if( (v7[8] & 4) != 0 )
--v3[16];
}
ExFreePoolWithTag(v7, 0);
}
v11 = (_DWORD *)*((_QWORD *)v3 + 12);
while( v11 != v3 + 24 )
{
v14 = v11[4];
v15 = (INT64 *)(v11 - 4);
v11 = *(_DWORD **)v11;
if( (v14 & 1) == 0 )
{
AuthzBasepRemoveSecurityAttributeValueFromLists(v3, v15, 0);
ExFreePoolWithTag(v15, 0);
}
}
ExFreePoolWithTag(v3, 0);
}
}Referenced by:
AuthzBasepEvaluateAceCondition
AuthzBasepInitializeResourceClaimsFromSacl
AuthzBasepInitializeSystemSecurityAttributes
AuthzBasepSetSecurityAttributesToken
SeAccessCheckWithHintWithAdminlessChecks
SeExamineSacl
SepCleanupMarkedForDeletionEntries
SepCreateClaimAttributes
SepDeleteClaimAttributes
SepDuplicateClaimAttributes
SepExamineSaclEx
SepFreeResourceInfo
SepInternalQuerySecurityAttributesTokenEx
SepTokenDeleteMethod
SepVerifyDesktopAppxPackageName