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