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