+ }
+ else
+ match_byte_assert (0x58);
+}
+
+static void
+dump_data_value(void)
+{
+ match_byte(0);
+ match_byte(0);
+ match_byte(0);
+ match_byte(0);
+ if (match_byte (1))
+ {
+ unsigned int format;
+ double value;
+
+ dump_data_value_31();
+ format = get_u32 ();
+ value = get_double ();
+ printf (" value %g format %d(%d.%d)", value, format >> 16, (format >> 8) & 0xff, format & 0xff);
+ }
+ else if (match_byte (3))
+ {
+ get_string();
+ dump_data_value_31();
+ get_string();
+ printf("string \"%s\"", get_string());
+ match_byte (0);
+ }
+ else if (match_byte (2))
+ {
+ unsigned int format;
+ char *var, *vallab;
+ double value;
+
+ match_byte_assert (0x58);
+ format = get_u32 ();
+ value = get_double ();
+ var = get_string ();
+ vallab = get_string ();
+ printf ("value %g format %d(%d.%d) var \"%s\" vallab \"%s\"",
+ value, format >> 16, (format >> 8) & 0xff, format & 0xff, var, vallab);
+ if (!match_byte (1) && !match_byte(2))
+ match_byte_assert (3);
+ }
+ else if (match_byte (4))
+ {
+ unsigned int format;
+ char *var, *vallab, *value;
+
+ match_byte_assert (0x58);
+ format = get_u32 ();
+ vallab = get_string ();
+ var = get_string ();
+ if (!match_byte(1) && !match_byte(2))
+ match_byte_assert (3);
+ value = get_string ();
+ printf ("value \"%s\" format %d(%d.%d) var \"%s\" vallab \"%s\"",
+ value, format >> 16, (format >> 8) & 0xff, format & 0xff, var, vallab);
+ }
+ else if (match_byte (5))
+ {
+ match_byte_assert (0x58);
+ printf ("variable \"%s\"", get_string());
+ get_string();
+ if (!match_byte(1) && !match_byte(2))
+ match_byte_assert(3);
+ match_byte (0);
+ match_byte (0);
+ match_byte (0);
+ match_byte (0);
+ }
+ else
+ {
+ dump_data_value_31();
+ char *base = get_string();
+ int x = get_u32();
+ printf ("\"%s\"; %d variables:\n", base, x);
+ for (int i = 0; i < x; i++)