KeValidateBugCheckCallbackRecord

UINT8 __stdcall KeValidateBugCheckCallbackRecord(
        KBUGCHECK_REASON_CALLBACK_RECORD *CallbackRecord,
        KBUGCHECK_CALLBACK_REASON CallbackReason,
        LIST_ENTRY **PreviousValidEntry){
  UINT8 IsAddressValid; 
  KBUGCHECK_REASON_CALLBACK_RECORD *v7; 
  unsigned __int64 v8; 
  unsigned __int64 v9; 
  __int64 Reason; 
  PKBUGCHECK_REASON_CALLBACK_ROUTINE CallbackRoutine; 
  UINT8 result; 
  IsAddressValid = 0;
  v7 = 0i64;
  if( ((unsigned __int8)CallbackRecord & 7) == 0 )
  {
    v8 = (unsigned __int64)CallbackRecord & 0xFFFFFFFFFFFFF000ui64;
    v9 = ((unsigned __int64)((unsigned __int16)CallbackRecord & 0xFFF) + 4143) >> 12;
    if( v9 )
    {
      while( MmIsAddressValidEx(v8) )
      {
        v8 += 4096i64;
        if( !--v9 )
          goto LABEL_5;
      }
    }
    else
    {
LABEL_5:
      if( CallbackRecord->Entry.Blink == *PreviousValidEntry )
      {
        v7 = CallbackRecord;
        if( IoIsPartialDumpRetry() && (unsigned __int8)(CallbackRecord->State - 3) <= 1u )
          CallbackRecord->State = 1;
        if( CallbackRecord->State == 1 )
        {
          Reason = CallbackRecord->Reason;
          CallbackRoutine = CallbackRecord->CallbackRoutine;
          if( (PKBUGCHECK_REASON_CALLBACK_ROUTINE)CallbackRecord->Checksum == (PKBUGCHECK_REASON_CALLBACK_ROUTINE)((char *)CallbackRoutine + (unsigned __int64)&CallbackRecord->Component[Reason])
            && (_DWORD)Reason == CallbackReason )
          {
            IsAddressValid = MmIsAddressValidEx((INT64)CallbackRoutine);
          }
        }
      }
    }
  }
  result = IsAddressValid;
  *PreviousValidEntry = &v7->Entry;
  return result;
}

Referenced by:

IopDumpCallAddPagesCallbacks
IopDumpCallRemovePagesCallbacks
IopLiveDumpAddTriageDumpData
IopLiveDumpCallRemovePagesCallbacks
KiInvokeBugCheckAddTriageDumpDataCallbacks
KiInvokeBugCheckEntryCallbacks