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