-#define loop8(i) \
-{ t = ror32(t, 8); ; t = ls_box(t) ^ rco_tab[i]; \
- t ^= E_KEY[8 * i]; E_KEY[8 * i + 8] = t; \
- t ^= E_KEY[8 * i + 1]; E_KEY[8 * i + 9] = t; \
- t ^= E_KEY[8 * i + 2]; E_KEY[8 * i + 10] = t; \
- t ^= E_KEY[8 * i + 3]; E_KEY[8 * i + 11] = t; \
- t = E_KEY[8 * i + 4] ^ ls_box(t); \
- E_KEY[8 * i + 12] = t; \
- t ^= E_KEY[8 * i + 5]; E_KEY[8 * i + 13] = t; \
- t ^= E_KEY[8 * i + 6]; E_KEY[8 * i + 14] = t; \
- t ^= E_KEY[8 * i + 7]; E_KEY[8 * i + 15] = t; \
-}
+#define imix_col(y,x) do { \
+ u = star_x(x); \
+ v = star_x(u); \
+ w = star_x(v); \
+ t = w ^ (x); \
+ (y) = u ^ v ^ w; \
+ (y) ^= ror32(u ^ t, 8) ^ \
+ ror32(v ^ t, 16) ^ \
+ ror32(t, 24); \
+} while (0)
+
+#define ls_box(x) \
+ fl_tab[0][byte(x, 0)] ^ \
+ fl_tab[1][byte(x, 1)] ^ \
+ fl_tab[2][byte(x, 2)] ^ \
+ fl_tab[3][byte(x, 3)]
+
+#define loop4(i) do { \
+ t = ror32(t, 8); \
+ t = ls_box(t) ^ rco_tab[i]; \
+ t ^= E_KEY[4 * i]; \
+ E_KEY[4 * i + 4] = t; \
+ t ^= E_KEY[4 * i + 1]; \
+ E_KEY[4 * i + 5] = t; \
+ t ^= E_KEY[4 * i + 2]; \
+ E_KEY[4 * i + 6] = t; \
+ t ^= E_KEY[4 * i + 3]; \
+ E_KEY[4 * i + 7] = t; \
+} while (0)
+
+#define loop6(i) do { \
+ t = ror32(t, 8); \
+ t = ls_box(t) ^ rco_tab[i]; \
+ t ^= E_KEY[6 * i]; \
+ E_KEY[6 * i + 6] = t; \
+ t ^= E_KEY[6 * i + 1]; \
+ E_KEY[6 * i + 7] = t; \
+ t ^= E_KEY[6 * i + 2]; \
+ E_KEY[6 * i + 8] = t; \
+ t ^= E_KEY[6 * i + 3]; \
+ E_KEY[6 * i + 9] = t; \
+ t ^= E_KEY[6 * i + 4]; \
+ E_KEY[6 * i + 10] = t; \
+ t ^= E_KEY[6 * i + 5]; \
+ E_KEY[6 * i + 11] = t; \
+} while (0)
+
+#define loop8(i) do { \
+ t = ror32(t, 8); \
+ t = ls_box(t) ^ rco_tab[i]; \
+ t ^= E_KEY[8 * i]; \
+ E_KEY[8 * i + 8] = t; \
+ t ^= E_KEY[8 * i + 1]; \
+ E_KEY[8 * i + 9] = t; \
+ t ^= E_KEY[8 * i + 2]; \
+ E_KEY[8 * i + 10] = t; \
+ t ^= E_KEY[8 * i + 3]; \
+ E_KEY[8 * i + 11] = t; \
+ t = E_KEY[8 * i + 4] ^ ls_box(t); \
+ E_KEY[8 * i + 12] = t; \
+ t ^= E_KEY[8 * i + 5]; \
+ E_KEY[8 * i + 13] = t; \
+ t ^= E_KEY[8 * i + 6]; \
+ E_KEY[8 * i + 14] = t; \
+ t ^= E_KEY[8 * i + 7]; \
+ E_KEY[8 * i + 15] = t; \
+} while (0)