+
+ put_safe(get_string1());
+ putc('\n', stdout);
+}
+
+static void
+parse_DspNumber(void)
+{
+ match_byte_assert(1);
+ printf("DspNumber(");
+ parse_format();
+ match_byte_assert(0x80);
+ match_byte(2);
+ printf (" %f", get_double());
+ printf (" \"%s\")\n", get_string1());
+}
+
+static void
+match_DspNumber(void)
+{
+ match_byte_assert(0x2a);
+ match_byte_assert(0x80);
+ parse_DspNumber();
+}
+
+static void parse_flexible(void);
+
+static void
+parse_DspCell(void)
+{
+ match_byte_assert(0);
+ match_DspSimpleText();
+ parse_flexible(); /* DspString or DspNumber. */
+}
+
+static void
+match_DspCell(void)
+{ /* 27 80 */
+ match_byte_assert(0x27);
+ match_byte_assert(0x80);
+ parse_DspCell();
+}
+
+static void
+parse_PMModelItemInfo(void)
+{ /* 54 80 */
+ match_byte_assert(0);
+ pos += 1; /* Counter */
+ match_zeros_assert(7);
+ pos += 3;
+ if (!match_byte(0))
+ match_byte_assert(0xe);
+ match_byte_assert(0);
+}
+
+static void
+match_PMModelItemInfo(void)
+{ /* 54 80 */
+ match_byte_assert(0x54);
+ match_byte_assert(0x80);
+ parse_PMModelItemInfo();
+ match_DspSimpleText();
+ match_DspString();
+}
+
+static void
+match_PMPivotItemTree(void)
+{ /* 52 80 */
+ match_byte_assert(0x52);
+ match_byte_assert(0x80);
+ match_byte_assert(0);
+ match_PMModelItemInfo();
+}
+
+static void
+parse_flexible(void)
+{
+ if (data[pos] == 0xff && data[pos + 1] == 0xff)
+ {
+ match_u16_assert(0xffff);
+ match_u16_assert(0);
+ char *heading = get_string2();
+ if (!strcmp(heading, "DspCell"))
+ parse_DspCell();
+ else if (!strcmp(heading, "DspNumber"))
+ parse_DspNumber();
+ else if (!strcmp(heading, "DspString"))
+ parse_DspString();
+ else
+ assert(0);
+ }
+ else if (data[pos] == 0x2a && data[pos + 1] == 0x80)
+ match_DspNumber();
+ else if (data[pos] == 0x27 && data[pos + 1] == 0x80)
+ match_DspCell();
+ else if (data[pos] == 0x5 && data[pos + 1] == 0x80)
+ match_DspString();
+ else
+ assert(0);