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