Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/crypto/openssl/i386/bn-586.S
39482 views
1
/* Do not modify. This file is auto-generated from bn-586.pl. */
2
#ifdef PIC
3
.text
4
.globl bn_mul_add_words
5
.type bn_mul_add_words,@function
6
.align 16
7
bn_mul_add_words:
8
.L_bn_mul_add_words_begin:
9
#ifdef __CET__
10
11
.byte 243,15,30,251
12
#endif
13
14
call .L000PIC_me_up
15
.L000PIC_me_up:
16
popl %eax
17
leal OPENSSL_ia32cap_P-.L000PIC_me_up(%eax),%eax
18
btl $26,(%eax)
19
jnc .L001maw_non_sse2
20
movl 4(%esp),%eax
21
movl 8(%esp),%edx
22
movl 12(%esp),%ecx
23
movd 16(%esp),%mm0
24
pxor %mm1,%mm1
25
jmp .L002maw_sse2_entry
26
.align 16
27
.L003maw_sse2_unrolled:
28
movd (%eax),%mm3
29
paddq %mm3,%mm1
30
movd (%edx),%mm2
31
pmuludq %mm0,%mm2
32
movd 4(%edx),%mm4
33
pmuludq %mm0,%mm4
34
movd 8(%edx),%mm6
35
pmuludq %mm0,%mm6
36
movd 12(%edx),%mm7
37
pmuludq %mm0,%mm7
38
paddq %mm2,%mm1
39
movd 4(%eax),%mm3
40
paddq %mm4,%mm3
41
movd 8(%eax),%mm5
42
paddq %mm6,%mm5
43
movd 12(%eax),%mm4
44
paddq %mm4,%mm7
45
movd %mm1,(%eax)
46
movd 16(%edx),%mm2
47
pmuludq %mm0,%mm2
48
psrlq $32,%mm1
49
movd 20(%edx),%mm4
50
pmuludq %mm0,%mm4
51
paddq %mm3,%mm1
52
movd 24(%edx),%mm6
53
pmuludq %mm0,%mm6
54
movd %mm1,4(%eax)
55
psrlq $32,%mm1
56
movd 28(%edx),%mm3
57
addl $32,%edx
58
pmuludq %mm0,%mm3
59
paddq %mm5,%mm1
60
movd 16(%eax),%mm5
61
paddq %mm5,%mm2
62
movd %mm1,8(%eax)
63
psrlq $32,%mm1
64
paddq %mm7,%mm1
65
movd 20(%eax),%mm5
66
paddq %mm5,%mm4
67
movd %mm1,12(%eax)
68
psrlq $32,%mm1
69
paddq %mm2,%mm1
70
movd 24(%eax),%mm5
71
paddq %mm5,%mm6
72
movd %mm1,16(%eax)
73
psrlq $32,%mm1
74
paddq %mm4,%mm1
75
movd 28(%eax),%mm5
76
paddq %mm5,%mm3
77
movd %mm1,20(%eax)
78
psrlq $32,%mm1
79
paddq %mm6,%mm1
80
movd %mm1,24(%eax)
81
psrlq $32,%mm1
82
paddq %mm3,%mm1
83
movd %mm1,28(%eax)
84
leal 32(%eax),%eax
85
psrlq $32,%mm1
86
subl $8,%ecx
87
jz .L004maw_sse2_exit
88
.L002maw_sse2_entry:
89
testl $4294967288,%ecx
90
jnz .L003maw_sse2_unrolled
91
.align 4
92
.L005maw_sse2_loop:
93
movd (%edx),%mm2
94
movd (%eax),%mm3
95
pmuludq %mm0,%mm2
96
leal 4(%edx),%edx
97
paddq %mm3,%mm1
98
paddq %mm2,%mm1
99
movd %mm1,(%eax)
100
subl $1,%ecx
101
psrlq $32,%mm1
102
leal 4(%eax),%eax
103
jnz .L005maw_sse2_loop
104
.L004maw_sse2_exit:
105
movd %mm1,%eax
106
emms
107
ret
108
.align 16
109
.L001maw_non_sse2:
110
pushl %ebp
111
pushl %ebx
112
pushl %esi
113
pushl %edi
114
115
xorl %esi,%esi
116
movl 20(%esp),%edi
117
movl 28(%esp),%ecx
118
movl 24(%esp),%ebx
119
andl $4294967288,%ecx
120
movl 32(%esp),%ebp
121
pushl %ecx
122
jz .L006maw_finish
123
.align 16
124
.L007maw_loop:
125
126
movl (%ebx),%eax
127
mull %ebp
128
addl %esi,%eax
129
adcl $0,%edx
130
addl (%edi),%eax
131
adcl $0,%edx
132
movl %eax,(%edi)
133
movl %edx,%esi
134
135
movl 4(%ebx),%eax
136
mull %ebp
137
addl %esi,%eax
138
adcl $0,%edx
139
addl 4(%edi),%eax
140
adcl $0,%edx
141
movl %eax,4(%edi)
142
movl %edx,%esi
143
144
movl 8(%ebx),%eax
145
mull %ebp
146
addl %esi,%eax
147
adcl $0,%edx
148
addl 8(%edi),%eax
149
adcl $0,%edx
150
movl %eax,8(%edi)
151
movl %edx,%esi
152
153
movl 12(%ebx),%eax
154
mull %ebp
155
addl %esi,%eax
156
adcl $0,%edx
157
addl 12(%edi),%eax
158
adcl $0,%edx
159
movl %eax,12(%edi)
160
movl %edx,%esi
161
162
movl 16(%ebx),%eax
163
mull %ebp
164
addl %esi,%eax
165
adcl $0,%edx
166
addl 16(%edi),%eax
167
adcl $0,%edx
168
movl %eax,16(%edi)
169
movl %edx,%esi
170
171
movl 20(%ebx),%eax
172
mull %ebp
173
addl %esi,%eax
174
adcl $0,%edx
175
addl 20(%edi),%eax
176
adcl $0,%edx
177
movl %eax,20(%edi)
178
movl %edx,%esi
179
180
movl 24(%ebx),%eax
181
mull %ebp
182
addl %esi,%eax
183
adcl $0,%edx
184
addl 24(%edi),%eax
185
adcl $0,%edx
186
movl %eax,24(%edi)
187
movl %edx,%esi
188
189
movl 28(%ebx),%eax
190
mull %ebp
191
addl %esi,%eax
192
adcl $0,%edx
193
addl 28(%edi),%eax
194
adcl $0,%edx
195
movl %eax,28(%edi)
196
movl %edx,%esi
197
198
subl $8,%ecx
199
leal 32(%ebx),%ebx
200
leal 32(%edi),%edi
201
jnz .L007maw_loop
202
.L006maw_finish:
203
movl 32(%esp),%ecx
204
andl $7,%ecx
205
jnz .L008maw_finish2
206
jmp .L009maw_end
207
.L008maw_finish2:
208
209
movl (%ebx),%eax
210
mull %ebp
211
addl %esi,%eax
212
adcl $0,%edx
213
addl (%edi),%eax
214
adcl $0,%edx
215
decl %ecx
216
movl %eax,(%edi)
217
movl %edx,%esi
218
jz .L009maw_end
219
220
movl 4(%ebx),%eax
221
mull %ebp
222
addl %esi,%eax
223
adcl $0,%edx
224
addl 4(%edi),%eax
225
adcl $0,%edx
226
decl %ecx
227
movl %eax,4(%edi)
228
movl %edx,%esi
229
jz .L009maw_end
230
231
movl 8(%ebx),%eax
232
mull %ebp
233
addl %esi,%eax
234
adcl $0,%edx
235
addl 8(%edi),%eax
236
adcl $0,%edx
237
decl %ecx
238
movl %eax,8(%edi)
239
movl %edx,%esi
240
jz .L009maw_end
241
242
movl 12(%ebx),%eax
243
mull %ebp
244
addl %esi,%eax
245
adcl $0,%edx
246
addl 12(%edi),%eax
247
adcl $0,%edx
248
decl %ecx
249
movl %eax,12(%edi)
250
movl %edx,%esi
251
jz .L009maw_end
252
253
movl 16(%ebx),%eax
254
mull %ebp
255
addl %esi,%eax
256
adcl $0,%edx
257
addl 16(%edi),%eax
258
adcl $0,%edx
259
decl %ecx
260
movl %eax,16(%edi)
261
movl %edx,%esi
262
jz .L009maw_end
263
264
movl 20(%ebx),%eax
265
mull %ebp
266
addl %esi,%eax
267
adcl $0,%edx
268
addl 20(%edi),%eax
269
adcl $0,%edx
270
decl %ecx
271
movl %eax,20(%edi)
272
movl %edx,%esi
273
jz .L009maw_end
274
275
movl 24(%ebx),%eax
276
mull %ebp
277
addl %esi,%eax
278
adcl $0,%edx
279
addl 24(%edi),%eax
280
adcl $0,%edx
281
movl %eax,24(%edi)
282
movl %edx,%esi
283
.L009maw_end:
284
movl %esi,%eax
285
popl %ecx
286
popl %edi
287
popl %esi
288
popl %ebx
289
popl %ebp
290
ret
291
.size bn_mul_add_words,.-.L_bn_mul_add_words_begin
292
.globl bn_mul_words
293
.type bn_mul_words,@function
294
.align 16
295
bn_mul_words:
296
.L_bn_mul_words_begin:
297
#ifdef __CET__
298
299
.byte 243,15,30,251
300
#endif
301
302
call .L010PIC_me_up
303
.L010PIC_me_up:
304
popl %eax
305
leal OPENSSL_ia32cap_P-.L010PIC_me_up(%eax),%eax
306
btl $26,(%eax)
307
jnc .L011mw_non_sse2
308
movl 4(%esp),%eax
309
movl 8(%esp),%edx
310
movl 12(%esp),%ecx
311
movd 16(%esp),%mm0
312
pxor %mm1,%mm1
313
.align 16
314
.L012mw_sse2_loop:
315
movd (%edx),%mm2
316
pmuludq %mm0,%mm2
317
leal 4(%edx),%edx
318
paddq %mm2,%mm1
319
movd %mm1,(%eax)
320
subl $1,%ecx
321
psrlq $32,%mm1
322
leal 4(%eax),%eax
323
jnz .L012mw_sse2_loop
324
movd %mm1,%eax
325
emms
326
ret
327
.align 16
328
.L011mw_non_sse2:
329
pushl %ebp
330
pushl %ebx
331
pushl %esi
332
pushl %edi
333
334
xorl %esi,%esi
335
movl 20(%esp),%edi
336
movl 24(%esp),%ebx
337
movl 28(%esp),%ebp
338
movl 32(%esp),%ecx
339
andl $4294967288,%ebp
340
jz .L013mw_finish
341
.L014mw_loop:
342
343
movl (%ebx),%eax
344
mull %ecx
345
addl %esi,%eax
346
adcl $0,%edx
347
movl %eax,(%edi)
348
movl %edx,%esi
349
350
movl 4(%ebx),%eax
351
mull %ecx
352
addl %esi,%eax
353
adcl $0,%edx
354
movl %eax,4(%edi)
355
movl %edx,%esi
356
357
movl 8(%ebx),%eax
358
mull %ecx
359
addl %esi,%eax
360
adcl $0,%edx
361
movl %eax,8(%edi)
362
movl %edx,%esi
363
364
movl 12(%ebx),%eax
365
mull %ecx
366
addl %esi,%eax
367
adcl $0,%edx
368
movl %eax,12(%edi)
369
movl %edx,%esi
370
371
movl 16(%ebx),%eax
372
mull %ecx
373
addl %esi,%eax
374
adcl $0,%edx
375
movl %eax,16(%edi)
376
movl %edx,%esi
377
378
movl 20(%ebx),%eax
379
mull %ecx
380
addl %esi,%eax
381
adcl $0,%edx
382
movl %eax,20(%edi)
383
movl %edx,%esi
384
385
movl 24(%ebx),%eax
386
mull %ecx
387
addl %esi,%eax
388
adcl $0,%edx
389
movl %eax,24(%edi)
390
movl %edx,%esi
391
392
movl 28(%ebx),%eax
393
mull %ecx
394
addl %esi,%eax
395
adcl $0,%edx
396
movl %eax,28(%edi)
397
movl %edx,%esi
398
399
addl $32,%ebx
400
addl $32,%edi
401
subl $8,%ebp
402
jz .L013mw_finish
403
jmp .L014mw_loop
404
.L013mw_finish:
405
movl 28(%esp),%ebp
406
andl $7,%ebp
407
jnz .L015mw_finish2
408
jmp .L016mw_end
409
.L015mw_finish2:
410
411
movl (%ebx),%eax
412
mull %ecx
413
addl %esi,%eax
414
adcl $0,%edx
415
movl %eax,(%edi)
416
movl %edx,%esi
417
decl %ebp
418
jz .L016mw_end
419
420
movl 4(%ebx),%eax
421
mull %ecx
422
addl %esi,%eax
423
adcl $0,%edx
424
movl %eax,4(%edi)
425
movl %edx,%esi
426
decl %ebp
427
jz .L016mw_end
428
429
movl 8(%ebx),%eax
430
mull %ecx
431
addl %esi,%eax
432
adcl $0,%edx
433
movl %eax,8(%edi)
434
movl %edx,%esi
435
decl %ebp
436
jz .L016mw_end
437
438
movl 12(%ebx),%eax
439
mull %ecx
440
addl %esi,%eax
441
adcl $0,%edx
442
movl %eax,12(%edi)
443
movl %edx,%esi
444
decl %ebp
445
jz .L016mw_end
446
447
movl 16(%ebx),%eax
448
mull %ecx
449
addl %esi,%eax
450
adcl $0,%edx
451
movl %eax,16(%edi)
452
movl %edx,%esi
453
decl %ebp
454
jz .L016mw_end
455
456
movl 20(%ebx),%eax
457
mull %ecx
458
addl %esi,%eax
459
adcl $0,%edx
460
movl %eax,20(%edi)
461
movl %edx,%esi
462
decl %ebp
463
jz .L016mw_end
464
465
movl 24(%ebx),%eax
466
mull %ecx
467
addl %esi,%eax
468
adcl $0,%edx
469
movl %eax,24(%edi)
470
movl %edx,%esi
471
.L016mw_end:
472
movl %esi,%eax
473
popl %edi
474
popl %esi
475
popl %ebx
476
popl %ebp
477
ret
478
.size bn_mul_words,.-.L_bn_mul_words_begin
479
.globl bn_sqr_words
480
.type bn_sqr_words,@function
481
.align 16
482
bn_sqr_words:
483
.L_bn_sqr_words_begin:
484
#ifdef __CET__
485
486
.byte 243,15,30,251
487
#endif
488
489
call .L017PIC_me_up
490
.L017PIC_me_up:
491
popl %eax
492
leal OPENSSL_ia32cap_P-.L017PIC_me_up(%eax),%eax
493
btl $26,(%eax)
494
jnc .L018sqr_non_sse2
495
movl 4(%esp),%eax
496
movl 8(%esp),%edx
497
movl 12(%esp),%ecx
498
.align 16
499
.L019sqr_sse2_loop:
500
movd (%edx),%mm0
501
pmuludq %mm0,%mm0
502
leal 4(%edx),%edx
503
movq %mm0,(%eax)
504
subl $1,%ecx
505
leal 8(%eax),%eax
506
jnz .L019sqr_sse2_loop
507
emms
508
ret
509
.align 16
510
.L018sqr_non_sse2:
511
pushl %ebp
512
pushl %ebx
513
pushl %esi
514
pushl %edi
515
516
movl 20(%esp),%esi
517
movl 24(%esp),%edi
518
movl 28(%esp),%ebx
519
andl $4294967288,%ebx
520
jz .L020sw_finish
521
.L021sw_loop:
522
523
movl (%edi),%eax
524
mull %eax
525
movl %eax,(%esi)
526
movl %edx,4(%esi)
527
528
movl 4(%edi),%eax
529
mull %eax
530
movl %eax,8(%esi)
531
movl %edx,12(%esi)
532
533
movl 8(%edi),%eax
534
mull %eax
535
movl %eax,16(%esi)
536
movl %edx,20(%esi)
537
538
movl 12(%edi),%eax
539
mull %eax
540
movl %eax,24(%esi)
541
movl %edx,28(%esi)
542
543
movl 16(%edi),%eax
544
mull %eax
545
movl %eax,32(%esi)
546
movl %edx,36(%esi)
547
548
movl 20(%edi),%eax
549
mull %eax
550
movl %eax,40(%esi)
551
movl %edx,44(%esi)
552
553
movl 24(%edi),%eax
554
mull %eax
555
movl %eax,48(%esi)
556
movl %edx,52(%esi)
557
558
movl 28(%edi),%eax
559
mull %eax
560
movl %eax,56(%esi)
561
movl %edx,60(%esi)
562
563
addl $32,%edi
564
addl $64,%esi
565
subl $8,%ebx
566
jnz .L021sw_loop
567
.L020sw_finish:
568
movl 28(%esp),%ebx
569
andl $7,%ebx
570
jz .L022sw_end
571
572
movl (%edi),%eax
573
mull %eax
574
movl %eax,(%esi)
575
decl %ebx
576
movl %edx,4(%esi)
577
jz .L022sw_end
578
579
movl 4(%edi),%eax
580
mull %eax
581
movl %eax,8(%esi)
582
decl %ebx
583
movl %edx,12(%esi)
584
jz .L022sw_end
585
586
movl 8(%edi),%eax
587
mull %eax
588
movl %eax,16(%esi)
589
decl %ebx
590
movl %edx,20(%esi)
591
jz .L022sw_end
592
593
movl 12(%edi),%eax
594
mull %eax
595
movl %eax,24(%esi)
596
decl %ebx
597
movl %edx,28(%esi)
598
jz .L022sw_end
599
600
movl 16(%edi),%eax
601
mull %eax
602
movl %eax,32(%esi)
603
decl %ebx
604
movl %edx,36(%esi)
605
jz .L022sw_end
606
607
movl 20(%edi),%eax
608
mull %eax
609
movl %eax,40(%esi)
610
decl %ebx
611
movl %edx,44(%esi)
612
jz .L022sw_end
613
614
movl 24(%edi),%eax
615
mull %eax
616
movl %eax,48(%esi)
617
movl %edx,52(%esi)
618
.L022sw_end:
619
popl %edi
620
popl %esi
621
popl %ebx
622
popl %ebp
623
ret
624
.size bn_sqr_words,.-.L_bn_sqr_words_begin
625
.globl bn_div_words
626
.type bn_div_words,@function
627
.align 16
628
bn_div_words:
629
.L_bn_div_words_begin:
630
#ifdef __CET__
631
632
.byte 243,15,30,251
633
#endif
634
635
movl 4(%esp),%edx
636
movl 8(%esp),%eax
637
movl 12(%esp),%ecx
638
divl %ecx
639
ret
640
.size bn_div_words,.-.L_bn_div_words_begin
641
.globl bn_add_words
642
.type bn_add_words,@function
643
.align 16
644
bn_add_words:
645
.L_bn_add_words_begin:
646
#ifdef __CET__
647
648
.byte 243,15,30,251
649
#endif
650
651
pushl %ebp
652
pushl %ebx
653
pushl %esi
654
pushl %edi
655
656
movl 20(%esp),%ebx
657
movl 24(%esp),%esi
658
movl 28(%esp),%edi
659
movl 32(%esp),%ebp
660
xorl %eax,%eax
661
andl $4294967288,%ebp
662
jz .L023aw_finish
663
.L024aw_loop:
664
665
movl (%esi),%ecx
666
movl (%edi),%edx
667
addl %eax,%ecx
668
movl $0,%eax
669
adcl %eax,%eax
670
addl %edx,%ecx
671
adcl $0,%eax
672
movl %ecx,(%ebx)
673
674
movl 4(%esi),%ecx
675
movl 4(%edi),%edx
676
addl %eax,%ecx
677
movl $0,%eax
678
adcl %eax,%eax
679
addl %edx,%ecx
680
adcl $0,%eax
681
movl %ecx,4(%ebx)
682
683
movl 8(%esi),%ecx
684
movl 8(%edi),%edx
685
addl %eax,%ecx
686
movl $0,%eax
687
adcl %eax,%eax
688
addl %edx,%ecx
689
adcl $0,%eax
690
movl %ecx,8(%ebx)
691
692
movl 12(%esi),%ecx
693
movl 12(%edi),%edx
694
addl %eax,%ecx
695
movl $0,%eax
696
adcl %eax,%eax
697
addl %edx,%ecx
698
adcl $0,%eax
699
movl %ecx,12(%ebx)
700
701
movl 16(%esi),%ecx
702
movl 16(%edi),%edx
703
addl %eax,%ecx
704
movl $0,%eax
705
adcl %eax,%eax
706
addl %edx,%ecx
707
adcl $0,%eax
708
movl %ecx,16(%ebx)
709
710
movl 20(%esi),%ecx
711
movl 20(%edi),%edx
712
addl %eax,%ecx
713
movl $0,%eax
714
adcl %eax,%eax
715
addl %edx,%ecx
716
adcl $0,%eax
717
movl %ecx,20(%ebx)
718
719
movl 24(%esi),%ecx
720
movl 24(%edi),%edx
721
addl %eax,%ecx
722
movl $0,%eax
723
adcl %eax,%eax
724
addl %edx,%ecx
725
adcl $0,%eax
726
movl %ecx,24(%ebx)
727
728
movl 28(%esi),%ecx
729
movl 28(%edi),%edx
730
addl %eax,%ecx
731
movl $0,%eax
732
adcl %eax,%eax
733
addl %edx,%ecx
734
adcl $0,%eax
735
movl %ecx,28(%ebx)
736
737
addl $32,%esi
738
addl $32,%edi
739
addl $32,%ebx
740
subl $8,%ebp
741
jnz .L024aw_loop
742
.L023aw_finish:
743
movl 32(%esp),%ebp
744
andl $7,%ebp
745
jz .L025aw_end
746
747
movl (%esi),%ecx
748
movl (%edi),%edx
749
addl %eax,%ecx
750
movl $0,%eax
751
adcl %eax,%eax
752
addl %edx,%ecx
753
adcl $0,%eax
754
decl %ebp
755
movl %ecx,(%ebx)
756
jz .L025aw_end
757
758
movl 4(%esi),%ecx
759
movl 4(%edi),%edx
760
addl %eax,%ecx
761
movl $0,%eax
762
adcl %eax,%eax
763
addl %edx,%ecx
764
adcl $0,%eax
765
decl %ebp
766
movl %ecx,4(%ebx)
767
jz .L025aw_end
768
769
movl 8(%esi),%ecx
770
movl 8(%edi),%edx
771
addl %eax,%ecx
772
movl $0,%eax
773
adcl %eax,%eax
774
addl %edx,%ecx
775
adcl $0,%eax
776
decl %ebp
777
movl %ecx,8(%ebx)
778
jz .L025aw_end
779
780
movl 12(%esi),%ecx
781
movl 12(%edi),%edx
782
addl %eax,%ecx
783
movl $0,%eax
784
adcl %eax,%eax
785
addl %edx,%ecx
786
adcl $0,%eax
787
decl %ebp
788
movl %ecx,12(%ebx)
789
jz .L025aw_end
790
791
movl 16(%esi),%ecx
792
movl 16(%edi),%edx
793
addl %eax,%ecx
794
movl $0,%eax
795
adcl %eax,%eax
796
addl %edx,%ecx
797
adcl $0,%eax
798
decl %ebp
799
movl %ecx,16(%ebx)
800
jz .L025aw_end
801
802
movl 20(%esi),%ecx
803
movl 20(%edi),%edx
804
addl %eax,%ecx
805
movl $0,%eax
806
adcl %eax,%eax
807
addl %edx,%ecx
808
adcl $0,%eax
809
decl %ebp
810
movl %ecx,20(%ebx)
811
jz .L025aw_end
812
813
movl 24(%esi),%ecx
814
movl 24(%edi),%edx
815
addl %eax,%ecx
816
movl $0,%eax
817
adcl %eax,%eax
818
addl %edx,%ecx
819
adcl $0,%eax
820
movl %ecx,24(%ebx)
821
.L025aw_end:
822
popl %edi
823
popl %esi
824
popl %ebx
825
popl %ebp
826
ret
827
.size bn_add_words,.-.L_bn_add_words_begin
828
.globl bn_sub_words
829
.type bn_sub_words,@function
830
.align 16
831
bn_sub_words:
832
.L_bn_sub_words_begin:
833
#ifdef __CET__
834
835
.byte 243,15,30,251
836
#endif
837
838
pushl %ebp
839
pushl %ebx
840
pushl %esi
841
pushl %edi
842
843
movl 20(%esp),%ebx
844
movl 24(%esp),%esi
845
movl 28(%esp),%edi
846
movl 32(%esp),%ebp
847
xorl %eax,%eax
848
andl $4294967288,%ebp
849
jz .L026aw_finish
850
.L027aw_loop:
851
852
movl (%esi),%ecx
853
movl (%edi),%edx
854
subl %eax,%ecx
855
movl $0,%eax
856
adcl %eax,%eax
857
subl %edx,%ecx
858
adcl $0,%eax
859
movl %ecx,(%ebx)
860
861
movl 4(%esi),%ecx
862
movl 4(%edi),%edx
863
subl %eax,%ecx
864
movl $0,%eax
865
adcl %eax,%eax
866
subl %edx,%ecx
867
adcl $0,%eax
868
movl %ecx,4(%ebx)
869
870
movl 8(%esi),%ecx
871
movl 8(%edi),%edx
872
subl %eax,%ecx
873
movl $0,%eax
874
adcl %eax,%eax
875
subl %edx,%ecx
876
adcl $0,%eax
877
movl %ecx,8(%ebx)
878
879
movl 12(%esi),%ecx
880
movl 12(%edi),%edx
881
subl %eax,%ecx
882
movl $0,%eax
883
adcl %eax,%eax
884
subl %edx,%ecx
885
adcl $0,%eax
886
movl %ecx,12(%ebx)
887
888
movl 16(%esi),%ecx
889
movl 16(%edi),%edx
890
subl %eax,%ecx
891
movl $0,%eax
892
adcl %eax,%eax
893
subl %edx,%ecx
894
adcl $0,%eax
895
movl %ecx,16(%ebx)
896
897
movl 20(%esi),%ecx
898
movl 20(%edi),%edx
899
subl %eax,%ecx
900
movl $0,%eax
901
adcl %eax,%eax
902
subl %edx,%ecx
903
adcl $0,%eax
904
movl %ecx,20(%ebx)
905
906
movl 24(%esi),%ecx
907
movl 24(%edi),%edx
908
subl %eax,%ecx
909
movl $0,%eax
910
adcl %eax,%eax
911
subl %edx,%ecx
912
adcl $0,%eax
913
movl %ecx,24(%ebx)
914
915
movl 28(%esi),%ecx
916
movl 28(%edi),%edx
917
subl %eax,%ecx
918
movl $0,%eax
919
adcl %eax,%eax
920
subl %edx,%ecx
921
adcl $0,%eax
922
movl %ecx,28(%ebx)
923
924
addl $32,%esi
925
addl $32,%edi
926
addl $32,%ebx
927
subl $8,%ebp
928
jnz .L027aw_loop
929
.L026aw_finish:
930
movl 32(%esp),%ebp
931
andl $7,%ebp
932
jz .L028aw_end
933
934
movl (%esi),%ecx
935
movl (%edi),%edx
936
subl %eax,%ecx
937
movl $0,%eax
938
adcl %eax,%eax
939
subl %edx,%ecx
940
adcl $0,%eax
941
decl %ebp
942
movl %ecx,(%ebx)
943
jz .L028aw_end
944
945
movl 4(%esi),%ecx
946
movl 4(%edi),%edx
947
subl %eax,%ecx
948
movl $0,%eax
949
adcl %eax,%eax
950
subl %edx,%ecx
951
adcl $0,%eax
952
decl %ebp
953
movl %ecx,4(%ebx)
954
jz .L028aw_end
955
956
movl 8(%esi),%ecx
957
movl 8(%edi),%edx
958
subl %eax,%ecx
959
movl $0,%eax
960
adcl %eax,%eax
961
subl %edx,%ecx
962
adcl $0,%eax
963
decl %ebp
964
movl %ecx,8(%ebx)
965
jz .L028aw_end
966
967
movl 12(%esi),%ecx
968
movl 12(%edi),%edx
969
subl %eax,%ecx
970
movl $0,%eax
971
adcl %eax,%eax
972
subl %edx,%ecx
973
adcl $0,%eax
974
decl %ebp
975
movl %ecx,12(%ebx)
976
jz .L028aw_end
977
978
movl 16(%esi),%ecx
979
movl 16(%edi),%edx
980
subl %eax,%ecx
981
movl $0,%eax
982
adcl %eax,%eax
983
subl %edx,%ecx
984
adcl $0,%eax
985
decl %ebp
986
movl %ecx,16(%ebx)
987
jz .L028aw_end
988
989
movl 20(%esi),%ecx
990
movl 20(%edi),%edx
991
subl %eax,%ecx
992
movl $0,%eax
993
adcl %eax,%eax
994
subl %edx,%ecx
995
adcl $0,%eax
996
decl %ebp
997
movl %ecx,20(%ebx)
998
jz .L028aw_end
999
1000
movl 24(%esi),%ecx
1001
movl 24(%edi),%edx
1002
subl %eax,%ecx
1003
movl $0,%eax
1004
adcl %eax,%eax
1005
subl %edx,%ecx
1006
adcl $0,%eax
1007
movl %ecx,24(%ebx)
1008
.L028aw_end:
1009
popl %edi
1010
popl %esi
1011
popl %ebx
1012
popl %ebp
1013
ret
1014
.size bn_sub_words,.-.L_bn_sub_words_begin
1015
.globl bn_sub_part_words
1016
.type bn_sub_part_words,@function
1017
.align 16
1018
bn_sub_part_words:
1019
.L_bn_sub_part_words_begin:
1020
#ifdef __CET__
1021
1022
.byte 243,15,30,251
1023
#endif
1024
1025
pushl %ebp
1026
pushl %ebx
1027
pushl %esi
1028
pushl %edi
1029
1030
movl 20(%esp),%ebx
1031
movl 24(%esp),%esi
1032
movl 28(%esp),%edi
1033
movl 32(%esp),%ebp
1034
xorl %eax,%eax
1035
andl $4294967288,%ebp
1036
jz .L029aw_finish
1037
.L030aw_loop:
1038
1039
movl (%esi),%ecx
1040
movl (%edi),%edx
1041
subl %eax,%ecx
1042
movl $0,%eax
1043
adcl %eax,%eax
1044
subl %edx,%ecx
1045
adcl $0,%eax
1046
movl %ecx,(%ebx)
1047
1048
movl 4(%esi),%ecx
1049
movl 4(%edi),%edx
1050
subl %eax,%ecx
1051
movl $0,%eax
1052
adcl %eax,%eax
1053
subl %edx,%ecx
1054
adcl $0,%eax
1055
movl %ecx,4(%ebx)
1056
1057
movl 8(%esi),%ecx
1058
movl 8(%edi),%edx
1059
subl %eax,%ecx
1060
movl $0,%eax
1061
adcl %eax,%eax
1062
subl %edx,%ecx
1063
adcl $0,%eax
1064
movl %ecx,8(%ebx)
1065
1066
movl 12(%esi),%ecx
1067
movl 12(%edi),%edx
1068
subl %eax,%ecx
1069
movl $0,%eax
1070
adcl %eax,%eax
1071
subl %edx,%ecx
1072
adcl $0,%eax
1073
movl %ecx,12(%ebx)
1074
1075
movl 16(%esi),%ecx
1076
movl 16(%edi),%edx
1077
subl %eax,%ecx
1078
movl $0,%eax
1079
adcl %eax,%eax
1080
subl %edx,%ecx
1081
adcl $0,%eax
1082
movl %ecx,16(%ebx)
1083
1084
movl 20(%esi),%ecx
1085
movl 20(%edi),%edx
1086
subl %eax,%ecx
1087
movl $0,%eax
1088
adcl %eax,%eax
1089
subl %edx,%ecx
1090
adcl $0,%eax
1091
movl %ecx,20(%ebx)
1092
1093
movl 24(%esi),%ecx
1094
movl 24(%edi),%edx
1095
subl %eax,%ecx
1096
movl $0,%eax
1097
adcl %eax,%eax
1098
subl %edx,%ecx
1099
adcl $0,%eax
1100
movl %ecx,24(%ebx)
1101
1102
movl 28(%esi),%ecx
1103
movl 28(%edi),%edx
1104
subl %eax,%ecx
1105
movl $0,%eax
1106
adcl %eax,%eax
1107
subl %edx,%ecx
1108
adcl $0,%eax
1109
movl %ecx,28(%ebx)
1110
1111
addl $32,%esi
1112
addl $32,%edi
1113
addl $32,%ebx
1114
subl $8,%ebp
1115
jnz .L030aw_loop
1116
.L029aw_finish:
1117
movl 32(%esp),%ebp
1118
andl $7,%ebp
1119
jz .L031aw_end
1120
1121
movl (%esi),%ecx
1122
movl (%edi),%edx
1123
subl %eax,%ecx
1124
movl $0,%eax
1125
adcl %eax,%eax
1126
subl %edx,%ecx
1127
adcl $0,%eax
1128
movl %ecx,(%ebx)
1129
addl $4,%esi
1130
addl $4,%edi
1131
addl $4,%ebx
1132
decl %ebp
1133
jz .L031aw_end
1134
1135
movl (%esi),%ecx
1136
movl (%edi),%edx
1137
subl %eax,%ecx
1138
movl $0,%eax
1139
adcl %eax,%eax
1140
subl %edx,%ecx
1141
adcl $0,%eax
1142
movl %ecx,(%ebx)
1143
addl $4,%esi
1144
addl $4,%edi
1145
addl $4,%ebx
1146
decl %ebp
1147
jz .L031aw_end
1148
1149
movl (%esi),%ecx
1150
movl (%edi),%edx
1151
subl %eax,%ecx
1152
movl $0,%eax
1153
adcl %eax,%eax
1154
subl %edx,%ecx
1155
adcl $0,%eax
1156
movl %ecx,(%ebx)
1157
addl $4,%esi
1158
addl $4,%edi
1159
addl $4,%ebx
1160
decl %ebp
1161
jz .L031aw_end
1162
1163
movl (%esi),%ecx
1164
movl (%edi),%edx
1165
subl %eax,%ecx
1166
movl $0,%eax
1167
adcl %eax,%eax
1168
subl %edx,%ecx
1169
adcl $0,%eax
1170
movl %ecx,(%ebx)
1171
addl $4,%esi
1172
addl $4,%edi
1173
addl $4,%ebx
1174
decl %ebp
1175
jz .L031aw_end
1176
1177
movl (%esi),%ecx
1178
movl (%edi),%edx
1179
subl %eax,%ecx
1180
movl $0,%eax
1181
adcl %eax,%eax
1182
subl %edx,%ecx
1183
adcl $0,%eax
1184
movl %ecx,(%ebx)
1185
addl $4,%esi
1186
addl $4,%edi
1187
addl $4,%ebx
1188
decl %ebp
1189
jz .L031aw_end
1190
1191
movl (%esi),%ecx
1192
movl (%edi),%edx
1193
subl %eax,%ecx
1194
movl $0,%eax
1195
adcl %eax,%eax
1196
subl %edx,%ecx
1197
adcl $0,%eax
1198
movl %ecx,(%ebx)
1199
addl $4,%esi
1200
addl $4,%edi
1201
addl $4,%ebx
1202
decl %ebp
1203
jz .L031aw_end
1204
1205
movl (%esi),%ecx
1206
movl (%edi),%edx
1207
subl %eax,%ecx
1208
movl $0,%eax
1209
adcl %eax,%eax
1210
subl %edx,%ecx
1211
adcl $0,%eax
1212
movl %ecx,(%ebx)
1213
addl $4,%esi
1214
addl $4,%edi
1215
addl $4,%ebx
1216
.L031aw_end:
1217
cmpl $0,36(%esp)
1218
je .L032pw_end
1219
movl 36(%esp),%ebp
1220
cmpl $0,%ebp
1221
je .L032pw_end
1222
jge .L033pw_pos
1223
1224
movl $0,%edx
1225
subl %ebp,%edx
1226
movl %edx,%ebp
1227
andl $4294967288,%ebp
1228
jz .L034pw_neg_finish
1229
.L035pw_neg_loop:
1230
1231
movl $0,%ecx
1232
movl (%edi),%edx
1233
subl %eax,%ecx
1234
movl $0,%eax
1235
adcl %eax,%eax
1236
subl %edx,%ecx
1237
adcl $0,%eax
1238
movl %ecx,(%ebx)
1239
1240
movl $0,%ecx
1241
movl 4(%edi),%edx
1242
subl %eax,%ecx
1243
movl $0,%eax
1244
adcl %eax,%eax
1245
subl %edx,%ecx
1246
adcl $0,%eax
1247
movl %ecx,4(%ebx)
1248
1249
movl $0,%ecx
1250
movl 8(%edi),%edx
1251
subl %eax,%ecx
1252
movl $0,%eax
1253
adcl %eax,%eax
1254
subl %edx,%ecx
1255
adcl $0,%eax
1256
movl %ecx,8(%ebx)
1257
1258
movl $0,%ecx
1259
movl 12(%edi),%edx
1260
subl %eax,%ecx
1261
movl $0,%eax
1262
adcl %eax,%eax
1263
subl %edx,%ecx
1264
adcl $0,%eax
1265
movl %ecx,12(%ebx)
1266
1267
movl $0,%ecx
1268
movl 16(%edi),%edx
1269
subl %eax,%ecx
1270
movl $0,%eax
1271
adcl %eax,%eax
1272
subl %edx,%ecx
1273
adcl $0,%eax
1274
movl %ecx,16(%ebx)
1275
1276
movl $0,%ecx
1277
movl 20(%edi),%edx
1278
subl %eax,%ecx
1279
movl $0,%eax
1280
adcl %eax,%eax
1281
subl %edx,%ecx
1282
adcl $0,%eax
1283
movl %ecx,20(%ebx)
1284
1285
movl $0,%ecx
1286
movl 24(%edi),%edx
1287
subl %eax,%ecx
1288
movl $0,%eax
1289
adcl %eax,%eax
1290
subl %edx,%ecx
1291
adcl $0,%eax
1292
movl %ecx,24(%ebx)
1293
1294
movl $0,%ecx
1295
movl 28(%edi),%edx
1296
subl %eax,%ecx
1297
movl $0,%eax
1298
adcl %eax,%eax
1299
subl %edx,%ecx
1300
adcl $0,%eax
1301
movl %ecx,28(%ebx)
1302
1303
addl $32,%edi
1304
addl $32,%ebx
1305
subl $8,%ebp
1306
jnz .L035pw_neg_loop
1307
.L034pw_neg_finish:
1308
movl 36(%esp),%edx
1309
movl $0,%ebp
1310
subl %edx,%ebp
1311
andl $7,%ebp
1312
jz .L032pw_end
1313
1314
movl $0,%ecx
1315
movl (%edi),%edx
1316
subl %eax,%ecx
1317
movl $0,%eax
1318
adcl %eax,%eax
1319
subl %edx,%ecx
1320
adcl $0,%eax
1321
decl %ebp
1322
movl %ecx,(%ebx)
1323
jz .L032pw_end
1324
1325
movl $0,%ecx
1326
movl 4(%edi),%edx
1327
subl %eax,%ecx
1328
movl $0,%eax
1329
adcl %eax,%eax
1330
subl %edx,%ecx
1331
adcl $0,%eax
1332
decl %ebp
1333
movl %ecx,4(%ebx)
1334
jz .L032pw_end
1335
1336
movl $0,%ecx
1337
movl 8(%edi),%edx
1338
subl %eax,%ecx
1339
movl $0,%eax
1340
adcl %eax,%eax
1341
subl %edx,%ecx
1342
adcl $0,%eax
1343
decl %ebp
1344
movl %ecx,8(%ebx)
1345
jz .L032pw_end
1346
1347
movl $0,%ecx
1348
movl 12(%edi),%edx
1349
subl %eax,%ecx
1350
movl $0,%eax
1351
adcl %eax,%eax
1352
subl %edx,%ecx
1353
adcl $0,%eax
1354
decl %ebp
1355
movl %ecx,12(%ebx)
1356
jz .L032pw_end
1357
1358
movl $0,%ecx
1359
movl 16(%edi),%edx
1360
subl %eax,%ecx
1361
movl $0,%eax
1362
adcl %eax,%eax
1363
subl %edx,%ecx
1364
adcl $0,%eax
1365
decl %ebp
1366
movl %ecx,16(%ebx)
1367
jz .L032pw_end
1368
1369
movl $0,%ecx
1370
movl 20(%edi),%edx
1371
subl %eax,%ecx
1372
movl $0,%eax
1373
adcl %eax,%eax
1374
subl %edx,%ecx
1375
adcl $0,%eax
1376
decl %ebp
1377
movl %ecx,20(%ebx)
1378
jz .L032pw_end
1379
1380
movl $0,%ecx
1381
movl 24(%edi),%edx
1382
subl %eax,%ecx
1383
movl $0,%eax
1384
adcl %eax,%eax
1385
subl %edx,%ecx
1386
adcl $0,%eax
1387
movl %ecx,24(%ebx)
1388
jmp .L032pw_end
1389
.L033pw_pos:
1390
andl $4294967288,%ebp
1391
jz .L036pw_pos_finish
1392
.L037pw_pos_loop:
1393
1394
movl (%esi),%ecx
1395
subl %eax,%ecx
1396
movl %ecx,(%ebx)
1397
jnc .L038pw_nc0
1398
1399
movl 4(%esi),%ecx
1400
subl %eax,%ecx
1401
movl %ecx,4(%ebx)
1402
jnc .L039pw_nc1
1403
1404
movl 8(%esi),%ecx
1405
subl %eax,%ecx
1406
movl %ecx,8(%ebx)
1407
jnc .L040pw_nc2
1408
1409
movl 12(%esi),%ecx
1410
subl %eax,%ecx
1411
movl %ecx,12(%ebx)
1412
jnc .L041pw_nc3
1413
1414
movl 16(%esi),%ecx
1415
subl %eax,%ecx
1416
movl %ecx,16(%ebx)
1417
jnc .L042pw_nc4
1418
1419
movl 20(%esi),%ecx
1420
subl %eax,%ecx
1421
movl %ecx,20(%ebx)
1422
jnc .L043pw_nc5
1423
1424
movl 24(%esi),%ecx
1425
subl %eax,%ecx
1426
movl %ecx,24(%ebx)
1427
jnc .L044pw_nc6
1428
1429
movl 28(%esi),%ecx
1430
subl %eax,%ecx
1431
movl %ecx,28(%ebx)
1432
jnc .L045pw_nc7
1433
1434
addl $32,%esi
1435
addl $32,%ebx
1436
subl $8,%ebp
1437
jnz .L037pw_pos_loop
1438
.L036pw_pos_finish:
1439
movl 36(%esp),%ebp
1440
andl $7,%ebp
1441
jz .L032pw_end
1442
1443
movl (%esi),%ecx
1444
subl %eax,%ecx
1445
movl %ecx,(%ebx)
1446
jnc .L046pw_tail_nc0
1447
decl %ebp
1448
jz .L032pw_end
1449
1450
movl 4(%esi),%ecx
1451
subl %eax,%ecx
1452
movl %ecx,4(%ebx)
1453
jnc .L047pw_tail_nc1
1454
decl %ebp
1455
jz .L032pw_end
1456
1457
movl 8(%esi),%ecx
1458
subl %eax,%ecx
1459
movl %ecx,8(%ebx)
1460
jnc .L048pw_tail_nc2
1461
decl %ebp
1462
jz .L032pw_end
1463
1464
movl 12(%esi),%ecx
1465
subl %eax,%ecx
1466
movl %ecx,12(%ebx)
1467
jnc .L049pw_tail_nc3
1468
decl %ebp
1469
jz .L032pw_end
1470
1471
movl 16(%esi),%ecx
1472
subl %eax,%ecx
1473
movl %ecx,16(%ebx)
1474
jnc .L050pw_tail_nc4
1475
decl %ebp
1476
jz .L032pw_end
1477
1478
movl 20(%esi),%ecx
1479
subl %eax,%ecx
1480
movl %ecx,20(%ebx)
1481
jnc .L051pw_tail_nc5
1482
decl %ebp
1483
jz .L032pw_end
1484
1485
movl 24(%esi),%ecx
1486
subl %eax,%ecx
1487
movl %ecx,24(%ebx)
1488
jnc .L052pw_tail_nc6
1489
movl $1,%eax
1490
jmp .L032pw_end
1491
.L053pw_nc_loop:
1492
movl (%esi),%ecx
1493
movl %ecx,(%ebx)
1494
.L038pw_nc0:
1495
movl 4(%esi),%ecx
1496
movl %ecx,4(%ebx)
1497
.L039pw_nc1:
1498
movl 8(%esi),%ecx
1499
movl %ecx,8(%ebx)
1500
.L040pw_nc2:
1501
movl 12(%esi),%ecx
1502
movl %ecx,12(%ebx)
1503
.L041pw_nc3:
1504
movl 16(%esi),%ecx
1505
movl %ecx,16(%ebx)
1506
.L042pw_nc4:
1507
movl 20(%esi),%ecx
1508
movl %ecx,20(%ebx)
1509
.L043pw_nc5:
1510
movl 24(%esi),%ecx
1511
movl %ecx,24(%ebx)
1512
.L044pw_nc6:
1513
movl 28(%esi),%ecx
1514
movl %ecx,28(%ebx)
1515
.L045pw_nc7:
1516
1517
addl $32,%esi
1518
addl $32,%ebx
1519
subl $8,%ebp
1520
jnz .L053pw_nc_loop
1521
movl 36(%esp),%ebp
1522
andl $7,%ebp
1523
jz .L054pw_nc_end
1524
movl (%esi),%ecx
1525
movl %ecx,(%ebx)
1526
.L046pw_tail_nc0:
1527
decl %ebp
1528
jz .L054pw_nc_end
1529
movl 4(%esi),%ecx
1530
movl %ecx,4(%ebx)
1531
.L047pw_tail_nc1:
1532
decl %ebp
1533
jz .L054pw_nc_end
1534
movl 8(%esi),%ecx
1535
movl %ecx,8(%ebx)
1536
.L048pw_tail_nc2:
1537
decl %ebp
1538
jz .L054pw_nc_end
1539
movl 12(%esi),%ecx
1540
movl %ecx,12(%ebx)
1541
.L049pw_tail_nc3:
1542
decl %ebp
1543
jz .L054pw_nc_end
1544
movl 16(%esi),%ecx
1545
movl %ecx,16(%ebx)
1546
.L050pw_tail_nc4:
1547
decl %ebp
1548
jz .L054pw_nc_end
1549
movl 20(%esi),%ecx
1550
movl %ecx,20(%ebx)
1551
.L051pw_tail_nc5:
1552
decl %ebp
1553
jz .L054pw_nc_end
1554
movl 24(%esi),%ecx
1555
movl %ecx,24(%ebx)
1556
.L052pw_tail_nc6:
1557
.L054pw_nc_end:
1558
movl $0,%eax
1559
.L032pw_end:
1560
popl %edi
1561
popl %esi
1562
popl %ebx
1563
popl %ebp
1564
ret
1565
.size bn_sub_part_words,.-.L_bn_sub_part_words_begin
1566
.comm OPENSSL_ia32cap_P,40,4
1567
1568
.section ".note.gnu.property", "a"
1569
.p2align 2
1570
.long 1f - 0f
1571
.long 4f - 1f
1572
.long 5
1573
0:
1574
.asciz "GNU"
1575
1:
1576
.p2align 2
1577
.long 0xc0000002
1578
.long 3f - 2f
1579
2:
1580
.long 3
1581
3:
1582
.p2align 2
1583
4:
1584
#else
1585
.text
1586
.globl bn_mul_add_words
1587
.type bn_mul_add_words,@function
1588
.align 16
1589
bn_mul_add_words:
1590
.L_bn_mul_add_words_begin:
1591
#ifdef __CET__
1592
1593
.byte 243,15,30,251
1594
#endif
1595
1596
leal OPENSSL_ia32cap_P,%eax
1597
btl $26,(%eax)
1598
jnc .L000maw_non_sse2
1599
movl 4(%esp),%eax
1600
movl 8(%esp),%edx
1601
movl 12(%esp),%ecx
1602
movd 16(%esp),%mm0
1603
pxor %mm1,%mm1
1604
jmp .L001maw_sse2_entry
1605
.align 16
1606
.L002maw_sse2_unrolled:
1607
movd (%eax),%mm3
1608
paddq %mm3,%mm1
1609
movd (%edx),%mm2
1610
pmuludq %mm0,%mm2
1611
movd 4(%edx),%mm4
1612
pmuludq %mm0,%mm4
1613
movd 8(%edx),%mm6
1614
pmuludq %mm0,%mm6
1615
movd 12(%edx),%mm7
1616
pmuludq %mm0,%mm7
1617
paddq %mm2,%mm1
1618
movd 4(%eax),%mm3
1619
paddq %mm4,%mm3
1620
movd 8(%eax),%mm5
1621
paddq %mm6,%mm5
1622
movd 12(%eax),%mm4
1623
paddq %mm4,%mm7
1624
movd %mm1,(%eax)
1625
movd 16(%edx),%mm2
1626
pmuludq %mm0,%mm2
1627
psrlq $32,%mm1
1628
movd 20(%edx),%mm4
1629
pmuludq %mm0,%mm4
1630
paddq %mm3,%mm1
1631
movd 24(%edx),%mm6
1632
pmuludq %mm0,%mm6
1633
movd %mm1,4(%eax)
1634
psrlq $32,%mm1
1635
movd 28(%edx),%mm3
1636
addl $32,%edx
1637
pmuludq %mm0,%mm3
1638
paddq %mm5,%mm1
1639
movd 16(%eax),%mm5
1640
paddq %mm5,%mm2
1641
movd %mm1,8(%eax)
1642
psrlq $32,%mm1
1643
paddq %mm7,%mm1
1644
movd 20(%eax),%mm5
1645
paddq %mm5,%mm4
1646
movd %mm1,12(%eax)
1647
psrlq $32,%mm1
1648
paddq %mm2,%mm1
1649
movd 24(%eax),%mm5
1650
paddq %mm5,%mm6
1651
movd %mm1,16(%eax)
1652
psrlq $32,%mm1
1653
paddq %mm4,%mm1
1654
movd 28(%eax),%mm5
1655
paddq %mm5,%mm3
1656
movd %mm1,20(%eax)
1657
psrlq $32,%mm1
1658
paddq %mm6,%mm1
1659
movd %mm1,24(%eax)
1660
psrlq $32,%mm1
1661
paddq %mm3,%mm1
1662
movd %mm1,28(%eax)
1663
leal 32(%eax),%eax
1664
psrlq $32,%mm1
1665
subl $8,%ecx
1666
jz .L003maw_sse2_exit
1667
.L001maw_sse2_entry:
1668
testl $4294967288,%ecx
1669
jnz .L002maw_sse2_unrolled
1670
.align 4
1671
.L004maw_sse2_loop:
1672
movd (%edx),%mm2
1673
movd (%eax),%mm3
1674
pmuludq %mm0,%mm2
1675
leal 4(%edx),%edx
1676
paddq %mm3,%mm1
1677
paddq %mm2,%mm1
1678
movd %mm1,(%eax)
1679
subl $1,%ecx
1680
psrlq $32,%mm1
1681
leal 4(%eax),%eax
1682
jnz .L004maw_sse2_loop
1683
.L003maw_sse2_exit:
1684
movd %mm1,%eax
1685
emms
1686
ret
1687
.align 16
1688
.L000maw_non_sse2:
1689
pushl %ebp
1690
pushl %ebx
1691
pushl %esi
1692
pushl %edi
1693
1694
xorl %esi,%esi
1695
movl 20(%esp),%edi
1696
movl 28(%esp),%ecx
1697
movl 24(%esp),%ebx
1698
andl $4294967288,%ecx
1699
movl 32(%esp),%ebp
1700
pushl %ecx
1701
jz .L005maw_finish
1702
.align 16
1703
.L006maw_loop:
1704
1705
movl (%ebx),%eax
1706
mull %ebp
1707
addl %esi,%eax
1708
adcl $0,%edx
1709
addl (%edi),%eax
1710
adcl $0,%edx
1711
movl %eax,(%edi)
1712
movl %edx,%esi
1713
1714
movl 4(%ebx),%eax
1715
mull %ebp
1716
addl %esi,%eax
1717
adcl $0,%edx
1718
addl 4(%edi),%eax
1719
adcl $0,%edx
1720
movl %eax,4(%edi)
1721
movl %edx,%esi
1722
1723
movl 8(%ebx),%eax
1724
mull %ebp
1725
addl %esi,%eax
1726
adcl $0,%edx
1727
addl 8(%edi),%eax
1728
adcl $0,%edx
1729
movl %eax,8(%edi)
1730
movl %edx,%esi
1731
1732
movl 12(%ebx),%eax
1733
mull %ebp
1734
addl %esi,%eax
1735
adcl $0,%edx
1736
addl 12(%edi),%eax
1737
adcl $0,%edx
1738
movl %eax,12(%edi)
1739
movl %edx,%esi
1740
1741
movl 16(%ebx),%eax
1742
mull %ebp
1743
addl %esi,%eax
1744
adcl $0,%edx
1745
addl 16(%edi),%eax
1746
adcl $0,%edx
1747
movl %eax,16(%edi)
1748
movl %edx,%esi
1749
1750
movl 20(%ebx),%eax
1751
mull %ebp
1752
addl %esi,%eax
1753
adcl $0,%edx
1754
addl 20(%edi),%eax
1755
adcl $0,%edx
1756
movl %eax,20(%edi)
1757
movl %edx,%esi
1758
1759
movl 24(%ebx),%eax
1760
mull %ebp
1761
addl %esi,%eax
1762
adcl $0,%edx
1763
addl 24(%edi),%eax
1764
adcl $0,%edx
1765
movl %eax,24(%edi)
1766
movl %edx,%esi
1767
1768
movl 28(%ebx),%eax
1769
mull %ebp
1770
addl %esi,%eax
1771
adcl $0,%edx
1772
addl 28(%edi),%eax
1773
adcl $0,%edx
1774
movl %eax,28(%edi)
1775
movl %edx,%esi
1776
1777
subl $8,%ecx
1778
leal 32(%ebx),%ebx
1779
leal 32(%edi),%edi
1780
jnz .L006maw_loop
1781
.L005maw_finish:
1782
movl 32(%esp),%ecx
1783
andl $7,%ecx
1784
jnz .L007maw_finish2
1785
jmp .L008maw_end
1786
.L007maw_finish2:
1787
1788
movl (%ebx),%eax
1789
mull %ebp
1790
addl %esi,%eax
1791
adcl $0,%edx
1792
addl (%edi),%eax
1793
adcl $0,%edx
1794
decl %ecx
1795
movl %eax,(%edi)
1796
movl %edx,%esi
1797
jz .L008maw_end
1798
1799
movl 4(%ebx),%eax
1800
mull %ebp
1801
addl %esi,%eax
1802
adcl $0,%edx
1803
addl 4(%edi),%eax
1804
adcl $0,%edx
1805
decl %ecx
1806
movl %eax,4(%edi)
1807
movl %edx,%esi
1808
jz .L008maw_end
1809
1810
movl 8(%ebx),%eax
1811
mull %ebp
1812
addl %esi,%eax
1813
adcl $0,%edx
1814
addl 8(%edi),%eax
1815
adcl $0,%edx
1816
decl %ecx
1817
movl %eax,8(%edi)
1818
movl %edx,%esi
1819
jz .L008maw_end
1820
1821
movl 12(%ebx),%eax
1822
mull %ebp
1823
addl %esi,%eax
1824
adcl $0,%edx
1825
addl 12(%edi),%eax
1826
adcl $0,%edx
1827
decl %ecx
1828
movl %eax,12(%edi)
1829
movl %edx,%esi
1830
jz .L008maw_end
1831
1832
movl 16(%ebx),%eax
1833
mull %ebp
1834
addl %esi,%eax
1835
adcl $0,%edx
1836
addl 16(%edi),%eax
1837
adcl $0,%edx
1838
decl %ecx
1839
movl %eax,16(%edi)
1840
movl %edx,%esi
1841
jz .L008maw_end
1842
1843
movl 20(%ebx),%eax
1844
mull %ebp
1845
addl %esi,%eax
1846
adcl $0,%edx
1847
addl 20(%edi),%eax
1848
adcl $0,%edx
1849
decl %ecx
1850
movl %eax,20(%edi)
1851
movl %edx,%esi
1852
jz .L008maw_end
1853
1854
movl 24(%ebx),%eax
1855
mull %ebp
1856
addl %esi,%eax
1857
adcl $0,%edx
1858
addl 24(%edi),%eax
1859
adcl $0,%edx
1860
movl %eax,24(%edi)
1861
movl %edx,%esi
1862
.L008maw_end:
1863
movl %esi,%eax
1864
popl %ecx
1865
popl %edi
1866
popl %esi
1867
popl %ebx
1868
popl %ebp
1869
ret
1870
.size bn_mul_add_words,.-.L_bn_mul_add_words_begin
1871
.globl bn_mul_words
1872
.type bn_mul_words,@function
1873
.align 16
1874
bn_mul_words:
1875
.L_bn_mul_words_begin:
1876
#ifdef __CET__
1877
1878
.byte 243,15,30,251
1879
#endif
1880
1881
leal OPENSSL_ia32cap_P,%eax
1882
btl $26,(%eax)
1883
jnc .L009mw_non_sse2
1884
movl 4(%esp),%eax
1885
movl 8(%esp),%edx
1886
movl 12(%esp),%ecx
1887
movd 16(%esp),%mm0
1888
pxor %mm1,%mm1
1889
.align 16
1890
.L010mw_sse2_loop:
1891
movd (%edx),%mm2
1892
pmuludq %mm0,%mm2
1893
leal 4(%edx),%edx
1894
paddq %mm2,%mm1
1895
movd %mm1,(%eax)
1896
subl $1,%ecx
1897
psrlq $32,%mm1
1898
leal 4(%eax),%eax
1899
jnz .L010mw_sse2_loop
1900
movd %mm1,%eax
1901
emms
1902
ret
1903
.align 16
1904
.L009mw_non_sse2:
1905
pushl %ebp
1906
pushl %ebx
1907
pushl %esi
1908
pushl %edi
1909
1910
xorl %esi,%esi
1911
movl 20(%esp),%edi
1912
movl 24(%esp),%ebx
1913
movl 28(%esp),%ebp
1914
movl 32(%esp),%ecx
1915
andl $4294967288,%ebp
1916
jz .L011mw_finish
1917
.L012mw_loop:
1918
1919
movl (%ebx),%eax
1920
mull %ecx
1921
addl %esi,%eax
1922
adcl $0,%edx
1923
movl %eax,(%edi)
1924
movl %edx,%esi
1925
1926
movl 4(%ebx),%eax
1927
mull %ecx
1928
addl %esi,%eax
1929
adcl $0,%edx
1930
movl %eax,4(%edi)
1931
movl %edx,%esi
1932
1933
movl 8(%ebx),%eax
1934
mull %ecx
1935
addl %esi,%eax
1936
adcl $0,%edx
1937
movl %eax,8(%edi)
1938
movl %edx,%esi
1939
1940
movl 12(%ebx),%eax
1941
mull %ecx
1942
addl %esi,%eax
1943
adcl $0,%edx
1944
movl %eax,12(%edi)
1945
movl %edx,%esi
1946
1947
movl 16(%ebx),%eax
1948
mull %ecx
1949
addl %esi,%eax
1950
adcl $0,%edx
1951
movl %eax,16(%edi)
1952
movl %edx,%esi
1953
1954
movl 20(%ebx),%eax
1955
mull %ecx
1956
addl %esi,%eax
1957
adcl $0,%edx
1958
movl %eax,20(%edi)
1959
movl %edx,%esi
1960
1961
movl 24(%ebx),%eax
1962
mull %ecx
1963
addl %esi,%eax
1964
adcl $0,%edx
1965
movl %eax,24(%edi)
1966
movl %edx,%esi
1967
1968
movl 28(%ebx),%eax
1969
mull %ecx
1970
addl %esi,%eax
1971
adcl $0,%edx
1972
movl %eax,28(%edi)
1973
movl %edx,%esi
1974
1975
addl $32,%ebx
1976
addl $32,%edi
1977
subl $8,%ebp
1978
jz .L011mw_finish
1979
jmp .L012mw_loop
1980
.L011mw_finish:
1981
movl 28(%esp),%ebp
1982
andl $7,%ebp
1983
jnz .L013mw_finish2
1984
jmp .L014mw_end
1985
.L013mw_finish2:
1986
1987
movl (%ebx),%eax
1988
mull %ecx
1989
addl %esi,%eax
1990
adcl $0,%edx
1991
movl %eax,(%edi)
1992
movl %edx,%esi
1993
decl %ebp
1994
jz .L014mw_end
1995
1996
movl 4(%ebx),%eax
1997
mull %ecx
1998
addl %esi,%eax
1999
adcl $0,%edx
2000
movl %eax,4(%edi)
2001
movl %edx,%esi
2002
decl %ebp
2003
jz .L014mw_end
2004
2005
movl 8(%ebx),%eax
2006
mull %ecx
2007
addl %esi,%eax
2008
adcl $0,%edx
2009
movl %eax,8(%edi)
2010
movl %edx,%esi
2011
decl %ebp
2012
jz .L014mw_end
2013
2014
movl 12(%ebx),%eax
2015
mull %ecx
2016
addl %esi,%eax
2017
adcl $0,%edx
2018
movl %eax,12(%edi)
2019
movl %edx,%esi
2020
decl %ebp
2021
jz .L014mw_end
2022
2023
movl 16(%ebx),%eax
2024
mull %ecx
2025
addl %esi,%eax
2026
adcl $0,%edx
2027
movl %eax,16(%edi)
2028
movl %edx,%esi
2029
decl %ebp
2030
jz .L014mw_end
2031
2032
movl 20(%ebx),%eax
2033
mull %ecx
2034
addl %esi,%eax
2035
adcl $0,%edx
2036
movl %eax,20(%edi)
2037
movl %edx,%esi
2038
decl %ebp
2039
jz .L014mw_end
2040
2041
movl 24(%ebx),%eax
2042
mull %ecx
2043
addl %esi,%eax
2044
adcl $0,%edx
2045
movl %eax,24(%edi)
2046
movl %edx,%esi
2047
.L014mw_end:
2048
movl %esi,%eax
2049
popl %edi
2050
popl %esi
2051
popl %ebx
2052
popl %ebp
2053
ret
2054
.size bn_mul_words,.-.L_bn_mul_words_begin
2055
.globl bn_sqr_words
2056
.type bn_sqr_words,@function
2057
.align 16
2058
bn_sqr_words:
2059
.L_bn_sqr_words_begin:
2060
#ifdef __CET__
2061
2062
.byte 243,15,30,251
2063
#endif
2064
2065
leal OPENSSL_ia32cap_P,%eax
2066
btl $26,(%eax)
2067
jnc .L015sqr_non_sse2
2068
movl 4(%esp),%eax
2069
movl 8(%esp),%edx
2070
movl 12(%esp),%ecx
2071
.align 16
2072
.L016sqr_sse2_loop:
2073
movd (%edx),%mm0
2074
pmuludq %mm0,%mm0
2075
leal 4(%edx),%edx
2076
movq %mm0,(%eax)
2077
subl $1,%ecx
2078
leal 8(%eax),%eax
2079
jnz .L016sqr_sse2_loop
2080
emms
2081
ret
2082
.align 16
2083
.L015sqr_non_sse2:
2084
pushl %ebp
2085
pushl %ebx
2086
pushl %esi
2087
pushl %edi
2088
2089
movl 20(%esp),%esi
2090
movl 24(%esp),%edi
2091
movl 28(%esp),%ebx
2092
andl $4294967288,%ebx
2093
jz .L017sw_finish
2094
.L018sw_loop:
2095
2096
movl (%edi),%eax
2097
mull %eax
2098
movl %eax,(%esi)
2099
movl %edx,4(%esi)
2100
2101
movl 4(%edi),%eax
2102
mull %eax
2103
movl %eax,8(%esi)
2104
movl %edx,12(%esi)
2105
2106
movl 8(%edi),%eax
2107
mull %eax
2108
movl %eax,16(%esi)
2109
movl %edx,20(%esi)
2110
2111
movl 12(%edi),%eax
2112
mull %eax
2113
movl %eax,24(%esi)
2114
movl %edx,28(%esi)
2115
2116
movl 16(%edi),%eax
2117
mull %eax
2118
movl %eax,32(%esi)
2119
movl %edx,36(%esi)
2120
2121
movl 20(%edi),%eax
2122
mull %eax
2123
movl %eax,40(%esi)
2124
movl %edx,44(%esi)
2125
2126
movl 24(%edi),%eax
2127
mull %eax
2128
movl %eax,48(%esi)
2129
movl %edx,52(%esi)
2130
2131
movl 28(%edi),%eax
2132
mull %eax
2133
movl %eax,56(%esi)
2134
movl %edx,60(%esi)
2135
2136
addl $32,%edi
2137
addl $64,%esi
2138
subl $8,%ebx
2139
jnz .L018sw_loop
2140
.L017sw_finish:
2141
movl 28(%esp),%ebx
2142
andl $7,%ebx
2143
jz .L019sw_end
2144
2145
movl (%edi),%eax
2146
mull %eax
2147
movl %eax,(%esi)
2148
decl %ebx
2149
movl %edx,4(%esi)
2150
jz .L019sw_end
2151
2152
movl 4(%edi),%eax
2153
mull %eax
2154
movl %eax,8(%esi)
2155
decl %ebx
2156
movl %edx,12(%esi)
2157
jz .L019sw_end
2158
2159
movl 8(%edi),%eax
2160
mull %eax
2161
movl %eax,16(%esi)
2162
decl %ebx
2163
movl %edx,20(%esi)
2164
jz .L019sw_end
2165
2166
movl 12(%edi),%eax
2167
mull %eax
2168
movl %eax,24(%esi)
2169
decl %ebx
2170
movl %edx,28(%esi)
2171
jz .L019sw_end
2172
2173
movl 16(%edi),%eax
2174
mull %eax
2175
movl %eax,32(%esi)
2176
decl %ebx
2177
movl %edx,36(%esi)
2178
jz .L019sw_end
2179
2180
movl 20(%edi),%eax
2181
mull %eax
2182
movl %eax,40(%esi)
2183
decl %ebx
2184
movl %edx,44(%esi)
2185
jz .L019sw_end
2186
2187
movl 24(%edi),%eax
2188
mull %eax
2189
movl %eax,48(%esi)
2190
movl %edx,52(%esi)
2191
.L019sw_end:
2192
popl %edi
2193
popl %esi
2194
popl %ebx
2195
popl %ebp
2196
ret
2197
.size bn_sqr_words,.-.L_bn_sqr_words_begin
2198
.globl bn_div_words
2199
.type bn_div_words,@function
2200
.align 16
2201
bn_div_words:
2202
.L_bn_div_words_begin:
2203
#ifdef __CET__
2204
2205
.byte 243,15,30,251
2206
#endif
2207
2208
movl 4(%esp),%edx
2209
movl 8(%esp),%eax
2210
movl 12(%esp),%ecx
2211
divl %ecx
2212
ret
2213
.size bn_div_words,.-.L_bn_div_words_begin
2214
.globl bn_add_words
2215
.type bn_add_words,@function
2216
.align 16
2217
bn_add_words:
2218
.L_bn_add_words_begin:
2219
#ifdef __CET__
2220
2221
.byte 243,15,30,251
2222
#endif
2223
2224
pushl %ebp
2225
pushl %ebx
2226
pushl %esi
2227
pushl %edi
2228
2229
movl 20(%esp),%ebx
2230
movl 24(%esp),%esi
2231
movl 28(%esp),%edi
2232
movl 32(%esp),%ebp
2233
xorl %eax,%eax
2234
andl $4294967288,%ebp
2235
jz .L020aw_finish
2236
.L021aw_loop:
2237
2238
movl (%esi),%ecx
2239
movl (%edi),%edx
2240
addl %eax,%ecx
2241
movl $0,%eax
2242
adcl %eax,%eax
2243
addl %edx,%ecx
2244
adcl $0,%eax
2245
movl %ecx,(%ebx)
2246
2247
movl 4(%esi),%ecx
2248
movl 4(%edi),%edx
2249
addl %eax,%ecx
2250
movl $0,%eax
2251
adcl %eax,%eax
2252
addl %edx,%ecx
2253
adcl $0,%eax
2254
movl %ecx,4(%ebx)
2255
2256
movl 8(%esi),%ecx
2257
movl 8(%edi),%edx
2258
addl %eax,%ecx
2259
movl $0,%eax
2260
adcl %eax,%eax
2261
addl %edx,%ecx
2262
adcl $0,%eax
2263
movl %ecx,8(%ebx)
2264
2265
movl 12(%esi),%ecx
2266
movl 12(%edi),%edx
2267
addl %eax,%ecx
2268
movl $0,%eax
2269
adcl %eax,%eax
2270
addl %edx,%ecx
2271
adcl $0,%eax
2272
movl %ecx,12(%ebx)
2273
2274
movl 16(%esi),%ecx
2275
movl 16(%edi),%edx
2276
addl %eax,%ecx
2277
movl $0,%eax
2278
adcl %eax,%eax
2279
addl %edx,%ecx
2280
adcl $0,%eax
2281
movl %ecx,16(%ebx)
2282
2283
movl 20(%esi),%ecx
2284
movl 20(%edi),%edx
2285
addl %eax,%ecx
2286
movl $0,%eax
2287
adcl %eax,%eax
2288
addl %edx,%ecx
2289
adcl $0,%eax
2290
movl %ecx,20(%ebx)
2291
2292
movl 24(%esi),%ecx
2293
movl 24(%edi),%edx
2294
addl %eax,%ecx
2295
movl $0,%eax
2296
adcl %eax,%eax
2297
addl %edx,%ecx
2298
adcl $0,%eax
2299
movl %ecx,24(%ebx)
2300
2301
movl 28(%esi),%ecx
2302
movl 28(%edi),%edx
2303
addl %eax,%ecx
2304
movl $0,%eax
2305
adcl %eax,%eax
2306
addl %edx,%ecx
2307
adcl $0,%eax
2308
movl %ecx,28(%ebx)
2309
2310
addl $32,%esi
2311
addl $32,%edi
2312
addl $32,%ebx
2313
subl $8,%ebp
2314
jnz .L021aw_loop
2315
.L020aw_finish:
2316
movl 32(%esp),%ebp
2317
andl $7,%ebp
2318
jz .L022aw_end
2319
2320
movl (%esi),%ecx
2321
movl (%edi),%edx
2322
addl %eax,%ecx
2323
movl $0,%eax
2324
adcl %eax,%eax
2325
addl %edx,%ecx
2326
adcl $0,%eax
2327
decl %ebp
2328
movl %ecx,(%ebx)
2329
jz .L022aw_end
2330
2331
movl 4(%esi),%ecx
2332
movl 4(%edi),%edx
2333
addl %eax,%ecx
2334
movl $0,%eax
2335
adcl %eax,%eax
2336
addl %edx,%ecx
2337
adcl $0,%eax
2338
decl %ebp
2339
movl %ecx,4(%ebx)
2340
jz .L022aw_end
2341
2342
movl 8(%esi),%ecx
2343
movl 8(%edi),%edx
2344
addl %eax,%ecx
2345
movl $0,%eax
2346
adcl %eax,%eax
2347
addl %edx,%ecx
2348
adcl $0,%eax
2349
decl %ebp
2350
movl %ecx,8(%ebx)
2351
jz .L022aw_end
2352
2353
movl 12(%esi),%ecx
2354
movl 12(%edi),%edx
2355
addl %eax,%ecx
2356
movl $0,%eax
2357
adcl %eax,%eax
2358
addl %edx,%ecx
2359
adcl $0,%eax
2360
decl %ebp
2361
movl %ecx,12(%ebx)
2362
jz .L022aw_end
2363
2364
movl 16(%esi),%ecx
2365
movl 16(%edi),%edx
2366
addl %eax,%ecx
2367
movl $0,%eax
2368
adcl %eax,%eax
2369
addl %edx,%ecx
2370
adcl $0,%eax
2371
decl %ebp
2372
movl %ecx,16(%ebx)
2373
jz .L022aw_end
2374
2375
movl 20(%esi),%ecx
2376
movl 20(%edi),%edx
2377
addl %eax,%ecx
2378
movl $0,%eax
2379
adcl %eax,%eax
2380
addl %edx,%ecx
2381
adcl $0,%eax
2382
decl %ebp
2383
movl %ecx,20(%ebx)
2384
jz .L022aw_end
2385
2386
movl 24(%esi),%ecx
2387
movl 24(%edi),%edx
2388
addl %eax,%ecx
2389
movl $0,%eax
2390
adcl %eax,%eax
2391
addl %edx,%ecx
2392
adcl $0,%eax
2393
movl %ecx,24(%ebx)
2394
.L022aw_end:
2395
popl %edi
2396
popl %esi
2397
popl %ebx
2398
popl %ebp
2399
ret
2400
.size bn_add_words,.-.L_bn_add_words_begin
2401
.globl bn_sub_words
2402
.type bn_sub_words,@function
2403
.align 16
2404
bn_sub_words:
2405
.L_bn_sub_words_begin:
2406
#ifdef __CET__
2407
2408
.byte 243,15,30,251
2409
#endif
2410
2411
pushl %ebp
2412
pushl %ebx
2413
pushl %esi
2414
pushl %edi
2415
2416
movl 20(%esp),%ebx
2417
movl 24(%esp),%esi
2418
movl 28(%esp),%edi
2419
movl 32(%esp),%ebp
2420
xorl %eax,%eax
2421
andl $4294967288,%ebp
2422
jz .L023aw_finish
2423
.L024aw_loop:
2424
2425
movl (%esi),%ecx
2426
movl (%edi),%edx
2427
subl %eax,%ecx
2428
movl $0,%eax
2429
adcl %eax,%eax
2430
subl %edx,%ecx
2431
adcl $0,%eax
2432
movl %ecx,(%ebx)
2433
2434
movl 4(%esi),%ecx
2435
movl 4(%edi),%edx
2436
subl %eax,%ecx
2437
movl $0,%eax
2438
adcl %eax,%eax
2439
subl %edx,%ecx
2440
adcl $0,%eax
2441
movl %ecx,4(%ebx)
2442
2443
movl 8(%esi),%ecx
2444
movl 8(%edi),%edx
2445
subl %eax,%ecx
2446
movl $0,%eax
2447
adcl %eax,%eax
2448
subl %edx,%ecx
2449
adcl $0,%eax
2450
movl %ecx,8(%ebx)
2451
2452
movl 12(%esi),%ecx
2453
movl 12(%edi),%edx
2454
subl %eax,%ecx
2455
movl $0,%eax
2456
adcl %eax,%eax
2457
subl %edx,%ecx
2458
adcl $0,%eax
2459
movl %ecx,12(%ebx)
2460
2461
movl 16(%esi),%ecx
2462
movl 16(%edi),%edx
2463
subl %eax,%ecx
2464
movl $0,%eax
2465
adcl %eax,%eax
2466
subl %edx,%ecx
2467
adcl $0,%eax
2468
movl %ecx,16(%ebx)
2469
2470
movl 20(%esi),%ecx
2471
movl 20(%edi),%edx
2472
subl %eax,%ecx
2473
movl $0,%eax
2474
adcl %eax,%eax
2475
subl %edx,%ecx
2476
adcl $0,%eax
2477
movl %ecx,20(%ebx)
2478
2479
movl 24(%esi),%ecx
2480
movl 24(%edi),%edx
2481
subl %eax,%ecx
2482
movl $0,%eax
2483
adcl %eax,%eax
2484
subl %edx,%ecx
2485
adcl $0,%eax
2486
movl %ecx,24(%ebx)
2487
2488
movl 28(%esi),%ecx
2489
movl 28(%edi),%edx
2490
subl %eax,%ecx
2491
movl $0,%eax
2492
adcl %eax,%eax
2493
subl %edx,%ecx
2494
adcl $0,%eax
2495
movl %ecx,28(%ebx)
2496
2497
addl $32,%esi
2498
addl $32,%edi
2499
addl $32,%ebx
2500
subl $8,%ebp
2501
jnz .L024aw_loop
2502
.L023aw_finish:
2503
movl 32(%esp),%ebp
2504
andl $7,%ebp
2505
jz .L025aw_end
2506
2507
movl (%esi),%ecx
2508
movl (%edi),%edx
2509
subl %eax,%ecx
2510
movl $0,%eax
2511
adcl %eax,%eax
2512
subl %edx,%ecx
2513
adcl $0,%eax
2514
decl %ebp
2515
movl %ecx,(%ebx)
2516
jz .L025aw_end
2517
2518
movl 4(%esi),%ecx
2519
movl 4(%edi),%edx
2520
subl %eax,%ecx
2521
movl $0,%eax
2522
adcl %eax,%eax
2523
subl %edx,%ecx
2524
adcl $0,%eax
2525
decl %ebp
2526
movl %ecx,4(%ebx)
2527
jz .L025aw_end
2528
2529
movl 8(%esi),%ecx
2530
movl 8(%edi),%edx
2531
subl %eax,%ecx
2532
movl $0,%eax
2533
adcl %eax,%eax
2534
subl %edx,%ecx
2535
adcl $0,%eax
2536
decl %ebp
2537
movl %ecx,8(%ebx)
2538
jz .L025aw_end
2539
2540
movl 12(%esi),%ecx
2541
movl 12(%edi),%edx
2542
subl %eax,%ecx
2543
movl $0,%eax
2544
adcl %eax,%eax
2545
subl %edx,%ecx
2546
adcl $0,%eax
2547
decl %ebp
2548
movl %ecx,12(%ebx)
2549
jz .L025aw_end
2550
2551
movl 16(%esi),%ecx
2552
movl 16(%edi),%edx
2553
subl %eax,%ecx
2554
movl $0,%eax
2555
adcl %eax,%eax
2556
subl %edx,%ecx
2557
adcl $0,%eax
2558
decl %ebp
2559
movl %ecx,16(%ebx)
2560
jz .L025aw_end
2561
2562
movl 20(%esi),%ecx
2563
movl 20(%edi),%edx
2564
subl %eax,%ecx
2565
movl $0,%eax
2566
adcl %eax,%eax
2567
subl %edx,%ecx
2568
adcl $0,%eax
2569
decl %ebp
2570
movl %ecx,20(%ebx)
2571
jz .L025aw_end
2572
2573
movl 24(%esi),%ecx
2574
movl 24(%edi),%edx
2575
subl %eax,%ecx
2576
movl $0,%eax
2577
adcl %eax,%eax
2578
subl %edx,%ecx
2579
adcl $0,%eax
2580
movl %ecx,24(%ebx)
2581
.L025aw_end:
2582
popl %edi
2583
popl %esi
2584
popl %ebx
2585
popl %ebp
2586
ret
2587
.size bn_sub_words,.-.L_bn_sub_words_begin
2588
.globl bn_sub_part_words
2589
.type bn_sub_part_words,@function
2590
.align 16
2591
bn_sub_part_words:
2592
.L_bn_sub_part_words_begin:
2593
#ifdef __CET__
2594
2595
.byte 243,15,30,251
2596
#endif
2597
2598
pushl %ebp
2599
pushl %ebx
2600
pushl %esi
2601
pushl %edi
2602
2603
movl 20(%esp),%ebx
2604
movl 24(%esp),%esi
2605
movl 28(%esp),%edi
2606
movl 32(%esp),%ebp
2607
xorl %eax,%eax
2608
andl $4294967288,%ebp
2609
jz .L026aw_finish
2610
.L027aw_loop:
2611
2612
movl (%esi),%ecx
2613
movl (%edi),%edx
2614
subl %eax,%ecx
2615
movl $0,%eax
2616
adcl %eax,%eax
2617
subl %edx,%ecx
2618
adcl $0,%eax
2619
movl %ecx,(%ebx)
2620
2621
movl 4(%esi),%ecx
2622
movl 4(%edi),%edx
2623
subl %eax,%ecx
2624
movl $0,%eax
2625
adcl %eax,%eax
2626
subl %edx,%ecx
2627
adcl $0,%eax
2628
movl %ecx,4(%ebx)
2629
2630
movl 8(%esi),%ecx
2631
movl 8(%edi),%edx
2632
subl %eax,%ecx
2633
movl $0,%eax
2634
adcl %eax,%eax
2635
subl %edx,%ecx
2636
adcl $0,%eax
2637
movl %ecx,8(%ebx)
2638
2639
movl 12(%esi),%ecx
2640
movl 12(%edi),%edx
2641
subl %eax,%ecx
2642
movl $0,%eax
2643
adcl %eax,%eax
2644
subl %edx,%ecx
2645
adcl $0,%eax
2646
movl %ecx,12(%ebx)
2647
2648
movl 16(%esi),%ecx
2649
movl 16(%edi),%edx
2650
subl %eax,%ecx
2651
movl $0,%eax
2652
adcl %eax,%eax
2653
subl %edx,%ecx
2654
adcl $0,%eax
2655
movl %ecx,16(%ebx)
2656
2657
movl 20(%esi),%ecx
2658
movl 20(%edi),%edx
2659
subl %eax,%ecx
2660
movl $0,%eax
2661
adcl %eax,%eax
2662
subl %edx,%ecx
2663
adcl $0,%eax
2664
movl %ecx,20(%ebx)
2665
2666
movl 24(%esi),%ecx
2667
movl 24(%edi),%edx
2668
subl %eax,%ecx
2669
movl $0,%eax
2670
adcl %eax,%eax
2671
subl %edx,%ecx
2672
adcl $0,%eax
2673
movl %ecx,24(%ebx)
2674
2675
movl 28(%esi),%ecx
2676
movl 28(%edi),%edx
2677
subl %eax,%ecx
2678
movl $0,%eax
2679
adcl %eax,%eax
2680
subl %edx,%ecx
2681
adcl $0,%eax
2682
movl %ecx,28(%ebx)
2683
2684
addl $32,%esi
2685
addl $32,%edi
2686
addl $32,%ebx
2687
subl $8,%ebp
2688
jnz .L027aw_loop
2689
.L026aw_finish:
2690
movl 32(%esp),%ebp
2691
andl $7,%ebp
2692
jz .L028aw_end
2693
2694
movl (%esi),%ecx
2695
movl (%edi),%edx
2696
subl %eax,%ecx
2697
movl $0,%eax
2698
adcl %eax,%eax
2699
subl %edx,%ecx
2700
adcl $0,%eax
2701
movl %ecx,(%ebx)
2702
addl $4,%esi
2703
addl $4,%edi
2704
addl $4,%ebx
2705
decl %ebp
2706
jz .L028aw_end
2707
2708
movl (%esi),%ecx
2709
movl (%edi),%edx
2710
subl %eax,%ecx
2711
movl $0,%eax
2712
adcl %eax,%eax
2713
subl %edx,%ecx
2714
adcl $0,%eax
2715
movl %ecx,(%ebx)
2716
addl $4,%esi
2717
addl $4,%edi
2718
addl $4,%ebx
2719
decl %ebp
2720
jz .L028aw_end
2721
2722
movl (%esi),%ecx
2723
movl (%edi),%edx
2724
subl %eax,%ecx
2725
movl $0,%eax
2726
adcl %eax,%eax
2727
subl %edx,%ecx
2728
adcl $0,%eax
2729
movl %ecx,(%ebx)
2730
addl $4,%esi
2731
addl $4,%edi
2732
addl $4,%ebx
2733
decl %ebp
2734
jz .L028aw_end
2735
2736
movl (%esi),%ecx
2737
movl (%edi),%edx
2738
subl %eax,%ecx
2739
movl $0,%eax
2740
adcl %eax,%eax
2741
subl %edx,%ecx
2742
adcl $0,%eax
2743
movl %ecx,(%ebx)
2744
addl $4,%esi
2745
addl $4,%edi
2746
addl $4,%ebx
2747
decl %ebp
2748
jz .L028aw_end
2749
2750
movl (%esi),%ecx
2751
movl (%edi),%edx
2752
subl %eax,%ecx
2753
movl $0,%eax
2754
adcl %eax,%eax
2755
subl %edx,%ecx
2756
adcl $0,%eax
2757
movl %ecx,(%ebx)
2758
addl $4,%esi
2759
addl $4,%edi
2760
addl $4,%ebx
2761
decl %ebp
2762
jz .L028aw_end
2763
2764
movl (%esi),%ecx
2765
movl (%edi),%edx
2766
subl %eax,%ecx
2767
movl $0,%eax
2768
adcl %eax,%eax
2769
subl %edx,%ecx
2770
adcl $0,%eax
2771
movl %ecx,(%ebx)
2772
addl $4,%esi
2773
addl $4,%edi
2774
addl $4,%ebx
2775
decl %ebp
2776
jz .L028aw_end
2777
2778
movl (%esi),%ecx
2779
movl (%edi),%edx
2780
subl %eax,%ecx
2781
movl $0,%eax
2782
adcl %eax,%eax
2783
subl %edx,%ecx
2784
adcl $0,%eax
2785
movl %ecx,(%ebx)
2786
addl $4,%esi
2787
addl $4,%edi
2788
addl $4,%ebx
2789
.L028aw_end:
2790
cmpl $0,36(%esp)
2791
je .L029pw_end
2792
movl 36(%esp),%ebp
2793
cmpl $0,%ebp
2794
je .L029pw_end
2795
jge .L030pw_pos
2796
2797
movl $0,%edx
2798
subl %ebp,%edx
2799
movl %edx,%ebp
2800
andl $4294967288,%ebp
2801
jz .L031pw_neg_finish
2802
.L032pw_neg_loop:
2803
2804
movl $0,%ecx
2805
movl (%edi),%edx
2806
subl %eax,%ecx
2807
movl $0,%eax
2808
adcl %eax,%eax
2809
subl %edx,%ecx
2810
adcl $0,%eax
2811
movl %ecx,(%ebx)
2812
2813
movl $0,%ecx
2814
movl 4(%edi),%edx
2815
subl %eax,%ecx
2816
movl $0,%eax
2817
adcl %eax,%eax
2818
subl %edx,%ecx
2819
adcl $0,%eax
2820
movl %ecx,4(%ebx)
2821
2822
movl $0,%ecx
2823
movl 8(%edi),%edx
2824
subl %eax,%ecx
2825
movl $0,%eax
2826
adcl %eax,%eax
2827
subl %edx,%ecx
2828
adcl $0,%eax
2829
movl %ecx,8(%ebx)
2830
2831
movl $0,%ecx
2832
movl 12(%edi),%edx
2833
subl %eax,%ecx
2834
movl $0,%eax
2835
adcl %eax,%eax
2836
subl %edx,%ecx
2837
adcl $0,%eax
2838
movl %ecx,12(%ebx)
2839
2840
movl $0,%ecx
2841
movl 16(%edi),%edx
2842
subl %eax,%ecx
2843
movl $0,%eax
2844
adcl %eax,%eax
2845
subl %edx,%ecx
2846
adcl $0,%eax
2847
movl %ecx,16(%ebx)
2848
2849
movl $0,%ecx
2850
movl 20(%edi),%edx
2851
subl %eax,%ecx
2852
movl $0,%eax
2853
adcl %eax,%eax
2854
subl %edx,%ecx
2855
adcl $0,%eax
2856
movl %ecx,20(%ebx)
2857
2858
movl $0,%ecx
2859
movl 24(%edi),%edx
2860
subl %eax,%ecx
2861
movl $0,%eax
2862
adcl %eax,%eax
2863
subl %edx,%ecx
2864
adcl $0,%eax
2865
movl %ecx,24(%ebx)
2866
2867
movl $0,%ecx
2868
movl 28(%edi),%edx
2869
subl %eax,%ecx
2870
movl $0,%eax
2871
adcl %eax,%eax
2872
subl %edx,%ecx
2873
adcl $0,%eax
2874
movl %ecx,28(%ebx)
2875
2876
addl $32,%edi
2877
addl $32,%ebx
2878
subl $8,%ebp
2879
jnz .L032pw_neg_loop
2880
.L031pw_neg_finish:
2881
movl 36(%esp),%edx
2882
movl $0,%ebp
2883
subl %edx,%ebp
2884
andl $7,%ebp
2885
jz .L029pw_end
2886
2887
movl $0,%ecx
2888
movl (%edi),%edx
2889
subl %eax,%ecx
2890
movl $0,%eax
2891
adcl %eax,%eax
2892
subl %edx,%ecx
2893
adcl $0,%eax
2894
decl %ebp
2895
movl %ecx,(%ebx)
2896
jz .L029pw_end
2897
2898
movl $0,%ecx
2899
movl 4(%edi),%edx
2900
subl %eax,%ecx
2901
movl $0,%eax
2902
adcl %eax,%eax
2903
subl %edx,%ecx
2904
adcl $0,%eax
2905
decl %ebp
2906
movl %ecx,4(%ebx)
2907
jz .L029pw_end
2908
2909
movl $0,%ecx
2910
movl 8(%edi),%edx
2911
subl %eax,%ecx
2912
movl $0,%eax
2913
adcl %eax,%eax
2914
subl %edx,%ecx
2915
adcl $0,%eax
2916
decl %ebp
2917
movl %ecx,8(%ebx)
2918
jz .L029pw_end
2919
2920
movl $0,%ecx
2921
movl 12(%edi),%edx
2922
subl %eax,%ecx
2923
movl $0,%eax
2924
adcl %eax,%eax
2925
subl %edx,%ecx
2926
adcl $0,%eax
2927
decl %ebp
2928
movl %ecx,12(%ebx)
2929
jz .L029pw_end
2930
2931
movl $0,%ecx
2932
movl 16(%edi),%edx
2933
subl %eax,%ecx
2934
movl $0,%eax
2935
adcl %eax,%eax
2936
subl %edx,%ecx
2937
adcl $0,%eax
2938
decl %ebp
2939
movl %ecx,16(%ebx)
2940
jz .L029pw_end
2941
2942
movl $0,%ecx
2943
movl 20(%edi),%edx
2944
subl %eax,%ecx
2945
movl $0,%eax
2946
adcl %eax,%eax
2947
subl %edx,%ecx
2948
adcl $0,%eax
2949
decl %ebp
2950
movl %ecx,20(%ebx)
2951
jz .L029pw_end
2952
2953
movl $0,%ecx
2954
movl 24(%edi),%edx
2955
subl %eax,%ecx
2956
movl $0,%eax
2957
adcl %eax,%eax
2958
subl %edx,%ecx
2959
adcl $0,%eax
2960
movl %ecx,24(%ebx)
2961
jmp .L029pw_end
2962
.L030pw_pos:
2963
andl $4294967288,%ebp
2964
jz .L033pw_pos_finish
2965
.L034pw_pos_loop:
2966
2967
movl (%esi),%ecx
2968
subl %eax,%ecx
2969
movl %ecx,(%ebx)
2970
jnc .L035pw_nc0
2971
2972
movl 4(%esi),%ecx
2973
subl %eax,%ecx
2974
movl %ecx,4(%ebx)
2975
jnc .L036pw_nc1
2976
2977
movl 8(%esi),%ecx
2978
subl %eax,%ecx
2979
movl %ecx,8(%ebx)
2980
jnc .L037pw_nc2
2981
2982
movl 12(%esi),%ecx
2983
subl %eax,%ecx
2984
movl %ecx,12(%ebx)
2985
jnc .L038pw_nc3
2986
2987
movl 16(%esi),%ecx
2988
subl %eax,%ecx
2989
movl %ecx,16(%ebx)
2990
jnc .L039pw_nc4
2991
2992
movl 20(%esi),%ecx
2993
subl %eax,%ecx
2994
movl %ecx,20(%ebx)
2995
jnc .L040pw_nc5
2996
2997
movl 24(%esi),%ecx
2998
subl %eax,%ecx
2999
movl %ecx,24(%ebx)
3000
jnc .L041pw_nc6
3001
3002
movl 28(%esi),%ecx
3003
subl %eax,%ecx
3004
movl %ecx,28(%ebx)
3005
jnc .L042pw_nc7
3006
3007
addl $32,%esi
3008
addl $32,%ebx
3009
subl $8,%ebp
3010
jnz .L034pw_pos_loop
3011
.L033pw_pos_finish:
3012
movl 36(%esp),%ebp
3013
andl $7,%ebp
3014
jz .L029pw_end
3015
3016
movl (%esi),%ecx
3017
subl %eax,%ecx
3018
movl %ecx,(%ebx)
3019
jnc .L043pw_tail_nc0
3020
decl %ebp
3021
jz .L029pw_end
3022
3023
movl 4(%esi),%ecx
3024
subl %eax,%ecx
3025
movl %ecx,4(%ebx)
3026
jnc .L044pw_tail_nc1
3027
decl %ebp
3028
jz .L029pw_end
3029
3030
movl 8(%esi),%ecx
3031
subl %eax,%ecx
3032
movl %ecx,8(%ebx)
3033
jnc .L045pw_tail_nc2
3034
decl %ebp
3035
jz .L029pw_end
3036
3037
movl 12(%esi),%ecx
3038
subl %eax,%ecx
3039
movl %ecx,12(%ebx)
3040
jnc .L046pw_tail_nc3
3041
decl %ebp
3042
jz .L029pw_end
3043
3044
movl 16(%esi),%ecx
3045
subl %eax,%ecx
3046
movl %ecx,16(%ebx)
3047
jnc .L047pw_tail_nc4
3048
decl %ebp
3049
jz .L029pw_end
3050
3051
movl 20(%esi),%ecx
3052
subl %eax,%ecx
3053
movl %ecx,20(%ebx)
3054
jnc .L048pw_tail_nc5
3055
decl %ebp
3056
jz .L029pw_end
3057
3058
movl 24(%esi),%ecx
3059
subl %eax,%ecx
3060
movl %ecx,24(%ebx)
3061
jnc .L049pw_tail_nc6
3062
movl $1,%eax
3063
jmp .L029pw_end
3064
.L050pw_nc_loop:
3065
movl (%esi),%ecx
3066
movl %ecx,(%ebx)
3067
.L035pw_nc0:
3068
movl 4(%esi),%ecx
3069
movl %ecx,4(%ebx)
3070
.L036pw_nc1:
3071
movl 8(%esi),%ecx
3072
movl %ecx,8(%ebx)
3073
.L037pw_nc2:
3074
movl 12(%esi),%ecx
3075
movl %ecx,12(%ebx)
3076
.L038pw_nc3:
3077
movl 16(%esi),%ecx
3078
movl %ecx,16(%ebx)
3079
.L039pw_nc4:
3080
movl 20(%esi),%ecx
3081
movl %ecx,20(%ebx)
3082
.L040pw_nc5:
3083
movl 24(%esi),%ecx
3084
movl %ecx,24(%ebx)
3085
.L041pw_nc6:
3086
movl 28(%esi),%ecx
3087
movl %ecx,28(%ebx)
3088
.L042pw_nc7:
3089
3090
addl $32,%esi
3091
addl $32,%ebx
3092
subl $8,%ebp
3093
jnz .L050pw_nc_loop
3094
movl 36(%esp),%ebp
3095
andl $7,%ebp
3096
jz .L051pw_nc_end
3097
movl (%esi),%ecx
3098
movl %ecx,(%ebx)
3099
.L043pw_tail_nc0:
3100
decl %ebp
3101
jz .L051pw_nc_end
3102
movl 4(%esi),%ecx
3103
movl %ecx,4(%ebx)
3104
.L044pw_tail_nc1:
3105
decl %ebp
3106
jz .L051pw_nc_end
3107
movl 8(%esi),%ecx
3108
movl %ecx,8(%ebx)
3109
.L045pw_tail_nc2:
3110
decl %ebp
3111
jz .L051pw_nc_end
3112
movl 12(%esi),%ecx
3113
movl %ecx,12(%ebx)
3114
.L046pw_tail_nc3:
3115
decl %ebp
3116
jz .L051pw_nc_end
3117
movl 16(%esi),%ecx
3118
movl %ecx,16(%ebx)
3119
.L047pw_tail_nc4:
3120
decl %ebp
3121
jz .L051pw_nc_end
3122
movl 20(%esi),%ecx
3123
movl %ecx,20(%ebx)
3124
.L048pw_tail_nc5:
3125
decl %ebp
3126
jz .L051pw_nc_end
3127
movl 24(%esi),%ecx
3128
movl %ecx,24(%ebx)
3129
.L049pw_tail_nc6:
3130
.L051pw_nc_end:
3131
movl $0,%eax
3132
.L029pw_end:
3133
popl %edi
3134
popl %esi
3135
popl %ebx
3136
popl %ebp
3137
ret
3138
.size bn_sub_part_words,.-.L_bn_sub_part_words_begin
3139
.comm OPENSSL_ia32cap_P,40,4
3140
3141
.section ".note.gnu.property", "a"
3142
.p2align 2
3143
.long 1f - 0f
3144
.long 4f - 1f
3145
.long 5
3146
0:
3147
.asciz "GNU"
3148
1:
3149
.p2align 2
3150
.long 0xc0000002
3151
.long 3f - 2f
3152
2:
3153
.long 3
3154
3:
3155
.p2align 2
3156
4:
3157
#endif
3158
3159