public HeuristicResult Match(IHeuristicReader reader) { var data = reader.Read(0x10); if (data.Length < 0x10) { return(null); } var length = Bitter.ToInt32S(data); if (length == 0) { return(null); } if ((length & 0x7FF) != 0) { return(null); } if (data[0x05] == 0) { return(null); } var sampleRate = Bitter.ToInt16S(data, 6); if (sampleRate == 0) { return(null); } if (data[0x08] == 0) { return(null); } if (data[0x08] > 2) { return(null); } return(new VagHeuristicResult(this) { Start = 0x800, Interleave = 0x800, Channels = data[0x08], SampleRate = sampleRate, Length = length }); }