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.