KiRemoveThreadFromReadyQueue
__int64 __fastcall KiRemoveThreadFromReadyQueue(__int64 a1, __int64 a2, char a3){
_QWORD *v3;
_QWORD *v4;
__int64 result;
if( (*(_DWORD *)(a2 - 96) & 0x400000) != 0 )
_InterlockedAnd(*(volatile signed __int32 **)(a2 + 752), 0xFFFBFFFF);
v3 = *(_QWORD **)a2;
v4 = *(_QWORD **)(a2 + 8);
if( *(_QWORD *)(*(_QWORD *)a2 + 8i64) != a2 || *v4 != a2 )
__fastfail(3u);
*v4 = v3;
v3[1] = v4;
if( v4 == v3 )
*(_DWORD *)(a1 + 31768) ^= 1 << a3;
--*(_DWORD *)(a1 + 32436);
result = *(unsigned int *)(a2 + 1352);
*(_QWORD *)(a1 + 32440) -= result;
return result;
}Referenced by:
KiFindReadyThread
KiQuantumEnd
KiRemoveThreadFromAnyReadyQueue
KiSelectReadyThread