MiDoGangAssignment
VOID __fastcall MiDoGangAssignment(_TOKEN *Token){
ULONG_PTR **v1;
int DefaultDacl;
UINT64 *v4;
UINT16 v5;
ULONG_PTR *v6;
_SID_AND_ATTRIBUTES *v7;
unsigned __int64 v8;
unsigned __int64 v9;
int v10;
ULONG_PTR v11;
bool v12;
DefaultDacl = (int)Token->DefaultDacl;
if( (DefaultDacl & 1) != 0 )
{
if( (DefaultDacl & 4) != 0 )
v5 = *(_WORD *)Token->PrimaryGroup;
else
v5 = 0;
v6 = *v1;
if( (DefaultDacl & 0x38) != 0 )
{
v8 = 512i64;
v7 = &Token->RestrictedSids[256 * (*v6 - *(_QWORD *)Token->TokenSource.SourceName)];
}
else
{
v7 = 0i64;
v8 = 0x4000i64;
}
while( 1 )
{
v9 = v6[1];
if( !v9 )
break;
if( v8 <= v9 )
v9 = v8;
if( v7 )
{
v10 = (int)Token->DefaultDacl;
if( (v10 & 8) != 0 )
{
KeZeroPages(v7, v9 << 12);
}
else if( (v10 & 0x10) != 0 )
{
memset((INT64)v7, 0xFFFFFFFFi64);
}
else if( (v10 & 0x20) != 0 )
{
v11 = RtlCompareMemoryUlong(v7, v9 << 12, 0);
if( v11 != v9 << 12 )
KeBugCheckEx(0x127u, (ULONG_PTR)v7, *v6, v11, v9 << 12);
}
}
if( ((__int64)Token->DefaultDacl & 4) != 0 )
MiInitializeUnusablePfns((__m128i *)MmGetPfnDb() + 3 * *v6, v9, v5, HIDWORD(Token->DynamicPart), 0i64, 0i64, 0);
v12 = v6[1] == v9;
v6[1] -= v9;
if( v12 )
break;
*v6 += v9;
if( KeShouldYieldProcessor() )
goto LABEL_4;
if( v7 )
v7 += 256 * v9;
}
}
else
{
v4 = *v1;
if( **v1 )
{
MiInitializeLargeMdlLeafPfns(v4, *(_QWORD *)Token->TokenSource.SourceName);
if( *v4 )
LABEL_4:
Token->ImpersonationLevel = SecurityIdentification;
}
}
}Referenced by:
MiDpcGangTarget
MiStartDpcGang