void ReadExports(MemoryStream fs)
{
fs.Seek(ExportOffset, SeekOrigin.Begin);
exports = new List<ME2ExportEntry>();
byte[] buffer;
for (int i = 0; i < ExportCount; i++)
{
long start = fs.Position;
fs.Seek(40, SeekOrigin.Current);
int count = fs.ReadValueS32();
fs.Seek(4 + count * 12, SeekOrigin.Current);
count = fs.ReadValueS32();
fs.Seek(4 + count * 4, SeekOrigin.Current);
fs.Seek(16, SeekOrigin.Current);
long end = fs.Position;
fs.Seek(start, SeekOrigin.Begin);
ME2ExportEntry exp = new ME2ExportEntry(this, fs.ReadBytes((int)(end - start)), (uint)start);
buffer = new byte[exp.DataSize];
fs.Seek(exp.DataOffset, SeekOrigin.Begin);
fs.Read(buffer, 0, buffer.Length);
exp.Data = buffer;
exp.DataChanged = false;
exp.Index = i;
exp.PropertyChanged += exportChanged;
exports.Add(exp);
fs.Seek(end, SeekOrigin.Begin);
}
}