ExInitializeRundownProtectionCacheAware
VOID __fastcall ExInitializeRundownProtectionCacheAware(
_EX_RUNDOWN_REF_CACHE_AWARE *RunRefCacheAware,
UINT64 RunRefSize){
unsigned int v2;
unsigned int RecommendedSharedDataAlignment;
_EX_RUNDOWN_REF *v4;
unsigned int v6;
unsigned int v7;
unsigned int v8;
v2 = RunRefSize - 24;
RecommendedSharedDataAlignment = 8;
v4 = (_EX_RUNDOWN_REF *)&RunRefCacheAware[1];
if( (_DWORD)RunRefSize == 32 )
{
v6 = 1;
}
else
{
RecommendedSharedDataAlignment = KeGetRecommendedSharedDataAlignment();
v6 = v2 / RecommendedSharedDataAlignment - 1;
v4 = (_EX_RUNDOWN_REF *)(~(unsigned __int64)(RecommendedSharedDataAlignment - 1) & ((unsigned __int64)v4
+ RecommendedSharedDataAlignment
- 1));
}
RunRefCacheAware->RunRefSize = RecommendedSharedDataAlignment;
v7 = 0;
RunRefCacheAware->RunRefs = v4;
RunRefCacheAware->Number = v6;
for( RunRefCacheAware->PoolToFree = (void *)195938833;
v7 < RunRefCacheAware->Number;
*(unsigned __int64 *)((char *)&RunRefCacheAware->RunRefs->Count + RunRefCacheAware->RunRefSize * v8) = 0i64 )
{
v8 = v7 % RunRefCacheAware->Number;
++v7;
}
}Referenced by:
No references.