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