1 TEXT _sha1block+0(SB),$352
3 /* x = (wp[off-f] ^ wp[off-8] ^ wp[off-14] ^ wp[off-16]) <<< 1;
11 #define BSWAPDI BYTE $0x0f; BYTE $0xcf;
13 #define BODY(off,FN,V,A,B,C,D,E)\
14 MOVL (off-64)(BP),DI;\
15 XORL (off-56)(BP),DI;\
16 XORL (off-32)(BP),DI;\
17 XORL (off-12)(BP),DI;\
28 #define BODY0(off,FN,V,A,B,C,D,E)\
41 * fn1 = (((C^D)&B)^D);
58 * fn3 = ((B ^ C) & (D ^= B)) ^ B
71 * void sha1block(uchar *DATA, int LEN, ulong *STATE)
78 * stack offsets for locals
81 * ulong *w15, *w40, *w60, *w80;
84 * ulong a = eax, b = ebx, c = ecx, d = edx, e = esi
87 #define WARRAY (-4-(80*4))
88 #define TMP1 (-8-(80*4))
89 #define TMP2 (-12-(80*4))
90 #define W15 (-16-(80*4))
91 #define W40 (-20-(80*4))
92 #define W60 (-24-(80*4))
93 #define W80 (-28-(80*4))
94 #define EDATA (-32-(80*4))
98 MOVL AX,edata+EDATA(SP)
100 LEAL aw15+(WARRAY+15*4)(SP),DI
102 LEAL aw40+(WARRAY+40*4)(SP),DX
104 LEAL aw60+(WARRAY+60*4)(SP),CX
106 LEAL aw80+(WARRAY+80*4)(SP),DI
110 LEAL warray+WARRAY(SP),BP
112 MOVL state+STATE(FP),DI
115 MOVL BX,tmp1+TMP1(SP)
120 MOVL data+DATA(FP),BX
123 BODY0(0,FN1,0x5a827999,AX,tmp1+TMP1(SP),CX,DX,SI)
124 MOVL SI,tmp2+TMP2(SP)
125 BODY0(4,FN1,0x5a827999,SI,AX,tmp1+TMP1(SP),CX,DX)
126 MOVL tmp1+TMP1(SP),SI
127 BODY0(8,FN1,0x5a827999,DX,tmp2+TMP2(SP),AX,SI,CX)
128 BODY0(12,FN1,0x5a827999,CX,DX,tmp2+TMP2(SP),AX,SI)
129 MOVL SI,tmp1+TMP1(SP)
130 BODY0(16,FN1,0x5a827999,SI,CX,DX,tmp2+TMP2(SP),AX)
131 MOVL tmp2+TMP2(SP),SI
138 BODY0(0,FN1,0x5a827999,AX,tmp1+TMP1(SP),CX,DX,SI)
140 MOVL BX,data+DATA(FP)
141 MOVL tmp1+TMP1(SP),BX
143 BODY(4,FN1,0x5a827999,SI,AX,BX,CX,DX)
144 BODY(8,FN1,0x5a827999,DX,SI,AX,BX,CX)
145 BODY(12,FN1,0x5a827999,CX,DX,SI,AX,BX)
146 BODY(16,FN1,0x5a827999,BX,CX,DX,SI,AX)
151 BODY(0,FN24,0x6ed9eba1,AX,BX,CX,DX,SI)
152 BODY(4,FN24,0x6ed9eba1,SI,AX,BX,CX,DX)
153 BODY(8,FN24,0x6ed9eba1,DX,SI,AX,BX,CX)
154 BODY(12,FN24,0x6ed9eba1,CX,DX,SI,AX,BX)
155 BODY(16,FN24,0x6ed9eba1,BX,CX,DX,SI,AX)
162 BODY(0,FN3,0x8f1bbcdc,AX,BX,CX,DX,SI)
163 BODY(4,FN3,0x8f1bbcdc,SI,AX,BX,CX,DX)
164 BODY(8,FN3,0x8f1bbcdc,DX,SI,AX,BX,CX)
165 BODY(12,FN3,0x8f1bbcdc,CX,DX,SI,AX,BX)
166 BODY(16,FN3,0x8f1bbcdc,BX,CX,DX,SI,AX)
173 BODY(0,FN24,0xca62c1d6,AX,BX,CX,DX,SI)
174 BODY(4,FN24,0xca62c1d6,SI,AX,BX,CX,DX)
175 BODY(8,FN24,0xca62c1d6,DX,SI,AX,BX,CX)
176 BODY(12,FN24,0xca62c1d6,CX,DX,SI,AX,BX)
177 BODY(16,FN24,0xca62c1d6,BX,CX,DX,SI,AX)
183 MOVL state+STATE(FP),DI
190 MOVL edata+EDATA(SP),DI
191 CMPL data+DATA(FP),DI