MiDoGangAssignment
VOID __stdcall MiDoGangAssignment(_TOKEN *Token){
UINT64 **v1;
int DefaultDacl;
UINT64 *v4;
unsigned __int16 v5;
UINT64 *v6;
_SID_AND_ATTRIBUTES *v7;
unsigned __int64 v8;
UINT64 v9;
int v10;
void *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(v7, 0xFFFFFFFFi64, (_DWORD)v9 << 12);
}
else if( (v10 & 0x20) != 0 )
{
LODWORD(v11) = RtlCompareMemoryUlong(v7, (_DWORD)v9 << 12, 0i64);
if( v11 != (void *)(v9 << 12) )
KeBugCheckEx(0x127u, v7, (PVOID)*v6, v11, (PVOID)(v9 << 12));
}
}
if( ((__int64)Token->DefaultDacl & 4) != 0 )
MiInitializeUnusablePfns(&MmGetPfnDb()[*v6], v9, v5, HIDWORD(Token->DynamicPart));
v12 = v6[1] == v9;
v6[1] -= v9;
if( v12 )
break;
*v6 += v9;
if( (unsigned int)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