summaryrefslogtreecommitdiff
path: root/mac-x86_64/crypto
diff options
context:
space:
mode:
authorPete Bentley <prb@google.com>2019-08-08 12:52:37 +0100
committerPete Bentley <prb@google.com>2019-08-08 14:43:20 +0100
commitf8d8b73da16aa9f2fdda401a46b4f86a83016712 (patch)
tree3725c3e206175c177a448c50d41ad2c2589a07fa /mac-x86_64/crypto
parentcb6fdd2c554b117ce1100249a0f8a91519782c12 (diff)
downloadboringssl-f8d8b73da16aa9f2fdda401a46b4f86a83016712.tar.gz
external/boringssl: Sync to 81080a729af568f7b5fde92b9170cc17065027c9.
This includes the following changes: https://boringssl.googlesource.com/boringssl/+log/c9827e073f64e353c4891ecc2c73721882543ee0..81080a729af568f7b5fde92b9170cc17065027c9 Bug: 134581881 Test: atest CtsLibcoreTestCases Test: atest CtsLibcoreOkHttpTestCases Change-Id: Id3a510c9724554a28b6514b892bd15dde305855c
Diffstat (limited to 'mac-x86_64/crypto')
-rw-r--r--mac-x86_64/crypto/fipsmodule/p256-x86_64-asm.S26
-rw-r--r--mac-x86_64/crypto/third_party/sike/asm/fp-x86_64.S1869
2 files changed, 1889 insertions, 6 deletions
diff --git a/mac-x86_64/crypto/fipsmodule/p256-x86_64-asm.S b/mac-x86_64/crypto/fipsmodule/p256-x86_64-asm.S
index 237c0a32..1f4a9313 100644
--- a/mac-x86_64/crypto/fipsmodule/p256-x86_64-asm.S
+++ b/mac-x86_64/crypto/fipsmodule/p256-x86_64-asm.S
@@ -2772,15 +2772,22 @@ L$point_addq_body:
orq %r8,%r12
orq %r9,%r12
-.byte 0x3e
- jnz L$add_proceedq
.byte 102,73,15,126,208
.byte 102,73,15,126,217
- testq %r8,%r8
+ orq %r8,%r12
+.byte 0x3e
jnz L$add_proceedq
+
+
+
testq %r9,%r9
jz L$add_doubleq
+
+
+
+
+
.byte 102,72,15,126,199
pxor %xmm0,%xmm0
movdqu %xmm0,0(%rdi)
@@ -3875,15 +3882,22 @@ L$point_addx_body:
orq %r8,%r12
orq %r9,%r12
-.byte 0x3e
- jnz L$add_proceedx
.byte 102,73,15,126,208
.byte 102,73,15,126,217
- testq %r8,%r8
+ orq %r8,%r12
+.byte 0x3e
jnz L$add_proceedx
+
+
+
testq %r9,%r9
jz L$add_doublex
+
+
+
+
+
.byte 102,72,15,126,199
pxor %xmm0,%xmm0
movdqu %xmm0,0(%rdi)
diff --git a/mac-x86_64/crypto/third_party/sike/asm/fp-x86_64.S b/mac-x86_64/crypto/third_party/sike/asm/fp-x86_64.S
new file mode 100644
index 00000000..f1e7ea4f
--- /dev/null
+++ b/mac-x86_64/crypto/third_party/sike/asm/fp-x86_64.S
@@ -0,0 +1,1869 @@
+# This file is generated from a similarly-named Perl script in the BoringSSL
+# source tree. Do not edit by hand.
+
+#if defined(__has_feature)
+#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM)
+#define OPENSSL_NO_ASM
+#endif
+#endif
+
+#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM)
+#if defined(BORINGSSL_PREFIX)
+#include <boringssl_prefix_symbols_asm.h>
+#endif
+.text
+
+
+L$p434x2:
+.quad 0xFFFFFFFFFFFFFFFE
+.quad 0xFFFFFFFFFFFFFFFF
+.quad 0xFB82ECF5C5FFFFFF
+.quad 0xF78CB8F062B15D47
+.quad 0xD9F8BFAD038A40AC
+.quad 0x0004683E4E2EE688
+
+
+L$p434p1:
+.quad 0xFDC1767AE3000000
+.quad 0x7BC65C783158AEA3
+.quad 0x6CFC5FD681C52056
+.quad 0x0002341F27177344
+
+
+.private_extern _OPENSSL_ia32cap_P
+.globl _sike_fpadd
+.private_extern _sike_fpadd
+
+_sike_fpadd:
+
+ pushq %r12
+
+
+ pushq %r13
+
+
+ pushq %r14
+
+
+
+ xorq %rax,%rax
+
+ movq 0(%rdi),%r8
+ addq 0(%rsi),%r8
+ movq 8(%rdi),%r9
+ adcq 8(%rsi),%r9
+ movq 16(%rdi),%r10
+ adcq 16(%rsi),%r10
+ movq 24(%rdi),%r11
+ adcq 24(%rsi),%r11
+ movq 32(%rdi),%r12
+ adcq 32(%rsi),%r12
+ movq 40(%rdi),%r13
+ adcq 40(%rsi),%r13
+ movq 48(%rdi),%r14
+ adcq 48(%rsi),%r14
+
+ movq L$p434x2(%rip),%rcx
+ subq %rcx,%r8
+ movq 8+L$p434x2(%rip),%rcx
+ sbbq %rcx,%r9
+ sbbq %rcx,%r10
+ movq 16+L$p434x2(%rip),%rcx
+ sbbq %rcx,%r11
+ movq 24+L$p434x2(%rip),%rcx
+ sbbq %rcx,%r12
+ movq 32+L$p434x2(%rip),%rcx
+ sbbq %rcx,%r13
+ movq 40+L$p434x2(%rip),%rcx
+ sbbq %rcx,%r14
+
+ sbbq $0,%rax
+
+ movq L$p434x2(%rip),%rdi
+ andq %rax,%rdi
+ movq 8+L$p434x2(%rip),%rsi
+ andq %rax,%rsi
+ movq 16+L$p434x2(%rip),%rcx
+ andq %rax,%rcx
+
+ addq %rdi,%r8
+ movq %r8,0(%rdx)
+ adcq %rsi,%r9
+ movq %r9,8(%rdx)
+ adcq %rsi,%r10
+ movq %r10,16(%rdx)
+ adcq %rcx,%r11
+ movq %r11,24(%rdx)
+
+ setc %cl
+ movq 24+L$p434x2(%rip),%r8
+ andq %rax,%r8
+ movq 32+L$p434x2(%rip),%r9
+ andq %rax,%r9
+ movq 40+L$p434x2(%rip),%r10
+ andq %rax,%r10
+ btq $0,%rcx
+
+ adcq %r8,%r12
+ movq %r12,32(%rdx)
+ adcq %r9,%r13
+ movq %r13,40(%rdx)
+ adcq %r10,%r14
+ movq %r14,48(%rdx)
+
+ popq %r14
+
+ popq %r13
+
+ popq %r12
+
+ .byte 0xf3,0xc3
+
+.globl _sike_cswap_asm
+.private_extern _sike_cswap_asm
+
+_sike_cswap_asm:
+
+
+ movq %rdx,%xmm3
+
+
+
+
+
+ pshufd $68,%xmm3,%xmm3
+
+ movdqu 0(%rdi),%xmm0
+ movdqu 0(%rsi),%xmm1
+ movdqa %xmm1,%xmm2
+ pxor %xmm0,%xmm2
+ pand %xmm3,%xmm2
+ pxor %xmm2,%xmm0
+ pxor %xmm2,%xmm1
+ movdqu %xmm0,0(%rdi)
+ movdqu %xmm1,0(%rsi)
+
+ movdqu 16(%rdi),%xmm0
+ movdqu 16(%rsi),%xmm1
+ movdqa %xmm1,%xmm2
+ pxor %xmm0,%xmm2
+ pand %xmm3,%xmm2
+ pxor %xmm2,%xmm0
+ pxor %xmm2,%xmm1
+ movdqu %xmm0,16(%rdi)
+ movdqu %xmm1,16(%rsi)
+
+ movdqu 32(%rdi),%xmm0
+ movdqu 32(%rsi),%xmm1
+ movdqa %xmm1,%xmm2
+ pxor %xmm0,%xmm2
+ pand %xmm3,%xmm2
+ pxor %xmm2,%xmm0
+ pxor %xmm2,%xmm1
+ movdqu %xmm0,32(%rdi)
+ movdqu %xmm1,32(%rsi)
+
+ movdqu 48(%rdi),%xmm0
+ movdqu 48(%rsi),%xmm1
+ movdqa %xmm1,%xmm2
+ pxor %xmm0,%xmm2
+ pand %xmm3,%xmm2
+ pxor %xmm2,%xmm0
+ pxor %xmm2,%xmm1
+ movdqu %xmm0,48(%rdi)
+ movdqu %xmm1,48(%rsi)
+
+ movdqu 64(%rdi),%xmm0
+ movdqu 64(%rsi),%xmm1
+ movdqa %xmm1,%xmm2
+ pxor %xmm0,%xmm2
+ pand %xmm3,%xmm2
+ pxor %xmm2,%xmm0
+ pxor %xmm2,%xmm1
+ movdqu %xmm0,64(%rdi)
+ movdqu %xmm1,64(%rsi)
+
+ movdqu 80(%rdi),%xmm0
+ movdqu 80(%rsi),%xmm1
+ movdqa %xmm1,%xmm2
+ pxor %xmm0,%xmm2
+ pand %xmm3,%xmm2
+ pxor %xmm2,%xmm0
+ pxor %xmm2,%xmm1
+ movdqu %xmm0,80(%rdi)
+ movdqu %xmm1,80(%rsi)
+
+ movdqu 96(%rdi),%xmm0
+ movdqu 96(%rsi),%xmm1
+ movdqa %xmm1,%xmm2
+ pxor %xmm0,%xmm2
+ pand %xmm3,%xmm2
+ pxor %xmm2,%xmm0
+ pxor %xmm2,%xmm1
+ movdqu %xmm0,96(%rdi)
+ movdqu %xmm1,96(%rsi)
+
+ movdqu 112(%rdi),%xmm0
+ movdqu 112(%rsi),%xmm1
+ movdqa %xmm1,%xmm2
+ pxor %xmm0,%xmm2
+ pand %xmm3,%xmm2
+ pxor %xmm2,%xmm0
+ pxor %xmm2,%xmm1
+ movdqu %xmm0,112(%rdi)
+ movdqu %xmm1,112(%rsi)
+
+ movdqu 128(%rdi),%xmm0
+ movdqu 128(%rsi),%xmm1
+ movdqa %xmm1,%xmm2
+ pxor %xmm0,%xmm2
+ pand %xmm3,%xmm2
+ pxor %xmm2,%xmm0
+ pxor %xmm2,%xmm1
+ movdqu %xmm0,128(%rdi)
+ movdqu %xmm1,128(%rsi)
+
+ movdqu 144(%rdi),%xmm0
+ movdqu 144(%rsi),%xmm1
+ movdqa %xmm1,%xmm2
+ pxor %xmm0,%xmm2
+ pand %xmm3,%xmm2
+ pxor %xmm2,%xmm0
+ pxor %xmm2,%xmm1
+ movdqu %xmm0,144(%rdi)
+ movdqu %xmm1,144(%rsi)
+
+ movdqu 160(%rdi),%xmm0
+ movdqu 160(%rsi),%xmm1
+ movdqa %xmm1,%xmm2
+ pxor %xmm0,%xmm2
+ pand %xmm3,%xmm2
+ pxor %xmm2,%xmm0
+ pxor %xmm2,%xmm1
+ movdqu %xmm0,160(%rdi)
+ movdqu %xmm1,160(%rsi)
+
+ movdqu 176(%rdi),%xmm0
+ movdqu 176(%rsi),%xmm1
+ movdqa %xmm1,%xmm2
+ pxor %xmm0,%xmm2
+ pand %xmm3,%xmm2
+ pxor %xmm2,%xmm0
+ pxor %xmm2,%xmm1
+ movdqu %xmm0,176(%rdi)
+ movdqu %xmm1,176(%rsi)
+
+ movdqu 192(%rdi),%xmm0
+ movdqu 192(%rsi),%xmm1
+ movdqa %xmm1,%xmm2
+ pxor %xmm0,%xmm2
+ pand %xmm3,%xmm2
+ pxor %xmm2,%xmm0
+ pxor %xmm2,%xmm1
+ movdqu %xmm0,192(%rdi)
+ movdqu %xmm1,192(%rsi)
+
+ movdqu 208(%rdi),%xmm0
+ movdqu 208(%rsi),%xmm1
+ movdqa %xmm1,%xmm2
+ pxor %xmm0,%xmm2
+ pand %xmm3,%xmm2
+ pxor %xmm2,%xmm0
+ pxor %xmm2,%xmm1
+ movdqu %xmm0,208(%rdi)
+ movdqu %xmm1,208(%rsi)
+
+ .byte 0xf3,0xc3
+.globl _sike_fpsub
+.private_extern _sike_fpsub
+
+_sike_fpsub:
+
+ pushq %r12
+
+
+ pushq %r13
+
+
+ pushq %r14
+
+
+
+ xorq %rax,%rax
+
+ movq 0(%rdi),%r8
+ subq 0(%rsi),%r8
+ movq 8(%rdi),%r9
+ sbbq 8(%rsi),%r9
+ movq 16(%rdi),%r10
+ sbbq 16(%rsi),%r10
+ movq 24(%rdi),%r11
+ sbbq 24(%rsi),%r11
+ movq 32(%rdi),%r12
+ sbbq 32(%rsi),%r12
+ movq 40(%rdi),%r13
+ sbbq 40(%rsi),%r13
+ movq 48(%rdi),%r14
+ sbbq 48(%rsi),%r14
+
+ sbbq $0x0,%rax
+
+ movq L$p434x2(%rip),%rdi
+ andq %rax,%rdi
+ movq 8+L$p434x2(%rip),%rsi
+ andq %rax,%rsi
+ movq 16+L$p434x2(%rip),%rcx
+ andq %rax,%rcx
+
+ addq %rdi,%r8
+ movq %r8,0(%rdx)
+ adcq %rsi,%r9
+ movq %r9,8(%rdx)
+ adcq %rsi,%r10
+ movq %r10,16(%rdx)
+ adcq %rcx,%r11
+ movq %r11,24(%rdx)
+
+ setc %cl
+ movq 24+L$p434x2(%rip),%r8
+ andq %rax,%r8
+ movq 32+L$p434x2(%rip),%r9
+ andq %rax,%r9
+ movq 40+L$p434x2(%rip),%r10
+ andq %rax,%r10
+ btq $0x0,%rcx
+
+ adcq %r8,%r12
+ adcq %r9,%r13
+ adcq %r10,%r14
+ movq %r12,32(%rdx)
+ movq %r13,40(%rdx)
+ movq %r14,48(%rdx)
+
+ popq %r14
+
+ popq %r13
+
+ popq %r12
+
+ .byte 0xf3,0xc3
+
+.globl _sike_mpadd_asm
+.private_extern _sike_mpadd_asm
+
+_sike_mpadd_asm:
+
+ movq 0(%rdi),%r8;
+ movq 8(%rdi),%r9
+ movq 16(%rdi),%r10
+ movq 24(%rdi),%r11
+ movq 32(%rdi),%rcx
+ addq 0(%rsi),%r8
+ adcq 8(%rsi),%r9
+ adcq 16(%rsi),%r10
+ adcq 24(%rsi),%r11
+ adcq 32(%rsi),%rcx
+ movq %r8,0(%rdx)
+ movq %r9,8(%rdx)
+ movq %r10,16(%rdx)
+ movq %r11,24(%rdx)
+ movq %rcx,32(%rdx)
+
+ movq 40(%rdi),%r8
+ movq 48(%rdi),%r9
+ adcq 40(%rsi),%r8
+ adcq 48(%rsi),%r9
+ movq %r8,40(%rdx)
+ movq %r9,48(%rdx)
+ .byte 0xf3,0xc3
+
+.globl _sike_mpsubx2_asm
+.private_extern _sike_mpsubx2_asm
+
+_sike_mpsubx2_asm:
+
+ xorq %rax,%rax
+
+ movq 0(%rdi),%r8
+ movq 8(%rdi),%r9
+ movq 16(%rdi),%r10
+ movq 24(%rdi),%r11
+ movq 32(%rdi),%rcx
+ subq 0(%rsi),%r8
+ sbbq 8(%rsi),%r9
+ sbbq 16(%rsi),%r10
+ sbbq 24(%rsi),%r11
+ sbbq 32(%rsi),%rcx
+ movq %r8,0(%rdx)
+ movq %r9,8(%rdx)
+ movq %r10,16(%rdx)
+ movq %r11,24(%rdx)
+ movq %rcx,32(%rdx)
+
+ movq 40(%rdi),%r8
+ movq 48(%rdi),%r9
+ movq 56(%rdi),%r10
+ movq 64(%rdi),%r11
+ movq 72(%rdi),%rcx
+ sbbq 40(%rsi),%r8
+ sbbq 48(%rsi),%r9
+ sbbq 56(%rsi),%r10
+ sbbq 64(%rsi),%r11
+ sbbq 72(%rsi),%rcx
+ movq %r8,40(%rdx)
+ movq %r9,48(%rdx)
+ movq %r10,56(%rdx)
+ movq %r11,64(%rdx)
+ movq %rcx,72(%rdx)
+
+ movq 80(%rdi),%r8
+ movq 88(%rdi),%r9
+ movq 96(%rdi),%r10
+ movq 104(%rdi),%r11
+ sbbq 80(%rsi),%r8
+ sbbq 88(%rsi),%r9
+ sbbq 96(%rsi),%r10
+ sbbq 104(%rsi),%r11
+ sbbq $0x0,%rax
+ movq %r8,80(%rdx)
+ movq %r9,88(%rdx)
+ movq %r10,96(%rdx)
+ movq %r11,104(%rdx)
+ .byte 0xf3,0xc3
+
+.globl _sike_mpdblsubx2_asm
+.private_extern _sike_mpdblsubx2_asm
+
+_sike_mpdblsubx2_asm:
+
+ pushq %r12
+
+
+ pushq %r13
+
+
+
+ xorq %rax,%rax
+
+
+ movq 0(%rdx),%r8
+ movq 8(%rdx),%r9
+ movq 16(%rdx),%r10
+ movq 24(%rdx),%r11
+ movq 32(%rdx),%r12
+ movq 40(%rdx),%r13
+ movq 48(%rdx),%rcx
+ subq 0(%rdi),%r8
+ sbbq 8(%rdi),%r9
+ sbbq 16(%rdi),%r10
+ sbbq 24(%rdi),%r11
+ sbbq 32(%rdi),%r12
+ sbbq 40(%rdi),%r13
+ sbbq 48(%rdi),%rcx
+ adcq $0x0,%rax
+
+
+ subq 0(%rsi),%r8
+ sbbq 8(%rsi),%r9
+ sbbq 16(%rsi),%r10
+ sbbq 24(%rsi),%r11
+ sbbq 32(%rsi),%r12
+ sbbq 40(%rsi),%r13
+ sbbq 48(%rsi),%rcx
+ adcq $0x0,%rax
+
+
+ movq %r8,0(%rdx)
+ movq %r9,8(%rdx)
+ movq %r10,16(%rdx)
+ movq %r11,24(%rdx)
+ movq %r12,32(%rdx)
+ movq %r13,40(%rdx)
+ movq %rcx,48(%rdx)
+
+
+ movq 56(%rdx),%r8
+ movq 64(%rdx),%r9
+ movq 72(%rdx),%r10
+ movq 80(%rdx),%r11
+ movq 88(%rdx),%r12
+ movq 96(%rdx),%r13
+ movq 104(%rdx),%rcx
+
+ subq %rax,%r8
+ sbbq 56(%rdi),%r8
+ sbbq 64(%rdi),%r9
+ sbbq 72(%rdi),%r10
+ sbbq 80(%rdi),%r11
+ sbbq 88(%rdi),%r12
+ sbbq 96(%rdi),%r13
+ sbbq 104(%rdi),%rcx
+
+
+ subq 56(%rsi),%r8
+ sbbq 64(%rsi),%r9
+ sbbq 72(%rsi),%r10
+ sbbq 80(%rsi),%r11
+ sbbq 88(%rsi),%r12
+ sbbq 96(%rsi),%r13
+ sbbq 104(%rsi),%rcx
+
+
+ movq %r8,56(%rdx)
+ movq %r9,64(%rdx)
+ movq %r10,72(%rdx)
+ movq %r11,80(%rdx)
+ movq %r12,88(%rdx)
+ movq %r13,96(%rdx)
+ movq %rcx,104(%rdx)
+
+ popq %r13
+
+ popq %r12
+
+ .byte 0xf3,0xc3
+
+
+L$rdc_bdw:
+
+
+
+
+
+
+
+
+ xorq %rax,%rax
+ movq 0+0(%rdi),%rdx
+ mulxq 0+L$p434p1(%rip),%r8,%r9
+ mulxq 8+L$p434p1(%rip),%r12,%r10
+ mulxq 16+L$p434p1(%rip),%r13,%r11
+
+ adoxq %r12,%r9
+ adoxq %r13,%r10
+
+ mulxq 24+L$p434p1(%rip),%r13,%r12
+ adoxq %r13,%r11
+ adoxq %rax,%r12
+
+ xorq %rax,%rax
+ movq 0+8(%rdi),%rdx
+ mulxq 0+L$p434p1(%rip),%r13,%rcx
+ adcxq %r13,%r9
+ adcxq %rcx,%r10
+
+ mulxq 8+L$p434p1(%rip),%rcx,%r13
+ adcxq %r13,%r11
+ adoxq %rcx,%r10
+
+ mulxq 16+L$p434p1(%rip),%rcx,%r13
+ adcxq %r13,%r12
+ adoxq %rcx,%r11
+
+ mulxq 24+L$p434p1(%rip),%rcx,%r13
+ adcxq %rax,%r13
+ adoxq %rcx,%r12
+ adoxq %rax,%r13
+
+ xorq %rcx,%rcx
+ addq 24(%rdi),%r8
+ adcq 32(%rdi),%r9
+ adcq 40(%rdi),%r10
+ adcq 48(%rdi),%r11
+ adcq 56(%rdi),%r12
+ adcq 64(%rdi),%r13
+ adcq 72(%rdi),%rcx
+ movq %r8,24(%rdi)
+ movq %r9,32(%rdi)
+ movq %r10,40(%rdi)
+ movq %r11,48(%rdi)
+ movq %r12,56(%rdi)
+ movq %r13,64(%rdi)
+ movq %rcx,72(%rdi)
+ movq 80(%rdi),%r8
+ movq 88(%rdi),%r9
+ movq 96(%rdi),%r10
+ movq 104(%rdi),%r11
+ adcq $0x0,%r8
+ adcq $0x0,%r9
+ adcq $0x0,%r10
+ adcq $0x0,%r11
+ movq %r8,80(%rdi)
+ movq %r9,88(%rdi)
+ movq %r10,96(%rdi)
+ movq %r11,104(%rdi)
+
+ xorq %rax,%rax
+ movq 16+0(%rdi),%rdx
+ mulxq 0+L$p434p1(%rip),%r8,%r9
+ mulxq 8+L$p434p1(%rip),%r12,%r10
+ mulxq 16+L$p434p1(%rip),%r13,%r11
+
+ adoxq %r12,%r9
+ adoxq %r13,%r10
+
+ mulxq 24+L$p434p1(%rip),%r13,%r12
+ adoxq %r13,%r11
+ adoxq %rax,%r12
+
+ xorq %rax,%rax
+ movq 16+8(%rdi),%rdx
+ mulxq 0+L$p434p1(%rip),%r13,%rcx
+ adcxq %r13,%r9
+ adcxq %rcx,%r10
+
+ mulxq 8+L$p434p1(%rip),%rcx,%r13
+ adcxq %r13,%r11
+ adoxq %rcx,%r10
+
+ mulxq 16+L$p434p1(%rip),%rcx,%r13
+ adcxq %r13,%r12
+ adoxq %rcx,%r11
+
+ mulxq 24+L$p434p1(%rip),%rcx,%r13
+ adcxq %rax,%r13
+ adoxq %rcx,%r12
+ adoxq %rax,%r13
+
+ xorq %rcx,%rcx
+ addq 40(%rdi),%r8
+ adcq 48(%rdi),%r9
+ adcq 56(%rdi),%r10
+ adcq 64(%rdi),%r11
+ adcq 72(%rdi),%r12
+ adcq 80(%rdi),%r13
+ adcq 88(%rdi),%rcx
+ movq %r8,40(%rdi)
+ movq %r9,48(%rdi)
+ movq %r10,56(%rdi)
+ movq %r11,64(%rdi)
+ movq %r12,72(%rdi)
+ movq %r13,80(%rdi)
+ movq %rcx,88(%rdi)
+ movq 96(%rdi),%r8
+ movq 104(%rdi),%r9
+ adcq $0x0,%r8
+ adcq $0x0,%r9
+ movq %r8,96(%rdi)
+ movq %r9,104(%rdi)
+
+ xorq %rax,%rax
+ movq 32+0(%rdi),%rdx
+ mulxq 0+L$p434p1(%rip),%r8,%r9
+ mulxq 8+L$p434p1(%rip),%r12,%r10
+ mulxq 16+L$p434p1(%rip),%r13,%r11
+
+ adoxq %r12,%r9
+ adoxq %r13,%r10
+
+ mulxq 24+L$p434p1(%rip),%r13,%r12
+ adoxq %r13,%r11
+ adoxq %rax,%r12
+
+ xorq %rax,%rax
+ movq 32+8(%rdi),%rdx
+ mulxq 0+L$p434p1(%rip),%r13,%rcx
+ adcxq %r13,%r9
+ adcxq %rcx,%r10
+
+ mulxq 8+L$p434p1(%rip),%rcx,%r13
+ adcxq %r13,%r11
+ adoxq %rcx,%r10
+
+ mulxq 16+L$p434p1(%rip),%rcx,%r13
+ adcxq %r13,%r12
+ adoxq %rcx,%r11
+
+ mulxq 24+L$p434p1(%rip),%rcx,%r13
+ adcxq %rax,%r13
+ adoxq %rcx,%r12
+ adoxq %rax,%r13
+
+ xorq %rcx,%rcx
+ addq 56(%rdi),%r8
+ adcq 64(%rdi),%r9
+ adcq 72(%rdi),%r10
+ adcq 80(%rdi),%r11
+ adcq 88(%rdi),%r12
+ adcq 96(%rdi),%r13
+ adcq 104(%rdi),%rcx
+ movq %r8,0(%rsi)
+ movq %r9,8(%rsi)
+ movq %r10,72(%rdi)
+ movq %r11,80(%rdi)
+ movq %r12,88(%rdi)
+ movq %r13,96(%rdi)
+ movq %rcx,104(%rdi)
+
+ xorq %rax,%rax
+ movq 48(%rdi),%rdx
+ mulxq 0+L$p434p1(%rip),%r8,%r9
+ mulxq 8+L$p434p1(%rip),%r12,%r10
+ mulxq 16+L$p434p1(%rip),%r13,%r11
+
+ adoxq %r12,%r9
+ adoxq %r13,%r10
+
+ mulxq 24+L$p434p1(%rip),%r13,%r12
+ adoxq %r13,%r11
+ adoxq %rax,%r12
+
+ addq 72(%rdi),%r8
+ adcq 80(%rdi),%r9
+ adcq 88(%rdi),%r10
+ adcq 96(%rdi),%r11
+ adcq 104(%rdi),%r12
+ movq %r8,16(%rsi)
+ movq %r9,24(%rsi)
+ movq %r10,32(%rsi)
+ movq %r11,40(%rsi)
+ movq %r12,48(%rsi)
+
+
+ popq %r15
+
+
+ popq %r14
+
+
+ popq %r13
+
+
+ popq %r12
+
+
+ .byte 0xf3,0xc3
+
+.globl _sike_fprdc
+.private_extern _sike_fprdc
+
+_sike_fprdc:
+
+ pushq %r12
+
+
+ pushq %r13
+
+
+ pushq %r14
+
+
+ pushq %r15
+
+
+
+
+
+ leaq _OPENSSL_ia32cap_P(%rip),%rcx
+ movq 8(%rcx),%rcx
+ andl $0x80100,%ecx
+ cmpl $0x80100,%ecx
+ je L$rdc_bdw
+
+
+
+
+ movq 0+0(%rdi),%r14
+ movq 0+L$p434p1(%rip),%rax
+ mulq %r14
+ xorq %r10,%r10
+ movq %rax,%r8
+ movq %rdx,%r9
+
+
+ movq 8+L$p434p1(%rip),%rax
+ mulq %r14
+ xorq %r11,%r11
+ addq %rax,%r9
+ adcq %rdx,%r10
+
+
+ movq 0+8(%rdi),%rcx
+ movq 0+L$p434p1(%rip),%rax
+ mulq %rcx
+ addq %rax,%r9
+ adcq %rdx,%r10
+ adcq $0x0,%r11
+
+
+ xorq %r12,%r12
+ movq 16+L$p434p1(%rip),%rax
+ mulq %r14
+ addq %rax,%r10
+ adcq %rdx,%r11
+ adcq $0x0,%r12
+
+
+ movq 8+L$p434p1(%rip),%rax
+ mulq %rcx
+ addq %rax,%r10
+ adcq %rdx,%r11
+ adcq $0x0,%r12
+
+
+ movq 24+L$p434p1(%rip),%rax
+ mulq %r14
+ xorq %r13,%r13
+ addq %rax,%r11
+ adcq %rdx,%r12
+ adcq $0x0,%r13
+
+
+ movq 16+L$p434p1(%rip),%rax
+ mulq %rcx
+ addq %rax,%r11
+ adcq %rdx,%r12
+ adcq $0x0,%r13
+
+
+ movq 24+L$p434p1(%rip),%rax
+ mulq %rcx
+ addq %rax,%r12
+ adcq %rdx,%r13
+
+
+ xorq %rcx,%rcx
+ addq 24(%rdi),%r8
+ adcq 32(%rdi),%r9
+ adcq 40(%rdi),%r10
+ adcq 48(%rdi),%r11
+ adcq 56(%rdi),%r12
+ adcq 64(%rdi),%r13
+ adcq 72(%rdi),%rcx
+ movq %r8,24(%rdi)
+ movq %r9,32(%rdi)
+ movq %r10,40(%rdi)
+ movq %r11,48(%rdi)
+ movq %r12,56(%rdi)
+ movq %r13,64(%rdi)
+ movq %rcx,72(%rdi)
+ movq 80(%rdi),%r8
+ movq 88(%rdi),%r9
+ movq 96(%rdi),%r10
+ movq 104(%rdi),%r11
+ adcq $0x0,%r8
+ adcq $0x0,%r9
+ adcq $0x0,%r10
+ adcq $0x0,%r11
+ movq %r8,80(%rdi)
+ movq %r9,88(%rdi)
+ movq %r10,96(%rdi)
+ movq %r11,104(%rdi)
+
+
+ movq 16+0(%rdi),%r14
+ movq 0+L$p434p1(%rip),%rax
+ mulq %r14
+ xorq %r10,%r10
+ movq %rax,%r8
+ movq %rdx,%r9
+
+
+ movq 8+L$p434p1(%rip),%rax
+ mulq %r14
+ xorq %r11,%r11
+ addq %rax,%r9
+ adcq %rdx,%r10
+
+
+ movq 16+8(%rdi),%rcx
+ movq 0+L$p434p1(%rip),%rax
+ mulq %rcx
+ addq %rax,%r9
+ adcq %rdx,%r10
+ adcq $0x0,%r11
+
+
+ xorq %r12,%r12
+ movq 16+L$p434p1(%rip),%rax
+ mulq %r14
+ addq %rax,%r10
+ adcq %rdx,%r11
+ adcq $0x0,%r12
+
+
+ movq 8+L$p434p1(%rip),%rax
+ mulq %rcx
+ addq %rax,%r10
+ adcq %rdx,%r11
+ adcq $0x0,%r12
+
+
+ movq 24+L$p434p1(%rip),%rax
+ mulq %r14
+ xorq %r13,%r13
+ addq %rax,%r11
+ adcq %rdx,%r12
+ adcq $0x0,%r13
+
+
+ movq 16+L$p434p1(%rip),%rax
+ mulq %rcx
+ addq %rax,%r11
+ adcq %rdx,%r12
+ adcq $0x0,%r13
+
+
+ movq 24+L$p434p1(%rip),%rax
+ mulq %rcx
+ addq %rax,%r12
+ adcq %rdx,%r13
+
+
+ xorq %rcx,%rcx
+ addq 40(%rdi),%r8
+ adcq 48(%rdi),%r9
+ adcq 56(%rdi),%r10
+ adcq 64(%rdi),%r11
+ adcq 72(%rdi),%r12
+ adcq 80(%rdi),%r13
+ adcq 88(%rdi),%rcx
+ movq %r8,40(%rdi)
+ movq %r9,48(%rdi)
+ movq %r10,56(%rdi)
+ movq %r11,64(%rdi)
+ movq %r12,72(%rdi)
+ movq %r13,80(%rdi)
+ movq %rcx,88(%rdi)
+ movq 96(%rdi),%r8
+ movq 104(%rdi),%r9
+ adcq $0x0,%r8
+ adcq $0x0,%r9
+ movq %r8,96(%rdi)
+ movq %r9,104(%rdi)
+
+
+ movq 32+0(%rdi),%r14
+ movq 0+L$p434p1(%rip),%rax
+ mulq %r14
+ xorq %r10,%r10
+ movq %rax,%r8
+ movq %rdx,%r9
+
+
+ movq 8+L$p434p1(%rip),%rax
+ mulq %r14
+ xorq %r11,%r11
+ addq %rax,%r9
+ adcq %rdx,%r10
+
+
+ movq 32+8(%rdi),%rcx
+ movq 0+L$p434p1(%rip),%rax
+ mulq %rcx
+ addq %rax,%r9
+ adcq %rdx,%r10
+ adcq $0x0,%r11
+
+
+ xorq %r12,%r12
+ movq 16+L$p434p1(%rip),%rax
+ mulq %r14
+ addq %rax,%r10
+ adcq %rdx,%r11
+ adcq $0x0,%r12
+
+
+ movq 8+L$p434p1(%rip),%rax
+ mulq %rcx
+ addq %rax,%r10
+ adcq %rdx,%r11
+ adcq $0x0,%r12
+
+
+ movq 24+L$p434p1(%rip),%rax
+ mulq %r14
+ xorq %r13,%r13
+ addq %rax,%r11
+ adcq %rdx,%r12
+ adcq $0x0,%r13
+
+
+ movq 16+L$p434p1(%rip),%rax
+ mulq %rcx
+ addq %rax,%r11
+ adcq %rdx,%r12
+ adcq $0x0,%r13
+
+
+ movq 24+L$p434p1(%rip),%rax
+ mulq %rcx
+ addq %rax,%r12
+ adcq %rdx,%r13
+
+
+ xorq %rcx,%rcx
+ addq 56(%rdi),%r8
+ adcq 64(%rdi),%r9
+ adcq 72(%rdi),%r10
+ adcq 80(%rdi),%r11
+ adcq 88(%rdi),%r12
+ adcq 96(%rdi),%r13
+ adcq 104(%rdi),%rcx
+ movq %r8,0(%rsi)
+ movq %r9,8(%rsi)
+ movq %r10,72(%rdi)
+ movq %r11,80(%rdi)
+ movq %r12,88(%rdi)
+ movq %r13,96(%rdi)
+ movq %rcx,104(%rdi)
+
+ movq 48(%rdi),%r13
+
+ xorq %r10,%r10
+ movq 0+L$p434p1(%rip),%rax
+ mulq %r13
+ movq %rax,%r8
+ movq %rdx,%r9
+
+ xorq %r11,%r11
+ movq 8+L$p434p1(%rip),%rax
+ mulq %r13
+ addq %rax,%r9
+ adcq %rdx,%r10
+
+ xorq %r12,%r12
+ movq 16+L$p434p1(%rip),%rax
+ mulq %r13
+ addq %rax,%r10
+ adcq %rdx,%r11
+
+ movq 24+L$p434p1(%rip),%rax
+ mulq %r13
+ addq %rax,%r11
+ adcq %rdx,%r12
+
+ addq 72(%rdi),%r8
+ adcq 80(%rdi),%r9
+ adcq 88(%rdi),%r10
+ adcq 96(%rdi),%r11
+ adcq 104(%rdi),%r12
+ movq %r8,16(%rsi)
+ movq %r9,24(%rsi)
+ movq %r10,32(%rsi)
+ movq %r11,40(%rsi)
+ movq %r12,48(%rsi)
+
+
+ popq %r15
+
+ popq %r14
+
+ popq %r13
+
+ popq %r12
+
+ .byte 0xf3,0xc3
+
+L$mul_bdw:
+
+
+
+
+
+
+
+
+
+ movq %rdx,%rcx
+ xorq %rax,%rax
+
+
+ movq 0(%rdi),%r8
+ movq 8(%rdi),%r9
+ movq 16(%rdi),%r10
+ movq 24(%rdi),%r11
+
+ pushq %rbx
+
+
+ pushq %rbp
+
+
+ subq $96,%rsp
+
+
+ addq 32(%rdi),%r8
+ adcq 40(%rdi),%r9
+ adcq 48(%rdi),%r10
+ adcq $0x0,%r11
+ sbbq $0x0,%rax
+ movq %r8,0(%rsp)
+ movq %r9,8(%rsp)
+ movq %r10,16(%rsp)
+ movq %r11,24(%rsp)
+
+
+ xorq %rbx,%rbx
+ movq 0(%rsi),%r12
+ movq 8(%rsi),%r13
+ movq 16(%rsi),%r14
+ movq 24(%rsi),%r15
+ addq 32(%rsi),%r12
+ adcq 40(%rsi),%r13
+ adcq 48(%rsi),%r14
+ adcq $0x0,%r15
+ sbbq $0x0,%rbx
+ movq %r12,32(%rsp)
+ movq %r13,40(%rsp)
+ movq %r14,48(%rsp)
+ movq %r15,56(%rsp)
+
+
+ andq %rax,%r12
+ andq %rax,%r13
+ andq %rax,%r14
+ andq %rax,%r15
+
+
+ andq %rbx,%r8
+ andq %rbx,%r9
+ andq %rbx,%r10
+ andq %rbx,%r11
+
+
+ addq %r12,%r8
+ adcq %r13,%r9
+ adcq %r14,%r10
+ adcq %r15,%r11
+ movq %r8,64(%rsp)
+ movq %r9,72(%rsp)
+ movq %r10,80(%rsp)
+ movq %r11,88(%rsp)
+
+
+ movq 0+0(%rsp),%rdx
+ mulxq 32+0(%rsp),%r9,%r8
+ movq %r9,0+0(%rsp)
+ mulxq 32+8(%rsp),%r10,%r9
+ xorq %rax,%rax
+ adoxq %r10,%r8
+ mulxq 32+16(%rsp),%r11,%r10
+ adoxq %r11,%r9
+ mulxq 32+24(%rsp),%r12,%r11
+ adoxq %r12,%r10
+
+ movq 0+8(%rsp),%rdx
+ mulxq 32+0(%rsp),%r12,%r13
+ adoxq %rax,%r11
+ xorq %rax,%rax
+ mulxq 32+8(%rsp),%r15,%r14
+ adoxq %r8,%r12
+ movq %r12,0+8(%rsp)
+ adcxq %r15,%r13
+ mulxq 32+16(%rsp),%rbx,%r15
+ adcxq %rbx,%r14
+ adoxq %r9,%r13
+ mulxq 32+24(%rsp),%rbp,%rbx
+ adcxq %rbp,%r15
+ adcxq %rax,%rbx
+ adoxq %r10,%r14
+
+ movq 0+16(%rsp),%rdx
+ mulxq 32+0(%rsp),%r8,%r9
+ adoxq %r11,%r15
+ adoxq %rax,%rbx
+ xorq %rax,%rax
+ mulxq 32+8(%rsp),%r11,%r10
+ adoxq %r13,%r8
+ movq %r8,0+16(%rsp)
+ adcxq %r11,%r9
+ mulxq 32+16(%rsp),%r12,%r11
+ adcxq %r12,%r10
+ adoxq %r14,%r9
+ mulxq 32+24(%rsp),%rbp,%r12
+ adcxq %rbp,%r11
+ adcxq %rax,%r12
+
+ adoxq %r15,%r10
+ adoxq %rbx,%r11
+ adoxq %rax,%r12
+
+ movq 0+24(%rsp),%rdx
+ mulxq 32+0(%rsp),%r8,%r13
+ xorq %rax,%rax
+ mulxq 32+8(%rsp),%r15,%r14
+ adcxq %r15,%r13
+ adoxq %r8,%r9
+ mulxq 32+16(%rsp),%rbx,%r15
+ adcxq %rbx,%r14
+ adoxq %r13,%r10
+ mulxq 32+24(%rsp),%rbp,%rbx
+ adcxq %rbp,%r15
+ adcxq %rax,%rbx
+ adoxq %r14,%r11
+ adoxq %r15,%r12
+ adoxq %rax,%rbx
+ movq %r9,0+24(%rsp)
+ movq %r10,0+32(%rsp)
+ movq %r11,0+40(%rsp)
+ movq %r12,0+48(%rsp)
+ movq %rbx,0+56(%rsp)
+
+
+
+ movq 0+0(%rdi),%rdx
+ mulxq 0+0(%rsi),%r9,%r8
+ movq %r9,0+0(%rcx)
+ mulxq 0+8(%rsi),%r10,%r9
+ xorq %rax,%rax
+ adoxq %r10,%r8
+ mulxq 0+16(%rsi),%r11,%r10
+ adoxq %r11,%r9
+ mulxq 0+24(%rsi),%r12,%r11
+ adoxq %r12,%r10
+
+ movq 0+8(%rdi),%rdx
+ mulxq 0+0(%rsi),%r12,%r13
+ adoxq %rax,%r11
+ xorq %rax,%rax
+ mulxq 0+8(%rsi),%r15,%r14
+ adoxq %r8,%r12
+ movq %r12,0+8(%rcx)
+ adcxq %r15,%r13
+ mulxq 0+16(%rsi),%rbx,%r15
+ adcxq %rbx,%r14
+ adoxq %r9,%r13
+ mulxq 0+24(%rsi),%rbp,%rbx
+ adcxq %rbp,%r15
+ adcxq %rax,%rbx
+ adoxq %r10,%r14
+
+ movq 0+16(%rdi),%rdx
+ mulxq 0+0(%rsi),%r8,%r9
+ adoxq %r11,%r15
+ adoxq %rax,%rbx
+ xorq %rax,%rax
+ mulxq 0+8(%rsi),%r11,%r10
+ adoxq %r13,%r8
+ movq %r8,0+16(%rcx)
+ adcxq %r11,%r9
+ mulxq 0+16(%rsi),%r12,%r11
+ adcxq %r12,%r10
+ adoxq %r14,%r9
+ mulxq 0+24(%rsi),%rbp,%r12
+ adcxq %rbp,%r11
+ adcxq %rax,%r12
+
+ adoxq %r15,%r10
+ adoxq %rbx,%r11
+ adoxq %rax,%r12
+
+ movq 0+24(%rdi),%rdx
+ mulxq 0+0(%rsi),%r8,%r13
+ xorq %rax,%rax
+ mulxq 0+8(%rsi),%r15,%r14
+ adcxq %r15,%r13
+ adoxq %r8,%r9
+ mulxq 0+16(%rsi),%rbx,%r15
+ adcxq %rbx,%r14
+ adoxq %r13,%r10
+ mulxq 0+24(%rsi),%rbp,%rbx
+ adcxq %rbp,%r15
+ adcxq %rax,%rbx
+ adoxq %r14,%r11
+ adoxq %r15,%r12
+ adoxq %rax,%rbx
+ movq %r9,0+24(%rcx)
+ movq %r10,0+32(%rcx)
+ movq %r11,0+40(%rcx)
+ movq %r12,0+48(%rcx)
+ movq %rbx,0+56(%rcx)
+
+
+
+ movq 32+0(%rdi),%rdx
+ mulxq 32+0(%rsi),%r9,%r8
+ movq %r9,64+0(%rcx)
+ mulxq 32+8(%rsi),%r10,%r9
+ xorq %rax,%rax
+ adoxq %r10,%r8
+ mulxq 32+16(%rsi),%r11,%r10
+ adoxq %r11,%r9
+
+ movq 32+8(%rdi),%rdx
+ mulxq 32+0(%rsi),%r12,%r11
+ adoxq %rax,%r10
+ xorq %rax,%rax
+
+ mulxq 32+8(%rsi),%r14,%r13
+ adoxq %r8,%r12
+ movq %r12,64+8(%rcx)
+ adcxq %r14,%r11
+
+ mulxq 32+16(%rsi),%r8,%r14
+ adoxq %r9,%r11
+ adcxq %r8,%r13
+ adcxq %rax,%r14
+ adoxq %r10,%r13
+
+ movq 32+16(%rdi),%rdx
+ mulxq 32+0(%rsi),%r8,%r9
+ adoxq %rax,%r14
+ xorq %rax,%rax
+
+ mulxq 32+8(%rsi),%r10,%r12
+ adoxq %r11,%r8
+ movq %r8,64+16(%rcx)
+ adcxq %r13,%r9
+
+ mulxq 32+16(%rsi),%r11,%r8
+ adcxq %r14,%r12
+ adcxq %rax,%r8
+ adoxq %r10,%r9
+ adoxq %r12,%r11
+ adoxq %rax,%r8
+ movq %r9,64+24(%rcx)
+ movq %r11,64+32(%rcx)
+ movq %r8,64+40(%rcx)
+
+
+
+
+ movq 64(%rsp),%r8
+ movq 72(%rsp),%r9
+ movq 80(%rsp),%r10
+ movq 88(%rsp),%r11
+
+ movq 32(%rsp),%rax
+ addq %rax,%r8
+ movq 40(%rsp),%rax
+ adcq %rax,%r9
+ movq 48(%rsp),%rax
+ adcq %rax,%r10
+ movq 56(%rsp),%rax
+ adcq %rax,%r11
+
+
+ movq 0(%rsp),%r12
+ movq 8(%rsp),%r13
+ movq 16(%rsp),%r14
+ movq 24(%rsp),%r15
+ subq 0(%rcx),%r12
+ sbbq 8(%rcx),%r13
+ sbbq 16(%rcx),%r14
+ sbbq 24(%rcx),%r15
+ sbbq 32(%rcx),%r8
+ sbbq 40(%rcx),%r9
+ sbbq 48(%rcx),%r10
+ sbbq 56(%rcx),%r11
+
+
+ subq 64(%rcx),%r12
+ sbbq 72(%rcx),%r13
+ sbbq 80(%rcx),%r14
+ sbbq 88(%rcx),%r15
+ sbbq 96(%rcx),%r8
+ sbbq 104(%rcx),%r9
+ sbbq $0x0,%r10
+ sbbq $0x0,%r11
+
+ addq 32(%rcx),%r12
+ movq %r12,32(%rcx)
+ adcq 40(%rcx),%r13
+ movq %r13,40(%rcx)
+ adcq 48(%rcx),%r14
+ movq %r14,48(%rcx)
+ adcq 56(%rcx),%r15
+ movq %r15,56(%rcx)
+ adcq 64(%rcx),%r8
+ movq %r8,64(%rcx)
+ adcq 72(%rcx),%r9
+ movq %r9,72(%rcx)
+ adcq 80(%rcx),%r10
+ movq %r10,80(%rcx)
+ adcq 88(%rcx),%r11
+ movq %r11,88(%rcx)
+ movq 96(%rcx),%r12
+ adcq $0x0,%r12
+ movq %r12,96(%rcx)
+ movq 104(%rcx),%r13
+ adcq $0x0,%r13
+ movq %r13,104(%rcx)
+
+ addq $96,%rsp
+
+ popq %rbp
+
+
+ popq %rbx
+
+
+
+
+ popq %r15
+
+
+ popq %r14
+
+
+ popq %r13
+
+
+ popq %r12
+
+
+ .byte 0xf3,0xc3
+
+
+.globl _sike_mpmul
+.private_extern _sike_mpmul
+
+_sike_mpmul:
+
+ pushq %r12
+
+
+ pushq %r13
+
+
+ pushq %r14
+
+
+ pushq %r15
+
+
+
+
+
+ leaq _OPENSSL_ia32cap_P(%rip),%rcx
+ movq 8(%rcx),%rcx
+ andl $0x80100,%ecx
+ cmpl $0x80100,%ecx
+ je L$mul_bdw
+
+
+
+ movq %rdx,%rcx
+
+ subq $112,%rsp
+
+
+
+ xorq %rax,%rax
+ movq 32(%rdi),%r8
+ movq 40(%rdi),%r9
+ movq 48(%rdi),%r10
+ xorq %r11,%r11
+ addq 0(%rdi),%r8
+ adcq 8(%rdi),%r9
+ adcq 16(%rdi),%r10
+ adcq 24(%rdi),%r11
+
+ sbbq $0,%rax
+ movq %rax,64(%rsp)
+
+ movq %r8,0(%rcx)
+ movq %r9,8(%rcx)
+ movq %r10,16(%rcx)
+ movq %r11,24(%rcx)
+
+
+ xorq %rdx,%rdx
+ movq 32(%rsi),%r12
+ movq 40(%rsi),%r13
+ movq 48(%rsi),%r14
+ xorq %r15,%r15
+ addq 0(%rsi),%r12
+ adcq 8(%rsi),%r13
+ adcq 16(%rsi),%r14
+ adcq 24(%rsi),%r15
+ sbbq $0x0,%rdx
+
+ movq %rdx,72(%rsp)
+
+
+ movq (%rcx),%rax
+ mulq %r12
+ movq %rax,(%rsp)
+ movq %rdx,%r8
+
+ xorq %r9,%r9
+ movq (%rcx),%rax
+ mulq %r13
+ addq %rax,%r8
+ adcq %rdx,%r9
+
+ xorq %r10,%r10
+ movq 8(%rcx),%rax
+ mulq %r12
+ addq %rax,%r8
+ movq %r8,8(%rsp)
+ adcq %rdx,%r9
+ adcq $0x0,%r10
+
+ xorq %r8,%r8
+ movq (%rcx),%rax
+ mulq %r14
+ addq %rax,%r9
+ adcq %rdx,%r10
+ adcq $0x0,%r8
+
+ movq 16(%rcx),%rax
+ mulq %r12
+ addq %rax,%r9
+ adcq %rdx,%r10
+ adcq $0x0,%r8
+
+ movq 8(%rcx),%rax
+ mulq %r13
+ addq %rax,%r9
+ movq %r9,16(%rsp)
+ adcq %rdx,%r10
+ adcq $0x0,%r8
+
+ xorq %r9,%r9
+ movq (%rcx),%rax
+ mulq %r15
+ addq %rax,%r10
+ adcq %rdx,%r8
+ adcq $0x0,%r9
+
+ movq 24(%rcx),%rax
+ mulq %r12
+ addq %rax,%r10
+ adcq %rdx,%r8
+ adcq $0x0,%r9
+
+ movq 8(%rcx),%rax
+ mulq %r14
+ addq %rax,%r10
+ adcq %rdx,%r8
+ adcq $0x0,%r9
+
+ movq 16(%rcx),%rax
+ mulq %r13
+ addq %rax,%r10
+ movq %r10,24(%rsp)
+ adcq %rdx,%r8
+ adcq $0x0,%r9
+
+ xorq %r10,%r10
+ movq 8(%rcx),%rax
+ mulq %r15
+ addq %rax,%r8
+ adcq %rdx,%r9
+ adcq $0x0,%r10
+
+ movq 24(%rcx),%rax
+ mulq %r13
+ addq %rax,%r8
+ adcq %rdx,%r9
+ adcq $0x0,%r10
+
+ movq 16(%rcx),%rax
+ mulq %r14
+ addq %rax,%r8
+ movq %r8,32(%rsp)
+ adcq %rdx,%r9
+ adcq $0x0,%r10
+
+ xorq %r11,%r11
+ movq 16(%rcx),%rax
+ mulq %r15
+ addq %rax,%r9
+ adcq %rdx,%r10
+ adcq $0x0,%r11
+
+ movq 24(%rcx),%rax
+ mulq %r14
+ addq %rax,%r9
+ movq %r9,40(%rsp)
+ adcq %rdx,%r10
+ adcq $0x0,%r11
+
+ movq 24(%rcx),%rax
+ mulq %r15
+ addq %rax,%r10
+ movq %r10,48(%rsp)
+ adcq %rdx,%r11
+ movq %r11,56(%rsp)
+
+
+ movq 64(%rsp),%rax
+ andq %rax,%r12
+ andq %rax,%r13
+ andq %rax,%r14
+ andq %rax,%r15
+
+
+ movq 72(%rsp),%rax
+ movq 0(%rcx),%r8
+ andq %rax,%r8
+ movq 8(%rcx),%r9
+ andq %rax,%r9
+ movq 16(%rcx),%r10
+ andq %rax,%r10
+ movq 24(%rcx),%r11
+ andq %rax,%r11
+
+
+ addq %r8,%r12
+ adcq %r9,%r13
+ adcq %r10,%r14
+ adcq %r11,%r15
+
+
+ movq 32(%rsp),%rax
+ addq %rax,%r12
+ movq 40(%rsp),%rax
+ adcq %rax,%r13
+ movq 48(%rsp),%rax
+ adcq %rax,%r14
+ movq 56(%rsp),%rax
+ adcq %rax,%r15
+ movq %r12,80(%rsp)
+ movq %r13,88(%rsp)
+ movq %r14,96(%rsp)
+ movq %r15,104(%rsp)
+
+
+ movq (%rdi),%r11
+ movq (%rsi),%rax
+ mulq %r11
+ xorq %r9,%r9
+ movq %rax,(%rcx)
+ movq %rdx,%r8
+
+ movq 16(%rdi),%r14
+ movq 8(%rsi),%rax
+ mulq %r11
+ xorq %r10,%r10
+ addq %rax,%r8
+ adcq %rdx,%r9
+
+ movq 8(%rdi),%r12
+ movq (%rsi),%rax
+ mulq %r12
+ addq %rax,%r8
+ movq %r8,8(%rcx)
+ adcq %rdx,%r9
+ adcq $0x0,%r10
+
+ xorq %r8,%r8
+ movq 16(%rsi),%rax
+ mulq %r11
+ addq %rax,%r9
+ adcq %rdx,%r10
+ adcq $0x0,%r8
+
+ movq (%rsi),%r13
+ movq %r14,%rax
+ mulq %r13
+ addq %rax,%r9
+ adcq %rdx,%r10
+ adcq $0x0,%r8
+
+ movq 8(%rsi),%rax
+ mulq %r12
+ addq %rax,%r9
+ movq %r9,16(%rcx)
+ adcq %rdx,%r10
+ adcq $0x0,%r8
+
+ xorq %r9,%r9
+ movq 24(%rsi),%rax
+ mulq %r11
+ movq 24(%rdi),%r15
+ addq %rax,%r10
+ adcq %rdx,%r8
+ adcq $0x0,%r9
+
+ movq %r15,%rax
+ mulq %r13
+ addq %rax,%r10
+ adcq %rdx,%r8
+ adcq $0x0,%r9
+
+ movq 16(%rsi),%rax
+ mulq %r12
+ addq %rax,%r10
+ adcq %rdx,%r8
+ adcq $0x0,%r9
+
+ movq 8(%rsi),%rax
+ mulq %r14
+ addq %rax,%r10
+ movq %r10,24(%rcx)
+ adcq %rdx,%r8
+ adcq $0x0,%r9
+
+ xorq %r10,%r10
+ movq 24(%rsi),%rax
+ mulq %r12
+ addq %rax,%r8
+ adcq %rdx,%r9
+ adcq $0x0,%r10
+
+ movq 8(%rsi),%rax
+ mulq %r15
+ addq %rax,%r8
+ adcq %rdx,%r9
+ adcq $0x0,%r10
+
+ movq 16(%rsi),%rax
+ mulq %r14
+ addq %rax,%r8
+ movq %r8,32(%rcx)
+ adcq %rdx,%r9
+ adcq $0x0,%r10
+
+ xorq %r8,%r8
+ movq 24(%rsi),%rax
+ mulq %r14
+ addq %rax,%r9
+ adcq %rdx,%r10
+ adcq $0x0,%r8
+
+ movq 16(%rsi),%rax
+ mulq %r15
+ addq %rax,%r9
+ movq %r9,40(%rcx)
+ adcq %rdx,%r10
+ adcq $0x0,%r8
+
+ movq 24(%rsi),%rax
+ mulq %r15
+ addq %rax,%r10
+ movq %r10,48(%rcx)
+ adcq %rdx,%r8
+ movq %r8,56(%rcx)
+
+
+
+ movq 32(%rdi),%r11
+ movq 32(%rsi),%rax
+ mulq %r11
+ xorq %r9,%r9
+ movq %rax,64(%rcx)
+ movq %rdx,%r8
+
+ movq 48(%rdi),%r14
+ movq 40(%rsi),%rax
+ mulq %r11
+ xorq %r10,%r10
+ addq %rax,%r8
+ adcq %rdx,%r9
+
+ movq 40(%rdi),%r12
+ movq 32(%rsi),%rax
+ mulq %r12
+ addq %rax,%r8
+ movq %r8,72(%rcx)
+ adcq %rdx,%r9
+ adcq $0x0,%r10
+
+ xorq %r8,%r8
+ movq 48(%rsi),%rax
+ mulq %r11
+ addq %rax,%r9
+ adcq %rdx,%r10
+ adcq $0x0,%r8
+
+ movq 32(%rsi),%r13
+ movq %r14,%rax
+ mulq %r13
+ addq %rax,%r9
+ adcq %rdx,%r10
+ adcq $0x0,%r8
+
+ movq 40(%rsi),%rax
+ mulq %r12
+ addq %rax,%r9
+ movq %r9,80(%rcx)
+ adcq %rdx,%r10
+ adcq $0x0,%r8
+
+ movq 48(%rsi),%rax
+ mulq %r12
+ xorq %r12,%r12
+ addq %rax,%r10
+ adcq %rdx,%r8
+ adcq $0x0,%r12
+
+ movq 40(%rsi),%rax
+ mulq %r14
+ addq %rax,%r10
+ adcq %rdx,%r8
+ adcq $0x0,%r12
+ movq %r10,88(%rcx)
+
+ movq 48(%rsi),%rax
+ mulq %r14
+ addq %rax,%r8
+ adcq $0x0,%r12
+ movq %r8,96(%rcx)
+
+ addq %r12,%rdx
+
+
+ movq 0(%rsp),%r8
+ subq 0(%rcx),%r8
+ movq 8(%rsp),%r9
+ sbbq 8(%rcx),%r9
+ movq 16(%rsp),%r10
+ sbbq 16(%rcx),%r10
+ movq 24(%rsp),%r11
+ sbbq 24(%rcx),%r11
+ movq 80(%rsp),%r12
+ sbbq 32(%rcx),%r12
+ movq 88(%rsp),%r13
+ sbbq 40(%rcx),%r13
+ movq 96(%rsp),%r14
+ sbbq 48(%rcx),%r14
+ movq 104(%rsp),%r15
+ sbbq 56(%rcx),%r15
+
+
+ movq 64(%rcx),%rax
+ subq %rax,%r8
+ movq 72(%rcx),%rax
+ sbbq %rax,%r9
+ movq 80(%rcx),%rax
+ sbbq %rax,%r10
+ movq 88(%rcx),%rax
+ sbbq %rax,%r11
+ movq 96(%rcx),%rax
+ sbbq %rax,%r12
+ sbbq %rdx,%r13
+ sbbq $0x0,%r14
+ sbbq $0x0,%r15
+
+
+ addq 32(%rcx),%r8
+ movq %r8,32(%rcx)
+ adcq 40(%rcx),%r9
+ movq %r9,40(%rcx)
+ adcq 48(%rcx),%r10
+ movq %r10,48(%rcx)
+ adcq 56(%rcx),%r11
+ movq %r11,56(%rcx)
+ adcq 64(%rcx),%r12
+ movq %r12,64(%rcx)
+ adcq 72(%rcx),%r13
+ movq %r13,72(%rcx)
+ adcq 80(%rcx),%r14
+ movq %r14,80(%rcx)
+ adcq 88(%rcx),%r15
+ movq %r15,88(%rcx)
+ movq 96(%rcx),%r12
+ adcq $0x0,%r12
+ movq %r12,96(%rcx)
+ adcq $0x0,%rdx
+ movq %rdx,104(%rcx)
+
+ addq $112,%rsp
+
+
+
+ popq %r15
+
+ popq %r14
+
+ popq %r13
+
+ popq %r12
+
+ .byte 0xf3,0xc3
+
+#endif