MmIsSessionExecutionValid

NTSTATUS __stdcall MmIsSessionExecutionValid(VOID *a1, INT64 a2, INT64 a3, INT64 a4, INT64 a5){
  NTSTATUS SessionId; 
  __int64 v8; 
  _RTL_BALANCED_NODE *v9; 
  UINT64 v10; 
  _RTL_BALANCED_NODE *v11; 
  UINT64 OldIrql; 

  LOBYTE(OldIrql) = 0;
  SessionId = MmGetSessionIdEx((_EPROCESS *)a2);
  if( SessionId == -1 )
    return 0;
  LODWORD(v8) = 1;
  if( *((_BYTE *)a1 + 586) == 1 && SessionId != MmGetSessionIdEx(*((_EPROCESS **)a1 + 68)) )
    return 0;
  if( (*((_DWORD *)a1 + 29) & 0x800) != 0 || *((_QWORD *)a1 + 5) != KeGetPcr()->Prcb.RspBase )
    return 0;
  if( a3 )
  {
    MmLockLoadedModuleListShared((unsigned __int8 *)&OldIrql);
    v9 = MiSessionLookupImage(a3);
    LOBYTE(v10) = OldIrql;
    v11 = v9;
    MmUnlockLoadedModuleListShared(v10);
    return v11 != 0i64;
  }
  return v8;
}

Referenced by:

RtlpWalkFrameChain