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: |
9 | blake3_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 |
60 | 2: |
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 |
82 | 9: |
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 |
1305 | 4: |
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 |
1328 | 3: |
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 |
1358 | 2: |
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 |
1401 | 9: |
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 |
1531 | 9: |
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 |
1559 | 3: |
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 |
1579 | 2: |
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 |
1604 | 9: |
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 |
1663 | 9: |
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 |
1685 | 3: |
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 |
1700 | 2: |
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 |
1720 | 9: |
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 |
1779 | 9: |
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 |
1791 | ADD0: |
1792 | .long 0, 1, 2, 3, 4, 5, 6, 7 |
1793 | ADD1: |
1794 | .long 8, 8, 8, 8, 8, 8, 8, 8 |
1795 | BLAKE3_IV_0: |
1796 | .long 0x6A09E667, 0x6A09E667, 0x6A09E667, 0x6A09E667 |
1797 | .long 0x6A09E667, 0x6A09E667, 0x6A09E667, 0x6A09E667 |
1798 | BLAKE3_IV_1: |
1799 | .long 0xBB67AE85, 0xBB67AE85, 0xBB67AE85, 0xBB67AE85 |
1800 | .long 0xBB67AE85, 0xBB67AE85, 0xBB67AE85, 0xBB67AE85 |
1801 | BLAKE3_IV_2: |
1802 | .long 0x3C6EF372, 0x3C6EF372, 0x3C6EF372, 0x3C6EF372 |
1803 | .long 0x3C6EF372, 0x3C6EF372, 0x3C6EF372, 0x3C6EF372 |
1804 | BLAKE3_IV_3: |
1805 | .long 0xA54FF53A, 0xA54FF53A, 0xA54FF53A, 0xA54FF53A |
1806 | .long 0xA54FF53A, 0xA54FF53A, 0xA54FF53A, 0xA54FF53A |
1807 | BLAKE3_BLOCK_LEN: |
1808 | .long 0x00000040, 0x00000040, 0x00000040, 0x00000040 |
1809 | .long 0x00000040, 0x00000040, 0x00000040, 0x00000040 |
1810 | ROT16: |
1811 | .byte 2, 3, 0, 1, 6, 7, 4, 5, 10, 11, 8, 9, 14, 15, 12, 13 |
1812 | ROT8: |
1813 | .byte 1, 2, 3, 0, 5, 6, 7, 4, 9, 10, 11, 8, 13, 14, 15, 12 |
1814 | CMP_MSB_MASK: |
1815 | .long 0x80000000, 0x80000000, 0x80000000, 0x80000000 |
1816 | .long 0x80000000, 0x80000000, 0x80000000, 0x80000000 |
1817 | BLAKE3_IV: |
1818 | .long 0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A |
1819 | |
1820 | |