PnpPrepareDriverLoading

__int64 __fastcall PnpPrepareDriverLoading(
        _UNICODE_STRING *KeyName,
        PVOID KeyHandle,
        PVOID ImageBase,
        UINT64 IsFilter,
        __int64 a5){
  int v6; 
  __int64 v9; 
  unsigned int v10; 
  _KEY_VALUE_FULL_INFORMATION *v12; 
  UINT64 IsFiltera; 
  _KEY_VALUE_FULL_INFORMATION *Information; 
  _GUID EntryGuid; 

  Information = 0i64;
  v6 = IsFilter;
  *(_DWORD *)a5 = 0;
  LODWORD(v9) = RtlImageNtHeader((UINT64)ImageBase);
  if( !v9 )
    return 3221225473i64;
  EntryGuid = 0i64;
  LODWORD(IsFiltera) = v6;
  v10 = PpCheckInDriverDatabase(KeyName, KeyHandle, ImageBase, *(unsigned int *)(v9 + 80), IsFiltera, &EntryGuid);
  if( v10 + 1073740949 <= 1 )
    PnpSetBlockedDriverEvent(&EntryGuid);
  if( IopGetRegistryValue(KeyHandle, (PWCHAR)&stru_1407D01E0._Xmm9, 0i64, &Information) >= 0 )
  {
    v12 = Information;
    if( Information->Type == 4 && Information->DataLength == 4 )
      *(_DWORD *)a5 = *(ULONG *)((char *)&Information->TitleIndex + Information->DataOffset);
    ExFreePoolWithTag(v12, 0);
  }
  return v10;
}

Referenced by:

IopInitializeBuiltinDriver
IopLoadDriver