IopLiveDumpGenerateIptSecondaryData
NTSTATUS __stdcall IopLiveDumpGenerateIptSecondaryData(){
GUID *v0;
INT64 MillisecondCounter;
unsigned int Data1;
UINT8 **v3;
__int64 v4;
unsigned int v5;
UINT8 *v6;
__int64 v7;
unsigned int v8;
UINT8 *v9;
unsigned int v10;
NTSTATUS result;
INT64 v12;
__int128 v13;
__int128 v14;
GUID v15;
__int64 v16;
v0 = IopLiveDumpContext;
v16 = 0i64;
MillisecondCounter = 0i64;
v13 = 0i64;
Data1 = IopLiveDumpContext[5].Data1;
v14 = 0i64;
v15 = 0i64;
if( (Data1 & 0x80u) != 0 )
MillisecondCounter = IopLiveDumpGetMillisecondCounter(0);
v3 = (UINT8 **)&v0[59];
v4 = *(_QWORD *)&v0[59].Data1;
if( v4 )
{
*(_DWORD *)v0[61].Data4 = 0;
*(_QWORD *)&v0[61].Data1 = v4;
(*(void(__fastcall **)(__int64, _QWORD, GUID *, __int64))(IptInterface + 40))(2i64, 0i64, v0 + 59, 48i64);
v5 = *(_DWORD *)v0[61].Data4;
if( v5 && *(_DWORD *)v0[59].Data4 >= v5 )
{
v6 = *(UINT8 **)&v0[61].Data1;
if( *v3 != v6 )
{
memmove(*v3, v6, v5);
*(_QWORD *)&v0[61].Data1 = *v3;
v5 = *(_DWORD *)v0[61].Data4;
}
}
else
{
*(_QWORD *)&v0[61].Data1 = 0i64;
*(_DWORD *)v0[61].Data4 = 0;
v5 = 0;
}
if( v5 )
{
if( *(_QWORD *)&v0[56].Data1 )
{
LODWORD(v14) = v0->Data1;
*((_QWORD *)&v14 + 1) = *(_QWORD *)v0->Data4;
v15 = v0[1];
v16 = *(_QWORD *)&v0[2].Data1;
HIDWORD(v13) = 0x2000000;
(*(void(__fastcall **)(__int64, _QWORD, __int128 *, __int64))(IptInterface + 32))(7i64, 0i64, &v13, 56i64);
v7 = v13;
if( (_QWORD)v13 )
{
v8 = 16 * *(_DWORD *)(v13 + 16) + 12;
if( v8 <= *(_DWORD *)v0[56].Data4 )
{
v9 = *(UINT8 **)&v0[56].Data1;
*(_DWORD *)v0[58].Data4 = v8;
*(_QWORD *)&v0[58].Data1 = v9;
v0[57] = GUID_TRIAGEDUMP_DATA;
v10 = *(_DWORD *)(v7 + 16);
*(_DWORD *)v9 = v10;
*((_DWORD *)v9 + 1) = 4;
memmove(v9 + 8, (UINT8 *)(v13 + 48), 16i64 * v10);
*(_DWORD *)&v9[16 * *(unsigned int *)v9 + 8] = 5525577;
}
}
}
}
}
result = v0[5].Data1;
if( (result & 0x80u) != 0 )
{
v12 = IopLiveDumpGetMillisecondCounter(0);
LOBYTE(result) = IopLiveDumpTraceCaptureGenerateIptSecondaryDataDuration(v0, v12 - MillisecondCounter);
}
return result;
}Referenced by:
IopLiveDumpEndMirroringCallback