KiHandleBound

INT64 __stdcall KiHandleBound(){
  _ETHREAD *CurrentThread; 
  unsigned int v1; 
  struct EX_RUNDOWN_REF *v2; 
  struct _EX_RUNDOWN_REF *v3; 
  signed __int64 v4; 
  signed __int64 v5; 
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v1 = 0;
  --*((_WORD *)CurrentThread + 242);
  v2 = ExReferenceCallBackBlock(&KiBoundsCallback);
  v3 = v2;
  if( v2 )
  {
    v1 = ((__int64(*)(void))v2[1].Count)();
    _m_prefetchw(&KiBoundsCallback);
    v4 = KiBoundsCallback;
    while( ((unsigned __int64)v3 ^ v4) < 0xF )
    {
      v5 = v4;
      v4 = _InterlockedCompareExchange64(&KiBoundsCallback, v4 + 1, v4);
      if( v5 == v4 )
        goto LABEL_6;
    }
    ExReleaseRundownProtection(v3);
  }
LABEL_6:
  KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
  return v1;
}

Referenced by:

KiBoundFault