CmpGetSecurityCacheEntryForKcbStack

LIST_ENTRY *__fastcall CmpGetSecurityCacheEntryForKcbStack(INT64 a1, INT64 a2, INT64 a3){
  INT64 v3; 
  INT16 v4; 
  LIST_ENTRY *i; 
  INT64 KcbAtLayerHeight; 
  __int16 v7; 
  char v8; 
  v3 = a2;
  v4 = *(_WORD *)(a1 + 2);
  for( i = 0i64; v4 >= 0; v4 = v7 - 1 )
  {
    KcbAtLayerHeight = CmpGetKcbAtLayerHeight(a1, v4);
    a3 = *(unsigned __int16 *)(KcbAtLayerHeight + 66);
    if( (_WORD)a3 && *(_BYTE *)(KcbAtLayerHeight + 65) == 1 )
      break;
    if( *(_DWORD *)(KcbAtLayerHeight + 40) != -1 )
    {
      i = (LIST_ENTRY *)KcbAtLayerHeight;
      if( (_WORD)a3 )
      {
        if( *(_BYTE *)(KcbAtLayerHeight + 65) != v8 )
          break;
      }
    }
  }
  return CmGetKCBCacheSecurity(i, v3, a3);
}

Referenced by:

CmpCheckCreateAccessOnKcbStack
CmpCheckKcbStackAccess
CmpCheckKeyBodyAccess
CmpCheckKeyOwnerForPca
CmpCheckNotifyAccess
CmpDoAccessCheckOnLayeredSubtree
CmpGetSecurityDescriptorForKcbStack
CmpQueryKeySecurity
CmpSnapshotKcbStackSecurity