KiDebugTrapOrFault

VOID __fastcall KiDebugTrapOrFault(INT64 a1, INT64 a2, INT64 a3, UINT64 a4, INT64 a5, INT64 a6, INT64 a7, INT64 a8){
  bool v8; 
  __int64 v9; 
  void *retaddr; 
  __int16 v12; 
  INT64 v13; 
  void *v14; 
  INT64 v15; 
  v8 = (v12 & 1) == 0;
  if( (v12 & 1) != 0 )
  {
LABEL_6:
    if( v8 || (KiKvaShadow & 1) != 0 )
    {
      _mm_lfence();
    }
    else
    {
      __swapgs();
      _mm_lfence();
      __swapgs();
    }
    KxDebugTrapOrFault(v15, v13, a3, a4);
  }
  else
  {
    v9 = 8i64;
    while( retaddr != (void *)KiDebugTraps[v9 - 1] )
    {
      if( !--v9 )
      {
        v8 = 1;
        goto LABEL_6;
      }
    }
    if( (KiCpuTracingFlags & 2) != 0 )
      __writemsr(0x1D9u, __readmsr(0x1D9u) | 1);
    if( (KiKvaShadow & 1) == 0 )
      __iretq(retaddr, v12, v13, v14, v15);
    KiKernelIstExit(a1, a2, a3, a4, a5, a6, a7, a8);
  }
}

Referenced by:

KiDebugTrapOrFaultShadow