VslFinalizeLiveDumpInSk
INT64 __fastcall VslFinalizeLiveDumpInSk(_QWORD *a1, _QWORD *a2, INT64 a3){
char *v6;
unsigned int v7;
__int64 v8;
PHYSICAL_ADDRESS PhysicalAddress;
NTSTATUS v10;
INT64 result;
unsigned int v13;
__int64 v14[2];
int v15;
INT64 a4[14];
memset((INT64)&result, 0i64);
v6 = *(char **)(a3 + 32);
v7 = *(_DWORD *)(a3 + 8) >> 12;
v13 = v7;
if( ((unsigned __int16)v6 & 0xFFF) != 0 || v6 != *(char **)a3 || (*(_DWORD *)(a3 + 40) & 0xFFF) != 0 || v7 > 0xB )
{
v10 = -1073741811;
}
else
{
v8 = 0i64;
if( v7 )
{
do
{
PhysicalAddress = MmGetPhysicalAddress(v6);
v6 += 4096;
v14[v8] = (unsigned __int64)PhysicalAddress.QuadPart >> 12;
v8 = (unsigned int)(v8 + 1);
}
while( (unsigned int)v8 < v13 );
}
v10 = VslpEnterIumSecureMode(2u, 57, 0i64, (INT64)&result);
if( v10 < 0 )
goto LABEL_11;
*a1 = v14[0];
*a2 = v14[1];
*(_DWORD *)(a3 + 40) = v15;
}
if( v10 < 0 )
{
LABEL_11:
memset((INT64)a4, 0i64);
VslpEnterIumSecureMode(2u, 58, 0i64, (INT64)a4);
}
return(unsigned int)v10;
}Referenced by:
IopLiveDumpCaptureMemoryPages