Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(279)

Side by Side Diff: win-x86/crypto/rc4/rc4-586.asm

Issue 2569253003: BoringSSL: Roll generated files forward. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « mac-x86_64/crypto/rc4/rc4-x86_64.S ('k') | win-x86_64/crypto/ec/p256-x86_64-asm.asm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 %ifidn __OUTPUT_FORMAT__,obj
2 section code use32 class=code align=64
3 %elifidn __OUTPUT_FORMAT__,win32
4 %ifdef __YASM_VERSION_ID__
5 %if __YASM_VERSION_ID__ < 01010000h
6 %error yasm version 1.1.0 or later needed.
7 %endif
8 ; Yasm automatically includes .00 and complains about redefining it.
9 ; https://www.tortall.net/projects/yasm/manual/html/objfmt-win32-safeseh.html
10 %else
11 $@feat.00 equ 1
12 %endif
13 section .text code align=64
14 %else
15 section .text code
16 %endif
17 ;extern _OPENSSL_ia32cap_P
18 global _asm_RC4
19 align 16
20 _asm_RC4:
21 L$_asm_RC4_begin:
22 push ebp
23 push ebx
24 push esi
25 push edi
26 mov edi,DWORD [20+esp]
27 mov edx,DWORD [24+esp]
28 mov esi,DWORD [28+esp]
29 mov ebp,DWORD [32+esp]
30 xor eax,eax
31 xor ebx,ebx
32 cmp edx,0
33 je NEAR L$000abort
34 mov al,BYTE [edi]
35 mov bl,BYTE [4+edi]
36 add edi,8
37 lea ecx,[edx*1+esi]
38 sub ebp,esi
39 mov DWORD [24+esp],ecx
40 inc al
41 cmp DWORD [256+edi],-1
42 je NEAR L$001RC4_CHAR
43 mov ecx,DWORD [eax*4+edi]
44 and edx,-4
45 jz NEAR L$002loop1
46 mov DWORD [32+esp],ebp
47 test edx,-8
48 jz NEAR L$003go4loop4
49 lea ebp,[_OPENSSL_ia32cap_P]
50 bt DWORD [ebp],26
51 jnc NEAR L$003go4loop4
52 mov ebp,DWORD [32+esp]
53 and edx,-8
54 lea edx,[edx*1+esi-8]
55 mov DWORD [edi-4],edx
56 add bl,cl
57 mov edx,DWORD [ebx*4+edi]
58 mov DWORD [ebx*4+edi],ecx
59 mov DWORD [eax*4+edi],edx
60 inc eax
61 add edx,ecx
62 movzx eax,al
63 movzx edx,dl
64 movq mm0,[esi]
65 mov ecx,DWORD [eax*4+edi]
66 movd mm2,DWORD [edx*4+edi]
67 jmp NEAR L$004loop_mmx_enter
68 align 16
69 L$005loop_mmx:
70 add bl,cl
71 psllq mm1,56
72 mov edx,DWORD [ebx*4+edi]
73 mov DWORD [ebx*4+edi],ecx
74 mov DWORD [eax*4+edi],edx
75 inc eax
76 add edx,ecx
77 movzx eax,al
78 movzx edx,dl
79 pxor mm2,mm1
80 movq mm0,[esi]
81 movq [esi*1+ebp-8],mm2
82 mov ecx,DWORD [eax*4+edi]
83 movd mm2,DWORD [edx*4+edi]
84 L$004loop_mmx_enter:
85 add bl,cl
86 mov edx,DWORD [ebx*4+edi]
87 mov DWORD [ebx*4+edi],ecx
88 mov DWORD [eax*4+edi],edx
89 inc eax
90 add edx,ecx
91 movzx eax,al
92 movzx edx,dl
93 pxor mm2,mm0
94 mov ecx,DWORD [eax*4+edi]
95 movd mm1,DWORD [edx*4+edi]
96 add bl,cl
97 psllq mm1,8
98 mov edx,DWORD [ebx*4+edi]
99 mov DWORD [ebx*4+edi],ecx
100 mov DWORD [eax*4+edi],edx
101 inc eax
102 add edx,ecx
103 movzx eax,al
104 movzx edx,dl
105 pxor mm2,mm1
106 mov ecx,DWORD [eax*4+edi]
107 movd mm1,DWORD [edx*4+edi]
108 add bl,cl
109 psllq mm1,16
110 mov edx,DWORD [ebx*4+edi]
111 mov DWORD [ebx*4+edi],ecx
112 mov DWORD [eax*4+edi],edx
113 inc eax
114 add edx,ecx
115 movzx eax,al
116 movzx edx,dl
117 pxor mm2,mm1
118 mov ecx,DWORD [eax*4+edi]
119 movd mm1,DWORD [edx*4+edi]
120 add bl,cl
121 psllq mm1,24
122 mov edx,DWORD [ebx*4+edi]
123 mov DWORD [ebx*4+edi],ecx
124 mov DWORD [eax*4+edi],edx
125 inc eax
126 add edx,ecx
127 movzx eax,al
128 movzx edx,dl
129 pxor mm2,mm1
130 mov ecx,DWORD [eax*4+edi]
131 movd mm1,DWORD [edx*4+edi]
132 add bl,cl
133 psllq mm1,32
134 mov edx,DWORD [ebx*4+edi]
135 mov DWORD [ebx*4+edi],ecx
136 mov DWORD [eax*4+edi],edx
137 inc eax
138 add edx,ecx
139 movzx eax,al
140 movzx edx,dl
141 pxor mm2,mm1
142 mov ecx,DWORD [eax*4+edi]
143 movd mm1,DWORD [edx*4+edi]
144 add bl,cl
145 psllq mm1,40
146 mov edx,DWORD [ebx*4+edi]
147 mov DWORD [ebx*4+edi],ecx
148 mov DWORD [eax*4+edi],edx
149 inc eax
150 add edx,ecx
151 movzx eax,al
152 movzx edx,dl
153 pxor mm2,mm1
154 mov ecx,DWORD [eax*4+edi]
155 movd mm1,DWORD [edx*4+edi]
156 add bl,cl
157 psllq mm1,48
158 mov edx,DWORD [ebx*4+edi]
159 mov DWORD [ebx*4+edi],ecx
160 mov DWORD [eax*4+edi],edx
161 inc eax
162 add edx,ecx
163 movzx eax,al
164 movzx edx,dl
165 pxor mm2,mm1
166 mov ecx,DWORD [eax*4+edi]
167 movd mm1,DWORD [edx*4+edi]
168 mov edx,ebx
169 xor ebx,ebx
170 mov bl,dl
171 cmp esi,DWORD [edi-4]
172 lea esi,[8+esi]
173 jb NEAR L$005loop_mmx
174 psllq mm1,56
175 pxor mm2,mm1
176 movq [esi*1+ebp-8],mm2
177 emms
178 cmp esi,DWORD [24+esp]
179 je NEAR L$006done
180 jmp NEAR L$002loop1
181 align 16
182 L$003go4loop4:
183 lea edx,[edx*1+esi-4]
184 mov DWORD [28+esp],edx
185 L$007loop4:
186 add bl,cl
187 mov edx,DWORD [ebx*4+edi]
188 mov DWORD [ebx*4+edi],ecx
189 mov DWORD [eax*4+edi],edx
190 add edx,ecx
191 inc al
192 and edx,255
193 mov ecx,DWORD [eax*4+edi]
194 mov ebp,DWORD [edx*4+edi]
195 add bl,cl
196 mov edx,DWORD [ebx*4+edi]
197 mov DWORD [ebx*4+edi],ecx
198 mov DWORD [eax*4+edi],edx
199 add edx,ecx
200 inc al
201 and edx,255
202 ror ebp,8
203 mov ecx,DWORD [eax*4+edi]
204 or ebp,DWORD [edx*4+edi]
205 add bl,cl
206 mov edx,DWORD [ebx*4+edi]
207 mov DWORD [ebx*4+edi],ecx
208 mov DWORD [eax*4+edi],edx
209 add edx,ecx
210 inc al
211 and edx,255
212 ror ebp,8
213 mov ecx,DWORD [eax*4+edi]
214 or ebp,DWORD [edx*4+edi]
215 add bl,cl
216 mov edx,DWORD [ebx*4+edi]
217 mov DWORD [ebx*4+edi],ecx
218 mov DWORD [eax*4+edi],edx
219 add edx,ecx
220 inc al
221 and edx,255
222 ror ebp,8
223 mov ecx,DWORD [32+esp]
224 or ebp,DWORD [edx*4+edi]
225 ror ebp,8
226 xor ebp,DWORD [esi]
227 cmp esi,DWORD [28+esp]
228 mov DWORD [esi*1+ecx],ebp
229 lea esi,[4+esi]
230 mov ecx,DWORD [eax*4+edi]
231 jb NEAR L$007loop4
232 cmp esi,DWORD [24+esp]
233 je NEAR L$006done
234 mov ebp,DWORD [32+esp]
235 align 16
236 L$002loop1:
237 add bl,cl
238 mov edx,DWORD [ebx*4+edi]
239 mov DWORD [ebx*4+edi],ecx
240 mov DWORD [eax*4+edi],edx
241 add edx,ecx
242 inc al
243 and edx,255
244 mov edx,DWORD [edx*4+edi]
245 xor dl,BYTE [esi]
246 lea esi,[1+esi]
247 mov ecx,DWORD [eax*4+edi]
248 cmp esi,DWORD [24+esp]
249 mov BYTE [esi*1+ebp-1],dl
250 jb NEAR L$002loop1
251 jmp NEAR L$006done
252 align 16
253 L$001RC4_CHAR:
254 movzx ecx,BYTE [eax*1+edi]
255 L$008cloop1:
256 add bl,cl
257 movzx edx,BYTE [ebx*1+edi]
258 mov BYTE [ebx*1+edi],cl
259 mov BYTE [eax*1+edi],dl
260 add dl,cl
261 movzx edx,BYTE [edx*1+edi]
262 add al,1
263 xor dl,BYTE [esi]
264 lea esi,[1+esi]
265 movzx ecx,BYTE [eax*1+edi]
266 cmp esi,DWORD [24+esp]
267 mov BYTE [esi*1+ebp-1],dl
268 jb NEAR L$008cloop1
269 L$006done:
270 dec al
271 mov DWORD [edi-4],ebx
272 mov BYTE [edi-8],al
273 L$000abort:
274 pop edi
275 pop esi
276 pop ebx
277 pop ebp
278 ret
279 global _asm_RC4_set_key
280 align 16
281 _asm_RC4_set_key:
282 L$_asm_RC4_set_key_begin:
283 push ebp
284 push ebx
285 push esi
286 push edi
287 mov edi,DWORD [20+esp]
288 mov ebp,DWORD [24+esp]
289 mov esi,DWORD [28+esp]
290 lea edx,[_OPENSSL_ia32cap_P]
291 lea edi,[8+edi]
292 lea esi,[ebp*1+esi]
293 neg ebp
294 xor eax,eax
295 mov DWORD [edi-4],ebp
296 bt DWORD [edx],20
297 jc NEAR L$009c1stloop
298 align 16
299 L$010w1stloop:
300 mov DWORD [eax*4+edi],eax
301 add al,1
302 jnc NEAR L$010w1stloop
303 xor ecx,ecx
304 xor edx,edx
305 align 16
306 L$011w2ndloop:
307 mov eax,DWORD [ecx*4+edi]
308 add dl,BYTE [ebp*1+esi]
309 add dl,al
310 add ebp,1
311 mov ebx,DWORD [edx*4+edi]
312 jnz NEAR L$012wnowrap
313 mov ebp,DWORD [edi-4]
314 L$012wnowrap:
315 mov DWORD [edx*4+edi],eax
316 mov DWORD [ecx*4+edi],ebx
317 add cl,1
318 jnc NEAR L$011w2ndloop
319 jmp NEAR L$013exit
320 align 16
321 L$009c1stloop:
322 mov BYTE [eax*1+edi],al
323 add al,1
324 jnc NEAR L$009c1stloop
325 xor ecx,ecx
326 xor edx,edx
327 xor ebx,ebx
328 align 16
329 L$014c2ndloop:
330 mov al,BYTE [ecx*1+edi]
331 add dl,BYTE [ebp*1+esi]
332 add dl,al
333 add ebp,1
334 mov bl,BYTE [edx*1+edi]
335 jnz NEAR L$015cnowrap
336 mov ebp,DWORD [edi-4]
337 L$015cnowrap:
338 mov BYTE [edx*1+edi],al
339 mov BYTE [ecx*1+edi],bl
340 add cl,1
341 jnc NEAR L$014c2ndloop
342 mov DWORD [256+edi],-1
343 L$013exit:
344 xor eax,eax
345 mov DWORD [edi-8],eax
346 mov DWORD [edi-4],eax
347 pop edi
348 pop esi
349 pop ebx
350 pop ebp
351 ret
352 segment .bss
353 common _OPENSSL_ia32cap_P 16
OLDNEW
« no previous file with comments | « mac-x86_64/crypto/rc4/rc4-x86_64.S ('k') | win-x86_64/crypto/ec/p256-x86_64-asm.asm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698