MiSubsectionProtosCreated
VOID __fastcall MiSubsectionProtosCreated(INT64 *a1, INT64 a2, INT64 a3, INT64 a4){
INT64 v4;
int v5;
int v6;
unsigned __int64 v9;
INT64 v10;
int v11;
unsigned int v12;
INT64 v13;
int v14;
int v15;
v4 = *a1;
v5 = a4;
v6 = a3;
KeAbPostRelease(a1);
v9 = ExAcquireSpinLockExclusive((PEX_SPIN_LOCK)(v4 + 72));
if( (*(_DWORD *)(v4 + 56) & 0x20) != 0 )
{
v10 = *(_QWORD *)(v4 + 80);
*(_QWORD *)(v4 + 80) = 0i64;
goto LABEL_9;
}
v11 = *((_DWORD *)a1 + 13);
if( v5 )
{
v12 = v11 | 0x40000000;
LABEL_7:
*((_DWORD *)a1 + 13) = v12;
goto LABEL_8;
}
if( v6 == *((_DWORD *)a1 + 11) - (v11 & 0x3FFFFFFF) )
{
v12 = v11 & 0xBFFFFFFF;
goto LABEL_7;
}
LABEL_8:
v10 = a1[3];
a1[3] = 0i64;
LABEL_9:
if( v10 )
{
do
{
v13 = *(_QWORD *)v10;
if( v10 != a2 )
{
v14 = *(_DWORD *)(v10 + 8);
*(_DWORD *)(v10 + 12) = 1;
if( (v14 & 0x40) == 0 )
{
v15 = 1;
if( (*(_DWORD *)(a2 + 8) & 0x100) != 0 )
v15 = 2;
*(_DWORD *)(v10 + 12) = v15;
KeSignalGate((_KGATE *)(v10 + 16), 1i64);
}
}
v10 = v13;
}
while( v13 );
}
ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)(v4 + 72));
__writecr8(v9);
}Referenced by:
MiAllocateFileExtents
MiPurgeFileOnlyPfn
MmPurgeSection