1 TEXT _sha1block+0(SB),$328
11 #define BODYX(off,FN,V,A,B,C,D,E)\
29 #define BODY1(off,FN,V,A,B,C,D,E)\
30 MOVBU off(DATAREG),TMP2;\
31 MOVBU (off+1)(DATAREG),TMP3;\
32 MOVBU (off+2)(DATAREG),TMP1;\
33 MOVBU (off+3)(DATAREG),TMP4;\
40 BODYX(off,FN,V,A,B,C,D,E)
43 * x = (wp[off-3] ^ wp[off-8] ^ wp[off-14] ^ wp[off-16]) <<< 1;
46 #define BODY(off,FN,V,A,B,C,D,E)\
47 MOVW (off-64)(WREG),TMP1;\
48 MOVW (off-56)(WREG),TMP2;\
49 MOVW (off-32)(WREG),TMP3;\
50 MOVW (off-12)(WREG),TMP4;\
57 BODYX(off,FN,V,A,B,C,D,E)
60 * fn1 = (((C^D)&B)^D);
75 * fn3 = ((B ^ C) & (D ^ B)) ^ B
85 * void vtSha1Block(ulong *STATE, uchar *DATA, int LEN)
92 * stack offsets for locals
95 * ulong *w15, *w40, *w60, *w80;
98 * ulong a = eax, b = ebx, c = ecx, d = edx, e = esi
101 #define WARRAY (-4-(80*4))
124 MOVW len+LEN(FP),TMP1
125 MOVW state+STATE(FP),STREG
126 ADDU DATAREG,TMP1,EDREG
134 MOVW $warray+WARRAY(SP),WREG
135 ADDU $(15*4),WREG,W15REG
136 ADDU $(40*4),WREG,W40REG
137 ADDU $(60*4),WREG,W60REG
138 ADDU $(80*4),WREG,W80REG
141 MOVW $warray+WARRAY(SP),WREG
143 MOVW $0x5a827999,VREG
145 BODY1(0,FN1,VREG,AREG,BREG,CREG,DREG,EREG)
146 BODY1(4,FN1,VREG,EREG,AREG,BREG,CREG,DREG)
147 BODY1(8,FN1,VREG,DREG,EREG,AREG,BREG,CREG)
148 BODY1(12,FN1,VREG,CREG,DREG,EREG,AREG,BREG)
149 BODY1(16,FN1,VREG,BREG,CREG,DREG,EREG,AREG)
153 BNE WREG,W15REG,loop1
155 BODY1(0,FN1,VREG,AREG,BREG,CREG,DREG,EREG)
158 BODY(4,FN1,VREG,EREG,AREG,BREG,CREG,DREG)
159 BODY(8,FN1,VREG,DREG,EREG,AREG,BREG,CREG)
160 BODY(12,FN1,VREG,CREG,DREG,EREG,AREG,BREG)
161 BODY(16,FN1,VREG,BREG,CREG,DREG,EREG,AREG)
165 MOVW $0x6ed9eba1,VREG
167 BODY(0,FN24,VREG,AREG,BREG,CREG,DREG,EREG)
168 BODY(4,FN24,VREG,EREG,AREG,BREG,CREG,DREG)
169 BODY(8,FN24,VREG,DREG,EREG,AREG,BREG,CREG)
170 BODY(12,FN24,VREG,CREG,DREG,EREG,AREG,BREG)
171 BODY(16,FN24,VREG,BREG,CREG,DREG,EREG,AREG)
174 BNE WREG,W40REG,loop2
176 MOVW $0x8f1bbcdc,VREG
178 BODY(0,FN3,VREG,AREG,BREG,CREG,DREG,EREG)
179 BODY(4,FN3,VREG,EREG,AREG,BREG,CREG,DREG)
180 BODY(8,FN3,VREG,DREG,EREG,AREG,BREG,CREG)
181 BODY(12,FN3,VREG,CREG,DREG,EREG,AREG,BREG)
182 BODY(16,FN3,VREG,BREG,CREG,DREG,EREG,AREG)
185 BNE WREG,W60REG,loop3
187 MOVW $0xca62c1d6,VREG
189 BODY(0,FN24,VREG,AREG,BREG,CREG,DREG,EREG)
190 BODY(4,FN24,VREG,EREG,AREG,BREG,CREG,DREG)
191 BODY(8,FN24,VREG,DREG,EREG,AREG,BREG,CREG)
192 BODY(12,FN24,VREG,CREG,DREG,EREG,AREG,BREG)
193 BODY(16,FN24,VREG,BREG,CREG,DREG,EREG,AREG)
196 BNE WREG,W80REG,loop4
216 BNE DATAREG,EDREG,mainloop