1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
/* Round 1 */
FF(a, b, c, d, x[0], S1[0], T[0]); /* 1 */
FF(d, a, b, c, x[1], S1[1], T[1]); /* 2 */
FF(c, d, a, b, x[2], S1[2], T[2]); /* 3 */
FF(b, c, d, a, x[3], S1[3], T[3]); /* 4 */
FF(a, b, c, d, x[4], S1[0], T[4]); /* 5 */
FF(d, a, b, c, x[5], S1[1], T[5]); /* 6 */
FF(c, d, a, b, x[6], S1[2], T[6]); /* 7 */
FF(b, c, d, a, x[7], S1[3], T[7]); /* 8 */
FF(a, b, c, d, x[8], S1[0], T[8]); /* 9 */
FF(d, a, b, c, x[9], S1[1], T[9]); /* 10 */
FF(c, d, a, b, x[10], S1[2], T[10]); /* 11 */
FF(b, c, d, a, x[11], S1[3], T[11]); /* 12 */
FF(a, b, c, d, x[12], S1[0], T[12]); /* 13 */
FF(d, a, b, c, x[13], S1[1], T[13]); /* 14 */
FF(c, d, a, b, x[14], S1[2], T[14]); /* 15 */
FF(b, c, d, a, x[15], S1[3], T[15]); /* 16 */
/* Round 2 */
GG(a, b, c, d, x[1], S2[0], T[16]); /* 17 */
GG(d, a, b, c, x[6], S2[1], T[17]); /* 18 */
GG(c, d, a, b, x[11], S2[2], T[18]); /* 19 */
GG(b, c, d, a, x[0], S2[3], T[19]); /* 20 */
GG(a, b, c, d, x[5], S2[0], T[20]); /* 21 */
GG(d, a, b, c, x[10], S2[1], T[21]); /* 22 */
GG(c, d, a, b, x[15], S2[2], T[22]); /* 23 */
GG(b, c, d, a, x[4], S2[3], T[23]); /* 24 */
GG(a, b, c, d, x[9], S2[0], T[24]); /* 25 */
GG(d, a, b, c, x[14], S2[1], T[25]); /* 26 */
GG(c, d, a, b, x[3], S2[2], T[26]); /* 27 */
GG(b, c, d, a, x[8], S2[3], T[27]); /* 28 */
GG(a, b, c, d, x[13], S2[0], T[28]); /* 29 */
GG(d, a, b, c, x[2], S2[1], T[29]); /* 30 */
GG(c, d, a, b, x[7], S2[2], T[30]); /* 31 */
GG(b, c, d, a, x[12], S2[3], T[31]); /* 32 */
/* Round 3 */
HH(a, b, c, d, x[5], S3[0], T[32]); /* 33 */
HH(d, a, b, c, x[8], S3[1], T[33]); /* 34 */
HH(c, d, a, b, x[11], S3[2], T[34]); /* 35 */
HH(b, c, d, a, x[14], S3[3], T[35]); /* 36 */
HH(a, b, c, d, x[1], S3[0], T[36]); /* 37 */
HH(d, a, b, c, x[4], S3[1], T[37]); /* 38 */
HH(c, d, a, b, x[7], S3[2], T[38]); /* 39 */
HH(b, c, d, a, x[10], S3[3], T[39]); /* 40 */
HH(a, b, c, d, x[13], S3[0], T[40]); /* 41 */
HH(d, a, b, c, x[0], S3[1], T[41]); /* 42 */
HH(c, d, a, b, x[3], S3[2], T[42]); /* 43 */
HH(b, c, d, a, x[6], S3[3], T[43]); /* 44 */
HH(a, b, c, d, x[9], S3[0], T[44]); /* 45 */
HH(d, a, b, c, x[12], S3[1], T[45]); /* 46 */
HH(c, d, a, b, x[15], S3[2], T[46]); /* 47 */
HH(b, c, d, a, x[2], S3[3], T[47]); /* 48 */
/* Round 4 */
II(a, b, c, d, x[0], S4[0], T[48]); /* 49 */
II(d, a, b, c, x[7], S4[1], T[49]); /* 50 */
II(c, d, a, b, x[14], S4[2], T[50]); /* 51 */
II(b, c, d, a, x[5], S4[3], T[51]); /* 52 */
II(a, b, c, d, x[12], S4[0], T[52]); /* 53 */
II(d, a, b, c, x[3], S4[1], T[53]); /* 54 */
II(c, d, a, b, x[10], S4[2], T[54]); /* 55 */
II(b, c, d, a, x[1], S4[3], T[55]); /* 56 */
II(a, b, c, d, x[8], S4[0], T[56]); /* 57 */
II(d, a, b, c, x[15], S4[1], T[57]); /* 58 */
II(c, d, a, b, x[6], S4[2], T[58]); /* 59 */
II(b, c, d, a, x[13], S4[3], T[59]); /* 60 */
II(a, b, c, d, x[4], S4[0], T[60]); /* 61 */
II(d, a, b, c, x[11], S4[1], T[61]); /* 62 */
II(c, d, a, b, x[2], S4[2], T[62]); /* 63 */
II(b, c, d, a, x[9], S4[3], T[63]); /* 64 */
|