more progress
authorBen Pfaff <blp@cs.stanford.edu>
Sun, 28 Jun 2020 04:33:05 +0000 (04:33 +0000)
committerBen Pfaff <blp@cs.stanford.edu>
Sun, 28 Jun 2020 04:33:05 +0000 (04:33 +0000)
dump-spo2.c

index bc1e97d57f37136e4911589d227195fd50fc5412..02acd3af6a73612619a7ce6f6095664896bb1bfb 100644 (file)
@@ -717,7 +717,10 @@ parse_NavHead(void)
   match_byte_assert(2);
   match_zeros_assert(24);
   match_byte_assert(1);
-  match_zeros_assert(7);
+  match_zeros_assert(3);
+  if (!match_byte(1))
+    match_byte_assert(0);
+  match_zeros_assert(3);
   match_DspSimpleText();
   parse_flexible();
 }
@@ -745,6 +748,21 @@ parse_NavOleItem(void)
   match_byte_assert(0);
 }
 
+static void
+parse_NavTitle(void)
+{
+  match_byte_assert(2);
+  match_zeros_assert(8);
+  match_u32_assert(24);
+  get_u32();
+  pos++;
+  match_byte_assert(4);
+  match_zeros_assert(2);
+  get_u32();
+  match_u32_assert(2);
+  match_u32_assert(1);
+}
+
 static void
 parse_flexible(void)
 {
@@ -766,6 +784,8 @@ parse_flexible(void)
         match_zeros_assert(14);
       else if (!strcmp(heading, "NavOleItem"))
         parse_NavOleItem();
+      else if (!strcmp(heading, "NavTitle"))
+        parse_NavTitle();
       else
         {
           fprintf(stderr, "don't know %s at offset 0x%x: ", heading, start);
@@ -964,6 +984,8 @@ main(int argc, char *argv[])
   parse_flexible();
   parse_flexible();
   parse_flexible();
+  parse_flexible();
+  parse_flexible();
   exit(0);
   puts(get_padded_string(32));
   if (!match_u32(80))