RtlLockBootStatusData

NTSTATUS __stdcall RtlLockBootStatusData(VOID **BootStatusDataHandle){
  WCHAR *v1; 
  int v3; 
  WCHAR v4; 
  UINT64 ShareAccess; 
  UINT64 OpenOptions; 
  _UNICODE_STRING DestinationString; 
  _IO_STATUS_BLOCK IoStatusBlock; 
  _OBJECT_ATTRIBUTES ObjectAttributes; 
  char v11; 
  VOID *FileHandle; 
  WCHAR *SourceString; 

  FileHandle = 0i64;
  v1 = 0i64;
  memset(&ObjectAttributes, 0, sizeof(ObjectAttributes));
  SourceString = 0i64;
  v3 = 0;
  v11 = 0;
  DestinationString = 0i64;
  IoStatusBlock = 0i64;
  RtlpAcquireBootStatusLock();
  ++BootStatReferenceCount;
  if( BootStatFileHandleAcquired )
  {
    if( BootStatusDataHandle )
    {
      *BootStatusDataHandle = *(VOID **)&BootStatFileHandle;
      goto LABEL_10;
    }
    goto LABEL_4;
  }
  RtlpGetBootStatusPath((const wchar_t **)&SourceString, &v11, v4);
  v1 = SourceString;
  RtlInitUnicodeString(&DestinationString, SourceString);
  ObjectAttributes.RootDirectory = 0i64;
  LODWORD(OpenOptions) = 32;
  ObjectAttributes.ObjectName = &DestinationString;
  ObjectAttributes.Length = 48;
  ObjectAttributes.Attributes = 704;
  LODWORD(ShareAccess) = 1;
  *(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
  v3 = ZwOpenFile(&FileHandle, 0x12019Fui64, &ObjectAttributes, &IoStatusBlock, ShareAccess, OpenOptions);
  if( v3 < 0 )
  {
    *(_QWORD *)&BootStatFileHandle = 0i64;
    BootStatReferenceCount = 0;
    BootStatFileHandleAcquired = 0;
    if( BootStatusDataHandle )
      *BootStatusDataHandle = 0i64;
  }
  else
  {
    *(_QWORD *)&BootStatFileHandle = FileHandle;
    BootStatFileHandleAcquired = 1;
    RtlInitializeBootStatDataCache();
    if( !BootStatusDataHandle )
    {
LABEL_4:
      BootStatKeepHandleOpen = 1;
      goto LABEL_10;
    }
    *BootStatusDataHandle = FileHandle;
  }
LABEL_10:
  RtlpReleaseBootStatusLock();
  if( v11 )
    ExFreePoolWithTag(v1, 0);
  return v3;
}

Referenced by:

CmCompleteRegistryInitialization
PoClearTransitionMarker
PopBootStatCheckIntegrity
PopBootStatGet
PopBootStatSet