CmpGetSecurityCellForKeyNodeStack

INT64 __fastcall CmpGetSecurityCellForKeyNodeStack(INT16 *a1, _QWORD *a2, _DWORD *a3){
  __int16 v3; 
  INT16 *v6; 
  _QWORD *i; 
  __int64 *EntryAtLayerHeight; 
  __int16 v9; 
  __int64 v10; 
  int EffectiveKeyNodeSemantics; 
  _QWORD *v12; 
  INT64 result; 

  v3 = *a1;
  v6 = a1;
  for( i = 0i64; v3 >= 0; v3 = v9 - 1 )
  {
    EntryAtLayerHeight = (__int64 *)CmpKeyNodeStackGetEntryAtLayerHeight((INT64)v6, v3);
    v10 = EntryAtLayerHeight[2];
    if( v10 )
    {
      EffectiveKeyNodeSemantics = CmpGetEffectiveKeyNodeSemantics(*EntryAtLayerHeight, v10);
      if( EffectiveKeyNodeSemantics == 1 )
        break;
      i = v12;
      if( EffectiveKeyNodeSemantics )
        break;
    }
  }
  *a2 = *i;
  result = i[2];
  *a3 = *(_DWORD *)(result + 44);
  return result;
}

Referenced by:

CmpCheckKeyNodeStackAccess
CmpCopyMergeOfLayeredKeyNode