match_byte_assert (0x58);
printf ("variable \"%s\"", get_string());
get_string();
- match_byte_assert (2);
+ if (!match_byte (2))
+ match_byte_assert(3);
}
else if (match_byte (2))
{
int subn;
match_byte (0);
- match_byte_assert (0x31);
- match_u32_assert (0);
- match_u32_assert (0);
- subn = get_u32 ();
- printf ("nested %d bytes", subn);
- pos += subn;
+ if (match_byte (0x31))
+ {
+ match_u32_assert (0);
+ match_u32_assert (0);
+ subn = get_u32 ();
+ printf ("nested %d bytes", subn);
+ pos += subn;
+ }
+ else
+ match_byte_assert(0x58);
printf ("; \"%s\", substitutions:", get_string());
int total_subs = get_u32();
int x = get_u32();
printf("string \"%s\": ", get_string());
match_byte(1) || match_byte(0);
}
- else if (match_byte(5))
- {
- match_byte_assert(0x58);
- printf("variable \"%s\": ", get_string());
- get_string();
- if (!match_byte(2))
- match_byte_assert(3);
- }
- else if (match_byte(0x31))
- {
- int subn;
- int total_subs = 1;
-
- match_u32_assert (0);
- match_u32_assert (0);
- subn = get_u32 ();
- printf ("nested %d bytes", subn);
- pos += subn;
- printf ("; \"%s\", substitutions:", get_string());
- for (;;)
- {
- int n_subst = get_u32();
- if (!n_subst)
- break;
- printf (" %d", n_subst);
- total_subs *= n_subst;
- }
-
- for (int i = 0; i < total_subs; i++)
- {
- putc ('\n', stdout);
- dump_dim_value (0);
- }
- }
else
- {
- int total_subs = 1;
-
- match_byte_assert (0x58);
- printf ("\"%s\" with substitutions:", get_string());
- for (;;)
- {
- int n_subst = get_u32();
- if (!n_subst)
- break;
- printf (" %d", n_subst);
- total_subs *= n_subst;
- }
-
- for (int i = 0; i < total_subs; i++)
- {
- putc ('\n', stdout);
- dump_dim_value (0);
- }
- }
+ dump_dim_value(0);
/* This byte is usually 0x02 but 0x00 and 0x75 (!) have also been spotted. */
pos++;