1.register %g2,#scratch 2.register %g3,#scratch 3.section ".text",#alloc,#execinstr 4 5.align 64 6K512: 7.type K512,#object 8 .long 0x428a2f98,0xd728ae22, 0x71374491,0x23ef65cd 9 .long 0xb5c0fbcf,0xec4d3b2f, 0xe9b5dba5,0x8189dbbc 10 .long 0x3956c25b,0xf348b538, 0x59f111f1,0xb605d019 11 .long 0x923f82a4,0xaf194f9b, 0xab1c5ed5,0xda6d8118 12 .long 0xd807aa98,0xa3030242, 0x12835b01,0x45706fbe 13 .long 0x243185be,0x4ee4b28c, 0x550c7dc3,0xd5ffb4e2 14 .long 0x72be5d74,0xf27b896f, 0x80deb1fe,0x3b1696b1 15 .long 0x9bdc06a7,0x25c71235, 0xc19bf174,0xcf692694 16 .long 0xe49b69c1,0x9ef14ad2, 0xefbe4786,0x384f25e3 17 .long 0x0fc19dc6,0x8b8cd5b5, 0x240ca1cc,0x77ac9c65 18 .long 0x2de92c6f,0x592b0275, 0x4a7484aa,0x6ea6e483 19 .long 0x5cb0a9dc,0xbd41fbd4, 0x76f988da,0x831153b5 20 .long 0x983e5152,0xee66dfab, 0xa831c66d,0x2db43210 21 .long 0xb00327c8,0x98fb213f, 0xbf597fc7,0xbeef0ee4 22 .long 0xc6e00bf3,0x3da88fc2, 0xd5a79147,0x930aa725 23 .long 0x06ca6351,0xe003826f, 0x14292967,0x0a0e6e70 24 .long 0x27b70a85,0x46d22ffc, 0x2e1b2138,0x5c26c926 25 .long 0x4d2c6dfc,0x5ac42aed, 0x53380d13,0x9d95b3df 26 .long 0x650a7354,0x8baf63de, 0x766a0abb,0x3c77b2a8 27 .long 0x81c2c92e,0x47edaee6, 0x92722c85,0x1482353b 28 .long 0xa2bfe8a1,0x4cf10364, 0xa81a664b,0xbc423001 29 .long 0xc24b8b70,0xd0f89791, 0xc76c51a3,0x0654be30 30 .long 0xd192e819,0xd6ef5218, 0xd6990624,0x5565a910 31 .long 0xf40e3585,0x5771202a, 0x106aa070,0x32bbd1b8 32 .long 0x19a4c116,0xb8d2d0c8, 0x1e376c08,0x5141ab53 33 .long 0x2748774c,0xdf8eeb99, 0x34b0bcb5,0xe19b48a8 34 .long 0x391c0cb3,0xc5c95a63, 0x4ed8aa4a,0xe3418acb 35 .long 0x5b9cca4f,0x7763e373, 0x682e6ff3,0xd6b2b8a3 36 .long 0x748f82ee,0x5defb2fc, 0x78a5636f,0x43172f60 37 .long 0x84c87814,0xa1f0ab72, 0x8cc70208,0x1a6439ec 38 .long 0x90befffa,0x23631e28, 0xa4506ceb,0xde82bde9 39 .long 0xbef9a3f7,0xb2c67915, 0xc67178f2,0xe372532b 40 .long 0xca273ece,0xea26619c, 0xd186b8c7,0x21c0c207 41 .long 0xeada7dd6,0xcde0eb1e, 0xf57d4f7f,0xee6ed178 42 .long 0x06f067aa,0x72176fba, 0x0a637dc5,0xa2c898a6 43 .long 0x113f9804,0xbef90dae, 0x1b710b35,0x131c471b 44 .long 0x28db77f5,0x23047d84, 0x32caab7b,0x40c72493 45 .long 0x3c9ebe0a,0x15c9bebc, 0x431d67c4,0x9c100d4c 46 .long 0x4cc5d4be,0xcb3e42b6, 0x597f299c,0xfc657e2a 47 .long 0x5fcb6fab,0x3ad6faec, 0x6c44198c,0x4a475817 48.size K512,.-K512 49.globl sha512_block_data_order 50sha512_block_data_order: 51 save %sp,-320,%sp 52 and %i1,3,%i4 53 sllx %i2,7,%i2 54 andn %i1,3,%i1 55 sll %i4,3,%i4 56 add %i1,%i2,%i2 57 mov 32,%i5 58 sub %i5,%i4,%i5 59.Lpic: call .+8 60 add %o7,K512-.Lpic,%i3 61 62 ldx [%i0+0],%o0 63 ldx [%i0+8],%o1 64 ldx [%i0+16],%o2 65 ldx [%i0+24],%o3 66 ldx [%i0+32],%o4 67 ldx [%i0+40],%o5 68 ldx [%i0+48],%g1 69 ldx [%i0+56],%o7 70 71.Lloop: 72 ld [%i1+0],%l0 73 ld [%i1+4],%l1 74 ld [%i1+8],%l2 75 ld [%i1+12],%l3 76 ld [%i1+16],%l4 77 ld [%i1+20],%l5 78 ld [%i1+24],%l6 79 ld [%i1+28],%l7 80 sllx %l1,%i4,%g5 ! Xload(0) 81 add %i4,32,%g3 82 sllx %l0,%g3,%g4 83 ld [%i1+32],%l0 84 srlx %l2,%i5,%l1 85 or %g4,%g5,%g5 86 or %l1,%g5,%g5 87 ld [%i1+36],%l1 88 add %o7,%g5,%g2 89 stx %g5,[%sp+2239] 90 srlx %o4,14,%o7 !! 0 91 xor %o5,%g1,%g5 92 sllx %o4,23,%g4 93 and %o4,%g5,%g5 94 srlx %o4,18,%g3 95 xor %g4,%o7,%o7 96 sllx %o4,46,%g4 97 xor %g3,%o7,%o7 98 srlx %o4,41,%g3 99 xor %g4,%o7,%o7 100 sllx %o4,50,%g4 101 xor %g3,%o7,%o7 102 xor %g1,%g5,%g5 ! Ch(e,f,g) 103 xor %g4,%o7,%g3 ! Sigma1(e) 104 105 srlx %o0,28,%o7 106 add %g5,%g2,%g2 107 ldx [%i3+0],%g5 ! K[0] 108 sllx %o0,25,%g4 109 add %g3,%g2,%g2 110 srlx %o0,34,%g3 111 xor %g4,%o7,%o7 112 sllx %o0,30,%g4 113 xor %g3,%o7,%o7 114 srlx %o0,39,%g3 115 xor %g4,%o7,%o7 116 sllx %o0,36,%g4 117 xor %g3,%o7,%o7 118 xor %g4,%o7,%o7 ! Sigma0(a) 119 120 or %o0,%o1,%g3 121 and %o0,%o1,%g4 122 and %o2,%g3,%g3 123 or %g3,%g4,%g4 ! Maj(a,b,c) 124 add %g5,%g2,%g2 ! +=K[0] 125 add %g4,%o7,%o7 126 127 add %g2,%o3,%o3 128 add %g2,%o7,%o7 129 sllx %l3,%i4,%g5 ! Xload(1) 130 add %i4,32,%g3 131 sllx %l2,%g3,%g4 132 ld [%i1+40],%l2 133 srlx %l4,%i5,%l3 134 or %g4,%g5,%g5 135 or %l3,%g5,%g5 136 ld [%i1+44],%l3 137 add %g1,%g5,%g2 138 stx %g5,[%sp+2247] 139 srlx %o3,14,%g1 !! 1 140 xor %o4,%o5,%g5 141 sllx %o3,23,%g4 142 and %o3,%g5,%g5 143 srlx %o3,18,%g3 144 xor %g4,%g1,%g1 145 sllx %o3,46,%g4 146 xor %g3,%g1,%g1 147 srlx %o3,41,%g3 148 xor %g4,%g1,%g1 149 sllx %o3,50,%g4 150 xor %g3,%g1,%g1 151 xor %o5,%g5,%g5 ! Ch(e,f,g) 152 xor %g4,%g1,%g3 ! Sigma1(e) 153 154 srlx %o7,28,%g1 155 add %g5,%g2,%g2 156 ldx [%i3+8],%g5 ! K[1] 157 sllx %o7,25,%g4 158 add %g3,%g2,%g2 159 srlx %o7,34,%g3 160 xor %g4,%g1,%g1 161 sllx %o7,30,%g4 162 xor %g3,%g1,%g1 163 srlx %o7,39,%g3 164 xor %g4,%g1,%g1 165 sllx %o7,36,%g4 166 xor %g3,%g1,%g1 167 xor %g4,%g1,%g1 ! Sigma0(a) 168 169 or %o7,%o0,%g3 170 and %o7,%o0,%g4 171 and %o1,%g3,%g3 172 or %g3,%g4,%g4 ! Maj(a,b,c) 173 add %g5,%g2,%g2 ! +=K[1] 174 add %g4,%g1,%g1 175 176 add %g2,%o2,%o2 177 add %g2,%g1,%g1 178 sllx %l5,%i4,%g5 ! Xload(2) 179 add %i4,32,%g3 180 sllx %l4,%g3,%g4 181 ld [%i1+48],%l4 182 srlx %l6,%i5,%l5 183 or %g4,%g5,%g5 184 or %l5,%g5,%g5 185 ld [%i1+52],%l5 186 add %o5,%g5,%g2 187 stx %g5,[%sp+2255] 188 srlx %o2,14,%o5 !! 2 189 xor %o3,%o4,%g5 190 sllx %o2,23,%g4 191 and %o2,%g5,%g5 192 srlx %o2,18,%g3 193 xor %g4,%o5,%o5 194 sllx %o2,46,%g4 195 xor %g3,%o5,%o5 196 srlx %o2,41,%g3 197 xor %g4,%o5,%o5 198 sllx %o2,50,%g4 199 xor %g3,%o5,%o5 200 xor %o4,%g5,%g5 ! Ch(e,f,g) 201 xor %g4,%o5,%g3 ! Sigma1(e) 202 203 srlx %g1,28,%o5 204 add %g5,%g2,%g2 205 ldx [%i3+16],%g5 ! K[2] 206 sllx %g1,25,%g4 207 add %g3,%g2,%g2 208 srlx %g1,34,%g3 209 xor %g4,%o5,%o5 210 sllx %g1,30,%g4 211 xor %g3,%o5,%o5 212 srlx %g1,39,%g3 213 xor %g4,%o5,%o5 214 sllx %g1,36,%g4 215 xor %g3,%o5,%o5 216 xor %g4,%o5,%o5 ! Sigma0(a) 217 218 or %g1,%o7,%g3 219 and %g1,%o7,%g4 220 and %o0,%g3,%g3 221 or %g3,%g4,%g4 ! Maj(a,b,c) 222 add %g5,%g2,%g2 ! +=K[2] 223 add %g4,%o5,%o5 224 225 add %g2,%o1,%o1 226 add %g2,%o5,%o5 227 sllx %l7,%i4,%g5 ! Xload(3) 228 add %i4,32,%g3 229 sllx %l6,%g3,%g4 230 ld [%i1+56],%l6 231 srlx %l0,%i5,%l7 232 or %g4,%g5,%g5 233 or %l7,%g5,%g5 234 ld [%i1+60],%l7 235 add %o4,%g5,%g2 236 stx %g5,[%sp+2263] 237 srlx %o1,14,%o4 !! 3 238 xor %o2,%o3,%g5 239 sllx %o1,23,%g4 240 and %o1,%g5,%g5 241 srlx %o1,18,%g3 242 xor %g4,%o4,%o4 243 sllx %o1,46,%g4 244 xor %g3,%o4,%o4 245 srlx %o1,41,%g3 246 xor %g4,%o4,%o4 247 sllx %o1,50,%g4 248 xor %g3,%o4,%o4 249 xor %o3,%g5,%g5 ! Ch(e,f,g) 250 xor %g4,%o4,%g3 ! Sigma1(e) 251 252 srlx %o5,28,%o4 253 add %g5,%g2,%g2 254 ldx [%i3+24],%g5 ! K[3] 255 sllx %o5,25,%g4 256 add %g3,%g2,%g2 257 srlx %o5,34,%g3 258 xor %g4,%o4,%o4 259 sllx %o5,30,%g4 260 xor %g3,%o4,%o4 261 srlx %o5,39,%g3 262 xor %g4,%o4,%o4 263 sllx %o5,36,%g4 264 xor %g3,%o4,%o4 265 xor %g4,%o4,%o4 ! Sigma0(a) 266 267 or %o5,%g1,%g3 268 and %o5,%g1,%g4 269 and %o7,%g3,%g3 270 or %g3,%g4,%g4 ! Maj(a,b,c) 271 add %g5,%g2,%g2 ! +=K[3] 272 add %g4,%o4,%o4 273 274 add %g2,%o0,%o0 275 add %g2,%o4,%o4 276 sllx %l1,%i4,%g5 ! Xload(4) 277 add %i4,32,%g3 278 sllx %l0,%g3,%g4 279 ld [%i1+64],%l0 280 srlx %l2,%i5,%l1 281 or %g4,%g5,%g5 282 or %l1,%g5,%g5 283 ld [%i1+68],%l1 284 add %o3,%g5,%g2 285 stx %g5,[%sp+2271] 286 srlx %o0,14,%o3 !! 4 287 xor %o1,%o2,%g5 288 sllx %o0,23,%g4 289 and %o0,%g5,%g5 290 srlx %o0,18,%g3 291 xor %g4,%o3,%o3 292 sllx %o0,46,%g4 293 xor %g3,%o3,%o3 294 srlx %o0,41,%g3 295 xor %g4,%o3,%o3 296 sllx %o0,50,%g4 297 xor %g3,%o3,%o3 298 xor %o2,%g5,%g5 ! Ch(e,f,g) 299 xor %g4,%o3,%g3 ! Sigma1(e) 300 301 srlx %o4,28,%o3 302 add %g5,%g2,%g2 303 ldx [%i3+32],%g5 ! K[4] 304 sllx %o4,25,%g4 305 add %g3,%g2,%g2 306 srlx %o4,34,%g3 307 xor %g4,%o3,%o3 308 sllx %o4,30,%g4 309 xor %g3,%o3,%o3 310 srlx %o4,39,%g3 311 xor %g4,%o3,%o3 312 sllx %o4,36,%g4 313 xor %g3,%o3,%o3 314 xor %g4,%o3,%o3 ! Sigma0(a) 315 316 or %o4,%o5,%g3 317 and %o4,%o5,%g4 318 and %g1,%g3,%g3 319 or %g3,%g4,%g4 ! Maj(a,b,c) 320 add %g5,%g2,%g2 ! +=K[4] 321 add %g4,%o3,%o3 322 323 add %g2,%o7,%o7 324 add %g2,%o3,%o3 325 sllx %l3,%i4,%g5 ! Xload(5) 326 add %i4,32,%g3 327 sllx %l2,%g3,%g4 328 ld [%i1+72],%l2 329 srlx %l4,%i5,%l3 330 or %g4,%g5,%g5 331 or %l3,%g5,%g5 332 ld [%i1+76],%l3 333 add %o2,%g5,%g2 334 stx %g5,[%sp+2279] 335 srlx %o7,14,%o2 !! 5 336 xor %o0,%o1,%g5 337 sllx %o7,23,%g4 338 and %o7,%g5,%g5 339 srlx %o7,18,%g3 340 xor %g4,%o2,%o2 341 sllx %o7,46,%g4 342 xor %g3,%o2,%o2 343 srlx %o7,41,%g3 344 xor %g4,%o2,%o2 345 sllx %o7,50,%g4 346 xor %g3,%o2,%o2 347 xor %o1,%g5,%g5 ! Ch(e,f,g) 348 xor %g4,%o2,%g3 ! Sigma1(e) 349 350 srlx %o3,28,%o2 351 add %g5,%g2,%g2 352 ldx [%i3+40],%g5 ! K[5] 353 sllx %o3,25,%g4 354 add %g3,%g2,%g2 355 srlx %o3,34,%g3 356 xor %g4,%o2,%o2 357 sllx %o3,30,%g4 358 xor %g3,%o2,%o2 359 srlx %o3,39,%g3 360 xor %g4,%o2,%o2 361 sllx %o3,36,%g4 362 xor %g3,%o2,%o2 363 xor %g4,%o2,%o2 ! Sigma0(a) 364 365 or %o3,%o4,%g3 366 and %o3,%o4,%g4 367 and %o5,%g3,%g3 368 or %g3,%g4,%g4 ! Maj(a,b,c) 369 add %g5,%g2,%g2 ! +=K[5] 370 add %g4,%o2,%o2 371 372 add %g2,%g1,%g1 373 add %g2,%o2,%o2 374 sllx %l5,%i4,%g5 ! Xload(6) 375 add %i4,32,%g3 376 sllx %l4,%g3,%g4 377 ld [%i1+80],%l4 378 srlx %l6,%i5,%l5 379 or %g4,%g5,%g5 380 or %l5,%g5,%g5 381 ld [%i1+84],%l5 382 add %o1,%g5,%g2 383 stx %g5,[%sp+2287] 384 srlx %g1,14,%o1 !! 6 385 xor %o7,%o0,%g5 386 sllx %g1,23,%g4 387 and %g1,%g5,%g5 388 srlx %g1,18,%g3 389 xor %g4,%o1,%o1 390 sllx %g1,46,%g4 391 xor %g3,%o1,%o1 392 srlx %g1,41,%g3 393 xor %g4,%o1,%o1 394 sllx %g1,50,%g4 395 xor %g3,%o1,%o1 396 xor %o0,%g5,%g5 ! Ch(e,f,g) 397 xor %g4,%o1,%g3 ! Sigma1(e) 398 399 srlx %o2,28,%o1 400 add %g5,%g2,%g2 401 ldx [%i3+48],%g5 ! K[6] 402 sllx %o2,25,%g4 403 add %g3,%g2,%g2 404 srlx %o2,34,%g3 405 xor %g4,%o1,%o1 406 sllx %o2,30,%g4 407 xor %g3,%o1,%o1 408 srlx %o2,39,%g3 409 xor %g4,%o1,%o1 410 sllx %o2,36,%g4 411 xor %g3,%o1,%o1 412 xor %g4,%o1,%o1 ! Sigma0(a) 413 414 or %o2,%o3,%g3 415 and %o2,%o3,%g4 416 and %o4,%g3,%g3 417 or %g3,%g4,%g4 ! Maj(a,b,c) 418 add %g5,%g2,%g2 ! +=K[6] 419 add %g4,%o1,%o1 420 421 add %g2,%o5,%o5 422 add %g2,%o1,%o1 423 sllx %l7,%i4,%g5 ! Xload(7) 424 add %i4,32,%g3 425 sllx %l6,%g3,%g4 426 ld [%i1+88],%l6 427 srlx %l0,%i5,%l7 428 or %g4,%g5,%g5 429 or %l7,%g5,%g5 430 ld [%i1+92],%l7 431 add %o0,%g5,%g2 432 stx %g5,[%sp+2295] 433 srlx %o5,14,%o0 !! 7 434 xor %g1,%o7,%g5 435 sllx %o5,23,%g4 436 and %o5,%g5,%g5 437 srlx %o5,18,%g3 438 xor %g4,%o0,%o0 439 sllx %o5,46,%g4 440 xor %g3,%o0,%o0 441 srlx %o5,41,%g3 442 xor %g4,%o0,%o0 443 sllx %o5,50,%g4 444 xor %g3,%o0,%o0 445 xor %o7,%g5,%g5 ! Ch(e,f,g) 446 xor %g4,%o0,%g3 ! Sigma1(e) 447 448 srlx %o1,28,%o0 449 add %g5,%g2,%g2 450 ldx [%i3+56],%g5 ! K[7] 451 sllx %o1,25,%g4 452 add %g3,%g2,%g2 453 srlx %o1,34,%g3 454 xor %g4,%o0,%o0 455 sllx %o1,30,%g4 456 xor %g3,%o0,%o0 457 srlx %o1,39,%g3 458 xor %g4,%o0,%o0 459 sllx %o1,36,%g4 460 xor %g3,%o0,%o0 461 xor %g4,%o0,%o0 ! Sigma0(a) 462 463 or %o1,%o2,%g3 464 and %o1,%o2,%g4 465 and %o3,%g3,%g3 466 or %g3,%g4,%g4 ! Maj(a,b,c) 467 add %g5,%g2,%g2 ! +=K[7] 468 add %g4,%o0,%o0 469 470 add %g2,%o4,%o4 471 add %g2,%o0,%o0 472 sllx %l1,%i4,%g5 ! Xload(8) 473 add %i4,32,%g3 474 sllx %l0,%g3,%g4 475 ld [%i1+96],%l0 476 srlx %l2,%i5,%l1 477 or %g4,%g5,%g5 478 or %l1,%g5,%g5 479 ld [%i1+100],%l1 480 add %o7,%g5,%g2 481 stx %g5,[%sp+2303] 482 srlx %o4,14,%o7 !! 8 483 xor %o5,%g1,%g5 484 sllx %o4,23,%g4 485 and %o4,%g5,%g5 486 srlx %o4,18,%g3 487 xor %g4,%o7,%o7 488 sllx %o4,46,%g4 489 xor %g3,%o7,%o7 490 srlx %o4,41,%g3 491 xor %g4,%o7,%o7 492 sllx %o4,50,%g4 493 xor %g3,%o7,%o7 494 xor %g1,%g5,%g5 ! Ch(e,f,g) 495 xor %g4,%o7,%g3 ! Sigma1(e) 496 497 srlx %o0,28,%o7 498 add %g5,%g2,%g2 499 ldx [%i3+64],%g5 ! K[8] 500 sllx %o0,25,%g4 501 add %g3,%g2,%g2 502 srlx %o0,34,%g3 503 xor %g4,%o7,%o7 504 sllx %o0,30,%g4 505 xor %g3,%o7,%o7 506 srlx %o0,39,%g3 507 xor %g4,%o7,%o7 508 sllx %o0,36,%g4 509 xor %g3,%o7,%o7 510 xor %g4,%o7,%o7 ! Sigma0(a) 511 512 or %o0,%o1,%g3 513 and %o0,%o1,%g4 514 and %o2,%g3,%g3 515 or %g3,%g4,%g4 ! Maj(a,b,c) 516 add %g5,%g2,%g2 ! +=K[8] 517 add %g4,%o7,%o7 518 519 add %g2,%o3,%o3 520 add %g2,%o7,%o7 521 sllx %l3,%i4,%g5 ! Xload(9) 522 add %i4,32,%g3 523 sllx %l2,%g3,%g4 524 ld [%i1+104],%l2 525 srlx %l4,%i5,%l3 526 or %g4,%g5,%g5 527 or %l3,%g5,%g5 528 ld [%i1+108],%l3 529 add %g1,%g5,%g2 530 stx %g5,[%sp+2311] 531 srlx %o3,14,%g1 !! 9 532 xor %o4,%o5,%g5 533 sllx %o3,23,%g4 534 and %o3,%g5,%g5 535 srlx %o3,18,%g3 536 xor %g4,%g1,%g1 537 sllx %o3,46,%g4 538 xor %g3,%g1,%g1 539 srlx %o3,41,%g3 540 xor %g4,%g1,%g1 541 sllx %o3,50,%g4 542 xor %g3,%g1,%g1 543 xor %o5,%g5,%g5 ! Ch(e,f,g) 544 xor %g4,%g1,%g3 ! Sigma1(e) 545 546 srlx %o7,28,%g1 547 add %g5,%g2,%g2 548 ldx [%i3+72],%g5 ! K[9] 549 sllx %o7,25,%g4 550 add %g3,%g2,%g2 551 srlx %o7,34,%g3 552 xor %g4,%g1,%g1 553 sllx %o7,30,%g4 554 xor %g3,%g1,%g1 555 srlx %o7,39,%g3 556 xor %g4,%g1,%g1 557 sllx %o7,36,%g4 558 xor %g3,%g1,%g1 559 xor %g4,%g1,%g1 ! Sigma0(a) 560 561 or %o7,%o0,%g3 562 and %o7,%o0,%g4 563 and %o1,%g3,%g3 564 or %g3,%g4,%g4 ! Maj(a,b,c) 565 add %g5,%g2,%g2 ! +=K[9] 566 add %g4,%g1,%g1 567 568 add %g2,%o2,%o2 569 add %g2,%g1,%g1 570 sllx %l5,%i4,%g5 ! Xload(10) 571 add %i4,32,%g3 572 sllx %l4,%g3,%g4 573 ld [%i1+112],%l4 574 srlx %l6,%i5,%l5 575 or %g4,%g5,%g5 576 or %l5,%g5,%g5 577 ld [%i1+116],%l5 578 add %o5,%g5,%g2 579 stx %g5,[%sp+2319] 580 srlx %o2,14,%o5 !! 10 581 xor %o3,%o4,%g5 582 sllx %o2,23,%g4 583 and %o2,%g5,%g5 584 srlx %o2,18,%g3 585 xor %g4,%o5,%o5 586 sllx %o2,46,%g4 587 xor %g3,%o5,%o5 588 srlx %o2,41,%g3 589 xor %g4,%o5,%o5 590 sllx %o2,50,%g4 591 xor %g3,%o5,%o5 592 xor %o4,%g5,%g5 ! Ch(e,f,g) 593 xor %g4,%o5,%g3 ! Sigma1(e) 594 595 srlx %g1,28,%o5 596 add %g5,%g2,%g2 597 ldx [%i3+80],%g5 ! K[10] 598 sllx %g1,25,%g4 599 add %g3,%g2,%g2 600 srlx %g1,34,%g3 601 xor %g4,%o5,%o5 602 sllx %g1,30,%g4 603 xor %g3,%o5,%o5 604 srlx %g1,39,%g3 605 xor %g4,%o5,%o5 606 sllx %g1,36,%g4 607 xor %g3,%o5,%o5 608 xor %g4,%o5,%o5 ! Sigma0(a) 609 610 or %g1,%o7,%g3 611 and %g1,%o7,%g4 612 and %o0,%g3,%g3 613 or %g3,%g4,%g4 ! Maj(a,b,c) 614 add %g5,%g2,%g2 ! +=K[10] 615 add %g4,%o5,%o5 616 617 add %g2,%o1,%o1 618 add %g2,%o5,%o5 619 sllx %l7,%i4,%g5 ! Xload(11) 620 add %i4,32,%g3 621 sllx %l6,%g3,%g4 622 ld [%i1+120],%l6 623 srlx %l0,%i5,%l7 624 or %g4,%g5,%g5 625 or %l7,%g5,%g5 626 ld [%i1+124],%l7 627 add %o4,%g5,%g2 628 stx %g5,[%sp+2327] 629 srlx %o1,14,%o4 !! 11 630 xor %o2,%o3,%g5 631 sllx %o1,23,%g4 632 and %o1,%g5,%g5 633 srlx %o1,18,%g3 634 xor %g4,%o4,%o4 635 sllx %o1,46,%g4 636 xor %g3,%o4,%o4 637 srlx %o1,41,%g3 638 xor %g4,%o4,%o4 639 sllx %o1,50,%g4 640 xor %g3,%o4,%o4 641 xor %o3,%g5,%g5 ! Ch(e,f,g) 642 xor %g4,%o4,%g3 ! Sigma1(e) 643 644 srlx %o5,28,%o4 645 add %g5,%g2,%g2 646 ldx [%i3+88],%g5 ! K[11] 647 sllx %o5,25,%g4 648 add %g3,%g2,%g2 649 srlx %o5,34,%g3 650 xor %g4,%o4,%o4 651 sllx %o5,30,%g4 652 xor %g3,%o4,%o4 653 srlx %o5,39,%g3 654 xor %g4,%o4,%o4 655 sllx %o5,36,%g4 656 xor %g3,%o4,%o4 657 xor %g4,%o4,%o4 ! Sigma0(a) 658 659 or %o5,%g1,%g3 660 and %o5,%g1,%g4 661 and %o7,%g3,%g3 662 or %g3,%g4,%g4 ! Maj(a,b,c) 663 add %g5,%g2,%g2 ! +=K[11] 664 add %g4,%o4,%o4 665 666 add %g2,%o0,%o0 667 add %g2,%o4,%o4 668 sllx %l1,%i4,%g5 ! Xload(12) 669 add %i4,32,%g3 670 sllx %l0,%g3,%g4 671 672 srlx %l2,%i5,%l1 673 or %g4,%g5,%g5 674 or %l1,%g5,%g5 675 676 add %o3,%g5,%g2 677 stx %g5,[%sp+2335] 678 brnz,a %i4,.+8 679 ld [%i1+128],%l0 680 srlx %o0,14,%o3 !! 12 681 xor %o1,%o2,%g5 682 sllx %o0,23,%g4 683 and %o0,%g5,%g5 684 srlx %o0,18,%g3 685 xor %g4,%o3,%o3 686 sllx %o0,46,%g4 687 xor %g3,%o3,%o3 688 srlx %o0,41,%g3 689 xor %g4,%o3,%o3 690 sllx %o0,50,%g4 691 xor %g3,%o3,%o3 692 xor %o2,%g5,%g5 ! Ch(e,f,g) 693 xor %g4,%o3,%g3 ! Sigma1(e) 694 695 srlx %o4,28,%o3 696 add %g5,%g2,%g2 697 ldx [%i3+96],%g5 ! K[12] 698 sllx %o4,25,%g4 699 add %g3,%g2,%g2 700 srlx %o4,34,%g3 701 xor %g4,%o3,%o3 702 sllx %o4,30,%g4 703 xor %g3,%o3,%o3 704 srlx %o4,39,%g3 705 xor %g4,%o3,%o3 706 sllx %o4,36,%g4 707 xor %g3,%o3,%o3 708 xor %g4,%o3,%o3 ! Sigma0(a) 709 710 or %o4,%o5,%g3 711 and %o4,%o5,%g4 712 and %g1,%g3,%g3 713 or %g3,%g4,%g4 ! Maj(a,b,c) 714 add %g5,%g2,%g2 ! +=K[12] 715 add %g4,%o3,%o3 716 717 add %g2,%o7,%o7 718 add %g2,%o3,%o3 719 sllx %l3,%i4,%g5 ! Xload(13) 720 add %i4,32,%g3 721 sllx %l2,%g3,%g4 722 723 srlx %l4,%i5,%l3 724 or %g4,%g5,%g5 725 or %l3,%g5,%g5 726 727 add %o2,%g5,%g2 728 stx %g5,[%sp+2343] 729 srlx %o7,14,%o2 !! 13 730 xor %o0,%o1,%g5 731 sllx %o7,23,%g4 732 and %o7,%g5,%g5 733 srlx %o7,18,%g3 734 xor %g4,%o2,%o2 735 sllx %o7,46,%g4 736 xor %g3,%o2,%o2 737 srlx %o7,41,%g3 738 xor %g4,%o2,%o2 739 sllx %o7,50,%g4 740 xor %g3,%o2,%o2 741 xor %o1,%g5,%g5 ! Ch(e,f,g) 742 xor %g4,%o2,%g3 ! Sigma1(e) 743 744 srlx %o3,28,%o2 745 add %g5,%g2,%g2 746 ldx [%i3+104],%g5 ! K[13] 747 sllx %o3,25,%g4 748 add %g3,%g2,%g2 749 srlx %o3,34,%g3 750 xor %g4,%o2,%o2 751 sllx %o3,30,%g4 752 xor %g3,%o2,%o2 753 srlx %o3,39,%g3 754 xor %g4,%o2,%o2 755 sllx %o3,36,%g4 756 xor %g3,%o2,%o2 757 xor %g4,%o2,%o2 ! Sigma0(a) 758 759 or %o3,%o4,%g3 760 and %o3,%o4,%g4 761 and %o5,%g3,%g3 762 or %g3,%g4,%g4 ! Maj(a,b,c) 763 add %g5,%g2,%g2 ! +=K[13] 764 add %g4,%o2,%o2 765 766 add %g2,%g1,%g1 767 add %g2,%o2,%o2 768 sllx %l5,%i4,%g5 ! Xload(14) 769 add %i4,32,%g3 770 sllx %l4,%g3,%g4 771 772 srlx %l6,%i5,%l5 773 or %g4,%g5,%g5 774 or %l5,%g5,%g5 775 776 add %o1,%g5,%g2 777 stx %g5,[%sp+2351] 778 srlx %g1,14,%o1 !! 14 779 xor %o7,%o0,%g5 780 sllx %g1,23,%g4 781 and %g1,%g5,%g5 782 srlx %g1,18,%g3 783 xor %g4,%o1,%o1 784 sllx %g1,46,%g4 785 xor %g3,%o1,%o1 786 srlx %g1,41,%g3 787 xor %g4,%o1,%o1 788 sllx %g1,50,%g4 789 xor %g3,%o1,%o1 790 xor %o0,%g5,%g5 ! Ch(e,f,g) 791 xor %g4,%o1,%g3 ! Sigma1(e) 792 793 srlx %o2,28,%o1 794 add %g5,%g2,%g2 795 ldx [%i3+112],%g5 ! K[14] 796 sllx %o2,25,%g4 797 add %g3,%g2,%g2 798 srlx %o2,34,%g3 799 xor %g4,%o1,%o1 800 sllx %o2,30,%g4 801 xor %g3,%o1,%o1 802 srlx %o2,39,%g3 803 xor %g4,%o1,%o1 804 sllx %o2,36,%g4 805 xor %g3,%o1,%o1 806 xor %g4,%o1,%o1 ! Sigma0(a) 807 808 or %o2,%o3,%g3 809 and %o2,%o3,%g4 810 and %o4,%g3,%g3 811 or %g3,%g4,%g4 ! Maj(a,b,c) 812 add %g5,%g2,%g2 ! +=K[14] 813 add %g4,%o1,%o1 814 815 add %g2,%o5,%o5 816 add %g2,%o1,%o1 817 ld [%sp+2247],%l2 818 sllx %l7,%i4,%g5 ! Xload(15) 819 add %i4,32,%g3 820 ld [%sp+2251],%l3 821 sllx %l6,%g3,%g4 822 ld [%sp+2311],%l4 823 srlx %l0,%i5,%l7 824 or %g4,%g5,%g5 825 ld [%sp+2315],%l5 826 or %l7,%g5,%g5 827 ld [%sp+2351],%l6 828 add %o0,%g5,%g2 829 stx %g5,[%sp+2359] 830 ld [%sp+2355],%l7 831 ld [%sp+2239],%l0 832 ld [%sp+2243],%l1 833 srlx %o5,14,%o0 !! 15 834 xor %g1,%o7,%g5 835 sllx %o5,23,%g4 836 and %o5,%g5,%g5 837 srlx %o5,18,%g3 838 xor %g4,%o0,%o0 839 sllx %o5,46,%g4 840 xor %g3,%o0,%o0 841 srlx %o5,41,%g3 842 xor %g4,%o0,%o0 843 sllx %o5,50,%g4 844 xor %g3,%o0,%o0 845 xor %o7,%g5,%g5 ! Ch(e,f,g) 846 xor %g4,%o0,%g3 ! Sigma1(e) 847 848 srlx %o1,28,%o0 849 add %g5,%g2,%g2 850 ldx [%i3+120],%g5 ! K[15] 851 sllx %o1,25,%g4 852 add %g3,%g2,%g2 853 srlx %o1,34,%g3 854 xor %g4,%o0,%o0 855 sllx %o1,30,%g4 856 xor %g3,%o0,%o0 857 srlx %o1,39,%g3 858 xor %g4,%o0,%o0 859 sllx %o1,36,%g4 860 xor %g3,%o0,%o0 861 xor %g4,%o0,%o0 ! Sigma0(a) 862 863 or %o1,%o2,%g3 864 and %o1,%o2,%g4 865 and %o3,%g3,%g3 866 or %g3,%g4,%g4 ! Maj(a,b,c) 867 add %g5,%g2,%g2 ! +=K[15] 868 add %g4,%o0,%o0 869 870 add %g2,%o4,%o4 871 add %g2,%o0,%o0 872.L16_xx: 873 sllx %l2,32,%g3 !! Xupdate(16) 874 or %l3,%g3,%g3 875 876 srlx %g3,7,%g2 877 ld [%sp+2255],%l2 878 sllx %g3,56,%g4 879 ld [%sp+2259],%l3 880 srlx %g3,1,%g3 881 xor %g4,%g2,%g2 882 sllx %g4,7,%g4 883 xor %g3,%g2,%g2 884 srlx %g3,7,%g3 885 xor %g4,%g2,%g2 886 sllx %l6,32,%g5 887 xor %g3,%g2,%g2 ! sigma0(X[16+1]) 888 or %l7,%g5,%g5 889 890 srlx %g5,6,%g4 891 ld [%sp+2359],%l6 892 sllx %g5,3,%g3 893 ld [%sp+2363],%l7 894 srlx %g5,19,%g5 895 xor %g3,%g4,%g4 896 sllx %g3,42,%g3 897 xor %g5,%g4,%g4 898 srlx %g5,42,%g5 899 xor %g3,%g4,%g4 900 sllx %l4,32,%g3 901 xor %g5,%g4,%g4 ! sigma1(X[16+14]) 902 ld [%sp+2319],%l4 903 or %l5,%g3,%g3 904 ld [%sp+2323],%l5 905 906 sllx %l0,32,%g5 907 add %g4,%g2,%g2 908 ld [%sp+2247],%l0 909 or %l1,%g5,%g5 910 add %g3,%g2,%g2 ! +=X[16+9] 911 ld [%sp+2251],%l1 912 add %g5,%g2,%g2 ! +=X[16] 913 stx %g2,[%sp+2239] 914 add %o7,%g2,%g2 915 srlx %o4,14,%o7 !! 16 916 xor %o5,%g1,%g5 917 sllx %o4,23,%g4 918 and %o4,%g5,%g5 919 srlx %o4,18,%g3 920 xor %g4,%o7,%o7 921 sllx %o4,46,%g4 922 xor %g3,%o7,%o7 923 srlx %o4,41,%g3 924 xor %g4,%o7,%o7 925 sllx %o4,50,%g4 926 xor %g3,%o7,%o7 927 xor %g1,%g5,%g5 ! Ch(e,f,g) 928 xor %g4,%o7,%g3 ! Sigma1(e) 929 930 srlx %o0,28,%o7 931 add %g5,%g2,%g2 932 ldx [%i3+128],%g5 ! K[16] 933 sllx %o0,25,%g4 934 add %g3,%g2,%g2 935 srlx %o0,34,%g3 936 xor %g4,%o7,%o7 937 sllx %o0,30,%g4 938 xor %g3,%o7,%o7 939 srlx %o0,39,%g3 940 xor %g4,%o7,%o7 941 sllx %o0,36,%g4 942 xor %g3,%o7,%o7 943 xor %g4,%o7,%o7 ! Sigma0(a) 944 945 or %o0,%o1,%g3 946 and %o0,%o1,%g4 947 and %o2,%g3,%g3 948 or %g3,%g4,%g4 ! Maj(a,b,c) 949 add %g5,%g2,%g2 ! +=K[16] 950 add %g4,%o7,%o7 951 952 add %g2,%o3,%o3 953 add %g2,%o7,%o7 954 sllx %l2,32,%g3 !! Xupdate(17) 955 or %l3,%g3,%g3 956 957 srlx %g3,7,%g2 958 ld [%sp+2263],%l2 959 sllx %g3,56,%g4 960 ld [%sp+2267],%l3 961 srlx %g3,1,%g3 962 xor %g4,%g2,%g2 963 sllx %g4,7,%g4 964 xor %g3,%g2,%g2 965 srlx %g3,7,%g3 966 xor %g4,%g2,%g2 967 sllx %l6,32,%g5 968 xor %g3,%g2,%g2 ! sigma0(X[17+1]) 969 or %l7,%g5,%g5 970 971 srlx %g5,6,%g4 972 ld [%sp+2239],%l6 973 sllx %g5,3,%g3 974 ld [%sp+2243],%l7 975 srlx %g5,19,%g5 976 xor %g3,%g4,%g4 977 sllx %g3,42,%g3 978 xor %g5,%g4,%g4 979 srlx %g5,42,%g5 980 xor %g3,%g4,%g4 981 sllx %l4,32,%g3 982 xor %g5,%g4,%g4 ! sigma1(X[17+14]) 983 ld [%sp+2327],%l4 984 or %l5,%g3,%g3 985 ld [%sp+2331],%l5 986 987 sllx %l0,32,%g5 988 add %g4,%g2,%g2 989 ld [%sp+2255],%l0 990 or %l1,%g5,%g5 991 add %g3,%g2,%g2 ! +=X[17+9] 992 ld [%sp+2259],%l1 993 add %g5,%g2,%g2 ! +=X[17] 994 stx %g2,[%sp+2247] 995 add %g1,%g2,%g2 996 srlx %o3,14,%g1 !! 17 997 xor %o4,%o5,%g5 998 sllx %o3,23,%g4 999 and %o3,%g5,%g5 1000 srlx %o3,18,%g3 1001 xor %g4,%g1,%g1 1002 sllx %o3,46,%g4 1003 xor %g3,%g1,%g1 1004 srlx %o3,41,%g3 1005 xor %g4,%g1,%g1 1006 sllx %o3,50,%g4 1007 xor %g3,%g1,%g1 1008 xor %o5,%g5,%g5 ! Ch(e,f,g) 1009 xor %g4,%g1,%g3 ! Sigma1(e) 1010 1011 srlx %o7,28,%g1 1012 add %g5,%g2,%g2 1013 ldx [%i3+136],%g5 ! K[17] 1014 sllx %o7,25,%g4 1015 add %g3,%g2,%g2 1016 srlx %o7,34,%g3 1017 xor %g4,%g1,%g1 1018 sllx %o7,30,%g4 1019 xor %g3,%g1,%g1 1020 srlx %o7,39,%g3 1021 xor %g4,%g1,%g1 1022 sllx %o7,36,%g4 1023 xor %g3,%g1,%g1 1024 xor %g4,%g1,%g1 ! Sigma0(a) 1025 1026 or %o7,%o0,%g3 1027 and %o7,%o0,%g4 1028 and %o1,%g3,%g3 1029 or %g3,%g4,%g4 ! Maj(a,b,c) 1030 add %g5,%g2,%g2 ! +=K[17] 1031 add %g4,%g1,%g1 1032 1033 add %g2,%o2,%o2 1034 add %g2,%g1,%g1 1035 sllx %l2,32,%g3 !! Xupdate(18) 1036 or %l3,%g3,%g3 1037 1038 srlx %g3,7,%g2 1039 ld [%sp+2271],%l2 1040 sllx %g3,56,%g4 1041 ld [%sp+2275],%l3 1042 srlx %g3,1,%g3 1043 xor %g4,%g2,%g2 1044 sllx %g4,7,%g4 1045 xor %g3,%g2,%g2 1046 srlx %g3,7,%g3 1047 xor %g4,%g2,%g2 1048 sllx %l6,32,%g5 1049 xor %g3,%g2,%g2 ! sigma0(X[18+1]) 1050 or %l7,%g5,%g5 1051 1052 srlx %g5,6,%g4 1053 ld [%sp+2247],%l6 1054 sllx %g5,3,%g3 1055 ld [%sp+2251],%l7 1056 srlx %g5,19,%g5 1057 xor %g3,%g4,%g4 1058 sllx %g3,42,%g3 1059 xor %g5,%g4,%g4 1060 srlx %g5,42,%g5 1061 xor %g3,%g4,%g4 1062 sllx %l4,32,%g3 1063 xor %g5,%g4,%g4 ! sigma1(X[18+14]) 1064 ld [%sp+2335],%l4 1065 or %l5,%g3,%g3 1066 ld [%sp+2339],%l5 1067 1068 sllx %l0,32,%g5 1069 add %g4,%g2,%g2 1070 ld [%sp+2263],%l0 1071 or %l1,%g5,%g5 1072 add %g3,%g2,%g2 ! +=X[18+9] 1073 ld [%sp+2267],%l1 1074 add %g5,%g2,%g2 ! +=X[18] 1075 stx %g2,[%sp+2255] 1076 add %o5,%g2,%g2 1077 srlx %o2,14,%o5 !! 18 1078 xor %o3,%o4,%g5 1079 sllx %o2,23,%g4 1080 and %o2,%g5,%g5 1081 srlx %o2,18,%g3 1082 xor %g4,%o5,%o5 1083 sllx %o2,46,%g4 1084 xor %g3,%o5,%o5 1085 srlx %o2,41,%g3 1086 xor %g4,%o5,%o5 1087 sllx %o2,50,%g4 1088 xor %g3,%o5,%o5 1089 xor %o4,%g5,%g5 ! Ch(e,f,g) 1090 xor %g4,%o5,%g3 ! Sigma1(e) 1091 1092 srlx %g1,28,%o5 1093 add %g5,%g2,%g2 1094 ldx [%i3+144],%g5 ! K[18] 1095 sllx %g1,25,%g4 1096 add %g3,%g2,%g2 1097 srlx %g1,34,%g3 1098 xor %g4,%o5,%o5 1099 sllx %g1,30,%g4 1100 xor %g3,%o5,%o5 1101 srlx %g1,39,%g3 1102 xor %g4,%o5,%o5 1103 sllx %g1,36,%g4 1104 xor %g3,%o5,%o5 1105 xor %g4,%o5,%o5 ! Sigma0(a) 1106 1107 or %g1,%o7,%g3 1108 and %g1,%o7,%g4 1109 and %o0,%g3,%g3 1110 or %g3,%g4,%g4 ! Maj(a,b,c) 1111 add %g5,%g2,%g2 ! +=K[18] 1112 add %g4,%o5,%o5 1113 1114 add %g2,%o1,%o1 1115 add %g2,%o5,%o5 1116 sllx %l2,32,%g3 !! Xupdate(19) 1117 or %l3,%g3,%g3 1118 1119 srlx %g3,7,%g2 1120 ld [%sp+2279],%l2 1121 sllx %g3,56,%g4 1122 ld [%sp+2283],%l3 1123 srlx %g3,1,%g3 1124 xor %g4,%g2,%g2 1125 sllx %g4,7,%g4 1126 xor %g3,%g2,%g2 1127 srlx %g3,7,%g3 1128 xor %g4,%g2,%g2 1129 sllx %l6,32,%g5 1130 xor %g3,%g2,%g2 ! sigma0(X[19+1]) 1131 or %l7,%g5,%g5 1132 1133 srlx %g5,6,%g4 1134 ld [%sp+2255],%l6 1135 sllx %g5,3,%g3 1136 ld [%sp+2259],%l7 1137 srlx %g5,19,%g5 1138 xor %g3,%g4,%g4 1139 sllx %g3,42,%g3 1140 xor %g5,%g4,%g4 1141 srlx %g5,42,%g5 1142 xor %g3,%g4,%g4 1143 sllx %l4,32,%g3 1144 xor %g5,%g4,%g4 ! sigma1(X[19+14]) 1145 ld [%sp+2343],%l4 1146 or %l5,%g3,%g3 1147 ld [%sp+2347],%l5 1148 1149 sllx %l0,32,%g5 1150 add %g4,%g2,%g2 1151 ld [%sp+2271],%l0 1152 or %l1,%g5,%g5 1153 add %g3,%g2,%g2 ! +=X[19+9] 1154 ld [%sp+2275],%l1 1155 add %g5,%g2,%g2 ! +=X[19] 1156 stx %g2,[%sp+2263] 1157 add %o4,%g2,%g2 1158 srlx %o1,14,%o4 !! 19 1159 xor %o2,%o3,%g5 1160 sllx %o1,23,%g4 1161 and %o1,%g5,%g5 1162 srlx %o1,18,%g3 1163 xor %g4,%o4,%o4 1164 sllx %o1,46,%g4 1165 xor %g3,%o4,%o4 1166 srlx %o1,41,%g3 1167 xor %g4,%o4,%o4 1168 sllx %o1,50,%g4 1169 xor %g3,%o4,%o4 1170 xor %o3,%g5,%g5 ! Ch(e,f,g) 1171 xor %g4,%o4,%g3 ! Sigma1(e) 1172 1173 srlx %o5,28,%o4 1174 add %g5,%g2,%g2 1175 ldx [%i3+152],%g5 ! K[19] 1176 sllx %o5,25,%g4 1177 add %g3,%g2,%g2 1178 srlx %o5,34,%g3 1179 xor %g4,%o4,%o4 1180 sllx %o5,30,%g4 1181 xor %g3,%o4,%o4 1182 srlx %o5,39,%g3 1183 xor %g4,%o4,%o4 1184 sllx %o5,36,%g4 1185 xor %g3,%o4,%o4 1186 xor %g4,%o4,%o4 ! Sigma0(a) 1187 1188 or %o5,%g1,%g3 1189 and %o5,%g1,%g4 1190 and %o7,%g3,%g3 1191 or %g3,%g4,%g4 ! Maj(a,b,c) 1192 add %g5,%g2,%g2 ! +=K[19] 1193 add %g4,%o4,%o4 1194 1195 add %g2,%o0,%o0 1196 add %g2,%o4,%o4 1197 sllx %l2,32,%g3 !! Xupdate(20) 1198 or %l3,%g3,%g3 1199 1200 srlx %g3,7,%g2 1201 ld [%sp+2287],%l2 1202 sllx %g3,56,%g4 1203 ld [%sp+2291],%l3 1204 srlx %g3,1,%g3 1205 xor %g4,%g2,%g2 1206 sllx %g4,7,%g4 1207 xor %g3,%g2,%g2 1208 srlx %g3,7,%g3 1209 xor %g4,%g2,%g2 1210 sllx %l6,32,%g5 1211 xor %g3,%g2,%g2 ! sigma0(X[20+1]) 1212 or %l7,%g5,%g5 1213 1214 srlx %g5,6,%g4 1215 ld [%sp+2263],%l6 1216 sllx %g5,3,%g3 1217 ld [%sp+2267],%l7 1218 srlx %g5,19,%g5 1219 xor %g3,%g4,%g4 1220 sllx %g3,42,%g3 1221 xor %g5,%g4,%g4 1222 srlx %g5,42,%g5 1223 xor %g3,%g4,%g4 1224 sllx %l4,32,%g3 1225 xor %g5,%g4,%g4 ! sigma1(X[20+14]) 1226 ld [%sp+2351],%l4 1227 or %l5,%g3,%g3 1228 ld [%sp+2355],%l5 1229 1230 sllx %l0,32,%g5 1231 add %g4,%g2,%g2 1232 ld [%sp+2279],%l0 1233 or %l1,%g5,%g5 1234 add %g3,%g2,%g2 ! +=X[20+9] 1235 ld [%sp+2283],%l1 1236 add %g5,%g2,%g2 ! +=X[20] 1237 stx %g2,[%sp+2271] 1238 add %o3,%g2,%g2 1239 srlx %o0,14,%o3 !! 20 1240 xor %o1,%o2,%g5 1241 sllx %o0,23,%g4 1242 and %o0,%g5,%g5 1243 srlx %o0,18,%g3 1244 xor %g4,%o3,%o3 1245 sllx %o0,46,%g4 1246 xor %g3,%o3,%o3 1247 srlx %o0,41,%g3 1248 xor %g4,%o3,%o3 1249 sllx %o0,50,%g4 1250 xor %g3,%o3,%o3 1251 xor %o2,%g5,%g5 ! Ch(e,f,g) 1252 xor %g4,%o3,%g3 ! Sigma1(e) 1253 1254 srlx %o4,28,%o3 1255 add %g5,%g2,%g2 1256 ldx [%i3+160],%g5 ! K[20] 1257 sllx %o4,25,%g4 1258 add %g3,%g2,%g2 1259 srlx %o4,34,%g3 1260 xor %g4,%o3,%o3 1261 sllx %o4,30,%g4 1262 xor %g3,%o3,%o3 1263 srlx %o4,39,%g3 1264 xor %g4,%o3,%o3 1265 sllx %o4,36,%g4 1266 xor %g3,%o3,%o3 1267 xor %g4,%o3,%o3 ! Sigma0(a) 1268 1269 or %o4,%o5,%g3 1270 and %o4,%o5,%g4 1271 and %g1,%g3,%g3 1272 or %g3,%g4,%g4 ! Maj(a,b,c) 1273 add %g5,%g2,%g2 ! +=K[20] 1274 add %g4,%o3,%o3 1275 1276 add %g2,%o7,%o7 1277 add %g2,%o3,%o3 1278 sllx %l2,32,%g3 !! Xupdate(21) 1279 or %l3,%g3,%g3 1280 1281 srlx %g3,7,%g2 1282 ld [%sp+2295],%l2 1283 sllx %g3,56,%g4 1284 ld [%sp+2299],%l3 1285 srlx %g3,1,%g3 1286 xor %g4,%g2,%g2 1287 sllx %g4,7,%g4 1288 xor %g3,%g2,%g2 1289 srlx %g3,7,%g3 1290 xor %g4,%g2,%g2 1291 sllx %l6,32,%g5 1292 xor %g3,%g2,%g2 ! sigma0(X[21+1]) 1293 or %l7,%g5,%g5 1294 1295 srlx %g5,6,%g4 1296 ld [%sp+2271],%l6 1297 sllx %g5,3,%g3 1298 ld [%sp+2275],%l7 1299 srlx %g5,19,%g5 1300 xor %g3,%g4,%g4 1301 sllx %g3,42,%g3 1302 xor %g5,%g4,%g4 1303 srlx %g5,42,%g5 1304 xor %g3,%g4,%g4 1305 sllx %l4,32,%g3 1306 xor %g5,%g4,%g4 ! sigma1(X[21+14]) 1307 ld [%sp+2359],%l4 1308 or %l5,%g3,%g3 1309 ld [%sp+2363],%l5 1310 1311 sllx %l0,32,%g5 1312 add %g4,%g2,%g2 1313 ld [%sp+2287],%l0 1314 or %l1,%g5,%g5 1315 add %g3,%g2,%g2 ! +=X[21+9] 1316 ld [%sp+2291],%l1 1317 add %g5,%g2,%g2 ! +=X[21] 1318 stx %g2,[%sp+2279] 1319 add %o2,%g2,%g2 1320 srlx %o7,14,%o2 !! 21 1321 xor %o0,%o1,%g5 1322 sllx %o7,23,%g4 1323 and %o7,%g5,%g5 1324 srlx %o7,18,%g3 1325 xor %g4,%o2,%o2 1326 sllx %o7,46,%g4 1327 xor %g3,%o2,%o2 1328 srlx %o7,41,%g3 1329 xor %g4,%o2,%o2 1330 sllx %o7,50,%g4 1331 xor %g3,%o2,%o2 1332 xor %o1,%g5,%g5 ! Ch(e,f,g) 1333 xor %g4,%o2,%g3 ! Sigma1(e) 1334 1335 srlx %o3,28,%o2 1336 add %g5,%g2,%g2 1337 ldx [%i3+168],%g5 ! K[21] 1338 sllx %o3,25,%g4 1339 add %g3,%g2,%g2 1340 srlx %o3,34,%g3 1341 xor %g4,%o2,%o2 1342 sllx %o3,30,%g4 1343 xor %g3,%o2,%o2 1344 srlx %o3,39,%g3 1345 xor %g4,%o2,%o2 1346 sllx %o3,36,%g4 1347 xor %g3,%o2,%o2 1348 xor %g4,%o2,%o2 ! Sigma0(a) 1349 1350 or %o3,%o4,%g3 1351 and %o3,%o4,%g4 1352 and %o5,%g3,%g3 1353 or %g3,%g4,%g4 ! Maj(a,b,c) 1354 add %g5,%g2,%g2 ! +=K[21] 1355 add %g4,%o2,%o2 1356 1357 add %g2,%g1,%g1 1358 add %g2,%o2,%o2 1359 sllx %l2,32,%g3 !! Xupdate(22) 1360 or %l3,%g3,%g3 1361 1362 srlx %g3,7,%g2 1363 ld [%sp+2303],%l2 1364 sllx %g3,56,%g4 1365 ld [%sp+2307],%l3 1366 srlx %g3,1,%g3 1367 xor %g4,%g2,%g2 1368 sllx %g4,7,%g4 1369 xor %g3,%g2,%g2 1370 srlx %g3,7,%g3 1371 xor %g4,%g2,%g2 1372 sllx %l6,32,%g5 1373 xor %g3,%g2,%g2 ! sigma0(X[22+1]) 1374 or %l7,%g5,%g5 1375 1376 srlx %g5,6,%g4 1377 ld [%sp+2279],%l6 1378 sllx %g5,3,%g3 1379 ld [%sp+2283],%l7 1380 srlx %g5,19,%g5 1381 xor %g3,%g4,%g4 1382 sllx %g3,42,%g3 1383 xor %g5,%g4,%g4 1384 srlx %g5,42,%g5 1385 xor %g3,%g4,%g4 1386 sllx %l4,32,%g3 1387 xor %g5,%g4,%g4 ! sigma1(X[22+14]) 1388 ld [%sp+2239],%l4 1389 or %l5,%g3,%g3 1390 ld [%sp+2243],%l5 1391 1392 sllx %l0,32,%g5 1393 add %g4,%g2,%g2 1394 ld [%sp+2295],%l0 1395 or %l1,%g5,%g5 1396 add %g3,%g2,%g2 ! +=X[22+9] 1397 ld [%sp+2299],%l1 1398 add %g5,%g2,%g2 ! +=X[22] 1399 stx %g2,[%sp+2287] 1400 add %o1,%g2,%g2 1401 srlx %g1,14,%o1 !! 22 1402 xor %o7,%o0,%g5 1403 sllx %g1,23,%g4 1404 and %g1,%g5,%g5 1405 srlx %g1,18,%g3 1406 xor %g4,%o1,%o1 1407 sllx %g1,46,%g4 1408 xor %g3,%o1,%o1 1409 srlx %g1,41,%g3 1410 xor %g4,%o1,%o1 1411 sllx %g1,50,%g4 1412 xor %g3,%o1,%o1 1413 xor %o0,%g5,%g5 ! Ch(e,f,g) 1414 xor %g4,%o1,%g3 ! Sigma1(e) 1415 1416 srlx %o2,28,%o1 1417 add %g5,%g2,%g2 1418 ldx [%i3+176],%g5 ! K[22] 1419 sllx %o2,25,%g4 1420 add %g3,%g2,%g2 1421 srlx %o2,34,%g3 1422 xor %g4,%o1,%o1 1423 sllx %o2,30,%g4 1424 xor %g3,%o1,%o1 1425 srlx %o2,39,%g3 1426 xor %g4,%o1,%o1 1427 sllx %o2,36,%g4 1428 xor %g3,%o1,%o1 1429 xor %g4,%o1,%o1 ! Sigma0(a) 1430 1431 or %o2,%o3,%g3 1432 and %o2,%o3,%g4 1433 and %o4,%g3,%g3 1434 or %g3,%g4,%g4 ! Maj(a,b,c) 1435 add %g5,%g2,%g2 ! +=K[22] 1436 add %g4,%o1,%o1 1437 1438 add %g2,%o5,%o5 1439 add %g2,%o1,%o1 1440 sllx %l2,32,%g3 !! Xupdate(23) 1441 or %l3,%g3,%g3 1442 1443 srlx %g3,7,%g2 1444 ld [%sp+2311],%l2 1445 sllx %g3,56,%g4 1446 ld [%sp+2315],%l3 1447 srlx %g3,1,%g3 1448 xor %g4,%g2,%g2 1449 sllx %g4,7,%g4 1450 xor %g3,%g2,%g2 1451 srlx %g3,7,%g3 1452 xor %g4,%g2,%g2 1453 sllx %l6,32,%g5 1454 xor %g3,%g2,%g2 ! sigma0(X[23+1]) 1455 or %l7,%g5,%g5 1456 1457 srlx %g5,6,%g4 1458 ld [%sp+2287],%l6 1459 sllx %g5,3,%g3 1460 ld [%sp+2291],%l7 1461 srlx %g5,19,%g5 1462 xor %g3,%g4,%g4 1463 sllx %g3,42,%g3 1464 xor %g5,%g4,%g4 1465 srlx %g5,42,%g5 1466 xor %g3,%g4,%g4 1467 sllx %l4,32,%g3 1468 xor %g5,%g4,%g4 ! sigma1(X[23+14]) 1469 ld [%sp+2247],%l4 1470 or %l5,%g3,%g3 1471 ld [%sp+2251],%l5 1472 1473 sllx %l0,32,%g5 1474 add %g4,%g2,%g2 1475 ld [%sp+2303],%l0 1476 or %l1,%g5,%g5 1477 add %g3,%g2,%g2 ! +=X[23+9] 1478 ld [%sp+2307],%l1 1479 add %g5,%g2,%g2 ! +=X[23] 1480 stx %g2,[%sp+2295] 1481 add %o0,%g2,%g2 1482 srlx %o5,14,%o0 !! 23 1483 xor %g1,%o7,%g5 1484 sllx %o5,23,%g4 1485 and %o5,%g5,%g5 1486 srlx %o5,18,%g3 1487 xor %g4,%o0,%o0 1488 sllx %o5,46,%g4 1489 xor %g3,%o0,%o0 1490 srlx %o5,41,%g3 1491 xor %g4,%o0,%o0 1492 sllx %o5,50,%g4 1493 xor %g3,%o0,%o0 1494 xor %o7,%g5,%g5 ! Ch(e,f,g) 1495 xor %g4,%o0,%g3 ! Sigma1(e) 1496 1497 srlx %o1,28,%o0 1498 add %g5,%g2,%g2 1499 ldx [%i3+184],%g5 ! K[23] 1500 sllx %o1,25,%g4 1501 add %g3,%g2,%g2 1502 srlx %o1,34,%g3 1503 xor %g4,%o0,%o0 1504 sllx %o1,30,%g4 1505 xor %g3,%o0,%o0 1506 srlx %o1,39,%g3 1507 xor %g4,%o0,%o0 1508 sllx %o1,36,%g4 1509 xor %g3,%o0,%o0 1510 xor %g4,%o0,%o0 ! Sigma0(a) 1511 1512 or %o1,%o2,%g3 1513 and %o1,%o2,%g4 1514 and %o3,%g3,%g3 1515 or %g3,%g4,%g4 ! Maj(a,b,c) 1516 add %g5,%g2,%g2 ! +=K[23] 1517 add %g4,%o0,%o0 1518 1519 add %g2,%o4,%o4 1520 add %g2,%o0,%o0 1521 sllx %l2,32,%g3 !! Xupdate(24) 1522 or %l3,%g3,%g3 1523 1524 srlx %g3,7,%g2 1525 ld [%sp+2319],%l2 1526 sllx %g3,56,%g4 1527 ld [%sp+2323],%l3 1528 srlx %g3,1,%g3 1529 xor %g4,%g2,%g2 1530 sllx %g4,7,%g4 1531 xor %g3,%g2,%g2 1532 srlx %g3,7,%g3 1533 xor %g4,%g2,%g2 1534 sllx %l6,32,%g5 1535 xor %g3,%g2,%g2 ! sigma0(X[24+1]) 1536 or %l7,%g5,%g5 1537 1538 srlx %g5,6,%g4 1539 ld [%sp+2295],%l6 1540 sllx %g5,3,%g3 1541 ld [%sp+2299],%l7 1542 srlx %g5,19,%g5 1543 xor %g3,%g4,%g4 1544 sllx %g3,42,%g3 1545 xor %g5,%g4,%g4 1546 srlx %g5,42,%g5 1547 xor %g3,%g4,%g4 1548 sllx %l4,32,%g3 1549 xor %g5,%g4,%g4 ! sigma1(X[24+14]) 1550 ld [%sp+2255],%l4 1551 or %l5,%g3,%g3 1552 ld [%sp+2259],%l5 1553 1554 sllx %l0,32,%g5 1555 add %g4,%g2,%g2 1556 ld [%sp+2311],%l0 1557 or %l1,%g5,%g5 1558 add %g3,%g2,%g2 ! +=X[24+9] 1559 ld [%sp+2315],%l1 1560 add %g5,%g2,%g2 ! +=X[24] 1561 stx %g2,[%sp+2303] 1562 add %o7,%g2,%g2 1563 srlx %o4,14,%o7 !! 24 1564 xor %o5,%g1,%g5 1565 sllx %o4,23,%g4 1566 and %o4,%g5,%g5 1567 srlx %o4,18,%g3 1568 xor %g4,%o7,%o7 1569 sllx %o4,46,%g4 1570 xor %g3,%o7,%o7 1571 srlx %o4,41,%g3 1572 xor %g4,%o7,%o7 1573 sllx %o4,50,%g4 1574 xor %g3,%o7,%o7 1575 xor %g1,%g5,%g5 ! Ch(e,f,g) 1576 xor %g4,%o7,%g3 ! Sigma1(e) 1577 1578 srlx %o0,28,%o7 1579 add %g5,%g2,%g2 1580 ldx [%i3+192],%g5 ! K[24] 1581 sllx %o0,25,%g4 1582 add %g3,%g2,%g2 1583 srlx %o0,34,%g3 1584 xor %g4,%o7,%o7 1585 sllx %o0,30,%g4 1586 xor %g3,%o7,%o7 1587 srlx %o0,39,%g3 1588 xor %g4,%o7,%o7 1589 sllx %o0,36,%g4 1590 xor %g3,%o7,%o7 1591 xor %g4,%o7,%o7 ! Sigma0(a) 1592 1593 or %o0,%o1,%g3 1594 and %o0,%o1,%g4 1595 and %o2,%g3,%g3 1596 or %g3,%g4,%g4 ! Maj(a,b,c) 1597 add %g5,%g2,%g2 ! +=K[24] 1598 add %g4,%o7,%o7 1599 1600 add %g2,%o3,%o3 1601 add %g2,%o7,%o7 1602 sllx %l2,32,%g3 !! Xupdate(25) 1603 or %l3,%g3,%g3 1604 1605 srlx %g3,7,%g2 1606 ld [%sp+2327],%l2 1607 sllx %g3,56,%g4 1608 ld [%sp+2331],%l3 1609 srlx %g3,1,%g3 1610 xor %g4,%g2,%g2 1611 sllx %g4,7,%g4 1612 xor %g3,%g2,%g2 1613 srlx %g3,7,%g3 1614 xor %g4,%g2,%g2 1615 sllx %l6,32,%g5 1616 xor %g3,%g2,%g2 ! sigma0(X[25+1]) 1617 or %l7,%g5,%g5 1618 1619 srlx %g5,6,%g4 1620 ld [%sp+2303],%l6 1621 sllx %g5,3,%g3 1622 ld [%sp+2307],%l7 1623 srlx %g5,19,%g5 1624 xor %g3,%g4,%g4 1625 sllx %g3,42,%g3 1626 xor %g5,%g4,%g4 1627 srlx %g5,42,%g5 1628 xor %g3,%g4,%g4 1629 sllx %l4,32,%g3 1630 xor %g5,%g4,%g4 ! sigma1(X[25+14]) 1631 ld [%sp+2263],%l4 1632 or %l5,%g3,%g3 1633 ld [%sp+2267],%l5 1634 1635 sllx %l0,32,%g5 1636 add %g4,%g2,%g2 1637 ld [%sp+2319],%l0 1638 or %l1,%g5,%g5 1639 add %g3,%g2,%g2 ! +=X[25+9] 1640 ld [%sp+2323],%l1 1641 add %g5,%g2,%g2 ! +=X[25] 1642 stx %g2,[%sp+2311] 1643 add %g1,%g2,%g2 1644 srlx %o3,14,%g1 !! 25 1645 xor %o4,%o5,%g5 1646 sllx %o3,23,%g4 1647 and %o3,%g5,%g5 1648 srlx %o3,18,%g3 1649 xor %g4,%g1,%g1 1650 sllx %o3,46,%g4 1651 xor %g3,%g1,%g1 1652 srlx %o3,41,%g3 1653 xor %g4,%g1,%g1 1654 sllx %o3,50,%g4 1655 xor %g3,%g1,%g1 1656 xor %o5,%g5,%g5 ! Ch(e,f,g) 1657 xor %g4,%g1,%g3 ! Sigma1(e) 1658 1659 srlx %o7,28,%g1 1660 add %g5,%g2,%g2 1661 ldx [%i3+200],%g5 ! K[25] 1662 sllx %o7,25,%g4 1663 add %g3,%g2,%g2 1664 srlx %o7,34,%g3 1665 xor %g4,%g1,%g1 1666 sllx %o7,30,%g4 1667 xor %g3,%g1,%g1 1668 srlx %o7,39,%g3 1669 xor %g4,%g1,%g1 1670 sllx %o7,36,%g4 1671 xor %g3,%g1,%g1 1672 xor %g4,%g1,%g1 ! Sigma0(a) 1673 1674 or %o7,%o0,%g3 1675 and %o7,%o0,%g4 1676 and %o1,%g3,%g3 1677 or %g3,%g4,%g4 ! Maj(a,b,c) 1678 add %g5,%g2,%g2 ! +=K[25] 1679 add %g4,%g1,%g1 1680 1681 add %g2,%o2,%o2 1682 add %g2,%g1,%g1 1683 sllx %l2,32,%g3 !! Xupdate(26) 1684 or %l3,%g3,%g3 1685 1686 srlx %g3,7,%g2 1687 ld [%sp+2335],%l2 1688 sllx %g3,56,%g4 1689 ld [%sp+2339],%l3 1690 srlx %g3,1,%g3 1691 xor %g4,%g2,%g2 1692 sllx %g4,7,%g4 1693 xor %g3,%g2,%g2 1694 srlx %g3,7,%g3 1695 xor %g4,%g2,%g2 1696 sllx %l6,32,%g5 1697 xor %g3,%g2,%g2 ! sigma0(X[26+1]) 1698 or %l7,%g5,%g5 1699 1700 srlx %g5,6,%g4 1701 ld [%sp+2311],%l6 1702 sllx %g5,3,%g3 1703 ld [%sp+2315],%l7 1704 srlx %g5,19,%g5 1705 xor %g3,%g4,%g4 1706 sllx %g3,42,%g3 1707 xor %g5,%g4,%g4 1708 srlx %g5,42,%g5 1709 xor %g3,%g4,%g4 1710 sllx %l4,32,%g3 1711 xor %g5,%g4,%g4 ! sigma1(X[26+14]) 1712 ld [%sp+2271],%l4 1713 or %l5,%g3,%g3 1714 ld [%sp+2275],%l5 1715 1716 sllx %l0,32,%g5 1717 add %g4,%g2,%g2 1718 ld [%sp+2327],%l0 1719 or %l1,%g5,%g5 1720 add %g3,%g2,%g2 ! +=X[26+9] 1721 ld [%sp+2331],%l1 1722 add %g5,%g2,%g2 ! +=X[26] 1723 stx %g2,[%sp+2319] 1724 add %o5,%g2,%g2 1725 srlx %o2,14,%o5 !! 26 1726 xor %o3,%o4,%g5 1727 sllx %o2,23,%g4 1728 and %o2,%g5,%g5 1729 srlx %o2,18,%g3 1730 xor %g4,%o5,%o5 1731 sllx %o2,46,%g4 1732 xor %g3,%o5,%o5 1733 srlx %o2,41,%g3 1734 xor %g4,%o5,%o5 1735 sllx %o2,50,%g4 1736 xor %g3,%o5,%o5 1737 xor %o4,%g5,%g5 ! Ch(e,f,g) 1738 xor %g4,%o5,%g3 ! Sigma1(e) 1739 1740 srlx %g1,28,%o5 1741 add %g5,%g2,%g2 1742 ldx [%i3+208],%g5 ! K[26] 1743 sllx %g1,25,%g4 1744 add %g3,%g2,%g2 1745 srlx %g1,34,%g3 1746 xor %g4,%o5,%o5 1747 sllx %g1,30,%g4 1748 xor %g3,%o5,%o5 1749 srlx %g1,39,%g3 1750 xor %g4,%o5,%o5 1751 sllx %g1,36,%g4 1752 xor %g3,%o5,%o5 1753 xor %g4,%o5,%o5 ! Sigma0(a) 1754 1755 or %g1,%o7,%g3 1756 and %g1,%o7,%g4 1757 and %o0,%g3,%g3 1758 or %g3,%g4,%g4 ! Maj(a,b,c) 1759 add %g5,%g2,%g2 ! +=K[26] 1760 add %g4,%o5,%o5 1761 1762 add %g2,%o1,%o1 1763 add %g2,%o5,%o5 1764 sllx %l2,32,%g3 !! Xupdate(27) 1765 or %l3,%g3,%g3 1766 1767 srlx %g3,7,%g2 1768 ld [%sp+2343],%l2 1769 sllx %g3,56,%g4 1770 ld [%sp+2347],%l3 1771 srlx %g3,1,%g3 1772 xor %g4,%g2,%g2 1773 sllx %g4,7,%g4 1774 xor %g3,%g2,%g2 1775 srlx %g3,7,%g3 1776 xor %g4,%g2,%g2 1777 sllx %l6,32,%g5 1778 xor %g3,%g2,%g2 ! sigma0(X[27+1]) 1779 or %l7,%g5,%g5 1780 1781 srlx %g5,6,%g4 1782 ld [%sp+2319],%l6 1783 sllx %g5,3,%g3 1784 ld [%sp+2323],%l7 1785 srlx %g5,19,%g5 1786 xor %g3,%g4,%g4 1787 sllx %g3,42,%g3 1788 xor %g5,%g4,%g4 1789 srlx %g5,42,%g5 1790 xor %g3,%g4,%g4 1791 sllx %l4,32,%g3 1792 xor %g5,%g4,%g4 ! sigma1(X[27+14]) 1793 ld [%sp+2279],%l4 1794 or %l5,%g3,%g3 1795 ld [%sp+2283],%l5 1796 1797 sllx %l0,32,%g5 1798 add %g4,%g2,%g2 1799 ld [%sp+2335],%l0 1800 or %l1,%g5,%g5 1801 add %g3,%g2,%g2 ! +=X[27+9] 1802 ld [%sp+2339],%l1 1803 add %g5,%g2,%g2 ! +=X[27] 1804 stx %g2,[%sp+2327] 1805 add %o4,%g2,%g2 1806 srlx %o1,14,%o4 !! 27 1807 xor %o2,%o3,%g5 1808 sllx %o1,23,%g4 1809 and %o1,%g5,%g5 1810 srlx %o1,18,%g3 1811 xor %g4,%o4,%o4 1812 sllx %o1,46,%g4 1813 xor %g3,%o4,%o4 1814 srlx %o1,41,%g3 1815 xor %g4,%o4,%o4 1816 sllx %o1,50,%g4 1817 xor %g3,%o4,%o4 1818 xor %o3,%g5,%g5 ! Ch(e,f,g) 1819 xor %g4,%o4,%g3 ! Sigma1(e) 1820 1821 srlx %o5,28,%o4 1822 add %g5,%g2,%g2 1823 ldx [%i3+216],%g5 ! K[27] 1824 sllx %o5,25,%g4 1825 add %g3,%g2,%g2 1826 srlx %o5,34,%g3 1827 xor %g4,%o4,%o4 1828 sllx %o5,30,%g4 1829 xor %g3,%o4,%o4 1830 srlx %o5,39,%g3 1831 xor %g4,%o4,%o4 1832 sllx %o5,36,%g4 1833 xor %g3,%o4,%o4 1834 xor %g4,%o4,%o4 ! Sigma0(a) 1835 1836 or %o5,%g1,%g3 1837 and %o5,%g1,%g4 1838 and %o7,%g3,%g3 1839 or %g3,%g4,%g4 ! Maj(a,b,c) 1840 add %g5,%g2,%g2 ! +=K[27] 1841 add %g4,%o4,%o4 1842 1843 add %g2,%o0,%o0 1844 add %g2,%o4,%o4 1845 sllx %l2,32,%g3 !! Xupdate(28) 1846 or %l3,%g3,%g3 1847 1848 srlx %g3,7,%g2 1849 ld [%sp+2351],%l2 1850 sllx %g3,56,%g4 1851 ld [%sp+2355],%l3 1852 srlx %g3,1,%g3 1853 xor %g4,%g2,%g2 1854 sllx %g4,7,%g4 1855 xor %g3,%g2,%g2 1856 srlx %g3,7,%g3 1857 xor %g4,%g2,%g2 1858 sllx %l6,32,%g5 1859 xor %g3,%g2,%g2 ! sigma0(X[28+1]) 1860 or %l7,%g5,%g5 1861 1862 srlx %g5,6,%g4 1863 ld [%sp+2327],%l6 1864 sllx %g5,3,%g3 1865 ld [%sp+2331],%l7 1866 srlx %g5,19,%g5 1867 xor %g3,%g4,%g4 1868 sllx %g3,42,%g3 1869 xor %g5,%g4,%g4 1870 srlx %g5,42,%g5 1871 xor %g3,%g4,%g4 1872 sllx %l4,32,%g3 1873 xor %g5,%g4,%g4 ! sigma1(X[28+14]) 1874 ld [%sp+2287],%l4 1875 or %l5,%g3,%g3 1876 ld [%sp+2291],%l5 1877 1878 sllx %l0,32,%g5 1879 add %g4,%g2,%g2 1880 ld [%sp+2343],%l0 1881 or %l1,%g5,%g5 1882 add %g3,%g2,%g2 ! +=X[28+9] 1883 ld [%sp+2347],%l1 1884 add %g5,%g2,%g2 ! +=X[28] 1885 stx %g2,[%sp+2335] 1886 add %o3,%g2,%g2 1887 srlx %o0,14,%o3 !! 28 1888 xor %o1,%o2,%g5 1889 sllx %o0,23,%g4 1890 and %o0,%g5,%g5 1891 srlx %o0,18,%g3 1892 xor %g4,%o3,%o3 1893 sllx %o0,46,%g4 1894 xor %g3,%o3,%o3 1895 srlx %o0,41,%g3 1896 xor %g4,%o3,%o3 1897 sllx %o0,50,%g4 1898 xor %g3,%o3,%o3 1899 xor %o2,%g5,%g5 ! Ch(e,f,g) 1900 xor %g4,%o3,%g3 ! Sigma1(e) 1901 1902 srlx %o4,28,%o3 1903 add %g5,%g2,%g2 1904 ldx [%i3+224],%g5 ! K[28] 1905 sllx %o4,25,%g4 1906 add %g3,%g2,%g2 1907 srlx %o4,34,%g3 1908 xor %g4,%o3,%o3 1909 sllx %o4,30,%g4 1910 xor %g3,%o3,%o3 1911 srlx %o4,39,%g3 1912 xor %g4,%o3,%o3 1913 sllx %o4,36,%g4 1914 xor %g3,%o3,%o3 1915 xor %g4,%o3,%o3 ! Sigma0(a) 1916 1917 or %o4,%o5,%g3 1918 and %o4,%o5,%g4 1919 and %g1,%g3,%g3 1920 or %g3,%g4,%g4 ! Maj(a,b,c) 1921 add %g5,%g2,%g2 ! +=K[28] 1922 add %g4,%o3,%o3 1923 1924 add %g2,%o7,%o7 1925 add %g2,%o3,%o3 1926 sllx %l2,32,%g3 !! Xupdate(29) 1927 or %l3,%g3,%g3 1928 1929 srlx %g3,7,%g2 1930 ld [%sp+2359],%l2 1931 sllx %g3,56,%g4 1932 ld [%sp+2363],%l3 1933 srlx %g3,1,%g3 1934 xor %g4,%g2,%g2 1935 sllx %g4,7,%g4 1936 xor %g3,%g2,%g2 1937 srlx %g3,7,%g3 1938 xor %g4,%g2,%g2 1939 sllx %l6,32,%g5 1940 xor %g3,%g2,%g2 ! sigma0(X[29+1]) 1941 or %l7,%g5,%g5 1942 1943 srlx %g5,6,%g4 1944 ld [%sp+2335],%l6 1945 sllx %g5,3,%g3 1946 ld [%sp+2339],%l7 1947 srlx %g5,19,%g5 1948 xor %g3,%g4,%g4 1949 sllx %g3,42,%g3 1950 xor %g5,%g4,%g4 1951 srlx %g5,42,%g5 1952 xor %g3,%g4,%g4 1953 sllx %l4,32,%g3 1954 xor %g5,%g4,%g4 ! sigma1(X[29+14]) 1955 ld [%sp+2295],%l4 1956 or %l5,%g3,%g3 1957 ld [%sp+2299],%l5 1958 1959 sllx %l0,32,%g5 1960 add %g4,%g2,%g2 1961 ld [%sp+2351],%l0 1962 or %l1,%g5,%g5 1963 add %g3,%g2,%g2 ! +=X[29+9] 1964 ld [%sp+2355],%l1 1965 add %g5,%g2,%g2 ! +=X[29] 1966 stx %g2,[%sp+2343] 1967 add %o2,%g2,%g2 1968 srlx %o7,14,%o2 !! 29 1969 xor %o0,%o1,%g5 1970 sllx %o7,23,%g4 1971 and %o7,%g5,%g5 1972 srlx %o7,18,%g3 1973 xor %g4,%o2,%o2 1974 sllx %o7,46,%g4 1975 xor %g3,%o2,%o2 1976 srlx %o7,41,%g3 1977 xor %g4,%o2,%o2 1978 sllx %o7,50,%g4 1979 xor %g3,%o2,%o2 1980 xor %o1,%g5,%g5 ! Ch(e,f,g) 1981 xor %g4,%o2,%g3 ! Sigma1(e) 1982 1983 srlx %o3,28,%o2 1984 add %g5,%g2,%g2 1985 ldx [%i3+232],%g5 ! K[29] 1986 sllx %o3,25,%g4 1987 add %g3,%g2,%g2 1988 srlx %o3,34,%g3 1989 xor %g4,%o2,%o2 1990 sllx %o3,30,%g4 1991 xor %g3,%o2,%o2 1992 srlx %o3,39,%g3 1993 xor %g4,%o2,%o2 1994 sllx %o3,36,%g4 1995 xor %g3,%o2,%o2 1996 xor %g4,%o2,%o2 ! Sigma0(a) 1997 1998 or %o3,%o4,%g3 1999 and %o3,%o4,%g4 2000 and %o5,%g3,%g3 2001 or %g3,%g4,%g4 ! Maj(a,b,c) 2002 add %g5,%g2,%g2 ! +=K[29] 2003 add %g4,%o2,%o2 2004 2005 add %g2,%g1,%g1 2006 add %g2,%o2,%o2 2007 sllx %l2,32,%g3 !! Xupdate(30) 2008 or %l3,%g3,%g3 2009 2010 srlx %g3,7,%g2 2011 ld [%sp+2239],%l2 2012 sllx %g3,56,%g4 2013 ld [%sp+2243],%l3 2014 srlx %g3,1,%g3 2015 xor %g4,%g2,%g2 2016 sllx %g4,7,%g4 2017 xor %g3,%g2,%g2 2018 srlx %g3,7,%g3 2019 xor %g4,%g2,%g2 2020 sllx %l6,32,%g5 2021 xor %g3,%g2,%g2 ! sigma0(X[30+1]) 2022 or %l7,%g5,%g5 2023 2024 srlx %g5,6,%g4 2025 ld [%sp+2343],%l6 2026 sllx %g5,3,%g3 2027 ld [%sp+2347],%l7 2028 srlx %g5,19,%g5 2029 xor %g3,%g4,%g4 2030 sllx %g3,42,%g3 2031 xor %g5,%g4,%g4 2032 srlx %g5,42,%g5 2033 xor %g3,%g4,%g4 2034 sllx %l4,32,%g3 2035 xor %g5,%g4,%g4 ! sigma1(X[30+14]) 2036 ld [%sp+2303],%l4 2037 or %l5,%g3,%g3 2038 ld [%sp+2307],%l5 2039 2040 sllx %l0,32,%g5 2041 add %g4,%g2,%g2 2042 ld [%sp+2359],%l0 2043 or %l1,%g5,%g5 2044 add %g3,%g2,%g2 ! +=X[30+9] 2045 ld [%sp+2363],%l1 2046 add %g5,%g2,%g2 ! +=X[30] 2047 stx %g2,[%sp+2351] 2048 add %o1,%g2,%g2 2049 srlx %g1,14,%o1 !! 30 2050 xor %o7,%o0,%g5 2051 sllx %g1,23,%g4 2052 and %g1,%g5,%g5 2053 srlx %g1,18,%g3 2054 xor %g4,%o1,%o1 2055 sllx %g1,46,%g4 2056 xor %g3,%o1,%o1 2057 srlx %g1,41,%g3 2058 xor %g4,%o1,%o1 2059 sllx %g1,50,%g4 2060 xor %g3,%o1,%o1 2061 xor %o0,%g5,%g5 ! Ch(e,f,g) 2062 xor %g4,%o1,%g3 ! Sigma1(e) 2063 2064 srlx %o2,28,%o1 2065 add %g5,%g2,%g2 2066 ldx [%i3+240],%g5 ! K[30] 2067 sllx %o2,25,%g4 2068 add %g3,%g2,%g2 2069 srlx %o2,34,%g3 2070 xor %g4,%o1,%o1 2071 sllx %o2,30,%g4 2072 xor %g3,%o1,%o1 2073 srlx %o2,39,%g3 2074 xor %g4,%o1,%o1 2075 sllx %o2,36,%g4 2076 xor %g3,%o1,%o1 2077 xor %g4,%o1,%o1 ! Sigma0(a) 2078 2079 or %o2,%o3,%g3 2080 and %o2,%o3,%g4 2081 and %o4,%g3,%g3 2082 or %g3,%g4,%g4 ! Maj(a,b,c) 2083 add %g5,%g2,%g2 ! +=K[30] 2084 add %g4,%o1,%o1 2085 2086 add %g2,%o5,%o5 2087 add %g2,%o1,%o1 2088 sllx %l2,32,%g3 !! Xupdate(31) 2089 or %l3,%g3,%g3 2090 2091 srlx %g3,7,%g2 2092 ld [%sp+2247],%l2 2093 sllx %g3,56,%g4 2094 ld [%sp+2251],%l3 2095 srlx %g3,1,%g3 2096 xor %g4,%g2,%g2 2097 sllx %g4,7,%g4 2098 xor %g3,%g2,%g2 2099 srlx %g3,7,%g3 2100 xor %g4,%g2,%g2 2101 sllx %l6,32,%g5 2102 xor %g3,%g2,%g2 ! sigma0(X[31+1]) 2103 or %l7,%g5,%g5 2104 2105 srlx %g5,6,%g4 2106 ld [%sp+2351],%l6 2107 sllx %g5,3,%g3 2108 ld [%sp+2355],%l7 2109 srlx %g5,19,%g5 2110 xor %g3,%g4,%g4 2111 sllx %g3,42,%g3 2112 xor %g5,%g4,%g4 2113 srlx %g5,42,%g5 2114 xor %g3,%g4,%g4 2115 sllx %l4,32,%g3 2116 xor %g5,%g4,%g4 ! sigma1(X[31+14]) 2117 ld [%sp+2311],%l4 2118 or %l5,%g3,%g3 2119 ld [%sp+2315],%l5 2120 2121 sllx %l0,32,%g5 2122 add %g4,%g2,%g2 2123 ld [%sp+2239],%l0 2124 or %l1,%g5,%g5 2125 add %g3,%g2,%g2 ! +=X[31+9] 2126 ld [%sp+2243],%l1 2127 add %g5,%g2,%g2 ! +=X[31] 2128 stx %g2,[%sp+2359] 2129 add %o0,%g2,%g2 2130 srlx %o5,14,%o0 !! 31 2131 xor %g1,%o7,%g5 2132 sllx %o5,23,%g4 2133 and %o5,%g5,%g5 2134 srlx %o5,18,%g3 2135 xor %g4,%o0,%o0 2136 sllx %o5,46,%g4 2137 xor %g3,%o0,%o0 2138 srlx %o5,41,%g3 2139 xor %g4,%o0,%o0 2140 sllx %o5,50,%g4 2141 xor %g3,%o0,%o0 2142 xor %o7,%g5,%g5 ! Ch(e,f,g) 2143 xor %g4,%o0,%g3 ! Sigma1(e) 2144 2145 srlx %o1,28,%o0 2146 add %g5,%g2,%g2 2147 ldx [%i3+248],%g5 ! K[31] 2148 sllx %o1,25,%g4 2149 add %g3,%g2,%g2 2150 srlx %o1,34,%g3 2151 xor %g4,%o0,%o0 2152 sllx %o1,30,%g4 2153 xor %g3,%o0,%o0 2154 srlx %o1,39,%g3 2155 xor %g4,%o0,%o0 2156 sllx %o1,36,%g4 2157 xor %g3,%o0,%o0 2158 xor %g4,%o0,%o0 ! Sigma0(a) 2159 2160 or %o1,%o2,%g3 2161 and %o1,%o2,%g4 2162 and %o3,%g3,%g3 2163 or %g3,%g4,%g4 ! Maj(a,b,c) 2164 add %g5,%g2,%g2 ! +=K[31] 2165 add %g4,%o0,%o0 2166 2167 add %g2,%o4,%o4 2168 add %g2,%o0,%o0 2169 and %g5,0xfff,%g5 2170 cmp %g5,2071 2171 bne .L16_xx 2172 add %i3,128,%i3 ! Ktbl+=16 2173 2174 ld [%i0+0],%l0 2175 ld [%i0+4],%l1 2176 ld [%i0+8],%l2 2177 ld [%i0+12],%l3 2178 ld [%i0+16],%l4 2179 ld [%i0+20],%l5 2180 ld [%i0+24],%l6 2181 2182 sllx %l0,32,%g3 2183 ld [%i0+28],%l7 2184 sllx %l2,32,%g4 2185 or %l1,%g3,%g3 2186 or %l3,%g4,%g4 2187 add %g3,%o0,%o0 2188 add %g4,%o1,%o1 2189 stx %o0,[%i0+0] 2190 sllx %l4,32,%g5 2191 stx %o1,[%i0+8] 2192 sllx %l6,32,%g2 2193 or %l5,%g5,%g5 2194 or %l7,%g2,%g2 2195 add %g5,%o2,%o2 2196 stx %o2,[%i0+16] 2197 add %g2,%o3,%o3 2198 stx %o3,[%i0+24] 2199 2200 ld [%i0+32],%l0 2201 ld [%i0+36],%l1 2202 ld [%i0+40],%l2 2203 ld [%i0+44],%l3 2204 ld [%i0+48],%l4 2205 ld [%i0+52],%l5 2206 ld [%i0+56],%l6 2207 2208 sllx %l0,32,%g3 2209 ld [%i0+60],%l7 2210 sllx %l2,32,%g4 2211 or %l1,%g3,%g3 2212 or %l3,%g4,%g4 2213 add %g3,%o4,%o4 2214 add %g4,%o5,%o5 2215 stx %o4,[%i0+32] 2216 sllx %l4,32,%g5 2217 stx %o5,[%i0+40] 2218 sllx %l6,32,%g2 2219 or %l5,%g5,%g5 2220 or %l7,%g2,%g2 2221 add %g5,%g1,%g1 2222 stx %g1,[%i0+48] 2223 add %g2,%o7,%o7 2224 stx %o7,[%i0+56] 2225 add %i1,128,%i1 ! advance inp 2226 cmp %i1,%i2 2227 bne %xcc,.Lloop 2228 sub %i3,512,%i3 ! rewind Ktbl 2229 2230 ret 2231 restore 2232.type sha512_block_data_order,#function 2233.size sha512_block_data_order,(.-sha512_block_data_order) 2234.asciz "SHA512 block transform for SPARCv9, CRYPTOGAMS by <appro@openssl.org>" 2235.align 4 2236