1 | default rel
|
---|
2 | %define XMMWORD
|
---|
3 | %define YMMWORD
|
---|
4 | %define ZMMWORD
|
---|
5 | section .text code align=64
|
---|
6 |
|
---|
7 |
|
---|
8 | EXTERN OPENSSL_ia32cap_P
|
---|
9 |
|
---|
10 | global aesni_multi_cbc_encrypt
|
---|
11 |
|
---|
12 | ALIGN 32
|
---|
13 | aesni_multi_cbc_encrypt:
|
---|
14 | mov QWORD[8+rsp],rdi ;WIN64 prologue
|
---|
15 | mov QWORD[16+rsp],rsi
|
---|
16 | mov rax,rsp
|
---|
17 | $L$SEH_begin_aesni_multi_cbc_encrypt:
|
---|
18 | mov rdi,rcx
|
---|
19 | mov rsi,rdx
|
---|
20 | mov rdx,r8
|
---|
21 |
|
---|
22 |
|
---|
23 |
|
---|
24 | cmp edx,2
|
---|
25 | jb NEAR $L$enc_non_avx
|
---|
26 | mov ecx,DWORD[((OPENSSL_ia32cap_P+4))]
|
---|
27 | test ecx,268435456
|
---|
28 | jnz NEAR _avx_cbc_enc_shortcut
|
---|
29 | jmp NEAR $L$enc_non_avx
|
---|
30 | ALIGN 16
|
---|
31 | $L$enc_non_avx:
|
---|
32 | mov rax,rsp
|
---|
33 |
|
---|
34 | push rbx
|
---|
35 |
|
---|
36 | push rbp
|
---|
37 |
|
---|
38 | push r12
|
---|
39 |
|
---|
40 | push r13
|
---|
41 |
|
---|
42 | push r14
|
---|
43 |
|
---|
44 | push r15
|
---|
45 |
|
---|
46 | lea rsp,[((-168))+rsp]
|
---|
47 | movaps XMMWORD[rsp],xmm6
|
---|
48 | movaps XMMWORD[16+rsp],xmm7
|
---|
49 | movaps XMMWORD[32+rsp],xmm8
|
---|
50 | movaps XMMWORD[48+rsp],xmm9
|
---|
51 | movaps XMMWORD[64+rsp],xmm10
|
---|
52 | movaps XMMWORD[80+rsp],xmm11
|
---|
53 | movaps XMMWORD[96+rsp],xmm12
|
---|
54 | movaps XMMWORD[(-104)+rax],xmm13
|
---|
55 | movaps XMMWORD[(-88)+rax],xmm14
|
---|
56 | movaps XMMWORD[(-72)+rax],xmm15
|
---|
57 |
|
---|
58 |
|
---|
59 |
|
---|
60 |
|
---|
61 |
|
---|
62 |
|
---|
63 | sub rsp,48
|
---|
64 | and rsp,-64
|
---|
65 | mov QWORD[16+rsp],rax
|
---|
66 |
|
---|
67 |
|
---|
68 | $L$enc4x_body:
|
---|
69 | movdqu xmm12,XMMWORD[rsi]
|
---|
70 | lea rsi,[120+rsi]
|
---|
71 | lea rdi,[80+rdi]
|
---|
72 |
|
---|
73 | $L$enc4x_loop_grande:
|
---|
74 | mov DWORD[24+rsp],edx
|
---|
75 | xor edx,edx
|
---|
76 |
|
---|
77 | mov ecx,DWORD[((-64))+rdi]
|
---|
78 | mov r8,QWORD[((-80))+rdi]
|
---|
79 | cmp ecx,edx
|
---|
80 | mov r12,QWORD[((-72))+rdi]
|
---|
81 | cmovg edx,ecx
|
---|
82 | test ecx,ecx
|
---|
83 |
|
---|
84 | movdqu xmm2,XMMWORD[((-56))+rdi]
|
---|
85 | mov DWORD[32+rsp],ecx
|
---|
86 | cmovle r8,rsp
|
---|
87 |
|
---|
88 | mov ecx,DWORD[((-24))+rdi]
|
---|
89 | mov r9,QWORD[((-40))+rdi]
|
---|
90 | cmp ecx,edx
|
---|
91 | mov r13,QWORD[((-32))+rdi]
|
---|
92 | cmovg edx,ecx
|
---|
93 | test ecx,ecx
|
---|
94 |
|
---|
95 | movdqu xmm3,XMMWORD[((-16))+rdi]
|
---|
96 | mov DWORD[36+rsp],ecx
|
---|
97 | cmovle r9,rsp
|
---|
98 |
|
---|
99 | mov ecx,DWORD[16+rdi]
|
---|
100 | mov r10,QWORD[rdi]
|
---|
101 | cmp ecx,edx
|
---|
102 | mov r14,QWORD[8+rdi]
|
---|
103 | cmovg edx,ecx
|
---|
104 | test ecx,ecx
|
---|
105 |
|
---|
106 | movdqu xmm4,XMMWORD[24+rdi]
|
---|
107 | mov DWORD[40+rsp],ecx
|
---|
108 | cmovle r10,rsp
|
---|
109 |
|
---|
110 | mov ecx,DWORD[56+rdi]
|
---|
111 | mov r11,QWORD[40+rdi]
|
---|
112 | cmp ecx,edx
|
---|
113 | mov r15,QWORD[48+rdi]
|
---|
114 | cmovg edx,ecx
|
---|
115 | test ecx,ecx
|
---|
116 |
|
---|
117 | movdqu xmm5,XMMWORD[64+rdi]
|
---|
118 | mov DWORD[44+rsp],ecx
|
---|
119 | cmovle r11,rsp
|
---|
120 | test edx,edx
|
---|
121 | jz NEAR $L$enc4x_done
|
---|
122 |
|
---|
123 | movups xmm1,XMMWORD[((16-120))+rsi]
|
---|
124 | pxor xmm2,xmm12
|
---|
125 | movups xmm0,XMMWORD[((32-120))+rsi]
|
---|
126 | pxor xmm3,xmm12
|
---|
127 | mov eax,DWORD[((240-120))+rsi]
|
---|
128 | pxor xmm4,xmm12
|
---|
129 | movdqu xmm6,XMMWORD[r8]
|
---|
130 | pxor xmm5,xmm12
|
---|
131 | movdqu xmm7,XMMWORD[r9]
|
---|
132 | pxor xmm2,xmm6
|
---|
133 | movdqu xmm8,XMMWORD[r10]
|
---|
134 | pxor xmm3,xmm7
|
---|
135 | movdqu xmm9,XMMWORD[r11]
|
---|
136 | pxor xmm4,xmm8
|
---|
137 | pxor xmm5,xmm9
|
---|
138 | movdqa xmm10,XMMWORD[32+rsp]
|
---|
139 | xor rbx,rbx
|
---|
140 | jmp NEAR $L$oop_enc4x
|
---|
141 |
|
---|
142 | ALIGN 32
|
---|
143 | $L$oop_enc4x:
|
---|
144 | add rbx,16
|
---|
145 | lea rbp,[16+rsp]
|
---|
146 | mov ecx,1
|
---|
147 | sub rbp,rbx
|
---|
148 |
|
---|
149 | DB 102,15,56,220,209
|
---|
150 | prefetcht0 [31+rbx*1+r8]
|
---|
151 | prefetcht0 [31+rbx*1+r9]
|
---|
152 | DB 102,15,56,220,217
|
---|
153 | prefetcht0 [31+rbx*1+r10]
|
---|
154 | prefetcht0 [31+rbx*1+r10]
|
---|
155 | DB 102,15,56,220,225
|
---|
156 | DB 102,15,56,220,233
|
---|
157 | movups xmm1,XMMWORD[((48-120))+rsi]
|
---|
158 | cmp ecx,DWORD[32+rsp]
|
---|
159 | DB 102,15,56,220,208
|
---|
160 | DB 102,15,56,220,216
|
---|
161 | DB 102,15,56,220,224
|
---|
162 | cmovge r8,rbp
|
---|
163 | cmovg r12,rbp
|
---|
164 | DB 102,15,56,220,232
|
---|
165 | movups xmm0,XMMWORD[((-56))+rsi]
|
---|
166 | cmp ecx,DWORD[36+rsp]
|
---|
167 | DB 102,15,56,220,209
|
---|
168 | DB 102,15,56,220,217
|
---|
169 | DB 102,15,56,220,225
|
---|
170 | cmovge r9,rbp
|
---|
171 | cmovg r13,rbp
|
---|
172 | DB 102,15,56,220,233
|
---|
173 | movups xmm1,XMMWORD[((-40))+rsi]
|
---|
174 | cmp ecx,DWORD[40+rsp]
|
---|
175 | DB 102,15,56,220,208
|
---|
176 | DB 102,15,56,220,216
|
---|
177 | DB 102,15,56,220,224
|
---|
178 | cmovge r10,rbp
|
---|
179 | cmovg r14,rbp
|
---|
180 | DB 102,15,56,220,232
|
---|
181 | movups xmm0,XMMWORD[((-24))+rsi]
|
---|
182 | cmp ecx,DWORD[44+rsp]
|
---|
183 | DB 102,15,56,220,209
|
---|
184 | DB 102,15,56,220,217
|
---|
185 | DB 102,15,56,220,225
|
---|
186 | cmovge r11,rbp
|
---|
187 | cmovg r15,rbp
|
---|
188 | DB 102,15,56,220,233
|
---|
189 | movups xmm1,XMMWORD[((-8))+rsi]
|
---|
190 | movdqa xmm11,xmm10
|
---|
191 | DB 102,15,56,220,208
|
---|
192 | prefetcht0 [15+rbx*1+r12]
|
---|
193 | prefetcht0 [15+rbx*1+r13]
|
---|
194 | DB 102,15,56,220,216
|
---|
195 | prefetcht0 [15+rbx*1+r14]
|
---|
196 | prefetcht0 [15+rbx*1+r15]
|
---|
197 | DB 102,15,56,220,224
|
---|
198 | DB 102,15,56,220,232
|
---|
199 | movups xmm0,XMMWORD[((128-120))+rsi]
|
---|
200 | pxor xmm12,xmm12
|
---|
201 |
|
---|
202 | DB 102,15,56,220,209
|
---|
203 | pcmpgtd xmm11,xmm12
|
---|
204 | movdqu xmm12,XMMWORD[((-120))+rsi]
|
---|
205 | DB 102,15,56,220,217
|
---|
206 | paddd xmm10,xmm11
|
---|
207 | movdqa XMMWORD[32+rsp],xmm10
|
---|
208 | DB 102,15,56,220,225
|
---|
209 | DB 102,15,56,220,233
|
---|
210 | movups xmm1,XMMWORD[((144-120))+rsi]
|
---|
211 |
|
---|
212 | cmp eax,11
|
---|
213 |
|
---|
214 | DB 102,15,56,220,208
|
---|
215 | DB 102,15,56,220,216
|
---|
216 | DB 102,15,56,220,224
|
---|
217 | DB 102,15,56,220,232
|
---|
218 | movups xmm0,XMMWORD[((160-120))+rsi]
|
---|
219 |
|
---|
220 | jb NEAR $L$enc4x_tail
|
---|
221 |
|
---|
222 | DB 102,15,56,220,209
|
---|
223 | DB 102,15,56,220,217
|
---|
224 | DB 102,15,56,220,225
|
---|
225 | DB 102,15,56,220,233
|
---|
226 | movups xmm1,XMMWORD[((176-120))+rsi]
|
---|
227 |
|
---|
228 | DB 102,15,56,220,208
|
---|
229 | DB 102,15,56,220,216
|
---|
230 | DB 102,15,56,220,224
|
---|
231 | DB 102,15,56,220,232
|
---|
232 | movups xmm0,XMMWORD[((192-120))+rsi]
|
---|
233 |
|
---|
234 | je NEAR $L$enc4x_tail
|
---|
235 |
|
---|
236 | DB 102,15,56,220,209
|
---|
237 | DB 102,15,56,220,217
|
---|
238 | DB 102,15,56,220,225
|
---|
239 | DB 102,15,56,220,233
|
---|
240 | movups xmm1,XMMWORD[((208-120))+rsi]
|
---|
241 |
|
---|
242 | DB 102,15,56,220,208
|
---|
243 | DB 102,15,56,220,216
|
---|
244 | DB 102,15,56,220,224
|
---|
245 | DB 102,15,56,220,232
|
---|
246 | movups xmm0,XMMWORD[((224-120))+rsi]
|
---|
247 | jmp NEAR $L$enc4x_tail
|
---|
248 |
|
---|
249 | ALIGN 32
|
---|
250 | $L$enc4x_tail:
|
---|
251 | DB 102,15,56,220,209
|
---|
252 | DB 102,15,56,220,217
|
---|
253 | DB 102,15,56,220,225
|
---|
254 | DB 102,15,56,220,233
|
---|
255 | movdqu xmm6,XMMWORD[rbx*1+r8]
|
---|
256 | movdqu xmm1,XMMWORD[((16-120))+rsi]
|
---|
257 |
|
---|
258 | DB 102,15,56,221,208
|
---|
259 | movdqu xmm7,XMMWORD[rbx*1+r9]
|
---|
260 | pxor xmm6,xmm12
|
---|
261 | DB 102,15,56,221,216
|
---|
262 | movdqu xmm8,XMMWORD[rbx*1+r10]
|
---|
263 | pxor xmm7,xmm12
|
---|
264 | DB 102,15,56,221,224
|
---|
265 | movdqu xmm9,XMMWORD[rbx*1+r11]
|
---|
266 | pxor xmm8,xmm12
|
---|
267 | DB 102,15,56,221,232
|
---|
268 | movdqu xmm0,XMMWORD[((32-120))+rsi]
|
---|
269 | pxor xmm9,xmm12
|
---|
270 |
|
---|
271 | movups XMMWORD[(-16)+rbx*1+r12],xmm2
|
---|
272 | pxor xmm2,xmm6
|
---|
273 | movups XMMWORD[(-16)+rbx*1+r13],xmm3
|
---|
274 | pxor xmm3,xmm7
|
---|
275 | movups XMMWORD[(-16)+rbx*1+r14],xmm4
|
---|
276 | pxor xmm4,xmm8
|
---|
277 | movups XMMWORD[(-16)+rbx*1+r15],xmm5
|
---|
278 | pxor xmm5,xmm9
|
---|
279 |
|
---|
280 | dec edx
|
---|
281 | jnz NEAR $L$oop_enc4x
|
---|
282 |
|
---|
283 | mov rax,QWORD[16+rsp]
|
---|
284 |
|
---|
285 | mov edx,DWORD[24+rsp]
|
---|
286 |
|
---|
287 |
|
---|
288 |
|
---|
289 |
|
---|
290 |
|
---|
291 |
|
---|
292 |
|
---|
293 |
|
---|
294 |
|
---|
295 |
|
---|
296 |
|
---|
297 | lea rdi,[160+rdi]
|
---|
298 | dec edx
|
---|
299 | jnz NEAR $L$enc4x_loop_grande
|
---|
300 |
|
---|
301 | $L$enc4x_done:
|
---|
302 | movaps xmm6,XMMWORD[((-216))+rax]
|
---|
303 | movaps xmm7,XMMWORD[((-200))+rax]
|
---|
304 | movaps xmm8,XMMWORD[((-184))+rax]
|
---|
305 | movaps xmm9,XMMWORD[((-168))+rax]
|
---|
306 | movaps xmm10,XMMWORD[((-152))+rax]
|
---|
307 | movaps xmm11,XMMWORD[((-136))+rax]
|
---|
308 | movaps xmm12,XMMWORD[((-120))+rax]
|
---|
309 |
|
---|
310 |
|
---|
311 |
|
---|
312 | mov r15,QWORD[((-48))+rax]
|
---|
313 |
|
---|
314 | mov r14,QWORD[((-40))+rax]
|
---|
315 |
|
---|
316 | mov r13,QWORD[((-32))+rax]
|
---|
317 |
|
---|
318 | mov r12,QWORD[((-24))+rax]
|
---|
319 |
|
---|
320 | mov rbp,QWORD[((-16))+rax]
|
---|
321 |
|
---|
322 | mov rbx,QWORD[((-8))+rax]
|
---|
323 |
|
---|
324 | lea rsp,[rax]
|
---|
325 |
|
---|
326 | $L$enc4x_epilogue:
|
---|
327 | mov rdi,QWORD[8+rsp] ;WIN64 epilogue
|
---|
328 | mov rsi,QWORD[16+rsp]
|
---|
329 | DB 0F3h,0C3h ;repret
|
---|
330 |
|
---|
331 | $L$SEH_end_aesni_multi_cbc_encrypt:
|
---|
332 |
|
---|
333 | global aesni_multi_cbc_decrypt
|
---|
334 |
|
---|
335 | ALIGN 32
|
---|
336 | aesni_multi_cbc_decrypt:
|
---|
337 | mov QWORD[8+rsp],rdi ;WIN64 prologue
|
---|
338 | mov QWORD[16+rsp],rsi
|
---|
339 | mov rax,rsp
|
---|
340 | $L$SEH_begin_aesni_multi_cbc_decrypt:
|
---|
341 | mov rdi,rcx
|
---|
342 | mov rsi,rdx
|
---|
343 | mov rdx,r8
|
---|
344 |
|
---|
345 |
|
---|
346 |
|
---|
347 | cmp edx,2
|
---|
348 | jb NEAR $L$dec_non_avx
|
---|
349 | mov ecx,DWORD[((OPENSSL_ia32cap_P+4))]
|
---|
350 | test ecx,268435456
|
---|
351 | jnz NEAR _avx_cbc_dec_shortcut
|
---|
352 | jmp NEAR $L$dec_non_avx
|
---|
353 | ALIGN 16
|
---|
354 | $L$dec_non_avx:
|
---|
355 | mov rax,rsp
|
---|
356 |
|
---|
357 | push rbx
|
---|
358 |
|
---|
359 | push rbp
|
---|
360 |
|
---|
361 | push r12
|
---|
362 |
|
---|
363 | push r13
|
---|
364 |
|
---|
365 | push r14
|
---|
366 |
|
---|
367 | push r15
|
---|
368 |
|
---|
369 | lea rsp,[((-168))+rsp]
|
---|
370 | movaps XMMWORD[rsp],xmm6
|
---|
371 | movaps XMMWORD[16+rsp],xmm7
|
---|
372 | movaps XMMWORD[32+rsp],xmm8
|
---|
373 | movaps XMMWORD[48+rsp],xmm9
|
---|
374 | movaps XMMWORD[64+rsp],xmm10
|
---|
375 | movaps XMMWORD[80+rsp],xmm11
|
---|
376 | movaps XMMWORD[96+rsp],xmm12
|
---|
377 | movaps XMMWORD[(-104)+rax],xmm13
|
---|
378 | movaps XMMWORD[(-88)+rax],xmm14
|
---|
379 | movaps XMMWORD[(-72)+rax],xmm15
|
---|
380 |
|
---|
381 |
|
---|
382 |
|
---|
383 |
|
---|
384 |
|
---|
385 |
|
---|
386 | sub rsp,48
|
---|
387 | and rsp,-64
|
---|
388 | mov QWORD[16+rsp],rax
|
---|
389 |
|
---|
390 |
|
---|
391 | $L$dec4x_body:
|
---|
392 | movdqu xmm12,XMMWORD[rsi]
|
---|
393 | lea rsi,[120+rsi]
|
---|
394 | lea rdi,[80+rdi]
|
---|
395 |
|
---|
396 | $L$dec4x_loop_grande:
|
---|
397 | mov DWORD[24+rsp],edx
|
---|
398 | xor edx,edx
|
---|
399 |
|
---|
400 | mov ecx,DWORD[((-64))+rdi]
|
---|
401 | mov r8,QWORD[((-80))+rdi]
|
---|
402 | cmp ecx,edx
|
---|
403 | mov r12,QWORD[((-72))+rdi]
|
---|
404 | cmovg edx,ecx
|
---|
405 | test ecx,ecx
|
---|
406 |
|
---|
407 | movdqu xmm6,XMMWORD[((-56))+rdi]
|
---|
408 | mov DWORD[32+rsp],ecx
|
---|
409 | cmovle r8,rsp
|
---|
410 |
|
---|
411 | mov ecx,DWORD[((-24))+rdi]
|
---|
412 | mov r9,QWORD[((-40))+rdi]
|
---|
413 | cmp ecx,edx
|
---|
414 | mov r13,QWORD[((-32))+rdi]
|
---|
415 | cmovg edx,ecx
|
---|
416 | test ecx,ecx
|
---|
417 |
|
---|
418 | movdqu xmm7,XMMWORD[((-16))+rdi]
|
---|
419 | mov DWORD[36+rsp],ecx
|
---|
420 | cmovle r9,rsp
|
---|
421 |
|
---|
422 | mov ecx,DWORD[16+rdi]
|
---|
423 | mov r10,QWORD[rdi]
|
---|
424 | cmp ecx,edx
|
---|
425 | mov r14,QWORD[8+rdi]
|
---|
426 | cmovg edx,ecx
|
---|
427 | test ecx,ecx
|
---|
428 |
|
---|
429 | movdqu xmm8,XMMWORD[24+rdi]
|
---|
430 | mov DWORD[40+rsp],ecx
|
---|
431 | cmovle r10,rsp
|
---|
432 |
|
---|
433 | mov ecx,DWORD[56+rdi]
|
---|
434 | mov r11,QWORD[40+rdi]
|
---|
435 | cmp ecx,edx
|
---|
436 | mov r15,QWORD[48+rdi]
|
---|
437 | cmovg edx,ecx
|
---|
438 | test ecx,ecx
|
---|
439 |
|
---|
440 | movdqu xmm9,XMMWORD[64+rdi]
|
---|
441 | mov DWORD[44+rsp],ecx
|
---|
442 | cmovle r11,rsp
|
---|
443 | test edx,edx
|
---|
444 | jz NEAR $L$dec4x_done
|
---|
445 |
|
---|
446 | movups xmm1,XMMWORD[((16-120))+rsi]
|
---|
447 | movups xmm0,XMMWORD[((32-120))+rsi]
|
---|
448 | mov eax,DWORD[((240-120))+rsi]
|
---|
449 | movdqu xmm2,XMMWORD[r8]
|
---|
450 | movdqu xmm3,XMMWORD[r9]
|
---|
451 | pxor xmm2,xmm12
|
---|
452 | movdqu xmm4,XMMWORD[r10]
|
---|
453 | pxor xmm3,xmm12
|
---|
454 | movdqu xmm5,XMMWORD[r11]
|
---|
455 | pxor xmm4,xmm12
|
---|
456 | pxor xmm5,xmm12
|
---|
457 | movdqa xmm10,XMMWORD[32+rsp]
|
---|
458 | xor rbx,rbx
|
---|
459 | jmp NEAR $L$oop_dec4x
|
---|
460 |
|
---|
461 | ALIGN 32
|
---|
462 | $L$oop_dec4x:
|
---|
463 | add rbx,16
|
---|
464 | lea rbp,[16+rsp]
|
---|
465 | mov ecx,1
|
---|
466 | sub rbp,rbx
|
---|
467 |
|
---|
468 | DB 102,15,56,222,209
|
---|
469 | prefetcht0 [31+rbx*1+r8]
|
---|
470 | prefetcht0 [31+rbx*1+r9]
|
---|
471 | DB 102,15,56,222,217
|
---|
472 | prefetcht0 [31+rbx*1+r10]
|
---|
473 | prefetcht0 [31+rbx*1+r11]
|
---|
474 | DB 102,15,56,222,225
|
---|
475 | DB 102,15,56,222,233
|
---|
476 | movups xmm1,XMMWORD[((48-120))+rsi]
|
---|
477 | cmp ecx,DWORD[32+rsp]
|
---|
478 | DB 102,15,56,222,208
|
---|
479 | DB 102,15,56,222,216
|
---|
480 | DB 102,15,56,222,224
|
---|
481 | cmovge r8,rbp
|
---|
482 | cmovg r12,rbp
|
---|
483 | DB 102,15,56,222,232
|
---|
484 | movups xmm0,XMMWORD[((-56))+rsi]
|
---|
485 | cmp ecx,DWORD[36+rsp]
|
---|
486 | DB 102,15,56,222,209
|
---|
487 | DB 102,15,56,222,217
|
---|
488 | DB 102,15,56,222,225
|
---|
489 | cmovge r9,rbp
|
---|
490 | cmovg r13,rbp
|
---|
491 | DB 102,15,56,222,233
|
---|
492 | movups xmm1,XMMWORD[((-40))+rsi]
|
---|
493 | cmp ecx,DWORD[40+rsp]
|
---|
494 | DB 102,15,56,222,208
|
---|
495 | DB 102,15,56,222,216
|
---|
496 | DB 102,15,56,222,224
|
---|
497 | cmovge r10,rbp
|
---|
498 | cmovg r14,rbp
|
---|
499 | DB 102,15,56,222,232
|
---|
500 | movups xmm0,XMMWORD[((-24))+rsi]
|
---|
501 | cmp ecx,DWORD[44+rsp]
|
---|
502 | DB 102,15,56,222,209
|
---|
503 | DB 102,15,56,222,217
|
---|
504 | DB 102,15,56,222,225
|
---|
505 | cmovge r11,rbp
|
---|
506 | cmovg r15,rbp
|
---|
507 | DB 102,15,56,222,233
|
---|
508 | movups xmm1,XMMWORD[((-8))+rsi]
|
---|
509 | movdqa xmm11,xmm10
|
---|
510 | DB 102,15,56,222,208
|
---|
511 | prefetcht0 [15+rbx*1+r12]
|
---|
512 | prefetcht0 [15+rbx*1+r13]
|
---|
513 | DB 102,15,56,222,216
|
---|
514 | prefetcht0 [15+rbx*1+r14]
|
---|
515 | prefetcht0 [15+rbx*1+r15]
|
---|
516 | DB 102,15,56,222,224
|
---|
517 | DB 102,15,56,222,232
|
---|
518 | movups xmm0,XMMWORD[((128-120))+rsi]
|
---|
519 | pxor xmm12,xmm12
|
---|
520 |
|
---|
521 | DB 102,15,56,222,209
|
---|
522 | pcmpgtd xmm11,xmm12
|
---|
523 | movdqu xmm12,XMMWORD[((-120))+rsi]
|
---|
524 | DB 102,15,56,222,217
|
---|
525 | paddd xmm10,xmm11
|
---|
526 | movdqa XMMWORD[32+rsp],xmm10
|
---|
527 | DB 102,15,56,222,225
|
---|
528 | DB 102,15,56,222,233
|
---|
529 | movups xmm1,XMMWORD[((144-120))+rsi]
|
---|
530 |
|
---|
531 | cmp eax,11
|
---|
532 |
|
---|
533 | DB 102,15,56,222,208
|
---|
534 | DB 102,15,56,222,216
|
---|
535 | DB 102,15,56,222,224
|
---|
536 | DB 102,15,56,222,232
|
---|
537 | movups xmm0,XMMWORD[((160-120))+rsi]
|
---|
538 |
|
---|
539 | jb NEAR $L$dec4x_tail
|
---|
540 |
|
---|
541 | DB 102,15,56,222,209
|
---|
542 | DB 102,15,56,222,217
|
---|
543 | DB 102,15,56,222,225
|
---|
544 | DB 102,15,56,222,233
|
---|
545 | movups xmm1,XMMWORD[((176-120))+rsi]
|
---|
546 |
|
---|
547 | DB 102,15,56,222,208
|
---|
548 | DB 102,15,56,222,216
|
---|
549 | DB 102,15,56,222,224
|
---|
550 | DB 102,15,56,222,232
|
---|
551 | movups xmm0,XMMWORD[((192-120))+rsi]
|
---|
552 |
|
---|
553 | je NEAR $L$dec4x_tail
|
---|
554 |
|
---|
555 | DB 102,15,56,222,209
|
---|
556 | DB 102,15,56,222,217
|
---|
557 | DB 102,15,56,222,225
|
---|
558 | DB 102,15,56,222,233
|
---|
559 | movups xmm1,XMMWORD[((208-120))+rsi]
|
---|
560 |
|
---|
561 | DB 102,15,56,222,208
|
---|
562 | DB 102,15,56,222,216
|
---|
563 | DB 102,15,56,222,224
|
---|
564 | DB 102,15,56,222,232
|
---|
565 | movups xmm0,XMMWORD[((224-120))+rsi]
|
---|
566 | jmp NEAR $L$dec4x_tail
|
---|
567 |
|
---|
568 | ALIGN 32
|
---|
569 | $L$dec4x_tail:
|
---|
570 | DB 102,15,56,222,209
|
---|
571 | DB 102,15,56,222,217
|
---|
572 | DB 102,15,56,222,225
|
---|
573 | pxor xmm6,xmm0
|
---|
574 | pxor xmm7,xmm0
|
---|
575 | DB 102,15,56,222,233
|
---|
576 | movdqu xmm1,XMMWORD[((16-120))+rsi]
|
---|
577 | pxor xmm8,xmm0
|
---|
578 | pxor xmm9,xmm0
|
---|
579 | movdqu xmm0,XMMWORD[((32-120))+rsi]
|
---|
580 |
|
---|
581 | DB 102,15,56,223,214
|
---|
582 | DB 102,15,56,223,223
|
---|
583 | movdqu xmm6,XMMWORD[((-16))+rbx*1+r8]
|
---|
584 | movdqu xmm7,XMMWORD[((-16))+rbx*1+r9]
|
---|
585 | DB 102,65,15,56,223,224
|
---|
586 | DB 102,65,15,56,223,233
|
---|
587 | movdqu xmm8,XMMWORD[((-16))+rbx*1+r10]
|
---|
588 | movdqu xmm9,XMMWORD[((-16))+rbx*1+r11]
|
---|
589 |
|
---|
590 | movups XMMWORD[(-16)+rbx*1+r12],xmm2
|
---|
591 | movdqu xmm2,XMMWORD[rbx*1+r8]
|
---|
592 | movups XMMWORD[(-16)+rbx*1+r13],xmm3
|
---|
593 | movdqu xmm3,XMMWORD[rbx*1+r9]
|
---|
594 | pxor xmm2,xmm12
|
---|
595 | movups XMMWORD[(-16)+rbx*1+r14],xmm4
|
---|
596 | movdqu xmm4,XMMWORD[rbx*1+r10]
|
---|
597 | pxor xmm3,xmm12
|
---|
598 | movups XMMWORD[(-16)+rbx*1+r15],xmm5
|
---|
599 | movdqu xmm5,XMMWORD[rbx*1+r11]
|
---|
600 | pxor xmm4,xmm12
|
---|
601 | pxor xmm5,xmm12
|
---|
602 |
|
---|
603 | dec edx
|
---|
604 | jnz NEAR $L$oop_dec4x
|
---|
605 |
|
---|
606 | mov rax,QWORD[16+rsp]
|
---|
607 |
|
---|
608 | mov edx,DWORD[24+rsp]
|
---|
609 |
|
---|
610 | lea rdi,[160+rdi]
|
---|
611 | dec edx
|
---|
612 | jnz NEAR $L$dec4x_loop_grande
|
---|
613 |
|
---|
614 | $L$dec4x_done:
|
---|
615 | movaps xmm6,XMMWORD[((-216))+rax]
|
---|
616 | movaps xmm7,XMMWORD[((-200))+rax]
|
---|
617 | movaps xmm8,XMMWORD[((-184))+rax]
|
---|
618 | movaps xmm9,XMMWORD[((-168))+rax]
|
---|
619 | movaps xmm10,XMMWORD[((-152))+rax]
|
---|
620 | movaps xmm11,XMMWORD[((-136))+rax]
|
---|
621 | movaps xmm12,XMMWORD[((-120))+rax]
|
---|
622 |
|
---|
623 |
|
---|
624 |
|
---|
625 | mov r15,QWORD[((-48))+rax]
|
---|
626 |
|
---|
627 | mov r14,QWORD[((-40))+rax]
|
---|
628 |
|
---|
629 | mov r13,QWORD[((-32))+rax]
|
---|
630 |
|
---|
631 | mov r12,QWORD[((-24))+rax]
|
---|
632 |
|
---|
633 | mov rbp,QWORD[((-16))+rax]
|
---|
634 |
|
---|
635 | mov rbx,QWORD[((-8))+rax]
|
---|
636 |
|
---|
637 | lea rsp,[rax]
|
---|
638 |
|
---|
639 | $L$dec4x_epilogue:
|
---|
640 | mov rdi,QWORD[8+rsp] ;WIN64 epilogue
|
---|
641 | mov rsi,QWORD[16+rsp]
|
---|
642 | DB 0F3h,0C3h ;repret
|
---|
643 |
|
---|
644 | $L$SEH_end_aesni_multi_cbc_decrypt:
|
---|
645 |
|
---|
646 | ALIGN 32
|
---|
647 | aesni_multi_cbc_encrypt_avx:
|
---|
648 | mov QWORD[8+rsp],rdi ;WIN64 prologue
|
---|
649 | mov QWORD[16+rsp],rsi
|
---|
650 | mov rax,rsp
|
---|
651 | $L$SEH_begin_aesni_multi_cbc_encrypt_avx:
|
---|
652 | mov rdi,rcx
|
---|
653 | mov rsi,rdx
|
---|
654 | mov rdx,r8
|
---|
655 |
|
---|
656 |
|
---|
657 |
|
---|
658 | _avx_cbc_enc_shortcut:
|
---|
659 | mov rax,rsp
|
---|
660 |
|
---|
661 | push rbx
|
---|
662 |
|
---|
663 | push rbp
|
---|
664 |
|
---|
665 | push r12
|
---|
666 |
|
---|
667 | push r13
|
---|
668 |
|
---|
669 | push r14
|
---|
670 |
|
---|
671 | push r15
|
---|
672 |
|
---|
673 | lea rsp,[((-168))+rsp]
|
---|
674 | movaps XMMWORD[rsp],xmm6
|
---|
675 | movaps XMMWORD[16+rsp],xmm7
|
---|
676 | movaps XMMWORD[32+rsp],xmm8
|
---|
677 | movaps XMMWORD[48+rsp],xmm9
|
---|
678 | movaps XMMWORD[64+rsp],xmm10
|
---|
679 | movaps XMMWORD[80+rsp],xmm11
|
---|
680 | movaps XMMWORD[(-120)+rax],xmm12
|
---|
681 | movaps XMMWORD[(-104)+rax],xmm13
|
---|
682 | movaps XMMWORD[(-88)+rax],xmm14
|
---|
683 | movaps XMMWORD[(-72)+rax],xmm15
|
---|
684 |
|
---|
685 |
|
---|
686 |
|
---|
687 |
|
---|
688 |
|
---|
689 |
|
---|
690 |
|
---|
691 |
|
---|
692 | sub rsp,192
|
---|
693 | and rsp,-128
|
---|
694 | mov QWORD[16+rsp],rax
|
---|
695 |
|
---|
696 |
|
---|
697 | $L$enc8x_body:
|
---|
698 | vzeroupper
|
---|
699 | vmovdqu xmm15,XMMWORD[rsi]
|
---|
700 | lea rsi,[120+rsi]
|
---|
701 | lea rdi,[160+rdi]
|
---|
702 | shr edx,1
|
---|
703 |
|
---|
704 | $L$enc8x_loop_grande:
|
---|
705 |
|
---|
706 | xor edx,edx
|
---|
707 |
|
---|
708 | mov ecx,DWORD[((-144))+rdi]
|
---|
709 |
|
---|
710 | mov r8,QWORD[((-160))+rdi]
|
---|
711 | cmp ecx,edx
|
---|
712 |
|
---|
713 | mov rbx,QWORD[((-152))+rdi]
|
---|
714 | cmovg edx,ecx
|
---|
715 | test ecx,ecx
|
---|
716 |
|
---|
717 | vmovdqu xmm2,XMMWORD[((-136))+rdi]
|
---|
718 | mov DWORD[32+rsp],ecx
|
---|
719 | cmovle r8,rsp
|
---|
720 | sub rbx,r8
|
---|
721 | mov QWORD[64+rsp],rbx
|
---|
722 |
|
---|
723 | mov ecx,DWORD[((-104))+rdi]
|
---|
724 |
|
---|
725 | mov r9,QWORD[((-120))+rdi]
|
---|
726 | cmp ecx,edx
|
---|
727 |
|
---|
728 | mov rbp,QWORD[((-112))+rdi]
|
---|
729 | cmovg edx,ecx
|
---|
730 | test ecx,ecx
|
---|
731 |
|
---|
732 | vmovdqu xmm3,XMMWORD[((-96))+rdi]
|
---|
733 | mov DWORD[36+rsp],ecx
|
---|
734 | cmovle r9,rsp
|
---|
735 | sub rbp,r9
|
---|
736 | mov QWORD[72+rsp],rbp
|
---|
737 |
|
---|
738 | mov ecx,DWORD[((-64))+rdi]
|
---|
739 |
|
---|
740 | mov r10,QWORD[((-80))+rdi]
|
---|
741 | cmp ecx,edx
|
---|
742 |
|
---|
743 | mov rbp,QWORD[((-72))+rdi]
|
---|
744 | cmovg edx,ecx
|
---|
745 | test ecx,ecx
|
---|
746 |
|
---|
747 | vmovdqu xmm4,XMMWORD[((-56))+rdi]
|
---|
748 | mov DWORD[40+rsp],ecx
|
---|
749 | cmovle r10,rsp
|
---|
750 | sub rbp,r10
|
---|
751 | mov QWORD[80+rsp],rbp
|
---|
752 |
|
---|
753 | mov ecx,DWORD[((-24))+rdi]
|
---|
754 |
|
---|
755 | mov r11,QWORD[((-40))+rdi]
|
---|
756 | cmp ecx,edx
|
---|
757 |
|
---|
758 | mov rbp,QWORD[((-32))+rdi]
|
---|
759 | cmovg edx,ecx
|
---|
760 | test ecx,ecx
|
---|
761 |
|
---|
762 | vmovdqu xmm5,XMMWORD[((-16))+rdi]
|
---|
763 | mov DWORD[44+rsp],ecx
|
---|
764 | cmovle r11,rsp
|
---|
765 | sub rbp,r11
|
---|
766 | mov QWORD[88+rsp],rbp
|
---|
767 |
|
---|
768 | mov ecx,DWORD[16+rdi]
|
---|
769 |
|
---|
770 | mov r12,QWORD[rdi]
|
---|
771 | cmp ecx,edx
|
---|
772 |
|
---|
773 | mov rbp,QWORD[8+rdi]
|
---|
774 | cmovg edx,ecx
|
---|
775 | test ecx,ecx
|
---|
776 |
|
---|
777 | vmovdqu xmm6,XMMWORD[24+rdi]
|
---|
778 | mov DWORD[48+rsp],ecx
|
---|
779 | cmovle r12,rsp
|
---|
780 | sub rbp,r12
|
---|
781 | mov QWORD[96+rsp],rbp
|
---|
782 |
|
---|
783 | mov ecx,DWORD[56+rdi]
|
---|
784 |
|
---|
785 | mov r13,QWORD[40+rdi]
|
---|
786 | cmp ecx,edx
|
---|
787 |
|
---|
788 | mov rbp,QWORD[48+rdi]
|
---|
789 | cmovg edx,ecx
|
---|
790 | test ecx,ecx
|
---|
791 |
|
---|
792 | vmovdqu xmm7,XMMWORD[64+rdi]
|
---|
793 | mov DWORD[52+rsp],ecx
|
---|
794 | cmovle r13,rsp
|
---|
795 | sub rbp,r13
|
---|
796 | mov QWORD[104+rsp],rbp
|
---|
797 |
|
---|
798 | mov ecx,DWORD[96+rdi]
|
---|
799 |
|
---|
800 | mov r14,QWORD[80+rdi]
|
---|
801 | cmp ecx,edx
|
---|
802 |
|
---|
803 | mov rbp,QWORD[88+rdi]
|
---|
804 | cmovg edx,ecx
|
---|
805 | test ecx,ecx
|
---|
806 |
|
---|
807 | vmovdqu xmm8,XMMWORD[104+rdi]
|
---|
808 | mov DWORD[56+rsp],ecx
|
---|
809 | cmovle r14,rsp
|
---|
810 | sub rbp,r14
|
---|
811 | mov QWORD[112+rsp],rbp
|
---|
812 |
|
---|
813 | mov ecx,DWORD[136+rdi]
|
---|
814 |
|
---|
815 | mov r15,QWORD[120+rdi]
|
---|
816 | cmp ecx,edx
|
---|
817 |
|
---|
818 | mov rbp,QWORD[128+rdi]
|
---|
819 | cmovg edx,ecx
|
---|
820 | test ecx,ecx
|
---|
821 |
|
---|
822 | vmovdqu xmm9,XMMWORD[144+rdi]
|
---|
823 | mov DWORD[60+rsp],ecx
|
---|
824 | cmovle r15,rsp
|
---|
825 | sub rbp,r15
|
---|
826 | mov QWORD[120+rsp],rbp
|
---|
827 | test edx,edx
|
---|
828 | jz NEAR $L$enc8x_done
|
---|
829 |
|
---|
830 | vmovups xmm1,XMMWORD[((16-120))+rsi]
|
---|
831 | vmovups xmm0,XMMWORD[((32-120))+rsi]
|
---|
832 | mov eax,DWORD[((240-120))+rsi]
|
---|
833 |
|
---|
834 | vpxor xmm10,xmm15,XMMWORD[r8]
|
---|
835 | lea rbp,[128+rsp]
|
---|
836 | vpxor xmm11,xmm15,XMMWORD[r9]
|
---|
837 | vpxor xmm12,xmm15,XMMWORD[r10]
|
---|
838 | vpxor xmm13,xmm15,XMMWORD[r11]
|
---|
839 | vpxor xmm2,xmm2,xmm10
|
---|
840 | vpxor xmm10,xmm15,XMMWORD[r12]
|
---|
841 | vpxor xmm3,xmm3,xmm11
|
---|
842 | vpxor xmm11,xmm15,XMMWORD[r13]
|
---|
843 | vpxor xmm4,xmm4,xmm12
|
---|
844 | vpxor xmm12,xmm15,XMMWORD[r14]
|
---|
845 | vpxor xmm5,xmm5,xmm13
|
---|
846 | vpxor xmm13,xmm15,XMMWORD[r15]
|
---|
847 | vpxor xmm6,xmm6,xmm10
|
---|
848 | mov ecx,1
|
---|
849 | vpxor xmm7,xmm7,xmm11
|
---|
850 | vpxor xmm8,xmm8,xmm12
|
---|
851 | vpxor xmm9,xmm9,xmm13
|
---|
852 | jmp NEAR $L$oop_enc8x
|
---|
853 |
|
---|
854 | ALIGN 32
|
---|
855 | $L$oop_enc8x:
|
---|
856 | vaesenc xmm2,xmm2,xmm1
|
---|
857 | cmp ecx,DWORD[((32+0))+rsp]
|
---|
858 | vaesenc xmm3,xmm3,xmm1
|
---|
859 | prefetcht0 [31+r8]
|
---|
860 | vaesenc xmm4,xmm4,xmm1
|
---|
861 | vaesenc xmm5,xmm5,xmm1
|
---|
862 | lea rbx,[rbx*1+r8]
|
---|
863 | cmovge r8,rsp
|
---|
864 | vaesenc xmm6,xmm6,xmm1
|
---|
865 | cmovg rbx,rsp
|
---|
866 | vaesenc xmm7,xmm7,xmm1
|
---|
867 | sub rbx,r8
|
---|
868 | vaesenc xmm8,xmm8,xmm1
|
---|
869 | vpxor xmm10,xmm15,XMMWORD[16+r8]
|
---|
870 | mov QWORD[((64+0))+rsp],rbx
|
---|
871 | vaesenc xmm9,xmm9,xmm1
|
---|
872 | vmovups xmm1,XMMWORD[((-72))+rsi]
|
---|
873 | lea r8,[16+rbx*1+r8]
|
---|
874 | vmovdqu XMMWORD[rbp],xmm10
|
---|
875 | vaesenc xmm2,xmm2,xmm0
|
---|
876 | cmp ecx,DWORD[((32+4))+rsp]
|
---|
877 | mov rbx,QWORD[((64+8))+rsp]
|
---|
878 | vaesenc xmm3,xmm3,xmm0
|
---|
879 | prefetcht0 [31+r9]
|
---|
880 | vaesenc xmm4,xmm4,xmm0
|
---|
881 | vaesenc xmm5,xmm5,xmm0
|
---|
882 | lea rbx,[rbx*1+r9]
|
---|
883 | cmovge r9,rsp
|
---|
884 | vaesenc xmm6,xmm6,xmm0
|
---|
885 | cmovg rbx,rsp
|
---|
886 | vaesenc xmm7,xmm7,xmm0
|
---|
887 | sub rbx,r9
|
---|
888 | vaesenc xmm8,xmm8,xmm0
|
---|
889 | vpxor xmm11,xmm15,XMMWORD[16+r9]
|
---|
890 | mov QWORD[((64+8))+rsp],rbx
|
---|
891 | vaesenc xmm9,xmm9,xmm0
|
---|
892 | vmovups xmm0,XMMWORD[((-56))+rsi]
|
---|
893 | lea r9,[16+rbx*1+r9]
|
---|
894 | vmovdqu XMMWORD[16+rbp],xmm11
|
---|
895 | vaesenc xmm2,xmm2,xmm1
|
---|
896 | cmp ecx,DWORD[((32+8))+rsp]
|
---|
897 | mov rbx,QWORD[((64+16))+rsp]
|
---|
898 | vaesenc xmm3,xmm3,xmm1
|
---|
899 | prefetcht0 [31+r10]
|
---|
900 | vaesenc xmm4,xmm4,xmm1
|
---|
901 | prefetcht0 [15+r8]
|
---|
902 | vaesenc xmm5,xmm5,xmm1
|
---|
903 | lea rbx,[rbx*1+r10]
|
---|
904 | cmovge r10,rsp
|
---|
905 | vaesenc xmm6,xmm6,xmm1
|
---|
906 | cmovg rbx,rsp
|
---|
907 | vaesenc xmm7,xmm7,xmm1
|
---|
908 | sub rbx,r10
|
---|
909 | vaesenc xmm8,xmm8,xmm1
|
---|
910 | vpxor xmm12,xmm15,XMMWORD[16+r10]
|
---|
911 | mov QWORD[((64+16))+rsp],rbx
|
---|
912 | vaesenc xmm9,xmm9,xmm1
|
---|
913 | vmovups xmm1,XMMWORD[((-40))+rsi]
|
---|
914 | lea r10,[16+rbx*1+r10]
|
---|
915 | vmovdqu XMMWORD[32+rbp],xmm12
|
---|
916 | vaesenc xmm2,xmm2,xmm0
|
---|
917 | cmp ecx,DWORD[((32+12))+rsp]
|
---|
918 | mov rbx,QWORD[((64+24))+rsp]
|
---|
919 | vaesenc xmm3,xmm3,xmm0
|
---|
920 | prefetcht0 [31+r11]
|
---|
921 | vaesenc xmm4,xmm4,xmm0
|
---|
922 | prefetcht0 [15+r9]
|
---|
923 | vaesenc xmm5,xmm5,xmm0
|
---|
924 | lea rbx,[rbx*1+r11]
|
---|
925 | cmovge r11,rsp
|
---|
926 | vaesenc xmm6,xmm6,xmm0
|
---|
927 | cmovg rbx,rsp
|
---|
928 | vaesenc xmm7,xmm7,xmm0
|
---|
929 | sub rbx,r11
|
---|
930 | vaesenc xmm8,xmm8,xmm0
|
---|
931 | vpxor xmm13,xmm15,XMMWORD[16+r11]
|
---|
932 | mov QWORD[((64+24))+rsp],rbx
|
---|
933 | vaesenc xmm9,xmm9,xmm0
|
---|
934 | vmovups xmm0,XMMWORD[((-24))+rsi]
|
---|
935 | lea r11,[16+rbx*1+r11]
|
---|
936 | vmovdqu XMMWORD[48+rbp],xmm13
|
---|
937 | vaesenc xmm2,xmm2,xmm1
|
---|
938 | cmp ecx,DWORD[((32+16))+rsp]
|
---|
939 | mov rbx,QWORD[((64+32))+rsp]
|
---|
940 | vaesenc xmm3,xmm3,xmm1
|
---|
941 | prefetcht0 [31+r12]
|
---|
942 | vaesenc xmm4,xmm4,xmm1
|
---|
943 | prefetcht0 [15+r10]
|
---|
944 | vaesenc xmm5,xmm5,xmm1
|
---|
945 | lea rbx,[rbx*1+r12]
|
---|
946 | cmovge r12,rsp
|
---|
947 | vaesenc xmm6,xmm6,xmm1
|
---|
948 | cmovg rbx,rsp
|
---|
949 | vaesenc xmm7,xmm7,xmm1
|
---|
950 | sub rbx,r12
|
---|
951 | vaesenc xmm8,xmm8,xmm1
|
---|
952 | vpxor xmm10,xmm15,XMMWORD[16+r12]
|
---|
953 | mov QWORD[((64+32))+rsp],rbx
|
---|
954 | vaesenc xmm9,xmm9,xmm1
|
---|
955 | vmovups xmm1,XMMWORD[((-8))+rsi]
|
---|
956 | lea r12,[16+rbx*1+r12]
|
---|
957 | vaesenc xmm2,xmm2,xmm0
|
---|
958 | cmp ecx,DWORD[((32+20))+rsp]
|
---|
959 | mov rbx,QWORD[((64+40))+rsp]
|
---|
960 | vaesenc xmm3,xmm3,xmm0
|
---|
961 | prefetcht0 [31+r13]
|
---|
962 | vaesenc xmm4,xmm4,xmm0
|
---|
963 | prefetcht0 [15+r11]
|
---|
964 | vaesenc xmm5,xmm5,xmm0
|
---|
965 | lea rbx,[r13*1+rbx]
|
---|
966 | cmovge r13,rsp
|
---|
967 | vaesenc xmm6,xmm6,xmm0
|
---|
968 | cmovg rbx,rsp
|
---|
969 | vaesenc xmm7,xmm7,xmm0
|
---|
970 | sub rbx,r13
|
---|
971 | vaesenc xmm8,xmm8,xmm0
|
---|
972 | vpxor xmm11,xmm15,XMMWORD[16+r13]
|
---|
973 | mov QWORD[((64+40))+rsp],rbx
|
---|
974 | vaesenc xmm9,xmm9,xmm0
|
---|
975 | vmovups xmm0,XMMWORD[8+rsi]
|
---|
976 | lea r13,[16+rbx*1+r13]
|
---|
977 | vaesenc xmm2,xmm2,xmm1
|
---|
978 | cmp ecx,DWORD[((32+24))+rsp]
|
---|
979 | mov rbx,QWORD[((64+48))+rsp]
|
---|
980 | vaesenc xmm3,xmm3,xmm1
|
---|
981 | prefetcht0 [31+r14]
|
---|
982 | vaesenc xmm4,xmm4,xmm1
|
---|
983 | prefetcht0 [15+r12]
|
---|
984 | vaesenc xmm5,xmm5,xmm1
|
---|
985 | lea rbx,[rbx*1+r14]
|
---|
986 | cmovge r14,rsp
|
---|
987 | vaesenc xmm6,xmm6,xmm1
|
---|
988 | cmovg rbx,rsp
|
---|
989 | vaesenc xmm7,xmm7,xmm1
|
---|
990 | sub rbx,r14
|
---|
991 | vaesenc xmm8,xmm8,xmm1
|
---|
992 | vpxor xmm12,xmm15,XMMWORD[16+r14]
|
---|
993 | mov QWORD[((64+48))+rsp],rbx
|
---|
994 | vaesenc xmm9,xmm9,xmm1
|
---|
995 | vmovups xmm1,XMMWORD[24+rsi]
|
---|
996 | lea r14,[16+rbx*1+r14]
|
---|
997 | vaesenc xmm2,xmm2,xmm0
|
---|
998 | cmp ecx,DWORD[((32+28))+rsp]
|
---|
999 | mov rbx,QWORD[((64+56))+rsp]
|
---|
1000 | vaesenc xmm3,xmm3,xmm0
|
---|
1001 | prefetcht0 [31+r15]
|
---|
1002 | vaesenc xmm4,xmm4,xmm0
|
---|
1003 | prefetcht0 [15+r13]
|
---|
1004 | vaesenc xmm5,xmm5,xmm0
|
---|
1005 | lea rbx,[rbx*1+r15]
|
---|
1006 | cmovge r15,rsp
|
---|
1007 | vaesenc xmm6,xmm6,xmm0
|
---|
1008 | cmovg rbx,rsp
|
---|
1009 | vaesenc xmm7,xmm7,xmm0
|
---|
1010 | sub rbx,r15
|
---|
1011 | vaesenc xmm8,xmm8,xmm0
|
---|
1012 | vpxor xmm13,xmm15,XMMWORD[16+r15]
|
---|
1013 | mov QWORD[((64+56))+rsp],rbx
|
---|
1014 | vaesenc xmm9,xmm9,xmm0
|
---|
1015 | vmovups xmm0,XMMWORD[40+rsi]
|
---|
1016 | lea r15,[16+rbx*1+r15]
|
---|
1017 | vmovdqu xmm14,XMMWORD[32+rsp]
|
---|
1018 | prefetcht0 [15+r14]
|
---|
1019 | prefetcht0 [15+r15]
|
---|
1020 | cmp eax,11
|
---|
1021 | jb NEAR $L$enc8x_tail
|
---|
1022 |
|
---|
1023 | vaesenc xmm2,xmm2,xmm1
|
---|
1024 | vaesenc xmm3,xmm3,xmm1
|
---|
1025 | vaesenc xmm4,xmm4,xmm1
|
---|
1026 | vaesenc xmm5,xmm5,xmm1
|
---|
1027 | vaesenc xmm6,xmm6,xmm1
|
---|
1028 | vaesenc xmm7,xmm7,xmm1
|
---|
1029 | vaesenc xmm8,xmm8,xmm1
|
---|
1030 | vaesenc xmm9,xmm9,xmm1
|
---|
1031 | vmovups xmm1,XMMWORD[((176-120))+rsi]
|
---|
1032 |
|
---|
1033 | vaesenc xmm2,xmm2,xmm0
|
---|
1034 | vaesenc xmm3,xmm3,xmm0
|
---|
1035 | vaesenc xmm4,xmm4,xmm0
|
---|
1036 | vaesenc xmm5,xmm5,xmm0
|
---|
1037 | vaesenc xmm6,xmm6,xmm0
|
---|
1038 | vaesenc xmm7,xmm7,xmm0
|
---|
1039 | vaesenc xmm8,xmm8,xmm0
|
---|
1040 | vaesenc xmm9,xmm9,xmm0
|
---|
1041 | vmovups xmm0,XMMWORD[((192-120))+rsi]
|
---|
1042 | je NEAR $L$enc8x_tail
|
---|
1043 |
|
---|
1044 | vaesenc xmm2,xmm2,xmm1
|
---|
1045 | vaesenc xmm3,xmm3,xmm1
|
---|
1046 | vaesenc xmm4,xmm4,xmm1
|
---|
1047 | vaesenc xmm5,xmm5,xmm1
|
---|
1048 | vaesenc xmm6,xmm6,xmm1
|
---|
1049 | vaesenc xmm7,xmm7,xmm1
|
---|
1050 | vaesenc xmm8,xmm8,xmm1
|
---|
1051 | vaesenc xmm9,xmm9,xmm1
|
---|
1052 | vmovups xmm1,XMMWORD[((208-120))+rsi]
|
---|
1053 |
|
---|
1054 | vaesenc xmm2,xmm2,xmm0
|
---|
1055 | vaesenc xmm3,xmm3,xmm0
|
---|
1056 | vaesenc xmm4,xmm4,xmm0
|
---|
1057 | vaesenc xmm5,xmm5,xmm0
|
---|
1058 | vaesenc xmm6,xmm6,xmm0
|
---|
1059 | vaesenc xmm7,xmm7,xmm0
|
---|
1060 | vaesenc xmm8,xmm8,xmm0
|
---|
1061 | vaesenc xmm9,xmm9,xmm0
|
---|
1062 | vmovups xmm0,XMMWORD[((224-120))+rsi]
|
---|
1063 |
|
---|
1064 | $L$enc8x_tail:
|
---|
1065 | vaesenc xmm2,xmm2,xmm1
|
---|
1066 | vpxor xmm15,xmm15,xmm15
|
---|
1067 | vaesenc xmm3,xmm3,xmm1
|
---|
1068 | vaesenc xmm4,xmm4,xmm1
|
---|
1069 | vpcmpgtd xmm15,xmm14,xmm15
|
---|
1070 | vaesenc xmm5,xmm5,xmm1
|
---|
1071 | vaesenc xmm6,xmm6,xmm1
|
---|
1072 | vpaddd xmm15,xmm15,xmm14
|
---|
1073 | vmovdqu xmm14,XMMWORD[48+rsp]
|
---|
1074 | vaesenc xmm7,xmm7,xmm1
|
---|
1075 | mov rbx,QWORD[64+rsp]
|
---|
1076 | vaesenc xmm8,xmm8,xmm1
|
---|
1077 | vaesenc xmm9,xmm9,xmm1
|
---|
1078 | vmovups xmm1,XMMWORD[((16-120))+rsi]
|
---|
1079 |
|
---|
1080 | vaesenclast xmm2,xmm2,xmm0
|
---|
1081 | vmovdqa XMMWORD[32+rsp],xmm15
|
---|
1082 | vpxor xmm15,xmm15,xmm15
|
---|
1083 | vaesenclast xmm3,xmm3,xmm0
|
---|
1084 | vaesenclast xmm4,xmm4,xmm0
|
---|
1085 | vpcmpgtd xmm15,xmm14,xmm15
|
---|
1086 | vaesenclast xmm5,xmm5,xmm0
|
---|
1087 | vaesenclast xmm6,xmm6,xmm0
|
---|
1088 | vpaddd xmm14,xmm14,xmm15
|
---|
1089 | vmovdqu xmm15,XMMWORD[((-120))+rsi]
|
---|
1090 | vaesenclast xmm7,xmm7,xmm0
|
---|
1091 | vaesenclast xmm8,xmm8,xmm0
|
---|
1092 | vmovdqa XMMWORD[48+rsp],xmm14
|
---|
1093 | vaesenclast xmm9,xmm9,xmm0
|
---|
1094 | vmovups xmm0,XMMWORD[((32-120))+rsi]
|
---|
1095 |
|
---|
1096 | vmovups XMMWORD[(-16)+r8],xmm2
|
---|
1097 | sub r8,rbx
|
---|
1098 | vpxor xmm2,xmm2,XMMWORD[rbp]
|
---|
1099 | vmovups XMMWORD[(-16)+r9],xmm3
|
---|
1100 | sub r9,QWORD[72+rsp]
|
---|
1101 | vpxor xmm3,xmm3,XMMWORD[16+rbp]
|
---|
1102 | vmovups XMMWORD[(-16)+r10],xmm4
|
---|
1103 | sub r10,QWORD[80+rsp]
|
---|
1104 | vpxor xmm4,xmm4,XMMWORD[32+rbp]
|
---|
1105 | vmovups XMMWORD[(-16)+r11],xmm5
|
---|
1106 | sub r11,QWORD[88+rsp]
|
---|
1107 | vpxor xmm5,xmm5,XMMWORD[48+rbp]
|
---|
1108 | vmovups XMMWORD[(-16)+r12],xmm6
|
---|
1109 | sub r12,QWORD[96+rsp]
|
---|
1110 | vpxor xmm6,xmm6,xmm10
|
---|
1111 | vmovups XMMWORD[(-16)+r13],xmm7
|
---|
1112 | sub r13,QWORD[104+rsp]
|
---|
1113 | vpxor xmm7,xmm7,xmm11
|
---|
1114 | vmovups XMMWORD[(-16)+r14],xmm8
|
---|
1115 | sub r14,QWORD[112+rsp]
|
---|
1116 | vpxor xmm8,xmm8,xmm12
|
---|
1117 | vmovups XMMWORD[(-16)+r15],xmm9
|
---|
1118 | sub r15,QWORD[120+rsp]
|
---|
1119 | vpxor xmm9,xmm9,xmm13
|
---|
1120 |
|
---|
1121 | dec edx
|
---|
1122 | jnz NEAR $L$oop_enc8x
|
---|
1123 |
|
---|
1124 | mov rax,QWORD[16+rsp]
|
---|
1125 |
|
---|
1126 |
|
---|
1127 |
|
---|
1128 |
|
---|
1129 |
|
---|
1130 |
|
---|
1131 | $L$enc8x_done:
|
---|
1132 | vzeroupper
|
---|
1133 | movaps xmm6,XMMWORD[((-216))+rax]
|
---|
1134 | movaps xmm7,XMMWORD[((-200))+rax]
|
---|
1135 | movaps xmm8,XMMWORD[((-184))+rax]
|
---|
1136 | movaps xmm9,XMMWORD[((-168))+rax]
|
---|
1137 | movaps xmm10,XMMWORD[((-152))+rax]
|
---|
1138 | movaps xmm11,XMMWORD[((-136))+rax]
|
---|
1139 | movaps xmm12,XMMWORD[((-120))+rax]
|
---|
1140 | movaps xmm13,XMMWORD[((-104))+rax]
|
---|
1141 | movaps xmm14,XMMWORD[((-88))+rax]
|
---|
1142 | movaps xmm15,XMMWORD[((-72))+rax]
|
---|
1143 | mov r15,QWORD[((-48))+rax]
|
---|
1144 |
|
---|
1145 | mov r14,QWORD[((-40))+rax]
|
---|
1146 |
|
---|
1147 | mov r13,QWORD[((-32))+rax]
|
---|
1148 |
|
---|
1149 | mov r12,QWORD[((-24))+rax]
|
---|
1150 |
|
---|
1151 | mov rbp,QWORD[((-16))+rax]
|
---|
1152 |
|
---|
1153 | mov rbx,QWORD[((-8))+rax]
|
---|
1154 |
|
---|
1155 | lea rsp,[rax]
|
---|
1156 |
|
---|
1157 | $L$enc8x_epilogue:
|
---|
1158 | mov rdi,QWORD[8+rsp] ;WIN64 epilogue
|
---|
1159 | mov rsi,QWORD[16+rsp]
|
---|
1160 | DB 0F3h,0C3h ;repret
|
---|
1161 |
|
---|
1162 | $L$SEH_end_aesni_multi_cbc_encrypt_avx:
|
---|
1163 |
|
---|
1164 |
|
---|
1165 | ALIGN 32
|
---|
1166 | aesni_multi_cbc_decrypt_avx:
|
---|
1167 | mov QWORD[8+rsp],rdi ;WIN64 prologue
|
---|
1168 | mov QWORD[16+rsp],rsi
|
---|
1169 | mov rax,rsp
|
---|
1170 | $L$SEH_begin_aesni_multi_cbc_decrypt_avx:
|
---|
1171 | mov rdi,rcx
|
---|
1172 | mov rsi,rdx
|
---|
1173 | mov rdx,r8
|
---|
1174 |
|
---|
1175 |
|
---|
1176 |
|
---|
1177 | _avx_cbc_dec_shortcut:
|
---|
1178 | mov rax,rsp
|
---|
1179 |
|
---|
1180 | push rbx
|
---|
1181 |
|
---|
1182 | push rbp
|
---|
1183 |
|
---|
1184 | push r12
|
---|
1185 |
|
---|
1186 | push r13
|
---|
1187 |
|
---|
1188 | push r14
|
---|
1189 |
|
---|
1190 | push r15
|
---|
1191 |
|
---|
1192 | lea rsp,[((-168))+rsp]
|
---|
1193 | movaps XMMWORD[rsp],xmm6
|
---|
1194 | movaps XMMWORD[16+rsp],xmm7
|
---|
1195 | movaps XMMWORD[32+rsp],xmm8
|
---|
1196 | movaps XMMWORD[48+rsp],xmm9
|
---|
1197 | movaps XMMWORD[64+rsp],xmm10
|
---|
1198 | movaps XMMWORD[80+rsp],xmm11
|
---|
1199 | movaps XMMWORD[(-120)+rax],xmm12
|
---|
1200 | movaps XMMWORD[(-104)+rax],xmm13
|
---|
1201 | movaps XMMWORD[(-88)+rax],xmm14
|
---|
1202 | movaps XMMWORD[(-72)+rax],xmm15
|
---|
1203 |
|
---|
1204 |
|
---|
1205 |
|
---|
1206 |
|
---|
1207 |
|
---|
1208 |
|
---|
1209 |
|
---|
1210 |
|
---|
1211 |
|
---|
1212 | sub rsp,256
|
---|
1213 | and rsp,-256
|
---|
1214 | sub rsp,192
|
---|
1215 | mov QWORD[16+rsp],rax
|
---|
1216 |
|
---|
1217 |
|
---|
1218 | $L$dec8x_body:
|
---|
1219 | vzeroupper
|
---|
1220 | vmovdqu xmm15,XMMWORD[rsi]
|
---|
1221 | lea rsi,[120+rsi]
|
---|
1222 | lea rdi,[160+rdi]
|
---|
1223 | shr edx,1
|
---|
1224 |
|
---|
1225 | $L$dec8x_loop_grande:
|
---|
1226 |
|
---|
1227 | xor edx,edx
|
---|
1228 |
|
---|
1229 | mov ecx,DWORD[((-144))+rdi]
|
---|
1230 |
|
---|
1231 | mov r8,QWORD[((-160))+rdi]
|
---|
1232 | cmp ecx,edx
|
---|
1233 |
|
---|
1234 | mov rbx,QWORD[((-152))+rdi]
|
---|
1235 | cmovg edx,ecx
|
---|
1236 | test ecx,ecx
|
---|
1237 |
|
---|
1238 | vmovdqu xmm2,XMMWORD[((-136))+rdi]
|
---|
1239 | mov DWORD[32+rsp],ecx
|
---|
1240 | cmovle r8,rsp
|
---|
1241 | sub rbx,r8
|
---|
1242 | mov QWORD[64+rsp],rbx
|
---|
1243 | vmovdqu XMMWORD[192+rsp],xmm2
|
---|
1244 |
|
---|
1245 | mov ecx,DWORD[((-104))+rdi]
|
---|
1246 |
|
---|
1247 | mov r9,QWORD[((-120))+rdi]
|
---|
1248 | cmp ecx,edx
|
---|
1249 |
|
---|
1250 | mov rbp,QWORD[((-112))+rdi]
|
---|
1251 | cmovg edx,ecx
|
---|
1252 | test ecx,ecx
|
---|
1253 |
|
---|
1254 | vmovdqu xmm3,XMMWORD[((-96))+rdi]
|
---|
1255 | mov DWORD[36+rsp],ecx
|
---|
1256 | cmovle r9,rsp
|
---|
1257 | sub rbp,r9
|
---|
1258 | mov QWORD[72+rsp],rbp
|
---|
1259 | vmovdqu XMMWORD[208+rsp],xmm3
|
---|
1260 |
|
---|
1261 | mov ecx,DWORD[((-64))+rdi]
|
---|
1262 |
|
---|
1263 | mov r10,QWORD[((-80))+rdi]
|
---|
1264 | cmp ecx,edx
|
---|
1265 |
|
---|
1266 | mov rbp,QWORD[((-72))+rdi]
|
---|
1267 | cmovg edx,ecx
|
---|
1268 | test ecx,ecx
|
---|
1269 |
|
---|
1270 | vmovdqu xmm4,XMMWORD[((-56))+rdi]
|
---|
1271 | mov DWORD[40+rsp],ecx
|
---|
1272 | cmovle r10,rsp
|
---|
1273 | sub rbp,r10
|
---|
1274 | mov QWORD[80+rsp],rbp
|
---|
1275 | vmovdqu XMMWORD[224+rsp],xmm4
|
---|
1276 |
|
---|
1277 | mov ecx,DWORD[((-24))+rdi]
|
---|
1278 |
|
---|
1279 | mov r11,QWORD[((-40))+rdi]
|
---|
1280 | cmp ecx,edx
|
---|
1281 |
|
---|
1282 | mov rbp,QWORD[((-32))+rdi]
|
---|
1283 | cmovg edx,ecx
|
---|
1284 | test ecx,ecx
|
---|
1285 |
|
---|
1286 | vmovdqu xmm5,XMMWORD[((-16))+rdi]
|
---|
1287 | mov DWORD[44+rsp],ecx
|
---|
1288 | cmovle r11,rsp
|
---|
1289 | sub rbp,r11
|
---|
1290 | mov QWORD[88+rsp],rbp
|
---|
1291 | vmovdqu XMMWORD[240+rsp],xmm5
|
---|
1292 |
|
---|
1293 | mov ecx,DWORD[16+rdi]
|
---|
1294 |
|
---|
1295 | mov r12,QWORD[rdi]
|
---|
1296 | cmp ecx,edx
|
---|
1297 |
|
---|
1298 | mov rbp,QWORD[8+rdi]
|
---|
1299 | cmovg edx,ecx
|
---|
1300 | test ecx,ecx
|
---|
1301 |
|
---|
1302 | vmovdqu xmm6,XMMWORD[24+rdi]
|
---|
1303 | mov DWORD[48+rsp],ecx
|
---|
1304 | cmovle r12,rsp
|
---|
1305 | sub rbp,r12
|
---|
1306 | mov QWORD[96+rsp],rbp
|
---|
1307 | vmovdqu XMMWORD[256+rsp],xmm6
|
---|
1308 |
|
---|
1309 | mov ecx,DWORD[56+rdi]
|
---|
1310 |
|
---|
1311 | mov r13,QWORD[40+rdi]
|
---|
1312 | cmp ecx,edx
|
---|
1313 |
|
---|
1314 | mov rbp,QWORD[48+rdi]
|
---|
1315 | cmovg edx,ecx
|
---|
1316 | test ecx,ecx
|
---|
1317 |
|
---|
1318 | vmovdqu xmm7,XMMWORD[64+rdi]
|
---|
1319 | mov DWORD[52+rsp],ecx
|
---|
1320 | cmovle r13,rsp
|
---|
1321 | sub rbp,r13
|
---|
1322 | mov QWORD[104+rsp],rbp
|
---|
1323 | vmovdqu XMMWORD[272+rsp],xmm7
|
---|
1324 |
|
---|
1325 | mov ecx,DWORD[96+rdi]
|
---|
1326 |
|
---|
1327 | mov r14,QWORD[80+rdi]
|
---|
1328 | cmp ecx,edx
|
---|
1329 |
|
---|
1330 | mov rbp,QWORD[88+rdi]
|
---|
1331 | cmovg edx,ecx
|
---|
1332 | test ecx,ecx
|
---|
1333 |
|
---|
1334 | vmovdqu xmm8,XMMWORD[104+rdi]
|
---|
1335 | mov DWORD[56+rsp],ecx
|
---|
1336 | cmovle r14,rsp
|
---|
1337 | sub rbp,r14
|
---|
1338 | mov QWORD[112+rsp],rbp
|
---|
1339 | vmovdqu XMMWORD[288+rsp],xmm8
|
---|
1340 |
|
---|
1341 | mov ecx,DWORD[136+rdi]
|
---|
1342 |
|
---|
1343 | mov r15,QWORD[120+rdi]
|
---|
1344 | cmp ecx,edx
|
---|
1345 |
|
---|
1346 | mov rbp,QWORD[128+rdi]
|
---|
1347 | cmovg edx,ecx
|
---|
1348 | test ecx,ecx
|
---|
1349 |
|
---|
1350 | vmovdqu xmm9,XMMWORD[144+rdi]
|
---|
1351 | mov DWORD[60+rsp],ecx
|
---|
1352 | cmovle r15,rsp
|
---|
1353 | sub rbp,r15
|
---|
1354 | mov QWORD[120+rsp],rbp
|
---|
1355 | vmovdqu XMMWORD[304+rsp],xmm9
|
---|
1356 | test edx,edx
|
---|
1357 | jz NEAR $L$dec8x_done
|
---|
1358 |
|
---|
1359 | vmovups xmm1,XMMWORD[((16-120))+rsi]
|
---|
1360 | vmovups xmm0,XMMWORD[((32-120))+rsi]
|
---|
1361 | mov eax,DWORD[((240-120))+rsi]
|
---|
1362 | lea rbp,[((192+128))+rsp]
|
---|
1363 |
|
---|
1364 | vmovdqu xmm2,XMMWORD[r8]
|
---|
1365 | vmovdqu xmm3,XMMWORD[r9]
|
---|
1366 | vmovdqu xmm4,XMMWORD[r10]
|
---|
1367 | vmovdqu xmm5,XMMWORD[r11]
|
---|
1368 | vmovdqu xmm6,XMMWORD[r12]
|
---|
1369 | vmovdqu xmm7,XMMWORD[r13]
|
---|
1370 | vmovdqu xmm8,XMMWORD[r14]
|
---|
1371 | vmovdqu xmm9,XMMWORD[r15]
|
---|
1372 | vmovdqu XMMWORD[rbp],xmm2
|
---|
1373 | vpxor xmm2,xmm2,xmm15
|
---|
1374 | vmovdqu XMMWORD[16+rbp],xmm3
|
---|
1375 | vpxor xmm3,xmm3,xmm15
|
---|
1376 | vmovdqu XMMWORD[32+rbp],xmm4
|
---|
1377 | vpxor xmm4,xmm4,xmm15
|
---|
1378 | vmovdqu XMMWORD[48+rbp],xmm5
|
---|
1379 | vpxor xmm5,xmm5,xmm15
|
---|
1380 | vmovdqu XMMWORD[64+rbp],xmm6
|
---|
1381 | vpxor xmm6,xmm6,xmm15
|
---|
1382 | vmovdqu XMMWORD[80+rbp],xmm7
|
---|
1383 | vpxor xmm7,xmm7,xmm15
|
---|
1384 | vmovdqu XMMWORD[96+rbp],xmm8
|
---|
1385 | vpxor xmm8,xmm8,xmm15
|
---|
1386 | vmovdqu XMMWORD[112+rbp],xmm9
|
---|
1387 | vpxor xmm9,xmm9,xmm15
|
---|
1388 | xor rbp,0x80
|
---|
1389 | mov ecx,1
|
---|
1390 | jmp NEAR $L$oop_dec8x
|
---|
1391 |
|
---|
1392 | ALIGN 32
|
---|
1393 | $L$oop_dec8x:
|
---|
1394 | vaesdec xmm2,xmm2,xmm1
|
---|
1395 | cmp ecx,DWORD[((32+0))+rsp]
|
---|
1396 | vaesdec xmm3,xmm3,xmm1
|
---|
1397 | prefetcht0 [31+r8]
|
---|
1398 | vaesdec xmm4,xmm4,xmm1
|
---|
1399 | vaesdec xmm5,xmm5,xmm1
|
---|
1400 | lea rbx,[rbx*1+r8]
|
---|
1401 | cmovge r8,rsp
|
---|
1402 | vaesdec xmm6,xmm6,xmm1
|
---|
1403 | cmovg rbx,rsp
|
---|
1404 | vaesdec xmm7,xmm7,xmm1
|
---|
1405 | sub rbx,r8
|
---|
1406 | vaesdec xmm8,xmm8,xmm1
|
---|
1407 | vmovdqu xmm10,XMMWORD[16+r8]
|
---|
1408 | mov QWORD[((64+0))+rsp],rbx
|
---|
1409 | vaesdec xmm9,xmm9,xmm1
|
---|
1410 | vmovups xmm1,XMMWORD[((-72))+rsi]
|
---|
1411 | lea r8,[16+rbx*1+r8]
|
---|
1412 | vmovdqu XMMWORD[128+rsp],xmm10
|
---|
1413 | vaesdec xmm2,xmm2,xmm0
|
---|
1414 | cmp ecx,DWORD[((32+4))+rsp]
|
---|
1415 | mov rbx,QWORD[((64+8))+rsp]
|
---|
1416 | vaesdec xmm3,xmm3,xmm0
|
---|
1417 | prefetcht0 [31+r9]
|
---|
1418 | vaesdec xmm4,xmm4,xmm0
|
---|
1419 | vaesdec xmm5,xmm5,xmm0
|
---|
1420 | lea rbx,[rbx*1+r9]
|
---|
1421 | cmovge r9,rsp
|
---|
1422 | vaesdec xmm6,xmm6,xmm0
|
---|
1423 | cmovg rbx,rsp
|
---|
1424 | vaesdec xmm7,xmm7,xmm0
|
---|
1425 | sub rbx,r9
|
---|
1426 | vaesdec xmm8,xmm8,xmm0
|
---|
1427 | vmovdqu xmm11,XMMWORD[16+r9]
|
---|
1428 | mov QWORD[((64+8))+rsp],rbx
|
---|
1429 | vaesdec xmm9,xmm9,xmm0
|
---|
1430 | vmovups xmm0,XMMWORD[((-56))+rsi]
|
---|
1431 | lea r9,[16+rbx*1+r9]
|
---|
1432 | vmovdqu XMMWORD[144+rsp],xmm11
|
---|
1433 | vaesdec xmm2,xmm2,xmm1
|
---|
1434 | cmp ecx,DWORD[((32+8))+rsp]
|
---|
1435 | mov rbx,QWORD[((64+16))+rsp]
|
---|
1436 | vaesdec xmm3,xmm3,xmm1
|
---|
1437 | prefetcht0 [31+r10]
|
---|
1438 | vaesdec xmm4,xmm4,xmm1
|
---|
1439 | prefetcht0 [15+r8]
|
---|
1440 | vaesdec xmm5,xmm5,xmm1
|
---|
1441 | lea rbx,[rbx*1+r10]
|
---|
1442 | cmovge r10,rsp
|
---|
1443 | vaesdec xmm6,xmm6,xmm1
|
---|
1444 | cmovg rbx,rsp
|
---|
1445 | vaesdec xmm7,xmm7,xmm1
|
---|
1446 | sub rbx,r10
|
---|
1447 | vaesdec xmm8,xmm8,xmm1
|
---|
1448 | vmovdqu xmm12,XMMWORD[16+r10]
|
---|
1449 | mov QWORD[((64+16))+rsp],rbx
|
---|
1450 | vaesdec xmm9,xmm9,xmm1
|
---|
1451 | vmovups xmm1,XMMWORD[((-40))+rsi]
|
---|
1452 | lea r10,[16+rbx*1+r10]
|
---|
1453 | vmovdqu XMMWORD[160+rsp],xmm12
|
---|
1454 | vaesdec xmm2,xmm2,xmm0
|
---|
1455 | cmp ecx,DWORD[((32+12))+rsp]
|
---|
1456 | mov rbx,QWORD[((64+24))+rsp]
|
---|
1457 | vaesdec xmm3,xmm3,xmm0
|
---|
1458 | prefetcht0 [31+r11]
|
---|
1459 | vaesdec xmm4,xmm4,xmm0
|
---|
1460 | prefetcht0 [15+r9]
|
---|
1461 | vaesdec xmm5,xmm5,xmm0
|
---|
1462 | lea rbx,[rbx*1+r11]
|
---|
1463 | cmovge r11,rsp
|
---|
1464 | vaesdec xmm6,xmm6,xmm0
|
---|
1465 | cmovg rbx,rsp
|
---|
1466 | vaesdec xmm7,xmm7,xmm0
|
---|
1467 | sub rbx,r11
|
---|
1468 | vaesdec xmm8,xmm8,xmm0
|
---|
1469 | vmovdqu xmm13,XMMWORD[16+r11]
|
---|
1470 | mov QWORD[((64+24))+rsp],rbx
|
---|
1471 | vaesdec xmm9,xmm9,xmm0
|
---|
1472 | vmovups xmm0,XMMWORD[((-24))+rsi]
|
---|
1473 | lea r11,[16+rbx*1+r11]
|
---|
1474 | vmovdqu XMMWORD[176+rsp],xmm13
|
---|
1475 | vaesdec xmm2,xmm2,xmm1
|
---|
1476 | cmp ecx,DWORD[((32+16))+rsp]
|
---|
1477 | mov rbx,QWORD[((64+32))+rsp]
|
---|
1478 | vaesdec xmm3,xmm3,xmm1
|
---|
1479 | prefetcht0 [31+r12]
|
---|
1480 | vaesdec xmm4,xmm4,xmm1
|
---|
1481 | prefetcht0 [15+r10]
|
---|
1482 | vaesdec xmm5,xmm5,xmm1
|
---|
1483 | lea rbx,[rbx*1+r12]
|
---|
1484 | cmovge r12,rsp
|
---|
1485 | vaesdec xmm6,xmm6,xmm1
|
---|
1486 | cmovg rbx,rsp
|
---|
1487 | vaesdec xmm7,xmm7,xmm1
|
---|
1488 | sub rbx,r12
|
---|
1489 | vaesdec xmm8,xmm8,xmm1
|
---|
1490 | vmovdqu xmm10,XMMWORD[16+r12]
|
---|
1491 | mov QWORD[((64+32))+rsp],rbx
|
---|
1492 | vaesdec xmm9,xmm9,xmm1
|
---|
1493 | vmovups xmm1,XMMWORD[((-8))+rsi]
|
---|
1494 | lea r12,[16+rbx*1+r12]
|
---|
1495 | vaesdec xmm2,xmm2,xmm0
|
---|
1496 | cmp ecx,DWORD[((32+20))+rsp]
|
---|
1497 | mov rbx,QWORD[((64+40))+rsp]
|
---|
1498 | vaesdec xmm3,xmm3,xmm0
|
---|
1499 | prefetcht0 [31+r13]
|
---|
1500 | vaesdec xmm4,xmm4,xmm0
|
---|
1501 | prefetcht0 [15+r11]
|
---|
1502 | vaesdec xmm5,xmm5,xmm0
|
---|
1503 | lea rbx,[r13*1+rbx]
|
---|
1504 | cmovge r13,rsp
|
---|
1505 | vaesdec xmm6,xmm6,xmm0
|
---|
1506 | cmovg rbx,rsp
|
---|
1507 | vaesdec xmm7,xmm7,xmm0
|
---|
1508 | sub rbx,r13
|
---|
1509 | vaesdec xmm8,xmm8,xmm0
|
---|
1510 | vmovdqu xmm11,XMMWORD[16+r13]
|
---|
1511 | mov QWORD[((64+40))+rsp],rbx
|
---|
1512 | vaesdec xmm9,xmm9,xmm0
|
---|
1513 | vmovups xmm0,XMMWORD[8+rsi]
|
---|
1514 | lea r13,[16+rbx*1+r13]
|
---|
1515 | vaesdec xmm2,xmm2,xmm1
|
---|
1516 | cmp ecx,DWORD[((32+24))+rsp]
|
---|
1517 | mov rbx,QWORD[((64+48))+rsp]
|
---|
1518 | vaesdec xmm3,xmm3,xmm1
|
---|
1519 | prefetcht0 [31+r14]
|
---|
1520 | vaesdec xmm4,xmm4,xmm1
|
---|
1521 | prefetcht0 [15+r12]
|
---|
1522 | vaesdec xmm5,xmm5,xmm1
|
---|
1523 | lea rbx,[rbx*1+r14]
|
---|
1524 | cmovge r14,rsp
|
---|
1525 | vaesdec xmm6,xmm6,xmm1
|
---|
1526 | cmovg rbx,rsp
|
---|
1527 | vaesdec xmm7,xmm7,xmm1
|
---|
1528 | sub rbx,r14
|
---|
1529 | vaesdec xmm8,xmm8,xmm1
|
---|
1530 | vmovdqu xmm12,XMMWORD[16+r14]
|
---|
1531 | mov QWORD[((64+48))+rsp],rbx
|
---|
1532 | vaesdec xmm9,xmm9,xmm1
|
---|
1533 | vmovups xmm1,XMMWORD[24+rsi]
|
---|
1534 | lea r14,[16+rbx*1+r14]
|
---|
1535 | vaesdec xmm2,xmm2,xmm0
|
---|
1536 | cmp ecx,DWORD[((32+28))+rsp]
|
---|
1537 | mov rbx,QWORD[((64+56))+rsp]
|
---|
1538 | vaesdec xmm3,xmm3,xmm0
|
---|
1539 | prefetcht0 [31+r15]
|
---|
1540 | vaesdec xmm4,xmm4,xmm0
|
---|
1541 | prefetcht0 [15+r13]
|
---|
1542 | vaesdec xmm5,xmm5,xmm0
|
---|
1543 | lea rbx,[rbx*1+r15]
|
---|
1544 | cmovge r15,rsp
|
---|
1545 | vaesdec xmm6,xmm6,xmm0
|
---|
1546 | cmovg rbx,rsp
|
---|
1547 | vaesdec xmm7,xmm7,xmm0
|
---|
1548 | sub rbx,r15
|
---|
1549 | vaesdec xmm8,xmm8,xmm0
|
---|
1550 | vmovdqu xmm13,XMMWORD[16+r15]
|
---|
1551 | mov QWORD[((64+56))+rsp],rbx
|
---|
1552 | vaesdec xmm9,xmm9,xmm0
|
---|
1553 | vmovups xmm0,XMMWORD[40+rsi]
|
---|
1554 | lea r15,[16+rbx*1+r15]
|
---|
1555 | vmovdqu xmm14,XMMWORD[32+rsp]
|
---|
1556 | prefetcht0 [15+r14]
|
---|
1557 | prefetcht0 [15+r15]
|
---|
1558 | cmp eax,11
|
---|
1559 | jb NEAR $L$dec8x_tail
|
---|
1560 |
|
---|
1561 | vaesdec xmm2,xmm2,xmm1
|
---|
1562 | vaesdec xmm3,xmm3,xmm1
|
---|
1563 | vaesdec xmm4,xmm4,xmm1
|
---|
1564 | vaesdec xmm5,xmm5,xmm1
|
---|
1565 | vaesdec xmm6,xmm6,xmm1
|
---|
1566 | vaesdec xmm7,xmm7,xmm1
|
---|
1567 | vaesdec xmm8,xmm8,xmm1
|
---|
1568 | vaesdec xmm9,xmm9,xmm1
|
---|
1569 | vmovups xmm1,XMMWORD[((176-120))+rsi]
|
---|
1570 |
|
---|
1571 | vaesdec xmm2,xmm2,xmm0
|
---|
1572 | vaesdec xmm3,xmm3,xmm0
|
---|
1573 | vaesdec xmm4,xmm4,xmm0
|
---|
1574 | vaesdec xmm5,xmm5,xmm0
|
---|
1575 | vaesdec xmm6,xmm6,xmm0
|
---|
1576 | vaesdec xmm7,xmm7,xmm0
|
---|
1577 | vaesdec xmm8,xmm8,xmm0
|
---|
1578 | vaesdec xmm9,xmm9,xmm0
|
---|
1579 | vmovups xmm0,XMMWORD[((192-120))+rsi]
|
---|
1580 | je NEAR $L$dec8x_tail
|
---|
1581 |
|
---|
1582 | vaesdec xmm2,xmm2,xmm1
|
---|
1583 | vaesdec xmm3,xmm3,xmm1
|
---|
1584 | vaesdec xmm4,xmm4,xmm1
|
---|
1585 | vaesdec xmm5,xmm5,xmm1
|
---|
1586 | vaesdec xmm6,xmm6,xmm1
|
---|
1587 | vaesdec xmm7,xmm7,xmm1
|
---|
1588 | vaesdec xmm8,xmm8,xmm1
|
---|
1589 | vaesdec xmm9,xmm9,xmm1
|
---|
1590 | vmovups xmm1,XMMWORD[((208-120))+rsi]
|
---|
1591 |
|
---|
1592 | vaesdec xmm2,xmm2,xmm0
|
---|
1593 | vaesdec xmm3,xmm3,xmm0
|
---|
1594 | vaesdec xmm4,xmm4,xmm0
|
---|
1595 | vaesdec xmm5,xmm5,xmm0
|
---|
1596 | vaesdec xmm6,xmm6,xmm0
|
---|
1597 | vaesdec xmm7,xmm7,xmm0
|
---|
1598 | vaesdec xmm8,xmm8,xmm0
|
---|
1599 | vaesdec xmm9,xmm9,xmm0
|
---|
1600 | vmovups xmm0,XMMWORD[((224-120))+rsi]
|
---|
1601 |
|
---|
1602 | $L$dec8x_tail:
|
---|
1603 | vaesdec xmm2,xmm2,xmm1
|
---|
1604 | vpxor xmm15,xmm15,xmm15
|
---|
1605 | vaesdec xmm3,xmm3,xmm1
|
---|
1606 | vaesdec xmm4,xmm4,xmm1
|
---|
1607 | vpcmpgtd xmm15,xmm14,xmm15
|
---|
1608 | vaesdec xmm5,xmm5,xmm1
|
---|
1609 | vaesdec xmm6,xmm6,xmm1
|
---|
1610 | vpaddd xmm15,xmm15,xmm14
|
---|
1611 | vmovdqu xmm14,XMMWORD[48+rsp]
|
---|
1612 | vaesdec xmm7,xmm7,xmm1
|
---|
1613 | mov rbx,QWORD[64+rsp]
|
---|
1614 | vaesdec xmm8,xmm8,xmm1
|
---|
1615 | vaesdec xmm9,xmm9,xmm1
|
---|
1616 | vmovups xmm1,XMMWORD[((16-120))+rsi]
|
---|
1617 |
|
---|
1618 | vaesdeclast xmm2,xmm2,xmm0
|
---|
1619 | vmovdqa XMMWORD[32+rsp],xmm15
|
---|
1620 | vpxor xmm15,xmm15,xmm15
|
---|
1621 | vaesdeclast xmm3,xmm3,xmm0
|
---|
1622 | vpxor xmm2,xmm2,XMMWORD[rbp]
|
---|
1623 | vaesdeclast xmm4,xmm4,xmm0
|
---|
1624 | vpxor xmm3,xmm3,XMMWORD[16+rbp]
|
---|
1625 | vpcmpgtd xmm15,xmm14,xmm15
|
---|
1626 | vaesdeclast xmm5,xmm5,xmm0
|
---|
1627 | vpxor xmm4,xmm4,XMMWORD[32+rbp]
|
---|
1628 | vaesdeclast xmm6,xmm6,xmm0
|
---|
1629 | vpxor xmm5,xmm5,XMMWORD[48+rbp]
|
---|
1630 | vpaddd xmm14,xmm14,xmm15
|
---|
1631 | vmovdqu xmm15,XMMWORD[((-120))+rsi]
|
---|
1632 | vaesdeclast xmm7,xmm7,xmm0
|
---|
1633 | vpxor xmm6,xmm6,XMMWORD[64+rbp]
|
---|
1634 | vaesdeclast xmm8,xmm8,xmm0
|
---|
1635 | vpxor xmm7,xmm7,XMMWORD[80+rbp]
|
---|
1636 | vmovdqa XMMWORD[48+rsp],xmm14
|
---|
1637 | vaesdeclast xmm9,xmm9,xmm0
|
---|
1638 | vpxor xmm8,xmm8,XMMWORD[96+rbp]
|
---|
1639 | vmovups xmm0,XMMWORD[((32-120))+rsi]
|
---|
1640 |
|
---|
1641 | vmovups XMMWORD[(-16)+r8],xmm2
|
---|
1642 | sub r8,rbx
|
---|
1643 | vmovdqu xmm2,XMMWORD[((128+0))+rsp]
|
---|
1644 | vpxor xmm9,xmm9,XMMWORD[112+rbp]
|
---|
1645 | vmovups XMMWORD[(-16)+r9],xmm3
|
---|
1646 | sub r9,QWORD[72+rsp]
|
---|
1647 | vmovdqu XMMWORD[rbp],xmm2
|
---|
1648 | vpxor xmm2,xmm2,xmm15
|
---|
1649 | vmovdqu xmm3,XMMWORD[((128+16))+rsp]
|
---|
1650 | vmovups XMMWORD[(-16)+r10],xmm4
|
---|
1651 | sub r10,QWORD[80+rsp]
|
---|
1652 | vmovdqu XMMWORD[16+rbp],xmm3
|
---|
1653 | vpxor xmm3,xmm3,xmm15
|
---|
1654 | vmovdqu xmm4,XMMWORD[((128+32))+rsp]
|
---|
1655 | vmovups XMMWORD[(-16)+r11],xmm5
|
---|
1656 | sub r11,QWORD[88+rsp]
|
---|
1657 | vmovdqu XMMWORD[32+rbp],xmm4
|
---|
1658 | vpxor xmm4,xmm4,xmm15
|
---|
1659 | vmovdqu xmm5,XMMWORD[((128+48))+rsp]
|
---|
1660 | vmovups XMMWORD[(-16)+r12],xmm6
|
---|
1661 | sub r12,QWORD[96+rsp]
|
---|
1662 | vmovdqu XMMWORD[48+rbp],xmm5
|
---|
1663 | vpxor xmm5,xmm5,xmm15
|
---|
1664 | vmovdqu XMMWORD[64+rbp],xmm10
|
---|
1665 | vpxor xmm6,xmm15,xmm10
|
---|
1666 | vmovups XMMWORD[(-16)+r13],xmm7
|
---|
1667 | sub r13,QWORD[104+rsp]
|
---|
1668 | vmovdqu XMMWORD[80+rbp],xmm11
|
---|
1669 | vpxor xmm7,xmm15,xmm11
|
---|
1670 | vmovups XMMWORD[(-16)+r14],xmm8
|
---|
1671 | sub r14,QWORD[112+rsp]
|
---|
1672 | vmovdqu XMMWORD[96+rbp],xmm12
|
---|
1673 | vpxor xmm8,xmm15,xmm12
|
---|
1674 | vmovups XMMWORD[(-16)+r15],xmm9
|
---|
1675 | sub r15,QWORD[120+rsp]
|
---|
1676 | vmovdqu XMMWORD[112+rbp],xmm13
|
---|
1677 | vpxor xmm9,xmm15,xmm13
|
---|
1678 |
|
---|
1679 | xor rbp,128
|
---|
1680 | dec edx
|
---|
1681 | jnz NEAR $L$oop_dec8x
|
---|
1682 |
|
---|
1683 | mov rax,QWORD[16+rsp]
|
---|
1684 |
|
---|
1685 |
|
---|
1686 |
|
---|
1687 |
|
---|
1688 |
|
---|
1689 |
|
---|
1690 | $L$dec8x_done:
|
---|
1691 | vzeroupper
|
---|
1692 | movaps xmm6,XMMWORD[((-216))+rax]
|
---|
1693 | movaps xmm7,XMMWORD[((-200))+rax]
|
---|
1694 | movaps xmm8,XMMWORD[((-184))+rax]
|
---|
1695 | movaps xmm9,XMMWORD[((-168))+rax]
|
---|
1696 | movaps xmm10,XMMWORD[((-152))+rax]
|
---|
1697 | movaps xmm11,XMMWORD[((-136))+rax]
|
---|
1698 | movaps xmm12,XMMWORD[((-120))+rax]
|
---|
1699 | movaps xmm13,XMMWORD[((-104))+rax]
|
---|
1700 | movaps xmm14,XMMWORD[((-88))+rax]
|
---|
1701 | movaps xmm15,XMMWORD[((-72))+rax]
|
---|
1702 | mov r15,QWORD[((-48))+rax]
|
---|
1703 |
|
---|
1704 | mov r14,QWORD[((-40))+rax]
|
---|
1705 |
|
---|
1706 | mov r13,QWORD[((-32))+rax]
|
---|
1707 |
|
---|
1708 | mov r12,QWORD[((-24))+rax]
|
---|
1709 |
|
---|
1710 | mov rbp,QWORD[((-16))+rax]
|
---|
1711 |
|
---|
1712 | mov rbx,QWORD[((-8))+rax]
|
---|
1713 |
|
---|
1714 | lea rsp,[rax]
|
---|
1715 |
|
---|
1716 | $L$dec8x_epilogue:
|
---|
1717 | mov rdi,QWORD[8+rsp] ;WIN64 epilogue
|
---|
1718 | mov rsi,QWORD[16+rsp]
|
---|
1719 | DB 0F3h,0C3h ;repret
|
---|
1720 |
|
---|
1721 | $L$SEH_end_aesni_multi_cbc_decrypt_avx:
|
---|
1722 | EXTERN __imp_RtlVirtualUnwind
|
---|
1723 |
|
---|
1724 | ALIGN 16
|
---|
1725 | se_handler:
|
---|
1726 | push rsi
|
---|
1727 | push rdi
|
---|
1728 | push rbx
|
---|
1729 | push rbp
|
---|
1730 | push r12
|
---|
1731 | push r13
|
---|
1732 | push r14
|
---|
1733 | push r15
|
---|
1734 | pushfq
|
---|
1735 | sub rsp,64
|
---|
1736 |
|
---|
1737 | mov rax,QWORD[120+r8]
|
---|
1738 | mov rbx,QWORD[248+r8]
|
---|
1739 |
|
---|
1740 | mov rsi,QWORD[8+r9]
|
---|
1741 | mov r11,QWORD[56+r9]
|
---|
1742 |
|
---|
1743 | mov r10d,DWORD[r11]
|
---|
1744 | lea r10,[r10*1+rsi]
|
---|
1745 | cmp rbx,r10
|
---|
1746 | jb NEAR $L$in_prologue
|
---|
1747 |
|
---|
1748 | mov rax,QWORD[152+r8]
|
---|
1749 |
|
---|
1750 | mov r10d,DWORD[4+r11]
|
---|
1751 | lea r10,[r10*1+rsi]
|
---|
1752 | cmp rbx,r10
|
---|
1753 | jae NEAR $L$in_prologue
|
---|
1754 |
|
---|
1755 | mov rax,QWORD[16+rax]
|
---|
1756 |
|
---|
1757 | mov rbx,QWORD[((-8))+rax]
|
---|
1758 | mov rbp,QWORD[((-16))+rax]
|
---|
1759 | mov r12,QWORD[((-24))+rax]
|
---|
1760 | mov r13,QWORD[((-32))+rax]
|
---|
1761 | mov r14,QWORD[((-40))+rax]
|
---|
1762 | mov r15,QWORD[((-48))+rax]
|
---|
1763 | mov QWORD[144+r8],rbx
|
---|
1764 | mov QWORD[160+r8],rbp
|
---|
1765 | mov QWORD[216+r8],r12
|
---|
1766 | mov QWORD[224+r8],r13
|
---|
1767 | mov QWORD[232+r8],r14
|
---|
1768 | mov QWORD[240+r8],r15
|
---|
1769 |
|
---|
1770 | lea rsi,[((-56-160))+rax]
|
---|
1771 | lea rdi,[512+r8]
|
---|
1772 | mov ecx,20
|
---|
1773 | DD 0xa548f3fc
|
---|
1774 |
|
---|
1775 | $L$in_prologue:
|
---|
1776 | mov rdi,QWORD[8+rax]
|
---|
1777 | mov rsi,QWORD[16+rax]
|
---|
1778 | mov QWORD[152+r8],rax
|
---|
1779 | mov QWORD[168+r8],rsi
|
---|
1780 | mov QWORD[176+r8],rdi
|
---|
1781 |
|
---|
1782 | mov rdi,QWORD[40+r9]
|
---|
1783 | mov rsi,r8
|
---|
1784 | mov ecx,154
|
---|
1785 | DD 0xa548f3fc
|
---|
1786 |
|
---|
1787 | mov rsi,r9
|
---|
1788 | xor rcx,rcx
|
---|
1789 | mov rdx,QWORD[8+rsi]
|
---|
1790 | mov r8,QWORD[rsi]
|
---|
1791 | mov r9,QWORD[16+rsi]
|
---|
1792 | mov r10,QWORD[40+rsi]
|
---|
1793 | lea r11,[56+rsi]
|
---|
1794 | lea r12,[24+rsi]
|
---|
1795 | mov QWORD[32+rsp],r10
|
---|
1796 | mov QWORD[40+rsp],r11
|
---|
1797 | mov QWORD[48+rsp],r12
|
---|
1798 | mov QWORD[56+rsp],rcx
|
---|
1799 | call QWORD[__imp_RtlVirtualUnwind]
|
---|
1800 |
|
---|
1801 | mov eax,1
|
---|
1802 | add rsp,64
|
---|
1803 | popfq
|
---|
1804 | pop r15
|
---|
1805 | pop r14
|
---|
1806 | pop r13
|
---|
1807 | pop r12
|
---|
1808 | pop rbp
|
---|
1809 | pop rbx
|
---|
1810 | pop rdi
|
---|
1811 | pop rsi
|
---|
1812 | DB 0F3h,0C3h ;repret
|
---|
1813 |
|
---|
1814 |
|
---|
1815 | section .pdata rdata align=4
|
---|
1816 | ALIGN 4
|
---|
1817 | DD $L$SEH_begin_aesni_multi_cbc_encrypt wrt ..imagebase
|
---|
1818 | DD $L$SEH_end_aesni_multi_cbc_encrypt wrt ..imagebase
|
---|
1819 | DD $L$SEH_info_aesni_multi_cbc_encrypt wrt ..imagebase
|
---|
1820 | DD $L$SEH_begin_aesni_multi_cbc_decrypt wrt ..imagebase
|
---|
1821 | DD $L$SEH_end_aesni_multi_cbc_decrypt wrt ..imagebase
|
---|
1822 | DD $L$SEH_info_aesni_multi_cbc_decrypt wrt ..imagebase
|
---|
1823 | DD $L$SEH_begin_aesni_multi_cbc_encrypt_avx wrt ..imagebase
|
---|
1824 | DD $L$SEH_end_aesni_multi_cbc_encrypt_avx wrt ..imagebase
|
---|
1825 | DD $L$SEH_info_aesni_multi_cbc_encrypt_avx wrt ..imagebase
|
---|
1826 | DD $L$SEH_begin_aesni_multi_cbc_decrypt_avx wrt ..imagebase
|
---|
1827 | DD $L$SEH_end_aesni_multi_cbc_decrypt_avx wrt ..imagebase
|
---|
1828 | DD $L$SEH_info_aesni_multi_cbc_decrypt_avx wrt ..imagebase
|
---|
1829 | section .xdata rdata align=8
|
---|
1830 | ALIGN 8
|
---|
1831 | $L$SEH_info_aesni_multi_cbc_encrypt:
|
---|
1832 | DB 9,0,0,0
|
---|
1833 | DD se_handler wrt ..imagebase
|
---|
1834 | DD $L$enc4x_body wrt ..imagebase,$L$enc4x_epilogue wrt ..imagebase
|
---|
1835 | $L$SEH_info_aesni_multi_cbc_decrypt:
|
---|
1836 | DB 9,0,0,0
|
---|
1837 | DD se_handler wrt ..imagebase
|
---|
1838 | DD $L$dec4x_body wrt ..imagebase,$L$dec4x_epilogue wrt ..imagebase
|
---|
1839 | $L$SEH_info_aesni_multi_cbc_encrypt_avx:
|
---|
1840 | DB 9,0,0,0
|
---|
1841 | DD se_handler wrt ..imagebase
|
---|
1842 | DD $L$enc8x_body wrt ..imagebase,$L$enc8x_epilogue wrt ..imagebase
|
---|
1843 | $L$SEH_info_aesni_multi_cbc_decrypt_avx:
|
---|
1844 | DB 9,0,0,0
|
---|
1845 | DD se_handler wrt ..imagebase
|
---|
1846 | DD $L$dec8x_body wrt ..imagebase,$L$dec8x_epilogue wrt ..imagebase
|
---|