1#include "mesa_blake3_visibility.h" 2 3#if defined(__ELF__) && defined(__linux__) 4.section .note.GNU-stack,"",%progbits 5#endif 6 7#if defined(__ELF__) && defined(__CET__) && defined(__has_include) 8#if __has_include(<cet.h>) 9#include <cet.h> 10#endif 11#endif 12 13#if !defined(_CET_ENDBR) 14#define _CET_ENDBR 15#endif 16 17.intel_syntax noprefix 18HIDDEN _blake3_hash_many_avx512 19HIDDEN blake3_hash_many_avx512 20HIDDEN blake3_compress_in_place_avx512 21HIDDEN _blake3_compress_in_place_avx512 22HIDDEN blake3_compress_xof_avx512 23HIDDEN _blake3_compress_xof_avx512 24.global _blake3_hash_many_avx512 25.global blake3_hash_many_avx512 26.global blake3_compress_in_place_avx512 27.global _blake3_compress_in_place_avx512 28.global blake3_compress_xof_avx512 29.global _blake3_compress_xof_avx512 30 31#ifdef __APPLE__ 32.text 33#else 34.section .text 35#endif 36.p2align 6 37_blake3_hash_many_avx512: 38blake3_hash_many_avx512: 39 _CET_ENDBR 40 push r15 41 push r14 42 push r13 43 push r12 44 push rbx 45 push rbp 46 mov rbp, rsp 47 sub rsp, 144 48 and rsp, 0xFFFFFFFFFFFFFFC0 49 neg r9 50 kmovw k1, r9d 51 vmovd xmm0, r8d 52 vpbroadcastd ymm0, xmm0 53 shr r8, 32 54 vmovd xmm1, r8d 55 vpbroadcastd ymm1, xmm1 56 vmovdqa ymm4, ymm1 57 vmovdqa ymm5, ymm1 58 vpaddd ymm2, ymm0, ymmword ptr [ADD0+rip] 59 vpaddd ymm3, ymm0, ymmword ptr [ADD0+32+rip] 60 vpcmpltud k2, ymm2, ymm0 61 vpcmpltud k3, ymm3, ymm0 62 vpaddd ymm4 {k2}, ymm4, dword ptr [ADD1+rip] {1to8} 63 vpaddd ymm5 {k3}, ymm5, dword ptr [ADD1+rip] {1to8} 64 knotw k2, k1 65 vmovdqa32 ymm2 {k2}, ymm0 66 vmovdqa32 ymm3 {k2}, ymm0 67 vmovdqa32 ymm4 {k2}, ymm1 68 vmovdqa32 ymm5 {k2}, ymm1 69 vmovdqa ymmword ptr [rsp], ymm2 70 vmovdqa ymmword ptr [rsp+0x1*0x20], ymm3 71 vmovdqa ymmword ptr [rsp+0x2*0x20], ymm4 72 vmovdqa ymmword ptr [rsp+0x3*0x20], ymm5 73 shl rdx, 6 74 mov qword ptr [rsp+0x80], rdx 75 cmp rsi, 16 76 jc 3f 772: 78 vpbroadcastd zmm0, dword ptr [rcx] 79 vpbroadcastd zmm1, dword ptr [rcx+0x1*0x4] 80 vpbroadcastd zmm2, dword ptr [rcx+0x2*0x4] 81 vpbroadcastd zmm3, dword ptr [rcx+0x3*0x4] 82 vpbroadcastd zmm4, dword ptr [rcx+0x4*0x4] 83 vpbroadcastd zmm5, dword ptr [rcx+0x5*0x4] 84 vpbroadcastd zmm6, dword ptr [rcx+0x6*0x4] 85 vpbroadcastd zmm7, dword ptr [rcx+0x7*0x4] 86 movzx eax, byte ptr [rbp+0x38] 87 movzx ebx, byte ptr [rbp+0x40] 88 or eax, ebx 89 xor edx, edx 90.p2align 5 919: 92 movzx ebx, byte ptr [rbp+0x48] 93 or ebx, eax 94 add rdx, 64 95 cmp rdx, qword ptr [rsp+0x80] 96 cmove eax, ebx 97 mov dword ptr [rsp+0x88], eax 98 mov r8, qword ptr [rdi] 99 mov r9, qword ptr [rdi+0x8] 100 mov r10, qword ptr [rdi+0x10] 101 mov r11, qword ptr [rdi+0x18] 102 mov r12, qword ptr [rdi+0x40] 103 mov r13, qword ptr [rdi+0x48] 104 mov r14, qword ptr [rdi+0x50] 105 mov r15, qword ptr [rdi+0x58] 106 vmovdqu32 ymm16, ymmword ptr [rdx+r8-0x2*0x20] 107 vinserti64x4 zmm16, zmm16, ymmword ptr [rdx+r12-0x2*0x20], 0x01 108 vmovdqu32 ymm17, ymmword ptr [rdx+r9-0x2*0x20] 109 vinserti64x4 zmm17, zmm17, ymmword ptr [rdx+r13-0x2*0x20], 0x01 110 vpunpcklqdq zmm8, zmm16, zmm17 111 vpunpckhqdq zmm9, zmm16, zmm17 112 vmovdqu32 ymm18, ymmword ptr [rdx+r10-0x2*0x20] 113 vinserti64x4 zmm18, zmm18, ymmword ptr [rdx+r14-0x2*0x20], 0x01 114 vmovdqu32 ymm19, ymmword ptr [rdx+r11-0x2*0x20] 115 vinserti64x4 zmm19, zmm19, ymmword ptr [rdx+r15-0x2*0x20], 0x01 116 vpunpcklqdq zmm10, zmm18, zmm19 117 vpunpckhqdq zmm11, zmm18, zmm19 118 mov r8, qword ptr [rdi+0x20] 119 mov r9, qword ptr [rdi+0x28] 120 mov r10, qword ptr [rdi+0x30] 121 mov r11, qword ptr [rdi+0x38] 122 mov r12, qword ptr [rdi+0x60] 123 mov r13, qword ptr [rdi+0x68] 124 mov r14, qword ptr [rdi+0x70] 125 mov r15, qword ptr [rdi+0x78] 126 vmovdqu32 ymm16, ymmword ptr [rdx+r8-0x2*0x20] 127 vinserti64x4 zmm16, zmm16, ymmword ptr [rdx+r12-0x2*0x20], 0x01 128 vmovdqu32 ymm17, ymmword ptr [rdx+r9-0x2*0x20] 129 vinserti64x4 zmm17, zmm17, ymmword ptr [rdx+r13-0x2*0x20], 0x01 130 vpunpcklqdq zmm12, zmm16, zmm17 131 vpunpckhqdq zmm13, zmm16, zmm17 132 vmovdqu32 ymm18, ymmword ptr [rdx+r10-0x2*0x20] 133 vinserti64x4 zmm18, zmm18, ymmword ptr [rdx+r14-0x2*0x20], 0x01 134 vmovdqu32 ymm19, ymmword ptr [rdx+r11-0x2*0x20] 135 vinserti64x4 zmm19, zmm19, ymmword ptr [rdx+r15-0x2*0x20], 0x01 136 vpunpcklqdq zmm14, zmm18, zmm19 137 vpunpckhqdq zmm15, zmm18, zmm19 138 vmovdqa32 zmm27, zmmword ptr [INDEX0+rip] 139 vmovdqa32 zmm31, zmmword ptr [INDEX1+rip] 140 vshufps zmm16, zmm8, zmm10, 136 141 vshufps zmm17, zmm12, zmm14, 136 142 vmovdqa32 zmm20, zmm16 143 vpermt2d zmm16, zmm27, zmm17 144 vpermt2d zmm20, zmm31, zmm17 145 vshufps zmm17, zmm8, zmm10, 221 146 vshufps zmm30, zmm12, zmm14, 221 147 vmovdqa32 zmm21, zmm17 148 vpermt2d zmm17, zmm27, zmm30 149 vpermt2d zmm21, zmm31, zmm30 150 vshufps zmm18, zmm9, zmm11, 136 151 vshufps zmm8, zmm13, zmm15, 136 152 vmovdqa32 zmm22, zmm18 153 vpermt2d zmm18, zmm27, zmm8 154 vpermt2d zmm22, zmm31, zmm8 155 vshufps zmm19, zmm9, zmm11, 221 156 vshufps zmm8, zmm13, zmm15, 221 157 vmovdqa32 zmm23, zmm19 158 vpermt2d zmm19, zmm27, zmm8 159 vpermt2d zmm23, zmm31, zmm8 160 mov r8, qword ptr [rdi] 161 mov r9, qword ptr [rdi+0x8] 162 mov r10, qword ptr [rdi+0x10] 163 mov r11, qword ptr [rdi+0x18] 164 mov r12, qword ptr [rdi+0x40] 165 mov r13, qword ptr [rdi+0x48] 166 mov r14, qword ptr [rdi+0x50] 167 mov r15, qword ptr [rdi+0x58] 168 vmovdqu32 ymm24, ymmword ptr [r8+rdx-0x1*0x20] 169 vinserti64x4 zmm24, zmm24, ymmword ptr [r12+rdx-0x1*0x20], 0x01 170 vmovdqu32 ymm25, ymmword ptr [r9+rdx-0x1*0x20] 171 vinserti64x4 zmm25, zmm25, ymmword ptr [r13+rdx-0x1*0x20], 0x01 172 vpunpcklqdq zmm8, zmm24, zmm25 173 vpunpckhqdq zmm9, zmm24, zmm25 174 vmovdqu32 ymm24, ymmword ptr [r10+rdx-0x1*0x20] 175 vinserti64x4 zmm24, zmm24, ymmword ptr [r14+rdx-0x1*0x20], 0x01 176 vmovdqu32 ymm25, ymmword ptr [r11+rdx-0x1*0x20] 177 vinserti64x4 zmm25, zmm25, ymmword ptr [r15+rdx-0x1*0x20], 0x01 178 vpunpcklqdq zmm10, zmm24, zmm25 179 vpunpckhqdq zmm11, zmm24, zmm25 180 prefetcht0 [r8+rdx+0x80] 181 prefetcht0 [r12+rdx+0x80] 182 prefetcht0 [r9+rdx+0x80] 183 prefetcht0 [r13+rdx+0x80] 184 prefetcht0 [r10+rdx+0x80] 185 prefetcht0 [r14+rdx+0x80] 186 prefetcht0 [r11+rdx+0x80] 187 prefetcht0 [r15+rdx+0x80] 188 mov r8, qword ptr [rdi+0x20] 189 mov r9, qword ptr [rdi+0x28] 190 mov r10, qword ptr [rdi+0x30] 191 mov r11, qword ptr [rdi+0x38] 192 mov r12, qword ptr [rdi+0x60] 193 mov r13, qword ptr [rdi+0x68] 194 mov r14, qword ptr [rdi+0x70] 195 mov r15, qword ptr [rdi+0x78] 196 vmovdqu32 ymm24, ymmword ptr [r8+rdx-0x1*0x20] 197 vinserti64x4 zmm24, zmm24, ymmword ptr [r12+rdx-0x1*0x20], 0x01 198 vmovdqu32 ymm25, ymmword ptr [r9+rdx-0x1*0x20] 199 vinserti64x4 zmm25, zmm25, ymmword ptr [r13+rdx-0x1*0x20], 0x01 200 vpunpcklqdq zmm12, zmm24, zmm25 201 vpunpckhqdq zmm13, zmm24, zmm25 202 vmovdqu32 ymm24, ymmword ptr [r10+rdx-0x1*0x20] 203 vinserti64x4 zmm24, zmm24, ymmword ptr [r14+rdx-0x1*0x20], 0x01 204 vmovdqu32 ymm25, ymmword ptr [r11+rdx-0x1*0x20] 205 vinserti64x4 zmm25, zmm25, ymmword ptr [r15+rdx-0x1*0x20], 0x01 206 vpunpcklqdq zmm14, zmm24, zmm25 207 vpunpckhqdq zmm15, zmm24, zmm25 208 prefetcht0 [r8+rdx+0x80] 209 prefetcht0 [r12+rdx+0x80] 210 prefetcht0 [r9+rdx+0x80] 211 prefetcht0 [r13+rdx+0x80] 212 prefetcht0 [r10+rdx+0x80] 213 prefetcht0 [r14+rdx+0x80] 214 prefetcht0 [r11+rdx+0x80] 215 prefetcht0 [r15+rdx+0x80] 216 vshufps zmm24, zmm8, zmm10, 136 217 vshufps zmm30, zmm12, zmm14, 136 218 vmovdqa32 zmm28, zmm24 219 vpermt2d zmm24, zmm27, zmm30 220 vpermt2d zmm28, zmm31, zmm30 221 vshufps zmm25, zmm8, zmm10, 221 222 vshufps zmm30, zmm12, zmm14, 221 223 vmovdqa32 zmm29, zmm25 224 vpermt2d zmm25, zmm27, zmm30 225 vpermt2d zmm29, zmm31, zmm30 226 vshufps zmm26, zmm9, zmm11, 136 227 vshufps zmm8, zmm13, zmm15, 136 228 vmovdqa32 zmm30, zmm26 229 vpermt2d zmm26, zmm27, zmm8 230 vpermt2d zmm30, zmm31, zmm8 231 vshufps zmm8, zmm9, zmm11, 221 232 vshufps zmm10, zmm13, zmm15, 221 233 vpermi2d zmm27, zmm8, zmm10 234 vpermi2d zmm31, zmm8, zmm10 235 vpbroadcastd zmm8, dword ptr [BLAKE3_IV_0+rip] 236 vpbroadcastd zmm9, dword ptr [BLAKE3_IV_1+rip] 237 vpbroadcastd zmm10, dword ptr [BLAKE3_IV_2+rip] 238 vpbroadcastd zmm11, dword ptr [BLAKE3_IV_3+rip] 239 vmovdqa32 zmm12, zmmword ptr [rsp] 240 vmovdqa32 zmm13, zmmword ptr [rsp+0x1*0x40] 241 vpbroadcastd zmm14, dword ptr [BLAKE3_BLOCK_LEN+rip] 242 vpbroadcastd zmm15, dword ptr [rsp+0x22*0x4] 243 vpaddd zmm0, zmm0, zmm16 244 vpaddd zmm1, zmm1, zmm18 245 vpaddd zmm2, zmm2, zmm20 246 vpaddd zmm3, zmm3, zmm22 247 vpaddd zmm0, zmm0, zmm4 248 vpaddd zmm1, zmm1, zmm5 249 vpaddd zmm2, zmm2, zmm6 250 vpaddd zmm3, zmm3, zmm7 251 vpxord zmm12, zmm12, zmm0 252 vpxord zmm13, zmm13, zmm1 253 vpxord zmm14, zmm14, zmm2 254 vpxord zmm15, zmm15, zmm3 255 vprord zmm12, zmm12, 16 256 vprord zmm13, zmm13, 16 257 vprord zmm14, zmm14, 16 258 vprord zmm15, zmm15, 16 259 vpaddd zmm8, zmm8, zmm12 260 vpaddd zmm9, zmm9, zmm13 261 vpaddd zmm10, zmm10, zmm14 262 vpaddd zmm11, zmm11, zmm15 263 vpxord zmm4, zmm4, zmm8 264 vpxord zmm5, zmm5, zmm9 265 vpxord zmm6, zmm6, zmm10 266 vpxord zmm7, zmm7, zmm11 267 vprord zmm4, zmm4, 12 268 vprord zmm5, zmm5, 12 269 vprord zmm6, zmm6, 12 270 vprord zmm7, zmm7, 12 271 vpaddd zmm0, zmm0, zmm17 272 vpaddd zmm1, zmm1, zmm19 273 vpaddd zmm2, zmm2, zmm21 274 vpaddd zmm3, zmm3, zmm23 275 vpaddd zmm0, zmm0, zmm4 276 vpaddd zmm1, zmm1, zmm5 277 vpaddd zmm2, zmm2, zmm6 278 vpaddd zmm3, zmm3, zmm7 279 vpxord zmm12, zmm12, zmm0 280 vpxord zmm13, zmm13, zmm1 281 vpxord zmm14, zmm14, zmm2 282 vpxord zmm15, zmm15, zmm3 283 vprord zmm12, zmm12, 8 284 vprord zmm13, zmm13, 8 285 vprord zmm14, zmm14, 8 286 vprord zmm15, zmm15, 8 287 vpaddd zmm8, zmm8, zmm12 288 vpaddd zmm9, zmm9, zmm13 289 vpaddd zmm10, zmm10, zmm14 290 vpaddd zmm11, zmm11, zmm15 291 vpxord zmm4, zmm4, zmm8 292 vpxord zmm5, zmm5, zmm9 293 vpxord zmm6, zmm6, zmm10 294 vpxord zmm7, zmm7, zmm11 295 vprord zmm4, zmm4, 7 296 vprord zmm5, zmm5, 7 297 vprord zmm6, zmm6, 7 298 vprord zmm7, zmm7, 7 299 vpaddd zmm0, zmm0, zmm24 300 vpaddd zmm1, zmm1, zmm26 301 vpaddd zmm2, zmm2, zmm28 302 vpaddd zmm3, zmm3, zmm30 303 vpaddd zmm0, zmm0, zmm5 304 vpaddd zmm1, zmm1, zmm6 305 vpaddd zmm2, zmm2, zmm7 306 vpaddd zmm3, zmm3, zmm4 307 vpxord zmm15, zmm15, zmm0 308 vpxord zmm12, zmm12, zmm1 309 vpxord zmm13, zmm13, zmm2 310 vpxord zmm14, zmm14, zmm3 311 vprord zmm15, zmm15, 16 312 vprord zmm12, zmm12, 16 313 vprord zmm13, zmm13, 16 314 vprord zmm14, zmm14, 16 315 vpaddd zmm10, zmm10, zmm15 316 vpaddd zmm11, zmm11, zmm12 317 vpaddd zmm8, zmm8, zmm13 318 vpaddd zmm9, zmm9, zmm14 319 vpxord zmm5, zmm5, zmm10 320 vpxord zmm6, zmm6, zmm11 321 vpxord zmm7, zmm7, zmm8 322 vpxord zmm4, zmm4, zmm9 323 vprord zmm5, zmm5, 12 324 vprord zmm6, zmm6, 12 325 vprord zmm7, zmm7, 12 326 vprord zmm4, zmm4, 12 327 vpaddd zmm0, zmm0, zmm25 328 vpaddd zmm1, zmm1, zmm27 329 vpaddd zmm2, zmm2, zmm29 330 vpaddd zmm3, zmm3, zmm31 331 vpaddd zmm0, zmm0, zmm5 332 vpaddd zmm1, zmm1, zmm6 333 vpaddd zmm2, zmm2, zmm7 334 vpaddd zmm3, zmm3, zmm4 335 vpxord zmm15, zmm15, zmm0 336 vpxord zmm12, zmm12, zmm1 337 vpxord zmm13, zmm13, zmm2 338 vpxord zmm14, zmm14, zmm3 339 vprord zmm15, zmm15, 8 340 vprord zmm12, zmm12, 8 341 vprord zmm13, zmm13, 8 342 vprord zmm14, zmm14, 8 343 vpaddd zmm10, zmm10, zmm15 344 vpaddd zmm11, zmm11, zmm12 345 vpaddd zmm8, zmm8, zmm13 346 vpaddd zmm9, zmm9, zmm14 347 vpxord zmm5, zmm5, zmm10 348 vpxord zmm6, zmm6, zmm11 349 vpxord zmm7, zmm7, zmm8 350 vpxord zmm4, zmm4, zmm9 351 vprord zmm5, zmm5, 7 352 vprord zmm6, zmm6, 7 353 vprord zmm7, zmm7, 7 354 vprord zmm4, zmm4, 7 355 vpaddd zmm0, zmm0, zmm18 356 vpaddd zmm1, zmm1, zmm19 357 vpaddd zmm2, zmm2, zmm23 358 vpaddd zmm3, zmm3, zmm20 359 vpaddd zmm0, zmm0, zmm4 360 vpaddd zmm1, zmm1, zmm5 361 vpaddd zmm2, zmm2, zmm6 362 vpaddd zmm3, zmm3, zmm7 363 vpxord zmm12, zmm12, zmm0 364 vpxord zmm13, zmm13, zmm1 365 vpxord zmm14, zmm14, zmm2 366 vpxord zmm15, zmm15, zmm3 367 vprord zmm12, zmm12, 16 368 vprord zmm13, zmm13, 16 369 vprord zmm14, zmm14, 16 370 vprord zmm15, zmm15, 16 371 vpaddd zmm8, zmm8, zmm12 372 vpaddd zmm9, zmm9, zmm13 373 vpaddd zmm10, zmm10, zmm14 374 vpaddd zmm11, zmm11, zmm15 375 vpxord zmm4, zmm4, zmm8 376 vpxord zmm5, zmm5, zmm9 377 vpxord zmm6, zmm6, zmm10 378 vpxord zmm7, zmm7, zmm11 379 vprord zmm4, zmm4, 12 380 vprord zmm5, zmm5, 12 381 vprord zmm6, zmm6, 12 382 vprord zmm7, zmm7, 12 383 vpaddd zmm0, zmm0, zmm22 384 vpaddd zmm1, zmm1, zmm26 385 vpaddd zmm2, zmm2, zmm16 386 vpaddd zmm3, zmm3, zmm29 387 vpaddd zmm0, zmm0, zmm4 388 vpaddd zmm1, zmm1, zmm5 389 vpaddd zmm2, zmm2, zmm6 390 vpaddd zmm3, zmm3, zmm7 391 vpxord zmm12, zmm12, zmm0 392 vpxord zmm13, zmm13, zmm1 393 vpxord zmm14, zmm14, zmm2 394 vpxord zmm15, zmm15, zmm3 395 vprord zmm12, zmm12, 8 396 vprord zmm13, zmm13, 8 397 vprord zmm14, zmm14, 8 398 vprord zmm15, zmm15, 8 399 vpaddd zmm8, zmm8, zmm12 400 vpaddd zmm9, zmm9, zmm13 401 vpaddd zmm10, zmm10, zmm14 402 vpaddd zmm11, zmm11, zmm15 403 vpxord zmm4, zmm4, zmm8 404 vpxord zmm5, zmm5, zmm9 405 vpxord zmm6, zmm6, zmm10 406 vpxord zmm7, zmm7, zmm11 407 vprord zmm4, zmm4, 7 408 vprord zmm5, zmm5, 7 409 vprord zmm6, zmm6, 7 410 vprord zmm7, zmm7, 7 411 vpaddd zmm0, zmm0, zmm17 412 vpaddd zmm1, zmm1, zmm28 413 vpaddd zmm2, zmm2, zmm25 414 vpaddd zmm3, zmm3, zmm31 415 vpaddd zmm0, zmm0, zmm5 416 vpaddd zmm1, zmm1, zmm6 417 vpaddd zmm2, zmm2, zmm7 418 vpaddd zmm3, zmm3, zmm4 419 vpxord zmm15, zmm15, zmm0 420 vpxord zmm12, zmm12, zmm1 421 vpxord zmm13, zmm13, zmm2 422 vpxord zmm14, zmm14, zmm3 423 vprord zmm15, zmm15, 16 424 vprord zmm12, zmm12, 16 425 vprord zmm13, zmm13, 16 426 vprord zmm14, zmm14, 16 427 vpaddd zmm10, zmm10, zmm15 428 vpaddd zmm11, zmm11, zmm12 429 vpaddd zmm8, zmm8, zmm13 430 vpaddd zmm9, zmm9, zmm14 431 vpxord zmm5, zmm5, zmm10 432 vpxord zmm6, zmm6, zmm11 433 vpxord zmm7, zmm7, zmm8 434 vpxord zmm4, zmm4, zmm9 435 vprord zmm5, zmm5, 12 436 vprord zmm6, zmm6, 12 437 vprord zmm7, zmm7, 12 438 vprord zmm4, zmm4, 12 439 vpaddd zmm0, zmm0, zmm27 440 vpaddd zmm1, zmm1, zmm21 441 vpaddd zmm2, zmm2, zmm30 442 vpaddd zmm3, zmm3, zmm24 443 vpaddd zmm0, zmm0, zmm5 444 vpaddd zmm1, zmm1, zmm6 445 vpaddd zmm2, zmm2, zmm7 446 vpaddd zmm3, zmm3, zmm4 447 vpxord zmm15, zmm15, zmm0 448 vpxord zmm12, zmm12, zmm1 449 vpxord zmm13, zmm13, zmm2 450 vpxord zmm14, zmm14, zmm3 451 vprord zmm15, zmm15, 8 452 vprord zmm12, zmm12, 8 453 vprord zmm13, zmm13, 8 454 vprord zmm14, zmm14, 8 455 vpaddd zmm10, zmm10, zmm15 456 vpaddd zmm11, zmm11, zmm12 457 vpaddd zmm8, zmm8, zmm13 458 vpaddd zmm9, zmm9, zmm14 459 vpxord zmm5, zmm5, zmm10 460 vpxord zmm6, zmm6, zmm11 461 vpxord zmm7, zmm7, zmm8 462 vpxord zmm4, zmm4, zmm9 463 vprord zmm5, zmm5, 7 464 vprord zmm6, zmm6, 7 465 vprord zmm7, zmm7, 7 466 vprord zmm4, zmm4, 7 467 vpaddd zmm0, zmm0, zmm19 468 vpaddd zmm1, zmm1, zmm26 469 vpaddd zmm2, zmm2, zmm29 470 vpaddd zmm3, zmm3, zmm23 471 vpaddd zmm0, zmm0, zmm4 472 vpaddd zmm1, zmm1, zmm5 473 vpaddd zmm2, zmm2, zmm6 474 vpaddd zmm3, zmm3, zmm7 475 vpxord zmm12, zmm12, zmm0 476 vpxord zmm13, zmm13, zmm1 477 vpxord zmm14, zmm14, zmm2 478 vpxord zmm15, zmm15, zmm3 479 vprord zmm12, zmm12, 16 480 vprord zmm13, zmm13, 16 481 vprord zmm14, zmm14, 16 482 vprord zmm15, zmm15, 16 483 vpaddd zmm8, zmm8, zmm12 484 vpaddd zmm9, zmm9, zmm13 485 vpaddd zmm10, zmm10, zmm14 486 vpaddd zmm11, zmm11, zmm15 487 vpxord zmm4, zmm4, zmm8 488 vpxord zmm5, zmm5, zmm9 489 vpxord zmm6, zmm6, zmm10 490 vpxord zmm7, zmm7, zmm11 491 vprord zmm4, zmm4, 12 492 vprord zmm5, zmm5, 12 493 vprord zmm6, zmm6, 12 494 vprord zmm7, zmm7, 12 495 vpaddd zmm0, zmm0, zmm20 496 vpaddd zmm1, zmm1, zmm28 497 vpaddd zmm2, zmm2, zmm18 498 vpaddd zmm3, zmm3, zmm30 499 vpaddd zmm0, zmm0, zmm4 500 vpaddd zmm1, zmm1, zmm5 501 vpaddd zmm2, zmm2, zmm6 502 vpaddd zmm3, zmm3, zmm7 503 vpxord zmm12, zmm12, zmm0 504 vpxord zmm13, zmm13, zmm1 505 vpxord zmm14, zmm14, zmm2 506 vpxord zmm15, zmm15, zmm3 507 vprord zmm12, zmm12, 8 508 vprord zmm13, zmm13, 8 509 vprord zmm14, zmm14, 8 510 vprord zmm15, zmm15, 8 511 vpaddd zmm8, zmm8, zmm12 512 vpaddd zmm9, zmm9, zmm13 513 vpaddd zmm10, zmm10, zmm14 514 vpaddd zmm11, zmm11, zmm15 515 vpxord zmm4, zmm4, zmm8 516 vpxord zmm5, zmm5, zmm9 517 vpxord zmm6, zmm6, zmm10 518 vpxord zmm7, zmm7, zmm11 519 vprord zmm4, zmm4, 7 520 vprord zmm5, zmm5, 7 521 vprord zmm6, zmm6, 7 522 vprord zmm7, zmm7, 7 523 vpaddd zmm0, zmm0, zmm22 524 vpaddd zmm1, zmm1, zmm25 525 vpaddd zmm2, zmm2, zmm27 526 vpaddd zmm3, zmm3, zmm24 527 vpaddd zmm0, zmm0, zmm5 528 vpaddd zmm1, zmm1, zmm6 529 vpaddd zmm2, zmm2, zmm7 530 vpaddd zmm3, zmm3, zmm4 531 vpxord zmm15, zmm15, zmm0 532 vpxord zmm12, zmm12, zmm1 533 vpxord zmm13, zmm13, zmm2 534 vpxord zmm14, zmm14, zmm3 535 vprord zmm15, zmm15, 16 536 vprord zmm12, zmm12, 16 537 vprord zmm13, zmm13, 16 538 vprord zmm14, zmm14, 16 539 vpaddd zmm10, zmm10, zmm15 540 vpaddd zmm11, zmm11, zmm12 541 vpaddd zmm8, zmm8, zmm13 542 vpaddd zmm9, zmm9, zmm14 543 vpxord zmm5, zmm5, zmm10 544 vpxord zmm6, zmm6, zmm11 545 vpxord zmm7, zmm7, zmm8 546 vpxord zmm4, zmm4, zmm9 547 vprord zmm5, zmm5, 12 548 vprord zmm6, zmm6, 12 549 vprord zmm7, zmm7, 12 550 vprord zmm4, zmm4, 12 551 vpaddd zmm0, zmm0, zmm21 552 vpaddd zmm1, zmm1, zmm16 553 vpaddd zmm2, zmm2, zmm31 554 vpaddd zmm3, zmm3, zmm17 555 vpaddd zmm0, zmm0, zmm5 556 vpaddd zmm1, zmm1, zmm6 557 vpaddd zmm2, zmm2, zmm7 558 vpaddd zmm3, zmm3, zmm4 559 vpxord zmm15, zmm15, zmm0 560 vpxord zmm12, zmm12, zmm1 561 vpxord zmm13, zmm13, zmm2 562 vpxord zmm14, zmm14, zmm3 563 vprord zmm15, zmm15, 8 564 vprord zmm12, zmm12, 8 565 vprord zmm13, zmm13, 8 566 vprord zmm14, zmm14, 8 567 vpaddd zmm10, zmm10, zmm15 568 vpaddd zmm11, zmm11, zmm12 569 vpaddd zmm8, zmm8, zmm13 570 vpaddd zmm9, zmm9, zmm14 571 vpxord zmm5, zmm5, zmm10 572 vpxord zmm6, zmm6, zmm11 573 vpxord zmm7, zmm7, zmm8 574 vpxord zmm4, zmm4, zmm9 575 vprord zmm5, zmm5, 7 576 vprord zmm6, zmm6, 7 577 vprord zmm7, zmm7, 7 578 vprord zmm4, zmm4, 7 579 vpaddd zmm0, zmm0, zmm26 580 vpaddd zmm1, zmm1, zmm28 581 vpaddd zmm2, zmm2, zmm30 582 vpaddd zmm3, zmm3, zmm29 583 vpaddd zmm0, zmm0, zmm4 584 vpaddd zmm1, zmm1, zmm5 585 vpaddd zmm2, zmm2, zmm6 586 vpaddd zmm3, zmm3, zmm7 587 vpxord zmm12, zmm12, zmm0 588 vpxord zmm13, zmm13, zmm1 589 vpxord zmm14, zmm14, zmm2 590 vpxord zmm15, zmm15, zmm3 591 vprord zmm12, zmm12, 16 592 vprord zmm13, zmm13, 16 593 vprord zmm14, zmm14, 16 594 vprord zmm15, zmm15, 16 595 vpaddd zmm8, zmm8, zmm12 596 vpaddd zmm9, zmm9, zmm13 597 vpaddd zmm10, zmm10, zmm14 598 vpaddd zmm11, zmm11, zmm15 599 vpxord zmm4, zmm4, zmm8 600 vpxord zmm5, zmm5, zmm9 601 vpxord zmm6, zmm6, zmm10 602 vpxord zmm7, zmm7, zmm11 603 vprord zmm4, zmm4, 12 604 vprord zmm5, zmm5, 12 605 vprord zmm6, zmm6, 12 606 vprord zmm7, zmm7, 12 607 vpaddd zmm0, zmm0, zmm23 608 vpaddd zmm1, zmm1, zmm25 609 vpaddd zmm2, zmm2, zmm19 610 vpaddd zmm3, zmm3, zmm31 611 vpaddd zmm0, zmm0, zmm4 612 vpaddd zmm1, zmm1, zmm5 613 vpaddd zmm2, zmm2, zmm6 614 vpaddd zmm3, zmm3, zmm7 615 vpxord zmm12, zmm12, zmm0 616 vpxord zmm13, zmm13, zmm1 617 vpxord zmm14, zmm14, zmm2 618 vpxord zmm15, zmm15, zmm3 619 vprord zmm12, zmm12, 8 620 vprord zmm13, zmm13, 8 621 vprord zmm14, zmm14, 8 622 vprord zmm15, zmm15, 8 623 vpaddd zmm8, zmm8, zmm12 624 vpaddd zmm9, zmm9, zmm13 625 vpaddd zmm10, zmm10, zmm14 626 vpaddd zmm11, zmm11, zmm15 627 vpxord zmm4, zmm4, zmm8 628 vpxord zmm5, zmm5, zmm9 629 vpxord zmm6, zmm6, zmm10 630 vpxord zmm7, zmm7, zmm11 631 vprord zmm4, zmm4, 7 632 vprord zmm5, zmm5, 7 633 vprord zmm6, zmm6, 7 634 vprord zmm7, zmm7, 7 635 vpaddd zmm0, zmm0, zmm20 636 vpaddd zmm1, zmm1, zmm27 637 vpaddd zmm2, zmm2, zmm21 638 vpaddd zmm3, zmm3, zmm17 639 vpaddd zmm0, zmm0, zmm5 640 vpaddd zmm1, zmm1, zmm6 641 vpaddd zmm2, zmm2, zmm7 642 vpaddd zmm3, zmm3, zmm4 643 vpxord zmm15, zmm15, zmm0 644 vpxord zmm12, zmm12, zmm1 645 vpxord zmm13, zmm13, zmm2 646 vpxord zmm14, zmm14, zmm3 647 vprord zmm15, zmm15, 16 648 vprord zmm12, zmm12, 16 649 vprord zmm13, zmm13, 16 650 vprord zmm14, zmm14, 16 651 vpaddd zmm10, zmm10, zmm15 652 vpaddd zmm11, zmm11, zmm12 653 vpaddd zmm8, zmm8, zmm13 654 vpaddd zmm9, zmm9, zmm14 655 vpxord zmm5, zmm5, zmm10 656 vpxord zmm6, zmm6, zmm11 657 vpxord zmm7, zmm7, zmm8 658 vpxord zmm4, zmm4, zmm9 659 vprord zmm5, zmm5, 12 660 vprord zmm6, zmm6, 12 661 vprord zmm7, zmm7, 12 662 vprord zmm4, zmm4, 12 663 vpaddd zmm0, zmm0, zmm16 664 vpaddd zmm1, zmm1, zmm18 665 vpaddd zmm2, zmm2, zmm24 666 vpaddd zmm3, zmm3, zmm22 667 vpaddd zmm0, zmm0, zmm5 668 vpaddd zmm1, zmm1, zmm6 669 vpaddd zmm2, zmm2, zmm7 670 vpaddd zmm3, zmm3, zmm4 671 vpxord zmm15, zmm15, zmm0 672 vpxord zmm12, zmm12, zmm1 673 vpxord zmm13, zmm13, zmm2 674 vpxord zmm14, zmm14, zmm3 675 vprord zmm15, zmm15, 8 676 vprord zmm12, zmm12, 8 677 vprord zmm13, zmm13, 8 678 vprord zmm14, zmm14, 8 679 vpaddd zmm10, zmm10, zmm15 680 vpaddd zmm11, zmm11, zmm12 681 vpaddd zmm8, zmm8, zmm13 682 vpaddd zmm9, zmm9, zmm14 683 vpxord zmm5, zmm5, zmm10 684 vpxord zmm6, zmm6, zmm11 685 vpxord zmm7, zmm7, zmm8 686 vpxord zmm4, zmm4, zmm9 687 vprord zmm5, zmm5, 7 688 vprord zmm6, zmm6, 7 689 vprord zmm7, zmm7, 7 690 vprord zmm4, zmm4, 7 691 vpaddd zmm0, zmm0, zmm28 692 vpaddd zmm1, zmm1, zmm25 693 vpaddd zmm2, zmm2, zmm31 694 vpaddd zmm3, zmm3, zmm30 695 vpaddd zmm0, zmm0, zmm4 696 vpaddd zmm1, zmm1, zmm5 697 vpaddd zmm2, zmm2, zmm6 698 vpaddd zmm3, zmm3, zmm7 699 vpxord zmm12, zmm12, zmm0 700 vpxord zmm13, zmm13, zmm1 701 vpxord zmm14, zmm14, zmm2 702 vpxord zmm15, zmm15, zmm3 703 vprord zmm12, zmm12, 16 704 vprord zmm13, zmm13, 16 705 vprord zmm14, zmm14, 16 706 vprord zmm15, zmm15, 16 707 vpaddd zmm8, zmm8, zmm12 708 vpaddd zmm9, zmm9, zmm13 709 vpaddd zmm10, zmm10, zmm14 710 vpaddd zmm11, zmm11, zmm15 711 vpxord zmm4, zmm4, zmm8 712 vpxord zmm5, zmm5, zmm9 713 vpxord zmm6, zmm6, zmm10 714 vpxord zmm7, zmm7, zmm11 715 vprord zmm4, zmm4, 12 716 vprord zmm5, zmm5, 12 717 vprord zmm6, zmm6, 12 718 vprord zmm7, zmm7, 12 719 vpaddd zmm0, zmm0, zmm29 720 vpaddd zmm1, zmm1, zmm27 721 vpaddd zmm2, zmm2, zmm26 722 vpaddd zmm3, zmm3, zmm24 723 vpaddd zmm0, zmm0, zmm4 724 vpaddd zmm1, zmm1, zmm5 725 vpaddd zmm2, zmm2, zmm6 726 vpaddd zmm3, zmm3, zmm7 727 vpxord zmm12, zmm12, zmm0 728 vpxord zmm13, zmm13, zmm1 729 vpxord zmm14, zmm14, zmm2 730 vpxord zmm15, zmm15, zmm3 731 vprord zmm12, zmm12, 8 732 vprord zmm13, zmm13, 8 733 vprord zmm14, zmm14, 8 734 vprord zmm15, zmm15, 8 735 vpaddd zmm8, zmm8, zmm12 736 vpaddd zmm9, zmm9, zmm13 737 vpaddd zmm10, zmm10, zmm14 738 vpaddd zmm11, zmm11, zmm15 739 vpxord zmm4, zmm4, zmm8 740 vpxord zmm5, zmm5, zmm9 741 vpxord zmm6, zmm6, zmm10 742 vpxord zmm7, zmm7, zmm11 743 vprord zmm4, zmm4, 7 744 vprord zmm5, zmm5, 7 745 vprord zmm6, zmm6, 7 746 vprord zmm7, zmm7, 7 747 vpaddd zmm0, zmm0, zmm23 748 vpaddd zmm1, zmm1, zmm21 749 vpaddd zmm2, zmm2, zmm16 750 vpaddd zmm3, zmm3, zmm22 751 vpaddd zmm0, zmm0, zmm5 752 vpaddd zmm1, zmm1, zmm6 753 vpaddd zmm2, zmm2, zmm7 754 vpaddd zmm3, zmm3, zmm4 755 vpxord zmm15, zmm15, zmm0 756 vpxord zmm12, zmm12, zmm1 757 vpxord zmm13, zmm13, zmm2 758 vpxord zmm14, zmm14, zmm3 759 vprord zmm15, zmm15, 16 760 vprord zmm12, zmm12, 16 761 vprord zmm13, zmm13, 16 762 vprord zmm14, zmm14, 16 763 vpaddd zmm10, zmm10, zmm15 764 vpaddd zmm11, zmm11, zmm12 765 vpaddd zmm8, zmm8, zmm13 766 vpaddd zmm9, zmm9, zmm14 767 vpxord zmm5, zmm5, zmm10 768 vpxord zmm6, zmm6, zmm11 769 vpxord zmm7, zmm7, zmm8 770 vpxord zmm4, zmm4, zmm9 771 vprord zmm5, zmm5, 12 772 vprord zmm6, zmm6, 12 773 vprord zmm7, zmm7, 12 774 vprord zmm4, zmm4, 12 775 vpaddd zmm0, zmm0, zmm18 776 vpaddd zmm1, zmm1, zmm19 777 vpaddd zmm2, zmm2, zmm17 778 vpaddd zmm3, zmm3, zmm20 779 vpaddd zmm0, zmm0, zmm5 780 vpaddd zmm1, zmm1, zmm6 781 vpaddd zmm2, zmm2, zmm7 782 vpaddd zmm3, zmm3, zmm4 783 vpxord zmm15, zmm15, zmm0 784 vpxord zmm12, zmm12, zmm1 785 vpxord zmm13, zmm13, zmm2 786 vpxord zmm14, zmm14, zmm3 787 vprord zmm15, zmm15, 8 788 vprord zmm12, zmm12, 8 789 vprord zmm13, zmm13, 8 790 vprord zmm14, zmm14, 8 791 vpaddd zmm10, zmm10, zmm15 792 vpaddd zmm11, zmm11, zmm12 793 vpaddd zmm8, zmm8, zmm13 794 vpaddd zmm9, zmm9, zmm14 795 vpxord zmm5, zmm5, zmm10 796 vpxord zmm6, zmm6, zmm11 797 vpxord zmm7, zmm7, zmm8 798 vpxord zmm4, zmm4, zmm9 799 vprord zmm5, zmm5, 7 800 vprord zmm6, zmm6, 7 801 vprord zmm7, zmm7, 7 802 vprord zmm4, zmm4, 7 803 vpaddd zmm0, zmm0, zmm25 804 vpaddd zmm1, zmm1, zmm27 805 vpaddd zmm2, zmm2, zmm24 806 vpaddd zmm3, zmm3, zmm31 807 vpaddd zmm0, zmm0, zmm4 808 vpaddd zmm1, zmm1, zmm5 809 vpaddd zmm2, zmm2, zmm6 810 vpaddd zmm3, zmm3, zmm7 811 vpxord zmm12, zmm12, zmm0 812 vpxord zmm13, zmm13, zmm1 813 vpxord zmm14, zmm14, zmm2 814 vpxord zmm15, zmm15, zmm3 815 vprord zmm12, zmm12, 16 816 vprord zmm13, zmm13, 16 817 vprord zmm14, zmm14, 16 818 vprord zmm15, zmm15, 16 819 vpaddd zmm8, zmm8, zmm12 820 vpaddd zmm9, zmm9, zmm13 821 vpaddd zmm10, zmm10, zmm14 822 vpaddd zmm11, zmm11, zmm15 823 vpxord zmm4, zmm4, zmm8 824 vpxord zmm5, zmm5, zmm9 825 vpxord zmm6, zmm6, zmm10 826 vpxord zmm7, zmm7, zmm11 827 vprord zmm4, zmm4, 12 828 vprord zmm5, zmm5, 12 829 vprord zmm6, zmm6, 12 830 vprord zmm7, zmm7, 12 831 vpaddd zmm0, zmm0, zmm30 832 vpaddd zmm1, zmm1, zmm21 833 vpaddd zmm2, zmm2, zmm28 834 vpaddd zmm3, zmm3, zmm17 835 vpaddd zmm0, zmm0, zmm4 836 vpaddd zmm1, zmm1, zmm5 837 vpaddd zmm2, zmm2, zmm6 838 vpaddd zmm3, zmm3, zmm7 839 vpxord zmm12, zmm12, zmm0 840 vpxord zmm13, zmm13, zmm1 841 vpxord zmm14, zmm14, zmm2 842 vpxord zmm15, zmm15, zmm3 843 vprord zmm12, zmm12, 8 844 vprord zmm13, zmm13, 8 845 vprord zmm14, zmm14, 8 846 vprord zmm15, zmm15, 8 847 vpaddd zmm8, zmm8, zmm12 848 vpaddd zmm9, zmm9, zmm13 849 vpaddd zmm10, zmm10, zmm14 850 vpaddd zmm11, zmm11, zmm15 851 vpxord zmm4, zmm4, zmm8 852 vpxord zmm5, zmm5, zmm9 853 vpxord zmm6, zmm6, zmm10 854 vpxord zmm7, zmm7, zmm11 855 vprord zmm4, zmm4, 7 856 vprord zmm5, zmm5, 7 857 vprord zmm6, zmm6, 7 858 vprord zmm7, zmm7, 7 859 vpaddd zmm0, zmm0, zmm29 860 vpaddd zmm1, zmm1, zmm16 861 vpaddd zmm2, zmm2, zmm18 862 vpaddd zmm3, zmm3, zmm20 863 vpaddd zmm0, zmm0, zmm5 864 vpaddd zmm1, zmm1, zmm6 865 vpaddd zmm2, zmm2, zmm7 866 vpaddd zmm3, zmm3, zmm4 867 vpxord zmm15, zmm15, zmm0 868 vpxord zmm12, zmm12, zmm1 869 vpxord zmm13, zmm13, zmm2 870 vpxord zmm14, zmm14, zmm3 871 vprord zmm15, zmm15, 16 872 vprord zmm12, zmm12, 16 873 vprord zmm13, zmm13, 16 874 vprord zmm14, zmm14, 16 875 vpaddd zmm10, zmm10, zmm15 876 vpaddd zmm11, zmm11, zmm12 877 vpaddd zmm8, zmm8, zmm13 878 vpaddd zmm9, zmm9, zmm14 879 vpxord zmm5, zmm5, zmm10 880 vpxord zmm6, zmm6, zmm11 881 vpxord zmm7, zmm7, zmm8 882 vpxord zmm4, zmm4, zmm9 883 vprord zmm5, zmm5, 12 884 vprord zmm6, zmm6, 12 885 vprord zmm7, zmm7, 12 886 vprord zmm4, zmm4, 12 887 vpaddd zmm0, zmm0, zmm19 888 vpaddd zmm1, zmm1, zmm26 889 vpaddd zmm2, zmm2, zmm22 890 vpaddd zmm3, zmm3, zmm23 891 vpaddd zmm0, zmm0, zmm5 892 vpaddd zmm1, zmm1, zmm6 893 vpaddd zmm2, zmm2, zmm7 894 vpaddd zmm3, zmm3, zmm4 895 vpxord zmm15, zmm15, zmm0 896 vpxord zmm12, zmm12, zmm1 897 vpxord zmm13, zmm13, zmm2 898 vpxord zmm14, zmm14, zmm3 899 vprord zmm15, zmm15, 8 900 vprord zmm12, zmm12, 8 901 vprord zmm13, zmm13, 8 902 vprord zmm14, zmm14, 8 903 vpaddd zmm10, zmm10, zmm15 904 vpaddd zmm11, zmm11, zmm12 905 vpaddd zmm8, zmm8, zmm13 906 vpaddd zmm9, zmm9, zmm14 907 vpxord zmm5, zmm5, zmm10 908 vpxord zmm6, zmm6, zmm11 909 vpxord zmm7, zmm7, zmm8 910 vpxord zmm4, zmm4, zmm9 911 vprord zmm5, zmm5, 7 912 vprord zmm6, zmm6, 7 913 vprord zmm7, zmm7, 7 914 vprord zmm4, zmm4, 7 915 vpaddd zmm0, zmm0, zmm27 916 vpaddd zmm1, zmm1, zmm21 917 vpaddd zmm2, zmm2, zmm17 918 vpaddd zmm3, zmm3, zmm24 919 vpaddd zmm0, zmm0, zmm4 920 vpaddd zmm1, zmm1, zmm5 921 vpaddd zmm2, zmm2, zmm6 922 vpaddd zmm3, zmm3, zmm7 923 vpxord zmm12, zmm12, zmm0 924 vpxord zmm13, zmm13, zmm1 925 vpxord zmm14, zmm14, zmm2 926 vpxord zmm15, zmm15, zmm3 927 vprord zmm12, zmm12, 16 928 vprord zmm13, zmm13, 16 929 vprord zmm14, zmm14, 16 930 vprord zmm15, zmm15, 16 931 vpaddd zmm8, zmm8, zmm12 932 vpaddd zmm9, zmm9, zmm13 933 vpaddd zmm10, zmm10, zmm14 934 vpaddd zmm11, zmm11, zmm15 935 vpxord zmm4, zmm4, zmm8 936 vpxord zmm5, zmm5, zmm9 937 vpxord zmm6, zmm6, zmm10 938 vpxord zmm7, zmm7, zmm11 939 vprord zmm4, zmm4, 12 940 vprord zmm5, zmm5, 12 941 vprord zmm6, zmm6, 12 942 vprord zmm7, zmm7, 12 943 vpaddd zmm0, zmm0, zmm31 944 vpaddd zmm1, zmm1, zmm16 945 vpaddd zmm2, zmm2, zmm25 946 vpaddd zmm3, zmm3, zmm22 947 vpaddd zmm0, zmm0, zmm4 948 vpaddd zmm1, zmm1, zmm5 949 vpaddd zmm2, zmm2, zmm6 950 vpaddd zmm3, zmm3, zmm7 951 vpxord zmm12, zmm12, zmm0 952 vpxord zmm13, zmm13, zmm1 953 vpxord zmm14, zmm14, zmm2 954 vpxord zmm15, zmm15, zmm3 955 vprord zmm12, zmm12, 8 956 vprord zmm13, zmm13, 8 957 vprord zmm14, zmm14, 8 958 vprord zmm15, zmm15, 8 959 vpaddd zmm8, zmm8, zmm12 960 vpaddd zmm9, zmm9, zmm13 961 vpaddd zmm10, zmm10, zmm14 962 vpaddd zmm11, zmm11, zmm15 963 vpxord zmm4, zmm4, zmm8 964 vpxord zmm5, zmm5, zmm9 965 vpxord zmm6, zmm6, zmm10 966 vpxord zmm7, zmm7, zmm11 967 vprord zmm4, zmm4, 7 968 vprord zmm5, zmm5, 7 969 vprord zmm6, zmm6, 7 970 vprord zmm7, zmm7, 7 971 vpaddd zmm0, zmm0, zmm30 972 vpaddd zmm1, zmm1, zmm18 973 vpaddd zmm2, zmm2, zmm19 974 vpaddd zmm3, zmm3, zmm23 975 vpaddd zmm0, zmm0, zmm5 976 vpaddd zmm1, zmm1, zmm6 977 vpaddd zmm2, zmm2, zmm7 978 vpaddd zmm3, zmm3, zmm4 979 vpxord zmm15, zmm15, zmm0 980 vpxord zmm12, zmm12, zmm1 981 vpxord zmm13, zmm13, zmm2 982 vpxord zmm14, zmm14, zmm3 983 vprord zmm15, zmm15, 16 984 vprord zmm12, zmm12, 16 985 vprord zmm13, zmm13, 16 986 vprord zmm14, zmm14, 16 987 vpaddd zmm10, zmm10, zmm15 988 vpaddd zmm11, zmm11, zmm12 989 vpaddd zmm8, zmm8, zmm13 990 vpaddd zmm9, zmm9, zmm14 991 vpxord zmm5, zmm5, zmm10 992 vpxord zmm6, zmm6, zmm11 993 vpxord zmm7, zmm7, zmm8 994 vpxord zmm4, zmm4, zmm9 995 vprord zmm5, zmm5, 12 996 vprord zmm6, zmm6, 12 997 vprord zmm7, zmm7, 12 998 vprord zmm4, zmm4, 12 999 vpaddd zmm0, zmm0, zmm26 1000 vpaddd zmm1, zmm1, zmm28 1001 vpaddd zmm2, zmm2, zmm20 1002 vpaddd zmm3, zmm3, zmm29 1003 vpaddd zmm0, zmm0, zmm5 1004 vpaddd zmm1, zmm1, zmm6 1005 vpaddd zmm2, zmm2, zmm7 1006 vpaddd zmm3, zmm3, zmm4 1007 vpxord zmm15, zmm15, zmm0 1008 vpxord zmm12, zmm12, zmm1 1009 vpxord zmm13, zmm13, zmm2 1010 vpxord zmm14, zmm14, zmm3 1011 vprord zmm15, zmm15, 8 1012 vprord zmm12, zmm12, 8 1013 vprord zmm13, zmm13, 8 1014 vprord zmm14, zmm14, 8 1015 vpaddd zmm10, zmm10, zmm15 1016 vpaddd zmm11, zmm11, zmm12 1017 vpaddd zmm8, zmm8, zmm13 1018 vpaddd zmm9, zmm9, zmm14 1019 vpxord zmm5, zmm5, zmm10 1020 vpxord zmm6, zmm6, zmm11 1021 vpxord zmm7, zmm7, zmm8 1022 vpxord zmm4, zmm4, zmm9 1023 vprord zmm5, zmm5, 7 1024 vprord zmm6, zmm6, 7 1025 vprord zmm7, zmm7, 7 1026 vprord zmm4, zmm4, 7 1027 vpxord zmm0, zmm0, zmm8 1028 vpxord zmm1, zmm1, zmm9 1029 vpxord zmm2, zmm2, zmm10 1030 vpxord zmm3, zmm3, zmm11 1031 vpxord zmm4, zmm4, zmm12 1032 vpxord zmm5, zmm5, zmm13 1033 vpxord zmm6, zmm6, zmm14 1034 vpxord zmm7, zmm7, zmm15 1035 movzx eax, byte ptr [rbp+0x38] 1036 jne 9b 1037 mov rbx, qword ptr [rbp+0x50] 1038 vpunpckldq zmm16, zmm0, zmm1 1039 vpunpckhdq zmm17, zmm0, zmm1 1040 vpunpckldq zmm18, zmm2, zmm3 1041 vpunpckhdq zmm19, zmm2, zmm3 1042 vpunpckldq zmm20, zmm4, zmm5 1043 vpunpckhdq zmm21, zmm4, zmm5 1044 vpunpckldq zmm22, zmm6, zmm7 1045 vpunpckhdq zmm23, zmm6, zmm7 1046 vpunpcklqdq zmm0, zmm16, zmm18 1047 vpunpckhqdq zmm1, zmm16, zmm18 1048 vpunpcklqdq zmm2, zmm17, zmm19 1049 vpunpckhqdq zmm3, zmm17, zmm19 1050 vpunpcklqdq zmm4, zmm20, zmm22 1051 vpunpckhqdq zmm5, zmm20, zmm22 1052 vpunpcklqdq zmm6, zmm21, zmm23 1053 vpunpckhqdq zmm7, zmm21, zmm23 1054 vshufi32x4 zmm16, zmm0, zmm4, 0x88 1055 vshufi32x4 zmm17, zmm1, zmm5, 0x88 1056 vshufi32x4 zmm18, zmm2, zmm6, 0x88 1057 vshufi32x4 zmm19, zmm3, zmm7, 0x88 1058 vshufi32x4 zmm20, zmm0, zmm4, 0xDD 1059 vshufi32x4 zmm21, zmm1, zmm5, 0xDD 1060 vshufi32x4 zmm22, zmm2, zmm6, 0xDD 1061 vshufi32x4 zmm23, zmm3, zmm7, 0xDD 1062 vshufi32x4 zmm0, zmm16, zmm17, 0x88 1063 vshufi32x4 zmm1, zmm18, zmm19, 0x88 1064 vshufi32x4 zmm2, zmm20, zmm21, 0x88 1065 vshufi32x4 zmm3, zmm22, zmm23, 0x88 1066 vshufi32x4 zmm4, zmm16, zmm17, 0xDD 1067 vshufi32x4 zmm5, zmm18, zmm19, 0xDD 1068 vshufi32x4 zmm6, zmm20, zmm21, 0xDD 1069 vshufi32x4 zmm7, zmm22, zmm23, 0xDD 1070 vmovdqu32 zmmword ptr [rbx], zmm0 1071 vmovdqu32 zmmword ptr [rbx+0x1*0x40], zmm1 1072 vmovdqu32 zmmword ptr [rbx+0x2*0x40], zmm2 1073 vmovdqu32 zmmword ptr [rbx+0x3*0x40], zmm3 1074 vmovdqu32 zmmword ptr [rbx+0x4*0x40], zmm4 1075 vmovdqu32 zmmword ptr [rbx+0x5*0x40], zmm5 1076 vmovdqu32 zmmword ptr [rbx+0x6*0x40], zmm6 1077 vmovdqu32 zmmword ptr [rbx+0x7*0x40], zmm7 1078 vmovdqa32 zmm0, zmmword ptr [rsp] 1079 vmovdqa32 zmm1, zmmword ptr [rsp+0x1*0x40] 1080 vmovdqa32 zmm2, zmm0 1081 vpaddd zmm2{k1}, zmm0, dword ptr [ADD16+rip] {1to16} 1082 vpcmpltud k2, zmm2, zmm0 1083 vpaddd zmm1 {k2}, zmm1, dword ptr [ADD1+rip] {1to16} 1084 vmovdqa32 zmmword ptr [rsp], zmm2 1085 vmovdqa32 zmmword ptr [rsp+0x1*0x40], zmm1 1086 add rdi, 128 1087 add rbx, 512 1088 mov qword ptr [rbp+0x50], rbx 1089 sub rsi, 16 1090 cmp rsi, 16 1091 jnc 2b 1092 test rsi, rsi 1093 jnz 3f 10944: 1095 vzeroupper 1096 mov rsp, rbp 1097 pop rbp 1098 pop rbx 1099 pop r12 1100 pop r13 1101 pop r14 1102 pop r15 1103 ret 1104.p2align 6 11053: 1106 test esi, 0x8 1107 je 3f 1108 vpbroadcastd ymm0, dword ptr [rcx] 1109 vpbroadcastd ymm1, dword ptr [rcx+0x4] 1110 vpbroadcastd ymm2, dword ptr [rcx+0x8] 1111 vpbroadcastd ymm3, dword ptr [rcx+0xC] 1112 vpbroadcastd ymm4, dword ptr [rcx+0x10] 1113 vpbroadcastd ymm5, dword ptr [rcx+0x14] 1114 vpbroadcastd ymm6, dword ptr [rcx+0x18] 1115 vpbroadcastd ymm7, dword ptr [rcx+0x1C] 1116 mov r8, qword ptr [rdi] 1117 mov r9, qword ptr [rdi+0x8] 1118 mov r10, qword ptr [rdi+0x10] 1119 mov r11, qword ptr [rdi+0x18] 1120 mov r12, qword ptr [rdi+0x20] 1121 mov r13, qword ptr [rdi+0x28] 1122 mov r14, qword ptr [rdi+0x30] 1123 mov r15, qword ptr [rdi+0x38] 1124 movzx eax, byte ptr [rbp+0x38] 1125 movzx ebx, byte ptr [rbp+0x40] 1126 or eax, ebx 1127 xor edx, edx 11282: 1129 movzx ebx, byte ptr [rbp+0x48] 1130 or ebx, eax 1131 add rdx, 64 1132 cmp rdx, qword ptr [rsp+0x80] 1133 cmove eax, ebx 1134 mov dword ptr [rsp+0x88], eax 1135 vmovups xmm8, xmmword ptr [r8+rdx-0x40] 1136 vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x40], 0x01 1137 vmovups xmm9, xmmword ptr [r9+rdx-0x40] 1138 vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x40], 0x01 1139 vunpcklpd ymm12, ymm8, ymm9 1140 vunpckhpd ymm13, ymm8, ymm9 1141 vmovups xmm10, xmmword ptr [r10+rdx-0x40] 1142 vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x40], 0x01 1143 vmovups xmm11, xmmword ptr [r11+rdx-0x40] 1144 vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x40], 0x01 1145 vunpcklpd ymm14, ymm10, ymm11 1146 vunpckhpd ymm15, ymm10, ymm11 1147 vshufps ymm16, ymm12, ymm14, 136 1148 vshufps ymm17, ymm12, ymm14, 221 1149 vshufps ymm18, ymm13, ymm15, 136 1150 vshufps ymm19, ymm13, ymm15, 221 1151 vmovups xmm8, xmmword ptr [r8+rdx-0x30] 1152 vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x30], 0x01 1153 vmovups xmm9, xmmword ptr [r9+rdx-0x30] 1154 vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x30], 0x01 1155 vunpcklpd ymm12, ymm8, ymm9 1156 vunpckhpd ymm13, ymm8, ymm9 1157 vmovups xmm10, xmmword ptr [r10+rdx-0x30] 1158 vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x30], 0x01 1159 vmovups xmm11, xmmword ptr [r11+rdx-0x30] 1160 vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x30], 0x01 1161 vunpcklpd ymm14, ymm10, ymm11 1162 vunpckhpd ymm15, ymm10, ymm11 1163 vshufps ymm20, ymm12, ymm14, 136 1164 vshufps ymm21, ymm12, ymm14, 221 1165 vshufps ymm22, ymm13, ymm15, 136 1166 vshufps ymm23, ymm13, ymm15, 221 1167 vmovups xmm8, xmmword ptr [r8+rdx-0x20] 1168 vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x20], 0x01 1169 vmovups xmm9, xmmword ptr [r9+rdx-0x20] 1170 vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x20], 0x01 1171 vunpcklpd ymm12, ymm8, ymm9 1172 vunpckhpd ymm13, ymm8, ymm9 1173 vmovups xmm10, xmmword ptr [r10+rdx-0x20] 1174 vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x20], 0x01 1175 vmovups xmm11, xmmword ptr [r11+rdx-0x20] 1176 vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x20], 0x01 1177 vunpcklpd ymm14, ymm10, ymm11 1178 vunpckhpd ymm15, ymm10, ymm11 1179 vshufps ymm24, ymm12, ymm14, 136 1180 vshufps ymm25, ymm12, ymm14, 221 1181 vshufps ymm26, ymm13, ymm15, 136 1182 vshufps ymm27, ymm13, ymm15, 221 1183 vmovups xmm8, xmmword ptr [r8+rdx-0x10] 1184 vinsertf128 ymm8, ymm8, xmmword ptr [r12+rdx-0x10], 0x01 1185 vmovups xmm9, xmmword ptr [r9+rdx-0x10] 1186 vinsertf128 ymm9, ymm9, xmmword ptr [r13+rdx-0x10], 0x01 1187 vunpcklpd ymm12, ymm8, ymm9 1188 vunpckhpd ymm13, ymm8, ymm9 1189 vmovups xmm10, xmmword ptr [r10+rdx-0x10] 1190 vinsertf128 ymm10, ymm10, xmmword ptr [r14+rdx-0x10], 0x01 1191 vmovups xmm11, xmmword ptr [r11+rdx-0x10] 1192 vinsertf128 ymm11, ymm11, xmmword ptr [r15+rdx-0x10], 0x01 1193 vunpcklpd ymm14, ymm10, ymm11 1194 vunpckhpd ymm15, ymm10, ymm11 1195 vshufps ymm28, ymm12, ymm14, 136 1196 vshufps ymm29, ymm12, ymm14, 221 1197 vshufps ymm30, ymm13, ymm15, 136 1198 vshufps ymm31, ymm13, ymm15, 221 1199 vpbroadcastd ymm8, dword ptr [BLAKE3_IV_0+rip] 1200 vpbroadcastd ymm9, dword ptr [BLAKE3_IV_1+rip] 1201 vpbroadcastd ymm10, dword ptr [BLAKE3_IV_2+rip] 1202 vpbroadcastd ymm11, dword ptr [BLAKE3_IV_3+rip] 1203 vmovdqa ymm12, ymmword ptr [rsp] 1204 vmovdqa ymm13, ymmword ptr [rsp+0x40] 1205 vpbroadcastd ymm14, dword ptr [BLAKE3_BLOCK_LEN+rip] 1206 vpbroadcastd ymm15, dword ptr [rsp+0x88] 1207 vpaddd ymm0, ymm0, ymm16 1208 vpaddd ymm1, ymm1, ymm18 1209 vpaddd ymm2, ymm2, ymm20 1210 vpaddd ymm3, ymm3, ymm22 1211 vpaddd ymm0, ymm0, ymm4 1212 vpaddd ymm1, ymm1, ymm5 1213 vpaddd ymm2, ymm2, ymm6 1214 vpaddd ymm3, ymm3, ymm7 1215 vpxord ymm12, ymm12, ymm0 1216 vpxord ymm13, ymm13, ymm1 1217 vpxord ymm14, ymm14, ymm2 1218 vpxord ymm15, ymm15, ymm3 1219 vprord ymm12, ymm12, 16 1220 vprord ymm13, ymm13, 16 1221 vprord ymm14, ymm14, 16 1222 vprord ymm15, ymm15, 16 1223 vpaddd ymm8, ymm8, ymm12 1224 vpaddd ymm9, ymm9, ymm13 1225 vpaddd ymm10, ymm10, ymm14 1226 vpaddd ymm11, ymm11, ymm15 1227 vpxord ymm4, ymm4, ymm8 1228 vpxord ymm5, ymm5, ymm9 1229 vpxord ymm6, ymm6, ymm10 1230 vpxord ymm7, ymm7, ymm11 1231 vprord ymm4, ymm4, 12 1232 vprord ymm5, ymm5, 12 1233 vprord ymm6, ymm6, 12 1234 vprord ymm7, ymm7, 12 1235 vpaddd ymm0, ymm0, ymm17 1236 vpaddd ymm1, ymm1, ymm19 1237 vpaddd ymm2, ymm2, ymm21 1238 vpaddd ymm3, ymm3, ymm23 1239 vpaddd ymm0, ymm0, ymm4 1240 vpaddd ymm1, ymm1, ymm5 1241 vpaddd ymm2, ymm2, ymm6 1242 vpaddd ymm3, ymm3, ymm7 1243 vpxord ymm12, ymm12, ymm0 1244 vpxord ymm13, ymm13, ymm1 1245 vpxord ymm14, ymm14, ymm2 1246 vpxord ymm15, ymm15, ymm3 1247 vprord ymm12, ymm12, 8 1248 vprord ymm13, ymm13, 8 1249 vprord ymm14, ymm14, 8 1250 vprord ymm15, ymm15, 8 1251 vpaddd ymm8, ymm8, ymm12 1252 vpaddd ymm9, ymm9, ymm13 1253 vpaddd ymm10, ymm10, ymm14 1254 vpaddd ymm11, ymm11, ymm15 1255 vpxord ymm4, ymm4, ymm8 1256 vpxord ymm5, ymm5, ymm9 1257 vpxord ymm6, ymm6, ymm10 1258 vpxord ymm7, ymm7, ymm11 1259 vprord ymm4, ymm4, 7 1260 vprord ymm5, ymm5, 7 1261 vprord ymm6, ymm6, 7 1262 vprord ymm7, ymm7, 7 1263 vpaddd ymm0, ymm0, ymm24 1264 vpaddd ymm1, ymm1, ymm26 1265 vpaddd ymm2, ymm2, ymm28 1266 vpaddd ymm3, ymm3, ymm30 1267 vpaddd ymm0, ymm0, ymm5 1268 vpaddd ymm1, ymm1, ymm6 1269 vpaddd ymm2, ymm2, ymm7 1270 vpaddd ymm3, ymm3, ymm4 1271 vpxord ymm15, ymm15, ymm0 1272 vpxord ymm12, ymm12, ymm1 1273 vpxord ymm13, ymm13, ymm2 1274 vpxord ymm14, ymm14, ymm3 1275 vprord ymm15, ymm15, 16 1276 vprord ymm12, ymm12, 16 1277 vprord ymm13, ymm13, 16 1278 vprord ymm14, ymm14, 16 1279 vpaddd ymm10, ymm10, ymm15 1280 vpaddd ymm11, ymm11, ymm12 1281 vpaddd ymm8, ymm8, ymm13 1282 vpaddd ymm9, ymm9, ymm14 1283 vpxord ymm5, ymm5, ymm10 1284 vpxord ymm6, ymm6, ymm11 1285 vpxord ymm7, ymm7, ymm8 1286 vpxord ymm4, ymm4, ymm9 1287 vprord ymm5, ymm5, 12 1288 vprord ymm6, ymm6, 12 1289 vprord ymm7, ymm7, 12 1290 vprord ymm4, ymm4, 12 1291 vpaddd ymm0, ymm0, ymm25 1292 vpaddd ymm1, ymm1, ymm27 1293 vpaddd ymm2, ymm2, ymm29 1294 vpaddd ymm3, ymm3, ymm31 1295 vpaddd ymm0, ymm0, ymm5 1296 vpaddd ymm1, ymm1, ymm6 1297 vpaddd ymm2, ymm2, ymm7 1298 vpaddd ymm3, ymm3, ymm4 1299 vpxord ymm15, ymm15, ymm0 1300 vpxord ymm12, ymm12, ymm1 1301 vpxord ymm13, ymm13, ymm2 1302 vpxord ymm14, ymm14, ymm3 1303 vprord ymm15, ymm15, 8 1304 vprord ymm12, ymm12, 8 1305 vprord ymm13, ymm13, 8 1306 vprord ymm14, ymm14, 8 1307 vpaddd ymm10, ymm10, ymm15 1308 vpaddd ymm11, ymm11, ymm12 1309 vpaddd ymm8, ymm8, ymm13 1310 vpaddd ymm9, ymm9, ymm14 1311 vpxord ymm5, ymm5, ymm10 1312 vpxord ymm6, ymm6, ymm11 1313 vpxord ymm7, ymm7, ymm8 1314 vpxord ymm4, ymm4, ymm9 1315 vprord ymm5, ymm5, 7 1316 vprord ymm6, ymm6, 7 1317 vprord ymm7, ymm7, 7 1318 vprord ymm4, ymm4, 7 1319 vpaddd ymm0, ymm0, ymm18 1320 vpaddd ymm1, ymm1, ymm19 1321 vpaddd ymm2, ymm2, ymm23 1322 vpaddd ymm3, ymm3, ymm20 1323 vpaddd ymm0, ymm0, ymm4 1324 vpaddd ymm1, ymm1, ymm5 1325 vpaddd ymm2, ymm2, ymm6 1326 vpaddd ymm3, ymm3, ymm7 1327 vpxord ymm12, ymm12, ymm0 1328 vpxord ymm13, ymm13, ymm1 1329 vpxord ymm14, ymm14, ymm2 1330 vpxord ymm15, ymm15, ymm3 1331 vprord ymm12, ymm12, 16 1332 vprord ymm13, ymm13, 16 1333 vprord ymm14, ymm14, 16 1334 vprord ymm15, ymm15, 16 1335 vpaddd ymm8, ymm8, ymm12 1336 vpaddd ymm9, ymm9, ymm13 1337 vpaddd ymm10, ymm10, ymm14 1338 vpaddd ymm11, ymm11, ymm15 1339 vpxord ymm4, ymm4, ymm8 1340 vpxord ymm5, ymm5, ymm9 1341 vpxord ymm6, ymm6, ymm10 1342 vpxord ymm7, ymm7, ymm11 1343 vprord ymm4, ymm4, 12 1344 vprord ymm5, ymm5, 12 1345 vprord ymm6, ymm6, 12 1346 vprord ymm7, ymm7, 12 1347 vpaddd ymm0, ymm0, ymm22 1348 vpaddd ymm1, ymm1, ymm26 1349 vpaddd ymm2, ymm2, ymm16 1350 vpaddd ymm3, ymm3, ymm29 1351 vpaddd ymm0, ymm0, ymm4 1352 vpaddd ymm1, ymm1, ymm5 1353 vpaddd ymm2, ymm2, ymm6 1354 vpaddd ymm3, ymm3, ymm7 1355 vpxord ymm12, ymm12, ymm0 1356 vpxord ymm13, ymm13, ymm1 1357 vpxord ymm14, ymm14, ymm2 1358 vpxord ymm15, ymm15, ymm3 1359 vprord ymm12, ymm12, 8 1360 vprord ymm13, ymm13, 8 1361 vprord ymm14, ymm14, 8 1362 vprord ymm15, ymm15, 8 1363 vpaddd ymm8, ymm8, ymm12 1364 vpaddd ymm9, ymm9, ymm13 1365 vpaddd ymm10, ymm10, ymm14 1366 vpaddd ymm11, ymm11, ymm15 1367 vpxord ymm4, ymm4, ymm8 1368 vpxord ymm5, ymm5, ymm9 1369 vpxord ymm6, ymm6, ymm10 1370 vpxord ymm7, ymm7, ymm11 1371 vprord ymm4, ymm4, 7 1372 vprord ymm5, ymm5, 7 1373 vprord ymm6, ymm6, 7 1374 vprord ymm7, ymm7, 7 1375 vpaddd ymm0, ymm0, ymm17 1376 vpaddd ymm1, ymm1, ymm28 1377 vpaddd ymm2, ymm2, ymm25 1378 vpaddd ymm3, ymm3, ymm31 1379 vpaddd ymm0, ymm0, ymm5 1380 vpaddd ymm1, ymm1, ymm6 1381 vpaddd ymm2, ymm2, ymm7 1382 vpaddd ymm3, ymm3, ymm4 1383 vpxord ymm15, ymm15, ymm0 1384 vpxord ymm12, ymm12, ymm1 1385 vpxord ymm13, ymm13, ymm2 1386 vpxord ymm14, ymm14, ymm3 1387 vprord ymm15, ymm15, 16 1388 vprord ymm12, ymm12, 16 1389 vprord ymm13, ymm13, 16 1390 vprord ymm14, ymm14, 16 1391 vpaddd ymm10, ymm10, ymm15 1392 vpaddd ymm11, ymm11, ymm12 1393 vpaddd ymm8, ymm8, ymm13 1394 vpaddd ymm9, ymm9, ymm14 1395 vpxord ymm5, ymm5, ymm10 1396 vpxord ymm6, ymm6, ymm11 1397 vpxord ymm7, ymm7, ymm8 1398 vpxord ymm4, ymm4, ymm9 1399 vprord ymm5, ymm5, 12 1400 vprord ymm6, ymm6, 12 1401 vprord ymm7, ymm7, 12 1402 vprord ymm4, ymm4, 12 1403 vpaddd ymm0, ymm0, ymm27 1404 vpaddd ymm1, ymm1, ymm21 1405 vpaddd ymm2, ymm2, ymm30 1406 vpaddd ymm3, ymm3, ymm24 1407 vpaddd ymm0, ymm0, ymm5 1408 vpaddd ymm1, ymm1, ymm6 1409 vpaddd ymm2, ymm2, ymm7 1410 vpaddd ymm3, ymm3, ymm4 1411 vpxord ymm15, ymm15, ymm0 1412 vpxord ymm12, ymm12, ymm1 1413 vpxord ymm13, ymm13, ymm2 1414 vpxord ymm14, ymm14, ymm3 1415 vprord ymm15, ymm15, 8 1416 vprord ymm12, ymm12, 8 1417 vprord ymm13, ymm13, 8 1418 vprord ymm14, ymm14, 8 1419 vpaddd ymm10, ymm10, ymm15 1420 vpaddd ymm11, ymm11, ymm12 1421 vpaddd ymm8, ymm8, ymm13 1422 vpaddd ymm9, ymm9, ymm14 1423 vpxord ymm5, ymm5, ymm10 1424 vpxord ymm6, ymm6, ymm11 1425 vpxord ymm7, ymm7, ymm8 1426 vpxord ymm4, ymm4, ymm9 1427 vprord ymm5, ymm5, 7 1428 vprord ymm6, ymm6, 7 1429 vprord ymm7, ymm7, 7 1430 vprord ymm4, ymm4, 7 1431 vpaddd ymm0, ymm0, ymm19 1432 vpaddd ymm1, ymm1, ymm26 1433 vpaddd ymm2, ymm2, ymm29 1434 vpaddd ymm3, ymm3, ymm23 1435 vpaddd ymm0, ymm0, ymm4 1436 vpaddd ymm1, ymm1, ymm5 1437 vpaddd ymm2, ymm2, ymm6 1438 vpaddd ymm3, ymm3, ymm7 1439 vpxord ymm12, ymm12, ymm0 1440 vpxord ymm13, ymm13, ymm1 1441 vpxord ymm14, ymm14, ymm2 1442 vpxord ymm15, ymm15, ymm3 1443 vprord ymm12, ymm12, 16 1444 vprord ymm13, ymm13, 16 1445 vprord ymm14, ymm14, 16 1446 vprord ymm15, ymm15, 16 1447 vpaddd ymm8, ymm8, ymm12 1448 vpaddd ymm9, ymm9, ymm13 1449 vpaddd ymm10, ymm10, ymm14 1450 vpaddd ymm11, ymm11, ymm15 1451 vpxord ymm4, ymm4, ymm8 1452 vpxord ymm5, ymm5, ymm9 1453 vpxord ymm6, ymm6, ymm10 1454 vpxord ymm7, ymm7, ymm11 1455 vprord ymm4, ymm4, 12 1456 vprord ymm5, ymm5, 12 1457 vprord ymm6, ymm6, 12 1458 vprord ymm7, ymm7, 12 1459 vpaddd ymm0, ymm0, ymm20 1460 vpaddd ymm1, ymm1, ymm28 1461 vpaddd ymm2, ymm2, ymm18 1462 vpaddd ymm3, ymm3, ymm30 1463 vpaddd ymm0, ymm0, ymm4 1464 vpaddd ymm1, ymm1, ymm5 1465 vpaddd ymm2, ymm2, ymm6 1466 vpaddd ymm3, ymm3, ymm7 1467 vpxord ymm12, ymm12, ymm0 1468 vpxord ymm13, ymm13, ymm1 1469 vpxord ymm14, ymm14, ymm2 1470 vpxord ymm15, ymm15, ymm3 1471 vprord ymm12, ymm12, 8 1472 vprord ymm13, ymm13, 8 1473 vprord ymm14, ymm14, 8 1474 vprord ymm15, ymm15, 8 1475 vpaddd ymm8, ymm8, ymm12 1476 vpaddd ymm9, ymm9, ymm13 1477 vpaddd ymm10, ymm10, ymm14 1478 vpaddd ymm11, ymm11, ymm15 1479 vpxord ymm4, ymm4, ymm8 1480 vpxord ymm5, ymm5, ymm9 1481 vpxord ymm6, ymm6, ymm10 1482 vpxord ymm7, ymm7, ymm11 1483 vprord ymm4, ymm4, 7 1484 vprord ymm5, ymm5, 7 1485 vprord ymm6, ymm6, 7 1486 vprord ymm7, ymm7, 7 1487 vpaddd ymm0, ymm0, ymm22 1488 vpaddd ymm1, ymm1, ymm25 1489 vpaddd ymm2, ymm2, ymm27 1490 vpaddd ymm3, ymm3, ymm24 1491 vpaddd ymm0, ymm0, ymm5 1492 vpaddd ymm1, ymm1, ymm6 1493 vpaddd ymm2, ymm2, ymm7 1494 vpaddd ymm3, ymm3, ymm4 1495 vpxord ymm15, ymm15, ymm0 1496 vpxord ymm12, ymm12, ymm1 1497 vpxord ymm13, ymm13, ymm2 1498 vpxord ymm14, ymm14, ymm3 1499 vprord ymm15, ymm15, 16 1500 vprord ymm12, ymm12, 16 1501 vprord ymm13, ymm13, 16 1502 vprord ymm14, ymm14, 16 1503 vpaddd ymm10, ymm10, ymm15 1504 vpaddd ymm11, ymm11, ymm12 1505 vpaddd ymm8, ymm8, ymm13 1506 vpaddd ymm9, ymm9, ymm14 1507 vpxord ymm5, ymm5, ymm10 1508 vpxord ymm6, ymm6, ymm11 1509 vpxord ymm7, ymm7, ymm8 1510 vpxord ymm4, ymm4, ymm9 1511 vprord ymm5, ymm5, 12 1512 vprord ymm6, ymm6, 12 1513 vprord ymm7, ymm7, 12 1514 vprord ymm4, ymm4, 12 1515 vpaddd ymm0, ymm0, ymm21 1516 vpaddd ymm1, ymm1, ymm16 1517 vpaddd ymm2, ymm2, ymm31 1518 vpaddd ymm3, ymm3, ymm17 1519 vpaddd ymm0, ymm0, ymm5 1520 vpaddd ymm1, ymm1, ymm6 1521 vpaddd ymm2, ymm2, ymm7 1522 vpaddd ymm3, ymm3, ymm4 1523 vpxord ymm15, ymm15, ymm0 1524 vpxord ymm12, ymm12, ymm1 1525 vpxord ymm13, ymm13, ymm2 1526 vpxord ymm14, ymm14, ymm3 1527 vprord ymm15, ymm15, 8 1528 vprord ymm12, ymm12, 8 1529 vprord ymm13, ymm13, 8 1530 vprord ymm14, ymm14, 8 1531 vpaddd ymm10, ymm10, ymm15 1532 vpaddd ymm11, ymm11, ymm12 1533 vpaddd ymm8, ymm8, ymm13 1534 vpaddd ymm9, ymm9, ymm14 1535 vpxord ymm5, ymm5, ymm10 1536 vpxord ymm6, ymm6, ymm11 1537 vpxord ymm7, ymm7, ymm8 1538 vpxord ymm4, ymm4, ymm9 1539 vprord ymm5, ymm5, 7 1540 vprord ymm6, ymm6, 7 1541 vprord ymm7, ymm7, 7 1542 vprord ymm4, ymm4, 7 1543 vpaddd ymm0, ymm0, ymm26 1544 vpaddd ymm1, ymm1, ymm28 1545 vpaddd ymm2, ymm2, ymm30 1546 vpaddd ymm3, ymm3, ymm29 1547 vpaddd ymm0, ymm0, ymm4 1548 vpaddd ymm1, ymm1, ymm5 1549 vpaddd ymm2, ymm2, ymm6 1550 vpaddd ymm3, ymm3, ymm7 1551 vpxord ymm12, ymm12, ymm0 1552 vpxord ymm13, ymm13, ymm1 1553 vpxord ymm14, ymm14, ymm2 1554 vpxord ymm15, ymm15, ymm3 1555 vprord ymm12, ymm12, 16 1556 vprord ymm13, ymm13, 16 1557 vprord ymm14, ymm14, 16 1558 vprord ymm15, ymm15, 16 1559 vpaddd ymm8, ymm8, ymm12 1560 vpaddd ymm9, ymm9, ymm13 1561 vpaddd ymm10, ymm10, ymm14 1562 vpaddd ymm11, ymm11, ymm15 1563 vpxord ymm4, ymm4, ymm8 1564 vpxord ymm5, ymm5, ymm9 1565 vpxord ymm6, ymm6, ymm10 1566 vpxord ymm7, ymm7, ymm11 1567 vprord ymm4, ymm4, 12 1568 vprord ymm5, ymm5, 12 1569 vprord ymm6, ymm6, 12 1570 vprord ymm7, ymm7, 12 1571 vpaddd ymm0, ymm0, ymm23 1572 vpaddd ymm1, ymm1, ymm25 1573 vpaddd ymm2, ymm2, ymm19 1574 vpaddd ymm3, ymm3, ymm31 1575 vpaddd ymm0, ymm0, ymm4 1576 vpaddd ymm1, ymm1, ymm5 1577 vpaddd ymm2, ymm2, ymm6 1578 vpaddd ymm3, ymm3, ymm7 1579 vpxord ymm12, ymm12, ymm0 1580 vpxord ymm13, ymm13, ymm1 1581 vpxord ymm14, ymm14, ymm2 1582 vpxord ymm15, ymm15, ymm3 1583 vprord ymm12, ymm12, 8 1584 vprord ymm13, ymm13, 8 1585 vprord ymm14, ymm14, 8 1586 vprord ymm15, ymm15, 8 1587 vpaddd ymm8, ymm8, ymm12 1588 vpaddd ymm9, ymm9, ymm13 1589 vpaddd ymm10, ymm10, ymm14 1590 vpaddd ymm11, ymm11, ymm15 1591 vpxord ymm4, ymm4, ymm8 1592 vpxord ymm5, ymm5, ymm9 1593 vpxord ymm6, ymm6, ymm10 1594 vpxord ymm7, ymm7, ymm11 1595 vprord ymm4, ymm4, 7 1596 vprord ymm5, ymm5, 7 1597 vprord ymm6, ymm6, 7 1598 vprord ymm7, ymm7, 7 1599 vpaddd ymm0, ymm0, ymm20 1600 vpaddd ymm1, ymm1, ymm27 1601 vpaddd ymm2, ymm2, ymm21 1602 vpaddd ymm3, ymm3, ymm17 1603 vpaddd ymm0, ymm0, ymm5 1604 vpaddd ymm1, ymm1, ymm6 1605 vpaddd ymm2, ymm2, ymm7 1606 vpaddd ymm3, ymm3, ymm4 1607 vpxord ymm15, ymm15, ymm0 1608 vpxord ymm12, ymm12, ymm1 1609 vpxord ymm13, ymm13, ymm2 1610 vpxord ymm14, ymm14, ymm3 1611 vprord ymm15, ymm15, 16 1612 vprord ymm12, ymm12, 16 1613 vprord ymm13, ymm13, 16 1614 vprord ymm14, ymm14, 16 1615 vpaddd ymm10, ymm10, ymm15 1616 vpaddd ymm11, ymm11, ymm12 1617 vpaddd ymm8, ymm8, ymm13 1618 vpaddd ymm9, ymm9, ymm14 1619 vpxord ymm5, ymm5, ymm10 1620 vpxord ymm6, ymm6, ymm11 1621 vpxord ymm7, ymm7, ymm8 1622 vpxord ymm4, ymm4, ymm9 1623 vprord ymm5, ymm5, 12 1624 vprord ymm6, ymm6, 12 1625 vprord ymm7, ymm7, 12 1626 vprord ymm4, ymm4, 12 1627 vpaddd ymm0, ymm0, ymm16 1628 vpaddd ymm1, ymm1, ymm18 1629 vpaddd ymm2, ymm2, ymm24 1630 vpaddd ymm3, ymm3, ymm22 1631 vpaddd ymm0, ymm0, ymm5 1632 vpaddd ymm1, ymm1, ymm6 1633 vpaddd ymm2, ymm2, ymm7 1634 vpaddd ymm3, ymm3, ymm4 1635 vpxord ymm15, ymm15, ymm0 1636 vpxord ymm12, ymm12, ymm1 1637 vpxord ymm13, ymm13, ymm2 1638 vpxord ymm14, ymm14, ymm3 1639 vprord ymm15, ymm15, 8 1640 vprord ymm12, ymm12, 8 1641 vprord ymm13, ymm13, 8 1642 vprord ymm14, ymm14, 8 1643 vpaddd ymm10, ymm10, ymm15 1644 vpaddd ymm11, ymm11, ymm12 1645 vpaddd ymm8, ymm8, ymm13 1646 vpaddd ymm9, ymm9, ymm14 1647 vpxord ymm5, ymm5, ymm10 1648 vpxord ymm6, ymm6, ymm11 1649 vpxord ymm7, ymm7, ymm8 1650 vpxord ymm4, ymm4, ymm9 1651 vprord ymm5, ymm5, 7 1652 vprord ymm6, ymm6, 7 1653 vprord ymm7, ymm7, 7 1654 vprord ymm4, ymm4, 7 1655 vpaddd ymm0, ymm0, ymm28 1656 vpaddd ymm1, ymm1, ymm25 1657 vpaddd ymm2, ymm2, ymm31 1658 vpaddd ymm3, ymm3, ymm30 1659 vpaddd ymm0, ymm0, ymm4 1660 vpaddd ymm1, ymm1, ymm5 1661 vpaddd ymm2, ymm2, ymm6 1662 vpaddd ymm3, ymm3, ymm7 1663 vpxord ymm12, ymm12, ymm0 1664 vpxord ymm13, ymm13, ymm1 1665 vpxord ymm14, ymm14, ymm2 1666 vpxord ymm15, ymm15, ymm3 1667 vprord ymm12, ymm12, 16 1668 vprord ymm13, ymm13, 16 1669 vprord ymm14, ymm14, 16 1670 vprord ymm15, ymm15, 16 1671 vpaddd ymm8, ymm8, ymm12 1672 vpaddd ymm9, ymm9, ymm13 1673 vpaddd ymm10, ymm10, ymm14 1674 vpaddd ymm11, ymm11, ymm15 1675 vpxord ymm4, ymm4, ymm8 1676 vpxord ymm5, ymm5, ymm9 1677 vpxord ymm6, ymm6, ymm10 1678 vpxord ymm7, ymm7, ymm11 1679 vprord ymm4, ymm4, 12 1680 vprord ymm5, ymm5, 12 1681 vprord ymm6, ymm6, 12 1682 vprord ymm7, ymm7, 12 1683 vpaddd ymm0, ymm0, ymm29 1684 vpaddd ymm1, ymm1, ymm27 1685 vpaddd ymm2, ymm2, ymm26 1686 vpaddd ymm3, ymm3, ymm24 1687 vpaddd ymm0, ymm0, ymm4 1688 vpaddd ymm1, ymm1, ymm5 1689 vpaddd ymm2, ymm2, ymm6 1690 vpaddd ymm3, ymm3, ymm7 1691 vpxord ymm12, ymm12, ymm0 1692 vpxord ymm13, ymm13, ymm1 1693 vpxord ymm14, ymm14, ymm2 1694 vpxord ymm15, ymm15, ymm3 1695 vprord ymm12, ymm12, 8 1696 vprord ymm13, ymm13, 8 1697 vprord ymm14, ymm14, 8 1698 vprord ymm15, ymm15, 8 1699 vpaddd ymm8, ymm8, ymm12 1700 vpaddd ymm9, ymm9, ymm13 1701 vpaddd ymm10, ymm10, ymm14 1702 vpaddd ymm11, ymm11, ymm15 1703 vpxord ymm4, ymm4, ymm8 1704 vpxord ymm5, ymm5, ymm9 1705 vpxord ymm6, ymm6, ymm10 1706 vpxord ymm7, ymm7, ymm11 1707 vprord ymm4, ymm4, 7 1708 vprord ymm5, ymm5, 7 1709 vprord ymm6, ymm6, 7 1710 vprord ymm7, ymm7, 7 1711 vpaddd ymm0, ymm0, ymm23 1712 vpaddd ymm1, ymm1, ymm21 1713 vpaddd ymm2, ymm2, ymm16 1714 vpaddd ymm3, ymm3, ymm22 1715 vpaddd ymm0, ymm0, ymm5 1716 vpaddd ymm1, ymm1, ymm6 1717 vpaddd ymm2, ymm2, ymm7 1718 vpaddd ymm3, ymm3, ymm4 1719 vpxord ymm15, ymm15, ymm0 1720 vpxord ymm12, ymm12, ymm1 1721 vpxord ymm13, ymm13, ymm2 1722 vpxord ymm14, ymm14, ymm3 1723 vprord ymm15, ymm15, 16 1724 vprord ymm12, ymm12, 16 1725 vprord ymm13, ymm13, 16 1726 vprord ymm14, ymm14, 16 1727 vpaddd ymm10, ymm10, ymm15 1728 vpaddd ymm11, ymm11, ymm12 1729 vpaddd ymm8, ymm8, ymm13 1730 vpaddd ymm9, ymm9, ymm14 1731 vpxord ymm5, ymm5, ymm10 1732 vpxord ymm6, ymm6, ymm11 1733 vpxord ymm7, ymm7, ymm8 1734 vpxord ymm4, ymm4, ymm9 1735 vprord ymm5, ymm5, 12 1736 vprord ymm6, ymm6, 12 1737 vprord ymm7, ymm7, 12 1738 vprord ymm4, ymm4, 12 1739 vpaddd ymm0, ymm0, ymm18 1740 vpaddd ymm1, ymm1, ymm19 1741 vpaddd ymm2, ymm2, ymm17 1742 vpaddd ymm3, ymm3, ymm20 1743 vpaddd ymm0, ymm0, ymm5 1744 vpaddd ymm1, ymm1, ymm6 1745 vpaddd ymm2, ymm2, ymm7 1746 vpaddd ymm3, ymm3, ymm4 1747 vpxord ymm15, ymm15, ymm0 1748 vpxord ymm12, ymm12, ymm1 1749 vpxord ymm13, ymm13, ymm2 1750 vpxord ymm14, ymm14, ymm3 1751 vprord ymm15, ymm15, 8 1752 vprord ymm12, ymm12, 8 1753 vprord ymm13, ymm13, 8 1754 vprord ymm14, ymm14, 8 1755 vpaddd ymm10, ymm10, ymm15 1756 vpaddd ymm11, ymm11, ymm12 1757 vpaddd ymm8, ymm8, ymm13 1758 vpaddd ymm9, ymm9, ymm14 1759 vpxord ymm5, ymm5, ymm10 1760 vpxord ymm6, ymm6, ymm11 1761 vpxord ymm7, ymm7, ymm8 1762 vpxord ymm4, ymm4, ymm9 1763 vprord ymm5, ymm5, 7 1764 vprord ymm6, ymm6, 7 1765 vprord ymm7, ymm7, 7 1766 vprord ymm4, ymm4, 7 1767 vpaddd ymm0, ymm0, ymm25 1768 vpaddd ymm1, ymm1, ymm27 1769 vpaddd ymm2, ymm2, ymm24 1770 vpaddd ymm3, ymm3, ymm31 1771 vpaddd ymm0, ymm0, ymm4 1772 vpaddd ymm1, ymm1, ymm5 1773 vpaddd ymm2, ymm2, ymm6 1774 vpaddd ymm3, ymm3, ymm7 1775 vpxord ymm12, ymm12, ymm0 1776 vpxord ymm13, ymm13, ymm1 1777 vpxord ymm14, ymm14, ymm2 1778 vpxord ymm15, ymm15, ymm3 1779 vprord ymm12, ymm12, 16 1780 vprord ymm13, ymm13, 16 1781 vprord ymm14, ymm14, 16 1782 vprord ymm15, ymm15, 16 1783 vpaddd ymm8, ymm8, ymm12 1784 vpaddd ymm9, ymm9, ymm13 1785 vpaddd ymm10, ymm10, ymm14 1786 vpaddd ymm11, ymm11, ymm15 1787 vpxord ymm4, ymm4, ymm8 1788 vpxord ymm5, ymm5, ymm9 1789 vpxord ymm6, ymm6, ymm10 1790 vpxord ymm7, ymm7, ymm11 1791 vprord ymm4, ymm4, 12 1792 vprord ymm5, ymm5, 12 1793 vprord ymm6, ymm6, 12 1794 vprord ymm7, ymm7, 12 1795 vpaddd ymm0, ymm0, ymm30 1796 vpaddd ymm1, ymm1, ymm21 1797 vpaddd ymm2, ymm2, ymm28 1798 vpaddd ymm3, ymm3, ymm17 1799 vpaddd ymm0, ymm0, ymm4 1800 vpaddd ymm1, ymm1, ymm5 1801 vpaddd ymm2, ymm2, ymm6 1802 vpaddd ymm3, ymm3, ymm7 1803 vpxord ymm12, ymm12, ymm0 1804 vpxord ymm13, ymm13, ymm1 1805 vpxord ymm14, ymm14, ymm2 1806 vpxord ymm15, ymm15, ymm3 1807 vprord ymm12, ymm12, 8 1808 vprord ymm13, ymm13, 8 1809 vprord ymm14, ymm14, 8 1810 vprord ymm15, ymm15, 8 1811 vpaddd ymm8, ymm8, ymm12 1812 vpaddd ymm9, ymm9, ymm13 1813 vpaddd ymm10, ymm10, ymm14 1814 vpaddd ymm11, ymm11, ymm15 1815 vpxord ymm4, ymm4, ymm8 1816 vpxord ymm5, ymm5, ymm9 1817 vpxord ymm6, ymm6, ymm10 1818 vpxord ymm7, ymm7, ymm11 1819 vprord ymm4, ymm4, 7 1820 vprord ymm5, ymm5, 7 1821 vprord ymm6, ymm6, 7 1822 vprord ymm7, ymm7, 7 1823 vpaddd ymm0, ymm0, ymm29 1824 vpaddd ymm1, ymm1, ymm16 1825 vpaddd ymm2, ymm2, ymm18 1826 vpaddd ymm3, ymm3, ymm20 1827 vpaddd ymm0, ymm0, ymm5 1828 vpaddd ymm1, ymm1, ymm6 1829 vpaddd ymm2, ymm2, ymm7 1830 vpaddd ymm3, ymm3, ymm4 1831 vpxord ymm15, ymm15, ymm0 1832 vpxord ymm12, ymm12, ymm1 1833 vpxord ymm13, ymm13, ymm2 1834 vpxord ymm14, ymm14, ymm3 1835 vprord ymm15, ymm15, 16 1836 vprord ymm12, ymm12, 16 1837 vprord ymm13, ymm13, 16 1838 vprord ymm14, ymm14, 16 1839 vpaddd ymm10, ymm10, ymm15 1840 vpaddd ymm11, ymm11, ymm12 1841 vpaddd ymm8, ymm8, ymm13 1842 vpaddd ymm9, ymm9, ymm14 1843 vpxord ymm5, ymm5, ymm10 1844 vpxord ymm6, ymm6, ymm11 1845 vpxord ymm7, ymm7, ymm8 1846 vpxord ymm4, ymm4, ymm9 1847 vprord ymm5, ymm5, 12 1848 vprord ymm6, ymm6, 12 1849 vprord ymm7, ymm7, 12 1850 vprord ymm4, ymm4, 12 1851 vpaddd ymm0, ymm0, ymm19 1852 vpaddd ymm1, ymm1, ymm26 1853 vpaddd ymm2, ymm2, ymm22 1854 vpaddd ymm3, ymm3, ymm23 1855 vpaddd ymm0, ymm0, ymm5 1856 vpaddd ymm1, ymm1, ymm6 1857 vpaddd ymm2, ymm2, ymm7 1858 vpaddd ymm3, ymm3, ymm4 1859 vpxord ymm15, ymm15, ymm0 1860 vpxord ymm12, ymm12, ymm1 1861 vpxord ymm13, ymm13, ymm2 1862 vpxord ymm14, ymm14, ymm3 1863 vprord ymm15, ymm15, 8 1864 vprord ymm12, ymm12, 8 1865 vprord ymm13, ymm13, 8 1866 vprord ymm14, ymm14, 8 1867 vpaddd ymm10, ymm10, ymm15 1868 vpaddd ymm11, ymm11, ymm12 1869 vpaddd ymm8, ymm8, ymm13 1870 vpaddd ymm9, ymm9, ymm14 1871 vpxord ymm5, ymm5, ymm10 1872 vpxord ymm6, ymm6, ymm11 1873 vpxord ymm7, ymm7, ymm8 1874 vpxord ymm4, ymm4, ymm9 1875 vprord ymm5, ymm5, 7 1876 vprord ymm6, ymm6, 7 1877 vprord ymm7, ymm7, 7 1878 vprord ymm4, ymm4, 7 1879 vpaddd ymm0, ymm0, ymm27 1880 vpaddd ymm1, ymm1, ymm21 1881 vpaddd ymm2, ymm2, ymm17 1882 vpaddd ymm3, ymm3, ymm24 1883 vpaddd ymm0, ymm0, ymm4 1884 vpaddd ymm1, ymm1, ymm5 1885 vpaddd ymm2, ymm2, ymm6 1886 vpaddd ymm3, ymm3, ymm7 1887 vpxord ymm12, ymm12, ymm0 1888 vpxord ymm13, ymm13, ymm1 1889 vpxord ymm14, ymm14, ymm2 1890 vpxord ymm15, ymm15, ymm3 1891 vprord ymm12, ymm12, 16 1892 vprord ymm13, ymm13, 16 1893 vprord ymm14, ymm14, 16 1894 vprord ymm15, ymm15, 16 1895 vpaddd ymm8, ymm8, ymm12 1896 vpaddd ymm9, ymm9, ymm13 1897 vpaddd ymm10, ymm10, ymm14 1898 vpaddd ymm11, ymm11, ymm15 1899 vpxord ymm4, ymm4, ymm8 1900 vpxord ymm5, ymm5, ymm9 1901 vpxord ymm6, ymm6, ymm10 1902 vpxord ymm7, ymm7, ymm11 1903 vprord ymm4, ymm4, 12 1904 vprord ymm5, ymm5, 12 1905 vprord ymm6, ymm6, 12 1906 vprord ymm7, ymm7, 12 1907 vpaddd ymm0, ymm0, ymm31 1908 vpaddd ymm1, ymm1, ymm16 1909 vpaddd ymm2, ymm2, ymm25 1910 vpaddd ymm3, ymm3, ymm22 1911 vpaddd ymm0, ymm0, ymm4 1912 vpaddd ymm1, ymm1, ymm5 1913 vpaddd ymm2, ymm2, ymm6 1914 vpaddd ymm3, ymm3, ymm7 1915 vpxord ymm12, ymm12, ymm0 1916 vpxord ymm13, ymm13, ymm1 1917 vpxord ymm14, ymm14, ymm2 1918 vpxord ymm15, ymm15, ymm3 1919 vprord ymm12, ymm12, 8 1920 vprord ymm13, ymm13, 8 1921 vprord ymm14, ymm14, 8 1922 vprord ymm15, ymm15, 8 1923 vpaddd ymm8, ymm8, ymm12 1924 vpaddd ymm9, ymm9, ymm13 1925 vpaddd ymm10, ymm10, ymm14 1926 vpaddd ymm11, ymm11, ymm15 1927 vpxord ymm4, ymm4, ymm8 1928 vpxord ymm5, ymm5, ymm9 1929 vpxord ymm6, ymm6, ymm10 1930 vpxord ymm7, ymm7, ymm11 1931 vprord ymm4, ymm4, 7 1932 vprord ymm5, ymm5, 7 1933 vprord ymm6, ymm6, 7 1934 vprord ymm7, ymm7, 7 1935 vpaddd ymm0, ymm0, ymm30 1936 vpaddd ymm1, ymm1, ymm18 1937 vpaddd ymm2, ymm2, ymm19 1938 vpaddd ymm3, ymm3, ymm23 1939 vpaddd ymm0, ymm0, ymm5 1940 vpaddd ymm1, ymm1, ymm6 1941 vpaddd ymm2, ymm2, ymm7 1942 vpaddd ymm3, ymm3, ymm4 1943 vpxord ymm15, ymm15, ymm0 1944 vpxord ymm12, ymm12, ymm1 1945 vpxord ymm13, ymm13, ymm2 1946 vpxord ymm14, ymm14, ymm3 1947 vprord ymm15, ymm15, 16 1948 vprord ymm12, ymm12, 16 1949 vprord ymm13, ymm13, 16 1950 vprord ymm14, ymm14, 16 1951 vpaddd ymm10, ymm10, ymm15 1952 vpaddd ymm11, ymm11, ymm12 1953 vpaddd ymm8, ymm8, ymm13 1954 vpaddd ymm9, ymm9, ymm14 1955 vpxord ymm5, ymm5, ymm10 1956 vpxord ymm6, ymm6, ymm11 1957 vpxord ymm7, ymm7, ymm8 1958 vpxord ymm4, ymm4, ymm9 1959 vprord ymm5, ymm5, 12 1960 vprord ymm6, ymm6, 12 1961 vprord ymm7, ymm7, 12 1962 vprord ymm4, ymm4, 12 1963 vpaddd ymm0, ymm0, ymm26 1964 vpaddd ymm1, ymm1, ymm28 1965 vpaddd ymm2, ymm2, ymm20 1966 vpaddd ymm3, ymm3, ymm29 1967 vpaddd ymm0, ymm0, ymm5 1968 vpaddd ymm1, ymm1, ymm6 1969 vpaddd ymm2, ymm2, ymm7 1970 vpaddd ymm3, ymm3, ymm4 1971 vpxord ymm15, ymm15, ymm0 1972 vpxord ymm12, ymm12, ymm1 1973 vpxord ymm13, ymm13, ymm2 1974 vpxord ymm14, ymm14, ymm3 1975 vprord ymm15, ymm15, 8 1976 vprord ymm12, ymm12, 8 1977 vprord ymm13, ymm13, 8 1978 vprord ymm14, ymm14, 8 1979 vpaddd ymm10, ymm10, ymm15 1980 vpaddd ymm11, ymm11, ymm12 1981 vpaddd ymm8, ymm8, ymm13 1982 vpaddd ymm9, ymm9, ymm14 1983 vpxord ymm5, ymm5, ymm10 1984 vpxord ymm6, ymm6, ymm11 1985 vpxord ymm7, ymm7, ymm8 1986 vpxord ymm4, ymm4, ymm9 1987 vprord ymm5, ymm5, 7 1988 vprord ymm6, ymm6, 7 1989 vprord ymm7, ymm7, 7 1990 vprord ymm4, ymm4, 7 1991 vpxor ymm0, ymm0, ymm8 1992 vpxor ymm1, ymm1, ymm9 1993 vpxor ymm2, ymm2, ymm10 1994 vpxor ymm3, ymm3, ymm11 1995 vpxor ymm4, ymm4, ymm12 1996 vpxor ymm5, ymm5, ymm13 1997 vpxor ymm6, ymm6, ymm14 1998 vpxor ymm7, ymm7, ymm15 1999 movzx eax, byte ptr [rbp+0x38] 2000 jne 2b 2001 mov rbx, qword ptr [rbp+0x50] 2002 vunpcklps ymm8, ymm0, ymm1 2003 vunpcklps ymm9, ymm2, ymm3 2004 vunpckhps ymm10, ymm0, ymm1 2005 vunpcklps ymm11, ymm4, ymm5 2006 vunpcklps ymm0, ymm6, ymm7 2007 vshufps ymm12, ymm8, ymm9, 78 2008 vblendps ymm1, ymm8, ymm12, 0xCC 2009 vshufps ymm8, ymm11, ymm0, 78 2010 vunpckhps ymm13, ymm2, ymm3 2011 vblendps ymm2, ymm11, ymm8, 0xCC 2012 vblendps ymm3, ymm12, ymm9, 0xCC 2013 vperm2f128 ymm12, ymm1, ymm2, 0x20 2014 vmovups ymmword ptr [rbx], ymm12 2015 vunpckhps ymm14, ymm4, ymm5 2016 vblendps ymm4, ymm8, ymm0, 0xCC 2017 vunpckhps ymm15, ymm6, ymm7 2018 vperm2f128 ymm7, ymm3, ymm4, 0x20 2019 vmovups ymmword ptr [rbx+0x20], ymm7 2020 vshufps ymm5, ymm10, ymm13, 78 2021 vblendps ymm6, ymm5, ymm13, 0xCC 2022 vshufps ymm13, ymm14, ymm15, 78 2023 vblendps ymm10, ymm10, ymm5, 0xCC 2024 vblendps ymm14, ymm14, ymm13, 0xCC 2025 vperm2f128 ymm8, ymm10, ymm14, 0x20 2026 vmovups ymmword ptr [rbx+0x40], ymm8 2027 vblendps ymm15, ymm13, ymm15, 0xCC 2028 vperm2f128 ymm13, ymm6, ymm15, 0x20 2029 vmovups ymmword ptr [rbx+0x60], ymm13 2030 vperm2f128 ymm9, ymm1, ymm2, 0x31 2031 vperm2f128 ymm11, ymm3, ymm4, 0x31 2032 vmovups ymmword ptr [rbx+0x80], ymm9 2033 vperm2f128 ymm14, ymm10, ymm14, 0x31 2034 vperm2f128 ymm15, ymm6, ymm15, 0x31 2035 vmovups ymmword ptr [rbx+0xA0], ymm11 2036 vmovups ymmword ptr [rbx+0xC0], ymm14 2037 vmovups ymmword ptr [rbx+0xE0], ymm15 2038 vmovdqa ymm0, ymmword ptr [rsp] 2039 vmovdqa ymm2, ymmword ptr [rsp+0x2*0x20] 2040 vmovdqa32 ymm0 {k1}, ymmword ptr [rsp+0x1*0x20] 2041 vmovdqa32 ymm2 {k1}, ymmword ptr [rsp+0x3*0x20] 2042 vmovdqa ymmword ptr [rsp], ymm0 2043 vmovdqa ymmword ptr [rsp+0x2*0x20], ymm2 2044 add rbx, 256 2045 mov qword ptr [rbp+0x50], rbx 2046 add rdi, 64 2047 sub rsi, 8 20483: 2049 mov rbx, qword ptr [rbp+0x50] 2050 mov r15, qword ptr [rsp+0x80] 2051 movzx r13, byte ptr [rbp+0x38] 2052 movzx r12, byte ptr [rbp+0x48] 2053 test esi, 0x4 2054 je 3f 2055 vbroadcasti32x4 zmm0, xmmword ptr [rcx] 2056 vbroadcasti32x4 zmm1, xmmword ptr [rcx+0x1*0x10] 2057 vmovdqa xmm12, xmmword ptr [rsp] 2058 vmovdqa xmm13, xmmword ptr [rsp+0x4*0x10] 2059 vpunpckldq xmm14, xmm12, xmm13 2060 vpunpckhdq xmm15, xmm12, xmm13 2061 vpermq ymm14, ymm14, 0xDC 2062 vpermq ymm15, ymm15, 0xDC 2063 vpbroadcastd zmm12, dword ptr [BLAKE3_BLOCK_LEN+rip] 2064 vinserti64x4 zmm13, zmm14, ymm15, 0x01 2065 mov eax, 17476 2066 kmovw k2, eax 2067 vpblendmd zmm13 {k2}, zmm13, zmm12 2068 vbroadcasti32x4 zmm15, xmmword ptr [BLAKE3_IV+rip] 2069 mov r8, qword ptr [rdi] 2070 mov r9, qword ptr [rdi+0x8] 2071 mov r10, qword ptr [rdi+0x10] 2072 mov r11, qword ptr [rdi+0x18] 2073 mov eax, 43690 2074 kmovw k3, eax 2075 mov eax, 34952 2076 kmovw k4, eax 2077 movzx eax, byte ptr [rbp+0x40] 2078 or eax, r13d 2079 xor edx, edx 2080.p2align 5 20812: 2082 mov r14d, eax 2083 or eax, r12d 2084 add rdx, 64 2085 cmp rdx, r15 2086 cmovne eax, r14d 2087 mov dword ptr [rsp+0x88], eax 2088 vmovdqa32 zmm2, zmm15 2089 vpbroadcastd zmm8, dword ptr [rsp+0x22*0x4] 2090 vpblendmd zmm3 {k4}, zmm13, zmm8 2091 vmovups zmm8, zmmword ptr [r8+rdx-0x1*0x40] 2092 vinserti32x4 zmm8, zmm8, xmmword ptr [r9+rdx-0x4*0x10], 0x01 2093 vinserti32x4 zmm8, zmm8, xmmword ptr [r10+rdx-0x4*0x10], 0x02 2094 vinserti32x4 zmm8, zmm8, xmmword ptr [r11+rdx-0x4*0x10], 0x03 2095 vmovups zmm9, zmmword ptr [r8+rdx-0x30] 2096 vinserti32x4 zmm9, zmm9, xmmword ptr [r9+rdx-0x3*0x10], 0x01 2097 vinserti32x4 zmm9, zmm9, xmmword ptr [r10+rdx-0x3*0x10], 0x02 2098 vinserti32x4 zmm9, zmm9, xmmword ptr [r11+rdx-0x3*0x10], 0x03 2099 vshufps zmm4, zmm8, zmm9, 136 2100 vshufps zmm5, zmm8, zmm9, 221 2101 vmovups zmm8, zmmword ptr [r8+rdx-0x20] 2102 vinserti32x4 zmm8, zmm8, xmmword ptr [r9+rdx-0x2*0x10], 0x01 2103 vinserti32x4 zmm8, zmm8, xmmword ptr [r10+rdx-0x2*0x10], 0x02 2104 vinserti32x4 zmm8, zmm8, xmmword ptr [r11+rdx-0x2*0x10], 0x03 2105 vmovups zmm9, zmmword ptr [r8+rdx-0x10] 2106 vinserti32x4 zmm9, zmm9, xmmword ptr [r9+rdx-0x1*0x10], 0x01 2107 vinserti32x4 zmm9, zmm9, xmmword ptr [r10+rdx-0x1*0x10], 0x02 2108 vinserti32x4 zmm9, zmm9, xmmword ptr [r11+rdx-0x1*0x10], 0x03 2109 vshufps zmm6, zmm8, zmm9, 136 2110 vshufps zmm7, zmm8, zmm9, 221 2111 vpshufd zmm6, zmm6, 0x93 2112 vpshufd zmm7, zmm7, 0x93 2113 mov al, 7 21149: 2115 vpaddd zmm0, zmm0, zmm4 2116 vpaddd zmm0, zmm0, zmm1 2117 vpxord zmm3, zmm3, zmm0 2118 vprord zmm3, zmm3, 16 2119 vpaddd zmm2, zmm2, zmm3 2120 vpxord zmm1, zmm1, zmm2 2121 vprord zmm1, zmm1, 12 2122 vpaddd zmm0, zmm0, zmm5 2123 vpaddd zmm0, zmm0, zmm1 2124 vpxord zmm3, zmm3, zmm0 2125 vprord zmm3, zmm3, 8 2126 vpaddd zmm2, zmm2, zmm3 2127 vpxord zmm1, zmm1, zmm2 2128 vprord zmm1, zmm1, 7 2129 vpshufd zmm0, zmm0, 0x93 2130 vpshufd zmm3, zmm3, 0x4E 2131 vpshufd zmm2, zmm2, 0x39 2132 vpaddd zmm0, zmm0, zmm6 2133 vpaddd zmm0, zmm0, zmm1 2134 vpxord zmm3, zmm3, zmm0 2135 vprord zmm3, zmm3, 16 2136 vpaddd zmm2, zmm2, zmm3 2137 vpxord zmm1, zmm1, zmm2 2138 vprord zmm1, zmm1, 12 2139 vpaddd zmm0, zmm0, zmm7 2140 vpaddd zmm0, zmm0, zmm1 2141 vpxord zmm3, zmm3, zmm0 2142 vprord zmm3, zmm3, 8 2143 vpaddd zmm2, zmm2, zmm3 2144 vpxord zmm1, zmm1, zmm2 2145 vprord zmm1, zmm1, 7 2146 vpshufd zmm0, zmm0, 0x39 2147 vpshufd zmm3, zmm3, 0x4E 2148 vpshufd zmm2, zmm2, 0x93 2149 dec al 2150 jz 9f 2151 vshufps zmm8, zmm4, zmm5, 214 2152 vpshufd zmm9, zmm4, 0x0F 2153 vpshufd zmm4, zmm8, 0x39 2154 vshufps zmm8, zmm6, zmm7, 250 2155 vpblendmd zmm9 {k3}, zmm9, zmm8 2156 vpunpcklqdq zmm8, zmm7, zmm5 2157 vpblendmd zmm8 {k4}, zmm8, zmm6 2158 vpshufd zmm8, zmm8, 0x78 2159 vpunpckhdq zmm5, zmm5, zmm7 2160 vpunpckldq zmm6, zmm6, zmm5 2161 vpshufd zmm7, zmm6, 0x1E 2162 vmovdqa32 zmm5, zmm9 2163 vmovdqa32 zmm6, zmm8 2164 jmp 9b 21659: 2166 vpxord zmm0, zmm0, zmm2 2167 vpxord zmm1, zmm1, zmm3 2168 mov eax, r13d 2169 cmp rdx, r15 2170 jne 2b 2171 vmovdqu xmmword ptr [rbx], xmm0 2172 vmovdqu xmmword ptr [rbx+0x10], xmm1 2173 vextracti128 xmmword ptr [rbx+0x20], ymm0, 0x01 2174 vextracti128 xmmword ptr [rbx+0x30], ymm1, 0x01 2175 vextracti32x4 xmmword ptr [rbx+0x4*0x10], zmm0, 0x02 2176 vextracti32x4 xmmword ptr [rbx+0x5*0x10], zmm1, 0x02 2177 vextracti32x4 xmmword ptr [rbx+0x6*0x10], zmm0, 0x03 2178 vextracti32x4 xmmword ptr [rbx+0x7*0x10], zmm1, 0x03 2179 vmovdqa xmm0, xmmword ptr [rsp] 2180 vmovdqa xmm2, xmmword ptr [rsp+0x40] 2181 vmovdqa32 xmm0 {k1}, xmmword ptr [rsp+0x1*0x10] 2182 vmovdqa32 xmm2 {k1}, xmmword ptr [rsp+0x5*0x10] 2183 vmovdqa xmmword ptr [rsp], xmm0 2184 vmovdqa xmmword ptr [rsp+0x40], xmm2 2185 add rbx, 128 2186 add rdi, 32 2187 sub rsi, 4 21883: 2189 test esi, 0x2 2190 je 3f 2191 vbroadcasti128 ymm0, xmmword ptr [rcx] 2192 vbroadcasti128 ymm1, xmmword ptr [rcx+0x10] 2193 vmovd xmm13, dword ptr [rsp] 2194 vpinsrd xmm13, xmm13, dword ptr [rsp+0x40], 1 2195 vpinsrd xmm13, xmm13, dword ptr [BLAKE3_BLOCK_LEN+rip], 2 2196 vmovd xmm14, dword ptr [rsp+0x4] 2197 vpinsrd xmm14, xmm14, dword ptr [rsp+0x44], 1 2198 vpinsrd xmm14, xmm14, dword ptr [BLAKE3_BLOCK_LEN+rip], 2 2199 vinserti128 ymm13, ymm13, xmm14, 0x01 2200 mov r8, qword ptr [rdi] 2201 mov r9, qword ptr [rdi+0x8] 2202 movzx eax, byte ptr [rbp+0x40] 2203 or eax, r13d 2204 xor edx, edx 2205.p2align 5 22062: 2207 mov r14d, eax 2208 or eax, r12d 2209 add rdx, 64 2210 cmp rdx, r15 2211 cmovne eax, r14d 2212 mov dword ptr [rsp+0x88], eax 2213 vbroadcasti128 ymm2, xmmword ptr [BLAKE3_IV+rip] 2214 vpbroadcastd ymm8, dword ptr [rsp+0x88] 2215 vpblendd ymm3, ymm13, ymm8, 0x88 2216 vmovups ymm8, ymmword ptr [r8+rdx-0x40] 2217 vinsertf128 ymm8, ymm8, xmmword ptr [r9+rdx-0x40], 0x01 2218 vmovups ymm9, ymmword ptr [r8+rdx-0x30] 2219 vinsertf128 ymm9, ymm9, xmmword ptr [r9+rdx-0x30], 0x01 2220 vshufps ymm4, ymm8, ymm9, 136 2221 vshufps ymm5, ymm8, ymm9, 221 2222 vmovups ymm8, ymmword ptr [r8+rdx-0x20] 2223 vinsertf128 ymm8, ymm8, xmmword ptr [r9+rdx-0x20], 0x01 2224 vmovups ymm9, ymmword ptr [r8+rdx-0x10] 2225 vinsertf128 ymm9, ymm9, xmmword ptr [r9+rdx-0x10], 0x01 2226 vshufps ymm6, ymm8, ymm9, 136 2227 vshufps ymm7, ymm8, ymm9, 221 2228 vpshufd ymm6, ymm6, 0x93 2229 vpshufd ymm7, ymm7, 0x93 2230 mov al, 7 22319: 2232 vpaddd ymm0, ymm0, ymm4 2233 vpaddd ymm0, ymm0, ymm1 2234 vpxord ymm3, ymm3, ymm0 2235 vprord ymm3, ymm3, 16 2236 vpaddd ymm2, ymm2, ymm3 2237 vpxord ymm1, ymm1, ymm2 2238 vprord ymm1, ymm1, 12 2239 vpaddd ymm0, ymm0, ymm5 2240 vpaddd ymm0, ymm0, ymm1 2241 vpxord ymm3, ymm3, ymm0 2242 vprord ymm3, ymm3, 8 2243 vpaddd ymm2, ymm2, ymm3 2244 vpxord ymm1, ymm1, ymm2 2245 vprord ymm1, ymm1, 7 2246 vpshufd ymm0, ymm0, 0x93 2247 vpshufd ymm3, ymm3, 0x4E 2248 vpshufd ymm2, ymm2, 0x39 2249 vpaddd ymm0, ymm0, ymm6 2250 vpaddd ymm0, ymm0, ymm1 2251 vpxord ymm3, ymm3, ymm0 2252 vprord ymm3, ymm3, 16 2253 vpaddd ymm2, ymm2, ymm3 2254 vpxord ymm1, ymm1, ymm2 2255 vprord ymm1, ymm1, 12 2256 vpaddd ymm0, ymm0, ymm7 2257 vpaddd ymm0, ymm0, ymm1 2258 vpxord ymm3, ymm3, ymm0 2259 vprord ymm3, ymm3, 8 2260 vpaddd ymm2, ymm2, ymm3 2261 vpxord ymm1, ymm1, ymm2 2262 vprord ymm1, ymm1, 7 2263 vpshufd ymm0, ymm0, 0x39 2264 vpshufd ymm3, ymm3, 0x4E 2265 vpshufd ymm2, ymm2, 0x93 2266 dec al 2267 jz 9f 2268 vshufps ymm8, ymm4, ymm5, 214 2269 vpshufd ymm9, ymm4, 0x0F 2270 vpshufd ymm4, ymm8, 0x39 2271 vshufps ymm8, ymm6, ymm7, 250 2272 vpblendd ymm9, ymm9, ymm8, 0xAA 2273 vpunpcklqdq ymm8, ymm7, ymm5 2274 vpblendd ymm8, ymm8, ymm6, 0x88 2275 vpshufd ymm8, ymm8, 0x78 2276 vpunpckhdq ymm5, ymm5, ymm7 2277 vpunpckldq ymm6, ymm6, ymm5 2278 vpshufd ymm7, ymm6, 0x1E 2279 vmovdqa ymm5, ymm9 2280 vmovdqa ymm6, ymm8 2281 jmp 9b 22829: 2283 vpxor ymm0, ymm0, ymm2 2284 vpxor ymm1, ymm1, ymm3 2285 mov eax, r13d 2286 cmp rdx, r15 2287 jne 2b 2288 vmovdqu xmmword ptr [rbx], xmm0 2289 vmovdqu xmmword ptr [rbx+0x10], xmm1 2290 vextracti128 xmmword ptr [rbx+0x20], ymm0, 0x01 2291 vextracti128 xmmword ptr [rbx+0x30], ymm1, 0x01 2292 vmovdqa xmm0, xmmword ptr [rsp] 2293 vmovdqa xmm2, xmmword ptr [rsp+0x4*0x10] 2294 vmovdqu32 xmm0 {k1}, xmmword ptr [rsp+0x8] 2295 vmovdqu32 xmm2 {k1}, xmmword ptr [rsp+0x48] 2296 vmovdqa xmmword ptr [rsp], xmm0 2297 vmovdqa xmmword ptr [rsp+0x4*0x10], xmm2 2298 add rbx, 64 2299 add rdi, 16 2300 sub rsi, 2 23013: 2302 test esi, 0x1 2303 je 4b 2304 vmovdqu xmm0, xmmword ptr [rcx] 2305 vmovdqu xmm1, xmmword ptr [rcx+0x10] 2306 vmovd xmm14, dword ptr [rsp] 2307 vpinsrd xmm14, xmm14, dword ptr [rsp+0x40], 1 2308 vpinsrd xmm14, xmm14, dword ptr [BLAKE3_BLOCK_LEN+rip], 2 2309 vmovdqa xmm15, xmmword ptr [BLAKE3_IV+rip] 2310 mov r8, qword ptr [rdi] 2311 movzx eax, byte ptr [rbp+0x40] 2312 or eax, r13d 2313 xor edx, edx 2314.p2align 5 23152: 2316 mov r14d, eax 2317 or eax, r12d 2318 add rdx, 64 2319 cmp rdx, r15 2320 cmovne eax, r14d 2321 vpinsrd xmm3, xmm14, eax, 3 2322 vmovdqa xmm2, xmm15 2323 vmovups xmm8, xmmword ptr [r8+rdx-0x40] 2324 vmovups xmm9, xmmword ptr [r8+rdx-0x30] 2325 vshufps xmm4, xmm8, xmm9, 136 2326 vshufps xmm5, xmm8, xmm9, 221 2327 vmovups xmm8, xmmword ptr [r8+rdx-0x20] 2328 vmovups xmm9, xmmword ptr [r8+rdx-0x10] 2329 vshufps xmm6, xmm8, xmm9, 136 2330 vshufps xmm7, xmm8, xmm9, 221 2331 vpshufd xmm6, xmm6, 0x93 2332 vpshufd xmm7, xmm7, 0x93 2333 mov al, 7 23349: 2335 vpaddd xmm0, xmm0, xmm4 2336 vpaddd xmm0, xmm0, xmm1 2337 vpxord xmm3, xmm3, xmm0 2338 vprord xmm3, xmm3, 16 2339 vpaddd xmm2, xmm2, xmm3 2340 vpxord xmm1, xmm1, xmm2 2341 vprord xmm1, xmm1, 12 2342 vpaddd xmm0, xmm0, xmm5 2343 vpaddd xmm0, xmm0, xmm1 2344 vpxord xmm3, xmm3, xmm0 2345 vprord xmm3, xmm3, 8 2346 vpaddd xmm2, xmm2, xmm3 2347 vpxord xmm1, xmm1, xmm2 2348 vprord xmm1, xmm1, 7 2349 vpshufd xmm0, xmm0, 0x93 2350 vpshufd xmm3, xmm3, 0x4E 2351 vpshufd xmm2, xmm2, 0x39 2352 vpaddd xmm0, xmm0, xmm6 2353 vpaddd xmm0, xmm0, xmm1 2354 vpxord xmm3, xmm3, xmm0 2355 vprord xmm3, xmm3, 16 2356 vpaddd xmm2, xmm2, xmm3 2357 vpxord xmm1, xmm1, xmm2 2358 vprord xmm1, xmm1, 12 2359 vpaddd xmm0, xmm0, xmm7 2360 vpaddd xmm0, xmm0, xmm1 2361 vpxord xmm3, xmm3, xmm0 2362 vprord xmm3, xmm3, 8 2363 vpaddd xmm2, xmm2, xmm3 2364 vpxord xmm1, xmm1, xmm2 2365 vprord xmm1, xmm1, 7 2366 vpshufd xmm0, xmm0, 0x39 2367 vpshufd xmm3, xmm3, 0x4E 2368 vpshufd xmm2, xmm2, 0x93 2369 dec al 2370 jz 9f 2371 vshufps xmm8, xmm4, xmm5, 214 2372 vpshufd xmm9, xmm4, 0x0F 2373 vpshufd xmm4, xmm8, 0x39 2374 vshufps xmm8, xmm6, xmm7, 250 2375 vpblendd xmm9, xmm9, xmm8, 0xAA 2376 vpunpcklqdq xmm8, xmm7, xmm5 2377 vpblendd xmm8, xmm8, xmm6, 0x88 2378 vpshufd xmm8, xmm8, 0x78 2379 vpunpckhdq xmm5, xmm5, xmm7 2380 vpunpckldq xmm6, xmm6, xmm5 2381 vpshufd xmm7, xmm6, 0x1E 2382 vmovdqa xmm5, xmm9 2383 vmovdqa xmm6, xmm8 2384 jmp 9b 23859: 2386 vpxor xmm0, xmm0, xmm2 2387 vpxor xmm1, xmm1, xmm3 2388 mov eax, r13d 2389 cmp rdx, r15 2390 jne 2b 2391 vmovdqu xmmword ptr [rbx], xmm0 2392 vmovdqu xmmword ptr [rbx+0x10], xmm1 2393 jmp 4b 2394.p2align 6 2395_blake3_compress_in_place_avx512: 2396blake3_compress_in_place_avx512: 2397 _CET_ENDBR 2398 vmovdqu xmm0, xmmword ptr [rdi] 2399 vmovdqu xmm1, xmmword ptr [rdi+0x10] 2400 movzx eax, r8b 2401 movzx edx, dl 2402 shl rax, 32 2403 add rdx, rax 2404 vmovq xmm3, rcx 2405 vmovq xmm4, rdx 2406 vpunpcklqdq xmm3, xmm3, xmm4 2407 vmovaps xmm2, xmmword ptr [BLAKE3_IV+rip] 2408 vmovups xmm8, xmmword ptr [rsi] 2409 vmovups xmm9, xmmword ptr [rsi+0x10] 2410 vshufps xmm4, xmm8, xmm9, 136 2411 vshufps xmm5, xmm8, xmm9, 221 2412 vmovups xmm8, xmmword ptr [rsi+0x20] 2413 vmovups xmm9, xmmword ptr [rsi+0x30] 2414 vshufps xmm6, xmm8, xmm9, 136 2415 vshufps xmm7, xmm8, xmm9, 221 2416 vpshufd xmm6, xmm6, 0x93 2417 vpshufd xmm7, xmm7, 0x93 2418 mov al, 7 24199: 2420 vpaddd xmm0, xmm0, xmm4 2421 vpaddd xmm0, xmm0, xmm1 2422 vpxord xmm3, xmm3, xmm0 2423 vprord xmm3, xmm3, 16 2424 vpaddd xmm2, xmm2, xmm3 2425 vpxord xmm1, xmm1, xmm2 2426 vprord xmm1, xmm1, 12 2427 vpaddd xmm0, xmm0, xmm5 2428 vpaddd xmm0, xmm0, xmm1 2429 vpxord xmm3, xmm3, xmm0 2430 vprord xmm3, xmm3, 8 2431 vpaddd xmm2, xmm2, xmm3 2432 vpxord xmm1, xmm1, xmm2 2433 vprord xmm1, xmm1, 7 2434 vpshufd xmm0, xmm0, 0x93 2435 vpshufd xmm3, xmm3, 0x4E 2436 vpshufd xmm2, xmm2, 0x39 2437 vpaddd xmm0, xmm0, xmm6 2438 vpaddd xmm0, xmm0, xmm1 2439 vpxord xmm3, xmm3, xmm0 2440 vprord xmm3, xmm3, 16 2441 vpaddd xmm2, xmm2, xmm3 2442 vpxord xmm1, xmm1, xmm2 2443 vprord xmm1, xmm1, 12 2444 vpaddd xmm0, xmm0, xmm7 2445 vpaddd xmm0, xmm0, xmm1 2446 vpxord xmm3, xmm3, xmm0 2447 vprord xmm3, xmm3, 8 2448 vpaddd xmm2, xmm2, xmm3 2449 vpxord xmm1, xmm1, xmm2 2450 vprord xmm1, xmm1, 7 2451 vpshufd xmm0, xmm0, 0x39 2452 vpshufd xmm3, xmm3, 0x4E 2453 vpshufd xmm2, xmm2, 0x93 2454 dec al 2455 jz 9f 2456 vshufps xmm8, xmm4, xmm5, 214 2457 vpshufd xmm9, xmm4, 0x0F 2458 vpshufd xmm4, xmm8, 0x39 2459 vshufps xmm8, xmm6, xmm7, 250 2460 vpblendd xmm9, xmm9, xmm8, 0xAA 2461 vpunpcklqdq xmm8, xmm7, xmm5 2462 vpblendd xmm8, xmm8, xmm6, 0x88 2463 vpshufd xmm8, xmm8, 0x78 2464 vpunpckhdq xmm5, xmm5, xmm7 2465 vpunpckldq xmm6, xmm6, xmm5 2466 vpshufd xmm7, xmm6, 0x1E 2467 vmovdqa xmm5, xmm9 2468 vmovdqa xmm6, xmm8 2469 jmp 9b 24709: 2471 vpxor xmm0, xmm0, xmm2 2472 vpxor xmm1, xmm1, xmm3 2473 vmovdqu xmmword ptr [rdi], xmm0 2474 vmovdqu xmmword ptr [rdi+0x10], xmm1 2475 ret 2476 2477.p2align 6 2478_blake3_compress_xof_avx512: 2479blake3_compress_xof_avx512: 2480 _CET_ENDBR 2481 vmovdqu xmm0, xmmword ptr [rdi] 2482 vmovdqu xmm1, xmmword ptr [rdi+0x10] 2483 movzx eax, r8b 2484 movzx edx, dl 2485 shl rax, 32 2486 add rdx, rax 2487 vmovq xmm3, rcx 2488 vmovq xmm4, rdx 2489 vpunpcklqdq xmm3, xmm3, xmm4 2490 vmovaps xmm2, xmmword ptr [BLAKE3_IV+rip] 2491 vmovups xmm8, xmmword ptr [rsi] 2492 vmovups xmm9, xmmword ptr [rsi+0x10] 2493 vshufps xmm4, xmm8, xmm9, 136 2494 vshufps xmm5, xmm8, xmm9, 221 2495 vmovups xmm8, xmmword ptr [rsi+0x20] 2496 vmovups xmm9, xmmword ptr [rsi+0x30] 2497 vshufps xmm6, xmm8, xmm9, 136 2498 vshufps xmm7, xmm8, xmm9, 221 2499 vpshufd xmm6, xmm6, 0x93 2500 vpshufd xmm7, xmm7, 0x93 2501 mov al, 7 25029: 2503 vpaddd xmm0, xmm0, xmm4 2504 vpaddd xmm0, xmm0, xmm1 2505 vpxord xmm3, xmm3, xmm0 2506 vprord xmm3, xmm3, 16 2507 vpaddd xmm2, xmm2, xmm3 2508 vpxord xmm1, xmm1, xmm2 2509 vprord xmm1, xmm1, 12 2510 vpaddd xmm0, xmm0, xmm5 2511 vpaddd xmm0, xmm0, xmm1 2512 vpxord xmm3, xmm3, xmm0 2513 vprord xmm3, xmm3, 8 2514 vpaddd xmm2, xmm2, xmm3 2515 vpxord xmm1, xmm1, xmm2 2516 vprord xmm1, xmm1, 7 2517 vpshufd xmm0, xmm0, 0x93 2518 vpshufd xmm3, xmm3, 0x4E 2519 vpshufd xmm2, xmm2, 0x39 2520 vpaddd xmm0, xmm0, xmm6 2521 vpaddd xmm0, xmm0, xmm1 2522 vpxord xmm3, xmm3, xmm0 2523 vprord xmm3, xmm3, 16 2524 vpaddd xmm2, xmm2, xmm3 2525 vpxord xmm1, xmm1, xmm2 2526 vprord xmm1, xmm1, 12 2527 vpaddd xmm0, xmm0, xmm7 2528 vpaddd xmm0, xmm0, xmm1 2529 vpxord xmm3, xmm3, xmm0 2530 vprord xmm3, xmm3, 8 2531 vpaddd xmm2, xmm2, xmm3 2532 vpxord xmm1, xmm1, xmm2 2533 vprord xmm1, xmm1, 7 2534 vpshufd xmm0, xmm0, 0x39 2535 vpshufd xmm3, xmm3, 0x4E 2536 vpshufd xmm2, xmm2, 0x93 2537 dec al 2538 jz 9f 2539 vshufps xmm8, xmm4, xmm5, 214 2540 vpshufd xmm9, xmm4, 0x0F 2541 vpshufd xmm4, xmm8, 0x39 2542 vshufps xmm8, xmm6, xmm7, 250 2543 vpblendd xmm9, xmm9, xmm8, 0xAA 2544 vpunpcklqdq xmm8, xmm7, xmm5 2545 vpblendd xmm8, xmm8, xmm6, 0x88 2546 vpshufd xmm8, xmm8, 0x78 2547 vpunpckhdq xmm5, xmm5, xmm7 2548 vpunpckldq xmm6, xmm6, xmm5 2549 vpshufd xmm7, xmm6, 0x1E 2550 vmovdqa xmm5, xmm9 2551 vmovdqa xmm6, xmm8 2552 jmp 9b 25539: 2554 vpxor xmm0, xmm0, xmm2 2555 vpxor xmm1, xmm1, xmm3 2556 vpxor xmm2, xmm2, [rdi] 2557 vpxor xmm3, xmm3, [rdi+0x10] 2558 vmovdqu xmmword ptr [r9], xmm0 2559 vmovdqu xmmword ptr [r9+0x10], xmm1 2560 vmovdqu xmmword ptr [r9+0x20], xmm2 2561 vmovdqu xmmword ptr [r9+0x30], xmm3 2562 ret 2563 2564#ifdef __APPLE__ 2565.static_data 2566#else 2567.section .rodata 2568#endif 2569.p2align 6 2570INDEX0: 2571 .long 0, 1, 2, 3, 16, 17, 18, 19 2572 .long 8, 9, 10, 11, 24, 25, 26, 27 2573INDEX1: 2574 .long 4, 5, 6, 7, 20, 21, 22, 23 2575 .long 12, 13, 14, 15, 28, 29, 30, 31 2576ADD0: 2577 .long 0, 1, 2, 3, 4, 5, 6, 7 2578 .long 8, 9, 10, 11, 12, 13, 14, 15 2579ADD1: .long 1 2580 2581ADD16: .long 16 2582BLAKE3_BLOCK_LEN: 2583 .long 64 2584.p2align 6 2585BLAKE3_IV: 2586BLAKE3_IV_0: 2587 .long 0x6A09E667 2588BLAKE3_IV_1: 2589 .long 0xBB67AE85 2590BLAKE3_IV_2: 2591 .long 0x3C6EF372 2592BLAKE3_IV_3: 2593 .long 0xA54FF53A 2594