KiResetScb
void __fastcall KiResetScb(__int64 a1, __int64 a2){
bool v2;
__int64 v4;
_DWORD *v5;
__int64 v6;
int v7;
_KPRCB *v8;
__int64 v9;
*(_BYTE *)(a1 + 112) &= 0xF1u;
v2 = (*(_BYTE *)(a1 + 112) & 0x20) == 0;
v4 = a1;
*(_QWORD *)a1 = 0i64;
*(_QWORD *)(a1 + 24) = 0i64;
*(_QWORD *)(a1 + 40) = 0i64;
*(_QWORD *)(a1 + 56) = 0i64;
*(_DWORD *)(a1 + 116) = 0;
if( v2 )
{
v5 = *(_DWORD **)(a1 + 120);
if( v5 )
*v5 = 0;
}
else
{
*(_DWORD *)(a1 + 128) = 0;
}
if( *(_WORD *)(a1 + 114) )
{
if( !*(_DWORD *)(a1 + 116) )
{
do
{
v6 = *(_QWORD *)(a1 + 408);
if( !v6 )
break;
a1 = *(_QWORD *)(a1 + 408);
}
while( !*(_DWORD *)(v6 + 116) );
}
v7 = *(_DWORD *)(a1 + 116);
v8 = 0i64;
if( !v7 )
v8 = (_KPRCB *)a2;
KiMoveScbThreadsToNewReadylist((_KSCB *)v4, (_KSCB *)(a1 & -(__int64)(v7 != 0)), v8, 0i64);
if( (*(_BYTE *)(v4 + 112) & 1) != 0 )
{
v9 = *(_QWORD *)(v4 + 392);
if( (*(_BYTE *)(v4 + 400) & 1) != 0 )
{
if( !v9 )
{
LABEL_16:
KiRemoveSchedulingGroupQueue((_KPRCB *)a2, (_KSCB *)v4, 0);
return;
}
v9 ^= v4 + 392;
}
if( !v9 )
goto LABEL_16;
}
}
}Referenced by:
KiUpdateCpuTargetByRate
KiUpdateCpuTargetByWeight