KiIntSteerDistributeInterrupts

INT64 __fastcall KiIntSteerDistributeInterrupts(){
  INT64 v0; 
  INT64 v1; 
  INT64 v2; 
  __int64 v3; 
  INT64 i; 
  INT64 v6; 
  INT64 v7; 
  INT64 v8; 
  INT64 v9[2]; 
  v1 = KiIntTrackRootList;
  for( *(_OWORD *)v9 = 0i64; (INT64 *)v1 != &KiIntTrackRootList; v1 = *(_QWORD *)v1 )
  {
    if( *(_BYTE *)(v1 + 132) )
    {
      v2 = *(_QWORD *)(v1 + 176);
      v3 = *(_QWORD *)(v1 + 160);
      if( v2 != v3 )
      {
        LOWORD(v9[1]) = *(_WORD *)(v1 + 184);
        if( LOWORD(v9[1]) == *(_WORD *)(v1 + 168) )
          v6 = v2 & ~v3;
        else
          v6 = v2;
        v9[0] = v6;
        KiIntSteerUpdateDeviceInterruptMask((INT64)v9, 0i64, v0);
      }
    }
  }
  for( i = KiIntTrackRootList; (INT64 *)i != &KiIntTrackRootList; i = *(_QWORD *)i )
  {
    if( *(_BYTE *)(i + 132) && *(_QWORD *)(i + 176) != *(_QWORD *)(i + 160) )
    {
      KiIntSteerSetDestination(i, i + 176);
      LOWORD(v9[1]) = *(_WORD *)(i + 184);
      if( *(_WORD *)(i + 168) == LOWORD(v9[1]) )
        v8 = *(_QWORD *)(i + 160) & ~*(_QWORD *)(i + 176);
      else
        v8 = *(_QWORD *)(i + 160);
      v9[0] = v8;
      KiIntSteerUpdateDeviceInterruptMask((INT64)v9, 1i64, v7);
      *(_WORD *)(i + 168) = *(_WORD *)(i + 184);
      *(_QWORD *)(i + 160) = *(_QWORD *)(i + 176);
    }
  }
  return 0i64;
}

Referenced by:

KeIntSteerPeriodic