OLD | NEW |
| (Empty) |
1 .text | |
2 | |
3 | |
4 | |
5 | |
6 .type _bsaes_encrypt8,@function | |
7 .align 64 | |
8 _bsaes_encrypt8: | |
9 leaq .LBS0(%rip),%r11 | |
10 | |
11 movdqa (%rax),%xmm8 | |
12 leaq 16(%rax),%rax | |
13 movdqa 80(%r11),%xmm7 | |
14 pxor %xmm8,%xmm15 | |
15 pxor %xmm8,%xmm0 | |
16 .byte 102,68,15,56,0,255 | |
17 pxor %xmm8,%xmm1 | |
18 .byte 102,15,56,0,199 | |
19 pxor %xmm8,%xmm2 | |
20 .byte 102,15,56,0,207 | |
21 pxor %xmm8,%xmm3 | |
22 .byte 102,15,56,0,215 | |
23 pxor %xmm8,%xmm4 | |
24 .byte 102,15,56,0,223 | |
25 pxor %xmm8,%xmm5 | |
26 .byte 102,15,56,0,231 | |
27 pxor %xmm8,%xmm6 | |
28 .byte 102,15,56,0,239 | |
29 .byte 102,15,56,0,247 | |
30 _bsaes_encrypt8_bitslice: | |
31 movdqa 0(%r11),%xmm7 | |
32 movdqa 16(%r11),%xmm8 | |
33 movdqa %xmm5,%xmm9 | |
34 psrlq $1,%xmm5 | |
35 movdqa %xmm3,%xmm10 | |
36 psrlq $1,%xmm3 | |
37 pxor %xmm6,%xmm5 | |
38 pxor %xmm4,%xmm3 | |
39 pand %xmm7,%xmm5 | |
40 pand %xmm7,%xmm3 | |
41 pxor %xmm5,%xmm6 | |
42 psllq $1,%xmm5 | |
43 pxor %xmm3,%xmm4 | |
44 psllq $1,%xmm3 | |
45 pxor %xmm9,%xmm5 | |
46 pxor %xmm10,%xmm3 | |
47 movdqa %xmm1,%xmm9 | |
48 psrlq $1,%xmm1 | |
49 movdqa %xmm15,%xmm10 | |
50 psrlq $1,%xmm15 | |
51 pxor %xmm2,%xmm1 | |
52 pxor %xmm0,%xmm15 | |
53 pand %xmm7,%xmm1 | |
54 pand %xmm7,%xmm15 | |
55 pxor %xmm1,%xmm2 | |
56 psllq $1,%xmm1 | |
57 pxor %xmm15,%xmm0 | |
58 psllq $1,%xmm15 | |
59 pxor %xmm9,%xmm1 | |
60 pxor %xmm10,%xmm15 | |
61 movdqa 32(%r11),%xmm7 | |
62 movdqa %xmm4,%xmm9 | |
63 psrlq $2,%xmm4 | |
64 movdqa %xmm3,%xmm10 | |
65 psrlq $2,%xmm3 | |
66 pxor %xmm6,%xmm4 | |
67 pxor %xmm5,%xmm3 | |
68 pand %xmm8,%xmm4 | |
69 pand %xmm8,%xmm3 | |
70 pxor %xmm4,%xmm6 | |
71 psllq $2,%xmm4 | |
72 pxor %xmm3,%xmm5 | |
73 psllq $2,%xmm3 | |
74 pxor %xmm9,%xmm4 | |
75 pxor %xmm10,%xmm3 | |
76 movdqa %xmm0,%xmm9 | |
77 psrlq $2,%xmm0 | |
78 movdqa %xmm15,%xmm10 | |
79 psrlq $2,%xmm15 | |
80 pxor %xmm2,%xmm0 | |
81 pxor %xmm1,%xmm15 | |
82 pand %xmm8,%xmm0 | |
83 pand %xmm8,%xmm15 | |
84 pxor %xmm0,%xmm2 | |
85 psllq $2,%xmm0 | |
86 pxor %xmm15,%xmm1 | |
87 psllq $2,%xmm15 | |
88 pxor %xmm9,%xmm0 | |
89 pxor %xmm10,%xmm15 | |
90 movdqa %xmm2,%xmm9 | |
91 psrlq $4,%xmm2 | |
92 movdqa %xmm1,%xmm10 | |
93 psrlq $4,%xmm1 | |
94 pxor %xmm6,%xmm2 | |
95 pxor %xmm5,%xmm1 | |
96 pand %xmm7,%xmm2 | |
97 pand %xmm7,%xmm1 | |
98 pxor %xmm2,%xmm6 | |
99 psllq $4,%xmm2 | |
100 pxor %xmm1,%xmm5 | |
101 psllq $4,%xmm1 | |
102 pxor %xmm9,%xmm2 | |
103 pxor %xmm10,%xmm1 | |
104 movdqa %xmm0,%xmm9 | |
105 psrlq $4,%xmm0 | |
106 movdqa %xmm15,%xmm10 | |
107 psrlq $4,%xmm15 | |
108 pxor %xmm4,%xmm0 | |
109 pxor %xmm3,%xmm15 | |
110 pand %xmm7,%xmm0 | |
111 pand %xmm7,%xmm15 | |
112 pxor %xmm0,%xmm4 | |
113 psllq $4,%xmm0 | |
114 pxor %xmm15,%xmm3 | |
115 psllq $4,%xmm15 | |
116 pxor %xmm9,%xmm0 | |
117 pxor %xmm10,%xmm15 | |
118 decl %r10d | |
119 jmp .Lenc_sbox | |
120 .align 16 | |
121 .Lenc_loop: | |
122 pxor 0(%rax),%xmm15 | |
123 pxor 16(%rax),%xmm0 | |
124 .byte 102,68,15,56,0,255 | |
125 pxor 32(%rax),%xmm1 | |
126 .byte 102,15,56,0,199 | |
127 pxor 48(%rax),%xmm2 | |
128 .byte 102,15,56,0,207 | |
129 pxor 64(%rax),%xmm3 | |
130 .byte 102,15,56,0,215 | |
131 pxor 80(%rax),%xmm4 | |
132 .byte 102,15,56,0,223 | |
133 pxor 96(%rax),%xmm5 | |
134 .byte 102,15,56,0,231 | |
135 pxor 112(%rax),%xmm6 | |
136 .byte 102,15,56,0,239 | |
137 leaq 128(%rax),%rax | |
138 .byte 102,15,56,0,247 | |
139 .Lenc_sbox: | |
140 pxor %xmm5,%xmm4 | |
141 pxor %xmm0,%xmm1 | |
142 pxor %xmm15,%xmm2 | |
143 pxor %xmm1,%xmm5 | |
144 pxor %xmm15,%xmm4 | |
145 | |
146 pxor %xmm2,%xmm5 | |
147 pxor %xmm6,%xmm2 | |
148 pxor %xmm4,%xmm6 | |
149 pxor %xmm3,%xmm2 | |
150 pxor %xmm4,%xmm3 | |
151 pxor %xmm0,%xmm2 | |
152 | |
153 pxor %xmm6,%xmm1 | |
154 pxor %xmm4,%xmm0 | |
155 movdqa %xmm6,%xmm10 | |
156 movdqa %xmm0,%xmm9 | |
157 movdqa %xmm4,%xmm8 | |
158 movdqa %xmm1,%xmm12 | |
159 movdqa %xmm5,%xmm11 | |
160 | |
161 pxor %xmm3,%xmm10 | |
162 pxor %xmm1,%xmm9 | |
163 pxor %xmm2,%xmm8 | |
164 movdqa %xmm10,%xmm13 | |
165 pxor %xmm3,%xmm12 | |
166 movdqa %xmm9,%xmm7 | |
167 pxor %xmm15,%xmm11 | |
168 movdqa %xmm10,%xmm14 | |
169 | |
170 por %xmm8,%xmm9 | |
171 por %xmm11,%xmm10 | |
172 pxor %xmm7,%xmm14 | |
173 pand %xmm11,%xmm13 | |
174 pxor %xmm8,%xmm11 | |
175 pand %xmm8,%xmm7 | |
176 pand %xmm11,%xmm14 | |
177 movdqa %xmm2,%xmm11 | |
178 pxor %xmm15,%xmm11 | |
179 pand %xmm11,%xmm12 | |
180 pxor %xmm12,%xmm10 | |
181 pxor %xmm12,%xmm9 | |
182 movdqa %xmm6,%xmm12 | |
183 movdqa %xmm4,%xmm11 | |
184 pxor %xmm0,%xmm12 | |
185 pxor %xmm5,%xmm11 | |
186 movdqa %xmm12,%xmm8 | |
187 pand %xmm11,%xmm12 | |
188 por %xmm11,%xmm8 | |
189 pxor %xmm12,%xmm7 | |
190 pxor %xmm14,%xmm10 | |
191 pxor %xmm13,%xmm9 | |
192 pxor %xmm14,%xmm8 | |
193 movdqa %xmm1,%xmm11 | |
194 pxor %xmm13,%xmm7 | |
195 movdqa %xmm3,%xmm12 | |
196 pxor %xmm13,%xmm8 | |
197 movdqa %xmm0,%xmm13 | |
198 pand %xmm2,%xmm11 | |
199 movdqa %xmm6,%xmm14 | |
200 pand %xmm15,%xmm12 | |
201 pand %xmm4,%xmm13 | |
202 por %xmm5,%xmm14 | |
203 pxor %xmm11,%xmm10 | |
204 pxor %xmm12,%xmm9 | |
205 pxor %xmm13,%xmm8 | |
206 pxor %xmm14,%xmm7 | |
207 | |
208 | |
209 | |
210 | |
211 | |
212 movdqa %xmm10,%xmm11 | |
213 pand %xmm8,%xmm10 | |
214 pxor %xmm9,%xmm11 | |
215 | |
216 movdqa %xmm7,%xmm13 | |
217 movdqa %xmm11,%xmm14 | |
218 pxor %xmm10,%xmm13 | |
219 pand %xmm13,%xmm14 | |
220 | |
221 movdqa %xmm8,%xmm12 | |
222 pxor %xmm9,%xmm14 | |
223 pxor %xmm7,%xmm12 | |
224 | |
225 pxor %xmm9,%xmm10 | |
226 | |
227 pand %xmm10,%xmm12 | |
228 | |
229 movdqa %xmm13,%xmm9 | |
230 pxor %xmm7,%xmm12 | |
231 | |
232 pxor %xmm12,%xmm9 | |
233 pxor %xmm12,%xmm8 | |
234 | |
235 pand %xmm7,%xmm9 | |
236 | |
237 pxor %xmm9,%xmm13 | |
238 pxor %xmm9,%xmm8 | |
239 | |
240 pand %xmm14,%xmm13 | |
241 | |
242 pxor %xmm11,%xmm13 | |
243 movdqa %xmm5,%xmm11 | |
244 movdqa %xmm4,%xmm7 | |
245 movdqa %xmm14,%xmm9 | |
246 pxor %xmm13,%xmm9 | |
247 pand %xmm5,%xmm9 | |
248 pxor %xmm4,%xmm5 | |
249 pand %xmm14,%xmm4 | |
250 pand %xmm13,%xmm5 | |
251 pxor %xmm4,%xmm5 | |
252 pxor %xmm9,%xmm4 | |
253 pxor %xmm15,%xmm11 | |
254 pxor %xmm2,%xmm7 | |
255 pxor %xmm12,%xmm14 | |
256 pxor %xmm8,%xmm13 | |
257 movdqa %xmm14,%xmm10 | |
258 movdqa %xmm12,%xmm9 | |
259 pxor %xmm13,%xmm10 | |
260 pxor %xmm8,%xmm9 | |
261 pand %xmm11,%xmm10 | |
262 pand %xmm15,%xmm9 | |
263 pxor %xmm7,%xmm11 | |
264 pxor %xmm2,%xmm15 | |
265 pand %xmm14,%xmm7 | |
266 pand %xmm12,%xmm2 | |
267 pand %xmm13,%xmm11 | |
268 pand %xmm8,%xmm15 | |
269 pxor %xmm11,%xmm7 | |
270 pxor %xmm2,%xmm15 | |
271 pxor %xmm10,%xmm11 | |
272 pxor %xmm9,%xmm2 | |
273 pxor %xmm11,%xmm5 | |
274 pxor %xmm11,%xmm15 | |
275 pxor %xmm7,%xmm4 | |
276 pxor %xmm7,%xmm2 | |
277 | |
278 movdqa %xmm6,%xmm11 | |
279 movdqa %xmm0,%xmm7 | |
280 pxor %xmm3,%xmm11 | |
281 pxor %xmm1,%xmm7 | |
282 movdqa %xmm14,%xmm10 | |
283 movdqa %xmm12,%xmm9 | |
284 pxor %xmm13,%xmm10 | |
285 pxor %xmm8,%xmm9 | |
286 pand %xmm11,%xmm10 | |
287 pand %xmm3,%xmm9 | |
288 pxor %xmm7,%xmm11 | |
289 pxor %xmm1,%xmm3 | |
290 pand %xmm14,%xmm7 | |
291 pand %xmm12,%xmm1 | |
292 pand %xmm13,%xmm11 | |
293 pand %xmm8,%xmm3 | |
294 pxor %xmm11,%xmm7 | |
295 pxor %xmm1,%xmm3 | |
296 pxor %xmm10,%xmm11 | |
297 pxor %xmm9,%xmm1 | |
298 pxor %xmm12,%xmm14 | |
299 pxor %xmm8,%xmm13 | |
300 movdqa %xmm14,%xmm10 | |
301 pxor %xmm13,%xmm10 | |
302 pand %xmm6,%xmm10 | |
303 pxor %xmm0,%xmm6 | |
304 pand %xmm14,%xmm0 | |
305 pand %xmm13,%xmm6 | |
306 pxor %xmm0,%xmm6 | |
307 pxor %xmm10,%xmm0 | |
308 pxor %xmm11,%xmm6 | |
309 pxor %xmm11,%xmm3 | |
310 pxor %xmm7,%xmm0 | |
311 pxor %xmm7,%xmm1 | |
312 pxor %xmm15,%xmm6 | |
313 pxor %xmm5,%xmm0 | |
314 pxor %xmm6,%xmm3 | |
315 pxor %xmm15,%xmm5 | |
316 pxor %xmm0,%xmm15 | |
317 | |
318 pxor %xmm4,%xmm0 | |
319 pxor %xmm1,%xmm4 | |
320 pxor %xmm2,%xmm1 | |
321 pxor %xmm4,%xmm2 | |
322 pxor %xmm4,%xmm3 | |
323 | |
324 pxor %xmm2,%xmm5 | |
325 decl %r10d | |
326 jl .Lenc_done | |
327 pshufd $147,%xmm15,%xmm7 | |
328 pshufd $147,%xmm0,%xmm8 | |
329 pxor %xmm7,%xmm15 | |
330 pshufd $147,%xmm3,%xmm9 | |
331 pxor %xmm8,%xmm0 | |
332 pshufd $147,%xmm5,%xmm10 | |
333 pxor %xmm9,%xmm3 | |
334 pshufd $147,%xmm2,%xmm11 | |
335 pxor %xmm10,%xmm5 | |
336 pshufd $147,%xmm6,%xmm12 | |
337 pxor %xmm11,%xmm2 | |
338 pshufd $147,%xmm1,%xmm13 | |
339 pxor %xmm12,%xmm6 | |
340 pshufd $147,%xmm4,%xmm14 | |
341 pxor %xmm13,%xmm1 | |
342 pxor %xmm14,%xmm4 | |
343 | |
344 pxor %xmm15,%xmm8 | |
345 pxor %xmm4,%xmm7 | |
346 pxor %xmm4,%xmm8 | |
347 pshufd $78,%xmm15,%xmm15 | |
348 pxor %xmm0,%xmm9 | |
349 pshufd $78,%xmm0,%xmm0 | |
350 pxor %xmm2,%xmm12 | |
351 pxor %xmm7,%xmm15 | |
352 pxor %xmm6,%xmm13 | |
353 pxor %xmm8,%xmm0 | |
354 pxor %xmm5,%xmm11 | |
355 pshufd $78,%xmm2,%xmm7 | |
356 pxor %xmm1,%xmm14 | |
357 pshufd $78,%xmm6,%xmm8 | |
358 pxor %xmm3,%xmm10 | |
359 pshufd $78,%xmm5,%xmm2 | |
360 pxor %xmm4,%xmm10 | |
361 pshufd $78,%xmm4,%xmm6 | |
362 pxor %xmm4,%xmm11 | |
363 pshufd $78,%xmm1,%xmm5 | |
364 pxor %xmm11,%xmm7 | |
365 pshufd $78,%xmm3,%xmm1 | |
366 pxor %xmm12,%xmm8 | |
367 | |
368 pxor %xmm10,%xmm2 | |
369 pxor %xmm14,%xmm6 | |
370 pxor %xmm13,%xmm5 | |
371 movdqa %xmm7,%xmm3 | |
372 pxor %xmm9,%xmm1 | |
373 movdqa %xmm8,%xmm4 | |
374 movdqa 48(%r11),%xmm7 | |
375 jnz .Lenc_loop | |
376 movdqa 64(%r11),%xmm7 | |
377 jmp .Lenc_loop | |
378 .align 16 | |
379 .Lenc_done: | |
380 movdqa 0(%r11),%xmm7 | |
381 movdqa 16(%r11),%xmm8 | |
382 movdqa %xmm1,%xmm9 | |
383 psrlq $1,%xmm1 | |
384 movdqa %xmm2,%xmm10 | |
385 psrlq $1,%xmm2 | |
386 pxor %xmm4,%xmm1 | |
387 pxor %xmm6,%xmm2 | |
388 pand %xmm7,%xmm1 | |
389 pand %xmm7,%xmm2 | |
390 pxor %xmm1,%xmm4 | |
391 psllq $1,%xmm1 | |
392 pxor %xmm2,%xmm6 | |
393 psllq $1,%xmm2 | |
394 pxor %xmm9,%xmm1 | |
395 pxor %xmm10,%xmm2 | |
396 movdqa %xmm3,%xmm9 | |
397 psrlq $1,%xmm3 | |
398 movdqa %xmm15,%xmm10 | |
399 psrlq $1,%xmm15 | |
400 pxor %xmm5,%xmm3 | |
401 pxor %xmm0,%xmm15 | |
402 pand %xmm7,%xmm3 | |
403 pand %xmm7,%xmm15 | |
404 pxor %xmm3,%xmm5 | |
405 psllq $1,%xmm3 | |
406 pxor %xmm15,%xmm0 | |
407 psllq $1,%xmm15 | |
408 pxor %xmm9,%xmm3 | |
409 pxor %xmm10,%xmm15 | |
410 movdqa 32(%r11),%xmm7 | |
411 movdqa %xmm6,%xmm9 | |
412 psrlq $2,%xmm6 | |
413 movdqa %xmm2,%xmm10 | |
414 psrlq $2,%xmm2 | |
415 pxor %xmm4,%xmm6 | |
416 pxor %xmm1,%xmm2 | |
417 pand %xmm8,%xmm6 | |
418 pand %xmm8,%xmm2 | |
419 pxor %xmm6,%xmm4 | |
420 psllq $2,%xmm6 | |
421 pxor %xmm2,%xmm1 | |
422 psllq $2,%xmm2 | |
423 pxor %xmm9,%xmm6 | |
424 pxor %xmm10,%xmm2 | |
425 movdqa %xmm0,%xmm9 | |
426 psrlq $2,%xmm0 | |
427 movdqa %xmm15,%xmm10 | |
428 psrlq $2,%xmm15 | |
429 pxor %xmm5,%xmm0 | |
430 pxor %xmm3,%xmm15 | |
431 pand %xmm8,%xmm0 | |
432 pand %xmm8,%xmm15 | |
433 pxor %xmm0,%xmm5 | |
434 psllq $2,%xmm0 | |
435 pxor %xmm15,%xmm3 | |
436 psllq $2,%xmm15 | |
437 pxor %xmm9,%xmm0 | |
438 pxor %xmm10,%xmm15 | |
439 movdqa %xmm5,%xmm9 | |
440 psrlq $4,%xmm5 | |
441 movdqa %xmm3,%xmm10 | |
442 psrlq $4,%xmm3 | |
443 pxor %xmm4,%xmm5 | |
444 pxor %xmm1,%xmm3 | |
445 pand %xmm7,%xmm5 | |
446 pand %xmm7,%xmm3 | |
447 pxor %xmm5,%xmm4 | |
448 psllq $4,%xmm5 | |
449 pxor %xmm3,%xmm1 | |
450 psllq $4,%xmm3 | |
451 pxor %xmm9,%xmm5 | |
452 pxor %xmm10,%xmm3 | |
453 movdqa %xmm0,%xmm9 | |
454 psrlq $4,%xmm0 | |
455 movdqa %xmm15,%xmm10 | |
456 psrlq $4,%xmm15 | |
457 pxor %xmm6,%xmm0 | |
458 pxor %xmm2,%xmm15 | |
459 pand %xmm7,%xmm0 | |
460 pand %xmm7,%xmm15 | |
461 pxor %xmm0,%xmm6 | |
462 psllq $4,%xmm0 | |
463 pxor %xmm15,%xmm2 | |
464 psllq $4,%xmm15 | |
465 pxor %xmm9,%xmm0 | |
466 pxor %xmm10,%xmm15 | |
467 movdqa (%rax),%xmm7 | |
468 pxor %xmm7,%xmm3 | |
469 pxor %xmm7,%xmm5 | |
470 pxor %xmm7,%xmm2 | |
471 pxor %xmm7,%xmm6 | |
472 pxor %xmm7,%xmm1 | |
473 pxor %xmm7,%xmm4 | |
474 pxor %xmm7,%xmm15 | |
475 pxor %xmm7,%xmm0 | |
476 .byte 0xf3,0xc3 | |
477 .size _bsaes_encrypt8,.-_bsaes_encrypt8 | |
478 | |
479 .type _bsaes_decrypt8,@function | |
480 .align 64 | |
481 _bsaes_decrypt8: | |
482 leaq .LBS0(%rip),%r11 | |
483 | |
484 movdqa (%rax),%xmm8 | |
485 leaq 16(%rax),%rax | |
486 movdqa -48(%r11),%xmm7 | |
487 pxor %xmm8,%xmm15 | |
488 pxor %xmm8,%xmm0 | |
489 .byte 102,68,15,56,0,255 | |
490 pxor %xmm8,%xmm1 | |
491 .byte 102,15,56,0,199 | |
492 pxor %xmm8,%xmm2 | |
493 .byte 102,15,56,0,207 | |
494 pxor %xmm8,%xmm3 | |
495 .byte 102,15,56,0,215 | |
496 pxor %xmm8,%xmm4 | |
497 .byte 102,15,56,0,223 | |
498 pxor %xmm8,%xmm5 | |
499 .byte 102,15,56,0,231 | |
500 pxor %xmm8,%xmm6 | |
501 .byte 102,15,56,0,239 | |
502 .byte 102,15,56,0,247 | |
503 movdqa 0(%r11),%xmm7 | |
504 movdqa 16(%r11),%xmm8 | |
505 movdqa %xmm5,%xmm9 | |
506 psrlq $1,%xmm5 | |
507 movdqa %xmm3,%xmm10 | |
508 psrlq $1,%xmm3 | |
509 pxor %xmm6,%xmm5 | |
510 pxor %xmm4,%xmm3 | |
511 pand %xmm7,%xmm5 | |
512 pand %xmm7,%xmm3 | |
513 pxor %xmm5,%xmm6 | |
514 psllq $1,%xmm5 | |
515 pxor %xmm3,%xmm4 | |
516 psllq $1,%xmm3 | |
517 pxor %xmm9,%xmm5 | |
518 pxor %xmm10,%xmm3 | |
519 movdqa %xmm1,%xmm9 | |
520 psrlq $1,%xmm1 | |
521 movdqa %xmm15,%xmm10 | |
522 psrlq $1,%xmm15 | |
523 pxor %xmm2,%xmm1 | |
524 pxor %xmm0,%xmm15 | |
525 pand %xmm7,%xmm1 | |
526 pand %xmm7,%xmm15 | |
527 pxor %xmm1,%xmm2 | |
528 psllq $1,%xmm1 | |
529 pxor %xmm15,%xmm0 | |
530 psllq $1,%xmm15 | |
531 pxor %xmm9,%xmm1 | |
532 pxor %xmm10,%xmm15 | |
533 movdqa 32(%r11),%xmm7 | |
534 movdqa %xmm4,%xmm9 | |
535 psrlq $2,%xmm4 | |
536 movdqa %xmm3,%xmm10 | |
537 psrlq $2,%xmm3 | |
538 pxor %xmm6,%xmm4 | |
539 pxor %xmm5,%xmm3 | |
540 pand %xmm8,%xmm4 | |
541 pand %xmm8,%xmm3 | |
542 pxor %xmm4,%xmm6 | |
543 psllq $2,%xmm4 | |
544 pxor %xmm3,%xmm5 | |
545 psllq $2,%xmm3 | |
546 pxor %xmm9,%xmm4 | |
547 pxor %xmm10,%xmm3 | |
548 movdqa %xmm0,%xmm9 | |
549 psrlq $2,%xmm0 | |
550 movdqa %xmm15,%xmm10 | |
551 psrlq $2,%xmm15 | |
552 pxor %xmm2,%xmm0 | |
553 pxor %xmm1,%xmm15 | |
554 pand %xmm8,%xmm0 | |
555 pand %xmm8,%xmm15 | |
556 pxor %xmm0,%xmm2 | |
557 psllq $2,%xmm0 | |
558 pxor %xmm15,%xmm1 | |
559 psllq $2,%xmm15 | |
560 pxor %xmm9,%xmm0 | |
561 pxor %xmm10,%xmm15 | |
562 movdqa %xmm2,%xmm9 | |
563 psrlq $4,%xmm2 | |
564 movdqa %xmm1,%xmm10 | |
565 psrlq $4,%xmm1 | |
566 pxor %xmm6,%xmm2 | |
567 pxor %xmm5,%xmm1 | |
568 pand %xmm7,%xmm2 | |
569 pand %xmm7,%xmm1 | |
570 pxor %xmm2,%xmm6 | |
571 psllq $4,%xmm2 | |
572 pxor %xmm1,%xmm5 | |
573 psllq $4,%xmm1 | |
574 pxor %xmm9,%xmm2 | |
575 pxor %xmm10,%xmm1 | |
576 movdqa %xmm0,%xmm9 | |
577 psrlq $4,%xmm0 | |
578 movdqa %xmm15,%xmm10 | |
579 psrlq $4,%xmm15 | |
580 pxor %xmm4,%xmm0 | |
581 pxor %xmm3,%xmm15 | |
582 pand %xmm7,%xmm0 | |
583 pand %xmm7,%xmm15 | |
584 pxor %xmm0,%xmm4 | |
585 psllq $4,%xmm0 | |
586 pxor %xmm15,%xmm3 | |
587 psllq $4,%xmm15 | |
588 pxor %xmm9,%xmm0 | |
589 pxor %xmm10,%xmm15 | |
590 decl %r10d | |
591 jmp .Ldec_sbox | |
592 .align 16 | |
593 .Ldec_loop: | |
594 pxor 0(%rax),%xmm15 | |
595 pxor 16(%rax),%xmm0 | |
596 .byte 102,68,15,56,0,255 | |
597 pxor 32(%rax),%xmm1 | |
598 .byte 102,15,56,0,199 | |
599 pxor 48(%rax),%xmm2 | |
600 .byte 102,15,56,0,207 | |
601 pxor 64(%rax),%xmm3 | |
602 .byte 102,15,56,0,215 | |
603 pxor 80(%rax),%xmm4 | |
604 .byte 102,15,56,0,223 | |
605 pxor 96(%rax),%xmm5 | |
606 .byte 102,15,56,0,231 | |
607 pxor 112(%rax),%xmm6 | |
608 .byte 102,15,56,0,239 | |
609 leaq 128(%rax),%rax | |
610 .byte 102,15,56,0,247 | |
611 .Ldec_sbox: | |
612 pxor %xmm3,%xmm2 | |
613 | |
614 pxor %xmm6,%xmm3 | |
615 pxor %xmm6,%xmm1 | |
616 pxor %xmm3,%xmm5 | |
617 pxor %xmm5,%xmm6 | |
618 pxor %xmm6,%xmm0 | |
619 | |
620 pxor %xmm0,%xmm15 | |
621 pxor %xmm4,%xmm1 | |
622 pxor %xmm15,%xmm2 | |
623 pxor %xmm15,%xmm4 | |
624 pxor %xmm2,%xmm0 | |
625 movdqa %xmm2,%xmm10 | |
626 movdqa %xmm6,%xmm9 | |
627 movdqa %xmm0,%xmm8 | |
628 movdqa %xmm3,%xmm12 | |
629 movdqa %xmm4,%xmm11 | |
630 | |
631 pxor %xmm15,%xmm10 | |
632 pxor %xmm3,%xmm9 | |
633 pxor %xmm5,%xmm8 | |
634 movdqa %xmm10,%xmm13 | |
635 pxor %xmm15,%xmm12 | |
636 movdqa %xmm9,%xmm7 | |
637 pxor %xmm1,%xmm11 | |
638 movdqa %xmm10,%xmm14 | |
639 | |
640 por %xmm8,%xmm9 | |
641 por %xmm11,%xmm10 | |
642 pxor %xmm7,%xmm14 | |
643 pand %xmm11,%xmm13 | |
644 pxor %xmm8,%xmm11 | |
645 pand %xmm8,%xmm7 | |
646 pand %xmm11,%xmm14 | |
647 movdqa %xmm5,%xmm11 | |
648 pxor %xmm1,%xmm11 | |
649 pand %xmm11,%xmm12 | |
650 pxor %xmm12,%xmm10 | |
651 pxor %xmm12,%xmm9 | |
652 movdqa %xmm2,%xmm12 | |
653 movdqa %xmm0,%xmm11 | |
654 pxor %xmm6,%xmm12 | |
655 pxor %xmm4,%xmm11 | |
656 movdqa %xmm12,%xmm8 | |
657 pand %xmm11,%xmm12 | |
658 por %xmm11,%xmm8 | |
659 pxor %xmm12,%xmm7 | |
660 pxor %xmm14,%xmm10 | |
661 pxor %xmm13,%xmm9 | |
662 pxor %xmm14,%xmm8 | |
663 movdqa %xmm3,%xmm11 | |
664 pxor %xmm13,%xmm7 | |
665 movdqa %xmm15,%xmm12 | |
666 pxor %xmm13,%xmm8 | |
667 movdqa %xmm6,%xmm13 | |
668 pand %xmm5,%xmm11 | |
669 movdqa %xmm2,%xmm14 | |
670 pand %xmm1,%xmm12 | |
671 pand %xmm0,%xmm13 | |
672 por %xmm4,%xmm14 | |
673 pxor %xmm11,%xmm10 | |
674 pxor %xmm12,%xmm9 | |
675 pxor %xmm13,%xmm8 | |
676 pxor %xmm14,%xmm7 | |
677 | |
678 | |
679 | |
680 | |
681 | |
682 movdqa %xmm10,%xmm11 | |
683 pand %xmm8,%xmm10 | |
684 pxor %xmm9,%xmm11 | |
685 | |
686 movdqa %xmm7,%xmm13 | |
687 movdqa %xmm11,%xmm14 | |
688 pxor %xmm10,%xmm13 | |
689 pand %xmm13,%xmm14 | |
690 | |
691 movdqa %xmm8,%xmm12 | |
692 pxor %xmm9,%xmm14 | |
693 pxor %xmm7,%xmm12 | |
694 | |
695 pxor %xmm9,%xmm10 | |
696 | |
697 pand %xmm10,%xmm12 | |
698 | |
699 movdqa %xmm13,%xmm9 | |
700 pxor %xmm7,%xmm12 | |
701 | |
702 pxor %xmm12,%xmm9 | |
703 pxor %xmm12,%xmm8 | |
704 | |
705 pand %xmm7,%xmm9 | |
706 | |
707 pxor %xmm9,%xmm13 | |
708 pxor %xmm9,%xmm8 | |
709 | |
710 pand %xmm14,%xmm13 | |
711 | |
712 pxor %xmm11,%xmm13 | |
713 movdqa %xmm4,%xmm11 | |
714 movdqa %xmm0,%xmm7 | |
715 movdqa %xmm14,%xmm9 | |
716 pxor %xmm13,%xmm9 | |
717 pand %xmm4,%xmm9 | |
718 pxor %xmm0,%xmm4 | |
719 pand %xmm14,%xmm0 | |
720 pand %xmm13,%xmm4 | |
721 pxor %xmm0,%xmm4 | |
722 pxor %xmm9,%xmm0 | |
723 pxor %xmm1,%xmm11 | |
724 pxor %xmm5,%xmm7 | |
725 pxor %xmm12,%xmm14 | |
726 pxor %xmm8,%xmm13 | |
727 movdqa %xmm14,%xmm10 | |
728 movdqa %xmm12,%xmm9 | |
729 pxor %xmm13,%xmm10 | |
730 pxor %xmm8,%xmm9 | |
731 pand %xmm11,%xmm10 | |
732 pand %xmm1,%xmm9 | |
733 pxor %xmm7,%xmm11 | |
734 pxor %xmm5,%xmm1 | |
735 pand %xmm14,%xmm7 | |
736 pand %xmm12,%xmm5 | |
737 pand %xmm13,%xmm11 | |
738 pand %xmm8,%xmm1 | |
739 pxor %xmm11,%xmm7 | |
740 pxor %xmm5,%xmm1 | |
741 pxor %xmm10,%xmm11 | |
742 pxor %xmm9,%xmm5 | |
743 pxor %xmm11,%xmm4 | |
744 pxor %xmm11,%xmm1 | |
745 pxor %xmm7,%xmm0 | |
746 pxor %xmm7,%xmm5 | |
747 | |
748 movdqa %xmm2,%xmm11 | |
749 movdqa %xmm6,%xmm7 | |
750 pxor %xmm15,%xmm11 | |
751 pxor %xmm3,%xmm7 | |
752 movdqa %xmm14,%xmm10 | |
753 movdqa %xmm12,%xmm9 | |
754 pxor %xmm13,%xmm10 | |
755 pxor %xmm8,%xmm9 | |
756 pand %xmm11,%xmm10 | |
757 pand %xmm15,%xmm9 | |
758 pxor %xmm7,%xmm11 | |
759 pxor %xmm3,%xmm15 | |
760 pand %xmm14,%xmm7 | |
761 pand %xmm12,%xmm3 | |
762 pand %xmm13,%xmm11 | |
763 pand %xmm8,%xmm15 | |
764 pxor %xmm11,%xmm7 | |
765 pxor %xmm3,%xmm15 | |
766 pxor %xmm10,%xmm11 | |
767 pxor %xmm9,%xmm3 | |
768 pxor %xmm12,%xmm14 | |
769 pxor %xmm8,%xmm13 | |
770 movdqa %xmm14,%xmm10 | |
771 pxor %xmm13,%xmm10 | |
772 pand %xmm2,%xmm10 | |
773 pxor %xmm6,%xmm2 | |
774 pand %xmm14,%xmm6 | |
775 pand %xmm13,%xmm2 | |
776 pxor %xmm6,%xmm2 | |
777 pxor %xmm10,%xmm6 | |
778 pxor %xmm11,%xmm2 | |
779 pxor %xmm11,%xmm15 | |
780 pxor %xmm7,%xmm6 | |
781 pxor %xmm7,%xmm3 | |
782 pxor %xmm6,%xmm0 | |
783 pxor %xmm4,%xmm5 | |
784 | |
785 pxor %xmm0,%xmm3 | |
786 pxor %xmm6,%xmm1 | |
787 pxor %xmm6,%xmm4 | |
788 pxor %xmm1,%xmm3 | |
789 pxor %xmm15,%xmm6 | |
790 pxor %xmm4,%xmm3 | |
791 pxor %xmm5,%xmm2 | |
792 pxor %xmm0,%xmm5 | |
793 pxor %xmm3,%xmm2 | |
794 | |
795 pxor %xmm15,%xmm3 | |
796 pxor %xmm2,%xmm6 | |
797 decl %r10d | |
798 jl .Ldec_done | |
799 | |
800 pshufd $147,%xmm4,%xmm14 | |
801 movdqa %xmm5,%xmm9 | |
802 pxor %xmm6,%xmm4 | |
803 pxor %xmm6,%xmm5 | |
804 pshufd $147,%xmm15,%xmm7 | |
805 movdqa %xmm6,%xmm12 | |
806 pxor %xmm15,%xmm6 | |
807 pxor %xmm0,%xmm15 | |
808 pshufd $147,%xmm0,%xmm8 | |
809 pxor %xmm5,%xmm0 | |
810 pxor %xmm2,%xmm15 | |
811 pxor %xmm3,%xmm0 | |
812 pshufd $147,%xmm3,%xmm10 | |
813 pxor %xmm15,%xmm5 | |
814 pxor %xmm4,%xmm3 | |
815 pxor %xmm2,%xmm4 | |
816 pshufd $147,%xmm2,%xmm13 | |
817 movdqa %xmm1,%xmm11 | |
818 pxor %xmm1,%xmm2 | |
819 pxor %xmm3,%xmm1 | |
820 pxor %xmm4,%xmm3 | |
821 pxor %xmm12,%xmm2 | |
822 pxor %xmm9,%xmm3 | |
823 pxor %xmm11,%xmm3 | |
824 pshufd $147,%xmm12,%xmm12 | |
825 | |
826 pxor %xmm4,%xmm6 | |
827 pxor %xmm7,%xmm4 | |
828 pxor %xmm8,%xmm6 | |
829 pshufd $147,%xmm9,%xmm9 | |
830 pxor %xmm12,%xmm4 | |
831 pxor %xmm13,%xmm6 | |
832 pxor %xmm14,%xmm4 | |
833 pshufd $147,%xmm11,%xmm11 | |
834 pxor %xmm13,%xmm14 | |
835 pxor %xmm4,%xmm6 | |
836 | |
837 pxor %xmm7,%xmm5 | |
838 pshufd $147,%xmm7,%xmm7 | |
839 pxor %xmm8,%xmm15 | |
840 pxor %xmm8,%xmm0 | |
841 pxor %xmm9,%xmm15 | |
842 pshufd $147,%xmm8,%xmm8 | |
843 pxor %xmm9,%xmm5 | |
844 pxor %xmm9,%xmm3 | |
845 pxor %xmm14,%xmm15 | |
846 pshufd $147,%xmm9,%xmm9 | |
847 pxor %xmm10,%xmm5 | |
848 pxor %xmm10,%xmm1 | |
849 pxor %xmm10,%xmm0 | |
850 pshufd $147,%xmm10,%xmm10 | |
851 pxor %xmm11,%xmm2 | |
852 pxor %xmm11,%xmm3 | |
853 pxor %xmm14,%xmm2 | |
854 pxor %xmm12,%xmm5 | |
855 pxor %xmm11,%xmm0 | |
856 pxor %xmm12,%xmm14 | |
857 | |
858 pxor %xmm14,%xmm3 | |
859 pshufd $147,%xmm11,%xmm11 | |
860 pxor %xmm14,%xmm1 | |
861 pxor %xmm14,%xmm0 | |
862 | |
863 pxor %xmm12,%xmm14 | |
864 pshufd $147,%xmm12,%xmm12 | |
865 pxor %xmm13,%xmm14 | |
866 | |
867 | |
868 pxor %xmm2,%xmm0 | |
869 pxor %xmm11,%xmm2 | |
870 pshufd $147,%xmm13,%xmm13 | |
871 pxor %xmm7,%xmm15 | |
872 pxor %xmm12,%xmm2 | |
873 pxor %xmm9,%xmm15 | |
874 pshufd $147,%xmm14,%xmm14 | |
875 | |
876 pxor %xmm6,%xmm5 | |
877 pxor %xmm8,%xmm6 | |
878 pxor %xmm7,%xmm4 | |
879 pxor %xmm7,%xmm5 | |
880 pxor %xmm12,%xmm6 | |
881 pxor %xmm12,%xmm4 | |
882 pxor %xmm14,%xmm6 | |
883 pshufd $147,%xmm7,%xmm7 | |
884 pxor %xmm13,%xmm4 | |
885 pxor %xmm6,%xmm5 | |
886 pxor %xmm8,%xmm0 | |
887 pshufd $147,%xmm8,%xmm8 | |
888 | |
889 pxor %xmm14,%xmm2 | |
890 pxor %xmm9,%xmm0 | |
891 pxor %xmm9,%xmm3 | |
892 pshufd $147,%xmm9,%xmm9 | |
893 pxor %xmm13,%xmm15 | |
894 pxor %xmm10,%xmm13 | |
895 pxor %xmm2,%xmm0 | |
896 pxor %xmm13,%xmm5 | |
897 | |
898 pxor %xmm13,%xmm1 | |
899 pxor %xmm12,%xmm3 | |
900 pxor %xmm11,%xmm1 | |
901 pshufd $147,%xmm11,%xmm11 | |
902 pxor %xmm13,%xmm3 | |
903 pxor %xmm14,%xmm1 | |
904 pxor %xmm10,%xmm13 | |
905 | |
906 pshufd $147,%xmm12,%xmm12 | |
907 pshufd $147,%xmm13,%xmm13 | |
908 pshufd $147,%xmm14,%xmm14 | |
909 pshufd $147,%xmm10,%xmm10 | |
910 | |
911 | |
912 pxor %xmm6,%xmm0 | |
913 pxor %xmm6,%xmm8 | |
914 pxor %xmm12,%xmm7 | |
915 pxor %xmm12,%xmm8 | |
916 pxor %xmm7,%xmm5 | |
917 pxor %xmm4,%xmm7 | |
918 pxor %xmm13,%xmm8 | |
919 pxor %xmm14,%xmm13 | |
920 pxor %xmm8,%xmm0 | |
921 pxor %xmm11,%xmm2 | |
922 pxor %xmm0,%xmm11 | |
923 pxor %xmm10,%xmm1 | |
924 pxor %xmm5,%xmm10 | |
925 pxor %xmm9,%xmm3 | |
926 pxor %xmm15,%xmm9 | |
927 pxor %xmm14,%xmm10 | |
928 pxor %xmm3,%xmm12 | |
929 pxor %xmm13,%xmm9 | |
930 pxor %xmm13,%xmm12 | |
931 pxor %xmm1,%xmm13 | |
932 pxor %xmm2,%xmm14 | |
933 | |
934 movdqa %xmm7,%xmm15 | |
935 movdqa %xmm8,%xmm0 | |
936 movdqa %xmm9,%xmm1 | |
937 movdqa %xmm10,%xmm2 | |
938 movdqa %xmm11,%xmm3 | |
939 movdqa %xmm12,%xmm4 | |
940 movdqa %xmm13,%xmm5 | |
941 movdqa %xmm14,%xmm6 | |
942 movdqa -16(%r11),%xmm7 | |
943 jnz .Ldec_loop | |
944 movdqa -32(%r11),%xmm7 | |
945 jmp .Ldec_loop | |
946 .align 16 | |
947 .Ldec_done: | |
948 movdqa 0(%r11),%xmm7 | |
949 movdqa 16(%r11),%xmm8 | |
950 movdqa %xmm2,%xmm9 | |
951 psrlq $1,%xmm2 | |
952 movdqa %xmm1,%xmm10 | |
953 psrlq $1,%xmm1 | |
954 pxor %xmm4,%xmm2 | |
955 pxor %xmm6,%xmm1 | |
956 pand %xmm7,%xmm2 | |
957 pand %xmm7,%xmm1 | |
958 pxor %xmm2,%xmm4 | |
959 psllq $1,%xmm2 | |
960 pxor %xmm1,%xmm6 | |
961 psllq $1,%xmm1 | |
962 pxor %xmm9,%xmm2 | |
963 pxor %xmm10,%xmm1 | |
964 movdqa %xmm5,%xmm9 | |
965 psrlq $1,%xmm5 | |
966 movdqa %xmm15,%xmm10 | |
967 psrlq $1,%xmm15 | |
968 pxor %xmm3,%xmm5 | |
969 pxor %xmm0,%xmm15 | |
970 pand %xmm7,%xmm5 | |
971 pand %xmm7,%xmm15 | |
972 pxor %xmm5,%xmm3 | |
973 psllq $1,%xmm5 | |
974 pxor %xmm15,%xmm0 | |
975 psllq $1,%xmm15 | |
976 pxor %xmm9,%xmm5 | |
977 pxor %xmm10,%xmm15 | |
978 movdqa 32(%r11),%xmm7 | |
979 movdqa %xmm6,%xmm9 | |
980 psrlq $2,%xmm6 | |
981 movdqa %xmm1,%xmm10 | |
982 psrlq $2,%xmm1 | |
983 pxor %xmm4,%xmm6 | |
984 pxor %xmm2,%xmm1 | |
985 pand %xmm8,%xmm6 | |
986 pand %xmm8,%xmm1 | |
987 pxor %xmm6,%xmm4 | |
988 psllq $2,%xmm6 | |
989 pxor %xmm1,%xmm2 | |
990 psllq $2,%xmm1 | |
991 pxor %xmm9,%xmm6 | |
992 pxor %xmm10,%xmm1 | |
993 movdqa %xmm0,%xmm9 | |
994 psrlq $2,%xmm0 | |
995 movdqa %xmm15,%xmm10 | |
996 psrlq $2,%xmm15 | |
997 pxor %xmm3,%xmm0 | |
998 pxor %xmm5,%xmm15 | |
999 pand %xmm8,%xmm0 | |
1000 pand %xmm8,%xmm15 | |
1001 pxor %xmm0,%xmm3 | |
1002 psllq $2,%xmm0 | |
1003 pxor %xmm15,%xmm5 | |
1004 psllq $2,%xmm15 | |
1005 pxor %xmm9,%xmm0 | |
1006 pxor %xmm10,%xmm15 | |
1007 movdqa %xmm3,%xmm9 | |
1008 psrlq $4,%xmm3 | |
1009 movdqa %xmm5,%xmm10 | |
1010 psrlq $4,%xmm5 | |
1011 pxor %xmm4,%xmm3 | |
1012 pxor %xmm2,%xmm5 | |
1013 pand %xmm7,%xmm3 | |
1014 pand %xmm7,%xmm5 | |
1015 pxor %xmm3,%xmm4 | |
1016 psllq $4,%xmm3 | |
1017 pxor %xmm5,%xmm2 | |
1018 psllq $4,%xmm5 | |
1019 pxor %xmm9,%xmm3 | |
1020 pxor %xmm10,%xmm5 | |
1021 movdqa %xmm0,%xmm9 | |
1022 psrlq $4,%xmm0 | |
1023 movdqa %xmm15,%xmm10 | |
1024 psrlq $4,%xmm15 | |
1025 pxor %xmm6,%xmm0 | |
1026 pxor %xmm1,%xmm15 | |
1027 pand %xmm7,%xmm0 | |
1028 pand %xmm7,%xmm15 | |
1029 pxor %xmm0,%xmm6 | |
1030 psllq $4,%xmm0 | |
1031 pxor %xmm15,%xmm1 | |
1032 psllq $4,%xmm15 | |
1033 pxor %xmm9,%xmm0 | |
1034 pxor %xmm10,%xmm15 | |
1035 movdqa (%rax),%xmm7 | |
1036 pxor %xmm7,%xmm5 | |
1037 pxor %xmm7,%xmm3 | |
1038 pxor %xmm7,%xmm1 | |
1039 pxor %xmm7,%xmm6 | |
1040 pxor %xmm7,%xmm2 | |
1041 pxor %xmm7,%xmm4 | |
1042 pxor %xmm7,%xmm15 | |
1043 pxor %xmm7,%xmm0 | |
1044 .byte 0xf3,0xc3 | |
1045 .size _bsaes_decrypt8,.-_bsaes_decrypt8 | |
1046 .type _bsaes_key_convert,@function | |
1047 .align 16 | |
1048 _bsaes_key_convert: | |
1049 leaq .Lmasks(%rip),%r11 | |
1050 movdqu (%rcx),%xmm7 | |
1051 leaq 16(%rcx),%rcx | |
1052 movdqa 0(%r11),%xmm0 | |
1053 movdqa 16(%r11),%xmm1 | |
1054 movdqa 32(%r11),%xmm2 | |
1055 movdqa 48(%r11),%xmm3 | |
1056 movdqa 64(%r11),%xmm4 | |
1057 pcmpeqd %xmm5,%xmm5 | |
1058 | |
1059 movdqu (%rcx),%xmm6 | |
1060 movdqa %xmm7,(%rax) | |
1061 leaq 16(%rax),%rax | |
1062 decl %r10d | |
1063 jmp .Lkey_loop | |
1064 .align 16 | |
1065 .Lkey_loop: | |
1066 .byte 102,15,56,0,244 | |
1067 | |
1068 movdqa %xmm0,%xmm8 | |
1069 movdqa %xmm1,%xmm9 | |
1070 | |
1071 pand %xmm6,%xmm8 | |
1072 pand %xmm6,%xmm9 | |
1073 movdqa %xmm2,%xmm10 | |
1074 pcmpeqb %xmm0,%xmm8 | |
1075 psllq $4,%xmm0 | |
1076 movdqa %xmm3,%xmm11 | |
1077 pcmpeqb %xmm1,%xmm9 | |
1078 psllq $4,%xmm1 | |
1079 | |
1080 pand %xmm6,%xmm10 | |
1081 pand %xmm6,%xmm11 | |
1082 movdqa %xmm0,%xmm12 | |
1083 pcmpeqb %xmm2,%xmm10 | |
1084 psllq $4,%xmm2 | |
1085 movdqa %xmm1,%xmm13 | |
1086 pcmpeqb %xmm3,%xmm11 | |
1087 psllq $4,%xmm3 | |
1088 | |
1089 movdqa %xmm2,%xmm14 | |
1090 movdqa %xmm3,%xmm15 | |
1091 pxor %xmm5,%xmm8 | |
1092 pxor %xmm5,%xmm9 | |
1093 | |
1094 pand %xmm6,%xmm12 | |
1095 pand %xmm6,%xmm13 | |
1096 movdqa %xmm8,0(%rax) | |
1097 pcmpeqb %xmm0,%xmm12 | |
1098 psrlq $4,%xmm0 | |
1099 movdqa %xmm9,16(%rax) | |
1100 pcmpeqb %xmm1,%xmm13 | |
1101 psrlq $4,%xmm1 | |
1102 leaq 16(%rcx),%rcx | |
1103 | |
1104 pand %xmm6,%xmm14 | |
1105 pand %xmm6,%xmm15 | |
1106 movdqa %xmm10,32(%rax) | |
1107 pcmpeqb %xmm2,%xmm14 | |
1108 psrlq $4,%xmm2 | |
1109 movdqa %xmm11,48(%rax) | |
1110 pcmpeqb %xmm3,%xmm15 | |
1111 psrlq $4,%xmm3 | |
1112 movdqu (%rcx),%xmm6 | |
1113 | |
1114 pxor %xmm5,%xmm13 | |
1115 pxor %xmm5,%xmm14 | |
1116 movdqa %xmm12,64(%rax) | |
1117 movdqa %xmm13,80(%rax) | |
1118 movdqa %xmm14,96(%rax) | |
1119 movdqa %xmm15,112(%rax) | |
1120 leaq 128(%rax),%rax | |
1121 decl %r10d | |
1122 jnz .Lkey_loop | |
1123 | |
1124 movdqa 80(%r11),%xmm7 | |
1125 | |
1126 .byte 0xf3,0xc3 | |
1127 .size _bsaes_key_convert,.-_bsaes_key_convert | |
1128 | |
1129 .globl bsaes_cbc_encrypt | |
1130 .type bsaes_cbc_encrypt,@function | |
1131 .align 16 | |
1132 bsaes_cbc_encrypt: | |
1133 cmpl $0,%r9d | |
1134 jne asm_AES_cbc_encrypt | |
1135 cmpq $128,%rdx | |
1136 jb asm_AES_cbc_encrypt | |
1137 | |
1138 movq %rsp,%rax | |
1139 .Lcbc_dec_prologue: | |
1140 pushq %rbp | |
1141 pushq %rbx | |
1142 pushq %r12 | |
1143 pushq %r13 | |
1144 pushq %r14 | |
1145 pushq %r15 | |
1146 leaq -72(%rsp),%rsp | |
1147 movq %rsp,%rbp | |
1148 movl 240(%rcx),%eax | |
1149 movq %rdi,%r12 | |
1150 movq %rsi,%r13 | |
1151 movq %rdx,%r14 | |
1152 movq %rcx,%r15 | |
1153 movq %r8,%rbx | |
1154 shrq $4,%r14 | |
1155 | |
1156 movl %eax,%edx | |
1157 shlq $7,%rax | |
1158 subq $96,%rax | |
1159 subq %rax,%rsp | |
1160 | |
1161 movq %rsp,%rax | |
1162 movq %r15,%rcx | |
1163 movl %edx,%r10d | |
1164 call _bsaes_key_convert | |
1165 pxor (%rsp),%xmm7 | |
1166 movdqa %xmm6,(%rax) | |
1167 movdqa %xmm7,(%rsp) | |
1168 | |
1169 movdqu (%rbx),%xmm14 | |
1170 subq $8,%r14 | |
1171 .Lcbc_dec_loop: | |
1172 movdqu 0(%r12),%xmm15 | |
1173 movdqu 16(%r12),%xmm0 | |
1174 movdqu 32(%r12),%xmm1 | |
1175 movdqu 48(%r12),%xmm2 | |
1176 movdqu 64(%r12),%xmm3 | |
1177 movdqu 80(%r12),%xmm4 | |
1178 movq %rsp,%rax | |
1179 movdqu 96(%r12),%xmm5 | |
1180 movl %edx,%r10d | |
1181 movdqu 112(%r12),%xmm6 | |
1182 movdqa %xmm14,32(%rbp) | |
1183 | |
1184 call _bsaes_decrypt8 | |
1185 | |
1186 pxor 32(%rbp),%xmm15 | |
1187 movdqu 0(%r12),%xmm7 | |
1188 movdqu 16(%r12),%xmm8 | |
1189 pxor %xmm7,%xmm0 | |
1190 movdqu 32(%r12),%xmm9 | |
1191 pxor %xmm8,%xmm5 | |
1192 movdqu 48(%r12),%xmm10 | |
1193 pxor %xmm9,%xmm3 | |
1194 movdqu 64(%r12),%xmm11 | |
1195 pxor %xmm10,%xmm1 | |
1196 movdqu 80(%r12),%xmm12 | |
1197 pxor %xmm11,%xmm6 | |
1198 movdqu 96(%r12),%xmm13 | |
1199 pxor %xmm12,%xmm2 | |
1200 movdqu 112(%r12),%xmm14 | |
1201 pxor %xmm13,%xmm4 | |
1202 movdqu %xmm15,0(%r13) | |
1203 leaq 128(%r12),%r12 | |
1204 movdqu %xmm0,16(%r13) | |
1205 movdqu %xmm5,32(%r13) | |
1206 movdqu %xmm3,48(%r13) | |
1207 movdqu %xmm1,64(%r13) | |
1208 movdqu %xmm6,80(%r13) | |
1209 movdqu %xmm2,96(%r13) | |
1210 movdqu %xmm4,112(%r13) | |
1211 leaq 128(%r13),%r13 | |
1212 subq $8,%r14 | |
1213 jnc .Lcbc_dec_loop | |
1214 | |
1215 addq $8,%r14 | |
1216 jz .Lcbc_dec_done | |
1217 | |
1218 movdqu 0(%r12),%xmm15 | |
1219 movq %rsp,%rax | |
1220 movl %edx,%r10d | |
1221 cmpq $2,%r14 | |
1222 jb .Lcbc_dec_one | |
1223 movdqu 16(%r12),%xmm0 | |
1224 je .Lcbc_dec_two | |
1225 movdqu 32(%r12),%xmm1 | |
1226 cmpq $4,%r14 | |
1227 jb .Lcbc_dec_three | |
1228 movdqu 48(%r12),%xmm2 | |
1229 je .Lcbc_dec_four | |
1230 movdqu 64(%r12),%xmm3 | |
1231 cmpq $6,%r14 | |
1232 jb .Lcbc_dec_five | |
1233 movdqu 80(%r12),%xmm4 | |
1234 je .Lcbc_dec_six | |
1235 movdqu 96(%r12),%xmm5 | |
1236 movdqa %xmm14,32(%rbp) | |
1237 call _bsaes_decrypt8 | |
1238 pxor 32(%rbp),%xmm15 | |
1239 movdqu 0(%r12),%xmm7 | |
1240 movdqu 16(%r12),%xmm8 | |
1241 pxor %xmm7,%xmm0 | |
1242 movdqu 32(%r12),%xmm9 | |
1243 pxor %xmm8,%xmm5 | |
1244 movdqu 48(%r12),%xmm10 | |
1245 pxor %xmm9,%xmm3 | |
1246 movdqu 64(%r12),%xmm11 | |
1247 pxor %xmm10,%xmm1 | |
1248 movdqu 80(%r12),%xmm12 | |
1249 pxor %xmm11,%xmm6 | |
1250 movdqu 96(%r12),%xmm14 | |
1251 pxor %xmm12,%xmm2 | |
1252 movdqu %xmm15,0(%r13) | |
1253 movdqu %xmm0,16(%r13) | |
1254 movdqu %xmm5,32(%r13) | |
1255 movdqu %xmm3,48(%r13) | |
1256 movdqu %xmm1,64(%r13) | |
1257 movdqu %xmm6,80(%r13) | |
1258 movdqu %xmm2,96(%r13) | |
1259 jmp .Lcbc_dec_done | |
1260 .align 16 | |
1261 .Lcbc_dec_six: | |
1262 movdqa %xmm14,32(%rbp) | |
1263 call _bsaes_decrypt8 | |
1264 pxor 32(%rbp),%xmm15 | |
1265 movdqu 0(%r12),%xmm7 | |
1266 movdqu 16(%r12),%xmm8 | |
1267 pxor %xmm7,%xmm0 | |
1268 movdqu 32(%r12),%xmm9 | |
1269 pxor %xmm8,%xmm5 | |
1270 movdqu 48(%r12),%xmm10 | |
1271 pxor %xmm9,%xmm3 | |
1272 movdqu 64(%r12),%xmm11 | |
1273 pxor %xmm10,%xmm1 | |
1274 movdqu 80(%r12),%xmm14 | |
1275 pxor %xmm11,%xmm6 | |
1276 movdqu %xmm15,0(%r13) | |
1277 movdqu %xmm0,16(%r13) | |
1278 movdqu %xmm5,32(%r13) | |
1279 movdqu %xmm3,48(%r13) | |
1280 movdqu %xmm1,64(%r13) | |
1281 movdqu %xmm6,80(%r13) | |
1282 jmp .Lcbc_dec_done | |
1283 .align 16 | |
1284 .Lcbc_dec_five: | |
1285 movdqa %xmm14,32(%rbp) | |
1286 call _bsaes_decrypt8 | |
1287 pxor 32(%rbp),%xmm15 | |
1288 movdqu 0(%r12),%xmm7 | |
1289 movdqu 16(%r12),%xmm8 | |
1290 pxor %xmm7,%xmm0 | |
1291 movdqu 32(%r12),%xmm9 | |
1292 pxor %xmm8,%xmm5 | |
1293 movdqu 48(%r12),%xmm10 | |
1294 pxor %xmm9,%xmm3 | |
1295 movdqu 64(%r12),%xmm14 | |
1296 pxor %xmm10,%xmm1 | |
1297 movdqu %xmm15,0(%r13) | |
1298 movdqu %xmm0,16(%r13) | |
1299 movdqu %xmm5,32(%r13) | |
1300 movdqu %xmm3,48(%r13) | |
1301 movdqu %xmm1,64(%r13) | |
1302 jmp .Lcbc_dec_done | |
1303 .align 16 | |
1304 .Lcbc_dec_four: | |
1305 movdqa %xmm14,32(%rbp) | |
1306 call _bsaes_decrypt8 | |
1307 pxor 32(%rbp),%xmm15 | |
1308 movdqu 0(%r12),%xmm7 | |
1309 movdqu 16(%r12),%xmm8 | |
1310 pxor %xmm7,%xmm0 | |
1311 movdqu 32(%r12),%xmm9 | |
1312 pxor %xmm8,%xmm5 | |
1313 movdqu 48(%r12),%xmm14 | |
1314 pxor %xmm9,%xmm3 | |
1315 movdqu %xmm15,0(%r13) | |
1316 movdqu %xmm0,16(%r13) | |
1317 movdqu %xmm5,32(%r13) | |
1318 movdqu %xmm3,48(%r13) | |
1319 jmp .Lcbc_dec_done | |
1320 .align 16 | |
1321 .Lcbc_dec_three: | |
1322 movdqa %xmm14,32(%rbp) | |
1323 call _bsaes_decrypt8 | |
1324 pxor 32(%rbp),%xmm15 | |
1325 movdqu 0(%r12),%xmm7 | |
1326 movdqu 16(%r12),%xmm8 | |
1327 pxor %xmm7,%xmm0 | |
1328 movdqu 32(%r12),%xmm14 | |
1329 pxor %xmm8,%xmm5 | |
1330 movdqu %xmm15,0(%r13) | |
1331 movdqu %xmm0,16(%r13) | |
1332 movdqu %xmm5,32(%r13) | |
1333 jmp .Lcbc_dec_done | |
1334 .align 16 | |
1335 .Lcbc_dec_two: | |
1336 movdqa %xmm14,32(%rbp) | |
1337 call _bsaes_decrypt8 | |
1338 pxor 32(%rbp),%xmm15 | |
1339 movdqu 0(%r12),%xmm7 | |
1340 movdqu 16(%r12),%xmm14 | |
1341 pxor %xmm7,%xmm0 | |
1342 movdqu %xmm15,0(%r13) | |
1343 movdqu %xmm0,16(%r13) | |
1344 jmp .Lcbc_dec_done | |
1345 .align 16 | |
1346 .Lcbc_dec_one: | |
1347 leaq (%r12),%rdi | |
1348 leaq 32(%rbp),%rsi | |
1349 leaq (%r15),%rdx | |
1350 call asm_AES_decrypt | |
1351 pxor 32(%rbp),%xmm14 | |
1352 movdqu %xmm14,(%r13) | |
1353 movdqa %xmm15,%xmm14 | |
1354 | |
1355 .Lcbc_dec_done: | |
1356 movdqu %xmm14,(%rbx) | |
1357 leaq (%rsp),%rax | |
1358 pxor %xmm0,%xmm0 | |
1359 .Lcbc_dec_bzero: | |
1360 movdqa %xmm0,0(%rax) | |
1361 movdqa %xmm0,16(%rax) | |
1362 leaq 32(%rax),%rax | |
1363 cmpq %rax,%rbp | |
1364 ja .Lcbc_dec_bzero | |
1365 | |
1366 leaq (%rbp),%rsp | |
1367 movq 72(%rsp),%r15 | |
1368 movq 80(%rsp),%r14 | |
1369 movq 88(%rsp),%r13 | |
1370 movq 96(%rsp),%r12 | |
1371 movq 104(%rsp),%rbx | |
1372 movq 112(%rsp),%rax | |
1373 leaq 120(%rsp),%rsp | |
1374 movq %rax,%rbp | |
1375 .Lcbc_dec_epilogue: | |
1376 .byte 0xf3,0xc3 | |
1377 .size bsaes_cbc_encrypt,.-bsaes_cbc_encrypt | |
1378 | |
1379 .globl bsaes_ctr32_encrypt_blocks | |
1380 .type bsaes_ctr32_encrypt_blocks,@function | |
1381 .align 16 | |
1382 bsaes_ctr32_encrypt_blocks: | |
1383 movq %rsp,%rax | |
1384 .Lctr_enc_prologue: | |
1385 pushq %rbp | |
1386 pushq %rbx | |
1387 pushq %r12 | |
1388 pushq %r13 | |
1389 pushq %r14 | |
1390 pushq %r15 | |
1391 leaq -72(%rsp),%rsp | |
1392 movq %rsp,%rbp | |
1393 movdqu (%r8),%xmm0 | |
1394 movl 240(%rcx),%eax | |
1395 movq %rdi,%r12 | |
1396 movq %rsi,%r13 | |
1397 movq %rdx,%r14 | |
1398 movq %rcx,%r15 | |
1399 movdqa %xmm0,32(%rbp) | |
1400 cmpq $8,%rdx | |
1401 jb .Lctr_enc_short | |
1402 | |
1403 movl %eax,%ebx | |
1404 shlq $7,%rax | |
1405 subq $96,%rax | |
1406 subq %rax,%rsp | |
1407 | |
1408 movq %rsp,%rax | |
1409 movq %r15,%rcx | |
1410 movl %ebx,%r10d | |
1411 call _bsaes_key_convert | |
1412 pxor %xmm6,%xmm7 | |
1413 movdqa %xmm7,(%rax) | |
1414 | |
1415 movdqa (%rsp),%xmm8 | |
1416 leaq .LADD1(%rip),%r11 | |
1417 movdqa 32(%rbp),%xmm15 | |
1418 movdqa -32(%r11),%xmm7 | |
1419 .byte 102,68,15,56,0,199 | |
1420 .byte 102,68,15,56,0,255 | |
1421 movdqa %xmm8,(%rsp) | |
1422 jmp .Lctr_enc_loop | |
1423 .align 16 | |
1424 .Lctr_enc_loop: | |
1425 movdqa %xmm15,32(%rbp) | |
1426 movdqa %xmm15,%xmm0 | |
1427 movdqa %xmm15,%xmm1 | |
1428 paddd 0(%r11),%xmm0 | |
1429 movdqa %xmm15,%xmm2 | |
1430 paddd 16(%r11),%xmm1 | |
1431 movdqa %xmm15,%xmm3 | |
1432 paddd 32(%r11),%xmm2 | |
1433 movdqa %xmm15,%xmm4 | |
1434 paddd 48(%r11),%xmm3 | |
1435 movdqa %xmm15,%xmm5 | |
1436 paddd 64(%r11),%xmm4 | |
1437 movdqa %xmm15,%xmm6 | |
1438 paddd 80(%r11),%xmm5 | |
1439 paddd 96(%r11),%xmm6 | |
1440 | |
1441 | |
1442 | |
1443 movdqa (%rsp),%xmm8 | |
1444 leaq 16(%rsp),%rax | |
1445 movdqa -16(%r11),%xmm7 | |
1446 pxor %xmm8,%xmm15 | |
1447 pxor %xmm8,%xmm0 | |
1448 .byte 102,68,15,56,0,255 | |
1449 pxor %xmm8,%xmm1 | |
1450 .byte 102,15,56,0,199 | |
1451 pxor %xmm8,%xmm2 | |
1452 .byte 102,15,56,0,207 | |
1453 pxor %xmm8,%xmm3 | |
1454 .byte 102,15,56,0,215 | |
1455 pxor %xmm8,%xmm4 | |
1456 .byte 102,15,56,0,223 | |
1457 pxor %xmm8,%xmm5 | |
1458 .byte 102,15,56,0,231 | |
1459 pxor %xmm8,%xmm6 | |
1460 .byte 102,15,56,0,239 | |
1461 leaq .LBS0(%rip),%r11 | |
1462 .byte 102,15,56,0,247 | |
1463 movl %ebx,%r10d | |
1464 | |
1465 call _bsaes_encrypt8_bitslice | |
1466 | |
1467 subq $8,%r14 | |
1468 jc .Lctr_enc_loop_done | |
1469 | |
1470 movdqu 0(%r12),%xmm7 | |
1471 movdqu 16(%r12),%xmm8 | |
1472 movdqu 32(%r12),%xmm9 | |
1473 movdqu 48(%r12),%xmm10 | |
1474 movdqu 64(%r12),%xmm11 | |
1475 movdqu 80(%r12),%xmm12 | |
1476 movdqu 96(%r12),%xmm13 | |
1477 movdqu 112(%r12),%xmm14 | |
1478 leaq 128(%r12),%r12 | |
1479 pxor %xmm15,%xmm7 | |
1480 movdqa 32(%rbp),%xmm15 | |
1481 pxor %xmm8,%xmm0 | |
1482 movdqu %xmm7,0(%r13) | |
1483 pxor %xmm9,%xmm3 | |
1484 movdqu %xmm0,16(%r13) | |
1485 pxor %xmm10,%xmm5 | |
1486 movdqu %xmm3,32(%r13) | |
1487 pxor %xmm11,%xmm2 | |
1488 movdqu %xmm5,48(%r13) | |
1489 pxor %xmm12,%xmm6 | |
1490 movdqu %xmm2,64(%r13) | |
1491 pxor %xmm13,%xmm1 | |
1492 movdqu %xmm6,80(%r13) | |
1493 pxor %xmm14,%xmm4 | |
1494 movdqu %xmm1,96(%r13) | |
1495 leaq .LADD1(%rip),%r11 | |
1496 movdqu %xmm4,112(%r13) | |
1497 leaq 128(%r13),%r13 | |
1498 paddd 112(%r11),%xmm15 | |
1499 jnz .Lctr_enc_loop | |
1500 | |
1501 jmp .Lctr_enc_done | |
1502 .align 16 | |
1503 .Lctr_enc_loop_done: | |
1504 addq $8,%r14 | |
1505 movdqu 0(%r12),%xmm7 | |
1506 pxor %xmm7,%xmm15 | |
1507 movdqu %xmm15,0(%r13) | |
1508 cmpq $2,%r14 | |
1509 jb .Lctr_enc_done | |
1510 movdqu 16(%r12),%xmm8 | |
1511 pxor %xmm8,%xmm0 | |
1512 movdqu %xmm0,16(%r13) | |
1513 je .Lctr_enc_done | |
1514 movdqu 32(%r12),%xmm9 | |
1515 pxor %xmm9,%xmm3 | |
1516 movdqu %xmm3,32(%r13) | |
1517 cmpq $4,%r14 | |
1518 jb .Lctr_enc_done | |
1519 movdqu 48(%r12),%xmm10 | |
1520 pxor %xmm10,%xmm5 | |
1521 movdqu %xmm5,48(%r13) | |
1522 je .Lctr_enc_done | |
1523 movdqu 64(%r12),%xmm11 | |
1524 pxor %xmm11,%xmm2 | |
1525 movdqu %xmm2,64(%r13) | |
1526 cmpq $6,%r14 | |
1527 jb .Lctr_enc_done | |
1528 movdqu 80(%r12),%xmm12 | |
1529 pxor %xmm12,%xmm6 | |
1530 movdqu %xmm6,80(%r13) | |
1531 je .Lctr_enc_done | |
1532 movdqu 96(%r12),%xmm13 | |
1533 pxor %xmm13,%xmm1 | |
1534 movdqu %xmm1,96(%r13) | |
1535 jmp .Lctr_enc_done | |
1536 | |
1537 .align 16 | |
1538 .Lctr_enc_short: | |
1539 leaq 32(%rbp),%rdi | |
1540 leaq 48(%rbp),%rsi | |
1541 leaq (%r15),%rdx | |
1542 call asm_AES_encrypt | |
1543 movdqu (%r12),%xmm0 | |
1544 leaq 16(%r12),%r12 | |
1545 movl 44(%rbp),%eax | |
1546 bswapl %eax | |
1547 pxor 48(%rbp),%xmm0 | |
1548 incl %eax | |
1549 movdqu %xmm0,(%r13) | |
1550 bswapl %eax | |
1551 leaq 16(%r13),%r13 | |
1552 movl %eax,44(%rsp) | |
1553 decq %r14 | |
1554 jnz .Lctr_enc_short | |
1555 | |
1556 .Lctr_enc_done: | |
1557 leaq (%rsp),%rax | |
1558 pxor %xmm0,%xmm0 | |
1559 .Lctr_enc_bzero: | |
1560 movdqa %xmm0,0(%rax) | |
1561 movdqa %xmm0,16(%rax) | |
1562 leaq 32(%rax),%rax | |
1563 cmpq %rax,%rbp | |
1564 ja .Lctr_enc_bzero | |
1565 | |
1566 leaq (%rbp),%rsp | |
1567 movq 72(%rsp),%r15 | |
1568 movq 80(%rsp),%r14 | |
1569 movq 88(%rsp),%r13 | |
1570 movq 96(%rsp),%r12 | |
1571 movq 104(%rsp),%rbx | |
1572 movq 112(%rsp),%rax | |
1573 leaq 120(%rsp),%rsp | |
1574 movq %rax,%rbp | |
1575 .Lctr_enc_epilogue: | |
1576 .byte 0xf3,0xc3 | |
1577 .size bsaes_ctr32_encrypt_blocks,.-bsaes_ctr32_encrypt_blocks | |
1578 .globl bsaes_xts_encrypt | |
1579 .type bsaes_xts_encrypt,@function | |
1580 .align 16 | |
1581 bsaes_xts_encrypt: | |
1582 movq %rsp,%rax | |
1583 .Lxts_enc_prologue: | |
1584 pushq %rbp | |
1585 pushq %rbx | |
1586 pushq %r12 | |
1587 pushq %r13 | |
1588 pushq %r14 | |
1589 pushq %r15 | |
1590 leaq -72(%rsp),%rsp | |
1591 movq %rsp,%rbp | |
1592 movq %rdi,%r12 | |
1593 movq %rsi,%r13 | |
1594 movq %rdx,%r14 | |
1595 movq %rcx,%r15 | |
1596 | |
1597 leaq (%r9),%rdi | |
1598 leaq 32(%rbp),%rsi | |
1599 leaq (%r8),%rdx | |
1600 call asm_AES_encrypt | |
1601 | |
1602 movl 240(%r15),%eax | |
1603 movq %r14,%rbx | |
1604 | |
1605 movl %eax,%edx | |
1606 shlq $7,%rax | |
1607 subq $96,%rax | |
1608 subq %rax,%rsp | |
1609 | |
1610 movq %rsp,%rax | |
1611 movq %r15,%rcx | |
1612 movl %edx,%r10d | |
1613 call _bsaes_key_convert | |
1614 pxor %xmm6,%xmm7 | |
1615 movdqa %xmm7,(%rax) | |
1616 | |
1617 andq $-16,%r14 | |
1618 subq $128,%rsp | |
1619 movdqa 32(%rbp),%xmm6 | |
1620 | |
1621 pxor %xmm14,%xmm14 | |
1622 movdqa .Lxts_magic(%rip),%xmm12 | |
1623 pcmpgtd %xmm6,%xmm14 | |
1624 | |
1625 subq $128,%r14 | |
1626 jc .Lxts_enc_short | |
1627 jmp .Lxts_enc_loop | |
1628 | |
1629 .align 16 | |
1630 .Lxts_enc_loop: | |
1631 pshufd $19,%xmm14,%xmm13 | |
1632 pxor %xmm14,%xmm14 | |
1633 movdqa %xmm6,%xmm15 | |
1634 movdqa %xmm6,0(%rsp) | |
1635 paddq %xmm6,%xmm6 | |
1636 pand %xmm12,%xmm13 | |
1637 pcmpgtd %xmm6,%xmm14 | |
1638 pxor %xmm13,%xmm6 | |
1639 pshufd $19,%xmm14,%xmm13 | |
1640 pxor %xmm14,%xmm14 | |
1641 movdqa %xmm6,%xmm0 | |
1642 movdqa %xmm6,16(%rsp) | |
1643 paddq %xmm6,%xmm6 | |
1644 pand %xmm12,%xmm13 | |
1645 pcmpgtd %xmm6,%xmm14 | |
1646 pxor %xmm13,%xmm6 | |
1647 movdqu 0(%r12),%xmm7 | |
1648 pshufd $19,%xmm14,%xmm13 | |
1649 pxor %xmm14,%xmm14 | |
1650 movdqa %xmm6,%xmm1 | |
1651 movdqa %xmm6,32(%rsp) | |
1652 paddq %xmm6,%xmm6 | |
1653 pand %xmm12,%xmm13 | |
1654 pcmpgtd %xmm6,%xmm14 | |
1655 pxor %xmm13,%xmm6 | |
1656 movdqu 16(%r12),%xmm8 | |
1657 pxor %xmm7,%xmm15 | |
1658 pshufd $19,%xmm14,%xmm13 | |
1659 pxor %xmm14,%xmm14 | |
1660 movdqa %xmm6,%xmm2 | |
1661 movdqa %xmm6,48(%rsp) | |
1662 paddq %xmm6,%xmm6 | |
1663 pand %xmm12,%xmm13 | |
1664 pcmpgtd %xmm6,%xmm14 | |
1665 pxor %xmm13,%xmm6 | |
1666 movdqu 32(%r12),%xmm9 | |
1667 pxor %xmm8,%xmm0 | |
1668 pshufd $19,%xmm14,%xmm13 | |
1669 pxor %xmm14,%xmm14 | |
1670 movdqa %xmm6,%xmm3 | |
1671 movdqa %xmm6,64(%rsp) | |
1672 paddq %xmm6,%xmm6 | |
1673 pand %xmm12,%xmm13 | |
1674 pcmpgtd %xmm6,%xmm14 | |
1675 pxor %xmm13,%xmm6 | |
1676 movdqu 48(%r12),%xmm10 | |
1677 pxor %xmm9,%xmm1 | |
1678 pshufd $19,%xmm14,%xmm13 | |
1679 pxor %xmm14,%xmm14 | |
1680 movdqa %xmm6,%xmm4 | |
1681 movdqa %xmm6,80(%rsp) | |
1682 paddq %xmm6,%xmm6 | |
1683 pand %xmm12,%xmm13 | |
1684 pcmpgtd %xmm6,%xmm14 | |
1685 pxor %xmm13,%xmm6 | |
1686 movdqu 64(%r12),%xmm11 | |
1687 pxor %xmm10,%xmm2 | |
1688 pshufd $19,%xmm14,%xmm13 | |
1689 pxor %xmm14,%xmm14 | |
1690 movdqa %xmm6,%xmm5 | |
1691 movdqa %xmm6,96(%rsp) | |
1692 paddq %xmm6,%xmm6 | |
1693 pand %xmm12,%xmm13 | |
1694 pcmpgtd %xmm6,%xmm14 | |
1695 pxor %xmm13,%xmm6 | |
1696 movdqu 80(%r12),%xmm12 | |
1697 pxor %xmm11,%xmm3 | |
1698 movdqu 96(%r12),%xmm13 | |
1699 pxor %xmm12,%xmm4 | |
1700 movdqu 112(%r12),%xmm14 | |
1701 leaq 128(%r12),%r12 | |
1702 movdqa %xmm6,112(%rsp) | |
1703 pxor %xmm13,%xmm5 | |
1704 leaq 128(%rsp),%rax | |
1705 pxor %xmm14,%xmm6 | |
1706 movl %edx,%r10d | |
1707 | |
1708 call _bsaes_encrypt8 | |
1709 | |
1710 pxor 0(%rsp),%xmm15 | |
1711 pxor 16(%rsp),%xmm0 | |
1712 movdqu %xmm15,0(%r13) | |
1713 pxor 32(%rsp),%xmm3 | |
1714 movdqu %xmm0,16(%r13) | |
1715 pxor 48(%rsp),%xmm5 | |
1716 movdqu %xmm3,32(%r13) | |
1717 pxor 64(%rsp),%xmm2 | |
1718 movdqu %xmm5,48(%r13) | |
1719 pxor 80(%rsp),%xmm6 | |
1720 movdqu %xmm2,64(%r13) | |
1721 pxor 96(%rsp),%xmm1 | |
1722 movdqu %xmm6,80(%r13) | |
1723 pxor 112(%rsp),%xmm4 | |
1724 movdqu %xmm1,96(%r13) | |
1725 movdqu %xmm4,112(%r13) | |
1726 leaq 128(%r13),%r13 | |
1727 | |
1728 movdqa 112(%rsp),%xmm6 | |
1729 pxor %xmm14,%xmm14 | |
1730 movdqa .Lxts_magic(%rip),%xmm12 | |
1731 pcmpgtd %xmm6,%xmm14 | |
1732 pshufd $19,%xmm14,%xmm13 | |
1733 pxor %xmm14,%xmm14 | |
1734 paddq %xmm6,%xmm6 | |
1735 pand %xmm12,%xmm13 | |
1736 pcmpgtd %xmm6,%xmm14 | |
1737 pxor %xmm13,%xmm6 | |
1738 | |
1739 subq $128,%r14 | |
1740 jnc .Lxts_enc_loop | |
1741 | |
1742 .Lxts_enc_short: | |
1743 addq $128,%r14 | |
1744 jz .Lxts_enc_done | |
1745 pshufd $19,%xmm14,%xmm13 | |
1746 pxor %xmm14,%xmm14 | |
1747 movdqa %xmm6,%xmm15 | |
1748 movdqa %xmm6,0(%rsp) | |
1749 paddq %xmm6,%xmm6 | |
1750 pand %xmm12,%xmm13 | |
1751 pcmpgtd %xmm6,%xmm14 | |
1752 pxor %xmm13,%xmm6 | |
1753 pshufd $19,%xmm14,%xmm13 | |
1754 pxor %xmm14,%xmm14 | |
1755 movdqa %xmm6,%xmm0 | |
1756 movdqa %xmm6,16(%rsp) | |
1757 paddq %xmm6,%xmm6 | |
1758 pand %xmm12,%xmm13 | |
1759 pcmpgtd %xmm6,%xmm14 | |
1760 pxor %xmm13,%xmm6 | |
1761 movdqu 0(%r12),%xmm7 | |
1762 cmpq $16,%r14 | |
1763 je .Lxts_enc_1 | |
1764 pshufd $19,%xmm14,%xmm13 | |
1765 pxor %xmm14,%xmm14 | |
1766 movdqa %xmm6,%xmm1 | |
1767 movdqa %xmm6,32(%rsp) | |
1768 paddq %xmm6,%xmm6 | |
1769 pand %xmm12,%xmm13 | |
1770 pcmpgtd %xmm6,%xmm14 | |
1771 pxor %xmm13,%xmm6 | |
1772 movdqu 16(%r12),%xmm8 | |
1773 cmpq $32,%r14 | |
1774 je .Lxts_enc_2 | |
1775 pxor %xmm7,%xmm15 | |
1776 pshufd $19,%xmm14,%xmm13 | |
1777 pxor %xmm14,%xmm14 | |
1778 movdqa %xmm6,%xmm2 | |
1779 movdqa %xmm6,48(%rsp) | |
1780 paddq %xmm6,%xmm6 | |
1781 pand %xmm12,%xmm13 | |
1782 pcmpgtd %xmm6,%xmm14 | |
1783 pxor %xmm13,%xmm6 | |
1784 movdqu 32(%r12),%xmm9 | |
1785 cmpq $48,%r14 | |
1786 je .Lxts_enc_3 | |
1787 pxor %xmm8,%xmm0 | |
1788 pshufd $19,%xmm14,%xmm13 | |
1789 pxor %xmm14,%xmm14 | |
1790 movdqa %xmm6,%xmm3 | |
1791 movdqa %xmm6,64(%rsp) | |
1792 paddq %xmm6,%xmm6 | |
1793 pand %xmm12,%xmm13 | |
1794 pcmpgtd %xmm6,%xmm14 | |
1795 pxor %xmm13,%xmm6 | |
1796 movdqu 48(%r12),%xmm10 | |
1797 cmpq $64,%r14 | |
1798 je .Lxts_enc_4 | |
1799 pxor %xmm9,%xmm1 | |
1800 pshufd $19,%xmm14,%xmm13 | |
1801 pxor %xmm14,%xmm14 | |
1802 movdqa %xmm6,%xmm4 | |
1803 movdqa %xmm6,80(%rsp) | |
1804 paddq %xmm6,%xmm6 | |
1805 pand %xmm12,%xmm13 | |
1806 pcmpgtd %xmm6,%xmm14 | |
1807 pxor %xmm13,%xmm6 | |
1808 movdqu 64(%r12),%xmm11 | |
1809 cmpq $80,%r14 | |
1810 je .Lxts_enc_5 | |
1811 pxor %xmm10,%xmm2 | |
1812 pshufd $19,%xmm14,%xmm13 | |
1813 pxor %xmm14,%xmm14 | |
1814 movdqa %xmm6,%xmm5 | |
1815 movdqa %xmm6,96(%rsp) | |
1816 paddq %xmm6,%xmm6 | |
1817 pand %xmm12,%xmm13 | |
1818 pcmpgtd %xmm6,%xmm14 | |
1819 pxor %xmm13,%xmm6 | |
1820 movdqu 80(%r12),%xmm12 | |
1821 cmpq $96,%r14 | |
1822 je .Lxts_enc_6 | |
1823 pxor %xmm11,%xmm3 | |
1824 movdqu 96(%r12),%xmm13 | |
1825 pxor %xmm12,%xmm4 | |
1826 movdqa %xmm6,112(%rsp) | |
1827 leaq 112(%r12),%r12 | |
1828 pxor %xmm13,%xmm5 | |
1829 leaq 128(%rsp),%rax | |
1830 movl %edx,%r10d | |
1831 | |
1832 call _bsaes_encrypt8 | |
1833 | |
1834 pxor 0(%rsp),%xmm15 | |
1835 pxor 16(%rsp),%xmm0 | |
1836 movdqu %xmm15,0(%r13) | |
1837 pxor 32(%rsp),%xmm3 | |
1838 movdqu %xmm0,16(%r13) | |
1839 pxor 48(%rsp),%xmm5 | |
1840 movdqu %xmm3,32(%r13) | |
1841 pxor 64(%rsp),%xmm2 | |
1842 movdqu %xmm5,48(%r13) | |
1843 pxor 80(%rsp),%xmm6 | |
1844 movdqu %xmm2,64(%r13) | |
1845 pxor 96(%rsp),%xmm1 | |
1846 movdqu %xmm6,80(%r13) | |
1847 movdqu %xmm1,96(%r13) | |
1848 leaq 112(%r13),%r13 | |
1849 | |
1850 movdqa 112(%rsp),%xmm6 | |
1851 jmp .Lxts_enc_done | |
1852 .align 16 | |
1853 .Lxts_enc_6: | |
1854 pxor %xmm11,%xmm3 | |
1855 leaq 96(%r12),%r12 | |
1856 pxor %xmm12,%xmm4 | |
1857 leaq 128(%rsp),%rax | |
1858 movl %edx,%r10d | |
1859 | |
1860 call _bsaes_encrypt8 | |
1861 | |
1862 pxor 0(%rsp),%xmm15 | |
1863 pxor 16(%rsp),%xmm0 | |
1864 movdqu %xmm15,0(%r13) | |
1865 pxor 32(%rsp),%xmm3 | |
1866 movdqu %xmm0,16(%r13) | |
1867 pxor 48(%rsp),%xmm5 | |
1868 movdqu %xmm3,32(%r13) | |
1869 pxor 64(%rsp),%xmm2 | |
1870 movdqu %xmm5,48(%r13) | |
1871 pxor 80(%rsp),%xmm6 | |
1872 movdqu %xmm2,64(%r13) | |
1873 movdqu %xmm6,80(%r13) | |
1874 leaq 96(%r13),%r13 | |
1875 | |
1876 movdqa 96(%rsp),%xmm6 | |
1877 jmp .Lxts_enc_done | |
1878 .align 16 | |
1879 .Lxts_enc_5: | |
1880 pxor %xmm10,%xmm2 | |
1881 leaq 80(%r12),%r12 | |
1882 pxor %xmm11,%xmm3 | |
1883 leaq 128(%rsp),%rax | |
1884 movl %edx,%r10d | |
1885 | |
1886 call _bsaes_encrypt8 | |
1887 | |
1888 pxor 0(%rsp),%xmm15 | |
1889 pxor 16(%rsp),%xmm0 | |
1890 movdqu %xmm15,0(%r13) | |
1891 pxor 32(%rsp),%xmm3 | |
1892 movdqu %xmm0,16(%r13) | |
1893 pxor 48(%rsp),%xmm5 | |
1894 movdqu %xmm3,32(%r13) | |
1895 pxor 64(%rsp),%xmm2 | |
1896 movdqu %xmm5,48(%r13) | |
1897 movdqu %xmm2,64(%r13) | |
1898 leaq 80(%r13),%r13 | |
1899 | |
1900 movdqa 80(%rsp),%xmm6 | |
1901 jmp .Lxts_enc_done | |
1902 .align 16 | |
1903 .Lxts_enc_4: | |
1904 pxor %xmm9,%xmm1 | |
1905 leaq 64(%r12),%r12 | |
1906 pxor %xmm10,%xmm2 | |
1907 leaq 128(%rsp),%rax | |
1908 movl %edx,%r10d | |
1909 | |
1910 call _bsaes_encrypt8 | |
1911 | |
1912 pxor 0(%rsp),%xmm15 | |
1913 pxor 16(%rsp),%xmm0 | |
1914 movdqu %xmm15,0(%r13) | |
1915 pxor 32(%rsp),%xmm3 | |
1916 movdqu %xmm0,16(%r13) | |
1917 pxor 48(%rsp),%xmm5 | |
1918 movdqu %xmm3,32(%r13) | |
1919 movdqu %xmm5,48(%r13) | |
1920 leaq 64(%r13),%r13 | |
1921 | |
1922 movdqa 64(%rsp),%xmm6 | |
1923 jmp .Lxts_enc_done | |
1924 .align 16 | |
1925 .Lxts_enc_3: | |
1926 pxor %xmm8,%xmm0 | |
1927 leaq 48(%r12),%r12 | |
1928 pxor %xmm9,%xmm1 | |
1929 leaq 128(%rsp),%rax | |
1930 movl %edx,%r10d | |
1931 | |
1932 call _bsaes_encrypt8 | |
1933 | |
1934 pxor 0(%rsp),%xmm15 | |
1935 pxor 16(%rsp),%xmm0 | |
1936 movdqu %xmm15,0(%r13) | |
1937 pxor 32(%rsp),%xmm3 | |
1938 movdqu %xmm0,16(%r13) | |
1939 movdqu %xmm3,32(%r13) | |
1940 leaq 48(%r13),%r13 | |
1941 | |
1942 movdqa 48(%rsp),%xmm6 | |
1943 jmp .Lxts_enc_done | |
1944 .align 16 | |
1945 .Lxts_enc_2: | |
1946 pxor %xmm7,%xmm15 | |
1947 leaq 32(%r12),%r12 | |
1948 pxor %xmm8,%xmm0 | |
1949 leaq 128(%rsp),%rax | |
1950 movl %edx,%r10d | |
1951 | |
1952 call _bsaes_encrypt8 | |
1953 | |
1954 pxor 0(%rsp),%xmm15 | |
1955 pxor 16(%rsp),%xmm0 | |
1956 movdqu %xmm15,0(%r13) | |
1957 movdqu %xmm0,16(%r13) | |
1958 leaq 32(%r13),%r13 | |
1959 | |
1960 movdqa 32(%rsp),%xmm6 | |
1961 jmp .Lxts_enc_done | |
1962 .align 16 | |
1963 .Lxts_enc_1: | |
1964 pxor %xmm15,%xmm7 | |
1965 leaq 16(%r12),%r12 | |
1966 movdqa %xmm7,32(%rbp) | |
1967 leaq 32(%rbp),%rdi | |
1968 leaq 32(%rbp),%rsi | |
1969 leaq (%r15),%rdx | |
1970 call asm_AES_encrypt | |
1971 pxor 32(%rbp),%xmm15 | |
1972 | |
1973 | |
1974 | |
1975 | |
1976 | |
1977 movdqu %xmm15,0(%r13) | |
1978 leaq 16(%r13),%r13 | |
1979 | |
1980 movdqa 16(%rsp),%xmm6 | |
1981 | |
1982 .Lxts_enc_done: | |
1983 andl $15,%ebx | |
1984 jz .Lxts_enc_ret | |
1985 movq %r13,%rdx | |
1986 | |
1987 .Lxts_enc_steal: | |
1988 movzbl (%r12),%eax | |
1989 movzbl -16(%rdx),%ecx | |
1990 leaq 1(%r12),%r12 | |
1991 movb %al,-16(%rdx) | |
1992 movb %cl,0(%rdx) | |
1993 leaq 1(%rdx),%rdx | |
1994 subl $1,%ebx | |
1995 jnz .Lxts_enc_steal | |
1996 | |
1997 movdqu -16(%r13),%xmm15 | |
1998 leaq 32(%rbp),%rdi | |
1999 pxor %xmm6,%xmm15 | |
2000 leaq 32(%rbp),%rsi | |
2001 movdqa %xmm15,32(%rbp) | |
2002 leaq (%r15),%rdx | |
2003 call asm_AES_encrypt | |
2004 pxor 32(%rbp),%xmm6 | |
2005 movdqu %xmm6,-16(%r13) | |
2006 | |
2007 .Lxts_enc_ret: | |
2008 leaq (%rsp),%rax | |
2009 pxor %xmm0,%xmm0 | |
2010 .Lxts_enc_bzero: | |
2011 movdqa %xmm0,0(%rax) | |
2012 movdqa %xmm0,16(%rax) | |
2013 leaq 32(%rax),%rax | |
2014 cmpq %rax,%rbp | |
2015 ja .Lxts_enc_bzero | |
2016 | |
2017 leaq (%rbp),%rsp | |
2018 movq 72(%rsp),%r15 | |
2019 movq 80(%rsp),%r14 | |
2020 movq 88(%rsp),%r13 | |
2021 movq 96(%rsp),%r12 | |
2022 movq 104(%rsp),%rbx | |
2023 movq 112(%rsp),%rax | |
2024 leaq 120(%rsp),%rsp | |
2025 movq %rax,%rbp | |
2026 .Lxts_enc_epilogue: | |
2027 .byte 0xf3,0xc3 | |
2028 .size bsaes_xts_encrypt,.-bsaes_xts_encrypt | |
2029 | |
2030 .globl bsaes_xts_decrypt | |
2031 .type bsaes_xts_decrypt,@function | |
2032 .align 16 | |
2033 bsaes_xts_decrypt: | |
2034 movq %rsp,%rax | |
2035 .Lxts_dec_prologue: | |
2036 pushq %rbp | |
2037 pushq %rbx | |
2038 pushq %r12 | |
2039 pushq %r13 | |
2040 pushq %r14 | |
2041 pushq %r15 | |
2042 leaq -72(%rsp),%rsp | |
2043 movq %rsp,%rbp | |
2044 movq %rdi,%r12 | |
2045 movq %rsi,%r13 | |
2046 movq %rdx,%r14 | |
2047 movq %rcx,%r15 | |
2048 | |
2049 leaq (%r9),%rdi | |
2050 leaq 32(%rbp),%rsi | |
2051 leaq (%r8),%rdx | |
2052 call asm_AES_encrypt | |
2053 | |
2054 movl 240(%r15),%eax | |
2055 movq %r14,%rbx | |
2056 | |
2057 movl %eax,%edx | |
2058 shlq $7,%rax | |
2059 subq $96,%rax | |
2060 subq %rax,%rsp | |
2061 | |
2062 movq %rsp,%rax | |
2063 movq %r15,%rcx | |
2064 movl %edx,%r10d | |
2065 call _bsaes_key_convert | |
2066 pxor (%rsp),%xmm7 | |
2067 movdqa %xmm6,(%rax) | |
2068 movdqa %xmm7,(%rsp) | |
2069 | |
2070 xorl %eax,%eax | |
2071 andq $-16,%r14 | |
2072 testl $15,%ebx | |
2073 setnz %al | |
2074 shlq $4,%rax | |
2075 subq %rax,%r14 | |
2076 | |
2077 subq $128,%rsp | |
2078 movdqa 32(%rbp),%xmm6 | |
2079 | |
2080 pxor %xmm14,%xmm14 | |
2081 movdqa .Lxts_magic(%rip),%xmm12 | |
2082 pcmpgtd %xmm6,%xmm14 | |
2083 | |
2084 subq $128,%r14 | |
2085 jc .Lxts_dec_short | |
2086 jmp .Lxts_dec_loop | |
2087 | |
2088 .align 16 | |
2089 .Lxts_dec_loop: | |
2090 pshufd $19,%xmm14,%xmm13 | |
2091 pxor %xmm14,%xmm14 | |
2092 movdqa %xmm6,%xmm15 | |
2093 movdqa %xmm6,0(%rsp) | |
2094 paddq %xmm6,%xmm6 | |
2095 pand %xmm12,%xmm13 | |
2096 pcmpgtd %xmm6,%xmm14 | |
2097 pxor %xmm13,%xmm6 | |
2098 pshufd $19,%xmm14,%xmm13 | |
2099 pxor %xmm14,%xmm14 | |
2100 movdqa %xmm6,%xmm0 | |
2101 movdqa %xmm6,16(%rsp) | |
2102 paddq %xmm6,%xmm6 | |
2103 pand %xmm12,%xmm13 | |
2104 pcmpgtd %xmm6,%xmm14 | |
2105 pxor %xmm13,%xmm6 | |
2106 movdqu 0(%r12),%xmm7 | |
2107 pshufd $19,%xmm14,%xmm13 | |
2108 pxor %xmm14,%xmm14 | |
2109 movdqa %xmm6,%xmm1 | |
2110 movdqa %xmm6,32(%rsp) | |
2111 paddq %xmm6,%xmm6 | |
2112 pand %xmm12,%xmm13 | |
2113 pcmpgtd %xmm6,%xmm14 | |
2114 pxor %xmm13,%xmm6 | |
2115 movdqu 16(%r12),%xmm8 | |
2116 pxor %xmm7,%xmm15 | |
2117 pshufd $19,%xmm14,%xmm13 | |
2118 pxor %xmm14,%xmm14 | |
2119 movdqa %xmm6,%xmm2 | |
2120 movdqa %xmm6,48(%rsp) | |
2121 paddq %xmm6,%xmm6 | |
2122 pand %xmm12,%xmm13 | |
2123 pcmpgtd %xmm6,%xmm14 | |
2124 pxor %xmm13,%xmm6 | |
2125 movdqu 32(%r12),%xmm9 | |
2126 pxor %xmm8,%xmm0 | |
2127 pshufd $19,%xmm14,%xmm13 | |
2128 pxor %xmm14,%xmm14 | |
2129 movdqa %xmm6,%xmm3 | |
2130 movdqa %xmm6,64(%rsp) | |
2131 paddq %xmm6,%xmm6 | |
2132 pand %xmm12,%xmm13 | |
2133 pcmpgtd %xmm6,%xmm14 | |
2134 pxor %xmm13,%xmm6 | |
2135 movdqu 48(%r12),%xmm10 | |
2136 pxor %xmm9,%xmm1 | |
2137 pshufd $19,%xmm14,%xmm13 | |
2138 pxor %xmm14,%xmm14 | |
2139 movdqa %xmm6,%xmm4 | |
2140 movdqa %xmm6,80(%rsp) | |
2141 paddq %xmm6,%xmm6 | |
2142 pand %xmm12,%xmm13 | |
2143 pcmpgtd %xmm6,%xmm14 | |
2144 pxor %xmm13,%xmm6 | |
2145 movdqu 64(%r12),%xmm11 | |
2146 pxor %xmm10,%xmm2 | |
2147 pshufd $19,%xmm14,%xmm13 | |
2148 pxor %xmm14,%xmm14 | |
2149 movdqa %xmm6,%xmm5 | |
2150 movdqa %xmm6,96(%rsp) | |
2151 paddq %xmm6,%xmm6 | |
2152 pand %xmm12,%xmm13 | |
2153 pcmpgtd %xmm6,%xmm14 | |
2154 pxor %xmm13,%xmm6 | |
2155 movdqu 80(%r12),%xmm12 | |
2156 pxor %xmm11,%xmm3 | |
2157 movdqu 96(%r12),%xmm13 | |
2158 pxor %xmm12,%xmm4 | |
2159 movdqu 112(%r12),%xmm14 | |
2160 leaq 128(%r12),%r12 | |
2161 movdqa %xmm6,112(%rsp) | |
2162 pxor %xmm13,%xmm5 | |
2163 leaq 128(%rsp),%rax | |
2164 pxor %xmm14,%xmm6 | |
2165 movl %edx,%r10d | |
2166 | |
2167 call _bsaes_decrypt8 | |
2168 | |
2169 pxor 0(%rsp),%xmm15 | |
2170 pxor 16(%rsp),%xmm0 | |
2171 movdqu %xmm15,0(%r13) | |
2172 pxor 32(%rsp),%xmm5 | |
2173 movdqu %xmm0,16(%r13) | |
2174 pxor 48(%rsp),%xmm3 | |
2175 movdqu %xmm5,32(%r13) | |
2176 pxor 64(%rsp),%xmm1 | |
2177 movdqu %xmm3,48(%r13) | |
2178 pxor 80(%rsp),%xmm6 | |
2179 movdqu %xmm1,64(%r13) | |
2180 pxor 96(%rsp),%xmm2 | |
2181 movdqu %xmm6,80(%r13) | |
2182 pxor 112(%rsp),%xmm4 | |
2183 movdqu %xmm2,96(%r13) | |
2184 movdqu %xmm4,112(%r13) | |
2185 leaq 128(%r13),%r13 | |
2186 | |
2187 movdqa 112(%rsp),%xmm6 | |
2188 pxor %xmm14,%xmm14 | |
2189 movdqa .Lxts_magic(%rip),%xmm12 | |
2190 pcmpgtd %xmm6,%xmm14 | |
2191 pshufd $19,%xmm14,%xmm13 | |
2192 pxor %xmm14,%xmm14 | |
2193 paddq %xmm6,%xmm6 | |
2194 pand %xmm12,%xmm13 | |
2195 pcmpgtd %xmm6,%xmm14 | |
2196 pxor %xmm13,%xmm6 | |
2197 | |
2198 subq $128,%r14 | |
2199 jnc .Lxts_dec_loop | |
2200 | |
2201 .Lxts_dec_short: | |
2202 addq $128,%r14 | |
2203 jz .Lxts_dec_done | |
2204 pshufd $19,%xmm14,%xmm13 | |
2205 pxor %xmm14,%xmm14 | |
2206 movdqa %xmm6,%xmm15 | |
2207 movdqa %xmm6,0(%rsp) | |
2208 paddq %xmm6,%xmm6 | |
2209 pand %xmm12,%xmm13 | |
2210 pcmpgtd %xmm6,%xmm14 | |
2211 pxor %xmm13,%xmm6 | |
2212 pshufd $19,%xmm14,%xmm13 | |
2213 pxor %xmm14,%xmm14 | |
2214 movdqa %xmm6,%xmm0 | |
2215 movdqa %xmm6,16(%rsp) | |
2216 paddq %xmm6,%xmm6 | |
2217 pand %xmm12,%xmm13 | |
2218 pcmpgtd %xmm6,%xmm14 | |
2219 pxor %xmm13,%xmm6 | |
2220 movdqu 0(%r12),%xmm7 | |
2221 cmpq $16,%r14 | |
2222 je .Lxts_dec_1 | |
2223 pshufd $19,%xmm14,%xmm13 | |
2224 pxor %xmm14,%xmm14 | |
2225 movdqa %xmm6,%xmm1 | |
2226 movdqa %xmm6,32(%rsp) | |
2227 paddq %xmm6,%xmm6 | |
2228 pand %xmm12,%xmm13 | |
2229 pcmpgtd %xmm6,%xmm14 | |
2230 pxor %xmm13,%xmm6 | |
2231 movdqu 16(%r12),%xmm8 | |
2232 cmpq $32,%r14 | |
2233 je .Lxts_dec_2 | |
2234 pxor %xmm7,%xmm15 | |
2235 pshufd $19,%xmm14,%xmm13 | |
2236 pxor %xmm14,%xmm14 | |
2237 movdqa %xmm6,%xmm2 | |
2238 movdqa %xmm6,48(%rsp) | |
2239 paddq %xmm6,%xmm6 | |
2240 pand %xmm12,%xmm13 | |
2241 pcmpgtd %xmm6,%xmm14 | |
2242 pxor %xmm13,%xmm6 | |
2243 movdqu 32(%r12),%xmm9 | |
2244 cmpq $48,%r14 | |
2245 je .Lxts_dec_3 | |
2246 pxor %xmm8,%xmm0 | |
2247 pshufd $19,%xmm14,%xmm13 | |
2248 pxor %xmm14,%xmm14 | |
2249 movdqa %xmm6,%xmm3 | |
2250 movdqa %xmm6,64(%rsp) | |
2251 paddq %xmm6,%xmm6 | |
2252 pand %xmm12,%xmm13 | |
2253 pcmpgtd %xmm6,%xmm14 | |
2254 pxor %xmm13,%xmm6 | |
2255 movdqu 48(%r12),%xmm10 | |
2256 cmpq $64,%r14 | |
2257 je .Lxts_dec_4 | |
2258 pxor %xmm9,%xmm1 | |
2259 pshufd $19,%xmm14,%xmm13 | |
2260 pxor %xmm14,%xmm14 | |
2261 movdqa %xmm6,%xmm4 | |
2262 movdqa %xmm6,80(%rsp) | |
2263 paddq %xmm6,%xmm6 | |
2264 pand %xmm12,%xmm13 | |
2265 pcmpgtd %xmm6,%xmm14 | |
2266 pxor %xmm13,%xmm6 | |
2267 movdqu 64(%r12),%xmm11 | |
2268 cmpq $80,%r14 | |
2269 je .Lxts_dec_5 | |
2270 pxor %xmm10,%xmm2 | |
2271 pshufd $19,%xmm14,%xmm13 | |
2272 pxor %xmm14,%xmm14 | |
2273 movdqa %xmm6,%xmm5 | |
2274 movdqa %xmm6,96(%rsp) | |
2275 paddq %xmm6,%xmm6 | |
2276 pand %xmm12,%xmm13 | |
2277 pcmpgtd %xmm6,%xmm14 | |
2278 pxor %xmm13,%xmm6 | |
2279 movdqu 80(%r12),%xmm12 | |
2280 cmpq $96,%r14 | |
2281 je .Lxts_dec_6 | |
2282 pxor %xmm11,%xmm3 | |
2283 movdqu 96(%r12),%xmm13 | |
2284 pxor %xmm12,%xmm4 | |
2285 movdqa %xmm6,112(%rsp) | |
2286 leaq 112(%r12),%r12 | |
2287 pxor %xmm13,%xmm5 | |
2288 leaq 128(%rsp),%rax | |
2289 movl %edx,%r10d | |
2290 | |
2291 call _bsaes_decrypt8 | |
2292 | |
2293 pxor 0(%rsp),%xmm15 | |
2294 pxor 16(%rsp),%xmm0 | |
2295 movdqu %xmm15,0(%r13) | |
2296 pxor 32(%rsp),%xmm5 | |
2297 movdqu %xmm0,16(%r13) | |
2298 pxor 48(%rsp),%xmm3 | |
2299 movdqu %xmm5,32(%r13) | |
2300 pxor 64(%rsp),%xmm1 | |
2301 movdqu %xmm3,48(%r13) | |
2302 pxor 80(%rsp),%xmm6 | |
2303 movdqu %xmm1,64(%r13) | |
2304 pxor 96(%rsp),%xmm2 | |
2305 movdqu %xmm6,80(%r13) | |
2306 movdqu %xmm2,96(%r13) | |
2307 leaq 112(%r13),%r13 | |
2308 | |
2309 movdqa 112(%rsp),%xmm6 | |
2310 jmp .Lxts_dec_done | |
2311 .align 16 | |
2312 .Lxts_dec_6: | |
2313 pxor %xmm11,%xmm3 | |
2314 leaq 96(%r12),%r12 | |
2315 pxor %xmm12,%xmm4 | |
2316 leaq 128(%rsp),%rax | |
2317 movl %edx,%r10d | |
2318 | |
2319 call _bsaes_decrypt8 | |
2320 | |
2321 pxor 0(%rsp),%xmm15 | |
2322 pxor 16(%rsp),%xmm0 | |
2323 movdqu %xmm15,0(%r13) | |
2324 pxor 32(%rsp),%xmm5 | |
2325 movdqu %xmm0,16(%r13) | |
2326 pxor 48(%rsp),%xmm3 | |
2327 movdqu %xmm5,32(%r13) | |
2328 pxor 64(%rsp),%xmm1 | |
2329 movdqu %xmm3,48(%r13) | |
2330 pxor 80(%rsp),%xmm6 | |
2331 movdqu %xmm1,64(%r13) | |
2332 movdqu %xmm6,80(%r13) | |
2333 leaq 96(%r13),%r13 | |
2334 | |
2335 movdqa 96(%rsp),%xmm6 | |
2336 jmp .Lxts_dec_done | |
2337 .align 16 | |
2338 .Lxts_dec_5: | |
2339 pxor %xmm10,%xmm2 | |
2340 leaq 80(%r12),%r12 | |
2341 pxor %xmm11,%xmm3 | |
2342 leaq 128(%rsp),%rax | |
2343 movl %edx,%r10d | |
2344 | |
2345 call _bsaes_decrypt8 | |
2346 | |
2347 pxor 0(%rsp),%xmm15 | |
2348 pxor 16(%rsp),%xmm0 | |
2349 movdqu %xmm15,0(%r13) | |
2350 pxor 32(%rsp),%xmm5 | |
2351 movdqu %xmm0,16(%r13) | |
2352 pxor 48(%rsp),%xmm3 | |
2353 movdqu %xmm5,32(%r13) | |
2354 pxor 64(%rsp),%xmm1 | |
2355 movdqu %xmm3,48(%r13) | |
2356 movdqu %xmm1,64(%r13) | |
2357 leaq 80(%r13),%r13 | |
2358 | |
2359 movdqa 80(%rsp),%xmm6 | |
2360 jmp .Lxts_dec_done | |
2361 .align 16 | |
2362 .Lxts_dec_4: | |
2363 pxor %xmm9,%xmm1 | |
2364 leaq 64(%r12),%r12 | |
2365 pxor %xmm10,%xmm2 | |
2366 leaq 128(%rsp),%rax | |
2367 movl %edx,%r10d | |
2368 | |
2369 call _bsaes_decrypt8 | |
2370 | |
2371 pxor 0(%rsp),%xmm15 | |
2372 pxor 16(%rsp),%xmm0 | |
2373 movdqu %xmm15,0(%r13) | |
2374 pxor 32(%rsp),%xmm5 | |
2375 movdqu %xmm0,16(%r13) | |
2376 pxor 48(%rsp),%xmm3 | |
2377 movdqu %xmm5,32(%r13) | |
2378 movdqu %xmm3,48(%r13) | |
2379 leaq 64(%r13),%r13 | |
2380 | |
2381 movdqa 64(%rsp),%xmm6 | |
2382 jmp .Lxts_dec_done | |
2383 .align 16 | |
2384 .Lxts_dec_3: | |
2385 pxor %xmm8,%xmm0 | |
2386 leaq 48(%r12),%r12 | |
2387 pxor %xmm9,%xmm1 | |
2388 leaq 128(%rsp),%rax | |
2389 movl %edx,%r10d | |
2390 | |
2391 call _bsaes_decrypt8 | |
2392 | |
2393 pxor 0(%rsp),%xmm15 | |
2394 pxor 16(%rsp),%xmm0 | |
2395 movdqu %xmm15,0(%r13) | |
2396 pxor 32(%rsp),%xmm5 | |
2397 movdqu %xmm0,16(%r13) | |
2398 movdqu %xmm5,32(%r13) | |
2399 leaq 48(%r13),%r13 | |
2400 | |
2401 movdqa 48(%rsp),%xmm6 | |
2402 jmp .Lxts_dec_done | |
2403 .align 16 | |
2404 .Lxts_dec_2: | |
2405 pxor %xmm7,%xmm15 | |
2406 leaq 32(%r12),%r12 | |
2407 pxor %xmm8,%xmm0 | |
2408 leaq 128(%rsp),%rax | |
2409 movl %edx,%r10d | |
2410 | |
2411 call _bsaes_decrypt8 | |
2412 | |
2413 pxor 0(%rsp),%xmm15 | |
2414 pxor 16(%rsp),%xmm0 | |
2415 movdqu %xmm15,0(%r13) | |
2416 movdqu %xmm0,16(%r13) | |
2417 leaq 32(%r13),%r13 | |
2418 | |
2419 movdqa 32(%rsp),%xmm6 | |
2420 jmp .Lxts_dec_done | |
2421 .align 16 | |
2422 .Lxts_dec_1: | |
2423 pxor %xmm15,%xmm7 | |
2424 leaq 16(%r12),%r12 | |
2425 movdqa %xmm7,32(%rbp) | |
2426 leaq 32(%rbp),%rdi | |
2427 leaq 32(%rbp),%rsi | |
2428 leaq (%r15),%rdx | |
2429 call asm_AES_decrypt | |
2430 pxor 32(%rbp),%xmm15 | |
2431 | |
2432 | |
2433 | |
2434 | |
2435 | |
2436 movdqu %xmm15,0(%r13) | |
2437 leaq 16(%r13),%r13 | |
2438 | |
2439 movdqa 16(%rsp),%xmm6 | |
2440 | |
2441 .Lxts_dec_done: | |
2442 andl $15,%ebx | |
2443 jz .Lxts_dec_ret | |
2444 | |
2445 pxor %xmm14,%xmm14 | |
2446 movdqa .Lxts_magic(%rip),%xmm12 | |
2447 pcmpgtd %xmm6,%xmm14 | |
2448 pshufd $19,%xmm14,%xmm13 | |
2449 movdqa %xmm6,%xmm5 | |
2450 paddq %xmm6,%xmm6 | |
2451 pand %xmm12,%xmm13 | |
2452 movdqu (%r12),%xmm15 | |
2453 pxor %xmm13,%xmm6 | |
2454 | |
2455 leaq 32(%rbp),%rdi | |
2456 pxor %xmm6,%xmm15 | |
2457 leaq 32(%rbp),%rsi | |
2458 movdqa %xmm15,32(%rbp) | |
2459 leaq (%r15),%rdx | |
2460 call asm_AES_decrypt | |
2461 pxor 32(%rbp),%xmm6 | |
2462 movq %r13,%rdx | |
2463 movdqu %xmm6,(%r13) | |
2464 | |
2465 .Lxts_dec_steal: | |
2466 movzbl 16(%r12),%eax | |
2467 movzbl (%rdx),%ecx | |
2468 leaq 1(%r12),%r12 | |
2469 movb %al,(%rdx) | |
2470 movb %cl,16(%rdx) | |
2471 leaq 1(%rdx),%rdx | |
2472 subl $1,%ebx | |
2473 jnz .Lxts_dec_steal | |
2474 | |
2475 movdqu (%r13),%xmm15 | |
2476 leaq 32(%rbp),%rdi | |
2477 pxor %xmm5,%xmm15 | |
2478 leaq 32(%rbp),%rsi | |
2479 movdqa %xmm15,32(%rbp) | |
2480 leaq (%r15),%rdx | |
2481 call asm_AES_decrypt | |
2482 pxor 32(%rbp),%xmm5 | |
2483 movdqu %xmm5,(%r13) | |
2484 | |
2485 .Lxts_dec_ret: | |
2486 leaq (%rsp),%rax | |
2487 pxor %xmm0,%xmm0 | |
2488 .Lxts_dec_bzero: | |
2489 movdqa %xmm0,0(%rax) | |
2490 movdqa %xmm0,16(%rax) | |
2491 leaq 32(%rax),%rax | |
2492 cmpq %rax,%rbp | |
2493 ja .Lxts_dec_bzero | |
2494 | |
2495 leaq (%rbp),%rsp | |
2496 movq 72(%rsp),%r15 | |
2497 movq 80(%rsp),%r14 | |
2498 movq 88(%rsp),%r13 | |
2499 movq 96(%rsp),%r12 | |
2500 movq 104(%rsp),%rbx | |
2501 movq 112(%rsp),%rax | |
2502 leaq 120(%rsp),%rsp | |
2503 movq %rax,%rbp | |
2504 .Lxts_dec_epilogue: | |
2505 .byte 0xf3,0xc3 | |
2506 .size bsaes_xts_decrypt,.-bsaes_xts_decrypt | |
2507 .type _bsaes_const,@object | |
2508 .align 64 | |
2509 _bsaes_const: | |
2510 .LM0ISR: | |
2511 .quad 0x0a0e0206070b0f03, 0x0004080c0d010509 | |
2512 .LISRM0: | |
2513 .quad 0x01040b0e0205080f, 0x0306090c00070a0d | |
2514 .LISR: | |
2515 .quad 0x0504070602010003, 0x0f0e0d0c080b0a09 | |
2516 .LBS0: | |
2517 .quad 0x5555555555555555, 0x5555555555555555 | |
2518 .LBS1: | |
2519 .quad 0x3333333333333333, 0x3333333333333333 | |
2520 .LBS2: | |
2521 .quad 0x0f0f0f0f0f0f0f0f, 0x0f0f0f0f0f0f0f0f | |
2522 .LSR: | |
2523 .quad 0x0504070600030201, 0x0f0e0d0c0a09080b | |
2524 .LSRM0: | |
2525 .quad 0x0304090e00050a0f, 0x01060b0c0207080d | |
2526 .LM0SR: | |
2527 .quad 0x0a0e02060f03070b, 0x0004080c05090d01 | |
2528 .LSWPUP: | |
2529 .quad 0x0706050403020100, 0x0c0d0e0f0b0a0908 | |
2530 .LSWPUPM0SR: | |
2531 .quad 0x0a0d02060c03070b, 0x0004080f05090e01 | |
2532 .LADD1: | |
2533 .quad 0x0000000000000000, 0x0000000100000000 | |
2534 .LADD2: | |
2535 .quad 0x0000000000000000, 0x0000000200000000 | |
2536 .LADD3: | |
2537 .quad 0x0000000000000000, 0x0000000300000000 | |
2538 .LADD4: | |
2539 .quad 0x0000000000000000, 0x0000000400000000 | |
2540 .LADD5: | |
2541 .quad 0x0000000000000000, 0x0000000500000000 | |
2542 .LADD6: | |
2543 .quad 0x0000000000000000, 0x0000000600000000 | |
2544 .LADD7: | |
2545 .quad 0x0000000000000000, 0x0000000700000000 | |
2546 .LADD8: | |
2547 .quad 0x0000000000000000, 0x0000000800000000 | |
2548 .Lxts_magic: | |
2549 .long 0x87,0,1,0 | |
2550 .Lmasks: | |
2551 .quad 0x0101010101010101, 0x0101010101010101 | |
2552 .quad 0x0202020202020202, 0x0202020202020202 | |
2553 .quad 0x0404040404040404, 0x0404040404040404 | |
2554 .quad 0x0808080808080808, 0x0808080808080808 | |
2555 .LM0: | |
2556 .quad 0x02060a0e03070b0f, 0x0004080c0105090d | |
2557 .L63: | |
2558 .quad 0x6363636363636363, 0x6363636363636363 | |
2559 .byte 66,105,116,45,115,108,105,99,101,100,32,65,69,83,32,102,111,114,32,120,5
6,54,95,54,52,47,83,83,83,69,51,44,32,69,109,105,108,105,97,32,75,195,164,115,11
2,101,114,44,32,80,101,116,101,114,32,83,99,104,119,97,98,101,44,32,65,110,100,1
21,32,80,111,108,121,97,107,111,118,0 | |
2560 .align 64 | |
2561 .size _bsaes_const,.-_bsaes_const | |
OLD | NEW |