Home | History | Annotate | Download | only in fipsmodule
      1 # This file is generated from a similarly-named Perl script in the BoringSSL
      2 # source tree. Do not edit by hand.
      3 
      4 #if defined(__i386__)
      5 #if defined(BORINGSSL_PREFIX)
      6 #include <boringssl_prefix_symbols_asm.h>
      7 #endif
      8 .text
      9 .globl	_bn_mul_mont
     10 .private_extern	_bn_mul_mont
     11 .align	4
     12 _bn_mul_mont:
     13 L_bn_mul_mont_begin:
     14 	pushl	%ebp
     15 	pushl	%ebx
     16 	pushl	%esi
     17 	pushl	%edi
     18 	xorl	%eax,%eax
     19 	movl	40(%esp),%edi
     20 	cmpl	$4,%edi
     21 	jl	L000just_leave
     22 	leal	20(%esp),%esi
     23 	leal	24(%esp),%edx
     24 	addl	$2,%edi
     25 	negl	%edi
     26 	leal	-32(%esp,%edi,4),%ebp
     27 	negl	%edi
     28 	movl	%ebp,%eax
     29 	subl	%edx,%eax
     30 	andl	$2047,%eax
     31 	subl	%eax,%ebp
     32 	xorl	%ebp,%edx
     33 	andl	$2048,%edx
     34 	xorl	$2048,%edx
     35 	subl	%edx,%ebp
     36 	andl	$-64,%ebp
     37 	movl	%esp,%eax
     38 	subl	%ebp,%eax
     39 	andl	$-4096,%eax
     40 	movl	%esp,%edx
     41 	leal	(%ebp,%eax,1),%esp
     42 	movl	(%esp),%eax
     43 	cmpl	%ebp,%esp
     44 	ja	L001page_walk
     45 	jmp	L002page_walk_done
     46 .align	4,0x90
     47 L001page_walk:
     48 	leal	-4096(%esp),%esp
     49 	movl	(%esp),%eax
     50 	cmpl	%ebp,%esp
     51 	ja	L001page_walk
     52 L002page_walk_done:
     53 	movl	(%esi),%eax
     54 	movl	4(%esi),%ebx
     55 	movl	8(%esi),%ecx
     56 	movl	12(%esi),%ebp
     57 	movl	16(%esi),%esi
     58 	movl	(%esi),%esi
     59 	movl	%eax,4(%esp)
     60 	movl	%ebx,8(%esp)
     61 	movl	%ecx,12(%esp)
     62 	movl	%ebp,16(%esp)
     63 	movl	%esi,20(%esp)
     64 	leal	-3(%edi),%ebx
     65 	movl	%edx,24(%esp)
     66 	call	L003PIC_me_up
     67 L003PIC_me_up:
     68 	popl	%eax
     69 	movl	L_OPENSSL_ia32cap_P$non_lazy_ptr-L003PIC_me_up(%eax),%eax
     70 	btl	$26,(%eax)
     71 	jnc	L004non_sse2
     72 	movl	$-1,%eax
     73 	movd	%eax,%mm7
     74 	movl	8(%esp),%esi
     75 	movl	12(%esp),%edi
     76 	movl	16(%esp),%ebp
     77 	xorl	%edx,%edx
     78 	xorl	%ecx,%ecx
     79 	movd	(%edi),%mm4
     80 	movd	(%esi),%mm5
     81 	movd	(%ebp),%mm3
     82 	pmuludq	%mm4,%mm5
     83 	movq	%mm5,%mm2
     84 	movq	%mm5,%mm0
     85 	pand	%mm7,%mm0
     86 	pmuludq	20(%esp),%mm5
     87 	pmuludq	%mm5,%mm3
     88 	paddq	%mm0,%mm3
     89 	movd	4(%ebp),%mm1
     90 	movd	4(%esi),%mm0
     91 	psrlq	$32,%mm2
     92 	psrlq	$32,%mm3
     93 	incl	%ecx
     94 .align	4,0x90
     95 L0051st:
     96 	pmuludq	%mm4,%mm0
     97 	pmuludq	%mm5,%mm1
     98 	paddq	%mm0,%mm2
     99 	paddq	%mm1,%mm3
    100 	movq	%mm2,%mm0
    101 	pand	%mm7,%mm0
    102 	movd	4(%ebp,%ecx,4),%mm1
    103 	paddq	%mm0,%mm3
    104 	movd	4(%esi,%ecx,4),%mm0
    105 	psrlq	$32,%mm2
    106 	movd	%mm3,28(%esp,%ecx,4)
    107 	psrlq	$32,%mm3
    108 	leal	1(%ecx),%ecx
    109 	cmpl	%ebx,%ecx
    110 	jl	L0051st
    111 	pmuludq	%mm4,%mm0
    112 	pmuludq	%mm5,%mm1
    113 	paddq	%mm0,%mm2
    114 	paddq	%mm1,%mm3
    115 	movq	%mm2,%mm0
    116 	pand	%mm7,%mm0
    117 	paddq	%mm0,%mm3
    118 	movd	%mm3,28(%esp,%ecx,4)
    119 	psrlq	$32,%mm2
    120 	psrlq	$32,%mm3
    121 	paddq	%mm2,%mm3
    122 	movq	%mm3,32(%esp,%ebx,4)
    123 	incl	%edx
    124 L006outer:
    125 	xorl	%ecx,%ecx
    126 	movd	(%edi,%edx,4),%mm4
    127 	movd	(%esi),%mm5
    128 	movd	32(%esp),%mm6
    129 	movd	(%ebp),%mm3
    130 	pmuludq	%mm4,%mm5
    131 	paddq	%mm6,%mm5
    132 	movq	%mm5,%mm0
    133 	movq	%mm5,%mm2
    134 	pand	%mm7,%mm0
    135 	pmuludq	20(%esp),%mm5
    136 	pmuludq	%mm5,%mm3
    137 	paddq	%mm0,%mm3
    138 	movd	36(%esp),%mm6
    139 	movd	4(%ebp),%mm1
    140 	movd	4(%esi),%mm0
    141 	psrlq	$32,%mm2
    142 	psrlq	$32,%mm3
    143 	paddq	%mm6,%mm2
    144 	incl	%ecx
    145 	decl	%ebx
    146 L007inner:
    147 	pmuludq	%mm4,%mm0
    148 	pmuludq	%mm5,%mm1
    149 	paddq	%mm0,%mm2
    150 	paddq	%mm1,%mm3
    151 	movq	%mm2,%mm0
    152 	movd	36(%esp,%ecx,4),%mm6
    153 	pand	%mm7,%mm0
    154 	movd	4(%ebp,%ecx,4),%mm1
    155 	paddq	%mm0,%mm3
    156 	movd	4(%esi,%ecx,4),%mm0
    157 	psrlq	$32,%mm2
    158 	movd	%mm3,28(%esp,%ecx,4)
    159 	psrlq	$32,%mm3
    160 	paddq	%mm6,%mm2
    161 	decl	%ebx
    162 	leal	1(%ecx),%ecx
    163 	jnz	L007inner
    164 	movl	%ecx,%ebx
    165 	pmuludq	%mm4,%mm0
    166 	pmuludq	%mm5,%mm1
    167 	paddq	%mm0,%mm2
    168 	paddq	%mm1,%mm3
    169 	movq	%mm2,%mm0
    170 	pand	%mm7,%mm0
    171 	paddq	%mm0,%mm3
    172 	movd	%mm3,28(%esp,%ecx,4)
    173 	psrlq	$32,%mm2
    174 	psrlq	$32,%mm3
    175 	movd	36(%esp,%ebx,4),%mm6
    176 	paddq	%mm2,%mm3
    177 	paddq	%mm6,%mm3
    178 	movq	%mm3,32(%esp,%ebx,4)
    179 	leal	1(%edx),%edx
    180 	cmpl	%ebx,%edx
    181 	jle	L006outer
    182 	emms
    183 	jmp	L008common_tail
    184 .align	4,0x90
    185 L004non_sse2:
    186 	movl	8(%esp),%esi
    187 	leal	1(%ebx),%ebp
    188 	movl	12(%esp),%edi
    189 	xorl	%ecx,%ecx
    190 	movl	%esi,%edx
    191 	andl	$1,%ebp
    192 	subl	%edi,%edx
    193 	leal	4(%edi,%ebx,4),%eax
    194 	orl	%edx,%ebp
    195 	movl	(%edi),%edi
    196 	jz	L009bn_sqr_mont
    197 	movl	%eax,28(%esp)
    198 	movl	(%esi),%eax
    199 	xorl	%edx,%edx
    200 .align	4,0x90
    201 L010mull:
    202 	movl	%edx,%ebp
    203 	mull	%edi
    204 	addl	%eax,%ebp
    205 	leal	1(%ecx),%ecx
    206 	adcl	$0,%edx
    207 	movl	(%esi,%ecx,4),%eax
    208 	cmpl	%ebx,%ecx
    209 	movl	%ebp,28(%esp,%ecx,4)
    210 	jl	L010mull
    211 	movl	%edx,%ebp
    212 	mull	%edi
    213 	movl	20(%esp),%edi
    214 	addl	%ebp,%eax
    215 	movl	16(%esp),%esi
    216 	adcl	$0,%edx
    217 	imull	32(%esp),%edi
    218 	movl	%eax,32(%esp,%ebx,4)
    219 	xorl	%ecx,%ecx
    220 	movl	%edx,36(%esp,%ebx,4)
    221 	movl	%ecx,40(%esp,%ebx,4)
    222 	movl	(%esi),%eax
    223 	mull	%edi
    224 	addl	32(%esp),%eax
    225 	movl	4(%esi),%eax
    226 	adcl	$0,%edx
    227 	incl	%ecx
    228 	jmp	L0112ndmadd
    229 .align	4,0x90
    230 L0121stmadd:
    231 	movl	%edx,%ebp
    232 	mull	%edi
    233 	addl	32(%esp,%ecx,4),%ebp
    234 	leal	1(%ecx),%ecx
    235 	adcl	$0,%edx
    236 	addl	%eax,%ebp
    237 	movl	(%esi,%ecx,4),%eax
    238 	adcl	$0,%edx
    239 	cmpl	%ebx,%ecx
    240 	movl	%ebp,28(%esp,%ecx,4)
    241 	jl	L0121stmadd
    242 	movl	%edx,%ebp
    243 	mull	%edi
    244 	addl	32(%esp,%ebx,4),%eax
    245 	movl	20(%esp),%edi
    246 	adcl	$0,%edx
    247 	movl	16(%esp),%esi
    248 	addl	%eax,%ebp
    249 	adcl	$0,%edx
    250 	imull	32(%esp),%edi
    251 	xorl	%ecx,%ecx
    252 	addl	36(%esp,%ebx,4),%edx
    253 	movl	%ebp,32(%esp,%ebx,4)
    254 	adcl	$0,%ecx
    255 	movl	(%esi),%eax
    256 	movl	%edx,36(%esp,%ebx,4)
    257 	movl	%ecx,40(%esp,%ebx,4)
    258 	mull	%edi
    259 	addl	32(%esp),%eax
    260 	movl	4(%esi),%eax
    261 	adcl	$0,%edx
    262 	movl	$1,%ecx
    263 .align	4,0x90
    264 L0112ndmadd:
    265 	movl	%edx,%ebp
    266 	mull	%edi
    267 	addl	32(%esp,%ecx,4),%ebp
    268 	leal	1(%ecx),%ecx
    269 	adcl	$0,%edx
    270 	addl	%eax,%ebp
    271 	movl	(%esi,%ecx,4),%eax
    272 	adcl	$0,%edx
    273 	cmpl	%ebx,%ecx
    274 	movl	%ebp,24(%esp,%ecx,4)
    275 	jl	L0112ndmadd
    276 	movl	%edx,%ebp
    277 	mull	%edi
    278 	addl	32(%esp,%ebx,4),%ebp
    279 	adcl	$0,%edx
    280 	addl	%eax,%ebp
    281 	adcl	$0,%edx
    282 	movl	%ebp,28(%esp,%ebx,4)
    283 	xorl	%eax,%eax
    284 	movl	12(%esp),%ecx
    285 	addl	36(%esp,%ebx,4),%edx
    286 	adcl	40(%esp,%ebx,4),%eax
    287 	leal	4(%ecx),%ecx
    288 	movl	%edx,32(%esp,%ebx,4)
    289 	cmpl	28(%esp),%ecx
    290 	movl	%eax,36(%esp,%ebx,4)
    291 	je	L008common_tail
    292 	movl	(%ecx),%edi
    293 	movl	8(%esp),%esi
    294 	movl	%ecx,12(%esp)
    295 	xorl	%ecx,%ecx
    296 	xorl	%edx,%edx
    297 	movl	(%esi),%eax
    298 	jmp	L0121stmadd
    299 .align	4,0x90
    300 L009bn_sqr_mont:
    301 	movl	%ebx,(%esp)
    302 	movl	%ecx,12(%esp)
    303 	movl	%edi,%eax
    304 	mull	%edi
    305 	movl	%eax,32(%esp)
    306 	movl	%edx,%ebx
    307 	shrl	$1,%edx
    308 	andl	$1,%ebx
    309 	incl	%ecx
    310 .align	4,0x90
    311 L013sqr:
    312 	movl	(%esi,%ecx,4),%eax
    313 	movl	%edx,%ebp
    314 	mull	%edi
    315 	addl	%ebp,%eax
    316 	leal	1(%ecx),%ecx
    317 	adcl	$0,%edx
    318 	leal	(%ebx,%eax,2),%ebp
    319 	shrl	$31,%eax
    320 	cmpl	(%esp),%ecx
    321 	movl	%eax,%ebx
    322 	movl	%ebp,28(%esp,%ecx,4)
    323 	jl	L013sqr
    324 	movl	(%esi,%ecx,4),%eax
    325 	movl	%edx,%ebp
    326 	mull	%edi
    327 	addl	%ebp,%eax
    328 	movl	20(%esp),%edi
    329 	adcl	$0,%edx
    330 	movl	16(%esp),%esi
    331 	leal	(%ebx,%eax,2),%ebp
    332 	imull	32(%esp),%edi
    333 	shrl	$31,%eax
    334 	movl	%ebp,32(%esp,%ecx,4)
    335 	leal	(%eax,%edx,2),%ebp
    336 	movl	(%esi),%eax
    337 	shrl	$31,%edx
    338 	movl	%ebp,36(%esp,%ecx,4)
    339 	movl	%edx,40(%esp,%ecx,4)
    340 	mull	%edi
    341 	addl	32(%esp),%eax
    342 	movl	%ecx,%ebx
    343 	adcl	$0,%edx
    344 	movl	4(%esi),%eax
    345 	movl	$1,%ecx
    346 .align	4,0x90
    347 L0143rdmadd:
    348 	movl	%edx,%ebp
    349 	mull	%edi
    350 	addl	32(%esp,%ecx,4),%ebp
    351 	adcl	$0,%edx
    352 	addl	%eax,%ebp
    353 	movl	4(%esi,%ecx,4),%eax
    354 	adcl	$0,%edx
    355 	movl	%ebp,28(%esp,%ecx,4)
    356 	movl	%edx,%ebp
    357 	mull	%edi
    358 	addl	36(%esp,%ecx,4),%ebp
    359 	leal	2(%ecx),%ecx
    360 	adcl	$0,%edx
    361 	addl	%eax,%ebp
    362 	movl	(%esi,%ecx,4),%eax
    363 	adcl	$0,%edx
    364 	cmpl	%ebx,%ecx
    365 	movl	%ebp,24(%esp,%ecx,4)
    366 	jl	L0143rdmadd
    367 	movl	%edx,%ebp
    368 	mull	%edi
    369 	addl	32(%esp,%ebx,4),%ebp
    370 	adcl	$0,%edx
    371 	addl	%eax,%ebp
    372 	adcl	$0,%edx
    373 	movl	%ebp,28(%esp,%ebx,4)
    374 	movl	12(%esp),%ecx
    375 	xorl	%eax,%eax
    376 	movl	8(%esp),%esi
    377 	addl	36(%esp,%ebx,4),%edx
    378 	adcl	40(%esp,%ebx,4),%eax
    379 	movl	%edx,32(%esp,%ebx,4)
    380 	cmpl	%ebx,%ecx
    381 	movl	%eax,36(%esp,%ebx,4)
    382 	je	L008common_tail
    383 	movl	4(%esi,%ecx,4),%edi
    384 	leal	1(%ecx),%ecx
    385 	movl	%edi,%eax
    386 	movl	%ecx,12(%esp)
    387 	mull	%edi
    388 	addl	32(%esp,%ecx,4),%eax
    389 	adcl	$0,%edx
    390 	movl	%eax,32(%esp,%ecx,4)
    391 	xorl	%ebp,%ebp
    392 	cmpl	%ebx,%ecx
    393 	leal	1(%ecx),%ecx
    394 	je	L015sqrlast
    395 	movl	%edx,%ebx
    396 	shrl	$1,%edx
    397 	andl	$1,%ebx
    398 .align	4,0x90
    399 L016sqradd:
    400 	movl	(%esi,%ecx,4),%eax
    401 	movl	%edx,%ebp
    402 	mull	%edi
    403 	addl	%ebp,%eax
    404 	leal	(%eax,%eax,1),%ebp
    405 	adcl	$0,%edx
    406 	shrl	$31,%eax
    407 	addl	32(%esp,%ecx,4),%ebp
    408 	leal	1(%ecx),%ecx
    409 	adcl	$0,%eax
    410 	addl	%ebx,%ebp
    411 	adcl	$0,%eax
    412 	cmpl	(%esp),%ecx
    413 	movl	%ebp,28(%esp,%ecx,4)
    414 	movl	%eax,%ebx
    415 	jle	L016sqradd
    416 	movl	%edx,%ebp
    417 	addl	%edx,%edx
    418 	shrl	$31,%ebp
    419 	addl	%ebx,%edx
    420 	adcl	$0,%ebp
    421 L015sqrlast:
    422 	movl	20(%esp),%edi
    423 	movl	16(%esp),%esi
    424 	imull	32(%esp),%edi
    425 	addl	32(%esp,%ecx,4),%edx
    426 	movl	(%esi),%eax
    427 	adcl	$0,%ebp
    428 	movl	%edx,32(%esp,%ecx,4)
    429 	movl	%ebp,36(%esp,%ecx,4)
    430 	mull	%edi
    431 	addl	32(%esp),%eax
    432 	leal	-1(%ecx),%ebx
    433 	adcl	$0,%edx
    434 	movl	$1,%ecx
    435 	movl	4(%esi),%eax
    436 	jmp	L0143rdmadd
    437 .align	4,0x90
    438 L008common_tail:
    439 	movl	16(%esp),%ebp
    440 	movl	4(%esp),%edi
    441 	leal	32(%esp),%esi
    442 	movl	(%esi),%eax
    443 	movl	%ebx,%ecx
    444 	xorl	%edx,%edx
    445 .align	4,0x90
    446 L017sub:
    447 	sbbl	(%ebp,%edx,4),%eax
    448 	movl	%eax,(%edi,%edx,4)
    449 	decl	%ecx
    450 	movl	4(%esi,%edx,4),%eax
    451 	leal	1(%edx),%edx
    452 	jge	L017sub
    453 	sbbl	$0,%eax
    454 	movl	$-1,%edx
    455 	xorl	%eax,%edx
    456 	jmp	L018copy
    457 .align	4,0x90
    458 L018copy:
    459 	movl	32(%esp,%ebx,4),%esi
    460 	movl	(%edi,%ebx,4),%ebp
    461 	movl	%ecx,32(%esp,%ebx,4)
    462 	andl	%eax,%esi
    463 	andl	%edx,%ebp
    464 	orl	%esi,%ebp
    465 	movl	%ebp,(%edi,%ebx,4)
    466 	decl	%ebx
    467 	jge	L018copy
    468 	movl	24(%esp),%esp
    469 	movl	$1,%eax
    470 L000just_leave:
    471 	popl	%edi
    472 	popl	%esi
    473 	popl	%ebx
    474 	popl	%ebp
    475 	ret
    476 .byte	77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105
    477 .byte	112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56
    478 .byte	54,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121
    479 .byte	32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
    480 .byte	111,114,103,62,0
    481 .section __IMPORT,__pointers,non_lazy_symbol_pointers
    482 L_OPENSSL_ia32cap_P$non_lazy_ptr:
    483 .indirect_symbol	_OPENSSL_ia32cap_P
    484 .long	0
    485 #endif
    486