KiIpiInterruptSubDispatch

VOID __stdcall KiIpiInterruptSubDispatch(){
  __int64 v0; 
  unsigned __int8 CurrentIrql; 
  struct _KPRCB *CurrentPrcb; 
  __int64 v3; 
  UINT64 v4; 
  __int64 v5; 
  UINT64 v6; 
  int v7; 
  CurrentIrql = KeGetCurrentIrql();
  __writecr8(0xEui64);
  *(_BYTE *)(v0 - 87) = CurrentIrql;
  CurrentPrcb = KeGetCurrentPrcb();
  if( ++*((_BYTE *)CurrentPrcb + 32) == 1 )
  {
    v3 = *((_QWORD *)CurrentPrcb + 1);
    v4 = __rdtsc() - *((_QWORD *)CurrentPrcb + 4056);
    *(_QWORD *)(v3 + 72) += v4;
    v5 = *(unsigned int *)(v3 + 80);
    *((_QWORD *)CurrentPrcb + 4056) += v4;
    v6 = v4 + v5;
    v7 = v6;
    if( HIDWORD(v6) )
      v7 = -1;
    *(_DWORD *)(v3 + 80) = v7;
    if( (*(_BYTE *)(v3 + 2) & 0x3E) != 0 )
      KiEndThreadAccountingPeriod(KeGetCurrentPrcb(), (_KTHREAD *)v3, v4);
  }
  _enable();
  KiIpiProcessRequests(0i64, 0i64);
  _disable();
}

Referenced by:

KiIpiInterrupt