From 825c6bde8038dcb024a25b89a3591fbc21b25d1d Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Sat, 4 Jul 2020 06:45:20 +0000 Subject: [PATCH] start moving beyond PMModelItemInfo --- dump-spo2.c | 64 +++++++++++++++++++++++++--- spo-notes | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 178 insertions(+), 6 deletions(-) diff --git a/dump-spo2.c b/dump-spo2.c index 70622943e0..9bef78c566 100644 --- a/dump-spo2.c +++ b/dump-spo2.c @@ -793,13 +793,32 @@ parse_dimension(int i) parse_category(1, j, &n_leaves); } +static void skip_item(const char *name); + static void parse_PMModelItemInfo(void) { for (int i = 0; i < n_dims; i++) parse_dimension(i); printf("%#x: end of model\n", pos); - exit(0); + + int n_units16 = get_u32(); + match_u16_assert(0); + for (int j = 0; j < n_units16; j++) + get_u16(); + + n_units16 = get_u32(); + match_u16_assert(1); + for (int j = 0; j < n_units16; j++) + get_u16(); + + match_byte_assert(0); + int n_units32 = get_u32(); + match_u16_assert(0); + for (int j = 0; j < n_units32; j++) + match_u32_assert(j); + + skip_item("end of PMModelItemInfo"); } static void @@ -996,17 +1015,38 @@ skip_item(const char *name) { int start_pos = pos; printf("%#x: skipping %s bytes...", pos, name); - while (data[pos + 1] != 0x80 + while (pos < n + && data[pos + 1] != 0x80 && !(data[pos] == 0xff && data[pos + 1] == 0xff && data[pos + 2] == 0 && data[pos + 3] == 0)) { - assert(pos < n); pos++; } printf("until %#x:", pos); hex_dump(stdout, start_pos, pos - start_pos); } +static void +parse_DspAnnotation(void) +{ + match_zeros_assert(10); + match_u32_assert(1); +} + +static void +parse_DspTextComponentHandle(void) +{ + match_byte_assert(0); + match_DspString(); + printf("after DspTextComponentHandle: "); + for (int i = 0; ; i++) + if (!memcmp(&data[pos + 6 + i], "PVView", 6)) + { + hex_dump(stdout, pos, i); + exit(0); + } +} + static void parse_flexible(void) { @@ -1075,6 +1115,10 @@ parse_flexible(void) parse_PVCellStyle(); else if (!strcmp(heading, "PVTextStyle")) exit(0); + else if (!strcmp(heading, "DspAnnotation")) + parse_DspAnnotation(); + else if (!strcmp(heading, "DspTextComponentHandle")) + parse_DspTextComponentHandle(); else { fprintf(stderr, "don't know %s at offset 0x%x: ", heading, start); @@ -1091,7 +1135,15 @@ parse_flexible(void) else if (data[pos] == 0x5 && data[pos + 1] == 0x80) match_DspString(); else if (data[pos] == 0x7 && data[pos + 1] == 0x80) - match_NavTreeViewItem(); + { + if (0) + match_NavTreeViewItem(); + else + { + pos += 2; + skip_item("NavTreeViewItem"); + } + } else if (data[pos] == 0x3 && data[pos + 1] == 0x80) match_DspSimpleText(); else if ((data[pos] == 0x3c || data[pos] == 0x39) @@ -1447,7 +1499,7 @@ main(int argc, char *argv[]) match_u32_assert(1); match_byte_assert(0x63); - for (;;) + while (pos < n) { if (data[pos] == 0) { @@ -1610,7 +1662,7 @@ main(int argc, char *argv[]) match_byte_assert(0); match_zeros_assert(7); - while (data[pos] != 1) + while (pos < n) { if (data[pos] == 0) { diff --git a/spo-notes b/spo-notes index b14c001cc8..ea87e0cc6d 100644 --- a/spo-notes +++ b/spo-notes @@ -1593,3 +1593,123 @@ F40.2 00 01 "Perseverance" 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00 07 00 00 00 00 02 00 00 00 01 00 + +05 00 00 00 01 00 88 00 8c 00 90 00 94 00 98 00 00 05 00 00 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 00 03 00 00 00 01 00 +03 00 00 00 01 00 58 00 5c 00 60 00 00 03 00 00 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 00 01 00 00 00 01 00 ......X.\.`........................... +05 00 00 00 01 00 f9 00 fd 00 05 01 09 01 0d 01 00 05 00 00 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 00 01 00 00 00 01 00 +03 00 00 00 01 00 a4 01 a8 01 ac 01 00 03 00 00 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 00 02 00 00 00 01 00 +08 00 00 00 01 00 83 06 87 06 8b 06 8f 06 93 06 97 06 9b 06 9f 06 00 08 00 00 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00 07 00 00 00 00 02 00 00 00 01 00 +04 00 00 00 01 00 c3 01 c7 01 cb 01 cf 01 00 04 00 00 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 00 00 00 00 00 01 00 00 11 00 00 00 00 00 00 00 00 00 4b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 01 00 00 00 02 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 01 00 +1e 00 00 00 01 00 47 04 4b 04 4f 04 53 04 57 04 5b 04 5f 04 63 04 67 04 6b 04 6f 04 73 04 77 04 7b 04 7f 04 83 04 87 04 8b 04 8f 04 93 04 97 04 9b 04 9f 04 a3 04 a7 04 ab 04 af 04 b3 04 b7 04 bb 04 00 1e 00 00 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00 07 00 00 00 08 00 00 00 09 00 00 00 0a 00 00 00 0b 00 00 00 0c 00 00 00 0d 00 00 00 0e 00 00 00 0f 00 00 00 10 00 00 00 11 00 00 00 12 00 00 00 13 00 00 00 14 00 00 00 15 00 00 00 16 00 00 00 17 00 00 00 18 00 00 00 19 00 00 00 1a 00 00 00 1b 00 00 00 1c 00 00 00 1d 00 00 00 00 00 00 00 00 01 00 00 11 00 00 00 00 00 00 00 00 00 4b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 02 00 00 00 00 02 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 01 00 ......G.K.O.S.W.[._.c.g.k.o.s.w.{..................................................................................................................................................................................K............................................................. +04 00 00 00 01 00 8f 00 93 00 97 00 9b 00 00 04 00 00 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 00 00 00 00 00 01 00 00 11 00 00 00 00 00 00 00 00 00 4b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 01 00 +0e 00 00 00 01 00 41 00 45 00 4d 00 51 00 55 00 59 00 5d 00 65 00 69 00 6d 00 75 00 7d 00 81 00 85 00 00 0e 00 00 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00 07 00 00 00 08 00 00 00 09 00 00 00 0a 00 00 00 0b 00 00 00 0c 00 00 00 0d 00 00 00 00 00 00 00 00 01 00 00 11 00 00 00 00 00 04 00 00 00 e1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 01 00 ......A.E.M.Q.U.Y.].e.i.m.u.}............................................................................................................................................ +03 00 00 00 01 00 4e 00 52 00 56 00 00 03 00 00 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 00 01 00 00 11 00 00 00 00 00 00 00 00 00 4b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 02 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 01 00 ......N.R.V......................................K............................................................. +3c 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 4b 00 00 00 4b 00 00 00 00 02 00 00 00 00 00 00 00 00 00 3f 00 00 00 <................K...K..............?... +49 00 00 00 00 00 00 00 00 00 00 03 00 00 00 00 00 4b 00 00 00 4b 00 00 00 4b 00 00 00 00 02 00 00 00 00 00 00 00 00 00 40 00 00 00 00 I................K...K...K..............@.... +04 00 00 00 01 00 57 00 5b 00 60 00 65 00 00 04 00 00 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 00 03 00 00 00 01 00 ......W.[.`.e............................... + +after DspTextComponentHandle: +00 20 00 00 00 +i0 00 +i1 01 00 +03 80 00 +11 80 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +05 80 01 F40.2 00 01 "ANOVA" +9c 80 00 00 00 00 00 00 00 00 00 00 01 00 00 00 +9e 80 00 +05 80 01 F40.2 00 01 "Predictors: (Constant), ..." +00 50 00 00 00 00 00 00 00 00 01 00 00 00 01 00 5a 00 +9c 80 00 00 00 00 00 00 00 00 00 00 01 00 00 00 +9e 80 00 +05 80 01 F40.2 00 01 "Predictors: ..." +00 28 00 05 02 00 00 00 00 00 01 00 00 00 01 00 5f 00 +00 +11 00 00 00 00 00 00 00 00 00 +4b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 01 00 00 00 00 00 00 00 00 01 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 01 00 + +00 00 00 00 00 +i0 00 +i1 01 00 +16 00 +00 +11 00 00 00 00 00 00 00 00 00 +4b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 01 00 + +00 28 00 05 02 +i0 00 +i1 01 00 +03 80 00 +11 80 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +05 80 01 F40.2 00 01 "Coefficients" +00 +11 00 00 00 00 00 00 00 00 00 +4b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 01 00 00 00 00 00 00 00 00 01 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 01 00 + +00 00 00 +08 00 +i1 "**" 00 +i27 01 00 17 00 39 00 1c 00 3d 00 5d 00 20 00 41 00 61 00 24 00 45 00 65 00 28 00 49 00 69 00 89 00 2c 00 4d 00 6d 00 8d 00 30 00 51 00 71 00 91 00 34 00 55 00 75 00 +95 00 +b0 81 00 00 00 00 00 00 00 00 00 00 01 00 00 00 b2 81 00 +05 80 01 F40.2 00 01 "Correlation is significant..." +00 00 00 2d 00 +i1 "*" 00 +i3 01 00 7d 00 81 00 +85 00 00 +11 00 00 00 00 00 00 00 00 00 +4b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +02 00 00 00 00 00 +00 00 00 00 +02 00 00 00 00 +01 00 00 00 00 00 +01 00 00 00 00 00 00 00 00 00 00 00 +03 00 00 00 +01 00 + +00 65 76 65 6c +i1 "**" 00 +i2 01 00 17 00 +55 00 +a3 86 00 00 00 00 00 00 00 00 00 00 01 00 00 00 a5 86 00 +05 80 01 F40.2 00 01 "Correlation is significant..." +00 50 00 00 00 +i1 "*" 00 +i10 01 00 0d 01 ce 01 6a 00 7f 00 49 04 09 05 1e 05 7c 01 3d 02 +fc 05 00 +11 00 00 00 00 00 00 00 00 00 +4b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +01 00 00 00 00 00 +01 00 00 00 00 +01 00 00 00 00 00 +02 00 00 00 00 +01 00 00 00 00 00 00 00 00 00 00 +03 00 00 00 +01 00 + +00 00 00 00 00 +i0 00 +i1 01 00 +5d 00 +69 80 00 00 00 00 00 00 00 00 00 00 01 00 00 00 +6b 80 00 +05 80 01 F40.2 00 01 "Using the asymptotic..." +00 00 00 00 00 +i0 00 +i1 01 00 +62 00 +69 80 00 00 00 00 00 00 00 00 00 00 01 00 00 00 +6b 80 00 +05 80 01 F40.2 00 01 "Based on normal approximation" +00 00 00 00 00 +i0 00 +i2 01 00 2f 00 +33 00 00 +11 00 00 00 00 00 00 00 00 00 +4b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +01 00 00 00 00 00 +00 00 00 00 00 +01 00 00 00 00 00 +01 00 00 00 00 00 00 00 00 00 00 +00 +02 00 00 00 +01 00 -- 2.30.2