PoRegisterCoalescingCallback

INT64 __fastcall PoRegisterCoalescingCallback(INT64 a1, CHAR a2, _QWORD *a3, INT64 a4){
  EX_RUNDOWN_REF *PoolWithTag; 
  EX_RUNDOWN_REF *v9; 
  void **v10; 
  EX_RUNDOWN_REF *v11; 
  INT64 result; 
  PoolWithTag = (EX_RUNDOWN_REF *)ExAllocatePoolWithTag(NonPagedPoolNx, 0x48ui64, 0x62436F50ui64);
  v9 = PoolWithTag;
  if( !PoolWithTag )
    return 3221225626i64;
  memset((INT64)PoolWithTag, 0i64);
  v9[2].Count = (unsigned __int64)v9;
  v9[1].Count = (unsigned __int64)PopCoalescingCallback;
  v9[5].Count = a4;
  v9[3].Count = a1;
  LOBYTE(v9[4].Count) = a2 != 0;
  ExInitializePushLock(v9);
  if( !ExCompareExchangeCallBack((INT64 *)&v9[8], v9, 0i64) )
    return 3221225485i64;
  PopAcquireRwLockExclusive((_POP_RW_LOCK *)&PopCoalRegistrationListLock);
  v10 = off_140C046D8;
  v11 = v9 + 6;
  if( *off_140C046D8 != &PopCoalRegistrationList )
    __fastfail(3u);
  v9[7].Count = (unsigned __int64)off_140C046D8;
  v11->Count = (unsigned __int64)&PopCoalRegistrationList;
  *v10 = v11;
  off_140C046D8 = (void **)&v9[6];
  PopReleaseRwLock((UINT64)&PopCoalRegistrationListLock);
  result = 0i64;
  *a3 = v9;
  return result;
}

Referenced by:

CcInitializeCacheManager
CmpCmdInit
PopCoalescingInitialize