1 #if defined(__i386__) 2 .file "sha512-586.S" 3 .text 4 .globl _sha512_block_data_order 5 .private_extern _sha512_block_data_order 6 .align 4 7 _sha512_block_data_order: 8 L_sha512_block_data_order_begin: 9 pushl %ebp 10 pushl %ebx 11 pushl %esi 12 pushl %edi 13 movl 20(%esp),%esi 14 movl 24(%esp),%edi 15 movl 28(%esp),%eax 16 movl %esp,%ebx 17 call L000pic_point 18 L000pic_point: 19 popl %ebp 20 leal L001K512-L000pic_point(%ebp),%ebp 21 subl $16,%esp 22 andl $-64,%esp 23 shll $7,%eax 24 addl %edi,%eax 25 movl %esi,(%esp) 26 movl %edi,4(%esp) 27 movl %eax,8(%esp) 28 movl %ebx,12(%esp) 29 .align 4,0x90 30 L002loop_x86: 31 movl (%edi),%eax 32 movl 4(%edi),%ebx 33 movl 8(%edi),%ecx 34 movl 12(%edi),%edx 35 bswap %eax 36 bswap %ebx 37 bswap %ecx 38 bswap %edx 39 pushl %eax 40 pushl %ebx 41 pushl %ecx 42 pushl %edx 43 movl 16(%edi),%eax 44 movl 20(%edi),%ebx 45 movl 24(%edi),%ecx 46 movl 28(%edi),%edx 47 bswap %eax 48 bswap %ebx 49 bswap %ecx 50 bswap %edx 51 pushl %eax 52 pushl %ebx 53 pushl %ecx 54 pushl %edx 55 movl 32(%edi),%eax 56 movl 36(%edi),%ebx 57 movl 40(%edi),%ecx 58 movl 44(%edi),%edx 59 bswap %eax 60 bswap %ebx 61 bswap %ecx 62 bswap %edx 63 pushl %eax 64 pushl %ebx 65 pushl %ecx 66 pushl %edx 67 movl 48(%edi),%eax 68 movl 52(%edi),%ebx 69 movl 56(%edi),%ecx 70 movl 60(%edi),%edx 71 bswap %eax 72 bswap %ebx 73 bswap %ecx 74 bswap %edx 75 pushl %eax 76 pushl %ebx 77 pushl %ecx 78 pushl %edx 79 movl 64(%edi),%eax 80 movl 68(%edi),%ebx 81 movl 72(%edi),%ecx 82 movl 76(%edi),%edx 83 bswap %eax 84 bswap %ebx 85 bswap %ecx 86 bswap %edx 87 pushl %eax 88 pushl %ebx 89 pushl %ecx 90 pushl %edx 91 movl 80(%edi),%eax 92 movl 84(%edi),%ebx 93 movl 88(%edi),%ecx 94 movl 92(%edi),%edx 95 bswap %eax 96 bswap %ebx 97 bswap %ecx 98 bswap %edx 99 pushl %eax 100 pushl %ebx 101 pushl %ecx 102 pushl %edx 103 movl 96(%edi),%eax 104 movl 100(%edi),%ebx 105 movl 104(%edi),%ecx 106 movl 108(%edi),%edx 107 bswap %eax 108 bswap %ebx 109 bswap %ecx 110 bswap %edx 111 pushl %eax 112 pushl %ebx 113 pushl %ecx 114 pushl %edx 115 movl 112(%edi),%eax 116 movl 116(%edi),%ebx 117 movl 120(%edi),%ecx 118 movl 124(%edi),%edx 119 bswap %eax 120 bswap %ebx 121 bswap %ecx 122 bswap %edx 123 pushl %eax 124 pushl %ebx 125 pushl %ecx 126 pushl %edx 127 addl $128,%edi 128 subl $72,%esp 129 movl %edi,204(%esp) 130 leal 8(%esp),%edi 131 movl $16,%ecx 132 .long 2784229001 133 .align 4,0x90 134 L00300_15_x86: 135 movl 40(%esp),%ecx 136 movl 44(%esp),%edx 137 movl %ecx,%esi 138 shrl $9,%ecx 139 movl %edx,%edi 140 shrl $9,%edx 141 movl %ecx,%ebx 142 shll $14,%esi 143 movl %edx,%eax 144 shll $14,%edi 145 xorl %esi,%ebx 146 shrl $5,%ecx 147 xorl %edi,%eax 148 shrl $5,%edx 149 xorl %ecx,%eax 150 shll $4,%esi 151 xorl %edx,%ebx 152 shll $4,%edi 153 xorl %esi,%ebx 154 shrl $4,%ecx 155 xorl %edi,%eax 156 shrl $4,%edx 157 xorl %ecx,%eax 158 shll $5,%esi 159 xorl %edx,%ebx 160 shll $5,%edi 161 xorl %esi,%eax 162 xorl %edi,%ebx 163 movl 48(%esp),%ecx 164 movl 52(%esp),%edx 165 movl 56(%esp),%esi 166 movl 60(%esp),%edi 167 addl 64(%esp),%eax 168 adcl 68(%esp),%ebx 169 xorl %esi,%ecx 170 xorl %edi,%edx 171 andl 40(%esp),%ecx 172 andl 44(%esp),%edx 173 addl 192(%esp),%eax 174 adcl 196(%esp),%ebx 175 xorl %esi,%ecx 176 xorl %edi,%edx 177 movl (%ebp),%esi 178 movl 4(%ebp),%edi 179 addl %ecx,%eax 180 adcl %edx,%ebx 181 movl 32(%esp),%ecx 182 movl 36(%esp),%edx 183 addl %esi,%eax 184 adcl %edi,%ebx 185 movl %eax,(%esp) 186 movl %ebx,4(%esp) 187 addl %ecx,%eax 188 adcl %edx,%ebx 189 movl 8(%esp),%ecx 190 movl 12(%esp),%edx 191 movl %eax,32(%esp) 192 movl %ebx,36(%esp) 193 movl %ecx,%esi 194 shrl $2,%ecx 195 movl %edx,%edi 196 shrl $2,%edx 197 movl %ecx,%ebx 198 shll $4,%esi 199 movl %edx,%eax 200 shll $4,%edi 201 xorl %esi,%ebx 202 shrl $5,%ecx 203 xorl %edi,%eax 204 shrl $5,%edx 205 xorl %ecx,%ebx 206 shll $21,%esi 207 xorl %edx,%eax 208 shll $21,%edi 209 xorl %esi,%eax 210 shrl $21,%ecx 211 xorl %edi,%ebx 212 shrl $21,%edx 213 xorl %ecx,%eax 214 shll $5,%esi 215 xorl %edx,%ebx 216 shll $5,%edi 217 xorl %esi,%eax 218 xorl %edi,%ebx 219 movl 8(%esp),%ecx 220 movl 12(%esp),%edx 221 movl 16(%esp),%esi 222 movl 20(%esp),%edi 223 addl (%esp),%eax 224 adcl 4(%esp),%ebx 225 orl %esi,%ecx 226 orl %edi,%edx 227 andl 24(%esp),%ecx 228 andl 28(%esp),%edx 229 andl 8(%esp),%esi 230 andl 12(%esp),%edi 231 orl %esi,%ecx 232 orl %edi,%edx 233 addl %ecx,%eax 234 adcl %edx,%ebx 235 movl %eax,(%esp) 236 movl %ebx,4(%esp) 237 movb (%ebp),%dl 238 subl $8,%esp 239 leal 8(%ebp),%ebp 240 cmpb $148,%dl 241 jne L00300_15_x86 242 .align 4,0x90 243 L00416_79_x86: 244 movl 312(%esp),%ecx 245 movl 316(%esp),%edx 246 movl %ecx,%esi 247 shrl $1,%ecx 248 movl %edx,%edi 249 shrl $1,%edx 250 movl %ecx,%eax 251 shll $24,%esi 252 movl %edx,%ebx 253 shll $24,%edi 254 xorl %esi,%ebx 255 shrl $6,%ecx 256 xorl %edi,%eax 257 shrl $6,%edx 258 xorl %ecx,%eax 259 shll $7,%esi 260 xorl %edx,%ebx 261 shll $1,%edi 262 xorl %esi,%ebx 263 shrl $1,%ecx 264 xorl %edi,%eax 265 shrl $1,%edx 266 xorl %ecx,%eax 267 shll $6,%edi 268 xorl %edx,%ebx 269 xorl %edi,%eax 270 movl %eax,(%esp) 271 movl %ebx,4(%esp) 272 movl 208(%esp),%ecx 273 movl 212(%esp),%edx 274 movl %ecx,%esi 275 shrl $6,%ecx 276 movl %edx,%edi 277 shrl $6,%edx 278 movl %ecx,%eax 279 shll $3,%esi 280 movl %edx,%ebx 281 shll $3,%edi 282 xorl %esi,%eax 283 shrl $13,%ecx 284 xorl %edi,%ebx 285 shrl $13,%edx 286 xorl %ecx,%eax 287 shll $10,%esi 288 xorl %edx,%ebx 289 shll $10,%edi 290 xorl %esi,%ebx 291 shrl $10,%ecx 292 xorl %edi,%eax 293 shrl $10,%edx 294 xorl %ecx,%ebx 295 shll $13,%edi 296 xorl %edx,%eax 297 xorl %edi,%eax 298 movl 320(%esp),%ecx 299 movl 324(%esp),%edx 300 addl (%esp),%eax 301 adcl 4(%esp),%ebx 302 movl 248(%esp),%esi 303 movl 252(%esp),%edi 304 addl %ecx,%eax 305 adcl %edx,%ebx 306 addl %esi,%eax 307 adcl %edi,%ebx 308 movl %eax,192(%esp) 309 movl %ebx,196(%esp) 310 movl 40(%esp),%ecx 311 movl 44(%esp),%edx 312 movl %ecx,%esi 313 shrl $9,%ecx 314 movl %edx,%edi 315 shrl $9,%edx 316 movl %ecx,%ebx 317 shll $14,%esi 318 movl %edx,%eax 319 shll $14,%edi 320 xorl %esi,%ebx 321 shrl $5,%ecx 322 xorl %edi,%eax 323 shrl $5,%edx 324 xorl %ecx,%eax 325 shll $4,%esi 326 xorl %edx,%ebx 327 shll $4,%edi 328 xorl %esi,%ebx 329 shrl $4,%ecx 330 xorl %edi,%eax 331 shrl $4,%edx 332 xorl %ecx,%eax 333 shll $5,%esi 334 xorl %edx,%ebx 335 shll $5,%edi 336 xorl %esi,%eax 337 xorl %edi,%ebx 338 movl 48(%esp),%ecx 339 movl 52(%esp),%edx 340 movl 56(%esp),%esi 341 movl 60(%esp),%edi 342 addl 64(%esp),%eax 343 adcl 68(%esp),%ebx 344 xorl %esi,%ecx 345 xorl %edi,%edx 346 andl 40(%esp),%ecx 347 andl 44(%esp),%edx 348 addl 192(%esp),%eax 349 adcl 196(%esp),%ebx 350 xorl %esi,%ecx 351 xorl %edi,%edx 352 movl (%ebp),%esi 353 movl 4(%ebp),%edi 354 addl %ecx,%eax 355 adcl %edx,%ebx 356 movl 32(%esp),%ecx 357 movl 36(%esp),%edx 358 addl %esi,%eax 359 adcl %edi,%ebx 360 movl %eax,(%esp) 361 movl %ebx,4(%esp) 362 addl %ecx,%eax 363 adcl %edx,%ebx 364 movl 8(%esp),%ecx 365 movl 12(%esp),%edx 366 movl %eax,32(%esp) 367 movl %ebx,36(%esp) 368 movl %ecx,%esi 369 shrl $2,%ecx 370 movl %edx,%edi 371 shrl $2,%edx 372 movl %ecx,%ebx 373 shll $4,%esi 374 movl %edx,%eax 375 shll $4,%edi 376 xorl %esi,%ebx 377 shrl $5,%ecx 378 xorl %edi,%eax 379 shrl $5,%edx 380 xorl %ecx,%ebx 381 shll $21,%esi 382 xorl %edx,%eax 383 shll $21,%edi 384 xorl %esi,%eax 385 shrl $21,%ecx 386 xorl %edi,%ebx 387 shrl $21,%edx 388 xorl %ecx,%eax 389 shll $5,%esi 390 xorl %edx,%ebx 391 shll $5,%edi 392 xorl %esi,%eax 393 xorl %edi,%ebx 394 movl 8(%esp),%ecx 395 movl 12(%esp),%edx 396 movl 16(%esp),%esi 397 movl 20(%esp),%edi 398 addl (%esp),%eax 399 adcl 4(%esp),%ebx 400 orl %esi,%ecx 401 orl %edi,%edx 402 andl 24(%esp),%ecx 403 andl 28(%esp),%edx 404 andl 8(%esp),%esi 405 andl 12(%esp),%edi 406 orl %esi,%ecx 407 orl %edi,%edx 408 addl %ecx,%eax 409 adcl %edx,%ebx 410 movl %eax,(%esp) 411 movl %ebx,4(%esp) 412 movb (%ebp),%dl 413 subl $8,%esp 414 leal 8(%ebp),%ebp 415 cmpb $23,%dl 416 jne L00416_79_x86 417 movl 840(%esp),%esi 418 movl 844(%esp),%edi 419 movl (%esi),%eax 420 movl 4(%esi),%ebx 421 movl 8(%esi),%ecx 422 movl 12(%esi),%edx 423 addl 8(%esp),%eax 424 adcl 12(%esp),%ebx 425 movl %eax,(%esi) 426 movl %ebx,4(%esi) 427 addl 16(%esp),%ecx 428 adcl 20(%esp),%edx 429 movl %ecx,8(%esi) 430 movl %edx,12(%esi) 431 movl 16(%esi),%eax 432 movl 20(%esi),%ebx 433 movl 24(%esi),%ecx 434 movl 28(%esi),%edx 435 addl 24(%esp),%eax 436 adcl 28(%esp),%ebx 437 movl %eax,16(%esi) 438 movl %ebx,20(%esi) 439 addl 32(%esp),%ecx 440 adcl 36(%esp),%edx 441 movl %ecx,24(%esi) 442 movl %edx,28(%esi) 443 movl 32(%esi),%eax 444 movl 36(%esi),%ebx 445 movl 40(%esi),%ecx 446 movl 44(%esi),%edx 447 addl 40(%esp),%eax 448 adcl 44(%esp),%ebx 449 movl %eax,32(%esi) 450 movl %ebx,36(%esi) 451 addl 48(%esp),%ecx 452 adcl 52(%esp),%edx 453 movl %ecx,40(%esi) 454 movl %edx,44(%esi) 455 movl 48(%esi),%eax 456 movl 52(%esi),%ebx 457 movl 56(%esi),%ecx 458 movl 60(%esi),%edx 459 addl 56(%esp),%eax 460 adcl 60(%esp),%ebx 461 movl %eax,48(%esi) 462 movl %ebx,52(%esi) 463 addl 64(%esp),%ecx 464 adcl 68(%esp),%edx 465 movl %ecx,56(%esi) 466 movl %edx,60(%esi) 467 addl $840,%esp 468 subl $640,%ebp 469 cmpl 8(%esp),%edi 470 jb L002loop_x86 471 movl 12(%esp),%esp 472 popl %edi 473 popl %esi 474 popl %ebx 475 popl %ebp 476 ret 477 .align 6,0x90 478 L001K512: 479 .long 3609767458,1116352408 480 .long 602891725,1899447441 481 .long 3964484399,3049323471 482 .long 2173295548,3921009573 483 .long 4081628472,961987163 484 .long 3053834265,1508970993 485 .long 2937671579,2453635748 486 .long 3664609560,2870763221 487 .long 2734883394,3624381080 488 .long 1164996542,310598401 489 .long 1323610764,607225278 490 .long 3590304994,1426881987 491 .long 4068182383,1925078388 492 .long 991336113,2162078206 493 .long 633803317,2614888103 494 .long 3479774868,3248222580 495 .long 2666613458,3835390401 496 .long 944711139,4022224774 497 .long 2341262773,264347078 498 .long 2007800933,604807628 499 .long 1495990901,770255983 500 .long 1856431235,1249150122 501 .long 3175218132,1555081692 502 .long 2198950837,1996064986 503 .long 3999719339,2554220882 504 .long 766784016,2821834349 505 .long 2566594879,2952996808 506 .long 3203337956,3210313671 507 .long 1034457026,3336571891 508 .long 2466948901,3584528711 509 .long 3758326383,113926993 510 .long 168717936,338241895 511 .long 1188179964,666307205 512 .long 1546045734,773529912 513 .long 1522805485,1294757372 514 .long 2643833823,1396182291 515 .long 2343527390,1695183700 516 .long 1014477480,1986661051 517 .long 1206759142,2177026350 518 .long 344077627,2456956037 519 .long 1290863460,2730485921 520 .long 3158454273,2820302411 521 .long 3505952657,3259730800 522 .long 106217008,3345764771 523 .long 3606008344,3516065817 524 .long 1432725776,3600352804 525 .long 1467031594,4094571909 526 .long 851169720,275423344 527 .long 3100823752,430227734 528 .long 1363258195,506948616 529 .long 3750685593,659060556 530 .long 3785050280,883997877 531 .long 3318307427,958139571 532 .long 3812723403,1322822218 533 .long 2003034995,1537002063 534 .long 3602036899,1747873779 535 .long 1575990012,1955562222 536 .long 1125592928,2024104815 537 .long 2716904306,2227730452 538 .long 442776044,2361852424 539 .long 593698344,2428436474 540 .long 3733110249,2756734187 541 .long 2999351573,3204031479 542 .long 3815920427,3329325298 543 .long 3928383900,3391569614 544 .long 566280711,3515267271 545 .long 3454069534,3940187606 546 .long 4000239992,4118630271 547 .long 1914138554,116418474 548 .long 2731055270,174292421 549 .long 3203993006,289380356 550 .long 320620315,460393269 551 .long 587496836,685471733 552 .long 1086792851,852142971 553 .long 365543100,1017036298 554 .long 2618297676,1126000580 555 .long 3409855158,1288033470 556 .long 4234509866,1501505948 557 .long 987167468,1607167915 558 .long 1246189591,1816402316 559 .long 67438087,66051 560 .long 202182159,134810123 561 .byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97 562 .byte 110,115,102,111,114,109,32,102,111,114,32,120,56,54,44,32 563 .byte 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 564 .byte 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 565 .byte 62,0 566 #endif 567