2090 lines · plain
1public _llvm_blake3_hash_many_sse412public llvm_blake3_hash_many_sse413public llvm_blake3_compress_in_place_sse414public _llvm_blake3_compress_in_place_sse415public llvm_blake3_compress_xof_sse416public _llvm_blake3_compress_xof_sse417 8_TEXT SEGMENT ALIGN(16) 'CODE'9 10ALIGN 1611llvm_blake3_hash_many_sse41 PROC12_llvm_blake3_hash_many_sse41 PROC13 push r1514 push r1415 push r1316 push r1217 push rsi18 push rdi19 push rbx20 push rbp21 mov rbp, rsp22 sub rsp, 52823 and rsp, 0FFFFFFFFFFFFFFC0H24 movdqa xmmword ptr [rsp+170H], xmm625 movdqa xmmword ptr [rsp+180H], xmm726 movdqa xmmword ptr [rsp+190H], xmm827 movdqa xmmword ptr [rsp+1A0H], xmm928 movdqa xmmword ptr [rsp+1B0H], xmm1029 movdqa xmmword ptr [rsp+1C0H], xmm1130 movdqa xmmword ptr [rsp+1D0H], xmm1231 movdqa xmmword ptr [rsp+1E0H], xmm1332 movdqa xmmword ptr [rsp+1F0H], xmm1433 movdqa xmmword ptr [rsp+200H], xmm1534 mov rdi, rcx35 mov rsi, rdx36 mov rdx, r837 mov rcx, r938 mov r8, qword ptr [rbp+68H]39 movzx r9, byte ptr [rbp+70H]40 neg r9d41 movd xmm0, r9d42 pshufd xmm0, xmm0, 00H43 movdqa xmmword ptr [rsp+130H], xmm044 movdqa xmm1, xmm045 pand xmm1, xmmword ptr [ADD0]46 pand xmm0, xmmword ptr [ADD1]47 movdqa xmmword ptr [rsp+150H], xmm048 movd xmm0, r8d49 pshufd xmm0, xmm0, 00H50 paddd xmm0, xmm151 movdqa xmmword ptr [rsp+110H], xmm052 pxor xmm0, xmmword ptr [CMP_MSB_MASK]53 pxor xmm1, xmmword ptr [CMP_MSB_MASK]54 pcmpgtd xmm1, xmm055 shr r8, 3256 movd xmm2, r8d57 pshufd xmm2, xmm2, 00H58 psubd xmm2, xmm159 movdqa xmmword ptr [rsp+120H], xmm260 mov rbx, qword ptr [rbp+90H]61 mov r15, rdx62 shl r15, 663 movzx r13d, byte ptr [rbp+78H]64 movzx r12d, byte ptr [rbp+88H]65 cmp rsi, 466 jc final3blocks67outerloop4:68 movdqu xmm3, xmmword ptr [rcx]69 pshufd xmm0, xmm3, 00H70 pshufd xmm1, xmm3, 55H71 pshufd xmm2, xmm3, 0AAH72 pshufd xmm3, xmm3, 0FFH73 movdqu xmm7, xmmword ptr [rcx+10H]74 pshufd xmm4, xmm7, 00H75 pshufd xmm5, xmm7, 55H76 pshufd xmm6, xmm7, 0AAH77 pshufd xmm7, xmm7, 0FFH78 mov r8, qword ptr [rdi]79 mov r9, qword ptr [rdi+8H]80 mov r10, qword ptr [rdi+10H]81 mov r11, qword ptr [rdi+18H]82 movzx eax, byte ptr [rbp+80H]83 or eax, r13d84 xor edx, edx85innerloop4:86 mov r14d, eax87 or eax, r12d88 add rdx, 6489 cmp rdx, r1590 cmovne eax, r14d91 movdqu xmm8, xmmword ptr [r8+rdx-40H]92 movdqu xmm9, xmmword ptr [r9+rdx-40H]93 movdqu xmm10, xmmword ptr [r10+rdx-40H]94 movdqu xmm11, xmmword ptr [r11+rdx-40H]95 movdqa xmm12, xmm896 punpckldq xmm8, xmm997 punpckhdq xmm12, xmm998 movdqa xmm14, xmm1099 punpckldq xmm10, xmm11100 punpckhdq xmm14, xmm11101 movdqa xmm9, xmm8102 punpcklqdq xmm8, xmm10103 punpckhqdq xmm9, xmm10104 movdqa xmm13, xmm12105 punpcklqdq xmm12, xmm14106 punpckhqdq xmm13, xmm14107 movdqa xmmword ptr [rsp], xmm8108 movdqa xmmword ptr [rsp+10H], xmm9109 movdqa xmmword ptr [rsp+20H], xmm12110 movdqa xmmword ptr [rsp+30H], xmm13111 movdqu xmm8, xmmword ptr [r8+rdx-30H]112 movdqu xmm9, xmmword ptr [r9+rdx-30H]113 movdqu xmm10, xmmword ptr [r10+rdx-30H]114 movdqu xmm11, xmmword ptr [r11+rdx-30H]115 movdqa xmm12, xmm8116 punpckldq xmm8, xmm9117 punpckhdq xmm12, xmm9118 movdqa xmm14, xmm10119 punpckldq xmm10, xmm11120 punpckhdq xmm14, xmm11121 movdqa xmm9, xmm8122 punpcklqdq xmm8, xmm10123 punpckhqdq xmm9, xmm10124 movdqa xmm13, xmm12125 punpcklqdq xmm12, xmm14126 punpckhqdq xmm13, xmm14127 movdqa xmmword ptr [rsp+40H], xmm8128 movdqa xmmword ptr [rsp+50H], xmm9129 movdqa xmmword ptr [rsp+60H], xmm12130 movdqa xmmword ptr [rsp+70H], xmm13131 movdqu xmm8, xmmword ptr [r8+rdx-20H]132 movdqu xmm9, xmmword ptr [r9+rdx-20H]133 movdqu xmm10, xmmword ptr [r10+rdx-20H]134 movdqu xmm11, xmmword ptr [r11+rdx-20H]135 movdqa xmm12, xmm8136 punpckldq xmm8, xmm9137 punpckhdq xmm12, xmm9138 movdqa xmm14, xmm10139 punpckldq xmm10, xmm11140 punpckhdq xmm14, xmm11141 movdqa xmm9, xmm8142 punpcklqdq xmm8, xmm10143 punpckhqdq xmm9, xmm10144 movdqa xmm13, xmm12145 punpcklqdq xmm12, xmm14146 punpckhqdq xmm13, xmm14147 movdqa xmmword ptr [rsp+80H], xmm8148 movdqa xmmword ptr [rsp+90H], xmm9149 movdqa xmmword ptr [rsp+0A0H], xmm12150 movdqa xmmword ptr [rsp+0B0H], xmm13151 movdqu xmm8, xmmword ptr [r8+rdx-10H]152 movdqu xmm9, xmmword ptr [r9+rdx-10H]153 movdqu xmm10, xmmword ptr [r10+rdx-10H]154 movdqu xmm11, xmmword ptr [r11+rdx-10H]155 movdqa xmm12, xmm8156 punpckldq xmm8, xmm9157 punpckhdq xmm12, xmm9158 movdqa xmm14, xmm10159 punpckldq xmm10, xmm11160 punpckhdq xmm14, xmm11161 movdqa xmm9, xmm8162 punpcklqdq xmm8, xmm10163 punpckhqdq xmm9, xmm10164 movdqa xmm13, xmm12165 punpcklqdq xmm12, xmm14166 punpckhqdq xmm13, xmm14167 movdqa xmmword ptr [rsp+0C0H], xmm8168 movdqa xmmword ptr [rsp+0D0H], xmm9169 movdqa xmmword ptr [rsp+0E0H], xmm12170 movdqa xmmword ptr [rsp+0F0H], xmm13171 movdqa xmm9, xmmword ptr [BLAKE3_IV_1]172 movdqa xmm10, xmmword ptr [BLAKE3_IV_2]173 movdqa xmm11, xmmword ptr [BLAKE3_IV_3]174 movdqa xmm12, xmmword ptr [rsp+110H]175 movdqa xmm13, xmmword ptr [rsp+120H]176 movdqa xmm14, xmmword ptr [BLAKE3_BLOCK_LEN]177 movd xmm15, eax178 pshufd xmm15, xmm15, 00H179 prefetcht0 byte ptr [r8+rdx+80H]180 prefetcht0 byte ptr [r9+rdx+80H]181 prefetcht0 byte ptr [r10+rdx+80H]182 prefetcht0 byte ptr [r11+rdx+80H]183 paddd xmm0, xmmword ptr [rsp]184 paddd xmm1, xmmword ptr [rsp+20H]185 paddd xmm2, xmmword ptr [rsp+40H]186 paddd xmm3, xmmword ptr [rsp+60H]187 paddd xmm0, xmm4188 paddd xmm1, xmm5189 paddd xmm2, xmm6190 paddd xmm3, xmm7191 pxor xmm12, xmm0192 pxor xmm13, xmm1193 pxor xmm14, xmm2194 pxor xmm15, xmm3195 movdqa xmm8, xmmword ptr [ROT16]196 pshufb xmm12, xmm8197 pshufb xmm13, xmm8198 pshufb xmm14, xmm8199 pshufb xmm15, xmm8200 movdqa xmm8, xmmword ptr [BLAKE3_IV_0]201 paddd xmm8, xmm12202 paddd xmm9, xmm13203 paddd xmm10, xmm14204 paddd xmm11, xmm15205 pxor xmm4, xmm8206 pxor xmm5, xmm9207 pxor xmm6, xmm10208 pxor xmm7, xmm11209 movdqa xmmword ptr [rsp+100H], xmm8210 movdqa xmm8, xmm4211 psrld xmm8, 12212 pslld xmm4, 20213 por xmm4, xmm8214 movdqa xmm8, xmm5215 psrld xmm8, 12216 pslld xmm5, 20217 por xmm5, xmm8218 movdqa xmm8, xmm6219 psrld xmm8, 12220 pslld xmm6, 20221 por xmm6, xmm8222 movdqa xmm8, xmm7223 psrld xmm8, 12224 pslld xmm7, 20225 por xmm7, xmm8226 paddd xmm0, xmmword ptr [rsp+10H]227 paddd xmm1, xmmword ptr [rsp+30H]228 paddd xmm2, xmmword ptr [rsp+50H]229 paddd xmm3, xmmword ptr [rsp+70H]230 paddd xmm0, xmm4231 paddd xmm1, xmm5232 paddd xmm2, xmm6233 paddd xmm3, xmm7234 pxor xmm12, xmm0235 pxor xmm13, xmm1236 pxor xmm14, xmm2237 pxor xmm15, xmm3238 movdqa xmm8, xmmword ptr [ROT8]239 pshufb xmm12, xmm8240 pshufb xmm13, xmm8241 pshufb xmm14, xmm8242 pshufb xmm15, xmm8243 movdqa xmm8, xmmword ptr [rsp+100H]244 paddd xmm8, xmm12245 paddd xmm9, xmm13246 paddd xmm10, xmm14247 paddd xmm11, xmm15248 pxor xmm4, xmm8249 pxor xmm5, xmm9250 pxor xmm6, xmm10251 pxor xmm7, xmm11252 movdqa xmmword ptr [rsp+100H], xmm8253 movdqa xmm8, xmm4254 psrld xmm8, 7255 pslld xmm4, 25256 por xmm4, xmm8257 movdqa xmm8, xmm5258 psrld xmm8, 7259 pslld xmm5, 25260 por xmm5, xmm8261 movdqa xmm8, xmm6262 psrld xmm8, 7263 pslld xmm6, 25264 por xmm6, xmm8265 movdqa xmm8, xmm7266 psrld xmm8, 7267 pslld xmm7, 25268 por xmm7, xmm8269 paddd xmm0, xmmword ptr [rsp+80H]270 paddd xmm1, xmmword ptr [rsp+0A0H]271 paddd xmm2, xmmword ptr [rsp+0C0H]272 paddd xmm3, xmmword ptr [rsp+0E0H]273 paddd xmm0, xmm5274 paddd xmm1, xmm6275 paddd xmm2, xmm7276 paddd xmm3, xmm4277 pxor xmm15, xmm0278 pxor xmm12, xmm1279 pxor xmm13, xmm2280 pxor xmm14, xmm3281 movdqa xmm8, xmmword ptr [ROT16]282 pshufb xmm15, xmm8283 pshufb xmm12, xmm8284 pshufb xmm13, xmm8285 pshufb xmm14, xmm8286 paddd xmm10, xmm15287 paddd xmm11, xmm12288 movdqa xmm8, xmmword ptr [rsp+100H]289 paddd xmm8, xmm13290 paddd xmm9, xmm14291 pxor xmm5, xmm10292 pxor xmm6, xmm11293 pxor xmm7, xmm8294 pxor xmm4, xmm9295 movdqa xmmword ptr [rsp+100H], xmm8296 movdqa xmm8, xmm5297 psrld xmm8, 12298 pslld xmm5, 20299 por xmm5, xmm8300 movdqa xmm8, xmm6301 psrld xmm8, 12302 pslld xmm6, 20303 por xmm6, xmm8304 movdqa xmm8, xmm7305 psrld xmm8, 12306 pslld xmm7, 20307 por xmm7, xmm8308 movdqa xmm8, xmm4309 psrld xmm8, 12310 pslld xmm4, 20311 por xmm4, xmm8312 paddd xmm0, xmmword ptr [rsp+90H]313 paddd xmm1, xmmword ptr [rsp+0B0H]314 paddd xmm2, xmmword ptr [rsp+0D0H]315 paddd xmm3, xmmword ptr [rsp+0F0H]316 paddd xmm0, xmm5317 paddd xmm1, xmm6318 paddd xmm2, xmm7319 paddd xmm3, xmm4320 pxor xmm15, xmm0321 pxor xmm12, xmm1322 pxor xmm13, xmm2323 pxor xmm14, xmm3324 movdqa xmm8, xmmword ptr [ROT8]325 pshufb xmm15, xmm8326 pshufb xmm12, xmm8327 pshufb xmm13, xmm8328 pshufb xmm14, xmm8329 paddd xmm10, xmm15330 paddd xmm11, xmm12331 movdqa xmm8, xmmword ptr [rsp+100H]332 paddd xmm8, xmm13333 paddd xmm9, xmm14334 pxor xmm5, xmm10335 pxor xmm6, xmm11336 pxor xmm7, xmm8337 pxor xmm4, xmm9338 movdqa xmmword ptr [rsp+100H], xmm8339 movdqa xmm8, xmm5340 psrld xmm8, 7341 pslld xmm5, 25342 por xmm5, xmm8343 movdqa xmm8, xmm6344 psrld xmm8, 7345 pslld xmm6, 25346 por xmm6, xmm8347 movdqa xmm8, xmm7348 psrld xmm8, 7349 pslld xmm7, 25350 por xmm7, xmm8351 movdqa xmm8, xmm4352 psrld xmm8, 7353 pslld xmm4, 25354 por xmm4, xmm8355 paddd xmm0, xmmword ptr [rsp+20H]356 paddd xmm1, xmmword ptr [rsp+30H]357 paddd xmm2, xmmword ptr [rsp+70H]358 paddd xmm3, xmmword ptr [rsp+40H]359 paddd xmm0, xmm4360 paddd xmm1, xmm5361 paddd xmm2, xmm6362 paddd xmm3, xmm7363 pxor xmm12, xmm0364 pxor xmm13, xmm1365 pxor xmm14, xmm2366 pxor xmm15, xmm3367 movdqa xmm8, xmmword ptr [ROT16]368 pshufb xmm12, xmm8369 pshufb xmm13, xmm8370 pshufb xmm14, xmm8371 pshufb xmm15, xmm8372 movdqa xmm8, xmmword ptr [rsp+100H]373 paddd xmm8, xmm12374 paddd xmm9, xmm13375 paddd xmm10, xmm14376 paddd xmm11, xmm15377 pxor xmm4, xmm8378 pxor xmm5, xmm9379 pxor xmm6, xmm10380 pxor xmm7, xmm11381 movdqa xmmword ptr [rsp+100H], xmm8382 movdqa xmm8, xmm4383 psrld xmm8, 12384 pslld xmm4, 20385 por xmm4, xmm8386 movdqa xmm8, xmm5387 psrld xmm8, 12388 pslld xmm5, 20389 por xmm5, xmm8390 movdqa xmm8, xmm6391 psrld xmm8, 12392 pslld xmm6, 20393 por xmm6, xmm8394 movdqa xmm8, xmm7395 psrld xmm8, 12396 pslld xmm7, 20397 por xmm7, xmm8398 paddd xmm0, xmmword ptr [rsp+60H]399 paddd xmm1, xmmword ptr [rsp+0A0H]400 paddd xmm2, xmmword ptr [rsp]401 paddd xmm3, xmmword ptr [rsp+0D0H]402 paddd xmm0, xmm4403 paddd xmm1, xmm5404 paddd xmm2, xmm6405 paddd xmm3, xmm7406 pxor xmm12, xmm0407 pxor xmm13, xmm1408 pxor xmm14, xmm2409 pxor xmm15, xmm3410 movdqa xmm8, xmmword ptr [ROT8]411 pshufb xmm12, xmm8412 pshufb xmm13, xmm8413 pshufb xmm14, xmm8414 pshufb xmm15, xmm8415 movdqa xmm8, xmmword ptr [rsp+100H]416 paddd xmm8, xmm12417 paddd xmm9, xmm13418 paddd xmm10, xmm14419 paddd xmm11, xmm15420 pxor xmm4, xmm8421 pxor xmm5, xmm9422 pxor xmm6, xmm10423 pxor xmm7, xmm11424 movdqa xmmword ptr [rsp+100H], xmm8425 movdqa xmm8, xmm4426 psrld xmm8, 7427 pslld xmm4, 25428 por xmm4, xmm8429 movdqa xmm8, xmm5430 psrld xmm8, 7431 pslld xmm5, 25432 por xmm5, xmm8433 movdqa xmm8, xmm6434 psrld xmm8, 7435 pslld xmm6, 25436 por xmm6, xmm8437 movdqa xmm8, xmm7438 psrld xmm8, 7439 pslld xmm7, 25440 por xmm7, xmm8441 paddd xmm0, xmmword ptr [rsp+10H]442 paddd xmm1, xmmword ptr [rsp+0C0H]443 paddd xmm2, xmmword ptr [rsp+90H]444 paddd xmm3, xmmword ptr [rsp+0F0H]445 paddd xmm0, xmm5446 paddd xmm1, xmm6447 paddd xmm2, xmm7448 paddd xmm3, xmm4449 pxor xmm15, xmm0450 pxor xmm12, xmm1451 pxor xmm13, xmm2452 pxor xmm14, xmm3453 movdqa xmm8, xmmword ptr [ROT16]454 pshufb xmm15, xmm8455 pshufb xmm12, xmm8456 pshufb xmm13, xmm8457 pshufb xmm14, xmm8458 paddd xmm10, xmm15459 paddd xmm11, xmm12460 movdqa xmm8, xmmword ptr [rsp+100H]461 paddd xmm8, xmm13462 paddd xmm9, xmm14463 pxor xmm5, xmm10464 pxor xmm6, xmm11465 pxor xmm7, xmm8466 pxor xmm4, xmm9467 movdqa xmmword ptr [rsp+100H], xmm8468 movdqa xmm8, xmm5469 psrld xmm8, 12470 pslld xmm5, 20471 por xmm5, xmm8472 movdqa xmm8, xmm6473 psrld xmm8, 12474 pslld xmm6, 20475 por xmm6, xmm8476 movdqa xmm8, xmm7477 psrld xmm8, 12478 pslld xmm7, 20479 por xmm7, xmm8480 movdqa xmm8, xmm4481 psrld xmm8, 12482 pslld xmm4, 20483 por xmm4, xmm8484 paddd xmm0, xmmword ptr [rsp+0B0H]485 paddd xmm1, xmmword ptr [rsp+50H]486 paddd xmm2, xmmword ptr [rsp+0E0H]487 paddd xmm3, xmmword ptr [rsp+80H]488 paddd xmm0, xmm5489 paddd xmm1, xmm6490 paddd xmm2, xmm7491 paddd xmm3, xmm4492 pxor xmm15, xmm0493 pxor xmm12, xmm1494 pxor xmm13, xmm2495 pxor xmm14, xmm3496 movdqa xmm8, xmmword ptr [ROT8]497 pshufb xmm15, xmm8498 pshufb xmm12, xmm8499 pshufb xmm13, xmm8500 pshufb xmm14, xmm8501 paddd xmm10, xmm15502 paddd xmm11, xmm12503 movdqa xmm8, xmmword ptr [rsp+100H]504 paddd xmm8, xmm13505 paddd xmm9, xmm14506 pxor xmm5, xmm10507 pxor xmm6, xmm11508 pxor xmm7, xmm8509 pxor xmm4, xmm9510 movdqa xmmword ptr [rsp+100H], xmm8511 movdqa xmm8, xmm5512 psrld xmm8, 7513 pslld xmm5, 25514 por xmm5, xmm8515 movdqa xmm8, xmm6516 psrld xmm8, 7517 pslld xmm6, 25518 por xmm6, xmm8519 movdqa xmm8, xmm7520 psrld xmm8, 7521 pslld xmm7, 25522 por xmm7, xmm8523 movdqa xmm8, xmm4524 psrld xmm8, 7525 pslld xmm4, 25526 por xmm4, xmm8527 paddd xmm0, xmmword ptr [rsp+30H]528 paddd xmm1, xmmword ptr [rsp+0A0H]529 paddd xmm2, xmmword ptr [rsp+0D0H]530 paddd xmm3, xmmword ptr [rsp+70H]531 paddd xmm0, xmm4532 paddd xmm1, xmm5533 paddd xmm2, xmm6534 paddd xmm3, xmm7535 pxor xmm12, xmm0536 pxor xmm13, xmm1537 pxor xmm14, xmm2538 pxor xmm15, xmm3539 movdqa xmm8, xmmword ptr [ROT16]540 pshufb xmm12, xmm8541 pshufb xmm13, xmm8542 pshufb xmm14, xmm8543 pshufb xmm15, xmm8544 movdqa xmm8, xmmword ptr [rsp+100H]545 paddd xmm8, xmm12546 paddd xmm9, xmm13547 paddd xmm10, xmm14548 paddd xmm11, xmm15549 pxor xmm4, xmm8550 pxor xmm5, xmm9551 pxor xmm6, xmm10552 pxor xmm7, xmm11553 movdqa xmmword ptr [rsp+100H], xmm8554 movdqa xmm8, xmm4555 psrld xmm8, 12556 pslld xmm4, 20557 por xmm4, xmm8558 movdqa xmm8, xmm5559 psrld xmm8, 12560 pslld xmm5, 20561 por xmm5, xmm8562 movdqa xmm8, xmm6563 psrld xmm8, 12564 pslld xmm6, 20565 por xmm6, xmm8566 movdqa xmm8, xmm7567 psrld xmm8, 12568 pslld xmm7, 20569 por xmm7, xmm8570 paddd xmm0, xmmword ptr [rsp+40H]571 paddd xmm1, xmmword ptr [rsp+0C0H]572 paddd xmm2, xmmword ptr [rsp+20H]573 paddd xmm3, xmmword ptr [rsp+0E0H]574 paddd xmm0, xmm4575 paddd xmm1, xmm5576 paddd xmm2, xmm6577 paddd xmm3, xmm7578 pxor xmm12, xmm0579 pxor xmm13, xmm1580 pxor xmm14, xmm2581 pxor xmm15, xmm3582 movdqa xmm8, xmmword ptr [ROT8]583 pshufb xmm12, xmm8584 pshufb xmm13, xmm8585 pshufb xmm14, xmm8586 pshufb xmm15, xmm8587 movdqa xmm8, xmmword ptr [rsp+100H]588 paddd xmm8, xmm12589 paddd xmm9, xmm13590 paddd xmm10, xmm14591 paddd xmm11, xmm15592 pxor xmm4, xmm8593 pxor xmm5, xmm9594 pxor xmm6, xmm10595 pxor xmm7, xmm11596 movdqa xmmword ptr [rsp+100H], xmm8597 movdqa xmm8, xmm4598 psrld xmm8, 7599 pslld xmm4, 25600 por xmm4, xmm8601 movdqa xmm8, xmm5602 psrld xmm8, 7603 pslld xmm5, 25604 por xmm5, xmm8605 movdqa xmm8, xmm6606 psrld xmm8, 7607 pslld xmm6, 25608 por xmm6, xmm8609 movdqa xmm8, xmm7610 psrld xmm8, 7611 pslld xmm7, 25612 por xmm7, xmm8613 paddd xmm0, xmmword ptr [rsp+60H]614 paddd xmm1, xmmword ptr [rsp+90H]615 paddd xmm2, xmmword ptr [rsp+0B0H]616 paddd xmm3, xmmword ptr [rsp+80H]617 paddd xmm0, xmm5618 paddd xmm1, xmm6619 paddd xmm2, xmm7620 paddd xmm3, xmm4621 pxor xmm15, xmm0622 pxor xmm12, xmm1623 pxor xmm13, xmm2624 pxor xmm14, xmm3625 movdqa xmm8, xmmword ptr [ROT16]626 pshufb xmm15, xmm8627 pshufb xmm12, xmm8628 pshufb xmm13, xmm8629 pshufb xmm14, xmm8630 paddd xmm10, xmm15631 paddd xmm11, xmm12632 movdqa xmm8, xmmword ptr [rsp+100H]633 paddd xmm8, xmm13634 paddd xmm9, xmm14635 pxor xmm5, xmm10636 pxor xmm6, xmm11637 pxor xmm7, xmm8638 pxor xmm4, xmm9639 movdqa xmmword ptr [rsp+100H], xmm8640 movdqa xmm8, xmm5641 psrld xmm8, 12642 pslld xmm5, 20643 por xmm5, xmm8644 movdqa xmm8, xmm6645 psrld xmm8, 12646 pslld xmm6, 20647 por xmm6, xmm8648 movdqa xmm8, xmm7649 psrld xmm8, 12650 pslld xmm7, 20651 por xmm7, xmm8652 movdqa xmm8, xmm4653 psrld xmm8, 12654 pslld xmm4, 20655 por xmm4, xmm8656 paddd xmm0, xmmword ptr [rsp+50H]657 paddd xmm1, xmmword ptr [rsp]658 paddd xmm2, xmmword ptr [rsp+0F0H]659 paddd xmm3, xmmword ptr [rsp+10H]660 paddd xmm0, xmm5661 paddd xmm1, xmm6662 paddd xmm2, xmm7663 paddd xmm3, xmm4664 pxor xmm15, xmm0665 pxor xmm12, xmm1666 pxor xmm13, xmm2667 pxor xmm14, xmm3668 movdqa xmm8, xmmword ptr [ROT8]669 pshufb xmm15, xmm8670 pshufb xmm12, xmm8671 pshufb xmm13, xmm8672 pshufb xmm14, xmm8673 paddd xmm10, xmm15674 paddd xmm11, xmm12675 movdqa xmm8, xmmword ptr [rsp+100H]676 paddd xmm8, xmm13677 paddd xmm9, xmm14678 pxor xmm5, xmm10679 pxor xmm6, xmm11680 pxor xmm7, xmm8681 pxor xmm4, xmm9682 movdqa xmmword ptr [rsp+100H], xmm8683 movdqa xmm8, xmm5684 psrld xmm8, 7685 pslld xmm5, 25686 por xmm5, xmm8687 movdqa xmm8, xmm6688 psrld xmm8, 7689 pslld xmm6, 25690 por xmm6, xmm8691 movdqa xmm8, xmm7692 psrld xmm8, 7693 pslld xmm7, 25694 por xmm7, xmm8695 movdqa xmm8, xmm4696 psrld xmm8, 7697 pslld xmm4, 25698 por xmm4, xmm8699 paddd xmm0, xmmword ptr [rsp+0A0H]700 paddd xmm1, xmmword ptr [rsp+0C0H]701 paddd xmm2, xmmword ptr [rsp+0E0H]702 paddd xmm3, xmmword ptr [rsp+0D0H]703 paddd xmm0, xmm4704 paddd xmm1, xmm5705 paddd xmm2, xmm6706 paddd xmm3, xmm7707 pxor xmm12, xmm0708 pxor xmm13, xmm1709 pxor xmm14, xmm2710 pxor xmm15, xmm3711 movdqa xmm8, xmmword ptr [ROT16]712 pshufb xmm12, xmm8713 pshufb xmm13, xmm8714 pshufb xmm14, xmm8715 pshufb xmm15, xmm8716 movdqa xmm8, xmmword ptr [rsp+100H]717 paddd xmm8, xmm12718 paddd xmm9, xmm13719 paddd xmm10, xmm14720 paddd xmm11, xmm15721 pxor xmm4, xmm8722 pxor xmm5, xmm9723 pxor xmm6, xmm10724 pxor xmm7, xmm11725 movdqa xmmword ptr [rsp+100H], xmm8726 movdqa xmm8, xmm4727 psrld xmm8, 12728 pslld xmm4, 20729 por xmm4, xmm8730 movdqa xmm8, xmm5731 psrld xmm8, 12732 pslld xmm5, 20733 por xmm5, xmm8734 movdqa xmm8, xmm6735 psrld xmm8, 12736 pslld xmm6, 20737 por xmm6, xmm8738 movdqa xmm8, xmm7739 psrld xmm8, 12740 pslld xmm7, 20741 por xmm7, xmm8742 paddd xmm0, xmmword ptr [rsp+70H]743 paddd xmm1, xmmword ptr [rsp+90H]744 paddd xmm2, xmmword ptr [rsp+30H]745 paddd xmm3, xmmword ptr [rsp+0F0H]746 paddd xmm0, xmm4747 paddd xmm1, xmm5748 paddd xmm2, xmm6749 paddd xmm3, xmm7750 pxor xmm12, xmm0751 pxor xmm13, xmm1752 pxor xmm14, xmm2753 pxor xmm15, xmm3754 movdqa xmm8, xmmword ptr [ROT8]755 pshufb xmm12, xmm8756 pshufb xmm13, xmm8757 pshufb xmm14, xmm8758 pshufb xmm15, xmm8759 movdqa xmm8, xmmword ptr [rsp+100H]760 paddd xmm8, xmm12761 paddd xmm9, xmm13762 paddd xmm10, xmm14763 paddd xmm11, xmm15764 pxor xmm4, xmm8765 pxor xmm5, xmm9766 pxor xmm6, xmm10767 pxor xmm7, xmm11768 movdqa xmmword ptr [rsp+100H], xmm8769 movdqa xmm8, xmm4770 psrld xmm8, 7771 pslld xmm4, 25772 por xmm4, xmm8773 movdqa xmm8, xmm5774 psrld xmm8, 7775 pslld xmm5, 25776 por xmm5, xmm8777 movdqa xmm8, xmm6778 psrld xmm8, 7779 pslld xmm6, 25780 por xmm6, xmm8781 movdqa xmm8, xmm7782 psrld xmm8, 7783 pslld xmm7, 25784 por xmm7, xmm8785 paddd xmm0, xmmword ptr [rsp+40H]786 paddd xmm1, xmmword ptr [rsp+0B0H]787 paddd xmm2, xmmword ptr [rsp+50H]788 paddd xmm3, xmmword ptr [rsp+10H]789 paddd xmm0, xmm5790 paddd xmm1, xmm6791 paddd xmm2, xmm7792 paddd xmm3, xmm4793 pxor xmm15, xmm0794 pxor xmm12, xmm1795 pxor xmm13, xmm2796 pxor xmm14, xmm3797 movdqa xmm8, xmmword ptr [ROT16]798 pshufb xmm15, xmm8799 pshufb xmm12, xmm8800 pshufb xmm13, xmm8801 pshufb xmm14, xmm8802 paddd xmm10, xmm15803 paddd xmm11, xmm12804 movdqa xmm8, xmmword ptr [rsp+100H]805 paddd xmm8, xmm13806 paddd xmm9, xmm14807 pxor xmm5, xmm10808 pxor xmm6, xmm11809 pxor xmm7, xmm8810 pxor xmm4, xmm9811 movdqa xmmword ptr [rsp+100H], xmm8812 movdqa xmm8, xmm5813 psrld xmm8, 12814 pslld xmm5, 20815 por xmm5, xmm8816 movdqa xmm8, xmm6817 psrld xmm8, 12818 pslld xmm6, 20819 por xmm6, xmm8820 movdqa xmm8, xmm7821 psrld xmm8, 12822 pslld xmm7, 20823 por xmm7, xmm8824 movdqa xmm8, xmm4825 psrld xmm8, 12826 pslld xmm4, 20827 por xmm4, xmm8828 paddd xmm0, xmmword ptr [rsp]829 paddd xmm1, xmmword ptr [rsp+20H]830 paddd xmm2, xmmword ptr [rsp+80H]831 paddd xmm3, xmmword ptr [rsp+60H]832 paddd xmm0, xmm5833 paddd xmm1, xmm6834 paddd xmm2, xmm7835 paddd xmm3, xmm4836 pxor xmm15, xmm0837 pxor xmm12, xmm1838 pxor xmm13, xmm2839 pxor xmm14, xmm3840 movdqa xmm8, xmmword ptr [ROT8]841 pshufb xmm15, xmm8842 pshufb xmm12, xmm8843 pshufb xmm13, xmm8844 pshufb xmm14, xmm8845 paddd xmm10, xmm15846 paddd xmm11, xmm12847 movdqa xmm8, xmmword ptr [rsp+100H]848 paddd xmm8, xmm13849 paddd xmm9, xmm14850 pxor xmm5, xmm10851 pxor xmm6, xmm11852 pxor xmm7, xmm8853 pxor xmm4, xmm9854 movdqa xmmword ptr [rsp+100H], xmm8855 movdqa xmm8, xmm5856 psrld xmm8, 7857 pslld xmm5, 25858 por xmm5, xmm8859 movdqa xmm8, xmm6860 psrld xmm8, 7861 pslld xmm6, 25862 por xmm6, xmm8863 movdqa xmm8, xmm7864 psrld xmm8, 7865 pslld xmm7, 25866 por xmm7, xmm8867 movdqa xmm8, xmm4868 psrld xmm8, 7869 pslld xmm4, 25870 por xmm4, xmm8871 paddd xmm0, xmmword ptr [rsp+0C0H]872 paddd xmm1, xmmword ptr [rsp+90H]873 paddd xmm2, xmmword ptr [rsp+0F0H]874 paddd xmm3, xmmword ptr [rsp+0E0H]875 paddd xmm0, xmm4876 paddd xmm1, xmm5877 paddd xmm2, xmm6878 paddd xmm3, xmm7879 pxor xmm12, xmm0880 pxor xmm13, xmm1881 pxor xmm14, xmm2882 pxor xmm15, xmm3883 movdqa xmm8, xmmword ptr [ROT16]884 pshufb xmm12, xmm8885 pshufb xmm13, xmm8886 pshufb xmm14, xmm8887 pshufb xmm15, xmm8888 movdqa xmm8, xmmword ptr [rsp+100H]889 paddd xmm8, xmm12890 paddd xmm9, xmm13891 paddd xmm10, xmm14892 paddd xmm11, xmm15893 pxor xmm4, xmm8894 pxor xmm5, xmm9895 pxor xmm6, xmm10896 pxor xmm7, xmm11897 movdqa xmmword ptr [rsp+100H], xmm8898 movdqa xmm8, xmm4899 psrld xmm8, 12900 pslld xmm4, 20901 por xmm4, xmm8902 movdqa xmm8, xmm5903 psrld xmm8, 12904 pslld xmm5, 20905 por xmm5, xmm8906 movdqa xmm8, xmm6907 psrld xmm8, 12908 pslld xmm6, 20909 por xmm6, xmm8910 movdqa xmm8, xmm7911 psrld xmm8, 12912 pslld xmm7, 20913 por xmm7, xmm8914 paddd xmm0, xmmword ptr [rsp+0D0H]915 paddd xmm1, xmmword ptr [rsp+0B0H]916 paddd xmm2, xmmword ptr [rsp+0A0H]917 paddd xmm3, xmmword ptr [rsp+80H]918 paddd xmm0, xmm4919 paddd xmm1, xmm5920 paddd xmm2, xmm6921 paddd xmm3, xmm7922 pxor xmm12, xmm0923 pxor xmm13, xmm1924 pxor xmm14, xmm2925 pxor xmm15, xmm3926 movdqa xmm8, xmmword ptr [ROT8]927 pshufb xmm12, xmm8928 pshufb xmm13, xmm8929 pshufb xmm14, xmm8930 pshufb xmm15, xmm8931 movdqa xmm8, xmmword ptr [rsp+100H]932 paddd xmm8, xmm12933 paddd xmm9, xmm13934 paddd xmm10, xmm14935 paddd xmm11, xmm15936 pxor xmm4, xmm8937 pxor xmm5, xmm9938 pxor xmm6, xmm10939 pxor xmm7, xmm11940 movdqa xmmword ptr [rsp+100H], xmm8941 movdqa xmm8, xmm4942 psrld xmm8, 7943 pslld xmm4, 25944 por xmm4, xmm8945 movdqa xmm8, xmm5946 psrld xmm8, 7947 pslld xmm5, 25948 por xmm5, xmm8949 movdqa xmm8, xmm6950 psrld xmm8, 7951 pslld xmm6, 25952 por xmm6, xmm8953 movdqa xmm8, xmm7954 psrld xmm8, 7955 pslld xmm7, 25956 por xmm7, xmm8957 paddd xmm0, xmmword ptr [rsp+70H]958 paddd xmm1, xmmword ptr [rsp+50H]959 paddd xmm2, xmmword ptr [rsp]960 paddd xmm3, xmmword ptr [rsp+60H]961 paddd xmm0, xmm5962 paddd xmm1, xmm6963 paddd xmm2, xmm7964 paddd xmm3, xmm4965 pxor xmm15, xmm0966 pxor xmm12, xmm1967 pxor xmm13, xmm2968 pxor xmm14, xmm3969 movdqa xmm8, xmmword ptr [ROT16]970 pshufb xmm15, xmm8971 pshufb xmm12, xmm8972 pshufb xmm13, xmm8973 pshufb xmm14, xmm8974 paddd xmm10, xmm15975 paddd xmm11, xmm12976 movdqa xmm8, xmmword ptr [rsp+100H]977 paddd xmm8, xmm13978 paddd xmm9, xmm14979 pxor xmm5, xmm10980 pxor xmm6, xmm11981 pxor xmm7, xmm8982 pxor xmm4, xmm9983 movdqa xmmword ptr [rsp+100H], xmm8984 movdqa xmm8, xmm5985 psrld xmm8, 12986 pslld xmm5, 20987 por xmm5, xmm8988 movdqa xmm8, xmm6989 psrld xmm8, 12990 pslld xmm6, 20991 por xmm6, xmm8992 movdqa xmm8, xmm7993 psrld xmm8, 12994 pslld xmm7, 20995 por xmm7, xmm8996 movdqa xmm8, xmm4997 psrld xmm8, 12998 pslld xmm4, 20999 por xmm4, xmm81000 paddd xmm0, xmmword ptr [rsp+20H]1001 paddd xmm1, xmmword ptr [rsp+30H]1002 paddd xmm2, xmmword ptr [rsp+10H]1003 paddd xmm3, xmmword ptr [rsp+40H]1004 paddd xmm0, xmm51005 paddd xmm1, xmm61006 paddd xmm2, xmm71007 paddd xmm3, xmm41008 pxor xmm15, xmm01009 pxor xmm12, xmm11010 pxor xmm13, xmm21011 pxor xmm14, xmm31012 movdqa xmm8, xmmword ptr [ROT8]1013 pshufb xmm15, xmm81014 pshufb xmm12, xmm81015 pshufb xmm13, xmm81016 pshufb xmm14, xmm81017 paddd xmm10, xmm151018 paddd xmm11, xmm121019 movdqa xmm8, xmmword ptr [rsp+100H]1020 paddd xmm8, xmm131021 paddd xmm9, xmm141022 pxor xmm5, xmm101023 pxor xmm6, xmm111024 pxor xmm7, xmm81025 pxor xmm4, xmm91026 movdqa xmmword ptr [rsp+100H], xmm81027 movdqa xmm8, xmm51028 psrld xmm8, 71029 pslld xmm5, 251030 por xmm5, xmm81031 movdqa xmm8, xmm61032 psrld xmm8, 71033 pslld xmm6, 251034 por xmm6, xmm81035 movdqa xmm8, xmm71036 psrld xmm8, 71037 pslld xmm7, 251038 por xmm7, xmm81039 movdqa xmm8, xmm41040 psrld xmm8, 71041 pslld xmm4, 251042 por xmm4, xmm81043 paddd xmm0, xmmword ptr [rsp+90H]1044 paddd xmm1, xmmword ptr [rsp+0B0H]1045 paddd xmm2, xmmword ptr [rsp+80H]1046 paddd xmm3, xmmword ptr [rsp+0F0H]1047 paddd xmm0, xmm41048 paddd xmm1, xmm51049 paddd xmm2, xmm61050 paddd xmm3, xmm71051 pxor xmm12, xmm01052 pxor xmm13, xmm11053 pxor xmm14, xmm21054 pxor xmm15, xmm31055 movdqa xmm8, xmmword ptr [ROT16]1056 pshufb xmm12, xmm81057 pshufb xmm13, xmm81058 pshufb xmm14, xmm81059 pshufb xmm15, xmm81060 movdqa xmm8, xmmword ptr [rsp+100H]1061 paddd xmm8, xmm121062 paddd xmm9, xmm131063 paddd xmm10, xmm141064 paddd xmm11, xmm151065 pxor xmm4, xmm81066 pxor xmm5, xmm91067 pxor xmm6, xmm101068 pxor xmm7, xmm111069 movdqa xmmword ptr [rsp+100H], xmm81070 movdqa xmm8, xmm41071 psrld xmm8, 121072 pslld xmm4, 201073 por xmm4, xmm81074 movdqa xmm8, xmm51075 psrld xmm8, 121076 pslld xmm5, 201077 por xmm5, xmm81078 movdqa xmm8, xmm61079 psrld xmm8, 121080 pslld xmm6, 201081 por xmm6, xmm81082 movdqa xmm8, xmm71083 psrld xmm8, 121084 pslld xmm7, 201085 por xmm7, xmm81086 paddd xmm0, xmmword ptr [rsp+0E0H]1087 paddd xmm1, xmmword ptr [rsp+50H]1088 paddd xmm2, xmmword ptr [rsp+0C0H]1089 paddd xmm3, xmmword ptr [rsp+10H]1090 paddd xmm0, xmm41091 paddd xmm1, xmm51092 paddd xmm2, xmm61093 paddd xmm3, xmm71094 pxor xmm12, xmm01095 pxor xmm13, xmm11096 pxor xmm14, xmm21097 pxor xmm15, xmm31098 movdqa xmm8, xmmword ptr [ROT8]1099 pshufb xmm12, xmm81100 pshufb xmm13, xmm81101 pshufb xmm14, xmm81102 pshufb xmm15, xmm81103 movdqa xmm8, xmmword ptr [rsp+100H]1104 paddd xmm8, xmm121105 paddd xmm9, xmm131106 paddd xmm10, xmm141107 paddd xmm11, xmm151108 pxor xmm4, xmm81109 pxor xmm5, xmm91110 pxor xmm6, xmm101111 pxor xmm7, xmm111112 movdqa xmmword ptr [rsp+100H], xmm81113 movdqa xmm8, xmm41114 psrld xmm8, 71115 pslld xmm4, 251116 por xmm4, xmm81117 movdqa xmm8, xmm51118 psrld xmm8, 71119 pslld xmm5, 251120 por xmm5, xmm81121 movdqa xmm8, xmm61122 psrld xmm8, 71123 pslld xmm6, 251124 por xmm6, xmm81125 movdqa xmm8, xmm71126 psrld xmm8, 71127 pslld xmm7, 251128 por xmm7, xmm81129 paddd xmm0, xmmword ptr [rsp+0D0H]1130 paddd xmm1, xmmword ptr [rsp]1131 paddd xmm2, xmmword ptr [rsp+20H]1132 paddd xmm3, xmmword ptr [rsp+40H]1133 paddd xmm0, xmm51134 paddd xmm1, xmm61135 paddd xmm2, xmm71136 paddd xmm3, xmm41137 pxor xmm15, xmm01138 pxor xmm12, xmm11139 pxor xmm13, xmm21140 pxor xmm14, xmm31141 movdqa xmm8, xmmword ptr [ROT16]1142 pshufb xmm15, xmm81143 pshufb xmm12, xmm81144 pshufb xmm13, xmm81145 pshufb xmm14, xmm81146 paddd xmm10, xmm151147 paddd xmm11, xmm121148 movdqa xmm8, xmmword ptr [rsp+100H]1149 paddd xmm8, xmm131150 paddd xmm9, xmm141151 pxor xmm5, xmm101152 pxor xmm6, xmm111153 pxor xmm7, xmm81154 pxor xmm4, xmm91155 movdqa xmmword ptr [rsp+100H], xmm81156 movdqa xmm8, xmm51157 psrld xmm8, 121158 pslld xmm5, 201159 por xmm5, xmm81160 movdqa xmm8, xmm61161 psrld xmm8, 121162 pslld xmm6, 201163 por xmm6, xmm81164 movdqa xmm8, xmm71165 psrld xmm8, 121166 pslld xmm7, 201167 por xmm7, xmm81168 movdqa xmm8, xmm41169 psrld xmm8, 121170 pslld xmm4, 201171 por xmm4, xmm81172 paddd xmm0, xmmword ptr [rsp+30H]1173 paddd xmm1, xmmword ptr [rsp+0A0H]1174 paddd xmm2, xmmword ptr [rsp+60H]1175 paddd xmm3, xmmword ptr [rsp+70H]1176 paddd xmm0, xmm51177 paddd xmm1, xmm61178 paddd xmm2, xmm71179 paddd xmm3, xmm41180 pxor xmm15, xmm01181 pxor xmm12, xmm11182 pxor xmm13, xmm21183 pxor xmm14, xmm31184 movdqa xmm8, xmmword ptr [ROT8]1185 pshufb xmm15, xmm81186 pshufb xmm12, xmm81187 pshufb xmm13, xmm81188 pshufb xmm14, xmm81189 paddd xmm10, xmm151190 paddd xmm11, xmm121191 movdqa xmm8, xmmword ptr [rsp+100H]1192 paddd xmm8, xmm131193 paddd xmm9, xmm141194 pxor xmm5, xmm101195 pxor xmm6, xmm111196 pxor xmm7, xmm81197 pxor xmm4, xmm91198 movdqa xmmword ptr [rsp+100H], xmm81199 movdqa xmm8, xmm51200 psrld xmm8, 71201 pslld xmm5, 251202 por xmm5, xmm81203 movdqa xmm8, xmm61204 psrld xmm8, 71205 pslld xmm6, 251206 por xmm6, xmm81207 movdqa xmm8, xmm71208 psrld xmm8, 71209 pslld xmm7, 251210 por xmm7, xmm81211 movdqa xmm8, xmm41212 psrld xmm8, 71213 pslld xmm4, 251214 por xmm4, xmm81215 paddd xmm0, xmmword ptr [rsp+0B0H]1216 paddd xmm1, xmmword ptr [rsp+50H]1217 paddd xmm2, xmmword ptr [rsp+10H]1218 paddd xmm3, xmmword ptr [rsp+80H]1219 paddd xmm0, xmm41220 paddd xmm1, xmm51221 paddd xmm2, xmm61222 paddd xmm3, xmm71223 pxor xmm12, xmm01224 pxor xmm13, xmm11225 pxor xmm14, xmm21226 pxor xmm15, xmm31227 movdqa xmm8, xmmword ptr [ROT16]1228 pshufb xmm12, xmm81229 pshufb xmm13, xmm81230 pshufb xmm14, xmm81231 pshufb xmm15, xmm81232 movdqa xmm8, xmmword ptr [rsp+100H]1233 paddd xmm8, xmm121234 paddd xmm9, xmm131235 paddd xmm10, xmm141236 paddd xmm11, xmm151237 pxor xmm4, xmm81238 pxor xmm5, xmm91239 pxor xmm6, xmm101240 pxor xmm7, xmm111241 movdqa xmmword ptr [rsp+100H], xmm81242 movdqa xmm8, xmm41243 psrld xmm8, 121244 pslld xmm4, 201245 por xmm4, xmm81246 movdqa xmm8, xmm51247 psrld xmm8, 121248 pslld xmm5, 201249 por xmm5, xmm81250 movdqa xmm8, xmm61251 psrld xmm8, 121252 pslld xmm6, 201253 por xmm6, xmm81254 movdqa xmm8, xmm71255 psrld xmm8, 121256 pslld xmm7, 201257 por xmm7, xmm81258 paddd xmm0, xmmword ptr [rsp+0F0H]1259 paddd xmm1, xmmword ptr [rsp]1260 paddd xmm2, xmmword ptr [rsp+90H]1261 paddd xmm3, xmmword ptr [rsp+60H]1262 paddd xmm0, xmm41263 paddd xmm1, xmm51264 paddd xmm2, xmm61265 paddd xmm3, xmm71266 pxor xmm12, xmm01267 pxor xmm13, xmm11268 pxor xmm14, xmm21269 pxor xmm15, xmm31270 movdqa xmm8, xmmword ptr [ROT8]1271 pshufb xmm12, xmm81272 pshufb xmm13, xmm81273 pshufb xmm14, xmm81274 pshufb xmm15, xmm81275 movdqa xmm8, xmmword ptr [rsp+100H]1276 paddd xmm8, xmm121277 paddd xmm9, xmm131278 paddd xmm10, xmm141279 paddd xmm11, xmm151280 pxor xmm4, xmm81281 pxor xmm5, xmm91282 pxor xmm6, xmm101283 pxor xmm7, xmm111284 movdqa xmmword ptr [rsp+100H], xmm81285 movdqa xmm8, xmm41286 psrld xmm8, 71287 pslld xmm4, 251288 por xmm4, xmm81289 movdqa xmm8, xmm51290 psrld xmm8, 71291 pslld xmm5, 251292 por xmm5, xmm81293 movdqa xmm8, xmm61294 psrld xmm8, 71295 pslld xmm6, 251296 por xmm6, xmm81297 movdqa xmm8, xmm71298 psrld xmm8, 71299 pslld xmm7, 251300 por xmm7, xmm81301 paddd xmm0, xmmword ptr [rsp+0E0H]1302 paddd xmm1, xmmword ptr [rsp+20H]1303 paddd xmm2, xmmword ptr [rsp+30H]1304 paddd xmm3, xmmword ptr [rsp+70H]1305 paddd xmm0, xmm51306 paddd xmm1, xmm61307 paddd xmm2, xmm71308 paddd xmm3, xmm41309 pxor xmm15, xmm01310 pxor xmm12, xmm11311 pxor xmm13, xmm21312 pxor xmm14, xmm31313 movdqa xmm8, xmmword ptr [ROT16]1314 pshufb xmm15, xmm81315 pshufb xmm12, xmm81316 pshufb xmm13, xmm81317 pshufb xmm14, xmm81318 paddd xmm10, xmm151319 paddd xmm11, xmm121320 movdqa xmm8, xmmword ptr [rsp+100H]1321 paddd xmm8, xmm131322 paddd xmm9, xmm141323 pxor xmm5, xmm101324 pxor xmm6, xmm111325 pxor xmm7, xmm81326 pxor xmm4, xmm91327 movdqa xmmword ptr [rsp+100H], xmm81328 movdqa xmm8, xmm51329 psrld xmm8, 121330 pslld xmm5, 201331 por xmm5, xmm81332 movdqa xmm8, xmm61333 psrld xmm8, 121334 pslld xmm6, 201335 por xmm6, xmm81336 movdqa xmm8, xmm71337 psrld xmm8, 121338 pslld xmm7, 201339 por xmm7, xmm81340 movdqa xmm8, xmm41341 psrld xmm8, 121342 pslld xmm4, 201343 por xmm4, xmm81344 paddd xmm0, xmmword ptr [rsp+0A0H]1345 paddd xmm1, xmmword ptr [rsp+0C0H]1346 paddd xmm2, xmmword ptr [rsp+40H]1347 paddd xmm3, xmmword ptr [rsp+0D0H]1348 paddd xmm0, xmm51349 paddd xmm1, xmm61350 paddd xmm2, xmm71351 paddd xmm3, xmm41352 pxor xmm15, xmm01353 pxor xmm12, xmm11354 pxor xmm13, xmm21355 pxor xmm14, xmm31356 movdqa xmm8, xmmword ptr [ROT8]1357 pshufb xmm15, xmm81358 pshufb xmm12, xmm81359 pshufb xmm13, xmm81360 pshufb xmm14, xmm81361 paddd xmm10, xmm151362 paddd xmm11, xmm121363 movdqa xmm8, xmmword ptr [rsp+100H]1364 paddd xmm8, xmm131365 paddd xmm9, xmm141366 pxor xmm5, xmm101367 pxor xmm6, xmm111368 pxor xmm7, xmm81369 pxor xmm4, xmm91370 pxor xmm0, xmm81371 pxor xmm1, xmm91372 pxor xmm2, xmm101373 pxor xmm3, xmm111374 movdqa xmm8, xmm51375 psrld xmm8, 71376 pslld xmm5, 251377 por xmm5, xmm81378 movdqa xmm8, xmm61379 psrld xmm8, 71380 pslld xmm6, 251381 por xmm6, xmm81382 movdqa xmm8, xmm71383 psrld xmm8, 71384 pslld xmm7, 251385 por xmm7, xmm81386 movdqa xmm8, xmm41387 psrld xmm8, 71388 pslld xmm4, 251389 por xmm4, xmm81390 pxor xmm4, xmm121391 pxor xmm5, xmm131392 pxor xmm6, xmm141393 pxor xmm7, xmm151394 mov eax, r13d1395 jne innerloop41396 movdqa xmm9, xmm01397 punpckldq xmm0, xmm11398 punpckhdq xmm9, xmm11399 movdqa xmm11, xmm21400 punpckldq xmm2, xmm31401 punpckhdq xmm11, xmm31402 movdqa xmm1, xmm01403 punpcklqdq xmm0, xmm21404 punpckhqdq xmm1, xmm21405 movdqa xmm3, xmm91406 punpcklqdq xmm9, xmm111407 punpckhqdq xmm3, xmm111408 movdqu xmmword ptr [rbx], xmm01409 movdqu xmmword ptr [rbx+20H], xmm11410 movdqu xmmword ptr [rbx+40H], xmm91411 movdqu xmmword ptr [rbx+60H], xmm31412 movdqa xmm9, xmm41413 punpckldq xmm4, xmm51414 punpckhdq xmm9, xmm51415 movdqa xmm11, xmm61416 punpckldq xmm6, xmm71417 punpckhdq xmm11, xmm71418 movdqa xmm5, xmm41419 punpcklqdq xmm4, xmm61420 punpckhqdq xmm5, xmm61421 movdqa xmm7, xmm91422 punpcklqdq xmm9, xmm111423 punpckhqdq xmm7, xmm111424 movdqu xmmword ptr [rbx+10H], xmm41425 movdqu xmmword ptr [rbx+30H], xmm51426 movdqu xmmword ptr [rbx+50H], xmm91427 movdqu xmmword ptr [rbx+70H], xmm71428 movdqa xmm1, xmmword ptr [rsp+110H]1429 movdqa xmm0, xmm11430 paddd xmm1, xmmword ptr [rsp+150H]1431 movdqa xmmword ptr [rsp+110H], xmm11432 pxor xmm0, xmmword ptr [CMP_MSB_MASK]1433 pxor xmm1, xmmword ptr [CMP_MSB_MASK]1434 pcmpgtd xmm0, xmm11435 movdqa xmm1, xmmword ptr [rsp+120H]1436 psubd xmm1, xmm01437 movdqa xmmword ptr [rsp+120H], xmm11438 add rbx, 1281439 add rdi, 321440 sub rsi, 41441 cmp rsi, 41442 jnc outerloop41443 test rsi, rsi1444 jne final3blocks1445unwind:1446 movdqa xmm6, xmmword ptr [rsp+170H]1447 movdqa xmm7, xmmword ptr [rsp+180H]1448 movdqa xmm8, xmmword ptr [rsp+190H]1449 movdqa xmm9, xmmword ptr [rsp+1A0H]1450 movdqa xmm10, xmmword ptr [rsp+1B0H]1451 movdqa xmm11, xmmword ptr [rsp+1C0H]1452 movdqa xmm12, xmmword ptr [rsp+1D0H]1453 movdqa xmm13, xmmword ptr [rsp+1E0H]1454 movdqa xmm14, xmmword ptr [rsp+1F0H]1455 movdqa xmm15, xmmword ptr [rsp+200H]1456 mov rsp, rbp1457 pop rbp1458 pop rbx1459 pop rdi1460 pop rsi1461 pop r121462 pop r131463 pop r141464 pop r151465 ret1466ALIGN 161467final3blocks:1468 test esi, 2H1469 je final1block1470 movups xmm0, xmmword ptr [rcx]1471 movups xmm1, xmmword ptr [rcx+10H]1472 movaps xmm8, xmm01473 movaps xmm9, xmm11474 movd xmm13, dword ptr [rsp+110H]1475 pinsrd xmm13, dword ptr [rsp+120H], 11476 pinsrd xmm13, dword ptr [BLAKE3_BLOCK_LEN], 21477 movaps xmmword ptr [rsp], xmm131478 movd xmm14, dword ptr [rsp+114H]1479 pinsrd xmm14, dword ptr [rsp+124H], 11480 pinsrd xmm14, dword ptr [BLAKE3_BLOCK_LEN], 21481 movaps xmmword ptr [rsp+10H], xmm141482 mov r8, qword ptr [rdi]1483 mov r9, qword ptr [rdi+8H]1484 movzx eax, byte ptr [rbp+80H]1485 or eax, r13d1486 xor edx, edx1487innerloop2:1488 mov r14d, eax1489 or eax, r12d1490 add rdx, 641491 cmp rdx, r151492 cmovne eax, r14d1493 movaps xmm2, xmmword ptr [BLAKE3_IV]1494 movaps xmm10, xmm21495 movups xmm4, xmmword ptr [r8+rdx-40H]1496 movups xmm5, xmmword ptr [r8+rdx-30H]1497 movaps xmm3, xmm41498 shufps xmm4, xmm5, 1361499 shufps xmm3, xmm5, 2211500 movaps xmm5, xmm31501 movups xmm6, xmmword ptr [r8+rdx-20H]1502 movups xmm7, xmmword ptr [r8+rdx-10H]1503 movaps xmm3, xmm61504 shufps xmm6, xmm7, 1361505 pshufd xmm6, xmm6, 93H1506 shufps xmm3, xmm7, 2211507 pshufd xmm7, xmm3, 93H1508 movups xmm12, xmmword ptr [r9+rdx-40H]1509 movups xmm13, xmmword ptr [r9+rdx-30H]1510 movaps xmm11, xmm121511 shufps xmm12, xmm13, 1361512 shufps xmm11, xmm13, 2211513 movaps xmm13, xmm111514 movups xmm14, xmmword ptr [r9+rdx-20H]1515 movups xmm15, xmmword ptr [r9+rdx-10H]1516 movaps xmm11, xmm141517 shufps xmm14, xmm15, 1361518 pshufd xmm14, xmm14, 93H1519 shufps xmm11, xmm15, 2211520 pshufd xmm15, xmm11, 93H1521 movaps xmm3, xmmword ptr [rsp]1522 movaps xmm11, xmmword ptr [rsp+10H]1523 pinsrd xmm3, eax, 31524 pinsrd xmm11, eax, 31525 mov al, 71526roundloop2:1527 paddd xmm0, xmm41528 paddd xmm8, xmm121529 movaps xmmword ptr [rsp+20H], xmm41530 movaps xmmword ptr [rsp+30H], xmm121531 paddd xmm0, xmm11532 paddd xmm8, xmm91533 pxor xmm3, xmm01534 pxor xmm11, xmm81535 movaps xmm12, xmmword ptr [ROT16]1536 pshufb xmm3, xmm121537 pshufb xmm11, xmm121538 paddd xmm2, xmm31539 paddd xmm10, xmm111540 pxor xmm1, xmm21541 pxor xmm9, xmm101542 movdqa xmm4, xmm11543 pslld xmm1, 201544 psrld xmm4, 121545 por xmm1, xmm41546 movdqa xmm4, xmm91547 pslld xmm9, 201548 psrld xmm4, 121549 por xmm9, xmm41550 paddd xmm0, xmm51551 paddd xmm8, xmm131552 movaps xmmword ptr [rsp+40H], xmm51553 movaps xmmword ptr [rsp+50H], xmm131554 paddd xmm0, xmm11555 paddd xmm8, xmm91556 pxor xmm3, xmm01557 pxor xmm11, xmm81558 movaps xmm13, xmmword ptr [ROT8]1559 pshufb xmm3, xmm131560 pshufb xmm11, xmm131561 paddd xmm2, xmm31562 paddd xmm10, xmm111563 pxor xmm1, xmm21564 pxor xmm9, xmm101565 movdqa xmm4, xmm11566 pslld xmm1, 251567 psrld xmm4, 71568 por xmm1, xmm41569 movdqa xmm4, xmm91570 pslld xmm9, 251571 psrld xmm4, 71572 por xmm9, xmm41573 pshufd xmm0, xmm0, 93H1574 pshufd xmm8, xmm8, 93H1575 pshufd xmm3, xmm3, 4EH1576 pshufd xmm11, xmm11, 4EH1577 pshufd xmm2, xmm2, 39H1578 pshufd xmm10, xmm10, 39H1579 paddd xmm0, xmm61580 paddd xmm8, xmm141581 paddd xmm0, xmm11582 paddd xmm8, xmm91583 pxor xmm3, xmm01584 pxor xmm11, xmm81585 pshufb xmm3, xmm121586 pshufb xmm11, xmm121587 paddd xmm2, xmm31588 paddd xmm10, xmm111589 pxor xmm1, xmm21590 pxor xmm9, xmm101591 movdqa xmm4, xmm11592 pslld xmm1, 201593 psrld xmm4, 121594 por xmm1, xmm41595 movdqa xmm4, xmm91596 pslld xmm9, 201597 psrld xmm4, 121598 por xmm9, xmm41599 paddd xmm0, xmm71600 paddd xmm8, xmm151601 paddd xmm0, xmm11602 paddd xmm8, xmm91603 pxor xmm3, xmm01604 pxor xmm11, xmm81605 pshufb xmm3, xmm131606 pshufb xmm11, xmm131607 paddd xmm2, xmm31608 paddd xmm10, xmm111609 pxor xmm1, xmm21610 pxor xmm9, xmm101611 movdqa xmm4, xmm11612 pslld xmm1, 251613 psrld xmm4, 71614 por xmm1, xmm41615 movdqa xmm4, xmm91616 pslld xmm9, 251617 psrld xmm4, 71618 por xmm9, xmm41619 pshufd xmm0, xmm0, 39H1620 pshufd xmm8, xmm8, 39H1621 pshufd xmm3, xmm3, 4EH1622 pshufd xmm11, xmm11, 4EH1623 pshufd xmm2, xmm2, 93H1624 pshufd xmm10, xmm10, 93H1625 dec al1626 je endroundloop21627 movdqa xmm12, xmmword ptr [rsp+20H]1628 movdqa xmm5, xmmword ptr [rsp+40H]1629 pshufd xmm13, xmm12, 0FH1630 shufps xmm12, xmm5, 2141631 pshufd xmm4, xmm12, 39H1632 movdqa xmm12, xmm61633 shufps xmm12, xmm7, 2501634 pblendw xmm13, xmm12, 0CCH1635 movdqa xmm12, xmm71636 punpcklqdq xmm12, xmm51637 pblendw xmm12, xmm6, 0C0H1638 pshufd xmm12, xmm12, 78H1639 punpckhdq xmm5, xmm71640 punpckldq xmm6, xmm51641 pshufd xmm7, xmm6, 1EH1642 movdqa xmmword ptr [rsp+20H], xmm131643 movdqa xmmword ptr [rsp+40H], xmm121644 movdqa xmm5, xmmword ptr [rsp+30H]1645 movdqa xmm13, xmmword ptr [rsp+50H]1646 pshufd xmm6, xmm5, 0FH1647 shufps xmm5, xmm13, 2141648 pshufd xmm12, xmm5, 39H1649 movdqa xmm5, xmm141650 shufps xmm5, xmm15, 2501651 pblendw xmm6, xmm5, 0CCH1652 movdqa xmm5, xmm151653 punpcklqdq xmm5, xmm131654 pblendw xmm5, xmm14, 0C0H1655 pshufd xmm5, xmm5, 78H1656 punpckhdq xmm13, xmm151657 punpckldq xmm14, xmm131658 pshufd xmm15, xmm14, 1EH1659 movdqa xmm13, xmm61660 movdqa xmm14, xmm51661 movdqa xmm5, xmmword ptr [rsp+20H]1662 movdqa xmm6, xmmword ptr [rsp+40H]1663 jmp roundloop21664endroundloop2:1665 pxor xmm0, xmm21666 pxor xmm1, xmm31667 pxor xmm8, xmm101668 pxor xmm9, xmm111669 mov eax, r13d1670 cmp rdx, r151671 jne innerloop21672 movups xmmword ptr [rbx], xmm01673 movups xmmword ptr [rbx+10H], xmm11674 movups xmmword ptr [rbx+20H], xmm81675 movups xmmword ptr [rbx+30H], xmm91676 movdqa xmm0, xmmword ptr [rsp+130H]1677 movdqa xmm1, xmmword ptr [rsp+110H]1678 movdqa xmm2, xmmword ptr [rsp+120H]1679 movdqu xmm3, xmmword ptr [rsp+118H]1680 movdqu xmm4, xmmword ptr [rsp+128H]1681 blendvps xmm1, xmm3, xmm01682 blendvps xmm2, xmm4, xmm01683 movdqa xmmword ptr [rsp+110H], xmm11684 movdqa xmmword ptr [rsp+120H], xmm21685 add rdi, 161686 add rbx, 641687 sub rsi, 21688final1block:1689 test esi, 1H1690 je unwind1691 movups xmm0, xmmword ptr [rcx]1692 movups xmm1, xmmword ptr [rcx+10H]1693 movd xmm13, dword ptr [rsp+110H]1694 pinsrd xmm13, dword ptr [rsp+120H], 11695 pinsrd xmm13, dword ptr [BLAKE3_BLOCK_LEN], 21696 movaps xmm14, xmmword ptr [ROT8]1697 movaps xmm15, xmmword ptr [ROT16]1698 mov r8, qword ptr [rdi]1699 movzx eax, byte ptr [rbp+80H]1700 or eax, r13d1701 xor edx, edx1702innerloop1:1703 mov r14d, eax1704 or eax, r12d1705 add rdx, 641706 cmp rdx, r151707 cmovne eax, r14d1708 movaps xmm2, xmmword ptr [BLAKE3_IV]1709 movaps xmm3, xmm131710 pinsrd xmm3, eax, 31711 movups xmm4, xmmword ptr [r8+rdx-40H]1712 movups xmm5, xmmword ptr [r8+rdx-30H]1713 movaps xmm8, xmm41714 shufps xmm4, xmm5, 1361715 shufps xmm8, xmm5, 2211716 movaps xmm5, xmm81717 movups xmm6, xmmword ptr [r8+rdx-20H]1718 movups xmm7, xmmword ptr [r8+rdx-10H]1719 movaps xmm8, xmm61720 shufps xmm6, xmm7, 1361721 pshufd xmm6, xmm6, 93H1722 shufps xmm8, xmm7, 2211723 pshufd xmm7, xmm8, 93H1724 mov al, 71725roundloop1:1726 paddd xmm0, xmm41727 paddd xmm0, xmm11728 pxor xmm3, xmm01729 pshufb xmm3, xmm151730 paddd xmm2, xmm31731 pxor xmm1, xmm21732 movdqa xmm11, xmm11733 pslld xmm1, 201734 psrld xmm11, 121735 por xmm1, xmm111736 paddd xmm0, xmm51737 paddd xmm0, xmm11738 pxor xmm3, xmm01739 pshufb xmm3, xmm141740 paddd xmm2, xmm31741 pxor xmm1, xmm21742 movdqa xmm11, xmm11743 pslld xmm1, 251744 psrld xmm11, 71745 por xmm1, xmm111746 pshufd xmm0, xmm0, 93H1747 pshufd xmm3, xmm3, 4EH1748 pshufd xmm2, xmm2, 39H1749 paddd xmm0, xmm61750 paddd xmm0, xmm11751 pxor xmm3, xmm01752 pshufb xmm3, xmm151753 paddd xmm2, xmm31754 pxor xmm1, xmm21755 movdqa xmm11, xmm11756 pslld xmm1, 201757 psrld xmm11, 121758 por xmm1, xmm111759 paddd xmm0, xmm71760 paddd xmm0, xmm11761 pxor xmm3, xmm01762 pshufb xmm3, xmm141763 paddd xmm2, xmm31764 pxor xmm1, xmm21765 movdqa xmm11, xmm11766 pslld xmm1, 251767 psrld xmm11, 71768 por xmm1, xmm111769 pshufd xmm0, xmm0, 39H1770 pshufd xmm3, xmm3, 4EH1771 pshufd xmm2, xmm2, 93H1772 dec al1773 jz endroundloop11774 movdqa xmm8, xmm41775 shufps xmm8, xmm5, 2141776 pshufd xmm9, xmm4, 0FH1777 pshufd xmm4, xmm8, 39H1778 movdqa xmm8, xmm61779 shufps xmm8, xmm7, 2501780 pblendw xmm9, xmm8, 0CCH1781 movdqa xmm8, xmm71782 punpcklqdq xmm8, xmm51783 pblendw xmm8, xmm6, 0C0H1784 pshufd xmm8, xmm8, 78H1785 punpckhdq xmm5, xmm71786 punpckldq xmm6, xmm51787 pshufd xmm7, xmm6, 1EH1788 movdqa xmm5, xmm91789 movdqa xmm6, xmm81790 jmp roundloop11791endroundloop1:1792 pxor xmm0, xmm21793 pxor xmm1, xmm31794 mov eax, r13d1795 cmp rdx, r151796 jne innerloop11797 movups xmmword ptr [rbx], xmm01798 movups xmmword ptr [rbx+10H], xmm11799 jmp unwind1800_llvm_blake3_hash_many_sse41 ENDP1801llvm_blake3_hash_many_sse41 ENDP1802 1803llvm_blake3_compress_in_place_sse41 PROC1804_llvm_blake3_compress_in_place_sse41 PROC1805 sub rsp, 1201806 movdqa xmmword ptr [rsp], xmm61807 movdqa xmmword ptr [rsp+10H], xmm71808 movdqa xmmword ptr [rsp+20H], xmm81809 movdqa xmmword ptr [rsp+30H], xmm91810 movdqa xmmword ptr [rsp+40H], xmm111811 movdqa xmmword ptr [rsp+50H], xmm141812 movdqa xmmword ptr [rsp+60H], xmm151813 movups xmm0, xmmword ptr [rcx]1814 movups xmm1, xmmword ptr [rcx+10H]1815 movaps xmm2, xmmword ptr [BLAKE3_IV]1816 movzx eax, byte ptr [rsp+0A0H]1817 movzx r8d, r8b1818 shl rax, 321819 add r8, rax1820 movd xmm3, r91821 movd xmm4, r81822 punpcklqdq xmm3, xmm41823 movups xmm4, xmmword ptr [rdx]1824 movups xmm5, xmmword ptr [rdx+10H]1825 movaps xmm8, xmm41826 shufps xmm4, xmm5, 1361827 shufps xmm8, xmm5, 2211828 movaps xmm5, xmm81829 movups xmm6, xmmword ptr [rdx+20H]1830 movups xmm7, xmmword ptr [rdx+30H]1831 movaps xmm8, xmm61832 shufps xmm6, xmm7, 1361833 pshufd xmm6, xmm6, 93H1834 shufps xmm8, xmm7, 2211835 pshufd xmm7, xmm8, 93H1836 movaps xmm14, xmmword ptr [ROT8]1837 movaps xmm15, xmmword ptr [ROT16]1838 mov al, 71839@@:1840 paddd xmm0, xmm41841 paddd xmm0, xmm11842 pxor xmm3, xmm01843 pshufb xmm3, xmm151844 paddd xmm2, xmm31845 pxor xmm1, xmm21846 movdqa xmm11, xmm11847 pslld xmm1, 201848 psrld xmm11, 121849 por xmm1, xmm111850 paddd xmm0, xmm51851 paddd xmm0, xmm11852 pxor xmm3, xmm01853 pshufb xmm3, xmm141854 paddd xmm2, xmm31855 pxor xmm1, xmm21856 movdqa xmm11, xmm11857 pslld xmm1, 251858 psrld xmm11, 71859 por xmm1, xmm111860 pshufd xmm0, xmm0, 93H1861 pshufd xmm3, xmm3, 4EH1862 pshufd xmm2, xmm2, 39H1863 paddd xmm0, xmm61864 paddd xmm0, xmm11865 pxor xmm3, xmm01866 pshufb xmm3, xmm151867 paddd xmm2, xmm31868 pxor xmm1, xmm21869 movdqa xmm11, xmm11870 pslld xmm1, 201871 psrld xmm11, 121872 por xmm1, xmm111873 paddd xmm0, xmm71874 paddd xmm0, xmm11875 pxor xmm3, xmm01876 pshufb xmm3, xmm141877 paddd xmm2, xmm31878 pxor xmm1, xmm21879 movdqa xmm11, xmm11880 pslld xmm1, 251881 psrld xmm11, 71882 por xmm1, xmm111883 pshufd xmm0, xmm0, 39H1884 pshufd xmm3, xmm3, 4EH1885 pshufd xmm2, xmm2, 93H1886 dec al1887 jz @F1888 movdqa xmm8, xmm41889 shufps xmm8, xmm5, 2141890 pshufd xmm9, xmm4, 0FH1891 pshufd xmm4, xmm8, 39H1892 movdqa xmm8, xmm61893 shufps xmm8, xmm7, 2501894 pblendw xmm9, xmm8, 0CCH1895 movdqa xmm8, xmm71896 punpcklqdq xmm8, xmm51897 pblendw xmm8, xmm6, 0C0H1898 pshufd xmm8, xmm8, 78H1899 punpckhdq xmm5, xmm71900 punpckldq xmm6, xmm51901 pshufd xmm7, xmm6, 1EH1902 movdqa xmm5, xmm91903 movdqa xmm6, xmm81904 jmp @B1905@@:1906 pxor xmm0, xmm21907 pxor xmm1, xmm31908 movups xmmword ptr [rcx], xmm01909 movups xmmword ptr [rcx+10H], xmm11910 movdqa xmm6, xmmword ptr [rsp]1911 movdqa xmm7, xmmword ptr [rsp+10H]1912 movdqa xmm8, xmmword ptr [rsp+20H]1913 movdqa xmm9, xmmword ptr [rsp+30H]1914 movdqa xmm11, xmmword ptr [rsp+40H]1915 movdqa xmm14, xmmword ptr [rsp+50H]1916 movdqa xmm15, xmmword ptr [rsp+60H]1917 add rsp, 1201918 ret1919_llvm_blake3_compress_in_place_sse41 ENDP1920llvm_blake3_compress_in_place_sse41 ENDP1921 1922ALIGN 161923llvm_blake3_compress_xof_sse41 PROC1924_llvm_blake3_compress_xof_sse41 PROC1925 sub rsp, 1201926 movdqa xmmword ptr [rsp], xmm61927 movdqa xmmword ptr [rsp+10H], xmm71928 movdqa xmmword ptr [rsp+20H], xmm81929 movdqa xmmword ptr [rsp+30H], xmm91930 movdqa xmmword ptr [rsp+40H], xmm111931 movdqa xmmword ptr [rsp+50H], xmm141932 movdqa xmmword ptr [rsp+60H], xmm151933 movups xmm0, xmmword ptr [rcx]1934 movups xmm1, xmmword ptr [rcx+10H]1935 movaps xmm2, xmmword ptr [BLAKE3_IV]1936 movzx eax, byte ptr [rsp+0A0H]1937 movzx r8d, r8b1938 mov r10, qword ptr [rsp+0A8H]1939 shl rax, 321940 add r8, rax1941 movd xmm3, r91942 movd xmm4, r81943 punpcklqdq xmm3, xmm41944 movups xmm4, xmmword ptr [rdx]1945 movups xmm5, xmmword ptr [rdx+10H]1946 movaps xmm8, xmm41947 shufps xmm4, xmm5, 1361948 shufps xmm8, xmm5, 2211949 movaps xmm5, xmm81950 movups xmm6, xmmword ptr [rdx+20H]1951 movups xmm7, xmmword ptr [rdx+30H]1952 movaps xmm8, xmm61953 shufps xmm6, xmm7, 1361954 pshufd xmm6, xmm6, 93H1955 shufps xmm8, xmm7, 2211956 pshufd xmm7, xmm8, 93H1957 movaps xmm14, xmmword ptr [ROT8]1958 movaps xmm15, xmmword ptr [ROT16]1959 mov al, 71960@@:1961 paddd xmm0, xmm41962 paddd xmm0, xmm11963 pxor xmm3, xmm01964 pshufb xmm3, xmm151965 paddd xmm2, xmm31966 pxor xmm1, xmm21967 movdqa xmm11, xmm11968 pslld xmm1, 201969 psrld xmm11, 121970 por xmm1, xmm111971 paddd xmm0, xmm51972 paddd xmm0, xmm11973 pxor xmm3, xmm01974 pshufb xmm3, xmm141975 paddd xmm2, xmm31976 pxor xmm1, xmm21977 movdqa xmm11, xmm11978 pslld xmm1, 251979 psrld xmm11, 71980 por xmm1, xmm111981 pshufd xmm0, xmm0, 93H1982 pshufd xmm3, xmm3, 4EH1983 pshufd xmm2, xmm2, 39H1984 paddd xmm0, xmm61985 paddd xmm0, xmm11986 pxor xmm3, xmm01987 pshufb xmm3, xmm151988 paddd xmm2, xmm31989 pxor xmm1, xmm21990 movdqa xmm11, xmm11991 pslld xmm1, 201992 psrld xmm11, 121993 por xmm1, xmm111994 paddd xmm0, xmm71995 paddd xmm0, xmm11996 pxor xmm3, xmm01997 pshufb xmm3, xmm141998 paddd xmm2, xmm31999 pxor xmm1, xmm22000 movdqa xmm11, xmm12001 pslld xmm1, 252002 psrld xmm11, 72003 por xmm1, xmm112004 pshufd xmm0, xmm0, 39H2005 pshufd xmm3, xmm3, 4EH2006 pshufd xmm2, xmm2, 93H2007 dec al2008 jz @F2009 movdqa xmm8, xmm42010 shufps xmm8, xmm5, 2142011 pshufd xmm9, xmm4, 0FH2012 pshufd xmm4, xmm8, 39H2013 movdqa xmm8, xmm62014 shufps xmm8, xmm7, 2502015 pblendw xmm9, xmm8, 0CCH2016 movdqa xmm8, xmm72017 punpcklqdq xmm8, xmm52018 pblendw xmm8, xmm6, 0C0H2019 pshufd xmm8, xmm8, 78H2020 punpckhdq xmm5, xmm72021 punpckldq xmm6, xmm52022 pshufd xmm7, xmm6, 1EH2023 movdqa xmm5, xmm92024 movdqa xmm6, xmm82025 jmp @B2026@@:2027 movdqu xmm4, xmmword ptr [rcx]2028 movdqu xmm5, xmmword ptr [rcx+10H]2029 pxor xmm0, xmm22030 pxor xmm1, xmm32031 pxor xmm2, xmm42032 pxor xmm3, xmm52033 movups xmmword ptr [r10], xmm02034 movups xmmword ptr [r10+10H], xmm12035 movups xmmword ptr [r10+20H], xmm22036 movups xmmword ptr [r10+30H], xmm32037 movdqa xmm6, xmmword ptr [rsp]2038 movdqa xmm7, xmmword ptr [rsp+10H]2039 movdqa xmm8, xmmword ptr [rsp+20H]2040 movdqa xmm9, xmmword ptr [rsp+30H]2041 movdqa xmm11, xmmword ptr [rsp+40H]2042 movdqa xmm14, xmmword ptr [rsp+50H]2043 movdqa xmm15, xmmword ptr [rsp+60H]2044 add rsp, 1202045 ret2046_llvm_blake3_compress_xof_sse41 ENDP2047llvm_blake3_compress_xof_sse41 ENDP2048 2049_TEXT ENDS2050 2051 2052_RDATA SEGMENT READONLY PAGE ALIAS(".rdata") 'CONST'2053ALIGN 642054BLAKE3_IV:2055 dd 6A09E667H, 0BB67AE85H, 3C6EF372H, 0A54FF53AH2056 2057ADD0:2058 dd 0, 1, 2, 32059 2060ADD1:2061 dd 4 dup (4)2062 2063BLAKE3_IV_0:2064 dd 4 dup (6A09E667H)2065 2066BLAKE3_IV_1:2067 dd 4 dup (0BB67AE85H)2068 2069BLAKE3_IV_2:2070 dd 4 dup (3C6EF372H)2071 2072BLAKE3_IV_3:2073 dd 4 dup (0A54FF53AH)2074 2075BLAKE3_BLOCK_LEN:2076 dd 4 dup (64)2077 2078ROT16:2079 db 2, 3, 0, 1, 6, 7, 4, 5, 10, 11, 8, 9, 14, 15, 12, 132080 2081ROT8:2082 db 1, 2, 3, 0, 5, 6, 7, 4, 9, 10, 11, 8, 13, 14, 15, 122083 2084CMP_MSB_MASK:2085 dd 8 dup(80000000H)2086 2087_RDATA ENDS2088END2089 2090