OPTION	DOTNAME
.text$	SEGMENT ALIGN(256) 'CODE'

PUBLIC	add_mod_384x384


ALIGN	32
add_mod_384x384	PROC PUBLIC
	DB	243,15,30,250
	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
	mov	QWORD PTR[16+rsp],rsi
	mov	r11,rsp
$L$SEH_begin_add_mod_384x384::


	push	rbp

	mov	rdi,rcx
	mov	rsi,rdx
	mov	rdx,r8
	mov	rcx,r9
	push	rbx

	push	r12

	push	r13

	push	r14

	push	r15

	sub	rsp,8

$L$SEH_body_add_mod_384x384::


ifdef	__SGX_LVI_HARDENING__
	lfence
endif
	mov	r8,QWORD PTR[rsi]
	mov	r9,QWORD PTR[8+rsi]
	mov	r10,QWORD PTR[16+rsi]
	mov	r11,QWORD PTR[24+rsi]
	mov	r12,QWORD PTR[32+rsi]
	mov	r13,QWORD PTR[40+rsi]
	mov	r14,QWORD PTR[48+rsi]

	add	r8,QWORD PTR[rdx]
	mov	r15,QWORD PTR[56+rsi]
	adc	r9,QWORD PTR[8+rdx]
	mov	rax,QWORD PTR[64+rsi]
	adc	r10,QWORD PTR[16+rdx]
	mov	rbx,QWORD PTR[72+rsi]
	adc	r11,QWORD PTR[24+rdx]
	mov	rbp,QWORD PTR[80+rsi]
	adc	r12,QWORD PTR[32+rdx]
	mov	rsi,QWORD PTR[88+rsi]
	adc	r13,QWORD PTR[40+rdx]
	mov	QWORD PTR[rdi],r8
	adc	r14,QWORD PTR[48+rdx]
	mov	QWORD PTR[8+rdi],r9
	adc	r15,QWORD PTR[56+rdx]
	mov	QWORD PTR[16+rdi],r10
	adc	rax,QWORD PTR[64+rdx]
	mov	QWORD PTR[32+rdi],r12
	mov	r8,r14
	adc	rbx,QWORD PTR[72+rdx]
	mov	QWORD PTR[24+rdi],r11
	mov	r9,r15
	adc	rbp,QWORD PTR[80+rdx]
	mov	QWORD PTR[40+rdi],r13
	mov	r10,rax
	adc	rsi,QWORD PTR[88+rdx]
	mov	r11,rbx
	sbb	rdx,rdx

	sub	r14,QWORD PTR[rcx]
	sbb	r15,QWORD PTR[8+rcx]
	mov	r12,rbp
	sbb	rax,QWORD PTR[16+rcx]
	sbb	rbx,QWORD PTR[24+rcx]
	sbb	rbp,QWORD PTR[32+rcx]
	mov	r13,rsi
	sbb	rsi,QWORD PTR[40+rcx]
	sbb	rdx,0

	cmovc	r14,r8
	cmovc	r15,r9
	cmovc	rax,r10
	mov	QWORD PTR[48+rdi],r14
	cmovc	rbx,r11
	mov	QWORD PTR[56+rdi],r15
	cmovc	rbp,r12
	mov	QWORD PTR[64+rdi],rax
	cmovc	rsi,r13
	mov	QWORD PTR[72+rdi],rbx
	mov	QWORD PTR[80+rdi],rbp
	mov	QWORD PTR[88+rdi],rsi

	mov	r15,QWORD PTR[8+rsp]

	mov	r14,QWORD PTR[16+rsp]

	mov	r13,QWORD PTR[24+rsp]

	mov	r12,QWORD PTR[32+rsp]

	mov	rbx,QWORD PTR[40+rsp]

	mov	rbp,QWORD PTR[48+rsp]

	lea	rsp,QWORD PTR[56+rsp]

$L$SEH_epilogue_add_mod_384x384::
	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
	mov	rsi,QWORD PTR[16+rsp]

	
ifdef	__SGX_LVI_HARDENING__
	pop	rdx
	lfence
	jmp	rdx
	ud2
else
	DB	0F3h,0C3h
endif

$L$SEH_end_add_mod_384x384::
add_mod_384x384	ENDP

PUBLIC	sub_mod_384x384


ALIGN	32
sub_mod_384x384	PROC PUBLIC
	DB	243,15,30,250
	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
	mov	QWORD PTR[16+rsp],rsi
	mov	r11,rsp
$L$SEH_begin_sub_mod_384x384::


	push	rbp

	mov	rdi,rcx
	mov	rsi,rdx
	mov	rdx,r8
	mov	rcx,r9
	push	rbx

	push	r12

	push	r13

	push	r14

	push	r15

	sub	rsp,8

$L$SEH_body_sub_mod_384x384::


ifdef	__SGX_LVI_HARDENING__
	lfence
endif
	mov	r8,QWORD PTR[rsi]
	mov	r9,QWORD PTR[8+rsi]
	mov	r10,QWORD PTR[16+rsi]
	mov	r11,QWORD PTR[24+rsi]
	mov	r12,QWORD PTR[32+rsi]
	mov	r13,QWORD PTR[40+rsi]
	mov	r14,QWORD PTR[48+rsi]

	sub	r8,QWORD PTR[rdx]
	mov	r15,QWORD PTR[56+rsi]
	sbb	r9,QWORD PTR[8+rdx]
	mov	rax,QWORD PTR[64+rsi]
	sbb	r10,QWORD PTR[16+rdx]
	mov	rbx,QWORD PTR[72+rsi]
	sbb	r11,QWORD PTR[24+rdx]
	mov	rbp,QWORD PTR[80+rsi]
	sbb	r12,QWORD PTR[32+rdx]
	mov	rsi,QWORD PTR[88+rsi]
	sbb	r13,QWORD PTR[40+rdx]
	mov	QWORD PTR[rdi],r8
	sbb	r14,QWORD PTR[48+rdx]
	mov	r8,QWORD PTR[rcx]
	mov	QWORD PTR[8+rdi],r9
	sbb	r15,QWORD PTR[56+rdx]
	mov	r9,QWORD PTR[8+rcx]
	mov	QWORD PTR[16+rdi],r10
	sbb	rax,QWORD PTR[64+rdx]
	mov	r10,QWORD PTR[16+rcx]
	mov	QWORD PTR[24+rdi],r11
	sbb	rbx,QWORD PTR[72+rdx]
	mov	r11,QWORD PTR[24+rcx]
	mov	QWORD PTR[32+rdi],r12
	sbb	rbp,QWORD PTR[80+rdx]
	mov	r12,QWORD PTR[32+rcx]
	mov	QWORD PTR[40+rdi],r13
	sbb	rsi,QWORD PTR[88+rdx]
	mov	r13,QWORD PTR[40+rcx]
	sbb	rdx,rdx

	and	r8,rdx
	and	r9,rdx
	and	r10,rdx
	and	r11,rdx
	and	r12,rdx
	and	r13,rdx

	add	r14,r8
	adc	r15,r9
	mov	QWORD PTR[48+rdi],r14
	adc	rax,r10
	mov	QWORD PTR[56+rdi],r15
	adc	rbx,r11
	mov	QWORD PTR[64+rdi],rax
	adc	rbp,r12
	mov	QWORD PTR[72+rdi],rbx
	adc	rsi,r13
	mov	QWORD PTR[80+rdi],rbp
	mov	QWORD PTR[88+rdi],rsi

	mov	r15,QWORD PTR[8+rsp]

	mov	r14,QWORD PTR[16+rsp]

	mov	r13,QWORD PTR[24+rsp]

	mov	r12,QWORD PTR[32+rsp]

	mov	rbx,QWORD PTR[40+rsp]

	mov	rbp,QWORD PTR[48+rsp]

	lea	rsp,QWORD PTR[56+rsp]

$L$SEH_epilogue_sub_mod_384x384::
	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
	mov	rsi,QWORD PTR[16+rsp]

	
ifdef	__SGX_LVI_HARDENING__
	pop	rdx
	lfence
	jmp	rdx
	ud2
else
	DB	0F3h,0C3h
endif

$L$SEH_end_sub_mod_384x384::
sub_mod_384x384	ENDP
.text$	ENDS
.pdata	SEGMENT READONLY ALIGN(4)
ALIGN	4
	DD	imagerel $L$SEH_begin_add_mod_384x384
	DD	imagerel $L$SEH_body_add_mod_384x384
	DD	imagerel $L$SEH_info_add_mod_384x384_prologue

	DD	imagerel $L$SEH_body_add_mod_384x384
	DD	imagerel $L$SEH_epilogue_add_mod_384x384
	DD	imagerel $L$SEH_info_add_mod_384x384_body

	DD	imagerel $L$SEH_epilogue_add_mod_384x384
	DD	imagerel $L$SEH_end_add_mod_384x384
	DD	imagerel $L$SEH_info_add_mod_384x384_epilogue

	DD	imagerel $L$SEH_begin_sub_mod_384x384
	DD	imagerel $L$SEH_body_sub_mod_384x384
	DD	imagerel $L$SEH_info_sub_mod_384x384_prologue

	DD	imagerel $L$SEH_body_sub_mod_384x384
	DD	imagerel $L$SEH_epilogue_sub_mod_384x384
	DD	imagerel $L$SEH_info_sub_mod_384x384_body

	DD	imagerel $L$SEH_epilogue_sub_mod_384x384
	DD	imagerel $L$SEH_end_sub_mod_384x384
	DD	imagerel $L$SEH_info_sub_mod_384x384_epilogue

.pdata	ENDS
.xdata	SEGMENT READONLY ALIGN(8)
ALIGN	8
$L$SEH_info_add_mod_384x384_prologue::
DB	1,0,5,00bh
DB	0,074h,1,0
DB	0,064h,2,0
DB	0,0b3h
DB	0,0
	DD	0,0
$L$SEH_info_add_mod_384x384_body::
DB	1,0,17,0
DB	000h,0f4h,001h,000h
DB	000h,0e4h,002h,000h
DB	000h,0d4h,003h,000h
DB	000h,0c4h,004h,000h
DB	000h,034h,005h,000h
DB	000h,054h,006h,000h
DB	000h,074h,008h,000h
DB	000h,064h,009h,000h
DB	000h,062h
DB	000h,000h,000h,000h,000h,000h
DB	000h,000h,000h,000h
$L$SEH_info_add_mod_384x384_epilogue::
DB	1,0,4,0
DB	000h,074h,001h,000h
DB	000h,064h,002h,000h
DB	000h,000h,000h,000h

$L$SEH_info_sub_mod_384x384_prologue::
DB	1,0,5,00bh
DB	0,074h,1,0
DB	0,064h,2,0
DB	0,0b3h
DB	0,0
	DD	0,0
$L$SEH_info_sub_mod_384x384_body::
DB	1,0,17,0
DB	000h,0f4h,001h,000h
DB	000h,0e4h,002h,000h
DB	000h,0d4h,003h,000h
DB	000h,0c4h,004h,000h
DB	000h,034h,005h,000h
DB	000h,054h,006h,000h
DB	000h,074h,008h,000h
DB	000h,064h,009h,000h
DB	000h,062h
DB	000h,000h,000h,000h,000h,000h
DB	000h,000h,000h,000h
$L$SEH_info_sub_mod_384x384_epilogue::
DB	1,0,4,0
DB	000h,074h,001h,000h
DB	000h,064h,002h,000h
DB	000h,000h,000h,000h


.xdata	ENDS
END
