SmpSystemStoreCreate

NTSTATUS __stdcall SmpSystemStoreCreate(){
  _ETHREAD *CurrentThread; 
  int v1; 
  int v3; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v3 = 0;
  --CurrentThread->Tcb.KernelApcDisable;
  ExAcquirePushLockExclusiveEx(&stru_140D231B8, 0i64);
  if( dword_140D231B0 == -1 )
  {
    v1 = SmpDirtyStoreCreate(
           (_SMKM_STORE_LIST *)SmGlobals,
           (unsigned int)(*(_QWORD *)(**(&stru_140C4DB30 + 267) + 6928i64) >> 8) >> 1,
           0,
           &v3);
    if( v1 >= 0 )
      dword_140D231B0 = v3;
  }
  else
  {
    v1 = -1073740008;
  }
  if( (_InterlockedExchangeAdd64(&stru_140D231B8._bf_0, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
    ExfTryToWakePushLock(&stru_140D231B8);
  KeAbPostRelease(&stru_140D231B8);
  KeLeaveCriticalRegion();
  return v1;
}

Referenced by:

MiCreatePagingFile
SmProcessConfigRequest