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