base: add ABXR, ABXS magic numbers
diff --git a/internal/cgen/base/magic-submodule.c b/internal/cgen/base/magic-submodule.c
index 0160f75..96b9ecb 100644
--- a/internal/cgen/base/magic-submodule.c
+++ b/internal/cgen/base/magic-submodule.c
@@ -145,27 +145,30 @@
     int32_t fourcc;
     const char* magic;
   } table[] = {
-      {-0x30302020, "\x01\x00\x00"},              // '00  'be
-      {+0x475A2020, "\x02\x1F\x8B\x08"},          // GZ
-      {+0x5A535444, "\x03\x28\xB5\x2F\xFD"},      // ZSTD
-      {+0x425A3220, "\x02\x42\x5A\x68"},          // BZ2
-      {+0x424D5020, "\x01\x42\x4D"},              // BMP
-      {+0x47494620, "\x03\x47\x49\x46\x38"},      // GIF
-      {+0x54494646, "\x03\x49\x49\x2A\x00"},      // TIFF (little-endian)
-      {+0x4C5A4950, "\x04\x4C\x5A\x49\x50\x01"},  // LZIP
-      {+0x54494646, "\x03\x4D\x4D\x00\x2A"},      // TIFF (big-endian)
-      {+0x45544332, "\x03\x50\x4B\x4D\x20"},      // ETC2 (*.pkm)
-      {+0x4E50424D, "\x02\x50\x35\x0A"},          // NPBM (P5; *.pgm)
-      {+0x4E50424D, "\x02\x50\x36\x0A"},          // NPBM (P6; *.ppm)
-      {-0x52494646, "\x03\x52\x49\x46\x46"},      // RIFF
-      {+0x4C5A4D41, "\x04\x5D\x00\x10\x00\x00"},  // LZMA
-      {+0x4C5A4D41, "\x02\x5D\x00\x00"},          // LZMA
-      {+0x4E494520, "\x02\x6E\xC3\xAF"},          // NIE
-      {+0x514F4920, "\x03\x71\x6F\x69\x66"},      // QOI
-      {+0x5A4C4942, "\x01\x78\x9C"},              // ZLIB
-      {+0x504E4720, "\x03\x89\x50\x4E\x47"},      // PNG
-      {+0x585A2020, "\x04\xFD\x37\x7A\x58\x5A"},  // XZ
-      {+0x4A504547, "\x01\xFF\xD8"},              // JPEG
+      {-0x30302020, "\x01\x00\x00"},                  // '00  'be
+      {+0x41425852, "\x03\x03\x00\x08\x00"},          // ABXR
+      {+0x475A2020, "\x02\x1F\x8B\x08"},              // GZ
+      {+0x5A535444, "\x03\x28\xB5\x2F\xFD"},          // ZSTD
+      {+0x584D4C20, "\x05\x3C\x3F\x78\x6D\x6C\x20"},  // XML
+      {+0x41425853, "\x03\x41\x42\x58\x00"},          // ABXS
+      {+0x425A3220, "\x02\x42\x5A\x68"},              // BZ2
+      {+0x424D5020, "\x01\x42\x4D"},                  // BMP
+      {+0x47494620, "\x03\x47\x49\x46\x38"},          // GIF
+      {+0x54494646, "\x03\x49\x49\x2A\x00"},          // TIFF (little-endian)
+      {+0x4C5A4950, "\x04\x4C\x5A\x49\x50\x01"},      // LZIP
+      {+0x54494646, "\x03\x4D\x4D\x00\x2A"},          // TIFF (big-endian)
+      {+0x45544332, "\x03\x50\x4B\x4D\x20"},          // ETC2 (*.pkm)
+      {+0x4E50424D, "\x02\x50\x35\x0A"},              // NPBM (P5; *.pgm)
+      {+0x4E50424D, "\x02\x50\x36\x0A"},              // NPBM (P6; *.ppm)
+      {-0x52494646, "\x03\x52\x49\x46\x46"},          // RIFF
+      {+0x4C5A4D41, "\x04\x5D\x00\x10\x00\x00"},      // LZMA
+      {+0x4C5A4D41, "\x02\x5D\x00\x00"},              // LZMA
+      {+0x4E494520, "\x02\x6E\xC3\xAF"},              // NIE
+      {+0x514F4920, "\x03\x71\x6F\x69\x66"},          // QOI
+      {+0x5A4C4942, "\x01\x78\x9C"},                  // ZLIB
+      {+0x504E4720, "\x03\x89\x50\x4E\x47"},          // PNG
+      {+0x585A2020, "\x04\xFD\x37\x7A\x58\x5A"},      // XZ
+      {+0x4A504547, "\x01\xFF\xD8"},                  // JPEG
   };
   static const size_t table_len = sizeof(table) / sizeof(table[0]);
 
diff --git a/lang/builtin/builtin.go b/lang/builtin/builtin.go
index 6dcb58a..8b81ca1 100644
--- a/lang/builtin/builtin.go
+++ b/lang/builtin/builtin.go
@@ -24,6 +24,8 @@
 )
 
 var FourCCs = [...][2]string{
+	{"ABXR", "Android Binary XML (for resources; see AndroidBinXmlParser.java)"},
+	{"ABXS", "Android Binary XML (for system_server; see BinaryXmlSerializer.java)"},
 	{"BGCL", "Background Color"},
 	{"BMP ", "Bitmap"},
 	{"BRTL", "Brotli"},
diff --git a/release/c/wuffs-unsupported-snapshot.c b/release/c/wuffs-unsupported-snapshot.c
index 6600821..665c4b8 100644
--- a/release/c/wuffs-unsupported-snapshot.c
+++ b/release/c/wuffs-unsupported-snapshot.c
@@ -754,6 +754,12 @@
 // Wuffs' u32 values are big-endian ("JPEG" is 0x4A504547 not 0x4745504A) to
 // preserve ordering: "JPEG" < "MP3 " and 0x4A504547 < 0x4D503320.
 
+// Android Binary XML (for resources; see AndroidBinXmlParser.java).
+#define WUFFS_BASE__FOURCC__ABXR 0x41425852
+
+// Android Binary XML (for system_server; see BinaryXmlSerializer.java).
+#define WUFFS_BASE__FOURCC__ABXS 0x41425853
+
 // Background Color.
 #define WUFFS_BASE__FOURCC__BGCL 0x4247434C
 
@@ -22363,27 +22369,30 @@
     int32_t fourcc;
     const char* magic;
   } table[] = {
-      {-0x30302020, "\x01\x00\x00"},              // '00  'be
-      {+0x475A2020, "\x02\x1F\x8B\x08"},          // GZ
-      {+0x5A535444, "\x03\x28\xB5\x2F\xFD"},      // ZSTD
-      {+0x425A3220, "\x02\x42\x5A\x68"},          // BZ2
-      {+0x424D5020, "\x01\x42\x4D"},              // BMP
-      {+0x47494620, "\x03\x47\x49\x46\x38"},      // GIF
-      {+0x54494646, "\x03\x49\x49\x2A\x00"},      // TIFF (little-endian)
-      {+0x4C5A4950, "\x04\x4C\x5A\x49\x50\x01"},  // LZIP
-      {+0x54494646, "\x03\x4D\x4D\x00\x2A"},      // TIFF (big-endian)
-      {+0x45544332, "\x03\x50\x4B\x4D\x20"},      // ETC2 (*.pkm)
-      {+0x4E50424D, "\x02\x50\x35\x0A"},          // NPBM (P5; *.pgm)
-      {+0x4E50424D, "\x02\x50\x36\x0A"},          // NPBM (P6; *.ppm)
-      {-0x52494646, "\x03\x52\x49\x46\x46"},      // RIFF
-      {+0x4C5A4D41, "\x04\x5D\x00\x10\x00\x00"},  // LZMA
-      {+0x4C5A4D41, "\x02\x5D\x00\x00"},          // LZMA
-      {+0x4E494520, "\x02\x6E\xC3\xAF"},          // NIE
-      {+0x514F4920, "\x03\x71\x6F\x69\x66"},      // QOI
-      {+0x5A4C4942, "\x01\x78\x9C"},              // ZLIB
-      {+0x504E4720, "\x03\x89\x50\x4E\x47"},      // PNG
-      {+0x585A2020, "\x04\xFD\x37\x7A\x58\x5A"},  // XZ
-      {+0x4A504547, "\x01\xFF\xD8"},              // JPEG
+      {-0x30302020, "\x01\x00\x00"},                  // '00  'be
+      {+0x41425852, "\x03\x03\x00\x08\x00"},          // ABXR
+      {+0x475A2020, "\x02\x1F\x8B\x08"},              // GZ
+      {+0x5A535444, "\x03\x28\xB5\x2F\xFD"},          // ZSTD
+      {+0x584D4C20, "\x05\x3C\x3F\x78\x6D\x6C\x20"},  // XML
+      {+0x41425853, "\x03\x41\x42\x58\x00"},          // ABXS
+      {+0x425A3220, "\x02\x42\x5A\x68"},              // BZ2
+      {+0x424D5020, "\x01\x42\x4D"},                  // BMP
+      {+0x47494620, "\x03\x47\x49\x46\x38"},          // GIF
+      {+0x54494646, "\x03\x49\x49\x2A\x00"},          // TIFF (little-endian)
+      {+0x4C5A4950, "\x04\x4C\x5A\x49\x50\x01"},      // LZIP
+      {+0x54494646, "\x03\x4D\x4D\x00\x2A"},          // TIFF (big-endian)
+      {+0x45544332, "\x03\x50\x4B\x4D\x20"},          // ETC2 (*.pkm)
+      {+0x4E50424D, "\x02\x50\x35\x0A"},              // NPBM (P5; *.pgm)
+      {+0x4E50424D, "\x02\x50\x36\x0A"},              // NPBM (P6; *.ppm)
+      {-0x52494646, "\x03\x52\x49\x46\x46"},          // RIFF
+      {+0x4C5A4D41, "\x04\x5D\x00\x10\x00\x00"},      // LZMA
+      {+0x4C5A4D41, "\x02\x5D\x00\x00"},              // LZMA
+      {+0x4E494520, "\x02\x6E\xC3\xAF"},              // NIE
+      {+0x514F4920, "\x03\x71\x6F\x69\x66"},          // QOI
+      {+0x5A4C4942, "\x01\x78\x9C"},                  // ZLIB
+      {+0x504E4720, "\x03\x89\x50\x4E\x47"},          // PNG
+      {+0x585A2020, "\x04\xFD\x37\x7A\x58\x5A"},      // XZ
+      {+0x4A504547, "\x01\xFF\xD8"},                  // JPEG
   };
   static const size_t table_len = sizeof(table) / sizeof(table[0]);