VslFinalizeLiveDumpInSk
__int64 __fastcall VslFinalizeLiveDumpInSk(_QWORD *a1, _QWORD *a2, __int64 a3){
UINT64 v6;
unsigned int v7;
__int64 v8;
unsigned __int64 v9;
NTSTATUS v10;
INT64 v12[14];
INT64 v13[14];
memset(v12, 0i64, 0x68u);
v6 = *(_QWORD *)(a3 + 32);
v7 = *(_DWORD *)(a3 + 8) >> 12;
LODWORD(v12[1]) = v7;
if( (v6 & 0xFFF) != 0 || v6 != *(_QWORD *)a3 || (*(_DWORD *)(a3 + 40) & 0xFFF) != 0 || v7 > 0xB )
{
v10 = -1073741811;
}
else
{
v8 = 0i64;
if( v7 )
{
do
{
LODWORD(v9) = MmGetPhysicalAddress(v6);
v6 += 4096i64;
v12[v8 + 2] = v9 >> 12;
v8 = (unsigned int)(v8 + 1);
}
while( (unsigned int)v8 < LODWORD(v12[1]) );
}
v10 = VslpEnterIumSecureMode(2u, 57, 0i64, (INT64)v12);
if( v10 < 0 )
goto LABEL_11;
*a1 = v12[2];
*a2 = v12[3];
*(_DWORD *)(a3 + 40) = v12[4];
}
if( v10 < 0 )
{
LABEL_11:
memset(v13, 0i64, 0x68u);
VslpEnterIumSecureMode(2u, 58, 0i64, (INT64)v13);
}
return(unsigned int)v10;
}Referenced by:
IopLiveDumpCaptureMemoryPages