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