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; 
  struct _RTL_DYNAMIC_HASH_TABLE_CONTEXT Context; 
  v4 = v2;
  memset(&Context, 0, sizeof(Context));
  v5 = v3;
  v7 = 0i64;
  v8 = 0;
  NextEntryHashTable = RtlLookupEntryHashTable(HashTable, v1, &Context);
  if( NextEntryHashTable )
  {
    v10 = *v4;
    do
    {
      v7 = NextEntryHashTable;
      if( v10 == LODWORD(NextEntryHashTable[1].Linkage.Blink) )
      {
        if( v10 )
        {
          if( v10 == 1
            && RtlEqualUnicodeString((UNICODE_STRING *)(v4 + 2), (UNICODE_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