public FieldListEntry(Stream s) { pos = (uint)s.Position; u1 = StreamHelper.ReadU16(s); switch (u1) { case 0x1502: u2 = StreamHelper.ReadU16(s); u3 = StreamHelper.ReadU16(s); if ((u3 & 0x8000) != 0) { u4 = StreamHelper.ReadU32(s); } name = StreamHelper.ReadCString(s); break; case 0x150D: u2 = StreamHelper.ReadU16(s); u3 = StreamHelper.ReadU16(s); u4 = StreamHelper.ReadU32(s); if ((u4 & 0x80000000) != 0) { u5 = StreamHelper.ReadU32(s); } name = StreamHelper.ReadCString(s); break; case 0x150E: case 0x150F: case 0x1510: case 0x1511: u2 = StreamHelper.ReadU16(s); u3 = StreamHelper.ReadU16(s); u4 = StreamHelper.ReadU16(s); if ((u2 & 0x10) != 0 && u2 != 0x16) { u5 = StreamHelper.ReadU32(s); } name = StreamHelper.ReadCString(s); break; case 0x1400: u2 = StreamHelper.ReadU16(s); u3 = StreamHelper.ReadU16(s); u4 = StreamHelper.ReadU32(s); name = ""; break; case 0x1401: u2 = StreamHelper.ReadU16(s); u3 = StreamHelper.ReadU16(s); u4 = StreamHelper.ReadU32(s); StreamHelper.ReadU32(s); StreamHelper.ReadU16(s); name = ""; break; case 0x1402: u2 = StreamHelper.ReadU16(s); u3 = StreamHelper.ReadU16(s); u4 = StreamHelper.ReadU32(s); u5 = StreamHelper.ReadU32(s); StreamHelper.ReadU16(s); name = ""; break; case 0x1404: u2 = StreamHelper.ReadU16(s); u3 = StreamHelper.ReadU16(s); u4 = StreamHelper.ReadU16(s); u5 = StreamHelper.ReadU16(s); StreamHelper.ReadU16(s); name = ""; break; case 0x1409: u2 = StreamHelper.ReadU16(s); u3 = StreamHelper.ReadU16(s); u4 = StreamHelper.ReadU16(s); name = ""; break; default: throw new Exception(); } StreamHelper.Align(s); }