digest-blake3 0.0.1

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