FsRtlEmptyFreePoolList

VOID __stdcall FsRtlEmptyFreePoolList(_LIST_ENTRY *FreePoolList){
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY *v3; 
  _LIST_ENTRY **p_Blink; 
  _LIST_ENTRY *Blink; 
  while( 1 )
  {
    Flink = FreePoolList->Flink;
    if( FreePoolList->Flink == FreePoolList )
      break;
    v3 = Flink->Flink;
    p_Blink = &Flink[-2].Blink;
    if( Flink->Flink->Blink != Flink || (Blink = Flink->Blink, Blink->Flink != Flink) )
      __fastfail(3u);
    Blink->Flink = v3;
    v3->Blink = Blink;
    if( ((_DWORD)p_Blink[7] & 1) != 0 )
      ExFreePoolWithTag(p_Blink, 0);
    else
      ExFreeToNPagedLookasideList((NPAGED_LOOKASIDE_LIST *)TunnelLookasideList, p_Blink);
  }
}

Referenced by:

FsRtlAddToTunnelCacheEx
FsRtlDeleteKeyFromTunnelCache
FsRtlFindInTunnelCacheEx