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