Home | History | Annotate | Line # | Download | only in i386
      1  1.14  christos #include <machine/asm.h>
      2  1.14  christos .text
      3  1.14  christos .globl	OPENSSL_ia32_cpuid
      4  1.14  christos .type	OPENSSL_ia32_cpuid,@function
      5  1.14  christos .align	16
      6  1.14  christos OPENSSL_ia32_cpuid:
      7  1.14  christos .L_OPENSSL_ia32_cpuid_begin:
      8  1.18  christos 	#ifdef __CET__
      9  1.18  christos 
     10  1.18  christos .byte	243,15,30,251
     11  1.18  christos 	#endif
     12  1.18  christos 
     13  1.14  christos 	pushl	%ebp
     14  1.14  christos 	pushl	%ebx
     15  1.14  christos 	pushl	%esi
     16  1.14  christos 	pushl	%edi
     17  1.14  christos 	xorl	%edx,%edx
     18  1.14  christos 	pushfl
     19  1.14  christos 	popl	%eax
     20  1.14  christos 	movl	%eax,%ecx
     21  1.14  christos 	xorl	$2097152,%eax
     22  1.14  christos 	pushl	%eax
     23  1.14  christos 	popfl
     24  1.14  christos 	pushfl
     25  1.14  christos 	popl	%eax
     26  1.14  christos 	xorl	%eax,%ecx
     27  1.14  christos 	xorl	%eax,%eax
     28  1.15  christos 	movl	20(%esp),%esi
     29  1.15  christos 	movl	%eax,8(%esi)
     30  1.14  christos 	btl	$21,%ecx
     31  1.14  christos 	jnc	.L000nocpuid
     32  1.14  christos 	.byte	0x0f,0xa2
     33  1.14  christos 	movl	%eax,%edi
     34  1.14  christos 	xorl	%eax,%eax
     35  1.14  christos 	cmpl	$1970169159,%ebx
     36  1.14  christos 	setne	%al
     37  1.14  christos 	movl	%eax,%ebp
     38  1.14  christos 	cmpl	$1231384169,%edx
     39  1.14  christos 	setne	%al
     40  1.14  christos 	orl	%eax,%ebp
     41  1.14  christos 	cmpl	$1818588270,%ecx
     42  1.14  christos 	setne	%al
     43  1.14  christos 	orl	%eax,%ebp
     44  1.14  christos 	jz	.L001intel
     45  1.14  christos 	cmpl	$1752462657,%ebx
     46  1.14  christos 	setne	%al
     47  1.14  christos 	movl	%eax,%esi
     48  1.14  christos 	cmpl	$1769238117,%edx
     49  1.14  christos 	setne	%al
     50  1.14  christos 	orl	%eax,%esi
     51  1.14  christos 	cmpl	$1145913699,%ecx
     52  1.14  christos 	setne	%al
     53  1.14  christos 	orl	%eax,%esi
     54  1.14  christos 	jnz	.L001intel
     55  1.14  christos 	movl	$2147483648,%eax
     56  1.14  christos 	.byte	0x0f,0xa2
     57  1.14  christos 	cmpl	$2147483649,%eax
     58  1.14  christos 	jb	.L001intel
     59  1.14  christos 	movl	%eax,%esi
     60  1.14  christos 	movl	$2147483649,%eax
     61  1.14  christos 	.byte	0x0f,0xa2
     62  1.14  christos 	orl	%ecx,%ebp
     63  1.14  christos 	andl	$2049,%ebp
     64  1.14  christos 	cmpl	$2147483656,%esi
     65  1.14  christos 	jb	.L001intel
     66  1.14  christos 	movl	$2147483656,%eax
     67  1.14  christos 	.byte	0x0f,0xa2
     68  1.14  christos 	movzbl	%cl,%esi
     69  1.14  christos 	incl	%esi
     70  1.14  christos 	movl	$1,%eax
     71  1.14  christos 	xorl	%ecx,%ecx
     72  1.14  christos 	.byte	0x0f,0xa2
     73  1.14  christos 	btl	$28,%edx
     74  1.14  christos 	jnc	.L002generic
     75  1.14  christos 	shrl	$16,%ebx
     76  1.14  christos 	andl	$255,%ebx
     77  1.14  christos 	cmpl	%esi,%ebx
     78  1.14  christos 	ja	.L002generic
     79  1.14  christos 	andl	$4026531839,%edx
     80  1.14  christos 	jmp	.L002generic
     81  1.14  christos .L001intel:
     82  1.14  christos 	cmpl	$4,%edi
     83  1.15  christos 	movl	$-1,%esi
     84  1.15  christos 	jb	.L003nocacheinfo
     85  1.14  christos 	movl	$4,%eax
     86  1.14  christos 	movl	$0,%ecx
     87  1.14  christos 	.byte	0x0f,0xa2
     88  1.15  christos 	movl	%eax,%esi
     89  1.15  christos 	shrl	$14,%esi
     90  1.15  christos 	andl	$4095,%esi
     91  1.15  christos .L003nocacheinfo:
     92  1.14  christos 	movl	$1,%eax
     93  1.14  christos 	xorl	%ecx,%ecx
     94  1.14  christos 	.byte	0x0f,0xa2
     95  1.14  christos 	andl	$3220176895,%edx
     96  1.14  christos 	cmpl	$0,%ebp
     97  1.15  christos 	jne	.L004notintel
     98  1.14  christos 	orl	$1073741824,%edx
     99  1.14  christos 	andb	$15,%ah
    100  1.14  christos 	cmpb	$15,%ah
    101  1.15  christos 	jne	.L004notintel
    102  1.14  christos 	orl	$1048576,%edx
    103  1.15  christos .L004notintel:
    104  1.14  christos 	btl	$28,%edx
    105  1.14  christos 	jnc	.L002generic
    106  1.14  christos 	andl	$4026531839,%edx
    107  1.15  christos 	cmpl	$0,%esi
    108  1.14  christos 	je	.L002generic
    109  1.14  christos 	orl	$268435456,%edx
    110  1.14  christos 	shrl	$16,%ebx
    111  1.14  christos 	cmpb	$1,%bl
    112  1.14  christos 	ja	.L002generic
    113  1.14  christos 	andl	$4026531839,%edx
    114  1.14  christos .L002generic:
    115  1.14  christos 	andl	$2048,%ebp
    116  1.14  christos 	andl	$4294965247,%ecx
    117  1.14  christos 	movl	%edx,%esi
    118  1.14  christos 	orl	%ecx,%ebp
    119  1.15  christos 	cmpl	$7,%edi
    120  1.15  christos 	movl	20(%esp),%edi
    121  1.15  christos 	jb	.L005no_extended_info
    122  1.15  christos 	movl	$7,%eax
    123  1.15  christos 	xorl	%ecx,%ecx
    124  1.15  christos 	.byte	0x0f,0xa2
    125  1.15  christos 	movl	%ebx,8(%edi)
    126  1.15  christos .L005no_extended_info:
    127  1.15  christos 	btl	$27,%ebp
    128  1.14  christos 	jnc	.L006clear_avx
    129  1.14  christos 	xorl	%ecx,%ecx
    130  1.14  christos .byte	15,1,208
    131  1.14  christos 	andl	$6,%eax
    132  1.14  christos 	cmpl	$6,%eax
    133  1.14  christos 	je	.L007done
    134  1.14  christos 	cmpl	$2,%eax
    135  1.14  christos 	je	.L006clear_avx
    136  1.14  christos .L008clear_xmm:
    137  1.14  christos 	andl	$4261412861,%ebp
    138  1.14  christos 	andl	$4278190079,%esi
    139  1.14  christos .L006clear_avx:
    140  1.14  christos 	andl	$4026525695,%ebp
    141  1.14  christos 	andl	$4294967263,8(%edi)
    142  1.14  christos .L007done:
    143  1.14  christos 	movl	%esi,%eax
    144  1.14  christos 	movl	%ebp,%edx
    145  1.14  christos .L000nocpuid:
    146  1.14  christos 	popl	%edi
    147  1.14  christos 	popl	%esi
    148  1.14  christos 	popl	%ebx
    149  1.14  christos 	popl	%ebp
    150  1.14  christos 	ret
    151  1.14  christos .size	OPENSSL_ia32_cpuid,.-.L_OPENSSL_ia32_cpuid_begin
    152  1.14  christos .globl	OPENSSL_rdtsc
    153  1.14  christos .type	OPENSSL_rdtsc,@function
    154  1.14  christos .align	16
    155  1.14  christos OPENSSL_rdtsc:
    156  1.14  christos .L_OPENSSL_rdtsc_begin:
    157  1.18  christos 	#ifdef __CET__
    158  1.18  christos 
    159  1.18  christos .byte	243,15,30,251
    160  1.18  christos 	#endif
    161  1.18  christos 
    162  1.14  christos 	xorl	%eax,%eax
    163  1.14  christos 	xorl	%edx,%edx
    164  1.16  nakayama 	call	.L009PIC_me_up
    165  1.16  nakayama .L009PIC_me_up:
    166  1.16  nakayama 	popl	%ecx
    167  1.16  nakayama 	leal	OPENSSL_ia32cap_P-.L009PIC_me_up(%ecx),%ecx
    168  1.14  christos 	btl	$4,(%ecx)
    169  1.16  nakayama 	jnc	.L010notsc
    170  1.14  christos 	.byte	0x0f,0x31
    171  1.16  nakayama .L010notsc:
    172  1.14  christos 	ret
    173  1.14  christos .size	OPENSSL_rdtsc,.-.L_OPENSSL_rdtsc_begin
    174  1.14  christos .globl	OPENSSL_instrument_halt
    175  1.14  christos .type	OPENSSL_instrument_halt,@function
    176  1.14  christos .align	16
    177  1.14  christos OPENSSL_instrument_halt:
    178  1.14  christos .L_OPENSSL_instrument_halt_begin:
    179  1.18  christos 	#ifdef __CET__
    180  1.18  christos 
    181  1.18  christos .byte	243,15,30,251
    182  1.18  christos 	#endif
    183  1.18  christos 
    184  1.16  nakayama 	call	.L011PIC_me_up
    185  1.16  nakayama .L011PIC_me_up:
    186  1.16  nakayama 	popl	%ecx
    187  1.16  nakayama 	leal	OPENSSL_ia32cap_P-.L011PIC_me_up(%ecx),%ecx
    188  1.14  christos 	btl	$4,(%ecx)
    189  1.16  nakayama 	jnc	.L012nohalt
    190  1.14  christos .long	2421723150
    191  1.14  christos 	andl	$3,%eax
    192  1.16  nakayama 	jnz	.L012nohalt
    193  1.14  christos 	pushfl
    194  1.14  christos 	popl	%eax
    195  1.14  christos 	btl	$9,%eax
    196  1.16  nakayama 	jnc	.L012nohalt
    197  1.14  christos 	.byte	0x0f,0x31
    198  1.14  christos 	pushl	%edx
    199  1.14  christos 	pushl	%eax
    200  1.14  christos 	hlt
    201  1.14  christos 	.byte	0x0f,0x31
    202  1.14  christos 	subl	(%esp),%eax
    203  1.14  christos 	sbbl	4(%esp),%edx
    204  1.14  christos 	addl	$8,%esp
    205  1.14  christos 	ret
    206  1.16  nakayama .L012nohalt:
    207  1.14  christos 	xorl	%eax,%eax
    208  1.14  christos 	xorl	%edx,%edx
    209  1.14  christos 	ret
    210  1.14  christos .size	OPENSSL_instrument_halt,.-.L_OPENSSL_instrument_halt_begin
    211  1.14  christos .globl	OPENSSL_far_spin
    212  1.14  christos .type	OPENSSL_far_spin,@function
    213  1.14  christos .align	16
    214  1.14  christos OPENSSL_far_spin:
    215  1.14  christos .L_OPENSSL_far_spin_begin:
    216  1.18  christos 	#ifdef __CET__
    217  1.18  christos 
    218  1.18  christos .byte	243,15,30,251
    219  1.18  christos 	#endif
    220  1.18  christos 
    221  1.14  christos 	pushfl
    222  1.14  christos 	popl	%eax
    223  1.14  christos 	btl	$9,%eax
    224  1.16  nakayama 	jnc	.L013nospin
    225  1.14  christos 	movl	4(%esp),%eax
    226  1.14  christos 	movl	8(%esp),%ecx
    227  1.14  christos .long	2430111262
    228  1.14  christos 	xorl	%eax,%eax
    229  1.14  christos 	movl	(%ecx),%edx
    230  1.16  nakayama 	jmp	.L014spin
    231  1.14  christos .align	16
    232  1.16  nakayama .L014spin:
    233  1.14  christos 	incl	%eax
    234  1.14  christos 	cmpl	(%ecx),%edx
    235  1.16  nakayama 	je	.L014spin
    236  1.14  christos .long	529567888
    237  1.14  christos 	ret
    238  1.16  nakayama .L013nospin:
    239  1.14  christos 	xorl	%eax,%eax
    240  1.14  christos 	xorl	%edx,%edx
    241  1.14  christos 	ret
    242  1.14  christos .size	OPENSSL_far_spin,.-.L_OPENSSL_far_spin_begin
    243  1.14  christos .globl	OPENSSL_wipe_cpu
    244  1.14  christos .type	OPENSSL_wipe_cpu,@function
    245  1.14  christos .align	16
    246  1.14  christos OPENSSL_wipe_cpu:
    247  1.14  christos .L_OPENSSL_wipe_cpu_begin:
    248  1.18  christos 	#ifdef __CET__
    249  1.18  christos 
    250  1.18  christos .byte	243,15,30,251
    251  1.18  christos 	#endif
    252  1.18  christos 
    253  1.14  christos 	xorl	%eax,%eax
    254  1.14  christos 	xorl	%edx,%edx
    255  1.16  nakayama 	call	.L015PIC_me_up
    256  1.16  nakayama .L015PIC_me_up:
    257  1.16  nakayama 	popl	%ecx
    258  1.16  nakayama 	leal	OPENSSL_ia32cap_P-.L015PIC_me_up(%ecx),%ecx
    259  1.14  christos 	movl	(%ecx),%ecx
    260  1.14  christos 	btl	$1,(%ecx)
    261  1.16  nakayama 	jnc	.L016no_x87
    262  1.16  nakayama 	andl	$83886080,%ecx
    263  1.16  nakayama 	cmpl	$83886080,%ecx
    264  1.16  nakayama 	jne	.L017no_sse2
    265  1.16  nakayama 	pxor	%xmm0,%xmm0
    266  1.16  nakayama 	pxor	%xmm1,%xmm1
    267  1.16  nakayama 	pxor	%xmm2,%xmm2
    268  1.16  nakayama 	pxor	%xmm3,%xmm3
    269  1.16  nakayama 	pxor	%xmm4,%xmm4
    270  1.16  nakayama 	pxor	%xmm5,%xmm5
    271  1.16  nakayama 	pxor	%xmm6,%xmm6
    272  1.16  nakayama 	pxor	%xmm7,%xmm7
    273  1.16  nakayama .L017no_sse2:
    274  1.14  christos .long	4007259865,4007259865,4007259865,4007259865,2430851995
    275  1.16  nakayama .L016no_x87:
    276  1.14  christos 	leal	4(%esp),%eax
    277  1.14  christos 	ret
    278  1.14  christos .size	OPENSSL_wipe_cpu,.-.L_OPENSSL_wipe_cpu_begin
    279  1.14  christos .globl	OPENSSL_atomic_add
    280  1.14  christos .type	OPENSSL_atomic_add,@function
    281  1.14  christos .align	16
    282  1.14  christos OPENSSL_atomic_add:
    283  1.14  christos .L_OPENSSL_atomic_add_begin:
    284  1.18  christos 	#ifdef __CET__
    285  1.18  christos 
    286  1.18  christos .byte	243,15,30,251
    287  1.18  christos 	#endif
    288  1.18  christos 
    289  1.14  christos 	movl	4(%esp),%edx
    290  1.14  christos 	movl	8(%esp),%ecx
    291  1.14  christos 	pushl	%ebx
    292  1.14  christos 	nop
    293  1.14  christos 	movl	(%edx),%eax
    294  1.16  nakayama .L018spin:
    295  1.14  christos 	leal	(%eax,%ecx,1),%ebx
    296  1.14  christos 	nop
    297  1.14  christos .long	447811568
    298  1.16  nakayama 	jne	.L018spin
    299  1.14  christos 	movl	%ebx,%eax
    300  1.14  christos 	popl	%ebx
    301  1.14  christos 	ret
    302  1.14  christos .size	OPENSSL_atomic_add,.-.L_OPENSSL_atomic_add_begin
    303  1.14  christos .globl	OPENSSL_cleanse
    304  1.14  christos .type	OPENSSL_cleanse,@function
    305  1.14  christos .align	16
    306  1.14  christos OPENSSL_cleanse:
    307  1.14  christos .L_OPENSSL_cleanse_begin:
    308  1.18  christos 	#ifdef __CET__
    309  1.18  christos 
    310  1.18  christos .byte	243,15,30,251
    311  1.18  christos 	#endif
    312  1.18  christos 
    313  1.14  christos 	movl	4(%esp),%edx
    314  1.14  christos 	movl	8(%esp),%ecx
    315  1.14  christos 	xorl	%eax,%eax
    316  1.14  christos 	cmpl	$7,%ecx
    317  1.16  nakayama 	jae	.L019lot
    318  1.14  christos 	cmpl	$0,%ecx
    319  1.16  nakayama 	je	.L020ret
    320  1.16  nakayama .L021little:
    321  1.14  christos 	movb	%al,(%edx)
    322  1.14  christos 	subl	$1,%ecx
    323  1.14  christos 	leal	1(%edx),%edx
    324  1.16  nakayama 	jnz	.L021little
    325  1.16  nakayama .L020ret:
    326  1.14  christos 	ret
    327  1.14  christos .align	16
    328  1.16  nakayama .L019lot:
    329  1.14  christos 	testl	$3,%edx
    330  1.16  nakayama 	jz	.L022aligned
    331  1.14  christos 	movb	%al,(%edx)
    332  1.14  christos 	leal	-1(%ecx),%ecx
    333  1.14  christos 	leal	1(%edx),%edx
    334  1.16  nakayama 	jmp	.L019lot
    335  1.16  nakayama .L022aligned:
    336  1.14  christos 	movl	%eax,(%edx)
    337  1.14  christos 	leal	-4(%ecx),%ecx
    338  1.14  christos 	testl	$-4,%ecx
    339  1.14  christos 	leal	4(%edx),%edx
    340  1.16  nakayama 	jnz	.L022aligned
    341  1.14  christos 	cmpl	$0,%ecx
    342  1.16  nakayama 	jne	.L021little
    343  1.14  christos 	ret
    344  1.14  christos .size	OPENSSL_cleanse,.-.L_OPENSSL_cleanse_begin
    345  1.15  christos .globl	CRYPTO_memcmp
    346  1.15  christos .type	CRYPTO_memcmp,@function
    347  1.15  christos .align	16
    348  1.15  christos CRYPTO_memcmp:
    349  1.15  christos .L_CRYPTO_memcmp_begin:
    350  1.18  christos 	#ifdef __CET__
    351  1.18  christos 
    352  1.18  christos .byte	243,15,30,251
    353  1.18  christos 	#endif
    354  1.18  christos 
    355  1.15  christos 	pushl	%esi
    356  1.15  christos 	pushl	%edi
    357  1.15  christos 	movl	12(%esp),%esi
    358  1.15  christos 	movl	16(%esp),%edi
    359  1.15  christos 	movl	20(%esp),%ecx
    360  1.15  christos 	xorl	%eax,%eax
    361  1.15  christos 	xorl	%edx,%edx
    362  1.15  christos 	cmpl	$0,%ecx
    363  1.16  nakayama 	je	.L023no_data
    364  1.16  nakayama .L024loop:
    365  1.15  christos 	movb	(%esi),%dl
    366  1.15  christos 	leal	1(%esi),%esi
    367  1.15  christos 	xorb	(%edi),%dl
    368  1.15  christos 	leal	1(%edi),%edi
    369  1.15  christos 	orb	%dl,%al
    370  1.15  christos 	decl	%ecx
    371  1.16  nakayama 	jnz	.L024loop
    372  1.15  christos 	negl	%eax
    373  1.15  christos 	shrl	$31,%eax
    374  1.16  nakayama .L023no_data:
    375  1.15  christos 	popl	%edi
    376  1.15  christos 	popl	%esi
    377  1.15  christos 	ret
    378  1.15  christos .size	CRYPTO_memcmp,.-.L_CRYPTO_memcmp_begin
    379  1.15  christos .globl	OPENSSL_instrument_bus
    380  1.15  christos .type	OPENSSL_instrument_bus,@function
    381  1.15  christos .align	16
    382  1.15  christos OPENSSL_instrument_bus:
    383  1.15  christos .L_OPENSSL_instrument_bus_begin:
    384  1.18  christos 	#ifdef __CET__
    385  1.18  christos 
    386  1.18  christos .byte	243,15,30,251
    387  1.18  christos 	#endif
    388  1.18  christos 
    389  1.15  christos 	pushl	%ebp
    390  1.15  christos 	pushl	%ebx
    391  1.15  christos 	pushl	%esi
    392  1.15  christos 	pushl	%edi
    393  1.15  christos 	movl	$0,%eax
    394  1.16  nakayama 	call	.L025PIC_me_up
    395  1.16  nakayama .L025PIC_me_up:
    396  1.16  nakayama 	popl	%edx
    397  1.16  nakayama 	leal	OPENSSL_ia32cap_P-.L025PIC_me_up(%edx),%edx
    398  1.16  nakayama 	btl	$4,(%edx)
    399  1.16  nakayama 	jnc	.L026nogo
    400  1.16  nakayama 	btl	$19,(%edx)
    401  1.16  nakayama 	jnc	.L026nogo
    402  1.16  nakayama 	movl	20(%esp),%edi
    403  1.16  nakayama 	movl	24(%esp),%ecx
    404  1.16  nakayama 	.byte	0x0f,0x31
    405  1.16  nakayama 	movl	%eax,%esi
    406  1.16  nakayama 	movl	$0,%ebx
    407  1.16  nakayama 	clflush	(%edi)
    408  1.16  nakayama .byte	240
    409  1.16  nakayama 	addl	%ebx,(%edi)
    410  1.16  nakayama 	jmp	.L027loop
    411  1.16  nakayama .align	16
    412  1.16  nakayama .L027loop:
    413  1.16  nakayama 	.byte	0x0f,0x31
    414  1.16  nakayama 	movl	%eax,%edx
    415  1.16  nakayama 	subl	%esi,%eax
    416  1.16  nakayama 	movl	%edx,%esi
    417  1.16  nakayama 	movl	%eax,%ebx
    418  1.16  nakayama 	clflush	(%edi)
    419  1.16  nakayama .byte	240
    420  1.16  nakayama 	addl	%eax,(%edi)
    421  1.16  nakayama 	leal	4(%edi),%edi
    422  1.16  nakayama 	subl	$1,%ecx
    423  1.16  nakayama 	jnz	.L027loop
    424  1.16  nakayama 	movl	24(%esp),%eax
    425  1.16  nakayama .L026nogo:
    426  1.15  christos 	popl	%edi
    427  1.15  christos 	popl	%esi
    428  1.15  christos 	popl	%ebx
    429  1.15  christos 	popl	%ebp
    430  1.15  christos 	ret
    431  1.15  christos .size	OPENSSL_instrument_bus,.-.L_OPENSSL_instrument_bus_begin
    432  1.15  christos .globl	OPENSSL_instrument_bus2
    433  1.15  christos .type	OPENSSL_instrument_bus2,@function
    434  1.15  christos .align	16
    435  1.15  christos OPENSSL_instrument_bus2:
    436  1.15  christos .L_OPENSSL_instrument_bus2_begin:
    437  1.18  christos 	#ifdef __CET__
    438  1.18  christos 
    439  1.18  christos .byte	243,15,30,251
    440  1.18  christos 	#endif
    441  1.18  christos 
    442  1.15  christos 	pushl	%ebp
    443  1.15  christos 	pushl	%ebx
    444  1.15  christos 	pushl	%esi
    445  1.15  christos 	pushl	%edi
    446  1.15  christos 	movl	$0,%eax
    447  1.16  nakayama 	call	.L028PIC_me_up
    448  1.16  nakayama .L028PIC_me_up:
    449  1.16  nakayama 	popl	%edx
    450  1.16  nakayama 	leal	OPENSSL_ia32cap_P-.L028PIC_me_up(%edx),%edx
    451  1.16  nakayama 	btl	$4,(%edx)
    452  1.16  nakayama 	jnc	.L029nogo
    453  1.16  nakayama 	btl	$19,(%edx)
    454  1.16  nakayama 	jnc	.L029nogo
    455  1.16  nakayama 	movl	20(%esp),%edi
    456  1.16  nakayama 	movl	24(%esp),%ecx
    457  1.16  nakayama 	movl	28(%esp),%ebp
    458  1.16  nakayama 	.byte	0x0f,0x31
    459  1.16  nakayama 	movl	%eax,%esi
    460  1.16  nakayama 	movl	$0,%ebx
    461  1.16  nakayama 	clflush	(%edi)
    462  1.16  nakayama .byte	240
    463  1.16  nakayama 	addl	%ebx,(%edi)
    464  1.16  nakayama 	.byte	0x0f,0x31
    465  1.16  nakayama 	movl	%eax,%edx
    466  1.16  nakayama 	subl	%esi,%eax
    467  1.16  nakayama 	movl	%edx,%esi
    468  1.16  nakayama 	movl	%eax,%ebx
    469  1.16  nakayama 	jmp	.L030loop2
    470  1.16  nakayama .align	16
    471  1.16  nakayama .L030loop2:
    472  1.16  nakayama 	clflush	(%edi)
    473  1.16  nakayama .byte	240
    474  1.16  nakayama 	addl	%eax,(%edi)
    475  1.16  nakayama 	subl	$1,%ebp
    476  1.16  nakayama 	jz	.L031done2
    477  1.16  nakayama 	.byte	0x0f,0x31
    478  1.16  nakayama 	movl	%eax,%edx
    479  1.16  nakayama 	subl	%esi,%eax
    480  1.16  nakayama 	movl	%edx,%esi
    481  1.16  nakayama 	cmpl	%ebx,%eax
    482  1.16  nakayama 	movl	%eax,%ebx
    483  1.16  nakayama 	movl	$0,%edx
    484  1.16  nakayama 	setne	%dl
    485  1.16  nakayama 	subl	%edx,%ecx
    486  1.16  nakayama 	leal	(%edi,%edx,4),%edi
    487  1.16  nakayama 	jnz	.L030loop2
    488  1.16  nakayama .L031done2:
    489  1.16  nakayama 	movl	24(%esp),%eax
    490  1.16  nakayama 	subl	%ecx,%eax
    491  1.16  nakayama .L029nogo:
    492  1.15  christos 	popl	%edi
    493  1.15  christos 	popl	%esi
    494  1.15  christos 	popl	%ebx
    495  1.15  christos 	popl	%ebp
    496  1.15  christos 	ret
    497  1.15  christos .size	OPENSSL_instrument_bus2,.-.L_OPENSSL_instrument_bus2_begin
    498  1.15  christos .globl	OPENSSL_ia32_rdrand_bytes
    499  1.15  christos .type	OPENSSL_ia32_rdrand_bytes,@function
    500  1.15  christos .align	16
    501  1.15  christos OPENSSL_ia32_rdrand_bytes:
    502  1.15  christos .L_OPENSSL_ia32_rdrand_bytes_begin:
    503  1.18  christos 	#ifdef __CET__
    504  1.18  christos 
    505  1.18  christos .byte	243,15,30,251
    506  1.18  christos 	#endif
    507  1.18  christos 
    508  1.15  christos 	pushl	%edi
    509  1.15  christos 	pushl	%ebx
    510  1.15  christos 	xorl	%eax,%eax
    511  1.15  christos 	movl	12(%esp),%edi
    512  1.15  christos 	movl	16(%esp),%ebx
    513  1.15  christos 	cmpl	$0,%ebx
    514  1.17  christos 	je	.L032done
    515  1.15  christos 	movl	$8,%ecx
    516  1.17  christos .L033loop:
    517  1.15  christos .byte	15,199,242
    518  1.17  christos 	jc	.L034break
    519  1.17  christos 	loop	.L033loop
    520  1.17  christos 	jmp	.L032done
    521  1.15  christos .align	16
    522  1.17  christos .L034break:
    523  1.15  christos 	cmpl	$4,%ebx
    524  1.17  christos 	jb	.L035tail
    525  1.15  christos 	movl	%edx,(%edi)
    526  1.15  christos 	leal	4(%edi),%edi
    527  1.15  christos 	addl	$4,%eax
    528  1.15  christos 	subl	$4,%ebx
    529  1.17  christos 	jz	.L032done
    530  1.15  christos 	movl	$8,%ecx
    531  1.17  christos 	jmp	.L033loop
    532  1.15  christos .align	16
    533  1.17  christos .L035tail:
    534  1.15  christos 	movb	%dl,(%edi)
    535  1.15  christos 	leal	1(%edi),%edi
    536  1.15  christos 	incl	%eax
    537  1.15  christos 	shrl	$8,%edx
    538  1.15  christos 	decl	%ebx
    539  1.17  christos 	jnz	.L035tail
    540  1.17  christos .L032done:
    541  1.17  christos 	xorl	%edx,%edx
    542  1.15  christos 	popl	%ebx
    543  1.15  christos 	popl	%edi
    544  1.15  christos 	ret
    545  1.15  christos .size	OPENSSL_ia32_rdrand_bytes,.-.L_OPENSSL_ia32_rdrand_bytes_begin
    546  1.15  christos .globl	OPENSSL_ia32_rdseed_bytes
    547  1.15  christos .type	OPENSSL_ia32_rdseed_bytes,@function
    548  1.15  christos .align	16
    549  1.15  christos OPENSSL_ia32_rdseed_bytes:
    550  1.15  christos .L_OPENSSL_ia32_rdseed_bytes_begin:
    551  1.18  christos 	#ifdef __CET__
    552  1.18  christos 
    553  1.18  christos .byte	243,15,30,251
    554  1.18  christos 	#endif
    555  1.18  christos 
    556  1.15  christos 	pushl	%edi
    557  1.15  christos 	pushl	%ebx
    558  1.15  christos 	xorl	%eax,%eax
    559  1.15  christos 	movl	12(%esp),%edi
    560  1.15  christos 	movl	16(%esp),%ebx
    561  1.15  christos 	cmpl	$0,%ebx
    562  1.17  christos 	je	.L036done
    563  1.15  christos 	movl	$8,%ecx
    564  1.17  christos .L037loop:
    565  1.15  christos .byte	15,199,250
    566  1.17  christos 	jc	.L038break
    567  1.17  christos 	loop	.L037loop
    568  1.17  christos 	jmp	.L036done
    569  1.15  christos .align	16
    570  1.17  christos .L038break:
    571  1.15  christos 	cmpl	$4,%ebx
    572  1.17  christos 	jb	.L039tail
    573  1.15  christos 	movl	%edx,(%edi)
    574  1.15  christos 	leal	4(%edi),%edi
    575  1.15  christos 	addl	$4,%eax
    576  1.15  christos 	subl	$4,%ebx
    577  1.17  christos 	jz	.L036done
    578  1.15  christos 	movl	$8,%ecx
    579  1.17  christos 	jmp	.L037loop
    580  1.15  christos .align	16
    581  1.17  christos .L039tail:
    582  1.15  christos 	movb	%dl,(%edi)
    583  1.15  christos 	leal	1(%edi),%edi
    584  1.15  christos 	incl	%eax
    585  1.15  christos 	shrl	$8,%edx
    586  1.15  christos 	decl	%ebx
    587  1.17  christos 	jnz	.L039tail
    588  1.17  christos .L036done:
    589  1.17  christos 	xorl	%edx,%edx
    590  1.15  christos 	popl	%ebx
    591  1.15  christos 	popl	%edi
    592  1.15  christos 	ret
    593  1.15  christos .size	OPENSSL_ia32_rdseed_bytes,.-.L_OPENSSL_ia32_rdseed_bytes_begin
    594  1.14  christos .hidden	OPENSSL_cpuid_setup
    595  1.14  christos .hidden	OPENSSL_ia32cap_P
    596  1.14  christos .comm	OPENSSL_ia32cap_P,16,4
    597  1.14  christos .section	.init
    598  1.14  christos 	PIC_PROLOGUE
    599  1.14  christos 	call	PIC_PLT(OPENSSL_cpuid_setup)
    600  1.14  christos 	PIC_EPILOGUE
    601  1.18  christos 
    602  1.18  christos 	.section ".note.gnu.property", "a"
    603  1.18  christos 	.p2align 2
    604  1.18  christos 	.long 1f - 0f
    605  1.18  christos 	.long 4f - 1f
    606  1.18  christos 	.long 5
    607  1.18  christos 0:
    608  1.18  christos 	.asciz "GNU"
    609  1.18  christos 1:
    610  1.18  christos 	.p2align 2
    611  1.18  christos 	.long 0xc0000002
    612  1.18  christos 	.long 3f - 2f
    613  1.18  christos 2:
    614  1.18  christos 	.long 3
    615  1.18  christos 3:
    616  1.18  christos 	.p2align 2
    617  1.18  christos 4:
    618