RtlValidateCorrelationVector

INT64 __fastcall RtlValidateCorrelationVector(BYTE *a1){
  int LastContiguosBase64Position; 
  int CorrelationVectorEndPosition; 
  const INT8 *v4; 
  int v6; 
  __int64 v7; 
  __int64 v8; 
  int v9; 
  __int64 v10; 
  va_list v11; 
  if( !a1 || (int)RtlpGetCorrelationVectorBufferLength(a1) < 0 )
    return 3221225485i64;
  LastContiguosBase64Position = RtlpGetLastContiguosBase64Position(a1);
  CorrelationVectorEndPosition = RtlpGetCorrelationVectorEndPosition(a1);
  if( *a1 == 1 )
  {
    if( LastContiguosBase64Position != 15 )
      return 3221225485i64;
  }
  else if( *a1 == 2 && LastContiguosBase64Position != 21 )
  {
    return 3221225485i64;
  }
  v6 = LastContiguosBase64Position + 1;
  v7 = v6;
  if( a1[v6 + 1] != 46 )
    return 3221225485i64;
  v8 = CorrelationVectorEndPosition;
  while( v7 < v8 )
  {
    if( a1[v7 + 1] == 46 )
    {
      ++v6;
      ++v7;
      v9 = 0;
      v10 = v6;
      if( v7 < v8 )
      {
        do
        {
          if( (unsigned __int8)(a1[v7 + 1] - 48) > 9u )
            break;
          ++v6;
          ++v7;
          ++v9;
        }
        while( v7 < v8 );
        if( v9
          && v9 <= 10
          && (v9 != 10 || (int)strncmp((INT8 *)&a1[v10 + 1], (size_t)"2147483647", 0xAui64, v4, v11) <= 0) )
        {
          continue;
        }
      }
    }
    return 3221225485i64;
  }
  return 0i64;
}

Referenced by:

No references.