SepFindMatchingCachedHandlesEntry

NTSTATUS __stdcall SepFindMatchingCachedHandlesEntry(PRTL_DYNAMIC_HASH_TABLE HashTable){
  UINT64 v1; 
  int *v2; 
  __int64 *v3; 
  int *v4; 
  __int64 *v5; 
  _RTL_DYNAMIC_HASH_TABLE_ENTRY *v7; 
  char v8; 
  _RTL_DYNAMIC_HASH_TABLE_ENTRY *NextEntryHashTable; 
  int v10; 
  _RTL_DYNAMIC_HASH_TABLE_CONTEXT Context; 

  v4 = v2;
  memset(&Context, 0, sizeof(Context));
  v5 = v3;
  v7 = 0i64;
  v8 = 0;
  NextEntryHashTable = (_RTL_DYNAMIC_HASH_TABLE_ENTRY *)RtlLookupEntryHashTable(HashTable, v1, &Context);
  if( NextEntryHashTable )
  {
    v10 = *v4;
    do
    {
      v7 = NextEntryHashTable;
      if( v10 == LODWORD(NextEntryHashTable[1].Linkage.Blink) )
      {
        if( v10 )
        {
          if( v10 == 1
            && (unsigned __int8)RtlEqualUnicodeString(
                                  (PCUNICODE_STRING)(v4 + 2),
                                  (PCUNICODE_STRING)&NextEntryHashTable[1].Signature,
                                  1u) )
          {
            v8 = 1;
          }
        }
        else if( RtlEqualSid(*((PVOID *)v4 + 1), (PVOID)NextEntryHashTable[1].Signature) )
        {
          v8 = 1;
        }
        if( v8 )
          break;
      }
      NextEntryHashTable = RtlGetNextEntryHashTable(HashTable, &Context);
    }
    while( NextEntryHashTable );
  }
  *v5 = (unsigned __int64)v7 & -(__int64)(v8 != 0);
  return 0;
}

Referenced by:

SepGetCachedHandlesEntry