KiDumpParameterImages

VOID __fastcall KiDumpParameterImages(
        INT8 *Buffer,
        UINT64 *BugCheckParameters,
        UINT64 NumberOfParameters,
        INT64 UnicodeToAnsi){
  char v4; 
  __int64 v7; 
  _UNICODE_STRING *UnloadedDriver; 
  _UNICODE_STRING *p_BaseDllName; 
  UINT16 *p_Length; 
  _LDR_DATA_TABLE_ENTRY *v11; 
  char InKernelOrHal[8]; 
  _LDR_DATA_TABLE_ENTRY *DataTableEntry; 
  char v14[128]; 

  DataTableEntry = 0i64;
  v4 = UnicodeToAnsi;
  InKernelOrHal[0] = 0;
  if( Buffer )
    *Buffer = 0;
  if( (_DWORD)NumberOfParameters )
  {
    v7 = (unsigned int)NumberOfParameters;
    while( !KiPcToFileHeader((VOID *)*BugCheckParameters, &DataTableEntry, 1ui64, (UINT8 *)InKernelOrHal) )
    {
      UnloadedDriver = (_UNICODE_STRING *)MmLocateUnloadedDriver(*BugCheckParameters);
      p_BaseDllName = UnloadedDriver;
      if( UnloadedDriver )
      {
        if( v4 )
        {
          p_Length = &UnloadedDriver->Length;
          goto LABEL_13;
        }
        goto LABEL_14;
      }
LABEL_17:
      ++BugCheckParameters;
      if( !--v7 )
        return;
    }
    v11 = DataTableEntry;
    if( MmIsAddressValidEx((INT64)DataTableEntry->DllBase) )
      RtlImageNtHeader((UINT64)v11->DllBase);
    p_BaseDllName = &v11->BaseDllName;
    if( v4 )
    {
      p_Length = &p_BaseDllName->Length;
LABEL_13:
      KiBugCheckUnicodeToAnsi(p_Length, v14);
    }
LABEL_14:
    if( Buffer )
      RtlStringCbPrintfA(Buffer, 0x80ui64, (INT8 *)"%s**  %12s - Address %p base at %p, DateStamp %08lx\r\n");
    KiBugCheckDriver = p_BaseDllName;
    goto LABEL_17;
  }
}

Referenced by:

KeBugCheck2
KiDisplayBlueScreen