diff --git a/library/aria.c b/library/aria.c
index dc2192a..19172f8 100644
--- a/library/aria.c
+++ b/library/aria.c
@@ -77,11 +77,19 @@
 }
 #endif
 
-/* modify byte order: ( A B C D ) -> ( C D A B ), i.e. rotate by 16 bits */
-#define ARIA_FLIP1(x) (((x) >> 16) ^ ((x) << 16))
+/*
+ * modify byte order ( A B C D ) -> ( B A D C ), i.e. swap pairs of bytes
+ *
+ * This is submatrix P1 in [1] Appendix B.1
+ */
+#define ARIA_P1(x) ((((x) >> 8) & 0x00FF00FF) ^ (((x) & 0x00FF00FF) << 8))
 
-/* modify byte order ( A B C D ) -> ( B A D C ), i.e. swap pairs of bytes */
-#define ARIA_FLIP2(x) ((((x) >> 8) & 0x00FF00FF) ^ (((x) & 0x00FF00FF) << 8))
+/*
+ * modify byte order: ( A B C D ) -> ( C D A B ), i.e. rotate by 16 bits
+ *
+ * This is submatrix P2 in [1] Appendix B.1
+ */
+#define ARIA_P2(x) (((x) >> 16) ^ ((x) << 16))
 
 /*
  * ARIA Affine Transform
@@ -93,22 +101,22 @@
     uint32_t ta, tb, tc;
     ta  =   *b;
     *b  =   *a;
-    *a  =   ARIA_FLIP1( ta );
-    tb  =   ARIA_FLIP1( *d );
-    *d  =   ARIA_FLIP2( *c );
-    *c  =   ARIA_FLIP2( tb );
+    *a  =   ARIA_P2( ta );
+    tb  =   ARIA_P2( *d );
+    *d  =   ARIA_P1( *c );
+    *c  =   ARIA_P1( tb );
     ta  ^=  *d;
-    tc  =   ARIA_FLIP1( *b );
-    ta  =   ARIA_FLIP2( ta ) ^ tc ^ *c;
-    tb  ^=  ARIA_FLIP1( *d );
-    tc  ^=  ARIA_FLIP2( *a );
+    tc  =   ARIA_P2( *b );
+    ta  =   ARIA_P1( ta ) ^ tc ^ *c;
+    tb  ^=  ARIA_P2( *d );
+    tc  ^=  ARIA_P1( *a );
     *b  ^=  ta ^ tb;
-    tb  =   ARIA_FLIP1( tb ) ^ ta;
-    *a  ^=  ARIA_FLIP2( tb );
-    ta  =   ARIA_FLIP1( ta );
-    *d  ^=  ARIA_FLIP2( ta ) ^ tc;
-    tc  =   ARIA_FLIP1( tc );
-    *c  ^=  ARIA_FLIP2( tc ) ^ ta;
+    tb  =   ARIA_P2( tb ) ^ ta;
+    *a  ^=  ARIA_P1( tb );
+    ta  =   ARIA_P2( ta );
+    *d  ^=  ARIA_P1( ta ) ^ tc;
+    tc  =   ARIA_P2( tc );
+    *c  ^=  ARIA_P1( tc ) ^ ta;
 }
 
 /*
@@ -309,14 +317,14 @@
     const uint8_t n2 = n1 ? 32 - n1 : 0;    // reverse bit offset
 
     j = (n / 32) % 4;                       // initial word offset
-    t = ARIA_FLIP1( ARIA_FLIP2( b[j] ) );   // big endian
+    t = ARIA_P2( ARIA_P1( b[j] ) );         // big endian
     for( i = 0; i < 4; i++ )
     {
         j = (j + 1) % 4;                    // get next word, big endian
-        u = ARIA_FLIP1( ARIA_FLIP2( b[j] ) );
+        u = ARIA_P2( ARIA_P1( b[j] ) );
         t <<= n1;                           // rotate
         t |= u >> n2;
-        t = ARIA_FLIP1( ARIA_FLIP2( t ) );  // back to little endian
+        t = ARIA_P2( ARIA_P1( t ) );        // back to little endian
         r[i] = a[i] ^ t;                    // store
         t = u;                              // move to next word
     }
