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