1#if defined(__x86_64__)
2.text
3
4
5
6
7.globl	_CRYPTO_rdrand
8.private_extern _CRYPTO_rdrand
9
10.p2align	4
11_CRYPTO_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.private_extern _CRYPTO_rdrand_multiple8_buf
27
28.p2align	4
29_CRYPTO_rdrand_multiple8_buf:
30	testq	%rsi,%rsi
31	jz	L$out
32	movq	$8,%rdx
33L$loop:
34
35
36.byte	0x48, 0x0f, 0xc7, 0xf1
37	jnc	L$err
38	movq	%rcx,0(%rdi)
39	addq	%rdx,%rdi
40	subq	%rdx,%rsi
41	jnz	L$loop
42L$out:
43	movq	$1,%rax
44	.byte	0xf3,0xc3
45L$err:
46	xorq	%rax,%rax
47	.byte	0xf3,0xc3
48#endif
49