RtlpFreeAllAtom

VOID __stdcall RtlpFreeAllAtom(_RTL_ATOM_TABLE_ENTRY *AtomEntry, _RTL_ATOM_TABLE *AtomTable){
  _RTL_ATOM_TABLE_ENTRY *v3; 
  _RTL_ATOM_TABLE_REFERENCE *p_Reference; 
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY *v6; 
  _RTL_ATOM_TABLE_ENTRY *a; 
  _RTL_ATOM_TABLE_ENTRY **v8; 
  _RTL_ATOM_TABLE_REFERENCE *v9; 

  a = AtomEntry;
  v8 = 0i64;
  if( RtlpHashStringToAtom(AtomTable, AtomEntry->Name, 0, &v8, 0i64, &v9, &a) >= 0 )
  {
    v3 = a;
    if( a )
    {
      if( v8 )
        *v8 = a->HashLink;
      p_Reference = &v3->Reference;
      while( 1 )
      {
        Flink = p_Reference->LowBoxList.Flink;
        if( (_RTL_ATOM_TABLE_REFERENCE *)p_Reference->LowBoxList.Flink == p_Reference )
          break;
        if( (_RTL_ATOM_TABLE_REFERENCE *)Flink->Blink != p_Reference
          || (v6 = Flink->Flink, Flink->Flink->Blink != Flink) )
        {
          __fastfail(3u);
        }
        p_Reference->LowBoxList.Flink = v6;
        v6->Blink = &p_Reference->LowBoxList;
        RtlpFreeAtom(Flink);
      }
      RtlpFreeHandleForAtom(AtomTable, v3);
      RtlpFreeAtom(v3);
    }
  }
}

Referenced by:

RtlpDereferenceAtom