diff --git a/serpent-decrypt.c b/serpent-decrypt.c
index a5f33996a3c2eec96be1ce8918852c5507ae2e58..d7f761f8a3b548802b378e99c3ab1c6b00617876 100644
--- a/serpent-decrypt.c
+++ b/serpent-decrypt.c
@@ -388,27 +388,25 @@
      y2  = t14 ^ t16;
 */
 #define SBOX7_INVERSE(type, x0, x1, x2, x3, y0, y1, y2, y3) \
-  do { \
-    type t02, t03, t04, t06, t07, t08, t09; \
-    type t10, t11, t13, t14, t15, t16, t01; \
-    t01 = x0  & x1; \
-    t02 = x0  | x1; \
-    t03 = x2  | t01; \
-    t04 = x3  & t02; \
-    y3  = t03 ^ t04; \
-    t06 = x1  ^ t04; \
-    t07 = x3  ^ y3; \
-    t08 =     ~ t07; \
-    t09 = t06 | t08; \
-    t10 = x1  ^ x3; \
-    t11 = x0  | x3; \
-    y1  = x0  ^ t09; \
-    t13 = x2  ^ t06; \
-    t14 = x2  & t11; \
-    t15 = x3  | y1; \
-    t16 = t01 | t10; \
-    y0  = t13 ^ t15; \
-    y2  = t14 ^ t16; \
+  do {							    \
+    y3  = x0 & x1;					    \
+    y2  = x1 ^ x3;					    \
+    y2 |= y3;						    \
+    y1  = x0 | x3;					    \
+    y1 &= x2;						    \
+    y2 ^= y1;						    \
+    y3 |= x2;						    \
+    y0  = x0 | x1;					    \
+    y0 &= x3;						    \
+    y3 ^= y0;						    \
+    y0 ^= x1;						    \
+    y1  = x3 ^ y3;					    \
+    y1  = ~ y1;						    \
+    y1 |= y0;						    \
+    y0 ^= x2;						    \
+    y1 ^= x0;						    \
+    x3 |= y1;						    \
+    y0 ^= x3;						    \
   } while (0)
 
 /* In-place inverse linear transformation.  */