1#include <openssl/asm_base.h> 2 3#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && \ 4 (defined(__APPLE__) || defined(__ELF__)) 5 6.text 7#if defined(__APPLE__) 8.private_extern _fiat_p256_adx_sqr 9.global _fiat_p256_adx_sqr 10_fiat_p256_adx_sqr: 11#else 12.type fiat_p256_adx_sqr, @function 13.hidden fiat_p256_adx_sqr 14.global fiat_p256_adx_sqr 15fiat_p256_adx_sqr: 16#endif 17 18.cfi_startproc 19_CET_ENDBR 20pushq %rbp 21.cfi_adjust_cfa_offset 8 22.cfi_offset rbp, -16 23movq %rsp, %rbp 24movq (%rsi), %rdx 25mulxq 0x18(%rsi), %rax, %r10 26mulxq %rdx, %r11, %rcx 27mulxq 0x8(%rsi), %r8, %r9 28movq %rbx, -0x80(%rsp) 29.cfi_offset rbx, -16-0x80 30xorq %rbx, %rbx 31adoxq %r8, %r8 32movq %r12, -0x78(%rsp) 33.cfi_offset r12, -16-0x78 34mulxq 0x10(%rsi), %rbx, %r12 35movq 0x8(%rsi), %rdx 36movq %r13, -0x70(%rsp) 37.cfi_offset r13, -16-0x70 38movq %r14, -0x68(%rsp) 39.cfi_offset r14, -16-0x68 40mulxq %rdx, %r13, %r14 41movq %r15, -0x60(%rsp) 42.cfi_offset r15, -16-0x60 43movq %rdi, -0x58(%rsp) 44mulxq 0x10(%rsi), %r15, %rdi 45adcxq %r15, %r12 46movq %r11, -0x50(%rsp) 47mulxq 0x18(%rsi), %r15, %r11 48adcxq %rdi, %r10 49movq $0x0, %rdi 50adcxq %rdi, %r11 51clc 52adcxq %r9, %rbx 53adoxq %rbx, %rbx 54adcxq %r12, %rax 55adoxq %rax, %rax 56adcxq %r10, %r15 57adoxq %r15, %r15 58movq 0x10(%rsi), %rdx 59mulxq 0x18(%rsi), %r9, %r12 60adcxq %r11, %r9 61adcxq %rdi, %r12 62mulxq %rdx, %r10, %r11 63clc 64adcxq %r8, %rcx 65adcxq %rbx, %r13 66adcxq %rax, %r14 67adoxq %r9, %r9 68adcxq %r15, %r10 69movq 0x18(%rsi), %rdx 70mulxq %rdx, %r8, %rbx 71adoxq %r12, %r12 72adcxq %r9, %r11 73movq -0x50(%rsp), %rsi 74adcxq %r12, %r8 75movq $0x100000000, %rax 76movq %rax, %rdx 77mulxq %rsi, %rax, %r15 78adcxq %rdi, %rbx 79adoxq %rdi, %rbx 80xorq %r9, %r9 81adoxq %rcx, %rax 82adoxq %r13, %r15 83mulxq %rax, %rdi, %rcx 84adcxq %r15, %rdi 85adoxq %r14, %rcx 86movq $0xffffffff00000001, %rdx 87mulxq %rsi, %r13, %r14 88adoxq %r10, %r14 89adcxq %rcx, %r13 90mulxq %rax, %r10, %r12 91adoxq %r11, %r12 92movq %r9, %r11 93adoxq %r8, %r11 94adcxq %r14, %r10 95movq %r9, %r8 96adcxq %r12, %r8 97movq %r9, %rax 98adcxq %r11, %rax 99movq %r9, %r15 100adoxq %rbx, %r15 101movq $0x100000000, %rdx 102mulxq %rdi, %rbx, %rcx 103movq %r9, %r14 104adcxq %r15, %r14 105movq %r9, %r12 106adoxq %r12, %r12 107adcxq %r9, %r12 108adoxq %r13, %rbx 109mulxq %rbx, %r13, %r11 110movq $0xffffffff00000001, %r15 111movq %r15, %rdx 112mulxq %rbx, %r15, %rsi 113adoxq %r10, %rcx 114adoxq %r8, %r11 115mulxq %rdi, %r10, %r8 116adcxq %rcx, %r13 117adoxq %rax, %r8 118adcxq %r11, %r10 119adoxq %r14, %rsi 120movq %r12, %rdi 121movq %r9, %rax 122adoxq %rax, %rdi 123adcxq %r8, %r15 124movq %rax, %r14 125adcxq %rsi, %r14 126adcxq %r9, %rdi 127decq %r9 128movq %r13, %rbx 129subq %r9, %rbx 130movq $0xffffffff, %rcx 131movq %r10, %r11 132sbbq %rcx, %r11 133movq %r15, %r8 134sbbq %rax, %r8 135movq %r14, %rsi 136sbbq %rdx, %rsi 137sbbq %rax, %rdi 138cmovcq %r13, %rbx 139cmovcq %r15, %r8 140cmovcq %r10, %r11 141cmovcq %r14, %rsi 142movq -0x58(%rsp), %rdi 143movq %rsi, 0x18(%rdi) 144movq %rbx, (%rdi) 145movq %r11, 0x8(%rdi) 146movq %r8, 0x10(%rdi) 147movq -0x80(%rsp), %rbx 148.cfi_restore rbx 149movq -0x78(%rsp), %r12 150.cfi_restore r12 151movq -0x70(%rsp), %r13 152.cfi_restore r13 153movq -0x68(%rsp), %r14 154.cfi_restore r14 155movq -0x60(%rsp), %r15 156.cfi_restore r15 157popq %rbp 158.cfi_restore rbp 159.cfi_adjust_cfa_offset -8 160retq 161.cfi_endproc 162#if defined(__ELF__) 163.size fiat_p256_adx_sqr, .-fiat_p256_adx_sqr 164#endif 165 166#endif 167