1default rel 2%define XMMWORD 3%define YMMWORD 4%define ZMMWORD 5section .text code align=64 6 7 8 9 10 11global CRYPTO_rdrand 12 13ALIGN 16 14CRYPTO_rdrand: 15 mov QWORD[8+rsp],rdi ;WIN64 prologue 16 mov QWORD[16+rsp],rsi 17 mov rax,rsp 18$L$SEH_begin_CRYPTO_rdrand: 19 mov rdi,rcx 20 21 22 xor rax,rax 23 24 25DB 0x48,0x0f,0xc7,0xf1 26 27 adc rax,rax 28 mov QWORD[rdi],rcx 29 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 30 mov rsi,QWORD[16+rsp] 31 DB 0F3h,0C3h ;repret 32 33 34 35 36 37global CRYPTO_rdrand_multiple8_buf 38 39ALIGN 16 40CRYPTO_rdrand_multiple8_buf: 41 mov QWORD[8+rsp],rdi ;WIN64 prologue 42 mov QWORD[16+rsp],rsi 43 mov rax,rsp 44$L$SEH_begin_CRYPTO_rdrand_multiple8_buf: 45 mov rdi,rcx 46 mov rsi,rdx 47 48 49 test rsi,rsi 50 jz NEAR $L$out 51 mov rdx,8 52$L$loop: 53 54 55DB 0x48,0x0f,0xc7,0xf1 56 jnc NEAR $L$err 57 mov QWORD[rdi],rcx 58 add rdi,rdx 59 sub rsi,rdx 60 jnz NEAR $L$loop 61$L$out: 62 mov rax,1 63 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 64 mov rsi,QWORD[16+rsp] 65 DB 0F3h,0C3h ;repret 66$L$err: 67 xor rax,rax 68 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 69 mov rsi,QWORD[16+rsp] 70 DB 0F3h,0C3h ;repret 71