rendered paste body/* A..D = IBox Input */
/* E..H = IBox Output */
/* A..H may be read multiple times */
/* A..D may not be written */
/* E..H will be written once */
#define IBox7(A,B,C,D, E,F,G,H) \
{ \
register vector unsigned int \
T01, T02, T03, T04, \
T06, T07, T08, T09, \
T11, T12, T14, T15, \
T16; \
\
T01 = vec_and( A , B ); \
T02 = vec_or ( A , B ); \
T03 = vec_or ( C , T01 ); \
T04 = vec_and( D , T02 ); \
H = vec_xor( T03, T04 ); \
T06 = vec_nor( D , D ); \
T07 = vec_xor( B , T04 ); \
T08 = vec_xor( H , T06 ); \
T09 = vec_or ( T07, T08 ); \
F = vec_xor( A , T09 ); \
T11 = vec_xor( C , T07 ); \
T12 = vec_or ( D , F ); \
E = vec_xor( T11, T12 ); \
T14 = vec_and( A , H ); \
T15 = vec_xor( T03, F ); \
T16 = vec_xor( E , T14 ); \
G = vec_xor( T15, T16 ); \
}
#define ib7(a,b,c,d,e,f,g,h) \
t1 = a & b; \
t2 = a | b; \
t3 = c | t1; \
t4 = d & t2; \
h = t3 ^ t4; \
t6 = ~d; \
t7 = b ^ t4; \
t8 = h ^ t6; \
t9 = t7 | t8; \
f = a ^ t9; \
t11 = c ^ t7; \
t12 = d | f; \
e = t11 ^ t12; \
t14 = a & h; \
t15 = t3 ^ f; \
t16 = e ^ t14; \
g = t15 ^ t16