1#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM)
2.text
3
4
5
6
7.globl	CRYPTO_rdrand
8.hidden CRYPTO_rdrand
9.type	CRYPTO_rdrand,@function
10.align	16
11CRYPTO_rdrand:
12	xorq	%rax,%rax
13
14
15.byte	0x48, 0x0f, 0xc7, 0xf1
16
17	adcq	%rax,%rax
18	movq	%rcx,0(%rdi)
19	.byte	0xf3,0xc3
20
21
22
23
24
25.globl	CRYPTO_rdrand_multiple8_buf
26.hidden CRYPTO_rdrand_multiple8_buf
27.type	CRYPTO_rdrand_multiple8_buf,@function
28.align	16
29CRYPTO_rdrand_multiple8_buf:
30	testq	%rsi,%rsi
31	jz	.Lout
32	movq	$8,%rdx
33.Lloop:
34
35
36.byte	0x48, 0x0f, 0xc7, 0xf1
37	jnc	.Lerr
38	movq	%rcx,0(%rdi)
39	addq	%rdx,%rdi
40	subq	%rdx,%rsi
41	jnz	.Lloop
42.Lout:
43	movq	$1,%rax
44	.byte	0xf3,0xc3
45.Lerr:
46	xorq	%rax,%rax
47	.byte	0xf3,0xc3
48#endif
49