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