BiFreeIdentifierList

VOID __stdcall BiFreeIdentifierList(LIST_ENTRY *IdentifierList){
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY *v3; 
  _LIST_ENTRY *v4; 
  _LIST_ENTRY *Blink; 
  _LIST_ENTRY *v6; 
  Flink = IdentifierList->Flink;
  while( Flink != IdentifierList )
  {
    v3 = Flink->Flink;
    v4 = Flink;
    Flink = v3;
    if( v3->Blink != v4 || (Blink = v4->Blink, Blink->Flink != v4) )
      __fastfail(3u);
    Blink->Flink = v3;
    v3->Blink = Blink;
    if( ((__int64)v4[3].Flink & 1) != 0 )
    {
      v6 = v4[2].Blink;
      if( v6 )
        ExFreePoolWithTag(v6, 0x4B444342u);
    }
    ExFreePoolWithTag(v4, 0x4B444342u);
  }
}

Referenced by:

BiBindEfiNamespaceObjects
BiBuildIdentifierList
BiExportStoreAlterationsToEfi