1 %ifidn __OUTPUT_FORMAT__,obj
2 section code use32 class=code align=64
3 %elifidn __OUTPUT_FORMAT__,win32
4 %ifdef __YASM_VERSION_ID__
5 %if __YASM_VERSION_ID__ < 01010000h
6 %error yasm version 1.1.0 or later needed.
8 ; Yasm automatically includes .00 and complains about redefining it.
9 ; https://www.tortall.net/projects/yasm/manual/html/objfmt-win32-safeseh.html
13 section .text code align=64
17 global _sha512_block_data_order
19 _sha512_block_data_order:
20 L$_sha512_block_data_order_begin:
25 mov esi,DWORD [20+esp]
26 mov edi,DWORD [24+esp]
27 mov eax,DWORD [28+esp]
32 lea ebp,[(L$001K512-L$000pic_point)+ebp]
40 mov DWORD [12+esp],ebx
46 mov edx,DWORD [12+edi]
55 mov eax,DWORD [16+edi]
56 mov ebx,DWORD [20+edi]
57 mov ecx,DWORD [24+edi]
58 mov edx,DWORD [28+edi]
67 mov eax,DWORD [32+edi]
68 mov ebx,DWORD [36+edi]
69 mov ecx,DWORD [40+edi]
70 mov edx,DWORD [44+edi]
79 mov eax,DWORD [48+edi]
80 mov ebx,DWORD [52+edi]
81 mov ecx,DWORD [56+edi]
82 mov edx,DWORD [60+edi]
91 mov eax,DWORD [64+edi]
92 mov ebx,DWORD [68+edi]
93 mov ecx,DWORD [72+edi]
94 mov edx,DWORD [76+edi]
103 mov eax,DWORD [80+edi]
104 mov ebx,DWORD [84+edi]
105 mov ecx,DWORD [88+edi]
106 mov edx,DWORD [92+edi]
115 mov eax,DWORD [96+edi]
116 mov ebx,DWORD [100+edi]
117 mov ecx,DWORD [104+edi]
118 mov edx,DWORD [108+edi]
127 mov eax,DWORD [112+edi]
128 mov ebx,DWORD [116+edi]
129 mov ecx,DWORD [120+edi]
130 mov edx,DWORD [124+edi]
141 mov DWORD [204+esp],edi
147 mov ecx,DWORD [40+esp]
148 mov edx,DWORD [44+esp]
175 mov ecx,DWORD [48+esp]
176 mov edx,DWORD [52+esp]
177 mov esi,DWORD [56+esp]
178 mov edi,DWORD [60+esp]
179 add eax,DWORD [64+esp]
180 adc ebx,DWORD [68+esp]
183 and ecx,DWORD [40+esp]
184 and edx,DWORD [44+esp]
185 add eax,DWORD [192+esp]
186 adc ebx,DWORD [196+esp]
190 mov edi,DWORD [4+ebp]
193 mov ecx,DWORD [32+esp]
194 mov edx,DWORD [36+esp]
198 mov DWORD [4+esp],ebx
201 mov ecx,DWORD [8+esp]
202 mov edx,DWORD [12+esp]
203 mov DWORD [32+esp],eax
204 mov DWORD [36+esp],ebx
231 mov ecx,DWORD [8+esp]
232 mov edx,DWORD [12+esp]
233 mov esi,DWORD [16+esp]
234 mov edi,DWORD [20+esp]
236 adc ebx,DWORD [4+esp]
239 and ecx,DWORD [24+esp]
240 and edx,DWORD [28+esp]
241 and esi,DWORD [8+esp]
242 and edi,DWORD [12+esp]
248 mov DWORD [4+esp],ebx
253 jne NEAR L$00300_15_x86
256 mov ecx,DWORD [312+esp]
257 mov edx,DWORD [316+esp]
283 mov DWORD [4+esp],ebx
284 mov ecx,DWORD [208+esp]
285 mov edx,DWORD [212+esp]
310 mov ecx,DWORD [320+esp]
311 mov edx,DWORD [324+esp]
313 adc ebx,DWORD [4+esp]
314 mov esi,DWORD [248+esp]
315 mov edi,DWORD [252+esp]
320 mov DWORD [192+esp],eax
321 mov DWORD [196+esp],ebx
322 mov ecx,DWORD [40+esp]
323 mov edx,DWORD [44+esp]
350 mov ecx,DWORD [48+esp]
351 mov edx,DWORD [52+esp]
352 mov esi,DWORD [56+esp]
353 mov edi,DWORD [60+esp]
354 add eax,DWORD [64+esp]
355 adc ebx,DWORD [68+esp]
358 and ecx,DWORD [40+esp]
359 and edx,DWORD [44+esp]
360 add eax,DWORD [192+esp]
361 adc ebx,DWORD [196+esp]
365 mov edi,DWORD [4+ebp]
368 mov ecx,DWORD [32+esp]
369 mov edx,DWORD [36+esp]
373 mov DWORD [4+esp],ebx
376 mov ecx,DWORD [8+esp]
377 mov edx,DWORD [12+esp]
378 mov DWORD [32+esp],eax
379 mov DWORD [36+esp],ebx
406 mov ecx,DWORD [8+esp]
407 mov edx,DWORD [12+esp]
408 mov esi,DWORD [16+esp]
409 mov edi,DWORD [20+esp]
411 adc ebx,DWORD [4+esp]
414 and ecx,DWORD [24+esp]
415 and edx,DWORD [28+esp]
416 and esi,DWORD [8+esp]
417 and edi,DWORD [12+esp]
423 mov DWORD [4+esp],ebx
428 jne NEAR L$00416_79_x86
429 mov esi,DWORD [840+esp]
430 mov edi,DWORD [844+esp]
432 mov ebx,DWORD [4+esi]
433 mov ecx,DWORD [8+esi]
434 mov edx,DWORD [12+esi]
435 add eax,DWORD [8+esp]
436 adc ebx,DWORD [12+esp]
438 mov DWORD [4+esi],ebx
439 add ecx,DWORD [16+esp]
440 adc edx,DWORD [20+esp]
441 mov DWORD [8+esi],ecx
442 mov DWORD [12+esi],edx
443 mov eax,DWORD [16+esi]
444 mov ebx,DWORD [20+esi]
445 mov ecx,DWORD [24+esi]
446 mov edx,DWORD [28+esi]
447 add eax,DWORD [24+esp]
448 adc ebx,DWORD [28+esp]
449 mov DWORD [16+esi],eax
450 mov DWORD [20+esi],ebx
451 add ecx,DWORD [32+esp]
452 adc edx,DWORD [36+esp]
453 mov DWORD [24+esi],ecx
454 mov DWORD [28+esi],edx
455 mov eax,DWORD [32+esi]
456 mov ebx,DWORD [36+esi]
457 mov ecx,DWORD [40+esi]
458 mov edx,DWORD [44+esi]
459 add eax,DWORD [40+esp]
460 adc ebx,DWORD [44+esp]
461 mov DWORD [32+esi],eax
462 mov DWORD [36+esi],ebx
463 add ecx,DWORD [48+esp]
464 adc edx,DWORD [52+esp]
465 mov DWORD [40+esi],ecx
466 mov DWORD [44+esi],edx
467 mov eax,DWORD [48+esi]
468 mov ebx,DWORD [52+esi]
469 mov ecx,DWORD [56+esi]
470 mov edx,DWORD [60+esi]
471 add eax,DWORD [56+esp]
472 adc ebx,DWORD [60+esp]
473 mov DWORD [48+esi],eax
474 mov DWORD [52+esi],ebx
475 add ecx,DWORD [64+esp]
476 adc edx,DWORD [68+esp]
477 mov DWORD [56+esi],ecx
478 mov DWORD [60+esi],edx
481 cmp edi,DWORD [8+esp]
482 jb NEAR L$002loop_x86
483 mov esp,DWORD [12+esp]
491 dd 3609767458,1116352408
492 dd 602891725,1899447441
493 dd 3964484399,3049323471
494 dd 2173295548,3921009573
495 dd 4081628472,961987163
496 dd 3053834265,1508970993
497 dd 2937671579,2453635748
498 dd 3664609560,2870763221
499 dd 2734883394,3624381080
500 dd 1164996542,310598401
501 dd 1323610764,607225278
502 dd 3590304994,1426881987
503 dd 4068182383,1925078388
504 dd 991336113,2162078206
505 dd 633803317,2614888103
506 dd 3479774868,3248222580
507 dd 2666613458,3835390401
508 dd 944711139,4022224774
509 dd 2341262773,264347078
510 dd 2007800933,604807628
511 dd 1495990901,770255983
512 dd 1856431235,1249150122
513 dd 3175218132,1555081692
514 dd 2198950837,1996064986
515 dd 3999719339,2554220882
516 dd 766784016,2821834349
517 dd 2566594879,2952996808
518 dd 3203337956,3210313671
519 dd 1034457026,3336571891
520 dd 2466948901,3584528711
521 dd 3758326383,113926993
522 dd 168717936,338241895
523 dd 1188179964,666307205
524 dd 1546045734,773529912
525 dd 1522805485,1294757372
526 dd 2643833823,1396182291
527 dd 2343527390,1695183700
528 dd 1014477480,1986661051
529 dd 1206759142,2177026350
530 dd 344077627,2456956037
531 dd 1290863460,2730485921
532 dd 3158454273,2820302411
533 dd 3505952657,3259730800
534 dd 106217008,3345764771
535 dd 3606008344,3516065817
536 dd 1432725776,3600352804
537 dd 1467031594,4094571909
538 dd 851169720,275423344
539 dd 3100823752,430227734
540 dd 1363258195,506948616
541 dd 3750685593,659060556
542 dd 3785050280,883997877
543 dd 3318307427,958139571
544 dd 3812723403,1322822218
545 dd 2003034995,1537002063
546 dd 3602036899,1747873779
547 dd 1575990012,1955562222
548 dd 1125592928,2024104815
549 dd 2716904306,2227730452
550 dd 442776044,2361852424
551 dd 593698344,2428436474
552 dd 3733110249,2756734187
553 dd 2999351573,3204031479
554 dd 3815920427,3329325298
555 dd 3928383900,3391569614
556 dd 566280711,3515267271
557 dd 3454069534,3940187606
558 dd 4000239992,4118630271
559 dd 1914138554,116418474
560 dd 2731055270,174292421
561 dd 3203993006,289380356
562 dd 320620315,460393269
563 dd 587496836,685471733
564 dd 1086792851,852142971
565 dd 365543100,1017036298
566 dd 2618297676,1126000580
567 dd 3409855158,1288033470
568 dd 4234509866,1501505948
569 dd 987167468,1607167915
570 dd 1246189591,1816402316
572 dd 202182159,134810123
573 db 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97
574 db 110,115,102,111,114,109,32,102,111,114,32,120,56,54,44,32
575 db 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
576 db 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103