MiApplyCommitDelay
VOID __fastcall MiApplyCommitDelay(INT64 a1, CHAR a2, INT64 a3){
INT64 *v4;
KIRQL v5;
int v6;
unsigned __int64 v7;
int v8;
KIRQL v9;
unsigned __int64 v10;
union _LARGE_INTEGER Timeout;
if( (a2 & 4) == 0
&& (*(_DWORD *)(*((_QWORD *)KeGetCurrentThread() + 23) + 2172i64) & 0x1000) == 0
&& KeGetCurrentIrql() < 2u
&& a3 != *(_QWORD *)(a1 + 6216)
&& *(_DWORD *)(a1 + 1868) )
{
v4 = (INT64 *)(a1 + 1344);
v5 = ExAcquireSpinLockExclusive((PEX_SPIN_LOCK)(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);
Timeout = Mi10Milliseconds;
KeWaitForSingleObject((PVOID)(a1 + 1872), Executive, 0, 0, &Timeout);
v9 = ExAcquireSpinLockExclusive((PEX_SPIN_LOCK)v4);
--*(_DWORD *)(a1 + 1864);
v10 = v9;
ExReleaseSpinLockExclusiveFromDpcLevel(v4);
__writecr8(v10);
}
}Referenced by:
MiChargeCommit