MiApplyCommitDelay
VOID __stdcall MiApplyCommitDelay(INT64 a1, CHAR a2, INT64 a3){
INT64 *v4;
unsigned __int8 v5;
int v6;
unsigned __int64 v7;
int v8;
unsigned __int8 v9;
unsigned __int64 v10;
_LARGE_INTEGER v11;
if( (a2 & 4) == 0
&& (KeGetCurrentThread()->ApcState.Process->Flags3 & 0x1000) == 0
&& KeGetCurrentIrql() < 2u
&& a3 != *(_QWORD *)(a1 + 6216)
&& *(_DWORD *)(a1 + 1868) )
{
v4 = (INT64 *)(a1 + 1344);
v5 = ExAcquireSpinLockExclusive((INT64 *)(a1 + 1344));
v6 = *(_DWORD *)(a1 + 1864);
v7 = v5;
if( v6 )
{
v8 = v6 + 1;
}
else
{
*(_WORD *)(a1 + 1872) = 0;
*(_DWORD *)(a1 + 1876) = 0;
*(_QWORD *)(a1 + 1888) = a1 + 1880;
*(_QWORD *)(a1 + 1880) = a1 + 1880;
v8 = 1;
*(_BYTE *)(a1 + 1874) = 6;
}
*(_DWORD *)(a1 + 1864) = v8;
ExReleaseSpinLockExclusiveFromDpcLevel(v4);
__writecr8(v7);
v11 = Mi10Milliseconds;
KeWaitForSingleObject(a1 + 1872, 0, 0, 0, (INT64)&v11);
v9 = ExAcquireSpinLockExclusive(v4);
--*(_DWORD *)(a1 + 1864);
v10 = v9;
ExReleaseSpinLockExclusiveFromDpcLevel(v4);
__writecr8(v10);
}
}Referenced by:
MiChargeCommit