| OLD | NEW |
| (Empty) |
| 1 default rel | |
| 2 %define XMMWORD | |
| 3 %define YMMWORD | |
| 4 %define ZMMWORD | |
| 5 section .text code align=64 | |
| 6 | |
| 7 | |
| 8 | |
| 9 | |
| 10 | |
| 11 global CRYPTO_rdrand | |
| 12 | |
| 13 ALIGN 16 | |
| 14 CRYPTO_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 | |
| 25 DB 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 | |
| 37 global CRYPTO_rdrand_multiple8_buf | |
| 38 | |
| 39 ALIGN 16 | |
| 40 CRYPTO_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 | |
| 55 DB 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 | |
| OLD | NEW |