%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Copyright: 2010 Integrated Sytems Laboratory, ETH Zurich
%% http://www.iis.ee.ethz.ch/~sha3
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [B] = e8(h)
c1=hex2dec(['6a09'; 'e667'; 'f3bc'; 'c908'; 'b2fb'; '1366'; 'ea95'; '7d3e'; '3ade'; 'c175'; '1277'; '5099'; 'da2f'; '590b'; '0667'; '322a']);
cbin=dec2bin(c1,16);
cr0=cbin';
Q0=zeros(1,256);
A=dec2bin(h,8)';
%Group
for i=1:128,
Q0(2*i-1)=bin2dec(mat2str([A(i) A(256+i) A(512+i) A(768+i)]));
Q0(2*i)=bin2dec(mat2str([A(128+i) A(384+i) A(640+i) A(896+i)]));
end
Q=Q0;
Cr=cr0;
for r=0:34,
Q=r8(Q,Cr);
Cr=r6(Cr);
end
Q36=lastround(Q,Cr);
%Degroup
Qbin=dec2bin(Q36,4);
B=h;
for i=1:16
for j=0:3
B(i+32*j)=bin2dec(mat2str(Qbin((2*(i+16*j)*8-15):2:2*(i+16*j)*8-1)));
B(i+16+32*j)=bin2dec(mat2str(Qbin((2*(i+16*j)*8-14):2:2*(i+16*j)*8)));
end
end