public async ValueTask CopyDataTo(Stream output) { await using var in_file = await _bsa._fileName.OpenRead(); using var rdr = new BinaryReader(in_file); rdr.BaseStream.Position = _dataOffset; if (_bsa.HeaderType == VersionType.SSE) { if (Compressed) { using var r = LZ4Stream.Decode(rdr.BaseStream); await r.CopyToLimitAsync(output, (int)_originalSize); } else { await rdr.BaseStream.CopyToLimitAsync(output, (int)_onDiskSize); } } else { if (Compressed) { await using var z = new InflaterInputStream(rdr.BaseStream); await z.CopyToLimitAsync(output, (int)_originalSize); } else { await rdr.BaseStream.CopyToLimitAsync(output, (int)_onDiskSize); } } }