mirror of
https://github.com/luxfi/blst.git
synced 2026-10-30 17:01:37 +00:00
2816 lines
46 KiB
ArmAsm
2816 lines
46 KiB
ArmAsm
.text
|
|
|
|
.globl add_mod_384
|
|
|
|
.def add_mod_384; .scl 2; .type 32; .endef
|
|
.p2align 5
|
|
add_mod_384:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
movq %rdi,8(%rsp)
|
|
movq %rsi,16(%rsp)
|
|
movq %rsp,%r11
|
|
.LSEH_begin_add_mod_384:
|
|
|
|
|
|
pushq %rbp
|
|
|
|
movq %rcx,%rdi
|
|
movq %rdx,%rsi
|
|
movq %r8,%rdx
|
|
movq %r9,%rcx
|
|
pushq %rbx
|
|
|
|
pushq %r12
|
|
|
|
pushq %r13
|
|
|
|
pushq %r14
|
|
|
|
pushq %r15
|
|
|
|
subq $8,%rsp
|
|
|
|
.LSEH_body_add_mod_384:
|
|
|
|
|
|
call __add_mod_384
|
|
|
|
movq 8(%rsp),%r15
|
|
|
|
movq 16(%rsp),%r14
|
|
|
|
movq 24(%rsp),%r13
|
|
|
|
movq 32(%rsp),%r12
|
|
|
|
movq 40(%rsp),%rbx
|
|
|
|
movq 48(%rsp),%rbp
|
|
|
|
leaq 56(%rsp),%rsp
|
|
|
|
.LSEH_epilogue_add_mod_384:
|
|
mov 8(%rsp),%rdi
|
|
mov 16(%rsp),%rsi
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
.LSEH_end_add_mod_384:
|
|
|
|
.def __add_mod_384; .scl 3; .type 32; .endef
|
|
.p2align 5
|
|
__add_mod_384:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
movq 0(%rsi),%r8
|
|
movq 8(%rsi),%r9
|
|
movq 16(%rsi),%r10
|
|
movq 24(%rsi),%r11
|
|
movq 32(%rsi),%r12
|
|
movq 40(%rsi),%r13
|
|
|
|
__add_mod_384_a_is_loaded:
|
|
addq 0(%rdx),%r8
|
|
adcq 8(%rdx),%r9
|
|
adcq 16(%rdx),%r10
|
|
movq %r8,%r14
|
|
adcq 24(%rdx),%r11
|
|
movq %r9,%r15
|
|
adcq 32(%rdx),%r12
|
|
movq %r10,%rax
|
|
adcq 40(%rdx),%r13
|
|
movq %r11,%rbx
|
|
sbbq %rdx,%rdx
|
|
|
|
subq 0(%rcx),%r8
|
|
sbbq 8(%rcx),%r9
|
|
movq %r12,%rbp
|
|
sbbq 16(%rcx),%r10
|
|
sbbq 24(%rcx),%r11
|
|
sbbq 32(%rcx),%r12
|
|
movq %r13,%rsi
|
|
sbbq 40(%rcx),%r13
|
|
sbbq $0,%rdx
|
|
|
|
cmovcq %r14,%r8
|
|
cmovcq %r15,%r9
|
|
cmovcq %rax,%r10
|
|
movq %r8,0(%rdi)
|
|
cmovcq %rbx,%r11
|
|
movq %r9,8(%rdi)
|
|
cmovcq %rbp,%r12
|
|
movq %r10,16(%rdi)
|
|
cmovcq %rsi,%r13
|
|
movq %r11,24(%rdi)
|
|
movq %r12,32(%rdi)
|
|
movq %r13,40(%rdi)
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
|
|
.globl add_mod_384x
|
|
|
|
.def add_mod_384x; .scl 2; .type 32; .endef
|
|
.p2align 5
|
|
add_mod_384x:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
movq %rdi,8(%rsp)
|
|
movq %rsi,16(%rsp)
|
|
movq %rsp,%r11
|
|
.LSEH_begin_add_mod_384x:
|
|
|
|
|
|
pushq %rbp
|
|
|
|
movq %rcx,%rdi
|
|
movq %rdx,%rsi
|
|
movq %r8,%rdx
|
|
movq %r9,%rcx
|
|
pushq %rbx
|
|
|
|
pushq %r12
|
|
|
|
pushq %r13
|
|
|
|
pushq %r14
|
|
|
|
pushq %r15
|
|
|
|
subq $24,%rsp
|
|
|
|
.LSEH_body_add_mod_384x:
|
|
|
|
|
|
movq %rsi,0(%rsp)
|
|
movq %rdx,8(%rsp)
|
|
leaq 48(%rsi),%rsi
|
|
leaq 48(%rdx),%rdx
|
|
leaq 48(%rdi),%rdi
|
|
call __add_mod_384
|
|
|
|
movq 0(%rsp),%rsi
|
|
movq 8(%rsp),%rdx
|
|
leaq -48(%rdi),%rdi
|
|
call __add_mod_384
|
|
|
|
movq 24+0(%rsp),%r15
|
|
|
|
movq 24+8(%rsp),%r14
|
|
|
|
movq 24+16(%rsp),%r13
|
|
|
|
movq 24+24(%rsp),%r12
|
|
|
|
movq 24+32(%rsp),%rbx
|
|
|
|
movq 24+40(%rsp),%rbp
|
|
|
|
leaq 24+48(%rsp),%rsp
|
|
|
|
.LSEH_epilogue_add_mod_384x:
|
|
mov 8(%rsp),%rdi
|
|
mov 16(%rsp),%rsi
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
.LSEH_end_add_mod_384x:
|
|
|
|
|
|
.globl rshift_mod_384
|
|
|
|
.def rshift_mod_384; .scl 2; .type 32; .endef
|
|
.p2align 5
|
|
rshift_mod_384:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
movq %rdi,8(%rsp)
|
|
movq %rsi,16(%rsp)
|
|
movq %rsp,%r11
|
|
.LSEH_begin_rshift_mod_384:
|
|
|
|
|
|
pushq %rbp
|
|
|
|
movq %rcx,%rdi
|
|
movq %rdx,%rsi
|
|
movq %r8,%rdx
|
|
movq %r9,%rcx
|
|
pushq %rbx
|
|
|
|
pushq %r12
|
|
|
|
pushq %r13
|
|
|
|
pushq %r14
|
|
|
|
pushq %r15
|
|
|
|
pushq %rdi
|
|
|
|
.LSEH_body_rshift_mod_384:
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
movq 0(%rsi),%r8
|
|
movq 8(%rsi),%r9
|
|
movq 16(%rsi),%r10
|
|
movq 24(%rsi),%r11
|
|
movq 32(%rsi),%r12
|
|
movq 40(%rsi),%r13
|
|
|
|
.Loop_rshift_mod_384:
|
|
call __rshift_mod_384
|
|
decl %edx
|
|
jnz .Loop_rshift_mod_384
|
|
|
|
movq %r8,0(%rdi)
|
|
movq %r9,8(%rdi)
|
|
movq %r10,16(%rdi)
|
|
movq %r11,24(%rdi)
|
|
movq %r12,32(%rdi)
|
|
movq %r13,40(%rdi)
|
|
|
|
movq 8(%rsp),%r15
|
|
|
|
movq 16(%rsp),%r14
|
|
|
|
movq 24(%rsp),%r13
|
|
|
|
movq 32(%rsp),%r12
|
|
|
|
movq 40(%rsp),%rbx
|
|
|
|
movq 48(%rsp),%rbp
|
|
|
|
leaq 56(%rsp),%rsp
|
|
|
|
.LSEH_epilogue_rshift_mod_384:
|
|
mov 8(%rsp),%rdi
|
|
mov 16(%rsp),%rsi
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
.LSEH_end_rshift_mod_384:
|
|
|
|
.def __rshift_mod_384; .scl 3; .type 32; .endef
|
|
.p2align 5
|
|
__rshift_mod_384:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
|
|
movq $1,%rsi
|
|
movq 0(%rcx),%r14
|
|
andq %r8,%rsi
|
|
movq 8(%rcx),%r15
|
|
negq %rsi
|
|
movq 16(%rcx),%rax
|
|
andq %rsi,%r14
|
|
movq 24(%rcx),%rbx
|
|
andq %rsi,%r15
|
|
movq 32(%rcx),%rbp
|
|
andq %rsi,%rax
|
|
andq %rsi,%rbx
|
|
andq %rsi,%rbp
|
|
andq 40(%rcx),%rsi
|
|
|
|
addq %r8,%r14
|
|
adcq %r9,%r15
|
|
adcq %r10,%rax
|
|
adcq %r11,%rbx
|
|
adcq %r12,%rbp
|
|
adcq %r13,%rsi
|
|
sbbq %r13,%r13
|
|
|
|
shrq $1,%r14
|
|
movq %r15,%r8
|
|
shrq $1,%r15
|
|
movq %rax,%r9
|
|
shrq $1,%rax
|
|
movq %rbx,%r10
|
|
shrq $1,%rbx
|
|
movq %rbp,%r11
|
|
shrq $1,%rbp
|
|
movq %rsi,%r12
|
|
shrq $1,%rsi
|
|
shlq $63,%r8
|
|
shlq $63,%r9
|
|
orq %r14,%r8
|
|
shlq $63,%r10
|
|
orq %r15,%r9
|
|
shlq $63,%r11
|
|
orq %rax,%r10
|
|
shlq $63,%r12
|
|
orq %rbx,%r11
|
|
shlq $63,%r13
|
|
orq %rbp,%r12
|
|
orq %rsi,%r13
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %r14
|
|
lfence
|
|
jmpq *%r14
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
|
|
.globl div_by_2_mod_384
|
|
|
|
.def div_by_2_mod_384; .scl 2; .type 32; .endef
|
|
.p2align 5
|
|
div_by_2_mod_384:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
movq %rdi,8(%rsp)
|
|
movq %rsi,16(%rsp)
|
|
movq %rsp,%r11
|
|
.LSEH_begin_div_by_2_mod_384:
|
|
|
|
|
|
pushq %rbp
|
|
|
|
movq %rcx,%rdi
|
|
movq %rdx,%rsi
|
|
movq %r8,%rdx
|
|
pushq %rbx
|
|
|
|
pushq %r12
|
|
|
|
pushq %r13
|
|
|
|
pushq %r14
|
|
|
|
pushq %r15
|
|
|
|
pushq %rdi
|
|
|
|
.LSEH_body_div_by_2_mod_384:
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
movq 0(%rsi),%r8
|
|
movq %rdx,%rcx
|
|
movq 8(%rsi),%r9
|
|
movq 16(%rsi),%r10
|
|
movq 24(%rsi),%r11
|
|
movq 32(%rsi),%r12
|
|
movq 40(%rsi),%r13
|
|
|
|
call __rshift_mod_384
|
|
|
|
movq %r8,0(%rdi)
|
|
movq %r9,8(%rdi)
|
|
movq %r10,16(%rdi)
|
|
movq %r11,24(%rdi)
|
|
movq %r12,32(%rdi)
|
|
movq %r13,40(%rdi)
|
|
|
|
movq 8(%rsp),%r15
|
|
|
|
movq 16(%rsp),%r14
|
|
|
|
movq 24(%rsp),%r13
|
|
|
|
movq 32(%rsp),%r12
|
|
|
|
movq 40(%rsp),%rbx
|
|
|
|
movq 48(%rsp),%rbp
|
|
|
|
leaq 56(%rsp),%rsp
|
|
|
|
.LSEH_epilogue_div_by_2_mod_384:
|
|
mov 8(%rsp),%rdi
|
|
mov 16(%rsp),%rsi
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
.LSEH_end_div_by_2_mod_384:
|
|
|
|
|
|
.globl lshift_mod_384
|
|
|
|
.def lshift_mod_384; .scl 2; .type 32; .endef
|
|
.p2align 5
|
|
lshift_mod_384:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
movq %rdi,8(%rsp)
|
|
movq %rsi,16(%rsp)
|
|
movq %rsp,%r11
|
|
.LSEH_begin_lshift_mod_384:
|
|
|
|
|
|
pushq %rbp
|
|
|
|
movq %rcx,%rdi
|
|
movq %rdx,%rsi
|
|
movq %r8,%rdx
|
|
movq %r9,%rcx
|
|
pushq %rbx
|
|
|
|
pushq %r12
|
|
|
|
pushq %r13
|
|
|
|
pushq %r14
|
|
|
|
pushq %r15
|
|
|
|
pushq %rdi
|
|
|
|
.LSEH_body_lshift_mod_384:
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
movq 0(%rsi),%r8
|
|
movq 8(%rsi),%r9
|
|
movq 16(%rsi),%r10
|
|
movq 24(%rsi),%r11
|
|
movq 32(%rsi),%r12
|
|
movq 40(%rsi),%r13
|
|
|
|
.Loop_lshift_mod_384:
|
|
addq %r8,%r8
|
|
adcq %r9,%r9
|
|
adcq %r10,%r10
|
|
movq %r8,%r14
|
|
adcq %r11,%r11
|
|
movq %r9,%r15
|
|
adcq %r12,%r12
|
|
movq %r10,%rax
|
|
adcq %r13,%r13
|
|
movq %r11,%rbx
|
|
sbbq %rdi,%rdi
|
|
|
|
subq 0(%rcx),%r8
|
|
sbbq 8(%rcx),%r9
|
|
movq %r12,%rbp
|
|
sbbq 16(%rcx),%r10
|
|
sbbq 24(%rcx),%r11
|
|
sbbq 32(%rcx),%r12
|
|
movq %r13,%rsi
|
|
sbbq 40(%rcx),%r13
|
|
sbbq $0,%rdi
|
|
|
|
movq (%rsp),%rdi
|
|
cmovcq %r14,%r8
|
|
cmovcq %r15,%r9
|
|
cmovcq %rax,%r10
|
|
cmovcq %rbx,%r11
|
|
cmovcq %rbp,%r12
|
|
cmovcq %rsi,%r13
|
|
|
|
decl %edx
|
|
jnz .Loop_lshift_mod_384
|
|
|
|
movq %r8,0(%rdi)
|
|
movq %r9,8(%rdi)
|
|
movq %r10,16(%rdi)
|
|
movq %r11,24(%rdi)
|
|
movq %r12,32(%rdi)
|
|
movq %r13,40(%rdi)
|
|
|
|
movq 8(%rsp),%r15
|
|
|
|
movq 16(%rsp),%r14
|
|
|
|
movq 24(%rsp),%r13
|
|
|
|
movq 32(%rsp),%r12
|
|
|
|
movq 40(%rsp),%rbx
|
|
|
|
movq 48(%rsp),%rbp
|
|
|
|
leaq 56(%rsp),%rsp
|
|
|
|
.LSEH_epilogue_lshift_mod_384:
|
|
mov 8(%rsp),%rdi
|
|
mov 16(%rsp),%rsi
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
.LSEH_end_lshift_mod_384:
|
|
|
|
.def __lshift_mod_384; .scl 3; .type 32; .endef
|
|
.p2align 5
|
|
__lshift_mod_384:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
|
|
addq %r8,%r8
|
|
adcq %r9,%r9
|
|
adcq %r10,%r10
|
|
movq %r8,%r14
|
|
adcq %r11,%r11
|
|
movq %r9,%r15
|
|
adcq %r12,%r12
|
|
movq %r10,%rax
|
|
adcq %r13,%r13
|
|
movq %r11,%rbx
|
|
sbbq %rdx,%rdx
|
|
|
|
subq 0(%rcx),%r8
|
|
sbbq 8(%rcx),%r9
|
|
movq %r12,%rbp
|
|
sbbq 16(%rcx),%r10
|
|
sbbq 24(%rcx),%r11
|
|
sbbq 32(%rcx),%r12
|
|
movq %r13,%rsi
|
|
sbbq 40(%rcx),%r13
|
|
sbbq $0,%rdx
|
|
|
|
cmovcq %r14,%r8
|
|
cmovcq %r15,%r9
|
|
cmovcq %rax,%r10
|
|
cmovcq %rbx,%r11
|
|
cmovcq %rbp,%r12
|
|
cmovcq %rsi,%r13
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
|
|
|
|
.globl mul_by_3_mod_384
|
|
|
|
.def mul_by_3_mod_384; .scl 2; .type 32; .endef
|
|
.p2align 5
|
|
mul_by_3_mod_384:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
movq %rdi,8(%rsp)
|
|
movq %rsi,16(%rsp)
|
|
movq %rsp,%r11
|
|
.LSEH_begin_mul_by_3_mod_384:
|
|
|
|
|
|
pushq %rbp
|
|
|
|
movq %rcx,%rdi
|
|
movq %rdx,%rsi
|
|
movq %r8,%rdx
|
|
pushq %rbx
|
|
|
|
pushq %r12
|
|
|
|
pushq %r13
|
|
|
|
pushq %r14
|
|
|
|
pushq %r15
|
|
|
|
pushq %rsi
|
|
|
|
.LSEH_body_mul_by_3_mod_384:
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
movq 0(%rsi),%r8
|
|
movq 8(%rsi),%r9
|
|
movq 16(%rsi),%r10
|
|
movq 24(%rsi),%r11
|
|
movq 32(%rsi),%r12
|
|
movq 40(%rsi),%r13
|
|
movq %rdx,%rcx
|
|
|
|
call __lshift_mod_384
|
|
|
|
movq (%rsp),%rdx
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
call __add_mod_384_a_is_loaded
|
|
|
|
movq 8(%rsp),%r15
|
|
|
|
movq 16(%rsp),%r14
|
|
|
|
movq 24(%rsp),%r13
|
|
|
|
movq 32(%rsp),%r12
|
|
|
|
movq 40(%rsp),%rbx
|
|
|
|
movq 48(%rsp),%rbp
|
|
|
|
leaq 56(%rsp),%rsp
|
|
|
|
.LSEH_epilogue_mul_by_3_mod_384:
|
|
mov 8(%rsp),%rdi
|
|
mov 16(%rsp),%rsi
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
.LSEH_end_mul_by_3_mod_384:
|
|
|
|
.globl mul_by_8_mod_384
|
|
|
|
.def mul_by_8_mod_384; .scl 2; .type 32; .endef
|
|
.p2align 5
|
|
mul_by_8_mod_384:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
movq %rdi,8(%rsp)
|
|
movq %rsi,16(%rsp)
|
|
movq %rsp,%r11
|
|
.LSEH_begin_mul_by_8_mod_384:
|
|
|
|
|
|
pushq %rbp
|
|
|
|
movq %rcx,%rdi
|
|
movq %rdx,%rsi
|
|
movq %r8,%rdx
|
|
pushq %rbx
|
|
|
|
pushq %r12
|
|
|
|
pushq %r13
|
|
|
|
pushq %r14
|
|
|
|
pushq %r15
|
|
|
|
subq $8,%rsp
|
|
|
|
.LSEH_body_mul_by_8_mod_384:
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
movq 0(%rsi),%r8
|
|
movq 8(%rsi),%r9
|
|
movq 16(%rsi),%r10
|
|
movq 24(%rsi),%r11
|
|
movq 32(%rsi),%r12
|
|
movq 40(%rsi),%r13
|
|
movq %rdx,%rcx
|
|
|
|
call __lshift_mod_384
|
|
call __lshift_mod_384
|
|
call __lshift_mod_384
|
|
|
|
movq %r8,0(%rdi)
|
|
movq %r9,8(%rdi)
|
|
movq %r10,16(%rdi)
|
|
movq %r11,24(%rdi)
|
|
movq %r12,32(%rdi)
|
|
movq %r13,40(%rdi)
|
|
|
|
movq 8(%rsp),%r15
|
|
|
|
movq 16(%rsp),%r14
|
|
|
|
movq 24(%rsp),%r13
|
|
|
|
movq 32(%rsp),%r12
|
|
|
|
movq 40(%rsp),%rbx
|
|
|
|
movq 48(%rsp),%rbp
|
|
|
|
leaq 56(%rsp),%rsp
|
|
|
|
.LSEH_epilogue_mul_by_8_mod_384:
|
|
mov 8(%rsp),%rdi
|
|
mov 16(%rsp),%rsi
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
.LSEH_end_mul_by_8_mod_384:
|
|
|
|
|
|
.globl mul_by_3_mod_384x
|
|
|
|
.def mul_by_3_mod_384x; .scl 2; .type 32; .endef
|
|
.p2align 5
|
|
mul_by_3_mod_384x:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
movq %rdi,8(%rsp)
|
|
movq %rsi,16(%rsp)
|
|
movq %rsp,%r11
|
|
.LSEH_begin_mul_by_3_mod_384x:
|
|
|
|
|
|
pushq %rbp
|
|
|
|
movq %rcx,%rdi
|
|
movq %rdx,%rsi
|
|
movq %r8,%rdx
|
|
pushq %rbx
|
|
|
|
pushq %r12
|
|
|
|
pushq %r13
|
|
|
|
pushq %r14
|
|
|
|
pushq %r15
|
|
|
|
pushq %rsi
|
|
|
|
.LSEH_body_mul_by_3_mod_384x:
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
movq 0(%rsi),%r8
|
|
movq 8(%rsi),%r9
|
|
movq 16(%rsi),%r10
|
|
movq 24(%rsi),%r11
|
|
movq 32(%rsi),%r12
|
|
movq 40(%rsi),%r13
|
|
movq %rdx,%rcx
|
|
|
|
call __lshift_mod_384
|
|
|
|
movq (%rsp),%rdx
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
call __add_mod_384_a_is_loaded
|
|
|
|
movq (%rsp),%rsi
|
|
leaq 48(%rdi),%rdi
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
movq 48(%rsi),%r8
|
|
movq 56(%rsi),%r9
|
|
movq 64(%rsi),%r10
|
|
movq 72(%rsi),%r11
|
|
movq 80(%rsi),%r12
|
|
movq 88(%rsi),%r13
|
|
|
|
call __lshift_mod_384
|
|
|
|
movq $48,%rdx
|
|
addq (%rsp),%rdx
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
call __add_mod_384_a_is_loaded
|
|
|
|
movq 8(%rsp),%r15
|
|
|
|
movq 16(%rsp),%r14
|
|
|
|
movq 24(%rsp),%r13
|
|
|
|
movq 32(%rsp),%r12
|
|
|
|
movq 40(%rsp),%rbx
|
|
|
|
movq 48(%rsp),%rbp
|
|
|
|
leaq 56(%rsp),%rsp
|
|
|
|
.LSEH_epilogue_mul_by_3_mod_384x:
|
|
mov 8(%rsp),%rdi
|
|
mov 16(%rsp),%rsi
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
.LSEH_end_mul_by_3_mod_384x:
|
|
|
|
.globl mul_by_8_mod_384x
|
|
|
|
.def mul_by_8_mod_384x; .scl 2; .type 32; .endef
|
|
.p2align 5
|
|
mul_by_8_mod_384x:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
movq %rdi,8(%rsp)
|
|
movq %rsi,16(%rsp)
|
|
movq %rsp,%r11
|
|
.LSEH_begin_mul_by_8_mod_384x:
|
|
|
|
|
|
pushq %rbp
|
|
|
|
movq %rcx,%rdi
|
|
movq %rdx,%rsi
|
|
movq %r8,%rdx
|
|
pushq %rbx
|
|
|
|
pushq %r12
|
|
|
|
pushq %r13
|
|
|
|
pushq %r14
|
|
|
|
pushq %r15
|
|
|
|
pushq %rsi
|
|
|
|
.LSEH_body_mul_by_8_mod_384x:
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
movq 0(%rsi),%r8
|
|
movq 8(%rsi),%r9
|
|
movq 16(%rsi),%r10
|
|
movq 24(%rsi),%r11
|
|
movq 32(%rsi),%r12
|
|
movq 40(%rsi),%r13
|
|
movq %rdx,%rcx
|
|
|
|
call __lshift_mod_384
|
|
call __lshift_mod_384
|
|
call __lshift_mod_384
|
|
|
|
movq (%rsp),%rsi
|
|
movq %r8,0(%rdi)
|
|
movq %r9,8(%rdi)
|
|
movq %r10,16(%rdi)
|
|
movq %r11,24(%rdi)
|
|
movq %r12,32(%rdi)
|
|
movq %r13,40(%rdi)
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
movq 48+0(%rsi),%r8
|
|
movq 48+8(%rsi),%r9
|
|
movq 48+16(%rsi),%r10
|
|
movq 48+24(%rsi),%r11
|
|
movq 48+32(%rsi),%r12
|
|
movq 48+40(%rsi),%r13
|
|
|
|
call __lshift_mod_384
|
|
call __lshift_mod_384
|
|
call __lshift_mod_384
|
|
|
|
movq %r8,48+0(%rdi)
|
|
movq %r9,48+8(%rdi)
|
|
movq %r10,48+16(%rdi)
|
|
movq %r11,48+24(%rdi)
|
|
movq %r12,48+32(%rdi)
|
|
movq %r13,48+40(%rdi)
|
|
|
|
movq 8(%rsp),%r15
|
|
|
|
movq 16(%rsp),%r14
|
|
|
|
movq 24(%rsp),%r13
|
|
|
|
movq 32(%rsp),%r12
|
|
|
|
movq 40(%rsp),%rbx
|
|
|
|
movq 48(%rsp),%rbp
|
|
|
|
leaq 56(%rsp),%rsp
|
|
|
|
.LSEH_epilogue_mul_by_8_mod_384x:
|
|
mov 8(%rsp),%rdi
|
|
mov 16(%rsp),%rsi
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
.LSEH_end_mul_by_8_mod_384x:
|
|
|
|
|
|
.globl cneg_mod_384
|
|
|
|
.def cneg_mod_384; .scl 2; .type 32; .endef
|
|
.p2align 5
|
|
cneg_mod_384:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
movq %rdi,8(%rsp)
|
|
movq %rsi,16(%rsp)
|
|
movq %rsp,%r11
|
|
.LSEH_begin_cneg_mod_384:
|
|
|
|
|
|
pushq %rbp
|
|
|
|
movq %rcx,%rdi
|
|
movq %rdx,%rsi
|
|
movq %r8,%rdx
|
|
movq %r9,%rcx
|
|
pushq %rbx
|
|
|
|
pushq %r12
|
|
|
|
pushq %r13
|
|
|
|
pushq %r14
|
|
|
|
pushq %r15
|
|
|
|
pushq %rdx
|
|
|
|
.LSEH_body_cneg_mod_384:
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
movq 0(%rsi),%rdx
|
|
movq 8(%rsi),%r9
|
|
movq 16(%rsi),%r10
|
|
movq %rdx,%r8
|
|
movq 24(%rsi),%r11
|
|
orq %r9,%rdx
|
|
movq 32(%rsi),%r12
|
|
orq %r10,%rdx
|
|
movq 40(%rsi),%r13
|
|
orq %r11,%rdx
|
|
movq $-1,%rsi
|
|
orq %r12,%rdx
|
|
orq %r13,%rdx
|
|
|
|
movq 0(%rcx),%r14
|
|
cmovnzq %rsi,%rdx
|
|
movq 8(%rcx),%r15
|
|
movq 16(%rcx),%rax
|
|
andq %rdx,%r14
|
|
movq 24(%rcx),%rbx
|
|
andq %rdx,%r15
|
|
movq 32(%rcx),%rbp
|
|
andq %rdx,%rax
|
|
movq 40(%rcx),%rsi
|
|
andq %rdx,%rbx
|
|
movq 0(%rsp),%rcx
|
|
andq %rdx,%rbp
|
|
andq %rdx,%rsi
|
|
|
|
subq %r8,%r14
|
|
sbbq %r9,%r15
|
|
sbbq %r10,%rax
|
|
sbbq %r11,%rbx
|
|
sbbq %r12,%rbp
|
|
sbbq %r13,%rsi
|
|
|
|
orq %rcx,%rcx
|
|
|
|
cmovzq %r8,%r14
|
|
cmovzq %r9,%r15
|
|
cmovzq %r10,%rax
|
|
movq %r14,0(%rdi)
|
|
cmovzq %r11,%rbx
|
|
movq %r15,8(%rdi)
|
|
cmovzq %r12,%rbp
|
|
movq %rax,16(%rdi)
|
|
cmovzq %r13,%rsi
|
|
movq %rbx,24(%rdi)
|
|
movq %rbp,32(%rdi)
|
|
movq %rsi,40(%rdi)
|
|
|
|
movq 8(%rsp),%r15
|
|
|
|
movq 16(%rsp),%r14
|
|
|
|
movq 24(%rsp),%r13
|
|
|
|
movq 32(%rsp),%r12
|
|
|
|
movq 40(%rsp),%rbx
|
|
|
|
movq 48(%rsp),%rbp
|
|
|
|
leaq 56(%rsp),%rsp
|
|
|
|
.LSEH_epilogue_cneg_mod_384:
|
|
mov 8(%rsp),%rdi
|
|
mov 16(%rsp),%rsi
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
.LSEH_end_cneg_mod_384:
|
|
|
|
|
|
.globl sub_mod_384
|
|
|
|
.def sub_mod_384; .scl 2; .type 32; .endef
|
|
.p2align 5
|
|
sub_mod_384:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
movq %rdi,8(%rsp)
|
|
movq %rsi,16(%rsp)
|
|
movq %rsp,%r11
|
|
.LSEH_begin_sub_mod_384:
|
|
|
|
|
|
pushq %rbp
|
|
|
|
movq %rcx,%rdi
|
|
movq %rdx,%rsi
|
|
movq %r8,%rdx
|
|
movq %r9,%rcx
|
|
pushq %rbx
|
|
|
|
pushq %r12
|
|
|
|
pushq %r13
|
|
|
|
pushq %r14
|
|
|
|
pushq %r15
|
|
|
|
subq $8,%rsp
|
|
|
|
.LSEH_body_sub_mod_384:
|
|
|
|
|
|
call __sub_mod_384
|
|
|
|
movq 8(%rsp),%r15
|
|
|
|
movq 16(%rsp),%r14
|
|
|
|
movq 24(%rsp),%r13
|
|
|
|
movq 32(%rsp),%r12
|
|
|
|
movq 40(%rsp),%rbx
|
|
|
|
movq 48(%rsp),%rbp
|
|
|
|
leaq 56(%rsp),%rsp
|
|
|
|
.LSEH_epilogue_sub_mod_384:
|
|
mov 8(%rsp),%rdi
|
|
mov 16(%rsp),%rsi
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
.LSEH_end_sub_mod_384:
|
|
|
|
.def __sub_mod_384; .scl 3; .type 32; .endef
|
|
.p2align 5
|
|
__sub_mod_384:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
movq 0(%rsi),%r8
|
|
movq 8(%rsi),%r9
|
|
movq 16(%rsi),%r10
|
|
movq 24(%rsi),%r11
|
|
movq 32(%rsi),%r12
|
|
movq 40(%rsi),%r13
|
|
|
|
subq 0(%rdx),%r8
|
|
movq 0(%rcx),%r14
|
|
sbbq 8(%rdx),%r9
|
|
movq 8(%rcx),%r15
|
|
sbbq 16(%rdx),%r10
|
|
movq 16(%rcx),%rax
|
|
sbbq 24(%rdx),%r11
|
|
movq 24(%rcx),%rbx
|
|
sbbq 32(%rdx),%r12
|
|
movq 32(%rcx),%rbp
|
|
sbbq 40(%rdx),%r13
|
|
movq 40(%rcx),%rsi
|
|
sbbq %rdx,%rdx
|
|
|
|
andq %rdx,%r14
|
|
andq %rdx,%r15
|
|
andq %rdx,%rax
|
|
andq %rdx,%rbx
|
|
andq %rdx,%rbp
|
|
andq %rdx,%rsi
|
|
|
|
addq %r14,%r8
|
|
adcq %r15,%r9
|
|
movq %r8,0(%rdi)
|
|
adcq %rax,%r10
|
|
movq %r9,8(%rdi)
|
|
adcq %rbx,%r11
|
|
movq %r10,16(%rdi)
|
|
adcq %rbp,%r12
|
|
movq %r11,24(%rdi)
|
|
adcq %rsi,%r13
|
|
movq %r12,32(%rdi)
|
|
movq %r13,40(%rdi)
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
|
|
.globl sub_mod_384x
|
|
|
|
.def sub_mod_384x; .scl 2; .type 32; .endef
|
|
.p2align 5
|
|
sub_mod_384x:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
movq %rdi,8(%rsp)
|
|
movq %rsi,16(%rsp)
|
|
movq %rsp,%r11
|
|
.LSEH_begin_sub_mod_384x:
|
|
|
|
|
|
pushq %rbp
|
|
|
|
movq %rcx,%rdi
|
|
movq %rdx,%rsi
|
|
movq %r8,%rdx
|
|
movq %r9,%rcx
|
|
pushq %rbx
|
|
|
|
pushq %r12
|
|
|
|
pushq %r13
|
|
|
|
pushq %r14
|
|
|
|
pushq %r15
|
|
|
|
subq $24,%rsp
|
|
|
|
.LSEH_body_sub_mod_384x:
|
|
|
|
|
|
movq %rsi,0(%rsp)
|
|
movq %rdx,8(%rsp)
|
|
leaq 48(%rsi),%rsi
|
|
leaq 48(%rdx),%rdx
|
|
leaq 48(%rdi),%rdi
|
|
call __sub_mod_384
|
|
|
|
movq 0(%rsp),%rsi
|
|
movq 8(%rsp),%rdx
|
|
leaq -48(%rdi),%rdi
|
|
call __sub_mod_384
|
|
|
|
movq 24+0(%rsp),%r15
|
|
|
|
movq 24+8(%rsp),%r14
|
|
|
|
movq 24+16(%rsp),%r13
|
|
|
|
movq 24+24(%rsp),%r12
|
|
|
|
movq 24+32(%rsp),%rbx
|
|
|
|
movq 24+40(%rsp),%rbp
|
|
|
|
leaq 24+48(%rsp),%rsp
|
|
|
|
.LSEH_epilogue_sub_mod_384x:
|
|
mov 8(%rsp),%rdi
|
|
mov 16(%rsp),%rsi
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
.LSEH_end_sub_mod_384x:
|
|
.globl mul_by_1_plus_i_mod_384x
|
|
|
|
.def mul_by_1_plus_i_mod_384x; .scl 2; .type 32; .endef
|
|
.p2align 5
|
|
mul_by_1_plus_i_mod_384x:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
movq %rdi,8(%rsp)
|
|
movq %rsi,16(%rsp)
|
|
movq %rsp,%r11
|
|
.LSEH_begin_mul_by_1_plus_i_mod_384x:
|
|
|
|
|
|
pushq %rbp
|
|
|
|
movq %rcx,%rdi
|
|
movq %rdx,%rsi
|
|
movq %r8,%rdx
|
|
pushq %rbx
|
|
|
|
pushq %r12
|
|
|
|
pushq %r13
|
|
|
|
pushq %r14
|
|
|
|
pushq %r15
|
|
|
|
subq $56,%rsp
|
|
|
|
.LSEH_body_mul_by_1_plus_i_mod_384x:
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
movq 0(%rsi),%r8
|
|
movq 8(%rsi),%r9
|
|
movq 16(%rsi),%r10
|
|
movq 24(%rsi),%r11
|
|
movq 32(%rsi),%r12
|
|
movq 40(%rsi),%r13
|
|
|
|
movq %r8,%r14
|
|
addq 48(%rsi),%r8
|
|
movq %r9,%r15
|
|
adcq 56(%rsi),%r9
|
|
movq %r10,%rax
|
|
adcq 64(%rsi),%r10
|
|
movq %r11,%rbx
|
|
adcq 72(%rsi),%r11
|
|
movq %r12,%rcx
|
|
adcq 80(%rsi),%r12
|
|
movq %r13,%rbp
|
|
adcq 88(%rsi),%r13
|
|
movq %rdi,48(%rsp)
|
|
sbbq %rdi,%rdi
|
|
|
|
subq 48(%rsi),%r14
|
|
sbbq 56(%rsi),%r15
|
|
sbbq 64(%rsi),%rax
|
|
sbbq 72(%rsi),%rbx
|
|
sbbq 80(%rsi),%rcx
|
|
sbbq 88(%rsi),%rbp
|
|
sbbq %rsi,%rsi
|
|
|
|
movq %r8,0(%rsp)
|
|
movq 0(%rdx),%r8
|
|
movq %r9,8(%rsp)
|
|
movq 8(%rdx),%r9
|
|
movq %r10,16(%rsp)
|
|
movq 16(%rdx),%r10
|
|
movq %r11,24(%rsp)
|
|
movq 24(%rdx),%r11
|
|
movq %r12,32(%rsp)
|
|
andq %rsi,%r8
|
|
movq 32(%rdx),%r12
|
|
movq %r13,40(%rsp)
|
|
andq %rsi,%r9
|
|
movq 40(%rdx),%r13
|
|
andq %rsi,%r10
|
|
andq %rsi,%r11
|
|
andq %rsi,%r12
|
|
andq %rsi,%r13
|
|
movq 48(%rsp),%rsi
|
|
|
|
addq %r8,%r14
|
|
movq 0(%rsp),%r8
|
|
adcq %r9,%r15
|
|
movq 8(%rsp),%r9
|
|
adcq %r10,%rax
|
|
movq 16(%rsp),%r10
|
|
adcq %r11,%rbx
|
|
movq 24(%rsp),%r11
|
|
adcq %r12,%rcx
|
|
movq 32(%rsp),%r12
|
|
adcq %r13,%rbp
|
|
movq 40(%rsp),%r13
|
|
|
|
movq %r14,0(%rsi)
|
|
movq %r8,%r14
|
|
movq %r15,8(%rsi)
|
|
movq %rax,16(%rsi)
|
|
movq %r9,%r15
|
|
movq %rbx,24(%rsi)
|
|
movq %rcx,32(%rsi)
|
|
movq %r10,%rax
|
|
movq %rbp,40(%rsi)
|
|
|
|
subq 0(%rdx),%r8
|
|
movq %r11,%rbx
|
|
sbbq 8(%rdx),%r9
|
|
sbbq 16(%rdx),%r10
|
|
movq %r12,%rcx
|
|
sbbq 24(%rdx),%r11
|
|
sbbq 32(%rdx),%r12
|
|
movq %r13,%rbp
|
|
sbbq 40(%rdx),%r13
|
|
sbbq $0,%rdi
|
|
|
|
cmovcq %r14,%r8
|
|
cmovcq %r15,%r9
|
|
cmovcq %rax,%r10
|
|
movq %r8,48(%rsi)
|
|
cmovcq %rbx,%r11
|
|
movq %r9,56(%rsi)
|
|
cmovcq %rcx,%r12
|
|
movq %r10,64(%rsi)
|
|
cmovcq %rbp,%r13
|
|
movq %r11,72(%rsi)
|
|
movq %r12,80(%rsi)
|
|
movq %r13,88(%rsi)
|
|
|
|
movq 56+0(%rsp),%r15
|
|
|
|
movq 56+8(%rsp),%r14
|
|
|
|
movq 56+16(%rsp),%r13
|
|
|
|
movq 56+24(%rsp),%r12
|
|
|
|
movq 56+32(%rsp),%rbx
|
|
|
|
movq 56+40(%rsp),%rbp
|
|
|
|
leaq 56+48(%rsp),%rsp
|
|
|
|
.LSEH_epilogue_mul_by_1_plus_i_mod_384x:
|
|
mov 8(%rsp),%rdi
|
|
mov 16(%rsp),%rsi
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
.LSEH_end_mul_by_1_plus_i_mod_384x:
|
|
.globl sgn0_pty_mod_384
|
|
|
|
.def sgn0_pty_mod_384; .scl 2; .type 32; .endef
|
|
.p2align 5
|
|
sgn0_pty_mod_384:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
movq %rdi,8(%rsp)
|
|
movq %rsi,16(%rsp)
|
|
movq %rsp,%r11
|
|
.LSEH_begin_sgn0_pty_mod_384:
|
|
|
|
|
|
movq %rcx,%rdi
|
|
movq %rdx,%rsi
|
|
.LSEH_body_sgn0_pty_mod_384:
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
movq 0(%rdi),%r8
|
|
movq 8(%rdi),%r9
|
|
movq 16(%rdi),%r10
|
|
movq 24(%rdi),%r11
|
|
movq 32(%rdi),%rcx
|
|
movq 40(%rdi),%rdx
|
|
|
|
xorq %rax,%rax
|
|
movq %r8,%rdi
|
|
addq %r8,%r8
|
|
adcq %r9,%r9
|
|
adcq %r10,%r10
|
|
adcq %r11,%r11
|
|
adcq %rcx,%rcx
|
|
adcq %rdx,%rdx
|
|
adcq $0,%rax
|
|
|
|
subq 0(%rsi),%r8
|
|
sbbq 8(%rsi),%r9
|
|
sbbq 16(%rsi),%r10
|
|
sbbq 24(%rsi),%r11
|
|
sbbq 32(%rsi),%rcx
|
|
sbbq 40(%rsi),%rdx
|
|
sbbq $0,%rax
|
|
|
|
notq %rax
|
|
andq $1,%rdi
|
|
andq $2,%rax
|
|
orq %rdi,%rax
|
|
|
|
.LSEH_epilogue_sgn0_pty_mod_384:
|
|
mov 8(%rsp),%rdi
|
|
mov 16(%rsp),%rsi
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
.LSEH_end_sgn0_pty_mod_384:
|
|
|
|
.globl sgn0_pty_mod_384x
|
|
|
|
.def sgn0_pty_mod_384x; .scl 2; .type 32; .endef
|
|
.p2align 5
|
|
sgn0_pty_mod_384x:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
movq %rdi,8(%rsp)
|
|
movq %rsi,16(%rsp)
|
|
movq %rsp,%r11
|
|
.LSEH_begin_sgn0_pty_mod_384x:
|
|
|
|
|
|
pushq %rbp
|
|
|
|
movq %rcx,%rdi
|
|
movq %rdx,%rsi
|
|
pushq %rbx
|
|
|
|
subq $8,%rsp
|
|
|
|
.LSEH_body_sgn0_pty_mod_384x:
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
movq 48(%rdi),%r8
|
|
movq 56(%rdi),%r9
|
|
movq 64(%rdi),%r10
|
|
movq 72(%rdi),%r11
|
|
movq 80(%rdi),%rcx
|
|
movq 88(%rdi),%rdx
|
|
|
|
movq %r8,%rbx
|
|
orq %r9,%r8
|
|
orq %r10,%r8
|
|
orq %r11,%r8
|
|
orq %rcx,%r8
|
|
orq %rdx,%r8
|
|
|
|
leaq 0(%rdi),%rax
|
|
xorq %rdi,%rdi
|
|
movq %rbx,%rbp
|
|
addq %rbx,%rbx
|
|
adcq %r9,%r9
|
|
adcq %r10,%r10
|
|
adcq %r11,%r11
|
|
adcq %rcx,%rcx
|
|
adcq %rdx,%rdx
|
|
adcq $0,%rdi
|
|
|
|
subq 0(%rsi),%rbx
|
|
sbbq 8(%rsi),%r9
|
|
sbbq 16(%rsi),%r10
|
|
sbbq 24(%rsi),%r11
|
|
sbbq 32(%rsi),%rcx
|
|
sbbq 40(%rsi),%rdx
|
|
sbbq $0,%rdi
|
|
|
|
movq %r8,0(%rsp)
|
|
notq %rdi
|
|
andq $1,%rbp
|
|
andq $2,%rdi
|
|
orq %rbp,%rdi
|
|
|
|
movq 0(%rax),%r8
|
|
movq 8(%rax),%r9
|
|
movq 16(%rax),%r10
|
|
movq 24(%rax),%r11
|
|
movq 32(%rax),%rcx
|
|
movq 40(%rax),%rdx
|
|
|
|
movq %r8,%rbx
|
|
orq %r9,%r8
|
|
orq %r10,%r8
|
|
orq %r11,%r8
|
|
orq %rcx,%r8
|
|
orq %rdx,%r8
|
|
|
|
xorq %rax,%rax
|
|
movq %rbx,%rbp
|
|
addq %rbx,%rbx
|
|
adcq %r9,%r9
|
|
adcq %r10,%r10
|
|
adcq %r11,%r11
|
|
adcq %rcx,%rcx
|
|
adcq %rdx,%rdx
|
|
adcq $0,%rax
|
|
|
|
subq 0(%rsi),%rbx
|
|
sbbq 8(%rsi),%r9
|
|
sbbq 16(%rsi),%r10
|
|
sbbq 24(%rsi),%r11
|
|
sbbq 32(%rsi),%rcx
|
|
sbbq 40(%rsi),%rdx
|
|
sbbq $0,%rax
|
|
|
|
movq 0(%rsp),%rbx
|
|
|
|
notq %rax
|
|
|
|
testq %r8,%r8
|
|
cmovzq %rdi,%rbp
|
|
|
|
testq %rbx,%rbx
|
|
cmovnzq %rdi,%rax
|
|
|
|
andq $1,%rbp
|
|
andq $2,%rax
|
|
orq %rbp,%rax
|
|
|
|
movq 8(%rsp),%rbx
|
|
|
|
movq 16(%rsp),%rbp
|
|
|
|
leaq 24(%rsp),%rsp
|
|
|
|
.LSEH_epilogue_sgn0_pty_mod_384x:
|
|
mov 8(%rsp),%rdi
|
|
mov 16(%rsp),%rsi
|
|
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
.LSEH_end_sgn0_pty_mod_384x:
|
|
.globl vec_select_32
|
|
|
|
.def vec_select_32; .scl 2; .type 32; .endef
|
|
.p2align 5
|
|
vec_select_32:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
|
|
movd %r9d,%xmm5
|
|
pxor %xmm4,%xmm4
|
|
pshufd $0,%xmm5,%xmm5
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
movdqu (%rdx),%xmm0
|
|
leaq 16(%rdx),%rdx
|
|
pcmpeqd %xmm4,%xmm5
|
|
movdqu (%r8),%xmm1
|
|
leaq 16(%r8),%r8
|
|
pcmpeqd %xmm5,%xmm4
|
|
leaq 16(%rcx),%rcx
|
|
pand %xmm4,%xmm0
|
|
movdqu 0+16-16(%rdx),%xmm2
|
|
pand %xmm5,%xmm1
|
|
movdqu 0+16-16(%r8),%xmm3
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,0-16(%rcx)
|
|
pand %xmm4,%xmm2
|
|
pand %xmm5,%xmm3
|
|
por %xmm3,%xmm2
|
|
movdqu %xmm2,16-16(%rcx)
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
.globl vec_select_48
|
|
|
|
.def vec_select_48; .scl 2; .type 32; .endef
|
|
.p2align 5
|
|
vec_select_48:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
|
|
movd %r9d,%xmm5
|
|
pxor %xmm4,%xmm4
|
|
pshufd $0,%xmm5,%xmm5
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
movdqu (%rdx),%xmm0
|
|
leaq 24(%rdx),%rdx
|
|
pcmpeqd %xmm4,%xmm5
|
|
movdqu (%r8),%xmm1
|
|
leaq 24(%r8),%r8
|
|
pcmpeqd %xmm5,%xmm4
|
|
leaq 24(%rcx),%rcx
|
|
pand %xmm4,%xmm0
|
|
movdqu 0+16-24(%rdx),%xmm2
|
|
pand %xmm5,%xmm1
|
|
movdqu 0+16-24(%r8),%xmm3
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,0-24(%rcx)
|
|
pand %xmm4,%xmm2
|
|
movdqu 16+16-24(%rdx),%xmm0
|
|
pand %xmm5,%xmm3
|
|
movdqu 16+16-24(%r8),%xmm1
|
|
por %xmm3,%xmm2
|
|
movdqu %xmm2,16-24(%rcx)
|
|
pand %xmm4,%xmm0
|
|
pand %xmm5,%xmm1
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,32-24(%rcx)
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
.globl vec_select_96
|
|
|
|
.def vec_select_96; .scl 2; .type 32; .endef
|
|
.p2align 5
|
|
vec_select_96:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
|
|
movd %r9d,%xmm5
|
|
pxor %xmm4,%xmm4
|
|
pshufd $0,%xmm5,%xmm5
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
movdqu (%rdx),%xmm0
|
|
leaq 48(%rdx),%rdx
|
|
pcmpeqd %xmm4,%xmm5
|
|
movdqu (%r8),%xmm1
|
|
leaq 48(%r8),%r8
|
|
pcmpeqd %xmm5,%xmm4
|
|
leaq 48(%rcx),%rcx
|
|
pand %xmm4,%xmm0
|
|
movdqu 0+16-48(%rdx),%xmm2
|
|
pand %xmm5,%xmm1
|
|
movdqu 0+16-48(%r8),%xmm3
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,0-48(%rcx)
|
|
pand %xmm4,%xmm2
|
|
movdqu 16+16-48(%rdx),%xmm0
|
|
pand %xmm5,%xmm3
|
|
movdqu 16+16-48(%r8),%xmm1
|
|
por %xmm3,%xmm2
|
|
movdqu %xmm2,16-48(%rcx)
|
|
pand %xmm4,%xmm0
|
|
movdqu 32+16-48(%rdx),%xmm2
|
|
pand %xmm5,%xmm1
|
|
movdqu 32+16-48(%r8),%xmm3
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,32-48(%rcx)
|
|
pand %xmm4,%xmm2
|
|
movdqu 48+16-48(%rdx),%xmm0
|
|
pand %xmm5,%xmm3
|
|
movdqu 48+16-48(%r8),%xmm1
|
|
por %xmm3,%xmm2
|
|
movdqu %xmm2,48-48(%rcx)
|
|
pand %xmm4,%xmm0
|
|
movdqu 64+16-48(%rdx),%xmm2
|
|
pand %xmm5,%xmm1
|
|
movdqu 64+16-48(%r8),%xmm3
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,64-48(%rcx)
|
|
pand %xmm4,%xmm2
|
|
pand %xmm5,%xmm3
|
|
por %xmm3,%xmm2
|
|
movdqu %xmm2,80-48(%rcx)
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
.globl vec_select_192
|
|
|
|
.def vec_select_192; .scl 2; .type 32; .endef
|
|
.p2align 5
|
|
vec_select_192:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
|
|
movd %r9d,%xmm5
|
|
pxor %xmm4,%xmm4
|
|
pshufd $0,%xmm5,%xmm5
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
movdqu (%rdx),%xmm0
|
|
leaq 96(%rdx),%rdx
|
|
pcmpeqd %xmm4,%xmm5
|
|
movdqu (%r8),%xmm1
|
|
leaq 96(%r8),%r8
|
|
pcmpeqd %xmm5,%xmm4
|
|
leaq 96(%rcx),%rcx
|
|
pand %xmm4,%xmm0
|
|
movdqu 0+16-96(%rdx),%xmm2
|
|
pand %xmm5,%xmm1
|
|
movdqu 0+16-96(%r8),%xmm3
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,0-96(%rcx)
|
|
pand %xmm4,%xmm2
|
|
movdqu 16+16-96(%rdx),%xmm0
|
|
pand %xmm5,%xmm3
|
|
movdqu 16+16-96(%r8),%xmm1
|
|
por %xmm3,%xmm2
|
|
movdqu %xmm2,16-96(%rcx)
|
|
pand %xmm4,%xmm0
|
|
movdqu 32+16-96(%rdx),%xmm2
|
|
pand %xmm5,%xmm1
|
|
movdqu 32+16-96(%r8),%xmm3
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,32-96(%rcx)
|
|
pand %xmm4,%xmm2
|
|
movdqu 48+16-96(%rdx),%xmm0
|
|
pand %xmm5,%xmm3
|
|
movdqu 48+16-96(%r8),%xmm1
|
|
por %xmm3,%xmm2
|
|
movdqu %xmm2,48-96(%rcx)
|
|
pand %xmm4,%xmm0
|
|
movdqu 64+16-96(%rdx),%xmm2
|
|
pand %xmm5,%xmm1
|
|
movdqu 64+16-96(%r8),%xmm3
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,64-96(%rcx)
|
|
pand %xmm4,%xmm2
|
|
movdqu 80+16-96(%rdx),%xmm0
|
|
pand %xmm5,%xmm3
|
|
movdqu 80+16-96(%r8),%xmm1
|
|
por %xmm3,%xmm2
|
|
movdqu %xmm2,80-96(%rcx)
|
|
pand %xmm4,%xmm0
|
|
movdqu 96+16-96(%rdx),%xmm2
|
|
pand %xmm5,%xmm1
|
|
movdqu 96+16-96(%r8),%xmm3
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,96-96(%rcx)
|
|
pand %xmm4,%xmm2
|
|
movdqu 112+16-96(%rdx),%xmm0
|
|
pand %xmm5,%xmm3
|
|
movdqu 112+16-96(%r8),%xmm1
|
|
por %xmm3,%xmm2
|
|
movdqu %xmm2,112-96(%rcx)
|
|
pand %xmm4,%xmm0
|
|
movdqu 128+16-96(%rdx),%xmm2
|
|
pand %xmm5,%xmm1
|
|
movdqu 128+16-96(%r8),%xmm3
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,128-96(%rcx)
|
|
pand %xmm4,%xmm2
|
|
movdqu 144+16-96(%rdx),%xmm0
|
|
pand %xmm5,%xmm3
|
|
movdqu 144+16-96(%r8),%xmm1
|
|
por %xmm3,%xmm2
|
|
movdqu %xmm2,144-96(%rcx)
|
|
pand %xmm4,%xmm0
|
|
movdqu 160+16-96(%rdx),%xmm2
|
|
pand %xmm5,%xmm1
|
|
movdqu 160+16-96(%r8),%xmm3
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,160-96(%rcx)
|
|
pand %xmm4,%xmm2
|
|
pand %xmm5,%xmm3
|
|
por %xmm3,%xmm2
|
|
movdqu %xmm2,176-96(%rcx)
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
.globl vec_select_144
|
|
|
|
.def vec_select_144; .scl 2; .type 32; .endef
|
|
.p2align 5
|
|
vec_select_144:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
|
|
movd %r9d,%xmm5
|
|
pxor %xmm4,%xmm4
|
|
pshufd $0,%xmm5,%xmm5
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
movdqu (%rdx),%xmm0
|
|
leaq 72(%rdx),%rdx
|
|
pcmpeqd %xmm4,%xmm5
|
|
movdqu (%r8),%xmm1
|
|
leaq 72(%r8),%r8
|
|
pcmpeqd %xmm5,%xmm4
|
|
leaq 72(%rcx),%rcx
|
|
pand %xmm4,%xmm0
|
|
movdqu 0+16-72(%rdx),%xmm2
|
|
pand %xmm5,%xmm1
|
|
movdqu 0+16-72(%r8),%xmm3
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,0-72(%rcx)
|
|
pand %xmm4,%xmm2
|
|
movdqu 16+16-72(%rdx),%xmm0
|
|
pand %xmm5,%xmm3
|
|
movdqu 16+16-72(%r8),%xmm1
|
|
por %xmm3,%xmm2
|
|
movdqu %xmm2,16-72(%rcx)
|
|
pand %xmm4,%xmm0
|
|
movdqu 32+16-72(%rdx),%xmm2
|
|
pand %xmm5,%xmm1
|
|
movdqu 32+16-72(%r8),%xmm3
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,32-72(%rcx)
|
|
pand %xmm4,%xmm2
|
|
movdqu 48+16-72(%rdx),%xmm0
|
|
pand %xmm5,%xmm3
|
|
movdqu 48+16-72(%r8),%xmm1
|
|
por %xmm3,%xmm2
|
|
movdqu %xmm2,48-72(%rcx)
|
|
pand %xmm4,%xmm0
|
|
movdqu 64+16-72(%rdx),%xmm2
|
|
pand %xmm5,%xmm1
|
|
movdqu 64+16-72(%r8),%xmm3
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,64-72(%rcx)
|
|
pand %xmm4,%xmm2
|
|
movdqu 80+16-72(%rdx),%xmm0
|
|
pand %xmm5,%xmm3
|
|
movdqu 80+16-72(%r8),%xmm1
|
|
por %xmm3,%xmm2
|
|
movdqu %xmm2,80-72(%rcx)
|
|
pand %xmm4,%xmm0
|
|
movdqu 96+16-72(%rdx),%xmm2
|
|
pand %xmm5,%xmm1
|
|
movdqu 96+16-72(%r8),%xmm3
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,96-72(%rcx)
|
|
pand %xmm4,%xmm2
|
|
movdqu 112+16-72(%rdx),%xmm0
|
|
pand %xmm5,%xmm3
|
|
movdqu 112+16-72(%r8),%xmm1
|
|
por %xmm3,%xmm2
|
|
movdqu %xmm2,112-72(%rcx)
|
|
pand %xmm4,%xmm0
|
|
pand %xmm5,%xmm1
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,128-72(%rcx)
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
.globl vec_select_288
|
|
|
|
.def vec_select_288; .scl 2; .type 32; .endef
|
|
.p2align 5
|
|
vec_select_288:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
|
|
movd %r9d,%xmm5
|
|
pxor %xmm4,%xmm4
|
|
pshufd $0,%xmm5,%xmm5
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
movdqu (%rdx),%xmm0
|
|
leaq 144(%rdx),%rdx
|
|
pcmpeqd %xmm4,%xmm5
|
|
movdqu (%r8),%xmm1
|
|
leaq 144(%r8),%r8
|
|
pcmpeqd %xmm5,%xmm4
|
|
leaq 144(%rcx),%rcx
|
|
pand %xmm4,%xmm0
|
|
movdqu 0+16-144(%rdx),%xmm2
|
|
pand %xmm5,%xmm1
|
|
movdqu 0+16-144(%r8),%xmm3
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,0-144(%rcx)
|
|
pand %xmm4,%xmm2
|
|
movdqu 16+16-144(%rdx),%xmm0
|
|
pand %xmm5,%xmm3
|
|
movdqu 16+16-144(%r8),%xmm1
|
|
por %xmm3,%xmm2
|
|
movdqu %xmm2,16-144(%rcx)
|
|
pand %xmm4,%xmm0
|
|
movdqu 32+16-144(%rdx),%xmm2
|
|
pand %xmm5,%xmm1
|
|
movdqu 32+16-144(%r8),%xmm3
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,32-144(%rcx)
|
|
pand %xmm4,%xmm2
|
|
movdqu 48+16-144(%rdx),%xmm0
|
|
pand %xmm5,%xmm3
|
|
movdqu 48+16-144(%r8),%xmm1
|
|
por %xmm3,%xmm2
|
|
movdqu %xmm2,48-144(%rcx)
|
|
pand %xmm4,%xmm0
|
|
movdqu 64+16-144(%rdx),%xmm2
|
|
pand %xmm5,%xmm1
|
|
movdqu 64+16-144(%r8),%xmm3
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,64-144(%rcx)
|
|
pand %xmm4,%xmm2
|
|
movdqu 80+16-144(%rdx),%xmm0
|
|
pand %xmm5,%xmm3
|
|
movdqu 80+16-144(%r8),%xmm1
|
|
por %xmm3,%xmm2
|
|
movdqu %xmm2,80-144(%rcx)
|
|
pand %xmm4,%xmm0
|
|
movdqu 96+16-144(%rdx),%xmm2
|
|
pand %xmm5,%xmm1
|
|
movdqu 96+16-144(%r8),%xmm3
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,96-144(%rcx)
|
|
pand %xmm4,%xmm2
|
|
movdqu 112+16-144(%rdx),%xmm0
|
|
pand %xmm5,%xmm3
|
|
movdqu 112+16-144(%r8),%xmm1
|
|
por %xmm3,%xmm2
|
|
movdqu %xmm2,112-144(%rcx)
|
|
pand %xmm4,%xmm0
|
|
movdqu 128+16-144(%rdx),%xmm2
|
|
pand %xmm5,%xmm1
|
|
movdqu 128+16-144(%r8),%xmm3
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,128-144(%rcx)
|
|
pand %xmm4,%xmm2
|
|
movdqu 144+16-144(%rdx),%xmm0
|
|
pand %xmm5,%xmm3
|
|
movdqu 144+16-144(%r8),%xmm1
|
|
por %xmm3,%xmm2
|
|
movdqu %xmm2,144-144(%rcx)
|
|
pand %xmm4,%xmm0
|
|
movdqu 160+16-144(%rdx),%xmm2
|
|
pand %xmm5,%xmm1
|
|
movdqu 160+16-144(%r8),%xmm3
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,160-144(%rcx)
|
|
pand %xmm4,%xmm2
|
|
movdqu 176+16-144(%rdx),%xmm0
|
|
pand %xmm5,%xmm3
|
|
movdqu 176+16-144(%r8),%xmm1
|
|
por %xmm3,%xmm2
|
|
movdqu %xmm2,176-144(%rcx)
|
|
pand %xmm4,%xmm0
|
|
movdqu 192+16-144(%rdx),%xmm2
|
|
pand %xmm5,%xmm1
|
|
movdqu 192+16-144(%r8),%xmm3
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,192-144(%rcx)
|
|
pand %xmm4,%xmm2
|
|
movdqu 208+16-144(%rdx),%xmm0
|
|
pand %xmm5,%xmm3
|
|
movdqu 208+16-144(%r8),%xmm1
|
|
por %xmm3,%xmm2
|
|
movdqu %xmm2,208-144(%rcx)
|
|
pand %xmm4,%xmm0
|
|
movdqu 224+16-144(%rdx),%xmm2
|
|
pand %xmm5,%xmm1
|
|
movdqu 224+16-144(%r8),%xmm3
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,224-144(%rcx)
|
|
pand %xmm4,%xmm2
|
|
movdqu 240+16-144(%rdx),%xmm0
|
|
pand %xmm5,%xmm3
|
|
movdqu 240+16-144(%r8),%xmm1
|
|
por %xmm3,%xmm2
|
|
movdqu %xmm2,240-144(%rcx)
|
|
pand %xmm4,%xmm0
|
|
movdqu 256+16-144(%rdx),%xmm2
|
|
pand %xmm5,%xmm1
|
|
movdqu 256+16-144(%r8),%xmm3
|
|
por %xmm1,%xmm0
|
|
movdqu %xmm0,256-144(%rcx)
|
|
pand %xmm4,%xmm2
|
|
pand %xmm5,%xmm3
|
|
por %xmm3,%xmm2
|
|
movdqu %xmm2,272-144(%rcx)
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
.globl vec_prefetch
|
|
|
|
.def vec_prefetch; .scl 2; .type 32; .endef
|
|
.p2align 5
|
|
vec_prefetch:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
|
|
leaq -1(%rcx,%rdx,1),%rdx
|
|
movq $64,%rax
|
|
xorq %r8,%r8
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
prefetchnta (%rcx)
|
|
leaq (%rcx,%rax,1),%rcx
|
|
cmpq %rdx,%rcx
|
|
cmovaq %rdx,%rcx
|
|
cmovaq %r8,%rax
|
|
prefetchnta (%rcx)
|
|
leaq (%rcx,%rax,1),%rcx
|
|
cmpq %rdx,%rcx
|
|
cmovaq %rdx,%rcx
|
|
cmovaq %r8,%rax
|
|
prefetchnta (%rcx)
|
|
leaq (%rcx,%rax,1),%rcx
|
|
cmpq %rdx,%rcx
|
|
cmovaq %rdx,%rcx
|
|
cmovaq %r8,%rax
|
|
prefetchnta (%rcx)
|
|
leaq (%rcx,%rax,1),%rcx
|
|
cmpq %rdx,%rcx
|
|
cmovaq %rdx,%rcx
|
|
cmovaq %r8,%rax
|
|
prefetchnta (%rcx)
|
|
leaq (%rcx,%rax,1),%rcx
|
|
cmpq %rdx,%rcx
|
|
cmovaq %rdx,%rcx
|
|
cmovaq %r8,%rax
|
|
prefetchnta (%rcx)
|
|
leaq (%rcx,%rax,1),%rcx
|
|
cmpq %rdx,%rcx
|
|
cmovaq %rdx,%rcx
|
|
prefetchnta (%rcx)
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
.globl vec_is_zero_16x
|
|
|
|
.def vec_is_zero_16x; .scl 2; .type 32; .endef
|
|
.p2align 5
|
|
vec_is_zero_16x:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
|
|
shrl $4,%edx
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
movdqu (%rcx),%xmm0
|
|
leaq 16(%rcx),%rcx
|
|
|
|
.Loop_is_zero:
|
|
decl %edx
|
|
jz .Loop_is_zero_done
|
|
movdqu (%rcx),%xmm1
|
|
leaq 16(%rcx),%rcx
|
|
por %xmm1,%xmm0
|
|
jmp .Loop_is_zero
|
|
|
|
.Loop_is_zero_done:
|
|
pshufd $0x4e,%xmm0,%xmm1
|
|
por %xmm1,%xmm0
|
|
.byte 102,72,15,126,192
|
|
incl %edx
|
|
testq %rax,%rax
|
|
cmovnzl %edx,%eax
|
|
xorl $1,%eax
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
.globl vec_is_equal_16x
|
|
|
|
.def vec_is_equal_16x; .scl 2; .type 32; .endef
|
|
.p2align 5
|
|
vec_is_equal_16x:
|
|
.byte 0xf3,0x0f,0x1e,0xfa
|
|
|
|
shrl $4,%r8d
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
#endif
|
|
movdqu (%rcx),%xmm0
|
|
movdqu (%rdx),%xmm1
|
|
subq %rcx,%rdx
|
|
leaq 16(%rcx),%rcx
|
|
pxor %xmm1,%xmm0
|
|
|
|
.Loop_is_equal:
|
|
decl %r8d
|
|
jz .Loop_is_equal_done
|
|
movdqu (%rcx),%xmm1
|
|
movdqu (%rcx,%rdx,1),%xmm2
|
|
leaq 16(%rcx),%rcx
|
|
pxor %xmm2,%xmm1
|
|
por %xmm1,%xmm0
|
|
jmp .Loop_is_equal
|
|
|
|
.Loop_is_equal_done:
|
|
pshufd $0x4e,%xmm0,%xmm1
|
|
por %xmm1,%xmm0
|
|
.byte 102,72,15,126,192
|
|
incl %r8d
|
|
testq %rax,%rax
|
|
cmovnzl %r8d,%eax
|
|
xorl $1,%eax
|
|
|
|
#ifdef __SGX_LVI_HARDENING__
|
|
popq %rdx
|
|
lfence
|
|
jmpq *%rdx
|
|
ud2
|
|
#else
|
|
.byte 0xf3,0xc3
|
|
#endif
|
|
|
|
.section .pdata
|
|
.p2align 2
|
|
.rva .LSEH_begin_add_mod_384
|
|
.rva .LSEH_body_add_mod_384
|
|
.rva .LSEH_info_add_mod_384_prologue
|
|
|
|
.rva .LSEH_body_add_mod_384
|
|
.rva .LSEH_epilogue_add_mod_384
|
|
.rva .LSEH_info_add_mod_384_body
|
|
|
|
.rva .LSEH_epilogue_add_mod_384
|
|
.rva .LSEH_end_add_mod_384
|
|
.rva .LSEH_info_add_mod_384_epilogue
|
|
|
|
.rva .LSEH_begin_add_mod_384x
|
|
.rva .LSEH_body_add_mod_384x
|
|
.rva .LSEH_info_add_mod_384x_prologue
|
|
|
|
.rva .LSEH_body_add_mod_384x
|
|
.rva .LSEH_epilogue_add_mod_384x
|
|
.rva .LSEH_info_add_mod_384x_body
|
|
|
|
.rva .LSEH_epilogue_add_mod_384x
|
|
.rva .LSEH_end_add_mod_384x
|
|
.rva .LSEH_info_add_mod_384x_epilogue
|
|
|
|
.rva .LSEH_begin_rshift_mod_384
|
|
.rva .LSEH_body_rshift_mod_384
|
|
.rva .LSEH_info_rshift_mod_384_prologue
|
|
|
|
.rva .LSEH_body_rshift_mod_384
|
|
.rva .LSEH_epilogue_rshift_mod_384
|
|
.rva .LSEH_info_rshift_mod_384_body
|
|
|
|
.rva .LSEH_epilogue_rshift_mod_384
|
|
.rva .LSEH_end_rshift_mod_384
|
|
.rva .LSEH_info_rshift_mod_384_epilogue
|
|
|
|
.rva .LSEH_begin_div_by_2_mod_384
|
|
.rva .LSEH_body_div_by_2_mod_384
|
|
.rva .LSEH_info_div_by_2_mod_384_prologue
|
|
|
|
.rva .LSEH_body_div_by_2_mod_384
|
|
.rva .LSEH_epilogue_div_by_2_mod_384
|
|
.rva .LSEH_info_div_by_2_mod_384_body
|
|
|
|
.rva .LSEH_epilogue_div_by_2_mod_384
|
|
.rva .LSEH_end_div_by_2_mod_384
|
|
.rva .LSEH_info_div_by_2_mod_384_epilogue
|
|
|
|
.rva .LSEH_begin_lshift_mod_384
|
|
.rva .LSEH_body_lshift_mod_384
|
|
.rva .LSEH_info_lshift_mod_384_prologue
|
|
|
|
.rva .LSEH_body_lshift_mod_384
|
|
.rva .LSEH_epilogue_lshift_mod_384
|
|
.rva .LSEH_info_lshift_mod_384_body
|
|
|
|
.rva .LSEH_epilogue_lshift_mod_384
|
|
.rva .LSEH_end_lshift_mod_384
|
|
.rva .LSEH_info_lshift_mod_384_epilogue
|
|
|
|
.rva .LSEH_begin_mul_by_3_mod_384
|
|
.rva .LSEH_body_mul_by_3_mod_384
|
|
.rva .LSEH_info_mul_by_3_mod_384_prologue
|
|
|
|
.rva .LSEH_body_mul_by_3_mod_384
|
|
.rva .LSEH_epilogue_mul_by_3_mod_384
|
|
.rva .LSEH_info_mul_by_3_mod_384_body
|
|
|
|
.rva .LSEH_epilogue_mul_by_3_mod_384
|
|
.rva .LSEH_end_mul_by_3_mod_384
|
|
.rva .LSEH_info_mul_by_3_mod_384_epilogue
|
|
|
|
.rva .LSEH_begin_mul_by_8_mod_384
|
|
.rva .LSEH_body_mul_by_8_mod_384
|
|
.rva .LSEH_info_mul_by_8_mod_384_prologue
|
|
|
|
.rva .LSEH_body_mul_by_8_mod_384
|
|
.rva .LSEH_epilogue_mul_by_8_mod_384
|
|
.rva .LSEH_info_mul_by_8_mod_384_body
|
|
|
|
.rva .LSEH_epilogue_mul_by_8_mod_384
|
|
.rva .LSEH_end_mul_by_8_mod_384
|
|
.rva .LSEH_info_mul_by_8_mod_384_epilogue
|
|
|
|
.rva .LSEH_begin_mul_by_3_mod_384x
|
|
.rva .LSEH_body_mul_by_3_mod_384x
|
|
.rva .LSEH_info_mul_by_3_mod_384x_prologue
|
|
|
|
.rva .LSEH_body_mul_by_3_mod_384x
|
|
.rva .LSEH_epilogue_mul_by_3_mod_384x
|
|
.rva .LSEH_info_mul_by_3_mod_384x_body
|
|
|
|
.rva .LSEH_epilogue_mul_by_3_mod_384x
|
|
.rva .LSEH_end_mul_by_3_mod_384x
|
|
.rva .LSEH_info_mul_by_3_mod_384x_epilogue
|
|
|
|
.rva .LSEH_begin_mul_by_8_mod_384x
|
|
.rva .LSEH_body_mul_by_8_mod_384x
|
|
.rva .LSEH_info_mul_by_8_mod_384x_prologue
|
|
|
|
.rva .LSEH_body_mul_by_8_mod_384x
|
|
.rva .LSEH_epilogue_mul_by_8_mod_384x
|
|
.rva .LSEH_info_mul_by_8_mod_384x_body
|
|
|
|
.rva .LSEH_epilogue_mul_by_8_mod_384x
|
|
.rva .LSEH_end_mul_by_8_mod_384x
|
|
.rva .LSEH_info_mul_by_8_mod_384x_epilogue
|
|
|
|
.rva .LSEH_begin_cneg_mod_384
|
|
.rva .LSEH_body_cneg_mod_384
|
|
.rva .LSEH_info_cneg_mod_384_prologue
|
|
|
|
.rva .LSEH_body_cneg_mod_384
|
|
.rva .LSEH_epilogue_cneg_mod_384
|
|
.rva .LSEH_info_cneg_mod_384_body
|
|
|
|
.rva .LSEH_epilogue_cneg_mod_384
|
|
.rva .LSEH_end_cneg_mod_384
|
|
.rva .LSEH_info_cneg_mod_384_epilogue
|
|
|
|
.rva .LSEH_begin_sub_mod_384
|
|
.rva .LSEH_body_sub_mod_384
|
|
.rva .LSEH_info_sub_mod_384_prologue
|
|
|
|
.rva .LSEH_body_sub_mod_384
|
|
.rva .LSEH_epilogue_sub_mod_384
|
|
.rva .LSEH_info_sub_mod_384_body
|
|
|
|
.rva .LSEH_epilogue_sub_mod_384
|
|
.rva .LSEH_end_sub_mod_384
|
|
.rva .LSEH_info_sub_mod_384_epilogue
|
|
|
|
.rva .LSEH_begin_sub_mod_384x
|
|
.rva .LSEH_body_sub_mod_384x
|
|
.rva .LSEH_info_sub_mod_384x_prologue
|
|
|
|
.rva .LSEH_body_sub_mod_384x
|
|
.rva .LSEH_epilogue_sub_mod_384x
|
|
.rva .LSEH_info_sub_mod_384x_body
|
|
|
|
.rva .LSEH_epilogue_sub_mod_384x
|
|
.rva .LSEH_end_sub_mod_384x
|
|
.rva .LSEH_info_sub_mod_384x_epilogue
|
|
|
|
.rva .LSEH_begin_mul_by_1_plus_i_mod_384x
|
|
.rva .LSEH_body_mul_by_1_plus_i_mod_384x
|
|
.rva .LSEH_info_mul_by_1_plus_i_mod_384x_prologue
|
|
|
|
.rva .LSEH_body_mul_by_1_plus_i_mod_384x
|
|
.rva .LSEH_epilogue_mul_by_1_plus_i_mod_384x
|
|
.rva .LSEH_info_mul_by_1_plus_i_mod_384x_body
|
|
|
|
.rva .LSEH_epilogue_mul_by_1_plus_i_mod_384x
|
|
.rva .LSEH_end_mul_by_1_plus_i_mod_384x
|
|
.rva .LSEH_info_mul_by_1_plus_i_mod_384x_epilogue
|
|
|
|
.rva .LSEH_begin_sgn0_pty_mod_384
|
|
.rva .LSEH_body_sgn0_pty_mod_384
|
|
.rva .LSEH_info_sgn0_pty_mod_384_prologue
|
|
|
|
.rva .LSEH_body_sgn0_pty_mod_384
|
|
.rva .LSEH_epilogue_sgn0_pty_mod_384
|
|
.rva .LSEH_info_sgn0_pty_mod_384_body
|
|
|
|
.rva .LSEH_epilogue_sgn0_pty_mod_384
|
|
.rva .LSEH_end_sgn0_pty_mod_384
|
|
.rva .LSEH_info_sgn0_pty_mod_384_epilogue
|
|
|
|
.rva .LSEH_begin_sgn0_pty_mod_384x
|
|
.rva .LSEH_body_sgn0_pty_mod_384x
|
|
.rva .LSEH_info_sgn0_pty_mod_384x_prologue
|
|
|
|
.rva .LSEH_body_sgn0_pty_mod_384x
|
|
.rva .LSEH_epilogue_sgn0_pty_mod_384x
|
|
.rva .LSEH_info_sgn0_pty_mod_384x_body
|
|
|
|
.rva .LSEH_epilogue_sgn0_pty_mod_384x
|
|
.rva .LSEH_end_sgn0_pty_mod_384x
|
|
.rva .LSEH_info_sgn0_pty_mod_384x_epilogue
|
|
|
|
.section .xdata
|
|
.p2align 3
|
|
.LSEH_info_add_mod_384_prologue:
|
|
.byte 1,0,5,0x0b
|
|
.byte 0,0x74,1,0
|
|
.byte 0,0x64,2,0
|
|
.byte 0,0xb3
|
|
.byte 0,0
|
|
.long 0,0
|
|
.LSEH_info_add_mod_384_body:
|
|
.byte 1,0,17,0
|
|
.byte 0x00,0xf4,0x01,0x00
|
|
.byte 0x00,0xe4,0x02,0x00
|
|
.byte 0x00,0xd4,0x03,0x00
|
|
.byte 0x00,0xc4,0x04,0x00
|
|
.byte 0x00,0x34,0x05,0x00
|
|
.byte 0x00,0x54,0x06,0x00
|
|
.byte 0x00,0x74,0x08,0x00
|
|
.byte 0x00,0x64,0x09,0x00
|
|
.byte 0x00,0x62
|
|
.byte 0x00,0x00,0x00,0x00,0x00,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
.LSEH_info_add_mod_384_epilogue:
|
|
.byte 1,0,4,0
|
|
.byte 0x00,0x74,0x01,0x00
|
|
.byte 0x00,0x64,0x02,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
|
|
.LSEH_info_add_mod_384x_prologue:
|
|
.byte 1,0,5,0x0b
|
|
.byte 0,0x74,1,0
|
|
.byte 0,0x64,2,0
|
|
.byte 0,0xb3
|
|
.byte 0,0
|
|
.long 0,0
|
|
.LSEH_info_add_mod_384x_body:
|
|
.byte 1,0,17,0
|
|
.byte 0x00,0xf4,0x03,0x00
|
|
.byte 0x00,0xe4,0x04,0x00
|
|
.byte 0x00,0xd4,0x05,0x00
|
|
.byte 0x00,0xc4,0x06,0x00
|
|
.byte 0x00,0x34,0x07,0x00
|
|
.byte 0x00,0x54,0x08,0x00
|
|
.byte 0x00,0x74,0x0a,0x00
|
|
.byte 0x00,0x64,0x0b,0x00
|
|
.byte 0x00,0x82
|
|
.byte 0x00,0x00,0x00,0x00,0x00,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
.LSEH_info_add_mod_384x_epilogue:
|
|
.byte 1,0,4,0
|
|
.byte 0x00,0x74,0x01,0x00
|
|
.byte 0x00,0x64,0x02,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
|
|
.LSEH_info_rshift_mod_384_prologue:
|
|
.byte 1,0,5,0x0b
|
|
.byte 0,0x74,1,0
|
|
.byte 0,0x64,2,0
|
|
.byte 0,0xb3
|
|
.byte 0,0
|
|
.long 0,0
|
|
.LSEH_info_rshift_mod_384_body:
|
|
.byte 1,0,17,0
|
|
.byte 0x00,0xf4,0x01,0x00
|
|
.byte 0x00,0xe4,0x02,0x00
|
|
.byte 0x00,0xd4,0x03,0x00
|
|
.byte 0x00,0xc4,0x04,0x00
|
|
.byte 0x00,0x34,0x05,0x00
|
|
.byte 0x00,0x54,0x06,0x00
|
|
.byte 0x00,0x74,0x08,0x00
|
|
.byte 0x00,0x64,0x09,0x00
|
|
.byte 0x00,0x62
|
|
.byte 0x00,0x00,0x00,0x00,0x00,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
.LSEH_info_rshift_mod_384_epilogue:
|
|
.byte 1,0,4,0
|
|
.byte 0x00,0x74,0x01,0x00
|
|
.byte 0x00,0x64,0x02,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
|
|
.LSEH_info_div_by_2_mod_384_prologue:
|
|
.byte 1,0,5,0x0b
|
|
.byte 0,0x74,1,0
|
|
.byte 0,0x64,2,0
|
|
.byte 0,0xb3
|
|
.byte 0,0
|
|
.long 0,0
|
|
.LSEH_info_div_by_2_mod_384_body:
|
|
.byte 1,0,17,0
|
|
.byte 0x00,0xf4,0x01,0x00
|
|
.byte 0x00,0xe4,0x02,0x00
|
|
.byte 0x00,0xd4,0x03,0x00
|
|
.byte 0x00,0xc4,0x04,0x00
|
|
.byte 0x00,0x34,0x05,0x00
|
|
.byte 0x00,0x54,0x06,0x00
|
|
.byte 0x00,0x74,0x08,0x00
|
|
.byte 0x00,0x64,0x09,0x00
|
|
.byte 0x00,0x62
|
|
.byte 0x00,0x00,0x00,0x00,0x00,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
.LSEH_info_div_by_2_mod_384_epilogue:
|
|
.byte 1,0,4,0
|
|
.byte 0x00,0x74,0x01,0x00
|
|
.byte 0x00,0x64,0x02,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
|
|
.LSEH_info_lshift_mod_384_prologue:
|
|
.byte 1,0,5,0x0b
|
|
.byte 0,0x74,1,0
|
|
.byte 0,0x64,2,0
|
|
.byte 0,0xb3
|
|
.byte 0,0
|
|
.long 0,0
|
|
.LSEH_info_lshift_mod_384_body:
|
|
.byte 1,0,17,0
|
|
.byte 0x00,0xf4,0x01,0x00
|
|
.byte 0x00,0xe4,0x02,0x00
|
|
.byte 0x00,0xd4,0x03,0x00
|
|
.byte 0x00,0xc4,0x04,0x00
|
|
.byte 0x00,0x34,0x05,0x00
|
|
.byte 0x00,0x54,0x06,0x00
|
|
.byte 0x00,0x74,0x08,0x00
|
|
.byte 0x00,0x64,0x09,0x00
|
|
.byte 0x00,0x62
|
|
.byte 0x00,0x00,0x00,0x00,0x00,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
.LSEH_info_lshift_mod_384_epilogue:
|
|
.byte 1,0,4,0
|
|
.byte 0x00,0x74,0x01,0x00
|
|
.byte 0x00,0x64,0x02,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
|
|
.LSEH_info_mul_by_3_mod_384_prologue:
|
|
.byte 1,0,5,0x0b
|
|
.byte 0,0x74,1,0
|
|
.byte 0,0x64,2,0
|
|
.byte 0,0xb3
|
|
.byte 0,0
|
|
.long 0,0
|
|
.LSEH_info_mul_by_3_mod_384_body:
|
|
.byte 1,0,17,0
|
|
.byte 0x00,0xf4,0x01,0x00
|
|
.byte 0x00,0xe4,0x02,0x00
|
|
.byte 0x00,0xd4,0x03,0x00
|
|
.byte 0x00,0xc4,0x04,0x00
|
|
.byte 0x00,0x34,0x05,0x00
|
|
.byte 0x00,0x54,0x06,0x00
|
|
.byte 0x00,0x74,0x08,0x00
|
|
.byte 0x00,0x64,0x09,0x00
|
|
.byte 0x00,0x62
|
|
.byte 0x00,0x00,0x00,0x00,0x00,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
.LSEH_info_mul_by_3_mod_384_epilogue:
|
|
.byte 1,0,4,0
|
|
.byte 0x00,0x74,0x01,0x00
|
|
.byte 0x00,0x64,0x02,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
|
|
.LSEH_info_mul_by_8_mod_384_prologue:
|
|
.byte 1,0,5,0x0b
|
|
.byte 0,0x74,1,0
|
|
.byte 0,0x64,2,0
|
|
.byte 0,0xb3
|
|
.byte 0,0
|
|
.long 0,0
|
|
.LSEH_info_mul_by_8_mod_384_body:
|
|
.byte 1,0,17,0
|
|
.byte 0x00,0xf4,0x01,0x00
|
|
.byte 0x00,0xe4,0x02,0x00
|
|
.byte 0x00,0xd4,0x03,0x00
|
|
.byte 0x00,0xc4,0x04,0x00
|
|
.byte 0x00,0x34,0x05,0x00
|
|
.byte 0x00,0x54,0x06,0x00
|
|
.byte 0x00,0x74,0x08,0x00
|
|
.byte 0x00,0x64,0x09,0x00
|
|
.byte 0x00,0x62
|
|
.byte 0x00,0x00,0x00,0x00,0x00,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
.LSEH_info_mul_by_8_mod_384_epilogue:
|
|
.byte 1,0,4,0
|
|
.byte 0x00,0x74,0x01,0x00
|
|
.byte 0x00,0x64,0x02,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
|
|
.LSEH_info_mul_by_3_mod_384x_prologue:
|
|
.byte 1,0,5,0x0b
|
|
.byte 0,0x74,1,0
|
|
.byte 0,0x64,2,0
|
|
.byte 0,0xb3
|
|
.byte 0,0
|
|
.long 0,0
|
|
.LSEH_info_mul_by_3_mod_384x_body:
|
|
.byte 1,0,17,0
|
|
.byte 0x00,0xf4,0x01,0x00
|
|
.byte 0x00,0xe4,0x02,0x00
|
|
.byte 0x00,0xd4,0x03,0x00
|
|
.byte 0x00,0xc4,0x04,0x00
|
|
.byte 0x00,0x34,0x05,0x00
|
|
.byte 0x00,0x54,0x06,0x00
|
|
.byte 0x00,0x74,0x08,0x00
|
|
.byte 0x00,0x64,0x09,0x00
|
|
.byte 0x00,0x62
|
|
.byte 0x00,0x00,0x00,0x00,0x00,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
.LSEH_info_mul_by_3_mod_384x_epilogue:
|
|
.byte 1,0,4,0
|
|
.byte 0x00,0x74,0x01,0x00
|
|
.byte 0x00,0x64,0x02,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
|
|
.LSEH_info_mul_by_8_mod_384x_prologue:
|
|
.byte 1,0,5,0x0b
|
|
.byte 0,0x74,1,0
|
|
.byte 0,0x64,2,0
|
|
.byte 0,0xb3
|
|
.byte 0,0
|
|
.long 0,0
|
|
.LSEH_info_mul_by_8_mod_384x_body:
|
|
.byte 1,0,17,0
|
|
.byte 0x00,0xf4,0x01,0x00
|
|
.byte 0x00,0xe4,0x02,0x00
|
|
.byte 0x00,0xd4,0x03,0x00
|
|
.byte 0x00,0xc4,0x04,0x00
|
|
.byte 0x00,0x34,0x05,0x00
|
|
.byte 0x00,0x54,0x06,0x00
|
|
.byte 0x00,0x74,0x08,0x00
|
|
.byte 0x00,0x64,0x09,0x00
|
|
.byte 0x00,0x62
|
|
.byte 0x00,0x00,0x00,0x00,0x00,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
.LSEH_info_mul_by_8_mod_384x_epilogue:
|
|
.byte 1,0,4,0
|
|
.byte 0x00,0x74,0x01,0x00
|
|
.byte 0x00,0x64,0x02,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
|
|
.LSEH_info_cneg_mod_384_prologue:
|
|
.byte 1,0,5,0x0b
|
|
.byte 0,0x74,1,0
|
|
.byte 0,0x64,2,0
|
|
.byte 0,0xb3
|
|
.byte 0,0
|
|
.long 0,0
|
|
.LSEH_info_cneg_mod_384_body:
|
|
.byte 1,0,17,0
|
|
.byte 0x00,0xf4,0x01,0x00
|
|
.byte 0x00,0xe4,0x02,0x00
|
|
.byte 0x00,0xd4,0x03,0x00
|
|
.byte 0x00,0xc4,0x04,0x00
|
|
.byte 0x00,0x34,0x05,0x00
|
|
.byte 0x00,0x54,0x06,0x00
|
|
.byte 0x00,0x74,0x08,0x00
|
|
.byte 0x00,0x64,0x09,0x00
|
|
.byte 0x00,0x62
|
|
.byte 0x00,0x00,0x00,0x00,0x00,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
.LSEH_info_cneg_mod_384_epilogue:
|
|
.byte 1,0,4,0
|
|
.byte 0x00,0x74,0x01,0x00
|
|
.byte 0x00,0x64,0x02,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
|
|
.LSEH_info_sub_mod_384_prologue:
|
|
.byte 1,0,5,0x0b
|
|
.byte 0,0x74,1,0
|
|
.byte 0,0x64,2,0
|
|
.byte 0,0xb3
|
|
.byte 0,0
|
|
.long 0,0
|
|
.LSEH_info_sub_mod_384_body:
|
|
.byte 1,0,17,0
|
|
.byte 0x00,0xf4,0x01,0x00
|
|
.byte 0x00,0xe4,0x02,0x00
|
|
.byte 0x00,0xd4,0x03,0x00
|
|
.byte 0x00,0xc4,0x04,0x00
|
|
.byte 0x00,0x34,0x05,0x00
|
|
.byte 0x00,0x54,0x06,0x00
|
|
.byte 0x00,0x74,0x08,0x00
|
|
.byte 0x00,0x64,0x09,0x00
|
|
.byte 0x00,0x62
|
|
.byte 0x00,0x00,0x00,0x00,0x00,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
.LSEH_info_sub_mod_384_epilogue:
|
|
.byte 1,0,4,0
|
|
.byte 0x00,0x74,0x01,0x00
|
|
.byte 0x00,0x64,0x02,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
|
|
.LSEH_info_sub_mod_384x_prologue:
|
|
.byte 1,0,5,0x0b
|
|
.byte 0,0x74,1,0
|
|
.byte 0,0x64,2,0
|
|
.byte 0,0xb3
|
|
.byte 0,0
|
|
.long 0,0
|
|
.LSEH_info_sub_mod_384x_body:
|
|
.byte 1,0,17,0
|
|
.byte 0x00,0xf4,0x03,0x00
|
|
.byte 0x00,0xe4,0x04,0x00
|
|
.byte 0x00,0xd4,0x05,0x00
|
|
.byte 0x00,0xc4,0x06,0x00
|
|
.byte 0x00,0x34,0x07,0x00
|
|
.byte 0x00,0x54,0x08,0x00
|
|
.byte 0x00,0x74,0x0a,0x00
|
|
.byte 0x00,0x64,0x0b,0x00
|
|
.byte 0x00,0x82
|
|
.byte 0x00,0x00,0x00,0x00,0x00,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
.LSEH_info_sub_mod_384x_epilogue:
|
|
.byte 1,0,4,0
|
|
.byte 0x00,0x74,0x01,0x00
|
|
.byte 0x00,0x64,0x02,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
|
|
.LSEH_info_mul_by_1_plus_i_mod_384x_prologue:
|
|
.byte 1,0,5,0x0b
|
|
.byte 0,0x74,1,0
|
|
.byte 0,0x64,2,0
|
|
.byte 0,0xb3
|
|
.byte 0,0
|
|
.long 0,0
|
|
.LSEH_info_mul_by_1_plus_i_mod_384x_body:
|
|
.byte 1,0,17,0
|
|
.byte 0x00,0xf4,0x07,0x00
|
|
.byte 0x00,0xe4,0x08,0x00
|
|
.byte 0x00,0xd4,0x09,0x00
|
|
.byte 0x00,0xc4,0x0a,0x00
|
|
.byte 0x00,0x34,0x0b,0x00
|
|
.byte 0x00,0x54,0x0c,0x00
|
|
.byte 0x00,0x74,0x0e,0x00
|
|
.byte 0x00,0x64,0x0f,0x00
|
|
.byte 0x00,0xc2
|
|
.byte 0x00,0x00,0x00,0x00,0x00,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
.LSEH_info_mul_by_1_plus_i_mod_384x_epilogue:
|
|
.byte 1,0,4,0
|
|
.byte 0x00,0x74,0x01,0x00
|
|
.byte 0x00,0x64,0x02,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
|
|
.LSEH_info_sgn0_pty_mod_384_prologue:
|
|
.byte 1,0,5,0x0b
|
|
.byte 0,0x74,1,0
|
|
.byte 0,0x64,2,0
|
|
.byte 0,0xb3
|
|
.byte 0,0
|
|
.long 0,0
|
|
.LSEH_info_sgn0_pty_mod_384_body:
|
|
.byte 1,0,4,0
|
|
.byte 0x00,0x74,0x01,0x00
|
|
.byte 0x00,0x64,0x02,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
.LSEH_info_sgn0_pty_mod_384_epilogue:
|
|
.byte 1,0,4,0
|
|
.byte 0x00,0x74,0x01,0x00
|
|
.byte 0x00,0x64,0x02,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
|
|
.LSEH_info_sgn0_pty_mod_384x_prologue:
|
|
.byte 1,0,5,0x0b
|
|
.byte 0,0x74,1,0
|
|
.byte 0,0x64,2,0
|
|
.byte 0,0xb3
|
|
.byte 0,0
|
|
.long 0,0
|
|
.LSEH_info_sgn0_pty_mod_384x_body:
|
|
.byte 1,0,9,0
|
|
.byte 0x00,0x34,0x01,0x00
|
|
.byte 0x00,0x54,0x02,0x00
|
|
.byte 0x00,0x74,0x04,0x00
|
|
.byte 0x00,0x64,0x05,0x00
|
|
.byte 0x00,0x22
|
|
.byte 0x00,0x00,0x00,0x00,0x00,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
.LSEH_info_sgn0_pty_mod_384x_epilogue:
|
|
.byte 1,0,4,0
|
|
.byte 0x00,0x74,0x01,0x00
|
|
.byte 0x00,0x64,0x02,0x00
|
|
.byte 0x00,0x00,0x00,0x00
|
|
|