KiTrackSystemCallEntry

INT64 __fastcall KiTrackSystemCallEntry(PVOID SysCallAddress, INT64 a2, INT64 a3, INT64 a4){
  int v6; 
  INT64 v8; 
  int v9; 
  int v10; 
  INT64 v11; 
  v6 = a3;
  if( !KeIsTraceCallbackAllowed(*((_BYTE *)KeGetCurrentThread() + 562)) )
    return 0i64;
  v8 = *(_QWORD *)KiSystemServiceTraceCallbackTable;
  if( (*(_BYTE *)(KiSystemServiceTraceCallbackTable + 8) & 1) != 0 && v8 )
    v8 ^= KiSystemServiceTraceCallbackTable;
  v9 = *(_BYTE *)(KiSystemServiceTraceCallbackTable + 8) & 1;
  while( v8 )
  {
    v10 = KiSystemServiceTraceTableCompareFunction((UINT64)SysCallAddress, v8);
    if( v10 >= 0 )
    {
      if( v10 <= 0 )
        break;
      v11 = *(_QWORD *)(v8 + 8);
    }
    else
    {
      v11 = *(_QWORD *)v8;
    }
    if( v9 && v11 )
      v8 ^= v11;
    else
      v8 = v11;
  }
  if( v8 && *(_BYTE *)(v8 + 40) && KiDynamicTraceEnabled )
  {
    _InterlockedIncrement(&KiSystemServiceTraceCallbacksActive);
    if( *(_BYTE *)(v8 + 40) )
      ((void(__fastcall *)(_QWORD, _QWORD, _QWORD, INT64, int, INT64))qword_140CFBBA0)(
        *(_QWORD *)(v8 + 24),
        *(_QWORD *)(v8 + 48),
        *(unsigned int *)(v8 + 32),
        a2,
        v6,
        a4);
    _InterlockedDecrement(&KiSystemServiceTraceCallbacksActive);
  }
  return v8;
}

Referenced by:

KiSystemCall64