KiAbDeferredProcessingWorker
VOID __stdcall KiAbDeferredProcessingWorker(_KDPC *Dpc, VOID *DpcContext, VOID *SystemArgument1, VOID *SystemArgument2){
_SINGLE_LIST_ENTRY *v4;
_SINGLE_LIST_ENTRY *PropagateBoostsList;
_SINGLE_LIST_ENTRY *Next;
_SINGLE_LIST_ENTRY *v8;
int v9[8];
_SINGLE_LIST_ENTRY ReadyList;
ReadyList.Next = 0i64;
v4 = (_SINGLE_LIST_ENTRY *)((char *)SystemArgument1 + 34672);
PropagateBoostsList = (_SINGLE_LIST_ENTRY *)((char *)SystemArgument1 + 34680);
while( 1 )
{
Next = v4->Next;
if( !v4->Next )
{
KiAbPropagateBoosts(PropagateBoostsList, v4, &ReadyList);
Next = v4->Next;
if( !v4->Next )
break;
}
v8 = Next - 102;
v4->Next = Next->Next;
Next->Next = (_SINGLE_LIST_ENTRY *)1;
_InterlockedOr(v9, 0);
if( HIBYTE(Next[6].Next) )
KiAbProcessThreadLocks((_KTHREAD *)&Next[-102], 0i64, 0i64, 1ui64, &ReadyList, PropagateBoostsList, 0i64);
_InterlockedDecrement16((volatile signed __int16 *)&v8[108].Next + 2);
}
*((_QWORD *)SystemArgument1 + 4340) = 0i64;
KiReadyDeferredReadyList((_KPRCB *)SystemArgument1, &ReadyList);
}Referenced by:
No references.