MmSetHardFaultBehavior

__int64 __fastcall MmSetHardFaultBehavior(__int64 a1, int a2){
  bool v2; 
  unsigned __int64 v4; 
  struct _KPRCB *CurrentPrcb; 
  __int64 v7; 
  signed __int32 v8; 
  v2 = a2 == 0;
  v4 = 26i64;
  if( v2 )
  {
    CurrentPrcb = KeGetCurrentPrcb();
    v7 = *((int *)CurrentPrcb + 8391);
    if( (_DWORD)v7 == -1 )
      goto LABEL_11;
    if( (unsigned __int64)(v7 + 26) <= 0x100 )
    {
      do
      {
        v8 = _InterlockedCompareExchange((volatile signed __int32 *)CurrentPrcb + 8391, v7 + 26, v7);
        v2 = (_DWORD)v7 == v8;
        LODWORD(v7) = v8;
        if( v2 )
          goto LABEL_8;
      }
      while( v8 != -1 && (unsigned __int64)(v8 + 26i64) <= 0x100 );
    }
    if( (int)v7 > 192
      && (_DWORD)v7 != -1
      && (_DWORD)v7 == _InterlockedCompareExchange((volatile signed __int32 *)CurrentPrcb + 8391, 192, v7) )
    {
      v4 = (int)v7 - 192 + 26i64;
    }
    if( v4 )
LABEL_11:
      _InterlockedExchangeAdd64(&qword_140C526C0, v4);
LABEL_8:
    *(_BYTE *)(a1 + 1304) &= ~4u;
    KiLeaveGuardedRegionUnsafe(a1);
    return 0i64;
  }
  if( (unsigned int)MiChargeResident(&MiSystemPartition, 0x1Aui64, 1024i64) )
  {
    --*(_WORD *)(a1 + 486);
    *(_BYTE *)(a1 + 1304) |= 4u;
    return 0i64;
  }
  return 3221225626i64;
}

Referenced by:

SMKM_STORE::SmStWorker