rendered paste bodyinline static vector unsigned char S_Box( register vector unsigned char X) { register vUInt8 C4 = (vUInt8) ( 4,4,4,4,4,4,4,4,4,4,4,4 ); register vUInt8 E_Low = (vUInt8) ( 0x01, 0x0B, 0x09, 0x0C, 0x0D, 0x06, 0x0F, 0x03, 0x0E, 0x08, 0x07, 0x04, 0x0A, 0x02, 0x05, 0x00 ); register vUInt8 E_High = vec_sl ( E_Low, C4 ); register vUInt8 E_Inv_Low = (vUInt8) ( 0x0F, 0x00, 0x0D, 0x07, 0x0B, 0x0E, 0x05, 0x0A, 0x09, 0x02, 0x0C, 0x01, 0x03, 0x04, 0x08, 0x06 ); register vUInt8 R_Low = (vUInt8) ( 0x07, 0x0C, 0x0B, 0x0D, 0x0E, 0x04, 0x09, 0x0F, 0x06, 0x03, 0x08, 0x0A, 0x02, 0x05, 0x01, 0x00 ); register vector unsigned char X_Low; register vector unsigned char E_In , E_Out; register vector unsigned char E_Inv_In, E_Inv_Out; register vector unsigned char R_In , R_Out; register vector unsigned char S_Box_X; X_Low = vec_sr ( X , C4 ); E_Inv_Out = vec_perm( E_Inv_Low, E_Inv_Low, X ); E_Out = vec_perm( E_Low , E_Low , X_Low ); R_In = vec_xor ( E_Out , E_Inv_Out ); R_Out = vec_perm( R_Low , R_Low , R_In ); E_In = vec_xor ( E_Out , R_Out ); E_Inv_In = vec_xor ( E_Inv_Out, R_Out ); E_Out = vec_perm( E_High , E_High , E_In ); E_Inv_Out = vec_perm( E_Inv_Low, E_Inv_Low, E_Inv_In ); S_Box_X = vec_or ( E_Out , E_Inv_Out ); return S_Box_X;}