SmpSystemStoreCreate

INT64 __fastcall SmpSystemStoreCreate(){
  _ETHREAD *CurrentThread; 
  int v1; 
  int a4; 
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  a4 = 0;
  --*((_WORD *)CurrentThread + 242);
  ExAcquirePushLockExclusiveEx((UINT64)&qword_140D231B8, 0i64);
  if( dword_140D231B0 == -1 )
  {
    v1 = SmpDirtyStoreCreate(
           (INT64)&SmGlobals,
           (unsigned int)(*(_QWORD *)(*(_QWORD *)qword_140C4E388 + 6928i64) >> 8) >> 1,
           0i64,
           &a4);
    if( v1 >= 0 )
      dword_140D231B0 = a4;
  }
  else
  {
    v1 = -1073740008;
  }
  if( (_InterlockedExchangeAdd64((volatile signed __int64 *)&qword_140D231B8, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
    ExfTryToWakePushLock((volatile INT64 *)&qword_140D231B8);
  KeAbPostRelease(&qword_140D231B8);
  KeLeaveCriticalRegion();
  return(unsigned int)v1;
}

Referenced by:

MiCreatePagingFile
SmProcessConfigRequest