2351 lines · plain
1public _llvm_blake3_hash_many_sse22public llvm_blake3_hash_many_sse23public llvm_blake3_compress_in_place_sse24public _llvm_blake3_compress_in_place_sse25public llvm_blake3_compress_xof_sse26public _llvm_blake3_compress_xof_sse27 8_TEXT SEGMENT ALIGN(16) 'CODE'9 10ALIGN 1611llvm_blake3_hash_many_sse2 PROC12_llvm_blake3_hash_many_sse2 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 pshuflw xmm12, xmm12, 0B1H196 pshufhw xmm12, xmm12, 0B1H197 pshuflw xmm13, xmm13, 0B1H198 pshufhw xmm13, xmm13, 0B1H199 pshuflw xmm14, xmm14, 0B1H200 pshufhw xmm14, xmm14, 0B1H201 pshuflw xmm15, xmm15, 0B1H202 pshufhw xmm15, xmm15, 0B1H203 movdqa xmm8, xmmword ptr [BLAKE3_IV_0]204 paddd xmm8, xmm12205 paddd xmm9, xmm13206 paddd xmm10, xmm14207 paddd xmm11, xmm15208 pxor xmm4, xmm8209 pxor xmm5, xmm9210 pxor xmm6, xmm10211 pxor xmm7, xmm11212 movdqa xmmword ptr [rsp+100H], xmm8213 movdqa xmm8, xmm4214 psrld xmm8, 12215 pslld xmm4, 20216 por xmm4, xmm8217 movdqa xmm8, xmm5218 psrld xmm8, 12219 pslld xmm5, 20220 por xmm5, xmm8221 movdqa xmm8, xmm6222 psrld xmm8, 12223 pslld xmm6, 20224 por xmm6, xmm8225 movdqa xmm8, xmm7226 psrld xmm8, 12227 pslld xmm7, 20228 por xmm7, xmm8229 paddd xmm0, xmmword ptr [rsp+10H]230 paddd xmm1, xmmword ptr [rsp+30H]231 paddd xmm2, xmmword ptr [rsp+50H]232 paddd xmm3, xmmword ptr [rsp+70H]233 paddd xmm0, xmm4234 paddd xmm1, xmm5235 paddd xmm2, xmm6236 paddd xmm3, xmm7237 pxor xmm12, xmm0238 pxor xmm13, xmm1239 pxor xmm14, xmm2240 pxor xmm15, xmm3241 movdqa xmm8, xmm12242 psrld xmm12, 8243 pslld xmm8, 24244 pxor xmm12, xmm8245 movdqa xmm8, xmm13246 psrld xmm13, 8247 pslld xmm8, 24248 pxor xmm13, xmm8249 movdqa xmm8, xmm14250 psrld xmm14, 8251 pslld xmm8, 24252 pxor xmm14, xmm8253 movdqa xmm8, xmm15254 psrld xmm15, 8255 pslld xmm8, 24256 pxor xmm15, xmm8257 movdqa xmm8, xmmword ptr [rsp+100H]258 paddd xmm8, xmm12259 paddd xmm9, xmm13260 paddd xmm10, xmm14261 paddd xmm11, xmm15262 pxor xmm4, xmm8263 pxor xmm5, xmm9264 pxor xmm6, xmm10265 pxor xmm7, xmm11266 movdqa xmmword ptr [rsp+100H], xmm8267 movdqa xmm8, xmm4268 psrld xmm8, 7269 pslld xmm4, 25270 por xmm4, xmm8271 movdqa xmm8, xmm5272 psrld xmm8, 7273 pslld xmm5, 25274 por xmm5, xmm8275 movdqa xmm8, xmm6276 psrld xmm8, 7277 pslld xmm6, 25278 por xmm6, xmm8279 movdqa xmm8, xmm7280 psrld xmm8, 7281 pslld xmm7, 25282 por xmm7, xmm8283 paddd xmm0, xmmword ptr [rsp+80H]284 paddd xmm1, xmmword ptr [rsp+0A0H]285 paddd xmm2, xmmword ptr [rsp+0C0H]286 paddd xmm3, xmmword ptr [rsp+0E0H]287 paddd xmm0, xmm5288 paddd xmm1, xmm6289 paddd xmm2, xmm7290 paddd xmm3, xmm4291 pxor xmm15, xmm0292 pxor xmm12, xmm1293 pxor xmm13, xmm2294 pxor xmm14, xmm3295 pshuflw xmm15, xmm15, 0B1H296 pshufhw xmm15, xmm15, 0B1H297 pshuflw xmm12, xmm12, 0B1H298 pshufhw xmm12, xmm12, 0B1H299 pshuflw xmm13, xmm13, 0B1H300 pshufhw xmm13, xmm13, 0B1H301 pshuflw xmm14, xmm14, 0B1H302 pshufhw xmm14, xmm14, 0B1H303 paddd xmm10, xmm15304 paddd xmm11, xmm12305 movdqa xmm8, xmmword ptr [rsp+100H]306 paddd xmm8, xmm13307 paddd xmm9, xmm14308 pxor xmm5, xmm10309 pxor xmm6, xmm11310 pxor xmm7, xmm8311 pxor xmm4, xmm9312 movdqa xmmword ptr [rsp+100H], xmm8313 movdqa xmm8, xmm5314 psrld xmm8, 12315 pslld xmm5, 20316 por xmm5, xmm8317 movdqa xmm8, xmm6318 psrld xmm8, 12319 pslld xmm6, 20320 por xmm6, xmm8321 movdqa xmm8, xmm7322 psrld xmm8, 12323 pslld xmm7, 20324 por xmm7, xmm8325 movdqa xmm8, xmm4326 psrld xmm8, 12327 pslld xmm4, 20328 por xmm4, xmm8329 paddd xmm0, xmmword ptr [rsp+90H]330 paddd xmm1, xmmword ptr [rsp+0B0H]331 paddd xmm2, xmmword ptr [rsp+0D0H]332 paddd xmm3, xmmword ptr [rsp+0F0H]333 paddd xmm0, xmm5334 paddd xmm1, xmm6335 paddd xmm2, xmm7336 paddd xmm3, xmm4337 pxor xmm15, xmm0338 pxor xmm12, xmm1339 pxor xmm13, xmm2340 pxor xmm14, xmm3341 movdqa xmm8, xmm15342 psrld xmm15, 8343 pslld xmm8, 24344 pxor xmm15, xmm8345 movdqa xmm8, xmm12346 psrld xmm12, 8347 pslld xmm8, 24348 pxor xmm12, xmm8349 movdqa xmm8, xmm13350 psrld xmm13, 8351 pslld xmm8, 24352 pxor xmm13, xmm8353 movdqa xmm8, xmm14354 psrld xmm14, 8355 pslld xmm8, 24356 pxor xmm14, xmm8357 paddd xmm10, xmm15358 paddd xmm11, xmm12359 movdqa xmm8, xmmword ptr [rsp+100H]360 paddd xmm8, xmm13361 paddd xmm9, xmm14362 pxor xmm5, xmm10363 pxor xmm6, xmm11364 pxor xmm7, xmm8365 pxor xmm4, xmm9366 movdqa xmmword ptr [rsp+100H], xmm8367 movdqa xmm8, xmm5368 psrld xmm8, 7369 pslld xmm5, 25370 por xmm5, xmm8371 movdqa xmm8, xmm6372 psrld xmm8, 7373 pslld xmm6, 25374 por xmm6, xmm8375 movdqa xmm8, xmm7376 psrld xmm8, 7377 pslld xmm7, 25378 por xmm7, xmm8379 movdqa xmm8, xmm4380 psrld xmm8, 7381 pslld xmm4, 25382 por xmm4, xmm8383 paddd xmm0, xmmword ptr [rsp+20H]384 paddd xmm1, xmmword ptr [rsp+30H]385 paddd xmm2, xmmword ptr [rsp+70H]386 paddd xmm3, xmmword ptr [rsp+40H]387 paddd xmm0, xmm4388 paddd xmm1, xmm5389 paddd xmm2, xmm6390 paddd xmm3, xmm7391 pxor xmm12, xmm0392 pxor xmm13, xmm1393 pxor xmm14, xmm2394 pxor xmm15, xmm3395 pshuflw xmm12, xmm12, 0B1H396 pshufhw xmm12, xmm12, 0B1H397 pshuflw xmm13, xmm13, 0B1H398 pshufhw xmm13, xmm13, 0B1H399 pshuflw xmm14, xmm14, 0B1H400 pshufhw xmm14, xmm14, 0B1H401 pshuflw xmm15, xmm15, 0B1H402 pshufhw xmm15, xmm15, 0B1H403 movdqa xmm8, xmmword ptr [rsp+100H]404 paddd xmm8, xmm12405 paddd xmm9, xmm13406 paddd xmm10, xmm14407 paddd xmm11, xmm15408 pxor xmm4, xmm8409 pxor xmm5, xmm9410 pxor xmm6, xmm10411 pxor xmm7, xmm11412 movdqa xmmword ptr [rsp+100H], xmm8413 movdqa xmm8, xmm4414 psrld xmm8, 12415 pslld xmm4, 20416 por xmm4, xmm8417 movdqa xmm8, xmm5418 psrld xmm8, 12419 pslld xmm5, 20420 por xmm5, xmm8421 movdqa xmm8, xmm6422 psrld xmm8, 12423 pslld xmm6, 20424 por xmm6, xmm8425 movdqa xmm8, xmm7426 psrld xmm8, 12427 pslld xmm7, 20428 por xmm7, xmm8429 paddd xmm0, xmmword ptr [rsp+60H]430 paddd xmm1, xmmword ptr [rsp+0A0H]431 paddd xmm2, xmmword ptr [rsp]432 paddd xmm3, xmmword ptr [rsp+0D0H]433 paddd xmm0, xmm4434 paddd xmm1, xmm5435 paddd xmm2, xmm6436 paddd xmm3, xmm7437 pxor xmm12, xmm0438 pxor xmm13, xmm1439 pxor xmm14, xmm2440 pxor xmm15, xmm3441 movdqa xmm8, xmm12442 psrld xmm12, 8443 pslld xmm8, 24444 pxor xmm12, xmm8445 movdqa xmm8, xmm13446 psrld xmm13, 8447 pslld xmm8, 24448 pxor xmm13, xmm8449 movdqa xmm8, xmm14450 psrld xmm14, 8451 pslld xmm8, 24452 pxor xmm14, xmm8453 movdqa xmm8, xmm15454 psrld xmm15, 8455 pslld xmm8, 24456 pxor xmm15, xmm8457 movdqa xmm8, xmmword ptr [rsp+100H]458 paddd xmm8, xmm12459 paddd xmm9, xmm13460 paddd xmm10, xmm14461 paddd xmm11, xmm15462 pxor xmm4, xmm8463 pxor xmm5, xmm9464 pxor xmm6, xmm10465 pxor xmm7, xmm11466 movdqa xmmword ptr [rsp+100H], xmm8467 movdqa xmm8, xmm4468 psrld xmm8, 7469 pslld xmm4, 25470 por xmm4, xmm8471 movdqa xmm8, xmm5472 psrld xmm8, 7473 pslld xmm5, 25474 por xmm5, xmm8475 movdqa xmm8, xmm6476 psrld xmm8, 7477 pslld xmm6, 25478 por xmm6, xmm8479 movdqa xmm8, xmm7480 psrld xmm8, 7481 pslld xmm7, 25482 por xmm7, xmm8483 paddd xmm0, xmmword ptr [rsp+10H]484 paddd xmm1, xmmword ptr [rsp+0C0H]485 paddd xmm2, xmmword ptr [rsp+90H]486 paddd xmm3, xmmword ptr [rsp+0F0H]487 paddd xmm0, xmm5488 paddd xmm1, xmm6489 paddd xmm2, xmm7490 paddd xmm3, xmm4491 pxor xmm15, xmm0492 pxor xmm12, xmm1493 pxor xmm13, xmm2494 pxor xmm14, xmm3495 pshuflw xmm15, xmm15, 0B1H496 pshufhw xmm15, xmm15, 0B1H497 pshuflw xmm12, xmm12, 0B1H498 pshufhw xmm12, xmm12, 0B1H499 pshuflw xmm13, xmm13, 0B1H500 pshufhw xmm13, xmm13, 0B1H501 pshuflw xmm14, xmm14, 0B1H502 pshufhw xmm14, xmm14, 0B1H503 paddd xmm10, xmm15504 paddd xmm11, xmm12505 movdqa xmm8, xmmword ptr [rsp+100H]506 paddd xmm8, xmm13507 paddd xmm9, xmm14508 pxor xmm5, xmm10509 pxor xmm6, xmm11510 pxor xmm7, xmm8511 pxor xmm4, xmm9512 movdqa xmmword ptr [rsp+100H], xmm8513 movdqa xmm8, xmm5514 psrld xmm8, 12515 pslld xmm5, 20516 por xmm5, xmm8517 movdqa xmm8, xmm6518 psrld xmm8, 12519 pslld xmm6, 20520 por xmm6, xmm8521 movdqa xmm8, xmm7522 psrld xmm8, 12523 pslld xmm7, 20524 por xmm7, xmm8525 movdqa xmm8, xmm4526 psrld xmm8, 12527 pslld xmm4, 20528 por xmm4, xmm8529 paddd xmm0, xmmword ptr [rsp+0B0H]530 paddd xmm1, xmmword ptr [rsp+50H]531 paddd xmm2, xmmword ptr [rsp+0E0H]532 paddd xmm3, xmmword ptr [rsp+80H]533 paddd xmm0, xmm5534 paddd xmm1, xmm6535 paddd xmm2, xmm7536 paddd xmm3, xmm4537 pxor xmm15, xmm0538 pxor xmm12, xmm1539 pxor xmm13, xmm2540 pxor xmm14, xmm3541 movdqa xmm8, xmm15542 psrld xmm15, 8543 pslld xmm8, 24544 pxor xmm15, xmm8545 movdqa xmm8, xmm12546 psrld xmm12, 8547 pslld xmm8, 24548 pxor xmm12, xmm8549 movdqa xmm8, xmm13550 psrld xmm13, 8551 pslld xmm8, 24552 pxor xmm13, xmm8553 movdqa xmm8, xmm14554 psrld xmm14, 8555 pslld xmm8, 24556 pxor xmm14, xmm8557 paddd xmm10, xmm15558 paddd xmm11, xmm12559 movdqa xmm8, xmmword ptr [rsp+100H]560 paddd xmm8, xmm13561 paddd xmm9, xmm14562 pxor xmm5, xmm10563 pxor xmm6, xmm11564 pxor xmm7, xmm8565 pxor xmm4, xmm9566 movdqa xmmword ptr [rsp+100H], xmm8567 movdqa xmm8, xmm5568 psrld xmm8, 7569 pslld xmm5, 25570 por xmm5, xmm8571 movdqa xmm8, xmm6572 psrld xmm8, 7573 pslld xmm6, 25574 por xmm6, xmm8575 movdqa xmm8, xmm7576 psrld xmm8, 7577 pslld xmm7, 25578 por xmm7, xmm8579 movdqa xmm8, xmm4580 psrld xmm8, 7581 pslld xmm4, 25582 por xmm4, xmm8583 paddd xmm0, xmmword ptr [rsp+30H]584 paddd xmm1, xmmword ptr [rsp+0A0H]585 paddd xmm2, xmmword ptr [rsp+0D0H]586 paddd xmm3, xmmword ptr [rsp+70H]587 paddd xmm0, xmm4588 paddd xmm1, xmm5589 paddd xmm2, xmm6590 paddd xmm3, xmm7591 pxor xmm12, xmm0592 pxor xmm13, xmm1593 pxor xmm14, xmm2594 pxor xmm15, xmm3595 pshuflw xmm12, xmm12, 0B1H596 pshufhw xmm12, xmm12, 0B1H597 pshuflw xmm13, xmm13, 0B1H598 pshufhw xmm13, xmm13, 0B1H599 pshuflw xmm14, xmm14, 0B1H600 pshufhw xmm14, xmm14, 0B1H601 pshuflw xmm15, xmm15, 0B1H602 pshufhw xmm15, xmm15, 0B1H603 movdqa xmm8, xmmword ptr [rsp+100H]604 paddd xmm8, xmm12605 paddd xmm9, xmm13606 paddd xmm10, xmm14607 paddd xmm11, xmm15608 pxor xmm4, xmm8609 pxor xmm5, xmm9610 pxor xmm6, xmm10611 pxor xmm7, xmm11612 movdqa xmmword ptr [rsp+100H], xmm8613 movdqa xmm8, xmm4614 psrld xmm8, 12615 pslld xmm4, 20616 por xmm4, xmm8617 movdqa xmm8, xmm5618 psrld xmm8, 12619 pslld xmm5, 20620 por xmm5, xmm8621 movdqa xmm8, xmm6622 psrld xmm8, 12623 pslld xmm6, 20624 por xmm6, xmm8625 movdqa xmm8, xmm7626 psrld xmm8, 12627 pslld xmm7, 20628 por xmm7, xmm8629 paddd xmm0, xmmword ptr [rsp+40H]630 paddd xmm1, xmmword ptr [rsp+0C0H]631 paddd xmm2, xmmword ptr [rsp+20H]632 paddd xmm3, xmmword ptr [rsp+0E0H]633 paddd xmm0, xmm4634 paddd xmm1, xmm5635 paddd xmm2, xmm6636 paddd xmm3, xmm7637 pxor xmm12, xmm0638 pxor xmm13, xmm1639 pxor xmm14, xmm2640 pxor xmm15, xmm3641 movdqa xmm8, xmm12642 psrld xmm12, 8643 pslld xmm8, 24644 pxor xmm12, xmm8645 movdqa xmm8, xmm13646 psrld xmm13, 8647 pslld xmm8, 24648 pxor xmm13, xmm8649 movdqa xmm8, xmm14650 psrld xmm14, 8651 pslld xmm8, 24652 pxor xmm14, xmm8653 movdqa xmm8, xmm15654 psrld xmm15, 8655 pslld xmm8, 24656 pxor xmm15, xmm8657 movdqa xmm8, xmmword ptr [rsp+100H]658 paddd xmm8, xmm12659 paddd xmm9, xmm13660 paddd xmm10, xmm14661 paddd xmm11, xmm15662 pxor xmm4, xmm8663 pxor xmm5, xmm9664 pxor xmm6, xmm10665 pxor xmm7, xmm11666 movdqa xmmword ptr [rsp+100H], xmm8667 movdqa xmm8, xmm4668 psrld xmm8, 7669 pslld xmm4, 25670 por xmm4, xmm8671 movdqa xmm8, xmm5672 psrld xmm8, 7673 pslld xmm5, 25674 por xmm5, xmm8675 movdqa xmm8, xmm6676 psrld xmm8, 7677 pslld xmm6, 25678 por xmm6, xmm8679 movdqa xmm8, xmm7680 psrld xmm8, 7681 pslld xmm7, 25682 por xmm7, xmm8683 paddd xmm0, xmmword ptr [rsp+60H]684 paddd xmm1, xmmword ptr [rsp+90H]685 paddd xmm2, xmmword ptr [rsp+0B0H]686 paddd xmm3, xmmword ptr [rsp+80H]687 paddd xmm0, xmm5688 paddd xmm1, xmm6689 paddd xmm2, xmm7690 paddd xmm3, xmm4691 pxor xmm15, xmm0692 pxor xmm12, xmm1693 pxor xmm13, xmm2694 pxor xmm14, xmm3695 pshuflw xmm15, xmm15, 0B1H696 pshufhw xmm15, xmm15, 0B1H697 pshuflw xmm12, xmm12, 0B1H698 pshufhw xmm12, xmm12, 0B1H699 pshuflw xmm13, xmm13, 0B1H700 pshufhw xmm13, xmm13, 0B1H701 pshuflw xmm14, xmm14, 0B1H702 pshufhw xmm14, xmm14, 0B1H703 paddd xmm10, xmm15704 paddd xmm11, xmm12705 movdqa xmm8, xmmword ptr [rsp+100H]706 paddd xmm8, xmm13707 paddd xmm9, xmm14708 pxor xmm5, xmm10709 pxor xmm6, xmm11710 pxor xmm7, xmm8711 pxor xmm4, xmm9712 movdqa xmmword ptr [rsp+100H], xmm8713 movdqa xmm8, xmm5714 psrld xmm8, 12715 pslld xmm5, 20716 por xmm5, xmm8717 movdqa xmm8, xmm6718 psrld xmm8, 12719 pslld xmm6, 20720 por xmm6, xmm8721 movdqa xmm8, xmm7722 psrld xmm8, 12723 pslld xmm7, 20724 por xmm7, xmm8725 movdqa xmm8, xmm4726 psrld xmm8, 12727 pslld xmm4, 20728 por xmm4, xmm8729 paddd xmm0, xmmword ptr [rsp+50H]730 paddd xmm1, xmmword ptr [rsp]731 paddd xmm2, xmmword ptr [rsp+0F0H]732 paddd xmm3, xmmword ptr [rsp+10H]733 paddd xmm0, xmm5734 paddd xmm1, xmm6735 paddd xmm2, xmm7736 paddd xmm3, xmm4737 pxor xmm15, xmm0738 pxor xmm12, xmm1739 pxor xmm13, xmm2740 pxor xmm14, xmm3741 movdqa xmm8, xmm15742 psrld xmm15, 8743 pslld xmm8, 24744 pxor xmm15, xmm8745 movdqa xmm8, xmm12746 psrld xmm12, 8747 pslld xmm8, 24748 pxor xmm12, xmm8749 movdqa xmm8, xmm13750 psrld xmm13, 8751 pslld xmm8, 24752 pxor xmm13, xmm8753 movdqa xmm8, xmm14754 psrld xmm14, 8755 pslld xmm8, 24756 pxor xmm14, xmm8757 paddd xmm10, xmm15758 paddd xmm11, xmm12759 movdqa xmm8, xmmword ptr [rsp+100H]760 paddd xmm8, xmm13761 paddd xmm9, xmm14762 pxor xmm5, xmm10763 pxor xmm6, xmm11764 pxor xmm7, xmm8765 pxor xmm4, xmm9766 movdqa xmmword ptr [rsp+100H], xmm8767 movdqa xmm8, xmm5768 psrld xmm8, 7769 pslld xmm5, 25770 por xmm5, xmm8771 movdqa xmm8, xmm6772 psrld xmm8, 7773 pslld xmm6, 25774 por xmm6, xmm8775 movdqa xmm8, xmm7776 psrld xmm8, 7777 pslld xmm7, 25778 por xmm7, xmm8779 movdqa xmm8, xmm4780 psrld xmm8, 7781 pslld xmm4, 25782 por xmm4, xmm8783 paddd xmm0, xmmword ptr [rsp+0A0H]784 paddd xmm1, xmmword ptr [rsp+0C0H]785 paddd xmm2, xmmword ptr [rsp+0E0H]786 paddd xmm3, xmmword ptr [rsp+0D0H]787 paddd xmm0, xmm4788 paddd xmm1, xmm5789 paddd xmm2, xmm6790 paddd xmm3, xmm7791 pxor xmm12, xmm0792 pxor xmm13, xmm1793 pxor xmm14, xmm2794 pxor xmm15, xmm3795 pshuflw xmm12, xmm12, 0B1H796 pshufhw xmm12, xmm12, 0B1H797 pshuflw xmm13, xmm13, 0B1H798 pshufhw xmm13, xmm13, 0B1H799 pshuflw xmm14, xmm14, 0B1H800 pshufhw xmm14, xmm14, 0B1H801 pshuflw xmm15, xmm15, 0B1H802 pshufhw xmm15, xmm15, 0B1H803 movdqa xmm8, xmmword ptr [rsp+100H]804 paddd xmm8, xmm12805 paddd xmm9, xmm13806 paddd xmm10, xmm14807 paddd xmm11, xmm15808 pxor xmm4, xmm8809 pxor xmm5, xmm9810 pxor xmm6, xmm10811 pxor xmm7, xmm11812 movdqa xmmword ptr [rsp+100H], xmm8813 movdqa xmm8, xmm4814 psrld xmm8, 12815 pslld xmm4, 20816 por xmm4, xmm8817 movdqa xmm8, xmm5818 psrld xmm8, 12819 pslld xmm5, 20820 por xmm5, xmm8821 movdqa xmm8, xmm6822 psrld xmm8, 12823 pslld xmm6, 20824 por xmm6, xmm8825 movdqa xmm8, xmm7826 psrld xmm8, 12827 pslld xmm7, 20828 por xmm7, xmm8829 paddd xmm0, xmmword ptr [rsp+70H]830 paddd xmm1, xmmword ptr [rsp+90H]831 paddd xmm2, xmmword ptr [rsp+30H]832 paddd xmm3, xmmword ptr [rsp+0F0H]833 paddd xmm0, xmm4834 paddd xmm1, xmm5835 paddd xmm2, xmm6836 paddd xmm3, xmm7837 pxor xmm12, xmm0838 pxor xmm13, xmm1839 pxor xmm14, xmm2840 pxor xmm15, xmm3841 movdqa xmm8, xmm12842 psrld xmm12, 8843 pslld xmm8, 24844 pxor xmm12, xmm8845 movdqa xmm8, xmm13846 psrld xmm13, 8847 pslld xmm8, 24848 pxor xmm13, xmm8849 movdqa xmm8, xmm14850 psrld xmm14, 8851 pslld xmm8, 24852 pxor xmm14, xmm8853 movdqa xmm8, xmm15854 psrld xmm15, 8855 pslld xmm8, 24856 pxor xmm15, xmm8857 movdqa xmm8, xmmword ptr [rsp+100H]858 paddd xmm8, xmm12859 paddd xmm9, xmm13860 paddd xmm10, xmm14861 paddd xmm11, xmm15862 pxor xmm4, xmm8863 pxor xmm5, xmm9864 pxor xmm6, xmm10865 pxor xmm7, xmm11866 movdqa xmmword ptr [rsp+100H], xmm8867 movdqa xmm8, xmm4868 psrld xmm8, 7869 pslld xmm4, 25870 por xmm4, xmm8871 movdqa xmm8, xmm5872 psrld xmm8, 7873 pslld xmm5, 25874 por xmm5, xmm8875 movdqa xmm8, xmm6876 psrld xmm8, 7877 pslld xmm6, 25878 por xmm6, xmm8879 movdqa xmm8, xmm7880 psrld xmm8, 7881 pslld xmm7, 25882 por xmm7, xmm8883 paddd xmm0, xmmword ptr [rsp+40H]884 paddd xmm1, xmmword ptr [rsp+0B0H]885 paddd xmm2, xmmword ptr [rsp+50H]886 paddd xmm3, xmmword ptr [rsp+10H]887 paddd xmm0, xmm5888 paddd xmm1, xmm6889 paddd xmm2, xmm7890 paddd xmm3, xmm4891 pxor xmm15, xmm0892 pxor xmm12, xmm1893 pxor xmm13, xmm2894 pxor xmm14, xmm3895 pshuflw xmm15, xmm15, 0B1H896 pshufhw xmm15, xmm15, 0B1H897 pshuflw xmm12, xmm12, 0B1H898 pshufhw xmm12, xmm12, 0B1H899 pshuflw xmm13, xmm13, 0B1H900 pshufhw xmm13, xmm13, 0B1H901 pshuflw xmm14, xmm14, 0B1H902 pshufhw xmm14, xmm14, 0B1H903 paddd xmm10, xmm15904 paddd xmm11, xmm12905 movdqa xmm8, xmmword ptr [rsp+100H]906 paddd xmm8, xmm13907 paddd xmm9, xmm14908 pxor xmm5, xmm10909 pxor xmm6, xmm11910 pxor xmm7, xmm8911 pxor xmm4, xmm9912 movdqa xmmword ptr [rsp+100H], xmm8913 movdqa xmm8, xmm5914 psrld xmm8, 12915 pslld xmm5, 20916 por xmm5, xmm8917 movdqa xmm8, xmm6918 psrld xmm8, 12919 pslld xmm6, 20920 por xmm6, xmm8921 movdqa xmm8, xmm7922 psrld xmm8, 12923 pslld xmm7, 20924 por xmm7, xmm8925 movdqa xmm8, xmm4926 psrld xmm8, 12927 pslld xmm4, 20928 por xmm4, xmm8929 paddd xmm0, xmmword ptr [rsp]930 paddd xmm1, xmmword ptr [rsp+20H]931 paddd xmm2, xmmword ptr [rsp+80H]932 paddd xmm3, xmmword ptr [rsp+60H]933 paddd xmm0, xmm5934 paddd xmm1, xmm6935 paddd xmm2, xmm7936 paddd xmm3, xmm4937 pxor xmm15, xmm0938 pxor xmm12, xmm1939 pxor xmm13, xmm2940 pxor xmm14, xmm3941 movdqa xmm8, xmm15942 psrld xmm15, 8943 pslld xmm8, 24944 pxor xmm15, xmm8945 movdqa xmm8, xmm12946 psrld xmm12, 8947 pslld xmm8, 24948 pxor xmm12, xmm8949 movdqa xmm8, xmm13950 psrld xmm13, 8951 pslld xmm8, 24952 pxor xmm13, xmm8953 movdqa xmm8, xmm14954 psrld xmm14, 8955 pslld xmm8, 24956 pxor xmm14, xmm8957 paddd xmm10, xmm15958 paddd xmm11, xmm12959 movdqa xmm8, xmmword ptr [rsp+100H]960 paddd xmm8, xmm13961 paddd xmm9, xmm14962 pxor xmm5, xmm10963 pxor xmm6, xmm11964 pxor xmm7, xmm8965 pxor xmm4, xmm9966 movdqa xmmword ptr [rsp+100H], xmm8967 movdqa xmm8, xmm5968 psrld xmm8, 7969 pslld xmm5, 25970 por xmm5, xmm8971 movdqa xmm8, xmm6972 psrld xmm8, 7973 pslld xmm6, 25974 por xmm6, xmm8975 movdqa xmm8, xmm7976 psrld xmm8, 7977 pslld xmm7, 25978 por xmm7, xmm8979 movdqa xmm8, xmm4980 psrld xmm8, 7981 pslld xmm4, 25982 por xmm4, xmm8983 paddd xmm0, xmmword ptr [rsp+0C0H]984 paddd xmm1, xmmword ptr [rsp+90H]985 paddd xmm2, xmmword ptr [rsp+0F0H]986 paddd xmm3, xmmword ptr [rsp+0E0H]987 paddd xmm0, xmm4988 paddd xmm1, xmm5989 paddd xmm2, xmm6990 paddd xmm3, xmm7991 pxor xmm12, xmm0992 pxor xmm13, xmm1993 pxor xmm14, xmm2994 pxor xmm15, xmm3995 pshuflw xmm12, xmm12, 0B1H996 pshufhw xmm12, xmm12, 0B1H997 pshuflw xmm13, xmm13, 0B1H998 pshufhw xmm13, xmm13, 0B1H999 pshuflw xmm14, xmm14, 0B1H1000 pshufhw xmm14, xmm14, 0B1H1001 pshuflw xmm15, xmm15, 0B1H1002 pshufhw xmm15, xmm15, 0B1H1003 movdqa xmm8, xmmword ptr [rsp+100H]1004 paddd xmm8, xmm121005 paddd xmm9, xmm131006 paddd xmm10, xmm141007 paddd xmm11, xmm151008 pxor xmm4, xmm81009 pxor xmm5, xmm91010 pxor xmm6, xmm101011 pxor xmm7, xmm111012 movdqa xmmword ptr [rsp+100H], xmm81013 movdqa xmm8, xmm41014 psrld xmm8, 121015 pslld xmm4, 201016 por xmm4, xmm81017 movdqa xmm8, xmm51018 psrld xmm8, 121019 pslld xmm5, 201020 por xmm5, xmm81021 movdqa xmm8, xmm61022 psrld xmm8, 121023 pslld xmm6, 201024 por xmm6, xmm81025 movdqa xmm8, xmm71026 psrld xmm8, 121027 pslld xmm7, 201028 por xmm7, xmm81029 paddd xmm0, xmmword ptr [rsp+0D0H]1030 paddd xmm1, xmmword ptr [rsp+0B0H]1031 paddd xmm2, xmmword ptr [rsp+0A0H]1032 paddd xmm3, xmmword ptr [rsp+80H]1033 paddd xmm0, xmm41034 paddd xmm1, xmm51035 paddd xmm2, xmm61036 paddd xmm3, xmm71037 pxor xmm12, xmm01038 pxor xmm13, xmm11039 pxor xmm14, xmm21040 pxor xmm15, xmm31041 movdqa xmm8, xmm121042 psrld xmm12, 81043 pslld xmm8, 241044 pxor xmm12, xmm81045 movdqa xmm8, xmm131046 psrld xmm13, 81047 pslld xmm8, 241048 pxor xmm13, xmm81049 movdqa xmm8, xmm141050 psrld xmm14, 81051 pslld xmm8, 241052 pxor xmm14, xmm81053 movdqa xmm8, xmm151054 psrld xmm15, 81055 pslld xmm8, 241056 pxor xmm15, xmm81057 movdqa xmm8, xmmword ptr [rsp+100H]1058 paddd xmm8, xmm121059 paddd xmm9, xmm131060 paddd xmm10, xmm141061 paddd xmm11, xmm151062 pxor xmm4, xmm81063 pxor xmm5, xmm91064 pxor xmm6, xmm101065 pxor xmm7, xmm111066 movdqa xmmword ptr [rsp+100H], xmm81067 movdqa xmm8, xmm41068 psrld xmm8, 71069 pslld xmm4, 251070 por xmm4, xmm81071 movdqa xmm8, xmm51072 psrld xmm8, 71073 pslld xmm5, 251074 por xmm5, xmm81075 movdqa xmm8, xmm61076 psrld xmm8, 71077 pslld xmm6, 251078 por xmm6, xmm81079 movdqa xmm8, xmm71080 psrld xmm8, 71081 pslld xmm7, 251082 por xmm7, xmm81083 paddd xmm0, xmmword ptr [rsp+70H]1084 paddd xmm1, xmmword ptr [rsp+50H]1085 paddd xmm2, xmmword ptr [rsp]1086 paddd xmm3, xmmword ptr [rsp+60H]1087 paddd xmm0, xmm51088 paddd xmm1, xmm61089 paddd xmm2, xmm71090 paddd xmm3, xmm41091 pxor xmm15, xmm01092 pxor xmm12, xmm11093 pxor xmm13, xmm21094 pxor xmm14, xmm31095 pshuflw xmm15, xmm15, 0B1H1096 pshufhw xmm15, xmm15, 0B1H1097 pshuflw xmm12, xmm12, 0B1H1098 pshufhw xmm12, xmm12, 0B1H1099 pshuflw xmm13, xmm13, 0B1H1100 pshufhw xmm13, xmm13, 0B1H1101 pshuflw xmm14, xmm14, 0B1H1102 pshufhw xmm14, xmm14, 0B1H1103 paddd xmm10, xmm151104 paddd xmm11, xmm121105 movdqa xmm8, xmmword ptr [rsp+100H]1106 paddd xmm8, xmm131107 paddd xmm9, xmm141108 pxor xmm5, xmm101109 pxor xmm6, xmm111110 pxor xmm7, xmm81111 pxor xmm4, xmm91112 movdqa xmmword ptr [rsp+100H], xmm81113 movdqa xmm8, xmm51114 psrld xmm8, 121115 pslld xmm5, 201116 por xmm5, xmm81117 movdqa xmm8, xmm61118 psrld xmm8, 121119 pslld xmm6, 201120 por xmm6, xmm81121 movdqa xmm8, xmm71122 psrld xmm8, 121123 pslld xmm7, 201124 por xmm7, xmm81125 movdqa xmm8, xmm41126 psrld xmm8, 121127 pslld xmm4, 201128 por xmm4, xmm81129 paddd xmm0, xmmword ptr [rsp+20H]1130 paddd xmm1, xmmword ptr [rsp+30H]1131 paddd xmm2, xmmword ptr [rsp+10H]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, xmm151142 psrld xmm15, 81143 pslld xmm8, 241144 pxor xmm15, xmm81145 movdqa xmm8, xmm121146 psrld xmm12, 81147 pslld xmm8, 241148 pxor xmm12, xmm81149 movdqa xmm8, xmm131150 psrld xmm13, 81151 pslld xmm8, 241152 pxor xmm13, xmm81153 movdqa xmm8, xmm141154 psrld xmm14, 81155 pslld xmm8, 241156 pxor xmm14, xmm81157 paddd xmm10, xmm151158 paddd xmm11, xmm121159 movdqa xmm8, xmmword ptr [rsp+100H]1160 paddd xmm8, xmm131161 paddd xmm9, xmm141162 pxor xmm5, xmm101163 pxor xmm6, xmm111164 pxor xmm7, xmm81165 pxor xmm4, xmm91166 movdqa xmmword ptr [rsp+100H], xmm81167 movdqa xmm8, xmm51168 psrld xmm8, 71169 pslld xmm5, 251170 por xmm5, xmm81171 movdqa xmm8, xmm61172 psrld xmm8, 71173 pslld xmm6, 251174 por xmm6, xmm81175 movdqa xmm8, xmm71176 psrld xmm8, 71177 pslld xmm7, 251178 por xmm7, xmm81179 movdqa xmm8, xmm41180 psrld xmm8, 71181 pslld xmm4, 251182 por xmm4, xmm81183 paddd xmm0, xmmword ptr [rsp+90H]1184 paddd xmm1, xmmword ptr [rsp+0B0H]1185 paddd xmm2, xmmword ptr [rsp+80H]1186 paddd xmm3, xmmword ptr [rsp+0F0H]1187 paddd xmm0, xmm41188 paddd xmm1, xmm51189 paddd xmm2, xmm61190 paddd xmm3, xmm71191 pxor xmm12, xmm01192 pxor xmm13, xmm11193 pxor xmm14, xmm21194 pxor xmm15, xmm31195 pshuflw xmm12, xmm12, 0B1H1196 pshufhw xmm12, xmm12, 0B1H1197 pshuflw xmm13, xmm13, 0B1H1198 pshufhw xmm13, xmm13, 0B1H1199 pshuflw xmm14, xmm14, 0B1H1200 pshufhw xmm14, xmm14, 0B1H1201 pshuflw xmm15, xmm15, 0B1H1202 pshufhw xmm15, xmm15, 0B1H1203 movdqa xmm8, xmmword ptr [rsp+100H]1204 paddd xmm8, xmm121205 paddd xmm9, xmm131206 paddd xmm10, xmm141207 paddd xmm11, xmm151208 pxor xmm4, xmm81209 pxor xmm5, xmm91210 pxor xmm6, xmm101211 pxor xmm7, xmm111212 movdqa xmmword ptr [rsp+100H], xmm81213 movdqa xmm8, xmm41214 psrld xmm8, 121215 pslld xmm4, 201216 por xmm4, xmm81217 movdqa xmm8, xmm51218 psrld xmm8, 121219 pslld xmm5, 201220 por xmm5, xmm81221 movdqa xmm8, xmm61222 psrld xmm8, 121223 pslld xmm6, 201224 por xmm6, xmm81225 movdqa xmm8, xmm71226 psrld xmm8, 121227 pslld xmm7, 201228 por xmm7, xmm81229 paddd xmm0, xmmword ptr [rsp+0E0H]1230 paddd xmm1, xmmword ptr [rsp+50H]1231 paddd xmm2, xmmword ptr [rsp+0C0H]1232 paddd xmm3, xmmword ptr [rsp+10H]1233 paddd xmm0, xmm41234 paddd xmm1, xmm51235 paddd xmm2, xmm61236 paddd xmm3, xmm71237 pxor xmm12, xmm01238 pxor xmm13, xmm11239 pxor xmm14, xmm21240 pxor xmm15, xmm31241 movdqa xmm8, xmm121242 psrld xmm12, 81243 pslld xmm8, 241244 pxor xmm12, xmm81245 movdqa xmm8, xmm131246 psrld xmm13, 81247 pslld xmm8, 241248 pxor xmm13, xmm81249 movdqa xmm8, xmm141250 psrld xmm14, 81251 pslld xmm8, 241252 pxor xmm14, xmm81253 movdqa xmm8, xmm151254 psrld xmm15, 81255 pslld xmm8, 241256 pxor xmm15, xmm81257 movdqa xmm8, xmmword ptr [rsp+100H]1258 paddd xmm8, xmm121259 paddd xmm9, xmm131260 paddd xmm10, xmm141261 paddd xmm11, xmm151262 pxor xmm4, xmm81263 pxor xmm5, xmm91264 pxor xmm6, xmm101265 pxor xmm7, xmm111266 movdqa xmmword ptr [rsp+100H], xmm81267 movdqa xmm8, xmm41268 psrld xmm8, 71269 pslld xmm4, 251270 por xmm4, xmm81271 movdqa xmm8, xmm51272 psrld xmm8, 71273 pslld xmm5, 251274 por xmm5, xmm81275 movdqa xmm8, xmm61276 psrld xmm8, 71277 pslld xmm6, 251278 por xmm6, xmm81279 movdqa xmm8, xmm71280 psrld xmm8, 71281 pslld xmm7, 251282 por xmm7, xmm81283 paddd xmm0, xmmword ptr [rsp+0D0H]1284 paddd xmm1, xmmword ptr [rsp]1285 paddd xmm2, xmmword ptr [rsp+20H]1286 paddd xmm3, xmmword ptr [rsp+40H]1287 paddd xmm0, xmm51288 paddd xmm1, xmm61289 paddd xmm2, xmm71290 paddd xmm3, xmm41291 pxor xmm15, xmm01292 pxor xmm12, xmm11293 pxor xmm13, xmm21294 pxor xmm14, xmm31295 pshuflw xmm15, xmm15, 0B1H1296 pshufhw xmm15, xmm15, 0B1H1297 pshuflw xmm12, xmm12, 0B1H1298 pshufhw xmm12, xmm12, 0B1H1299 pshuflw xmm13, xmm13, 0B1H1300 pshufhw xmm13, xmm13, 0B1H1301 pshuflw xmm14, xmm14, 0B1H1302 pshufhw xmm14, xmm14, 0B1H1303 paddd xmm10, xmm151304 paddd xmm11, xmm121305 movdqa xmm8, xmmword ptr [rsp+100H]1306 paddd xmm8, xmm131307 paddd xmm9, xmm141308 pxor xmm5, xmm101309 pxor xmm6, xmm111310 pxor xmm7, xmm81311 pxor xmm4, xmm91312 movdqa xmmword ptr [rsp+100H], xmm81313 movdqa xmm8, xmm51314 psrld xmm8, 121315 pslld xmm5, 201316 por xmm5, xmm81317 movdqa xmm8, xmm61318 psrld xmm8, 121319 pslld xmm6, 201320 por xmm6, xmm81321 movdqa xmm8, xmm71322 psrld xmm8, 121323 pslld xmm7, 201324 por xmm7, xmm81325 movdqa xmm8, xmm41326 psrld xmm8, 121327 pslld xmm4, 201328 por xmm4, xmm81329 paddd xmm0, xmmword ptr [rsp+30H]1330 paddd xmm1, xmmword ptr [rsp+0A0H]1331 paddd xmm2, xmmword ptr [rsp+60H]1332 paddd xmm3, xmmword ptr [rsp+70H]1333 paddd xmm0, xmm51334 paddd xmm1, xmm61335 paddd xmm2, xmm71336 paddd xmm3, xmm41337 pxor xmm15, xmm01338 pxor xmm12, xmm11339 pxor xmm13, xmm21340 pxor xmm14, xmm31341 movdqa xmm8, xmm151342 psrld xmm15, 81343 pslld xmm8, 241344 pxor xmm15, xmm81345 movdqa xmm8, xmm121346 psrld xmm12, 81347 pslld xmm8, 241348 pxor xmm12, xmm81349 movdqa xmm8, xmm131350 psrld xmm13, 81351 pslld xmm8, 241352 pxor xmm13, xmm81353 movdqa xmm8, xmm141354 psrld xmm14, 81355 pslld xmm8, 241356 pxor xmm14, xmm81357 paddd xmm10, xmm151358 paddd xmm11, xmm121359 movdqa xmm8, xmmword ptr [rsp+100H]1360 paddd xmm8, xmm131361 paddd xmm9, xmm141362 pxor xmm5, xmm101363 pxor xmm6, xmm111364 pxor xmm7, xmm81365 pxor xmm4, xmm91366 movdqa xmmword ptr [rsp+100H], xmm81367 movdqa xmm8, xmm51368 psrld xmm8, 71369 pslld xmm5, 251370 por xmm5, xmm81371 movdqa xmm8, xmm61372 psrld xmm8, 71373 pslld xmm6, 251374 por xmm6, xmm81375 movdqa xmm8, xmm71376 psrld xmm8, 71377 pslld xmm7, 251378 por xmm7, xmm81379 movdqa xmm8, xmm41380 psrld xmm8, 71381 pslld xmm4, 251382 por xmm4, xmm81383 paddd xmm0, xmmword ptr [rsp+0B0H]1384 paddd xmm1, xmmword ptr [rsp+50H]1385 paddd xmm2, xmmword ptr [rsp+10H]1386 paddd xmm3, xmmword ptr [rsp+80H]1387 paddd xmm0, xmm41388 paddd xmm1, xmm51389 paddd xmm2, xmm61390 paddd xmm3, xmm71391 pxor xmm12, xmm01392 pxor xmm13, xmm11393 pxor xmm14, xmm21394 pxor xmm15, xmm31395 pshuflw xmm12, xmm12, 0B1H1396 pshufhw xmm12, xmm12, 0B1H1397 pshuflw xmm13, xmm13, 0B1H1398 pshufhw xmm13, xmm13, 0B1H1399 pshuflw xmm14, xmm14, 0B1H1400 pshufhw xmm14, xmm14, 0B1H1401 pshuflw xmm15, xmm15, 0B1H1402 pshufhw xmm15, xmm15, 0B1H1403 movdqa xmm8, xmmword ptr [rsp+100H]1404 paddd xmm8, xmm121405 paddd xmm9, xmm131406 paddd xmm10, xmm141407 paddd xmm11, xmm151408 pxor xmm4, xmm81409 pxor xmm5, xmm91410 pxor xmm6, xmm101411 pxor xmm7, xmm111412 movdqa xmmword ptr [rsp+100H], xmm81413 movdqa xmm8, xmm41414 psrld xmm8, 121415 pslld xmm4, 201416 por xmm4, xmm81417 movdqa xmm8, xmm51418 psrld xmm8, 121419 pslld xmm5, 201420 por xmm5, xmm81421 movdqa xmm8, xmm61422 psrld xmm8, 121423 pslld xmm6, 201424 por xmm6, xmm81425 movdqa xmm8, xmm71426 psrld xmm8, 121427 pslld xmm7, 201428 por xmm7, xmm81429 paddd xmm0, xmmword ptr [rsp+0F0H]1430 paddd xmm1, xmmword ptr [rsp]1431 paddd xmm2, xmmword ptr [rsp+90H]1432 paddd xmm3, xmmword ptr [rsp+60H]1433 paddd xmm0, xmm41434 paddd xmm1, xmm51435 paddd xmm2, xmm61436 paddd xmm3, xmm71437 pxor xmm12, xmm01438 pxor xmm13, xmm11439 pxor xmm14, xmm21440 pxor xmm15, xmm31441 movdqa xmm8, xmm121442 psrld xmm12, 81443 pslld xmm8, 241444 pxor xmm12, xmm81445 movdqa xmm8, xmm131446 psrld xmm13, 81447 pslld xmm8, 241448 pxor xmm13, xmm81449 movdqa xmm8, xmm141450 psrld xmm14, 81451 pslld xmm8, 241452 pxor xmm14, xmm81453 movdqa xmm8, xmm151454 psrld xmm15, 81455 pslld xmm8, 241456 pxor xmm15, xmm81457 movdqa xmm8, xmmword ptr [rsp+100H]1458 paddd xmm8, xmm121459 paddd xmm9, xmm131460 paddd xmm10, xmm141461 paddd xmm11, xmm151462 pxor xmm4, xmm81463 pxor xmm5, xmm91464 pxor xmm6, xmm101465 pxor xmm7, xmm111466 movdqa xmmword ptr [rsp+100H], xmm81467 movdqa xmm8, xmm41468 psrld xmm8, 71469 pslld xmm4, 251470 por xmm4, xmm81471 movdqa xmm8, xmm51472 psrld xmm8, 71473 pslld xmm5, 251474 por xmm5, xmm81475 movdqa xmm8, xmm61476 psrld xmm8, 71477 pslld xmm6, 251478 por xmm6, xmm81479 movdqa xmm8, xmm71480 psrld xmm8, 71481 pslld xmm7, 251482 por xmm7, xmm81483 paddd xmm0, xmmword ptr [rsp+0E0H]1484 paddd xmm1, xmmword ptr [rsp+20H]1485 paddd xmm2, xmmword ptr [rsp+30H]1486 paddd xmm3, xmmword ptr [rsp+70H]1487 paddd xmm0, xmm51488 paddd xmm1, xmm61489 paddd xmm2, xmm71490 paddd xmm3, xmm41491 pxor xmm15, xmm01492 pxor xmm12, xmm11493 pxor xmm13, xmm21494 pxor xmm14, xmm31495 pshuflw xmm15, xmm15, 0B1H1496 pshufhw xmm15, xmm15, 0B1H1497 pshuflw xmm12, xmm12, 0B1H1498 pshufhw xmm12, xmm12, 0B1H1499 pshuflw xmm13, xmm13, 0B1H1500 pshufhw xmm13, xmm13, 0B1H1501 pshuflw xmm14, xmm14, 0B1H1502 pshufhw xmm14, xmm14, 0B1H1503 paddd xmm10, xmm151504 paddd xmm11, xmm121505 movdqa xmm8, xmmword ptr [rsp+100H]1506 paddd xmm8, xmm131507 paddd xmm9, xmm141508 pxor xmm5, xmm101509 pxor xmm6, xmm111510 pxor xmm7, xmm81511 pxor xmm4, xmm91512 movdqa xmmword ptr [rsp+100H], xmm81513 movdqa xmm8, xmm51514 psrld xmm8, 121515 pslld xmm5, 201516 por xmm5, xmm81517 movdqa xmm8, xmm61518 psrld xmm8, 121519 pslld xmm6, 201520 por xmm6, xmm81521 movdqa xmm8, xmm71522 psrld xmm8, 121523 pslld xmm7, 201524 por xmm7, xmm81525 movdqa xmm8, xmm41526 psrld xmm8, 121527 pslld xmm4, 201528 por xmm4, xmm81529 paddd xmm0, xmmword ptr [rsp+0A0H]1530 paddd xmm1, xmmword ptr [rsp+0C0H]1531 paddd xmm2, xmmword ptr [rsp+40H]1532 paddd xmm3, xmmword ptr [rsp+0D0H]1533 paddd xmm0, xmm51534 paddd xmm1, xmm61535 paddd xmm2, xmm71536 paddd xmm3, xmm41537 pxor xmm15, xmm01538 pxor xmm12, xmm11539 pxor xmm13, xmm21540 pxor xmm14, xmm31541 movdqa xmm8, xmm151542 psrld xmm15, 81543 pslld xmm8, 241544 pxor xmm15, xmm81545 movdqa xmm8, xmm121546 psrld xmm12, 81547 pslld xmm8, 241548 pxor xmm12, xmm81549 movdqa xmm8, xmm131550 psrld xmm13, 81551 pslld xmm8, 241552 pxor xmm13, xmm81553 movdqa xmm8, xmm141554 psrld xmm14, 81555 pslld xmm8, 241556 pxor xmm14, xmm81557 paddd xmm10, xmm151558 paddd xmm11, xmm121559 movdqa xmm8, xmmword ptr [rsp+100H]1560 paddd xmm8, xmm131561 paddd xmm9, xmm141562 pxor xmm5, xmm101563 pxor xmm6, xmm111564 pxor xmm7, xmm81565 pxor xmm4, xmm91566 pxor xmm0, xmm81567 pxor xmm1, xmm91568 pxor xmm2, xmm101569 pxor xmm3, xmm111570 movdqa xmm8, xmm51571 psrld xmm8, 71572 pslld xmm5, 251573 por xmm5, xmm81574 movdqa xmm8, xmm61575 psrld xmm8, 71576 pslld xmm6, 251577 por xmm6, xmm81578 movdqa xmm8, xmm71579 psrld xmm8, 71580 pslld xmm7, 251581 por xmm7, xmm81582 movdqa xmm8, xmm41583 psrld xmm8, 71584 pslld xmm4, 251585 por xmm4, xmm81586 pxor xmm4, xmm121587 pxor xmm5, xmm131588 pxor xmm6, xmm141589 pxor xmm7, xmm151590 mov eax, r13d1591 jne innerloop41592 movdqa xmm9, xmm01593 punpckldq xmm0, xmm11594 punpckhdq xmm9, xmm11595 movdqa xmm11, xmm21596 punpckldq xmm2, xmm31597 punpckhdq xmm11, xmm31598 movdqa xmm1, xmm01599 punpcklqdq xmm0, xmm21600 punpckhqdq xmm1, xmm21601 movdqa xmm3, xmm91602 punpcklqdq xmm9, xmm111603 punpckhqdq xmm3, xmm111604 movdqu xmmword ptr [rbx], xmm01605 movdqu xmmword ptr [rbx+20H], xmm11606 movdqu xmmword ptr [rbx+40H], xmm91607 movdqu xmmword ptr [rbx+60H], xmm31608 movdqa xmm9, xmm41609 punpckldq xmm4, xmm51610 punpckhdq xmm9, xmm51611 movdqa xmm11, xmm61612 punpckldq xmm6, xmm71613 punpckhdq xmm11, xmm71614 movdqa xmm5, xmm41615 punpcklqdq xmm4, xmm61616 punpckhqdq xmm5, xmm61617 movdqa xmm7, xmm91618 punpcklqdq xmm9, xmm111619 punpckhqdq xmm7, xmm111620 movdqu xmmword ptr [rbx+10H], xmm41621 movdqu xmmword ptr [rbx+30H], xmm51622 movdqu xmmword ptr [rbx+50H], xmm91623 movdqu xmmword ptr [rbx+70H], xmm71624 movdqa xmm1, xmmword ptr [rsp+110H]1625 movdqa xmm0, xmm11626 paddd xmm1, xmmword ptr [rsp+150H]1627 movdqa xmmword ptr [rsp+110H], xmm11628 pxor xmm0, xmmword ptr [CMP_MSB_MASK]1629 pxor xmm1, xmmword ptr [CMP_MSB_MASK]1630 pcmpgtd xmm0, xmm11631 movdqa xmm1, xmmword ptr [rsp+120H]1632 psubd xmm1, xmm01633 movdqa xmmword ptr [rsp+120H], xmm11634 add rbx, 1281635 add rdi, 321636 sub rsi, 41637 cmp rsi, 41638 jnc outerloop41639 test rsi, rsi1640 jne final3blocks1641unwind:1642 movdqa xmm6, xmmword ptr [rsp+170H]1643 movdqa xmm7, xmmword ptr [rsp+180H]1644 movdqa xmm8, xmmword ptr [rsp+190H]1645 movdqa xmm9, xmmword ptr [rsp+1A0H]1646 movdqa xmm10, xmmword ptr [rsp+1B0H]1647 movdqa xmm11, xmmword ptr [rsp+1C0H]1648 movdqa xmm12, xmmword ptr [rsp+1D0H]1649 movdqa xmm13, xmmword ptr [rsp+1E0H]1650 movdqa xmm14, xmmword ptr [rsp+1F0H]1651 movdqa xmm15, xmmword ptr [rsp+200H]1652 mov rsp, rbp1653 pop rbp1654 pop rbx1655 pop rdi1656 pop rsi1657 pop r121658 pop r131659 pop r141660 pop r151661 ret1662ALIGN 161663final3blocks:1664 test esi, 2H1665 je final1block1666 movups xmm0, xmmword ptr [rcx]1667 movups xmm1, xmmword ptr [rcx+10H]1668 movaps xmm8, xmm01669 movaps xmm9, xmm11670 movd xmm13, dword ptr [rsp+110H]1671 movd xmm14, dword ptr [rsp+120H]1672 punpckldq xmm13, xmm141673 movaps xmmword ptr [rsp], xmm131674 movd xmm14, dword ptr [rsp+114H]1675 movd xmm13, dword ptr [rsp+124H]1676 punpckldq xmm14, xmm131677 movaps xmmword ptr [rsp+10H], xmm141678 mov r8, qword ptr [rdi]1679 mov r9, qword ptr [rdi+8H]1680 movzx eax, byte ptr [rbp+80H]1681 or eax, r13d1682 xor edx, edx1683innerloop2:1684 mov r14d, eax1685 or eax, r12d1686 add rdx, 641687 cmp rdx, r151688 cmovne eax, r14d1689 movaps xmm2, xmmword ptr [BLAKE3_IV]1690 movaps xmm10, xmm21691 movups xmm4, xmmword ptr [r8+rdx-40H]1692 movups xmm5, xmmword ptr [r8+rdx-30H]1693 movaps xmm3, xmm41694 shufps xmm4, xmm5, 1361695 shufps xmm3, xmm5, 2211696 movaps xmm5, xmm31697 movups xmm6, xmmword ptr [r8+rdx-20H]1698 movups xmm7, xmmword ptr [r8+rdx-10H]1699 movaps xmm3, xmm61700 shufps xmm6, xmm7, 1361701 pshufd xmm6, xmm6, 93H1702 shufps xmm3, xmm7, 2211703 pshufd xmm7, xmm3, 93H1704 movups xmm12, xmmword ptr [r9+rdx-40H]1705 movups xmm13, xmmword ptr [r9+rdx-30H]1706 movaps xmm11, xmm121707 shufps xmm12, xmm13, 1361708 shufps xmm11, xmm13, 2211709 movaps xmm13, xmm111710 movups xmm14, xmmword ptr [r9+rdx-20H]1711 movups xmm15, xmmword ptr [r9+rdx-10H]1712 movaps xmm11, xmm141713 shufps xmm14, xmm15, 1361714 pshufd xmm14, xmm14, 93H1715 shufps xmm11, xmm15, 2211716 pshufd xmm15, xmm11, 93H1717 shl rax, 20H1718 or rax, 40H1719 movd xmm3, rax1720 movdqa xmmword ptr [rsp+20H], xmm31721 movaps xmm3, xmmword ptr [rsp]1722 movaps xmm11, xmmword ptr [rsp+10H]1723 punpcklqdq xmm3, xmmword ptr [rsp+20H]1724 punpcklqdq xmm11, xmmword ptr [rsp+20H]1725 mov al, 71726roundloop2:1727 paddd xmm0, xmm41728 paddd xmm8, xmm121729 movaps xmmword ptr [rsp+20H], xmm41730 movaps xmmword ptr [rsp+30H], xmm121731 paddd xmm0, xmm11732 paddd xmm8, xmm91733 pxor xmm3, xmm01734 pxor xmm11, xmm81735 pshuflw xmm3, xmm3, 0B1H1736 pshufhw xmm3, xmm3, 0B1H1737 pshuflw xmm11, xmm11, 0B1H1738 pshufhw xmm11, xmm11, 0B1H1739 paddd xmm2, xmm31740 paddd xmm10, xmm111741 pxor xmm1, xmm21742 pxor xmm9, xmm101743 movdqa xmm4, xmm11744 pslld xmm1, 201745 psrld xmm4, 121746 por xmm1, xmm41747 movdqa xmm4, xmm91748 pslld xmm9, 201749 psrld xmm4, 121750 por xmm9, xmm41751 paddd xmm0, xmm51752 paddd xmm8, xmm131753 movaps xmmword ptr [rsp+40H], xmm51754 movaps xmmword ptr [rsp+50H], xmm131755 paddd xmm0, xmm11756 paddd xmm8, xmm91757 pxor xmm3, xmm01758 pxor xmm11, xmm81759 movdqa xmm13, xmm31760 psrld xmm3, 81761 pslld xmm13, 241762 pxor xmm3, xmm131763 movdqa xmm13, xmm111764 psrld xmm11, 81765 pslld xmm13, 241766 pxor xmm11, xmm131767 paddd xmm2, xmm31768 paddd xmm10, xmm111769 pxor xmm1, xmm21770 pxor xmm9, xmm101771 movdqa xmm4, xmm11772 pslld xmm1, 251773 psrld xmm4, 71774 por xmm1, xmm41775 movdqa xmm4, xmm91776 pslld xmm9, 251777 psrld xmm4, 71778 por xmm9, xmm41779 pshufd xmm0, xmm0, 93H1780 pshufd xmm8, xmm8, 93H1781 pshufd xmm3, xmm3, 4EH1782 pshufd xmm11, xmm11, 4EH1783 pshufd xmm2, xmm2, 39H1784 pshufd xmm10, xmm10, 39H1785 paddd xmm0, xmm61786 paddd xmm8, xmm141787 paddd xmm0, xmm11788 paddd xmm8, xmm91789 pxor xmm3, xmm01790 pxor xmm11, xmm81791 pshuflw xmm3, xmm3, 0B1H1792 pshufhw xmm3, xmm3, 0B1H1793 pshuflw xmm11, xmm11, 0B1H1794 pshufhw xmm11, xmm11, 0B1H1795 paddd xmm2, xmm31796 paddd xmm10, xmm111797 pxor xmm1, xmm21798 pxor xmm9, xmm101799 movdqa xmm4, xmm11800 pslld xmm1, 201801 psrld xmm4, 121802 por xmm1, xmm41803 movdqa xmm4, xmm91804 pslld xmm9, 201805 psrld xmm4, 121806 por xmm9, xmm41807 paddd xmm0, xmm71808 paddd xmm8, xmm151809 paddd xmm0, xmm11810 paddd xmm8, xmm91811 pxor xmm3, xmm01812 pxor xmm11, xmm81813 movdqa xmm13, xmm31814 psrld xmm3, 81815 pslld xmm13, 241816 pxor xmm3, xmm131817 movdqa xmm13, xmm111818 psrld xmm11, 81819 pslld xmm13, 241820 pxor xmm11, xmm131821 paddd xmm2, xmm31822 paddd xmm10, xmm111823 pxor xmm1, xmm21824 pxor xmm9, xmm101825 movdqa xmm4, xmm11826 pslld xmm1, 251827 psrld xmm4, 71828 por xmm1, xmm41829 movdqa xmm4, xmm91830 pslld xmm9, 251831 psrld xmm4, 71832 por xmm9, xmm41833 pshufd xmm0, xmm0, 39H1834 pshufd xmm8, xmm8, 39H1835 pshufd xmm3, xmm3, 4EH1836 pshufd xmm11, xmm11, 4EH1837 pshufd xmm2, xmm2, 93H1838 pshufd xmm10, xmm10, 93H1839 dec al1840 je endroundloop21841 movdqa xmm12, xmmword ptr [rsp+20H]1842 movdqa xmm5, xmmword ptr [rsp+40H]1843 pshufd xmm13, xmm12, 0FH1844 shufps xmm12, xmm5, 2141845 pshufd xmm4, xmm12, 39H1846 movdqa xmm12, xmm61847 shufps xmm12, xmm7, 2501848 pand xmm13, xmmword ptr [PBLENDW_0x33_MASK]1849 pand xmm12, xmmword ptr [PBLENDW_0xCC_MASK]1850 por xmm13, xmm121851 movdqa xmmword ptr [rsp+20H], xmm131852 movdqa xmm12, xmm71853 punpcklqdq xmm12, xmm51854 movdqa xmm13, xmm61855 pand xmm12, xmmword ptr [PBLENDW_0x3F_MASK]1856 pand xmm13, xmmword ptr [PBLENDW_0xC0_MASK]1857 por xmm12, xmm131858 pshufd xmm12, xmm12, 78H1859 punpckhdq xmm5, xmm71860 punpckldq xmm6, xmm51861 pshufd xmm7, xmm6, 1EH1862 movdqa xmmword ptr [rsp+40H], xmm121863 movdqa xmm5, xmmword ptr [rsp+30H]1864 movdqa xmm13, xmmword ptr [rsp+50H]1865 pshufd xmm6, xmm5, 0FH1866 shufps xmm5, xmm13, 2141867 pshufd xmm12, xmm5, 39H1868 movdqa xmm5, xmm141869 shufps xmm5, xmm15, 2501870 pand xmm6, xmmword ptr [PBLENDW_0x33_MASK]1871 pand xmm5, xmmword ptr [PBLENDW_0xCC_MASK]1872 por xmm6, xmm51873 movdqa xmm5, xmm151874 punpcklqdq xmm5, xmm131875 movdqa xmmword ptr [rsp+30H], xmm21876 movdqa xmm2, xmm141877 pand xmm5, xmmword ptr [PBLENDW_0x3F_MASK]1878 pand xmm2, xmmword ptr [PBLENDW_0xC0_MASK]1879 por xmm5, xmm21880 movdqa xmm2, xmmword ptr [rsp+30H]1881 pshufd xmm5, xmm5, 78H1882 punpckhdq xmm13, xmm151883 punpckldq xmm14, xmm131884 pshufd xmm15, xmm14, 1EH1885 movdqa xmm13, xmm61886 movdqa xmm14, xmm51887 movdqa xmm5, xmmword ptr [rsp+20H]1888 movdqa xmm6, xmmword ptr [rsp+40H]1889 jmp roundloop21890endroundloop2:1891 pxor xmm0, xmm21892 pxor xmm1, xmm31893 pxor xmm8, xmm101894 pxor xmm9, xmm111895 mov eax, r13d1896 cmp rdx, r151897 jne innerloop21898 movups xmmword ptr [rbx], xmm01899 movups xmmword ptr [rbx+10H], xmm11900 movups xmmword ptr [rbx+20H], xmm81901 movups xmmword ptr [rbx+30H], xmm91902 mov eax, dword ptr [rsp+130H]1903 neg eax1904 mov r10d, dword ptr [rsp+110H+8*rax]1905 mov r11d, dword ptr [rsp+120H+8*rax]1906 mov dword ptr [rsp+110H], r10d1907 mov dword ptr [rsp+120H], r11d1908 add rdi, 161909 add rbx, 641910 sub rsi, 21911final1block:1912 test esi, 1H1913 je unwind1914 movups xmm0, xmmword ptr [rcx]1915 movups xmm1, xmmword ptr [rcx+10H]1916 movd xmm13, dword ptr [rsp+110H]1917 movd xmm14, dword ptr [rsp+120H]1918 punpckldq xmm13, xmm141919 mov r8, qword ptr [rdi]1920 movzx eax, byte ptr [rbp+80H]1921 or eax, r13d1922 xor edx, edx1923innerloop1:1924 mov r14d, eax1925 or eax, r12d1926 add rdx, 641927 cmp rdx, r151928 cmovne eax, r14d1929 movaps xmm2, xmmword ptr [BLAKE3_IV]1930 shl rax, 321931 or rax, 641932 movd xmm12, rax1933 movdqa xmm3, xmm131934 punpcklqdq xmm3, xmm121935 movups xmm4, xmmword ptr [r8+rdx-40H]1936 movups xmm5, xmmword ptr [r8+rdx-30H]1937 movaps xmm8, xmm41938 shufps xmm4, xmm5, 1361939 shufps xmm8, xmm5, 2211940 movaps xmm5, xmm81941 movups xmm6, xmmword ptr [r8+rdx-20H]1942 movups xmm7, xmmword ptr [r8+rdx-10H]1943 movaps xmm8, xmm61944 shufps xmm6, xmm7, 1361945 pshufd xmm6, xmm6, 93H1946 shufps xmm8, xmm7, 2211947 pshufd xmm7, xmm8, 93H1948 mov al, 71949roundloop1:1950 paddd xmm0, xmm41951 paddd xmm0, xmm11952 pxor xmm3, xmm01953 pshuflw xmm3, xmm3, 0B1H1954 pshufhw xmm3, xmm3, 0B1H1955 paddd xmm2, xmm31956 pxor xmm1, xmm21957 movdqa xmm11, xmm11958 pslld xmm1, 201959 psrld xmm11, 121960 por xmm1, xmm111961 paddd xmm0, xmm51962 paddd xmm0, xmm11963 pxor xmm3, xmm01964 movdqa xmm14, xmm31965 psrld xmm3, 81966 pslld xmm14, 241967 pxor xmm3, xmm141968 paddd xmm2, xmm31969 pxor xmm1, xmm21970 movdqa xmm11, xmm11971 pslld xmm1, 251972 psrld xmm11, 71973 por xmm1, xmm111974 pshufd xmm0, xmm0, 93H1975 pshufd xmm3, xmm3, 4EH1976 pshufd xmm2, xmm2, 39H1977 paddd xmm0, xmm61978 paddd xmm0, xmm11979 pxor xmm3, xmm01980 pshuflw xmm3, xmm3, 0B1H1981 pshufhw xmm3, xmm3, 0B1H1982 paddd xmm2, xmm31983 pxor xmm1, xmm21984 movdqa xmm11, xmm11985 pslld xmm1, 201986 psrld xmm11, 121987 por xmm1, xmm111988 paddd xmm0, xmm71989 paddd xmm0, xmm11990 pxor xmm3, xmm01991 movdqa xmm14, xmm31992 psrld xmm3, 81993 pslld xmm14, 241994 pxor xmm3, xmm141995 paddd xmm2, xmm31996 pxor xmm1, xmm21997 movdqa xmm11, xmm11998 pslld xmm1, 251999 psrld xmm11, 72000 por xmm1, xmm112001 pshufd xmm0, xmm0, 39H2002 pshufd xmm3, xmm3, 4EH2003 pshufd xmm2, xmm2, 93H2004 dec al2005 jz endroundloop12006 movdqa xmm8, xmm42007 shufps xmm8, xmm5, 2142008 pshufd xmm9, xmm4, 0FH2009 pshufd xmm4, xmm8, 39H2010 movdqa xmm8, xmm62011 shufps xmm8, xmm7, 2502012 pand xmm9, xmmword ptr [PBLENDW_0x33_MASK]2013 pand xmm8, xmmword ptr [PBLENDW_0xCC_MASK]2014 por xmm9, xmm82015 movdqa xmm8, xmm72016 punpcklqdq xmm8, xmm52017 movdqa xmm10, xmm62018 pand xmm8, xmmword ptr [PBLENDW_0x3F_MASK]2019 pand xmm10, xmmword ptr [PBLENDW_0xC0_MASK]2020 por xmm8, xmm102021 pshufd xmm8, xmm8, 78H2022 punpckhdq xmm5, xmm72023 punpckldq xmm6, xmm52024 pshufd xmm7, xmm6, 1EH2025 movdqa xmm5, xmm92026 movdqa xmm6, xmm82027 jmp roundloop12028endroundloop1:2029 pxor xmm0, xmm22030 pxor xmm1, xmm32031 mov eax, r13d2032 cmp rdx, r152033 jne innerloop12034 movups xmmword ptr [rbx], xmm02035 movups xmmword ptr [rbx+10H], xmm12036 jmp unwind2037_llvm_blake3_hash_many_sse2 ENDP2038llvm_blake3_hash_many_sse2 ENDP2039 2040llvm_blake3_compress_in_place_sse2 PROC2041_llvm_blake3_compress_in_place_sse2 PROC2042 sub rsp, 1202043 movdqa xmmword ptr [rsp], xmm62044 movdqa xmmword ptr [rsp+10H], xmm72045 movdqa xmmword ptr [rsp+20H], xmm82046 movdqa xmmword ptr [rsp+30H], xmm92047 movdqa xmmword ptr [rsp+40H], xmm112048 movdqa xmmword ptr [rsp+50H], xmm142049 movdqa xmmword ptr [rsp+60H], xmm152050 movups xmm0, xmmword ptr [rcx]2051 movups xmm1, xmmword ptr [rcx+10H]2052 movaps xmm2, xmmword ptr [BLAKE3_IV]2053 movzx eax, byte ptr [rsp+0A0H]2054 movzx r8d, r8b2055 shl rax, 322056 add r8, rax2057 movd xmm3, r92058 movd xmm4, r82059 punpcklqdq xmm3, xmm42060 movups xmm4, xmmword ptr [rdx]2061 movups xmm5, xmmword ptr [rdx+10H]2062 movaps xmm8, xmm42063 shufps xmm4, xmm5, 1362064 shufps xmm8, xmm5, 2212065 movaps xmm5, xmm82066 movups xmm6, xmmword ptr [rdx+20H]2067 movups xmm7, xmmword ptr [rdx+30H]2068 movaps xmm8, xmm62069 shufps xmm6, xmm7, 1362070 pshufd xmm6, xmm6, 93H2071 shufps xmm8, xmm7, 2212072 pshufd xmm7, xmm8, 93H2073 mov al, 72074@@:2075 paddd xmm0, xmm42076 paddd xmm0, xmm12077 pxor xmm3, xmm02078 pshuflw xmm3, xmm3, 0B1H2079 pshufhw xmm3, xmm3, 0B1H2080 paddd xmm2, xmm32081 pxor xmm1, xmm22082 movdqa xmm11, xmm12083 pslld xmm1, 202084 psrld xmm11, 122085 por xmm1, xmm112086 paddd xmm0, xmm52087 paddd xmm0, xmm12088 pxor xmm3, xmm02089 movdqa xmm14, xmm32090 psrld xmm3, 82091 pslld xmm14, 242092 pxor xmm3, xmm142093 paddd xmm2, xmm32094 pxor xmm1, xmm22095 movdqa xmm11, xmm12096 pslld xmm1, 252097 psrld xmm11, 72098 por xmm1, xmm112099 pshufd xmm0, xmm0, 93H2100 pshufd xmm3, xmm3, 4EH2101 pshufd xmm2, xmm2, 39H2102 paddd xmm0, xmm62103 paddd xmm0, xmm12104 pxor xmm3, xmm02105 pshuflw xmm3, xmm3, 0B1H2106 pshufhw xmm3, xmm3, 0B1H2107 paddd xmm2, xmm32108 pxor xmm1, xmm22109 movdqa xmm11, xmm12110 pslld xmm1, 202111 psrld xmm11, 122112 por xmm1, xmm112113 paddd xmm0, xmm72114 paddd xmm0, xmm12115 pxor xmm3, xmm02116 movdqa xmm14, xmm32117 psrld xmm3, 82118 pslld xmm14, 242119 pxor xmm3, xmm142120 paddd xmm2, xmm32121 pxor xmm1, xmm22122 movdqa xmm11, xmm12123 pslld xmm1, 252124 psrld xmm11, 72125 por xmm1, xmm112126 pshufd xmm0, xmm0, 39H2127 pshufd xmm3, xmm3, 4EH2128 pshufd xmm2, xmm2, 93H2129 dec al2130 jz @F2131 movdqa xmm8, xmm42132 shufps xmm8, xmm5, 2142133 pshufd xmm9, xmm4, 0FH2134 pshufd xmm4, xmm8, 39H2135 movdqa xmm8, xmm62136 shufps xmm8, xmm7, 2502137 pand xmm9, xmmword ptr [PBLENDW_0x33_MASK]2138 pand xmm8, xmmword ptr [PBLENDW_0xCC_MASK]2139 por xmm9, xmm82140 movdqa xmm8, xmm72141 punpcklqdq xmm8, xmm52142 movdqa xmm14, xmm62143 pand xmm8, xmmword ptr [PBLENDW_0x3F_MASK]2144 pand xmm14, xmmword ptr [PBLENDW_0xC0_MASK]2145 por xmm8, xmm142146 pshufd xmm8, xmm8, 78H2147 punpckhdq xmm5, xmm72148 punpckldq xmm6, xmm52149 pshufd xmm7, xmm6, 1EH2150 movdqa xmm5, xmm92151 movdqa xmm6, xmm82152 jmp @B2153@@:2154 pxor xmm0, xmm22155 pxor xmm1, xmm32156 movups xmmword ptr [rcx], xmm02157 movups xmmword ptr [rcx+10H], xmm12158 movdqa xmm6, xmmword ptr [rsp]2159 movdqa xmm7, xmmword ptr [rsp+10H]2160 movdqa xmm8, xmmword ptr [rsp+20H]2161 movdqa xmm9, xmmword ptr [rsp+30H]2162 movdqa xmm11, xmmword ptr [rsp+40H]2163 movdqa xmm14, xmmword ptr [rsp+50H]2164 movdqa xmm15, xmmword ptr [rsp+60H]2165 add rsp, 1202166 ret2167_llvm_blake3_compress_in_place_sse2 ENDP2168llvm_blake3_compress_in_place_sse2 ENDP2169 2170ALIGN 162171llvm_blake3_compress_xof_sse2 PROC2172_llvm_blake3_compress_xof_sse2 PROC2173 sub rsp, 1202174 movdqa xmmword ptr [rsp], xmm62175 movdqa xmmword ptr [rsp+10H], xmm72176 movdqa xmmword ptr [rsp+20H], xmm82177 movdqa xmmword ptr [rsp+30H], xmm92178 movdqa xmmword ptr [rsp+40H], xmm112179 movdqa xmmword ptr [rsp+50H], xmm142180 movdqa xmmword ptr [rsp+60H], xmm152181 movups xmm0, xmmword ptr [rcx]2182 movups xmm1, xmmword ptr [rcx+10H]2183 movaps xmm2, xmmword ptr [BLAKE3_IV]2184 movzx eax, byte ptr [rsp+0A0H]2185 movzx r8d, r8b2186 mov r10, qword ptr [rsp+0A8H]2187 shl rax, 322188 add r8, rax2189 movd xmm3, r92190 movd xmm4, r82191 punpcklqdq xmm3, xmm42192 movups xmm4, xmmword ptr [rdx]2193 movups xmm5, xmmword ptr [rdx+10H]2194 movaps xmm8, xmm42195 shufps xmm4, xmm5, 1362196 shufps xmm8, xmm5, 2212197 movaps xmm5, xmm82198 movups xmm6, xmmword ptr [rdx+20H]2199 movups xmm7, xmmword ptr [rdx+30H]2200 movaps xmm8, xmm62201 shufps xmm6, xmm7, 1362202 pshufd xmm6, xmm6, 93H2203 shufps xmm8, xmm7, 2212204 pshufd xmm7, xmm8, 93H2205 mov al, 72206@@:2207 paddd xmm0, xmm42208 paddd xmm0, xmm12209 pxor xmm3, xmm02210 pshuflw xmm3, xmm3, 0B1H2211 pshufhw xmm3, xmm3, 0B1H2212 paddd xmm2, xmm32213 pxor xmm1, xmm22214 movdqa xmm11, xmm12215 pslld xmm1, 202216 psrld xmm11, 122217 por xmm1, xmm112218 paddd xmm0, xmm52219 paddd xmm0, xmm12220 pxor xmm3, xmm02221 movdqa xmm14, xmm32222 psrld xmm3, 82223 pslld xmm14, 242224 pxor xmm3, xmm142225 paddd xmm2, xmm32226 pxor xmm1, xmm22227 movdqa xmm11, xmm12228 pslld xmm1, 252229 psrld xmm11, 72230 por xmm1, xmm112231 pshufd xmm0, xmm0, 93H2232 pshufd xmm3, xmm3, 4EH2233 pshufd xmm2, xmm2, 39H2234 paddd xmm0, xmm62235 paddd xmm0, xmm12236 pxor xmm3, xmm02237 pshuflw xmm3, xmm3, 0B1H2238 pshufhw xmm3, xmm3, 0B1H2239 paddd xmm2, xmm32240 pxor xmm1, xmm22241 movdqa xmm11, xmm12242 pslld xmm1, 202243 psrld xmm11, 122244 por xmm1, xmm112245 paddd xmm0, xmm72246 paddd xmm0, xmm12247 pxor xmm3, xmm02248 movdqa xmm14, xmm32249 psrld xmm3, 82250 pslld xmm14, 242251 pxor xmm3, xmm142252 paddd xmm2, xmm32253 pxor xmm1, xmm22254 movdqa xmm11, xmm12255 pslld xmm1, 252256 psrld xmm11, 72257 por xmm1, xmm112258 pshufd xmm0, xmm0, 39H2259 pshufd xmm3, xmm3, 4EH2260 pshufd xmm2, xmm2, 93H2261 dec al2262 jz @F2263 movdqa xmm8, xmm42264 shufps xmm8, xmm5, 2142265 pshufd xmm9, xmm4, 0FH2266 pshufd xmm4, xmm8, 39H2267 movdqa xmm8, xmm62268 shufps xmm8, xmm7, 2502269 pand xmm9, xmmword ptr [PBLENDW_0x33_MASK]2270 pand xmm8, xmmword ptr [PBLENDW_0xCC_MASK]2271 por xmm9, xmm82272 movdqa xmm8, xmm72273 punpcklqdq xmm8, xmm52274 movdqa xmm14, xmm62275 pand xmm8, xmmword ptr [PBLENDW_0x3F_MASK]2276 pand xmm14, xmmword ptr [PBLENDW_0xC0_MASK]2277 por xmm8, xmm142278 pshufd xmm8, xmm8, 78H2279 punpckhdq xmm5, xmm72280 punpckldq xmm6, xmm52281 pshufd xmm7, xmm6, 1EH2282 movdqa xmm5, xmm92283 movdqa xmm6, xmm82284 jmp @B2285@@:2286 movdqu xmm4, xmmword ptr [rcx]2287 movdqu xmm5, xmmword ptr [rcx+10H]2288 pxor xmm0, xmm22289 pxor xmm1, xmm32290 pxor xmm2, xmm42291 pxor xmm3, xmm52292 movups xmmword ptr [r10], xmm02293 movups xmmword ptr [r10+10H], xmm12294 movups xmmword ptr [r10+20H], xmm22295 movups xmmword ptr [r10+30H], xmm32296 movdqa xmm6, xmmword ptr [rsp]2297 movdqa xmm7, xmmword ptr [rsp+10H]2298 movdqa xmm8, xmmword ptr [rsp+20H]2299 movdqa xmm9, xmmword ptr [rsp+30H]2300 movdqa xmm11, xmmword ptr [rsp+40H]2301 movdqa xmm14, xmmword ptr [rsp+50H]2302 movdqa xmm15, xmmword ptr [rsp+60H]2303 add rsp, 1202304 ret2305_llvm_blake3_compress_xof_sse2 ENDP2306llvm_blake3_compress_xof_sse2 ENDP2307 2308_TEXT ENDS2309 2310 2311_RDATA SEGMENT READONLY PAGE ALIAS(".rdata") 'CONST'2312ALIGN 642313BLAKE3_IV:2314 dd 6A09E667H, 0BB67AE85H, 3C6EF372H, 0A54FF53AH2315 2316ADD0:2317 dd 0, 1, 2, 32318 2319ADD1:2320 dd 4 dup (4)2321 2322BLAKE3_IV_0:2323 dd 4 dup (6A09E667H)2324 2325BLAKE3_IV_1:2326 dd 4 dup (0BB67AE85H)2327 2328BLAKE3_IV_2:2329 dd 4 dup (3C6EF372H)2330 2331BLAKE3_IV_3:2332 dd 4 dup (0A54FF53AH)2333 2334BLAKE3_BLOCK_LEN:2335 dd 4 dup (64)2336 2337CMP_MSB_MASK:2338 dd 8 dup(80000000H)2339 2340PBLENDW_0x33_MASK:2341 dd 0FFFFFFFFH, 000000000H, 0FFFFFFFFH, 000000000H2342PBLENDW_0xCC_MASK:2343 dd 000000000H, 0FFFFFFFFH, 000000000H, 0FFFFFFFFH2344PBLENDW_0x3F_MASK:2345 dd 0FFFFFFFFH, 0FFFFFFFFH, 0FFFFFFFFH, 000000000H2346PBLENDW_0xC0_MASK:2347 dd 000000000H, 000000000H, 000000000H, 0FFFFFFFFH2348 2349_RDATA ENDS2350END2351