KiRemoveQueueApc

UINT8 __stdcall KiRemoveQueueApc(KAPC *Apc){
  unsigned __int8 Inserted; 
  _LIST_ENTRY *p_ApcListEntry; 
  __int64 ApcMode; 
  char *v5; 
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY *Blink; 
  _LIST_ENTRY *v8; 
  Inserted = Apc->Inserted;
  if( Inserted )
  {
    p_ApcListEntry = &Apc->ApcListEntry;
    ApcMode = Apc->ApcMode;
    v5 = (char *)Apc->Thread + 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 = (_LIST_ENTRY *)&v5[16 * ApcMode];
      if( p_ApcListEntry->Flink == v8 && Apc->ApcListEntry.Blink == v8 )
      {
        if( (_BYTE)ApcMode )
          v5[42] &= ~2u;
        else
          v5[41] = 0;
      }
    }
  }
  return Inserted;
}

Referenced by:

KeRemoveQueueApc
KiSchedulerApc