IopWriteTriageDumpToFirmware
VOID __fastcall IopWriteTriageDumpToFirmware(UINT8 *TriageDumpBlock){
unsigned __int64 v2;
UINT8 *v3;
char *v4;
__int64 v5;
__int64 v6;
__int64 v7;
__int64 v8;
__int64 v9;
PVOID BaseAddress;
if( TriageDumpBlock )
{
v2 = 262172i64;
BaseAddress = TriageDumpBlock + 4096;
v3 = TriageDumpBlock;
*((_DWORD *)TriageDumpBlock + 1028) = 28;
*(_OWORD *)BaseAddress = CrashdmpGuid;
*((_DWORD *)BaseAddress + 5) = 458752;
*((_DWORD *)BaseAddress + 6) = 262172;
v4 = (char *)BaseAddress;
do
{
v5 = 4096i64;
if( v2 < 0x1000 )
v5 = v2;
*(_QWORD *)v3 = v5;
LODWORD(v6) = MmGetPhysicalAddress((UINT64)v4);
*((_QWORD *)v3 + 1) = v6;
v7 = *(_QWORD *)v3;
v3 += 16;
v4 += v7;
v2 -= v7;
}
while( v2 );
*(_QWORD *)v3 = 0i64;
*((_QWORD *)v3 + 1) = 0i64;
LODWORD(v8) = MmGetPhysicalAddress((UINT64)TriageDumpBlock);
v9 = v8;
KiScanBugCheckCallbackList();
((void(__fastcall *)(PVOID *, __int64, __int64))off_140C00848[0])(&BaseAddress, 1i64, v9);
}
}Referenced by:
IoWriteCrashDump
IopWriteCapsuleTriageDumpToFirmware