| #include <openssl/asm_base.h> |
| |
| #if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && \ |
| (defined(__APPLE__) || defined(__ELF__)) |
| |
| .intel_syntax noprefix |
| .text |
| #if defined(__APPLE__) |
| .private_extern _fiat_curve25519_adx_square |
| .global _fiat_curve25519_adx_square |
| _fiat_curve25519_adx_square: |
| #else |
| .type fiat_curve25519_adx_square, @function |
| .hidden fiat_curve25519_adx_square |
| .global fiat_curve25519_adx_square |
| fiat_curve25519_adx_square: |
| #endif |
| |
| .cfi_startproc |
| _CET_ENDBR |
| push rbp |
| .cfi_adjust_cfa_offset 8 |
| .cfi_offset rbp, -16 |
| mov rbp, rsp |
| |
| mov rdx, [ rsi + 0x0 ] |
| mulx r10, rax, [ rsi + 0x8 ] |
| mov rdx, [ rsi + 0x0 ] |
| mulx rcx, r11, [ rsi + 0x10 ] |
| xor rdx, rdx |
| adox r11, r10 |
| mov rdx, [ rsi + 0x0 ] |
| mulx r9, r8, [ rsi + 0x18 ] |
| mov rdx, [ rsi + 0x8 ] |
| mov [ rsp - 0x80 ], rbx |
| .cfi_offset rbx, -16-0x80 |
| mulx rbx, r10, [ rsi + 0x18 ] |
| adox r8, rcx |
| mov [rsp - 0x48 ], rdi |
| adox r10, r9 |
| adcx rax, rax |
| mov rdx, [ rsi + 0x10 ] |
| mulx r9, rcx, [ rsi + 0x18 ] |
| adox rcx, rbx |
| mov rdx, [ rsi + 0x10 ] |
| mulx rdi, rbx, [ rsi + 0x8 ] |
| mov rdx, 0x0 |
| adox r9, rdx |
| mov [ rsp - 0x70 ], r12 |
| .cfi_offset r12, -16-0x70 |
| mov r12, -0x3 |
| inc r12 |
| adox rbx, r8 |
| adox rdi, r10 |
| adcx r11, r11 |
| mov r8, rdx |
| adox r8, rcx |
| mov r10, rdx |
| adox r10, r9 |
| adcx rbx, rbx |
| mov rdx, [ rsi + 0x0 ] |
| mulx r9, rcx, rdx |
| mov rdx, [ rsi + 0x8 ] |
| mov [ rsp - 0x68 ], r13 |
| .cfi_offset r13, -16-0x68 |
| mov [ rsp - 0x60 ], r14 |
| .cfi_offset r14, -16-0x60 |
| mulx r14, r13, rdx |
| seto dl |
| inc r12 |
| adox r9, rax |
| adox r13, r11 |
| adox r14, rbx |
| adcx rdi, rdi |
| mov al, dl |
| mov rdx, [ rsi + 0x10 ] |
| mulx rbx, r11, rdx |
| adox r11, rdi |
| adcx r8, r8 |
| adox rbx, r8 |
| adcx r10, r10 |
| movzx rdx, al |
| mov rdi, 0x0 |
| adcx rdx, rdi |
| movzx r8, al |
| lea r8, [ r8 + rdx ] |
| mov rdx, [ rsi + 0x18 ] |
| mulx rdi, rax, rdx |
| adox rax, r10 |
| mov rdx, 0x26 |
| mov [ rsp - 0x58 ], r15 |
| .cfi_offset r15, -16-0x58 |
| mulx r15, r10, r11 |
| clc |
| adcx r10, rcx |
| mulx r11, rcx, rbx |
| adox r8, rdi |
| mulx rdi, rbx, r8 |
| inc r12 |
| adox rcx, r9 |
| mulx r8, r9, rax |
| adcx r15, rcx |
| adox r9, r13 |
| adcx r11, r9 |
| adox rbx, r14 |
| adox rdi, r12 |
| adcx r8, rbx |
| adc rdi, 0x0 |
| mulx r14, r13, rdi |
| test al, al |
| mov rdi, [ rsp - 0x48 ] |
| adox r13, r10 |
| mov r14, r12 |
| adox r14, r15 |
| mov [ rdi + 0x8 ], r14 |
| mov rax, r12 |
| adox rax, r11 |
| mov r10, r12 |
| adox r10, r8 |
| mov [ rdi + 0x10 ], rax |
| mov rcx, r12 |
| cmovo rcx, rdx |
| adcx r13, rcx |
| mov [ rdi + 0x0 ], r13 |
| mov [ rdi + 0x18 ], r10 |
| mov rbx, [ rsp - 0x80 ] |
| .cfi_restore rbx |
| mov r12, [ rsp - 0x70 ] |
| .cfi_restore r12 |
| mov r13, [ rsp - 0x68 ] |
| .cfi_restore r13 |
| mov r14, [ rsp - 0x60 ] |
| .cfi_restore r14 |
| mov r15, [ rsp - 0x58 ] |
| .cfi_restore r15 |
| |
| pop rbp |
| .cfi_restore rbp |
| .cfi_adjust_cfa_offset -8 |
| ret |
| .cfi_endproc |
| #if defined(__ELF__) |
| .size fiat_curve25519_adx_square, .-fiat_curve25519_adx_square |
| #endif |
| |
| #endif |