KiSendHeteroRescheduleIntRequest

CHAR __fastcall KiSendHeteroRescheduleIntRequest(_QWORD *a1){
  __int64 *v2; 
  __int64 v3; 
  __int64 v4; 
  __int64 v5; 
  UINT64 a3; 
  __int64 a2; 
  v2 = (__int64 *)a1[24];
  v3 = v2[1];
  if( (v3 & a1[4235]) != 0 )
  {
    a2 = 0i64;
    LODWORD(a3) = -1;
    v4 = a1[25];
    v3 = *v2;
    v5 = v2[27];
    if( (v4 & *v2) != 0 && (v4 & v5) != 0 )
    {
      LOBYTE(v3) = KiSendHeteroRescheduleIntRequestHelper(v2[10] & ~v2[3] & (v5 ^ v2[17]), &a2, &a3, (INT64)a1);
      if( (_BYTE)v3 )
      {
        LOBYTE(v3) = KiSendHeteroRescheduleIntRequestHelper(1i64 << a3, 0i64, 0i64, (INT64)a1);
        if( !(_BYTE)v3 )
          LOBYTE(v3) = KiSendHeteroRescheduleIntRequestHelper(a2 ^ (1i64 << a3), 0i64, 0i64, (INT64)a1);
      }
    }
  }
  return v3;
}

Referenced by:

KeTransitionProcessorParkState
KiIdleSchedule
KiSwapThread