uncle_blake3 0.0.1

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