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

source code of llvm/lib/Support/BLAKE3/blake3_avx2_x86-64_windows_gnu.S