script: print-riff-chunks.go handles WEBP/ANMF
diff --git a/script/print-riff-chunks.go b/script/print-riff-chunks.go
index bf1bc3e..6c5d38a 100644
--- a/script/print-riff-chunks.go
+++ b/script/print-riff-chunks.go
@@ -53,36 +53,56 @@
 	if int64(len(src)-8) < chunkLen {
 		return posError(0, len(src))
 	}
-	fmt.Printf("pos = 0x%08X = %10d (+8)    len = 0x%08X = %10d    RIFF/%s\n",
-		0, 0, chunkLen, chunkLen, clean(src[8:12]))
-	pos = 12
+	isWEBP = string(src[8:12]) == "WEBP"
+	fmt.Printf("pos: 0x%08X %10d +8, len: 0x%08X %10d, dep: %d, %s\n",
+		0, 0, chunkLen, chunkLen, 0, clean(src[8:12]))
 
+	pos, err = do(src, 1, 12)
+	if err != nil {
+		return err
+	}
+
+	fmt.Printf("pos: 0x%08X %10d                                         ~~~~\n",
+		pos, pos)
+	return nil
+}
+
+func do(src []byte, depth int, pos int) (int, error) {
 	for pos < len(src) {
 		if pos > (len(src) - 8) {
-			return posError(pos, len(src))
+			return 0, posError(pos, len(src))
 		}
 
 		n := int64(u32le(src[pos+4 : pos+8]))
-		fmt.Printf("pos = 0x%08X = %10d (+8)    len = 0x%08X = %10d    %s\n",
-			pos, pos, n, n, clean(src[pos:pos+4]))
+		isWEBPANMF := isWEBP && (depth == 1) && (string(src[pos:pos+4]) == "ANMF")
+		fmt.Printf("pos: 0x%08X %10d +8, len: 0x%08X %10d, dep: %d, %s\n",
+			pos, pos, n, n, depth, clean(src[pos:pos+4]))
 		pos += 8
 		if (n & 1) != 0 {
 			n++
 		}
 
 		if int64(len(src)-pos) < n {
-			return posError(pos, len(src))
-		}
-		pos += int(n)
-	}
+			return 0, posError(pos, len(src))
 
-	fmt.Printf("pos = 0x%08X = %10d                                          ~~~~\n",
-		pos, pos)
-	return nil
+		} else if isWEBPANMF && (n > 16) {
+			pos1, err := do(src[:int64(pos)+n], depth+1, pos+16)
+			if err != nil {
+				return 0, err
+			}
+			pos = pos1
+
+		} else {
+			pos += int(n)
+		}
+	}
+	return pos, nil
 }
 
+var isWEBP bool
+
 func posError(pos int, lenSrc int) error {
-	return fmt.Errorf("bad RIFF, pos = 0x%08X = %10d, len(src) = 0x%08X = %10d",
+	return fmt.Errorf("bad RIFF, pos: 0x%08X %10d, len(src): 0x%08X %10d",
 		pos, pos, lenSrc, lenSrc)
 }