KiMaskInterruptInternal

VOID __fastcall KiMaskInterruptInternal(UINT64 Vector, _BYTE *Gsiv){
  unsigned int v2; 
  _DWORD *v3; 
  char *v4; 
  char *v5; 

  v2 = (unsigned int)Gsiv;
  v3 = KeGetCurrentPrcb()->InterruptObject[((unsigned __int8(__fastcall *)(UINT64))off_140C00618[0])(Vector)];
  if( v3 )
  {
    if( *((NTSTATUS(__stdcall **)())v3 + 10) == KiChainedDispatch )
    {
      v4 = (char *)(v3 + 2);
      v5 = v4;
      while( (*((_DWORD *)v5 + 24) & 1) != 0 )
      {
        v5 = *(char **)v5;
        if( v5 == v4 )
          goto LABEL_4;
      }
    }
    else if( (v3[26] & 1) != 0 )
    {
LABEL_4:
      ((void(__fastcall *)(_QWORD, _QWORD))off_140C00770[0])(v2, 0i64);
    }
  }
}

Referenced by:

KeMaskInterrupt
KiMaskInterruptDpc