KiRemoveQueueApc

UINT8 __stdcall KiRemoveQueueApc(_KAPC *Apc){
  unsigned __int8 Inserted; 
  _LIST_ENTRY *p_ApcListEntry; 
  __int64 ApcMode; 
  $F25F8C4BA33AF922A5F1AF68CD89DDDF *v5; 
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY *Blink; 
  _LIST_ENTRY *v8; 

  Inserted = Apc->Inserted;
  if( Inserted )
  {
    p_ApcListEntry = &Apc->ApcListEntry;
    ApcMode = Apc->ApcMode;
    v5 = &Apc->Thread->Tcb.152;
    Apc->Inserted = 0;
    Flink = Apc->ApcListEntry.Flink;
    Blink = Apc->ApcListEntry.Blink;
    if( Flink->Blink != &Apc->ApcListEntry || Blink->Flink != p_ApcListEntry )
      __fastfail(3u);
    Blink->Flink = Flink;
    Flink->Blink = Blink;
    if( Blink == Flink )
    {
      v8 = &v5->ApcState.ApcListHead[ApcMode];
      if( p_ApcListEntry->Flink == v8 && Apc->ApcListEntry.Blink == v8 )
      {
        if( (_BYTE)ApcMode )
          v5->ApcState.UserApcPendingAll &= ~2u;
        else
          v5->ApcState.KernelApcPending = 0;
      }
    }
  }
  return Inserted;
}

Referenced by:

KeRemoveQueueApc
KiSchedulerApc