ArrayContains

INT64 __fastcall ArrayContains(
        UINT8 *Array,
        UINT64 ArraySize,
        UINT8 *ContainsArray,
        UINT64 ContainsArraySize,
        UINT64 ArrayElementSize){
  unsigned int v5; 
  unsigned __int64 v8; 
  unsigned __int64 v9; 
  unsigned __int64 v10; 
  __int64 v11; 
  v5 = 0;
  if( !(_DWORD)ArraySize )
    return 0i64;
  if( !(_DWORD)ContainsArraySize )
    return 0i64;
  if( !Array )
    return 0i64;
  if( !ContainsArray )
    return 0i64;
  if( (unsigned int)ContainsArraySize > (unsigned int)ArraySize )
    return 0i64;
  v8 = (unsigned int)ArraySize;
  if( (ArraySize & 0xF) != 0 || (ContainsArraySize & 0xF) != 0 )
    return 0i64;
  v9 = 0i64;
  do
  {
    if( v9 >= v8 )
      break;
    v10 = 0i64;
    do
    {
      v11 = *(_QWORD *)&Array[v9] - *(_QWORD *)&ContainsArray[v10];
      if( !v11 )
        v11 = *(_QWORD *)&Array[v9 + 8] - *(_QWORD *)&ContainsArray[v10 + 8];
      if( !v11 )
        v5 = 1;
      v10 += 16i64;
    }
    while( v10 < (unsigned int)ContainsArraySize );
    v9 += 16i64;
  }
  while( !v5 );
  return v5;
}

Referenced by:

PropertyEval