PsGetPermanentSiloContext

NTSTATUS __stdcall PsGetPermanentSiloContext(_EJOB *Silo, UINT64 ContextSlot, VOID **ReturnedSiloContext){
  PSP_STORAGE *v3; 
  __int64 v4; 

  if( Silo )
    v3 = (PSP_STORAGE *)*((_QWORD *)Silo + 163);
  else
    v3 = Storage;
  *ReturnedSiloContext = 0i64;
  if( (unsigned int)ContextSlot >= 0x20 )
  {
    LODWORD(ContextSlot) = ContextSlot - 32;
    if( (unsigned int)ContextSlot >= 0x100 )
      return -1073741811;
    v3 = (PSP_STORAGE *)*((_QWORD *)v3 + 64);
    if( !v3 )
      return -1073741275;
  }
  v4 = *(_QWORD *)&v3[4 * (unsigned int)ContextSlot + 2];
  if( (v4 & 0xFFFFFFFFFFFFFFFEui64) == 0 )
    return -1073741275;
  if( (v4 & 1) == 0 )
    return -1073741637;
  *ReturnedSiloContext = (VOID *)(v4 & 0xFFFFFFFFFFFFFFFEui64);
  return 0;
}

Referenced by:

CmCleanupServerSiloState
CmGetRootKeyObjectForSilo
CmLockKeyForWrite
CmpGetOrCreateContextForSiloNoRef
CmpGetRegistryNamespaceRootForSilo
ObGetSiloRootDirectoryPath
ObInitServerSilo
ObpLookupObjectName
VRegEnabledInJob
VrpHandleIoctlCreateMultipleNamespaceNodes
VrpHandleIoctlCreateNamespaceNode
VrpHandleIoctlLoadDifferencingHive
VrpHandleIoctlUnloadDynamicallyLoadedHives