1116680a4aac90f2aa7413d9095a592090648e557Ben MurdochOPTION	DOTNAME
25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles).text$	SEGMENT ALIGN(256) 'CODE'
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
5116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
6116680a4aac90f2aa7413d9095a592090648e557Ben MurdochMULADD_128x512	PROC PRIVATE
7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[rsi]
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,rax
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[rcx],r8
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[8+rsi]
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rax
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rbx
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[16+rsi]
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rax
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rbx
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[24+rsi]
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rax
33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rbx
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[32+rsi]
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rax
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rbx
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[40+rsi]
47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rax
49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rbx
51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[48+rsi]
55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rax
57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rbx
59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[56+rsi]
63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rax
65116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rbx
67116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
68116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r8,rdx
69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,QWORD PTR[8+rdi]
70116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[rsi]
71116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
72116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rax
73116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[8+rcx],r9
75116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
76116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
77116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[8+rsi]
78116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
79116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rax
80116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
81116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rbx
82116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
83116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
84116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
85116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[16+rsi]
86116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
87116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rax
88116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
89116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rbx
90116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
91116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
92116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
93116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[24+rsi]
94116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
95116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rax
96116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
97116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rbx
98116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
99116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
100116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
101116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[32+rsi]
102116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
103116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rax
104116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
105116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rbx
106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
107116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
108116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
109116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[40+rsi]
110116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
111116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rax
112116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
113116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rbx
114116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
115116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
116116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
117116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[48+rsi]
118116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
119116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rax
120116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
121116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rbx
122116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
123116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
124116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
125116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[56+rsi]
126116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
127116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,rax
128116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
129116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,rbx
130116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
131116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r9,rdx
132116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
133116680a4aac90f2aa7413d9095a592090648e557Ben MurdochMULADD_128x512	ENDP
134116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
135116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
136116680a4aac90f2aa7413d9095a592090648e557Ben Murdochmont_reduce	PROC PRIVATE
137116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rdi,QWORD PTR[192+rsp]
138116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,QWORD PTR[32+rsp]
139116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	rsi,576
140116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rcx,QWORD PTR[520+rsp]
141116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
142116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,QWORD PTR[96+rcx]
143116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[rsi]
144116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
145116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r8,QWORD PTR[rcx]
146116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,rax
147116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
148116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[rdi],r8
149116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
150116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
151116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[8+rsi]
152116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
153116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r9,QWORD PTR[8+rcx]
154116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rax
155116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
156116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rbx
157116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
158116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
159116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
160116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[16+rsi]
161116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
162116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,QWORD PTR[16+rcx]
163116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rax
164116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
165116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rbx
166116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
167116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
168116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
169116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[24+rsi]
170116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
171116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r11,QWORD PTR[24+rcx]
172116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rax
173116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
174116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rbx
175116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
176116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
177116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
178116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[32+rsi]
179116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
180116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r12,QWORD PTR[32+rcx]
181116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rax
182116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
183116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rbx
184116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
185116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
186116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
187116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[40+rsi]
188116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
189116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r13,QWORD PTR[40+rcx]
190116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rax
191116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
192116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rbx
193116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
194116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
195116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
196116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[48+rsi]
197116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
198116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r14,QWORD PTR[48+rcx]
199116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rax
200116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
201116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rbx
202116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
203116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
204116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
205116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[56+rsi]
206116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
207116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r15,QWORD PTR[56+rcx]
208116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rax
209116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
210116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rbx
211116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
212116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r8,rdx
213116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,QWORD PTR[104+rcx]
214116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[rsi]
215116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
216116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rax
217116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
218116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[8+rdi],r9
219116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
220116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
221116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[8+rsi]
222116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
223116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rax
224116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
225116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rbx
226116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
227116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
228116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
229116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[16+rsi]
230116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
231116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rax
232116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
233116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rbx
234116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
235116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
236116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
237116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[24+rsi]
238116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
239116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rax
240116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
241116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rbx
242116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
243116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
244116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
245116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[32+rsi]
246116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
247116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rax
248116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
249116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rbx
250116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
251116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
252116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
253116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[40+rsi]
254116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
255116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rax
256116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
257116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rbx
258116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
259116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
260116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
261116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[48+rsi]
262116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
263116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rax
264116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
265116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rbx
266116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
267116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
268116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
269116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[56+rsi]
270116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
271116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,rax
272116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
273116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,rbx
274116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
275116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r9,rdx
276116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,QWORD PTR[112+rcx]
277116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[rsi]
278116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
279116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rax
280116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
281116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[16+rdi],r10
282116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
283116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
284116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[8+rsi]
285116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
286116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rax
287116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
288116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rbx
289116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
290116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
291116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
292116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[16+rsi]
293116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
294116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rax
295116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
296116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rbx
297116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
298116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
299116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
300116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[24+rsi]
301116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
302116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rax
303116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
304116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rbx
305116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
306116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
307116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
308116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[32+rsi]
309116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
310116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rax
311116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
312116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rbx
313116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
314116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
315116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
316116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[40+rsi]
317116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
318116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rax
319116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
320116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rbx
321116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
322116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
323116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
324116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[48+rsi]
325116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
326116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,rax
327116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
328116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,rbx
329116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
330116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
331116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
332116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[56+rsi]
333116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
334116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rax
335116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
336116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rbx
337116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
338116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,rdx
339116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,QWORD PTR[120+rcx]
340116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[rsi]
341116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
342116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rax
343116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
344116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[24+rdi],r11
345116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
346116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
347116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[8+rsi]
348116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
349116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rax
350116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
351116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rbx
352116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
353116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
354116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
355116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[16+rsi]
356116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
357116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rax
358116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
359116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rbx
360116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
361116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
362116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
363116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[24+rsi]
364116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
365116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rax
366116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
367116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rbx
368116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
369116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
370116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
371116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[32+rsi]
372116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
373116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rax
374116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
375116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rbx
376116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
377116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
378116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
379116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[40+rsi]
380116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
381116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,rax
382116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
383116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,rbx
384116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
385116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
386116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
387116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[48+rsi]
388116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
389116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rax
390116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
391116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rbx
392116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
393116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
394116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
395116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[56+rsi]
396116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
397116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rax
398116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
399116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rbx
400116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
401116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r11,rdx
402116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	xor	rax,rax
403116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
404116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,QWORD PTR[64+rcx]
405116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r9,QWORD PTR[72+rcx]
406116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r10,QWORD PTR[80+rcx]
407116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r11,QWORD PTR[88+rcx]
408116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rax,0
409116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
410116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
411116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
412116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
413116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[64+rdi],r8
414116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[72+rdi],r9
415116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,r10
416116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[88+rdi],r11
417116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
418116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[384+rsp],rax
419116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
420116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r8,QWORD PTR[rdi]
421116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r9,QWORD PTR[8+rdi]
422116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,QWORD PTR[16+rdi]
423116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r11,QWORD PTR[24+rdi]
424116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
425116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
426116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
427116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
428116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
429116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
430116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
431116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
432116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	rdi,8*10
433116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
434116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	rsi,64
435116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rcx,QWORD PTR[296+rsp]
436116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
437116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	MULADD_128x512
438116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
439116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[384+rsp]
440116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
441116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
442116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,QWORD PTR[((-16))+rdi]
443116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r9,QWORD PTR[((-8))+rdi]
444116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[64+rcx],r8
445116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[72+rcx],r9
446116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
447116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rax,rax
448116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[384+rsp],rax
449116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
450116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rdi,QWORD PTR[192+rsp]
451116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	rsi,64
452116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
453116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
454116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
455116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
456116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
457116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r8,QWORD PTR[rsi]
458116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,QWORD PTR[8+rsi]
459116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
460116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[rcx]
461116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	r8
462116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,rax
463116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r9,rdx
464116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
465116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[8+rcx]
466116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	r8
467116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rax
468116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
469116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[rcx]
470116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
471116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rax
472116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
473116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[8+rdi],r9
474116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
475116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
476116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rsi,192
477116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
478116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r8,QWORD PTR[rcx]
479116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r9,QWORD PTR[8+rcx]
480116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
481116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	MULADD_128x512
482116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
483116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
484116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
485116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
486116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[rsi]
487116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,QWORD PTR[8+rsi]
488116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdi,QWORD PTR[16+rsi]
489116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdx,QWORD PTR[24+rsi]
490116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
491116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
492116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,QWORD PTR[384+rsp]
493116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
494116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,QWORD PTR[64+rcx]
495116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r9,QWORD PTR[72+rcx]
496116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
497116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
498116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rbp,rbp
499116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
500116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
501116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
502116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shl	rbp,3
503116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rcx,QWORD PTR[32+rsp]
504116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	rbp,rcx
505116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
506116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
507116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	xor	rsi,rsi
508116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
509116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,QWORD PTR[rbp]
510116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r11,QWORD PTR[64+rbp]
511116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r12,QWORD PTR[128+rbp]
512116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r13,QWORD PTR[192+rbp]
513116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r14,QWORD PTR[256+rbp]
514116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r15,QWORD PTR[320+rbp]
515116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r8,QWORD PTR[384+rbp]
516116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r9,QWORD PTR[448+rbp]
517116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
518116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
519116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
520116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sbb	rsi,0
521116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
522116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
523116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	and	rax,rsi
524116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	and	rbx,rsi
525116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	and	rdi,rsi
526116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	and	rdx,rsi
527116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
528116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,1
529116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	r10,rax
530116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sbb	r11,rbx
531116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sbb	r12,rdi
532116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sbb	r13,rdx
533116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
534116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
535116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
536116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
537116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sbb	rbp,0
538116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
539116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
540116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
541116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	rcx,512
542116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[32+rcx]
543116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,QWORD PTR[40+rcx]
544116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdi,QWORD PTR[48+rcx]
545116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdx,QWORD PTR[56+rcx]
546116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
547116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
548116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
549116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	and	rax,rsi
550116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	and	rbx,rsi
551116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	and	rdi,rsi
552116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	and	rdx,rsi
553116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
554116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
555116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
556116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rbp,1
557116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
558116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sbb	r14,rax
559116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sbb	r15,rbx
560116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sbb	r8,rdi
561116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sbb	r9,rdx
562116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
563116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
564116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
565116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,QWORD PTR[144+rsp]
566116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[rsi],r10
567116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[8+rsi],r11
568116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[16+rsi],r12
569116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[24+rsi],r13
570116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[32+rsi],r14
571116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[40+rsi],r15
572116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[48+rsi],r8
573116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[56+rsi],r9
574116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
575116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
576116680a4aac90f2aa7413d9095a592090648e557Ben Murdochmont_reduce	ENDP
577116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
578116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
579116680a4aac90f2aa7413d9095a592090648e557Ben Murdochmont_mul_a3b	PROC PRIVATE
580116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
581116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
582116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
583116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
584116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,QWORD PTR[rdi]
585116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
586116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r10
587116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
588116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[520+rsp],rax
589116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,rdx
590116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r11
591116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
592116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rax
593116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
594116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r11,rdx
595116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r12
596116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
597116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rax
598116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
599116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r12,rdx
600116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r13
601116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
602116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rax
603116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
604116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r13,rdx
605116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r14
606116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
607116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rax
608116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
609116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r14,rdx
610116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r15
611116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
612116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rax
613116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
614116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r15,rdx
615116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r8
616116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
617116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rax
618116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
619116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r8,rdx
620116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r9
621116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
622116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,rax
623116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
624116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r9,rdx
625116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,QWORD PTR[8+rdi]
626116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[rsi]
627116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
628116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rax
629116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
630116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[528+rsp],r10
631116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
632116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
633116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[8+rsi]
634116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
635116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rax
636116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
637116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rbx
638116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
639116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
640116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
641116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[16+rsi]
642116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
643116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rax
644116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
645116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rbx
646116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
647116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
648116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
649116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[24+rsi]
650116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
651116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rax
652116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
653116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rbx
654116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
655116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
656116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
657116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[32+rsi]
658116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
659116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rax
660116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
661116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rbx
662116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
663116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
664116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
665116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[40+rsi]
666116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
667116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rax
668116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
669116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rbx
670116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
671116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
672116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
673116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[48+rsi]
674116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
675116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,rax
676116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
677116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,rbx
678116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
679116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
680116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
681116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[56+rsi]
682116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
683116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rax
684116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
685116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rbx
686116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
687116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,rdx
688116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,QWORD PTR[16+rdi]
689116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[rsi]
690116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
691116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rax
692116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
693116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[536+rsp],r11
694116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
695116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
696116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[8+rsi]
697116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
698116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rax
699116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
700116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rbx
701116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
702116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
703116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
704116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[16+rsi]
705116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
706116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rax
707116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
708116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rbx
709116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
710116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
711116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
712116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[24+rsi]
713116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
714116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rax
715116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
716116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rbx
717116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
718116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
719116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
720116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[32+rsi]
721116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
722116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rax
723116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
724116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rbx
725116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
726116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
727116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
728116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[40+rsi]
729116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
730116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,rax
731116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
732116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,rbx
733116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
734116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
735116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
736116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[48+rsi]
737116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
738116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rax
739116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
740116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rbx
741116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
742116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
743116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
744116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[56+rsi]
745116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
746116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rax
747116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
748116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rbx
749116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
750116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r11,rdx
751116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,QWORD PTR[24+rdi]
752116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[rsi]
753116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
754116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rax
755116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
756116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[544+rsp],r12
757116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
758116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
759116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[8+rsi]
760116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
761116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rax
762116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
763116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rbx
764116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
765116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
766116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
767116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[16+rsi]
768116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
769116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rax
770116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
771116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rbx
772116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
773116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
774116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
775116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[24+rsi]
776116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
777116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rax
778116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
779116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rbx
780116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
781116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
782116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
783116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[32+rsi]
784116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
785116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,rax
786116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
787116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,rbx
788116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
789116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
790116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
791116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[40+rsi]
792116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
793116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rax
794116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
795116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rbx
796116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
797116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
798116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
799116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[48+rsi]
800116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
801116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rax
802116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
803116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rbx
804116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
805116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
806116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
807116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[56+rsi]
808116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
809116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rax
810116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
811116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rbx
812116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
813116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r12,rdx
814116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,QWORD PTR[32+rdi]
815116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[rsi]
816116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
817116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rax
818116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
819116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[552+rsp],r13
820116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
821116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
822116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[8+rsi]
823116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
824116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rax
825116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
826116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rbx
827116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
828116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
829116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
830116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[16+rsi]
831116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
832116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rax
833116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
834116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rbx
835116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
836116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
837116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
838116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[24+rsi]
839116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
840116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,rax
841116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
842116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,rbx
843116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
844116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
845116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
846116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[32+rsi]
847116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
848116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rax
849116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
850116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rbx
851116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
852116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
853116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
854116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[40+rsi]
855116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
856116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rax
857116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
858116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rbx
859116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
860116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
861116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
862116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[48+rsi]
863116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
864116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rax
865116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
866116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rbx
867116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
868116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
869116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
870116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[56+rsi]
871116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
872116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rax
873116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
874116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rbx
875116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
876116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r13,rdx
877116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,QWORD PTR[40+rdi]
878116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[rsi]
879116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
880116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rax
881116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
882116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[560+rsp],r14
883116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
884116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
885116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[8+rsi]
886116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
887116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rax
888116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
889116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rbx
890116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
891116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
892116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
893116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[16+rsi]
894116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
895116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,rax
896116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
897116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,rbx
898116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
899116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
900116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
901116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[24+rsi]
902116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
903116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rax
904116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
905116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rbx
906116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
907116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
908116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
909116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[32+rsi]
910116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
911116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rax
912116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
913116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rbx
914116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
915116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
916116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
917116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[40+rsi]
918116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
919116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rax
920116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
921116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rbx
922116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
923116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
924116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
925116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[48+rsi]
926116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
927116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rax
928116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
929116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rbx
930116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
931116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
932116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
933116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[56+rsi]
934116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
935116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rax
936116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
937116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rbx
938116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
939116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r14,rdx
940116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,QWORD PTR[48+rdi]
941116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[rsi]
942116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
943116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rax
944116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
945116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[568+rsp],r15
946116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
947116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
948116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[8+rsi]
949116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
950116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,rax
951116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
952116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,rbx
953116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
954116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
955116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
956116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[16+rsi]
957116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
958116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rax
959116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
960116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rbx
961116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
962116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
963116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
964116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[24+rsi]
965116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
966116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rax
967116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
968116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rbx
969116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
970116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
971116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
972116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[32+rsi]
973116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
974116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rax
975116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
976116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rbx
977116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
978116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
979116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
980116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[40+rsi]
981116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
982116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rax
983116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
984116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rbx
985116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
986116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
987116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
988116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[48+rsi]
989116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
990116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rax
991116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
992116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rbx
993116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
994116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
995116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
996116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[56+rsi]
997116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
998116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rax
999116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1000116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rbx
1001116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1002116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r15,rdx
1003116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,QWORD PTR[56+rdi]
1004116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[rsi]
1005116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
1006116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r8,rax
1007116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1008116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[576+rsp],r8
1009116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
1010116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1011116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[8+rsi]
1012116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
1013116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rax
1014116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1015116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r9,rbx
1016116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1017116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
1018116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1019116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[16+rsi]
1020116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
1021116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rax
1022116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1023116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rbx
1024116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1025116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
1026116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1027116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[24+rsi]
1028116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
1029116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rax
1030116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1031116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rbx
1032116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1033116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
1034116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1035116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[32+rsi]
1036116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
1037116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rax
1038116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1039116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rbx
1040116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1041116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
1042116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1043116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[40+rsi]
1044116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
1045116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rax
1046116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1047116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rbx
1048116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1049116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
1050116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1051116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[48+rsi]
1052116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
1053116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rax
1054116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1055116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rbx
1056116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1057116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
1058116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1059116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[56+rsi]
1060116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbp
1061116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rax
1062116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1063116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rbx
1064116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1065116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r8,rdx
1066116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[584+rsp],r9
1067116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[592+rsp],r10
1068116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[600+rsp],r11
1069116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[608+rsp],r12
1070116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[616+rsp],r13
1071116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[624+rsp],r14
1072116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[632+rsp],r15
1073116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[640+rsp],r8
1074116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1075116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1076116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1077116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1078116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1079116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	mont_reduce
1080116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1081116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1082116680a4aac90f2aa7413d9095a592090648e557Ben Murdochmont_mul_a3b	ENDP
1083116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1084116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
1085116680a4aac90f2aa7413d9095a592090648e557Ben Murdochsqr_reduce	PROC PRIVATE
1086116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rcx,QWORD PTR[16+rsp]
1087116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1088116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1089116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1090116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,r10
1091116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1092116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r11
1093116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1094116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[528+rsp],rax
1095116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,rdx
1096116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r12
1097116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1098116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rax
1099116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1100116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r11,rdx
1101116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r13
1102116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1103116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rax
1104116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1105116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r12,rdx
1106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r14
1107116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1108116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rax
1109116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1110116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r13,rdx
1111116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r15
1112116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1113116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rax
1114116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1115116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r14,rdx
1116116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r8
1117116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1118116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rax
1119116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1120116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r15,rdx
1121116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r9
1122116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1123116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rax
1124116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1125116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,rdx
1126116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1127116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[536+rsp],r10
1128116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1129116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1130116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1131116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1132116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1133116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,QWORD PTR[8+rcx]
1134116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1135116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[16+rcx]
1136116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1137116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rax
1138116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1139116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[544+rsp],r11
1140116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1141116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,rdx
1142116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[24+rcx]
1143116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1144116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rax
1145116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1146116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,r10
1147116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1148116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[552+rsp],r12
1149116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1150116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,rdx
1151116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[32+rcx]
1152116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1153116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rax
1154116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1155116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,r10
1156116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1157116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1158116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,rdx
1159116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[40+rcx]
1160116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1161116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rax
1162116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1163116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,r10
1164116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1165116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1166116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,rdx
1167116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r8
1168116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1169116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rax
1170116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1171116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,r10
1172116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1173116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1174116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,rdx
1175116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r9
1176116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1177116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	rsi,rax
1178116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1179116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	rsi,r10
1180116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1181116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1182116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r11,rdx
1183116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1184116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1185116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1186116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1187116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,QWORD PTR[16+rcx]
1188116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1189116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[24+rcx]
1190116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1191116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r13,rax
1192116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1193116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[560+rsp],r13
1194116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1195116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,rdx
1196116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[32+rcx]
1197116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1198116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rax
1199116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1200116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,r10
1201116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1202116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[568+rsp],r14
1203116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1204116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,rdx
1205116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[40+rcx]
1206116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1207116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rax
1208116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1209116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,r10
1210116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1211116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1212116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,rdx
1213116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r8
1214116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1215116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	rsi,rax
1216116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1217116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	rsi,r10
1218116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1219116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1220116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,rdx
1221116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r9
1222116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1223116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rax
1224116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1225116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,r10
1226116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1227116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1228116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r12,rdx
1229116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1230116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1231116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1232116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1233116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1234116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,QWORD PTR[24+rcx]
1235116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1236116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[32+rcx]
1237116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1238116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rax
1239116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1240116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[576+rsp],r15
1241116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1242116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,rdx
1243116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[40+rcx]
1244116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1245116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	rsi,rax
1246116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1247116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	rsi,r10
1248116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1249116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[584+rsp],rsi
1250116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1251116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,rdx
1252116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r8
1253116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1254116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rax
1255116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1256116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,r10
1257116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1258116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1259116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,rdx
1260116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r9
1261116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1262116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rax
1263116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1264116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,r10
1265116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1266116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1267116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r15,rdx
1268116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1269116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1270116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1271116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1272116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,QWORD PTR[32+rcx]
1273116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1274116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[40+rcx]
1275116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1276116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rax
1277116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1278116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[592+rsp],r11
1279116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1280116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,rdx
1281116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r8
1282116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1283116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rax
1284116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1285116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,r10
1286116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1287116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[600+rsp],r12
1288116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1289116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,rdx
1290116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r9
1291116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1292116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rax
1293116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1294116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,r10
1295116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1296116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1297116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r11,rdx
1298116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1299116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1300116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1301116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1302116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,QWORD PTR[40+rcx]
1303116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1304116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r8
1305116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1306116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r15,rax
1307116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1308116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[608+rsp],r15
1309116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1310116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,rdx
1311116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r9
1312116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1313116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,rax
1314116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1315116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r11,r10
1316116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1317116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[616+rsp],r11
1318116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1319116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r12,rdx
1320116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1321116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1322116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1323116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1324116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,r8
1325116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1326116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r9
1327116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rbx
1328116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rax
1329116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1330116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[624+rsp],r12
1331116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1332116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[632+rsp],rdx
1333116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1334116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1335116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,QWORD PTR[528+rsp]
1336116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r11,QWORD PTR[536+rsp]
1337116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r12,QWORD PTR[544+rsp]
1338116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r13,QWORD PTR[552+rsp]
1339116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r14,QWORD PTR[560+rsp]
1340116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r15,QWORD PTR[568+rsp]
1341116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1342116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[24+rcx]
1343116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rax
1344116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdi,rax
1345116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r8,rdx
1346116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1347116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,r10
1348116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r11,r11
1349116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r12,r12
1350116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r13,r13
1351116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r14,r14
1352116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r15,r15
1353116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r8,0
1354116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1355116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[rcx]
1356116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rax
1357116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[520+rsp],rax
1358116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
1359116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1360116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[8+rcx]
1361116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rax
1362116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1363116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rbx
1364116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r11,rax
1365116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1366116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1367116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
1368116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[528+rsp],r10
1369116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[536+rsp],r11
1370116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1371116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[16+rcx]
1372116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rax
1373116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1374116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rbx
1375116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r13,rax
1376116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1377116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1378116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
1379116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1380116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[544+rsp],r12
1381116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[552+rsp],r13
1382116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1383116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	xor	rbp,rbp
1384116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rbx
1385116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r15,rdi
1386116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rbp,0
1387116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1388116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[560+rsp],r14
1389116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[568+rsp],r15
1390116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1391116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1392116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1393116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1394116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,QWORD PTR[576+rsp]
1395116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r11,QWORD PTR[584+rsp]
1396116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r12,QWORD PTR[592+rsp]
1397116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r13,QWORD PTR[600+rsp]
1398116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r14,QWORD PTR[608+rsp]
1399116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r15,QWORD PTR[616+rsp]
1400116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdi,QWORD PTR[624+rsp]
1401116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,QWORD PTR[632+rsp]
1402116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1403116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,r9
1404116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rax
1405116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r9,rax
1406116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,rdx
1407116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1408116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,r10
1409116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r11,r11
1410116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r12,r12
1411116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r13,r13
1412116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r14,r14
1413116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r15,r15
1414116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdi,rdi
1415116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rsi,rsi
1416116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rbx,0
1417116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1418116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,rbp
1419116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1420116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[32+rcx]
1421116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rax
1422116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1423116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r10,r8
1424116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r11,rax
1425116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1426116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1427116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,rdx
1428116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1429116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[576+rsp],r10
1430116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[584+rsp],r11
1431116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1432116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[40+rcx]
1433116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rax
1434116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1435116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r12,rbp
1436116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r13,rax
1437116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1438116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1439116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,rdx
1440116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1441116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[592+rsp],r12
1442116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[600+rsp],r13
1443116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1444116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[48+rcx]
1445116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mul	rax
1446116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1447116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	r14,rbp
1448116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	r15,rax
1449116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rdx,0
1450116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1451116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[608+rsp],r14
1452116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[616+rsp],r15
1453116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1454116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	rdi,rdx
1455116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rsi,r9
1456116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	adc	rbx,0
1457116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1458116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[624+rsp],rdi
1459116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[632+rsp],rsi
1460116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[640+rsp],rbx
1461116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1462116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	mont_reduce
1463116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1464116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1465116680a4aac90f2aa7413d9095a592090648e557Ben Murdochsqr_reduce	ENDP
1466116680a4aac90f2aa7413d9095a592090648e557Ben MurdochPUBLIC	mod_exp_512
1467116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1468116680a4aac90f2aa7413d9095a592090648e557Ben Murdochmod_exp_512	PROC PUBLIC
1469116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
1470116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[16+rsp],rsi
1471116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,rsp
1472116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_begin_mod_exp_512::
1473116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdi,rcx
1474116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,rdx
1475116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdx,r8
1476116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rcx,r9
1477116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1478116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1479116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	rbp
1480116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	rbx
1481116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r12
1482116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r13
1483116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r14
1484116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r15
1485116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1486116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1487116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r8,rsp
1488116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rsp,2688
1489116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	and	rsp,-64
1490116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1491116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1492116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[rsp],r8
1493116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[8+rsp],rdi
1494116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[16+rsp],rsi
1495116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[24+rsp],rcx
1496116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$body::
1497116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1498116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1499116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1500116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm4
1501116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm0,XMMWORD PTR[rsi]
1502116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm1,XMMWORD PTR[16+rsi]
1503116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm2,XMMWORD PTR[32+rsi]
1504116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm3,XMMWORD PTR[48+rsi]
1505116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[512+rsp],xmm4
1506116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[528+rsp],xmm4
1507116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[608+rsp],xmm4
1508116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[624+rsp],xmm4
1509116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[544+rsp],xmm0
1510116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[560+rsp],xmm1
1511116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[576+rsp],xmm2
1512116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[592+rsp],xmm3
1513116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1514116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1515116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm0,XMMWORD PTR[rdx]
1516116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm1,XMMWORD PTR[16+rdx]
1517116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm2,XMMWORD PTR[32+rdx]
1518116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm3,XMMWORD PTR[48+rdx]
1519116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1520116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rbx,QWORD PTR[384+rsp]
1521116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[136+rsp],rbx
1522116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	mont_reduce
1523116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1524116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1525116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rcx,QWORD PTR[448+rsp]
1526116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	xor	rax,rax
1527116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[rcx],rax
1528116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[8+rcx],rax
1529116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[24+rcx],rax
1530116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[32+rcx],rax
1531116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[40+rcx],rax
1532116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[48+rcx],rax
1533116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[56+rcx],rax
1534116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[128+rsp],rax
1535116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[16+rcx],1
1536116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1537116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rbp,QWORD PTR[640+rsp]
1538116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,rcx
1539116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdi,rbp
1540116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,8
1541116680a4aac90f2aa7413d9095a592090648e557Ben Murdochloop_0::
1542116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,QWORD PTR[rcx]
1543116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	WORD PTR[rdi],bx
1544116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shr	rbx,16
1545116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	WORD PTR[64+rdi],bx
1546116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shr	rbx,16
1547116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	WORD PTR[128+rdi],bx
1548116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shr	rbx,16
1549116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	WORD PTR[192+rdi],bx
1550116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rcx,QWORD PTR[8+rcx]
1551116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rdi,QWORD PTR[256+rdi]
1552116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	dec	rax
1553116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jnz	loop_0
1554116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,31
1555116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[32+rsp],rax
1556116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[40+rsp],rbp
1557116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1558116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[136+rsp],rsi
1559116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,QWORD PTR[rsi]
1560116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r11,QWORD PTR[8+rsi]
1561116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r12,QWORD PTR[16+rsi]
1562116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r13,QWORD PTR[24+rsi]
1563116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r14,QWORD PTR[32+rsi]
1564116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r15,QWORD PTR[40+rsi]
1565116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r8,QWORD PTR[48+rsi]
1566116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r9,QWORD PTR[56+rsi]
1567116680a4aac90f2aa7413d9095a592090648e557Ben Murdochinit_loop::
1568116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rdi,QWORD PTR[384+rsp]
1569116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	mont_mul_a3b
1570116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsi,QWORD PTR[448+rsp]
1571116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,QWORD PTR[40+rsp]
1572116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	rbp,2
1573116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[40+rsp],rbp
1574116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rcx,rsi
1575116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,8
1576116680a4aac90f2aa7413d9095a592090648e557Ben Murdochloop_1::
1577116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,QWORD PTR[rcx]
1578116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	WORD PTR[rbp],bx
1579116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shr	rbx,16
1580116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	WORD PTR[64+rbp],bx
1581116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shr	rbx,16
1582116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	WORD PTR[128+rbp],bx
1583116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shr	rbx,16
1584116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	WORD PTR[192+rbp],bx
1585116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rcx,QWORD PTR[8+rcx]
1586116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rbp,QWORD PTR[256+rbp]
1587116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	dec	rax
1588116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jnz	loop_1
1589116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[32+rsp]
1590116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rax,1
1591116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[32+rsp],rax
1592116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jne	init_loop
1593116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1594116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1595116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1596116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[64+rsp],xmm0
1597116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[80+rsp],xmm1
1598116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[96+rsp],xmm2
1599116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[112+rsp],xmm3
1600116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1601116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1602116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1603116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1604116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1605116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	eax,DWORD PTR[126+rsp]
1606116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdx,rax
1607116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shr	rax,11
1608116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	and	edx,007FFh
1609116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	DWORD PTR[126+rsp],edx
1610116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsi,QWORD PTR[640+rax*2+rsp]
1611116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdx,QWORD PTR[8+rsp]
1612116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,4
1613116680a4aac90f2aa7413d9095a592090648e557Ben Murdochloop_2::
1614116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movzx	rbx,WORD PTR[192+rsi]
1615116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movzx	rax,WORD PTR[448+rsi]
1616116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shl	rbx,16
1617116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shl	rax,16
1618116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	bx,WORD PTR[128+rsi]
1619116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	ax,WORD PTR[384+rsi]
1620116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shl	rbx,16
1621116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shl	rax,16
1622116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	bx,WORD PTR[64+rsi]
1623116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	ax,WORD PTR[320+rsi]
1624116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shl	rbx,16
1625116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shl	rax,16
1626116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	bx,WORD PTR[rsi]
1627116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	ax,WORD PTR[256+rsi]
1628116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[rdx],rbx
1629116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[8+rdx],rax
1630116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsi,QWORD PTR[512+rsi]
1631116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rdx,QWORD PTR[16+rdx]
1632116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rbp,1
1633116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jnz	loop_2
1634116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[48+rsp],505
1635116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1636116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rcx,QWORD PTR[8+rsp]
1637116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[136+rsp],rcx
1638116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,QWORD PTR[rcx]
1639116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r11,QWORD PTR[8+rcx]
1640116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r12,QWORD PTR[16+rcx]
1641116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r13,QWORD PTR[24+rcx]
1642116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r14,QWORD PTR[32+rcx]
1643116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r15,QWORD PTR[40+rcx]
1644116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r8,QWORD PTR[48+rcx]
1645116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r9,QWORD PTR[56+rcx]
1646116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jmp	sqr_2
1647116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1648116680a4aac90f2aa7413d9095a592090648e557Ben Murdochmain_loop_a3b::
1649116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	sqr_reduce
1650116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	sqr_reduce
1651116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	sqr_reduce
1652116680a4aac90f2aa7413d9095a592090648e557Ben Murdochsqr_2::
1653116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	sqr_reduce
1654116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	sqr_reduce
1655116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1656116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1657116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1658116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rcx,QWORD PTR[48+rsp]
1659116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,rcx
1660116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shr	rax,4
1661116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	edx,DWORD PTR[64+rax*2+rsp]
1662116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	and	rcx,15
1663116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shr	rdx,cl
1664116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	and	rdx,01Fh
1665116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1666116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsi,QWORD PTR[640+rdx*2+rsp]
1667116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rdx,QWORD PTR[448+rsp]
1668116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdi,rdx
1669116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,4
1670116680a4aac90f2aa7413d9095a592090648e557Ben Murdochloop_3::
1671116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movzx	rbx,WORD PTR[192+rsi]
1672116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movzx	rax,WORD PTR[448+rsi]
1673116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shl	rbx,16
1674116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shl	rax,16
1675116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	bx,WORD PTR[128+rsi]
1676116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	ax,WORD PTR[384+rsi]
1677116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shl	rbx,16
1678116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shl	rax,16
1679116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	bx,WORD PTR[64+rsi]
1680116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	ax,WORD PTR[320+rsi]
1681116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shl	rbx,16
1682116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	shl	rax,16
1683116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	bx,WORD PTR[rsi]
1684116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	ax,WORD PTR[256+rsi]
1685116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[rdx],rbx
1686116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[8+rdx],rax
1687116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsi,QWORD PTR[512+rsi]
1688116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rdx,QWORD PTR[16+rdx]
1689116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rbp,1
1690116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jnz	loop_3
1691116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,QWORD PTR[8+rsp]
1692116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	mont_mul_a3b
1693116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1694116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1695116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1696116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rcx,QWORD PTR[48+rsp]
1697116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rcx,5
1698116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[48+rsp],rcx
1699116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jge	main_loop_a3b
1700116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1701116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1702116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1703116680a4aac90f2aa7413d9095a592090648e557Ben Murdochend_main_loop_a3b::
1704116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1705116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1706116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdx,QWORD PTR[8+rsp]
1707116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pxor	xmm4,xmm4
1708116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm0,XMMWORD PTR[rdx]
1709116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm1,XMMWORD PTR[16+rdx]
1710116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm2,XMMWORD PTR[32+rdx]
1711116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqu	xmm3,XMMWORD PTR[48+rdx]
1712116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[576+rsp],xmm4
1713116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[592+rsp],xmm4
1714116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[608+rsp],xmm4
1715116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[624+rsp],xmm4
1716116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[512+rsp],xmm0
1717116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[528+rsp],xmm1
1718116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[544+rsp],xmm2
1719116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	movdqa	XMMWORD PTR[560+rsp],xmm3
1720116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	mont_reduce
1721116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1722116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1723116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1724116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[8+rsp]
1725116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r8,QWORD PTR[rax]
1726116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r9,QWORD PTR[8+rax]
1727116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,QWORD PTR[16+rax]
1728116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r11,QWORD PTR[24+rax]
1729116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r12,QWORD PTR[32+rax]
1730116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r13,QWORD PTR[40+rax]
1731116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r14,QWORD PTR[48+rax]
1732116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r15,QWORD PTR[56+rax]
1733116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1734116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1735116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,QWORD PTR[24+rsp]
1736116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	rbx,512
1737116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1738116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	r8,QWORD PTR[rbx]
1739116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sbb	r9,QWORD PTR[8+rbx]
1740116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sbb	r10,QWORD PTR[16+rbx]
1741116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sbb	r11,QWORD PTR[24+rbx]
1742116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sbb	r12,QWORD PTR[32+rbx]
1743116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sbb	r13,QWORD PTR[40+rbx]
1744116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sbb	r14,QWORD PTR[48+rbx]
1745116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sbb	r15,QWORD PTR[56+rbx]
1746116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1747116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1748116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,QWORD PTR[rax]
1749116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdi,QWORD PTR[8+rax]
1750116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rcx,QWORD PTR[16+rax]
1751116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdx,QWORD PTR[24+rax]
1752116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmovnc	rsi,r8
1753116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmovnc	rdi,r9
1754116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmovnc	rcx,r10
1755116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmovnc	rdx,r11
1756116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[rax],rsi
1757116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[8+rax],rdi
1758116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[16+rax],rcx
1759116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[24+rax],rdx
1760116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1761116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,QWORD PTR[32+rax]
1762116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdi,QWORD PTR[40+rax]
1763116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rcx,QWORD PTR[48+rax]
1764116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdx,QWORD PTR[56+rax]
1765116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmovnc	rsi,r12
1766116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmovnc	rdi,r13
1767116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmovnc	rcx,r14
1768116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmovnc	rdx,r15
1769116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[32+rax],rsi
1770116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[40+rax],rdi
1771116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[48+rax],rcx
1772116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[56+rax],rdx
1773116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1774116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,QWORD PTR[rsp]
1775116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r15,QWORD PTR[rsi]
1776116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r14,QWORD PTR[8+rsi]
1777116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r13,QWORD PTR[16+rsi]
1778116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r12,QWORD PTR[24+rsi]
1779116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,QWORD PTR[32+rsi]
1780116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,QWORD PTR[40+rsi]
1781116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rsp,QWORD PTR[48+rsi]
1782116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$epilogue::
1783116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
1784116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,QWORD PTR[16+rsp]
1785116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
1786116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_end_mod_exp_512::
1787116680a4aac90f2aa7413d9095a592090648e557Ben Murdochmod_exp_512	ENDP
1788116680a4aac90f2aa7413d9095a592090648e557Ben MurdochEXTERN	__imp_RtlVirtualUnwind:NEAR
1789116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1790116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	16
1791116680a4aac90f2aa7413d9095a592090648e557Ben Murdochmod_exp_512_se_handler	PROC PRIVATE
1792116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	rsi
1793116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	rdi
1794116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	rbx
1795116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	rbp
1796116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r12
1797116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r13
1798116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r14
1799116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	push	r15
1800116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pushfq
1801116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	sub	rsp,64
1802116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1803116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[120+r8]
1804116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,QWORD PTR[248+r8]
1805116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1806116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r10,QWORD PTR[$L$body]
1807116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	rbx,r10
1808116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jb	$L$in_prologue
1809116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1810116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[152+r8]
1811116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1812116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r10,QWORD PTR[$L$epilogue]
1813116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	cmp	rbx,r10
1814116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	jae	$L$in_prologue
1815116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1816116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rax,QWORD PTR[rax]
1817116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1818116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbx,QWORD PTR[32+rax]
1819116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rbp,QWORD PTR[40+rax]
1820116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r12,QWORD PTR[24+rax]
1821116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r13,QWORD PTR[16+rax]
1822116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r14,QWORD PTR[8+rax]
1823116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r15,QWORD PTR[rax]
1824116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	rax,QWORD PTR[48+rax]
1825116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[144+r8],rbx
1826116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[160+r8],rbp
1827116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[216+r8],r12
1828116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[224+r8],r13
1829116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[232+r8],r14
1830116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[240+r8],r15
1831116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1832116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$in_prologue::
1833116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdi,QWORD PTR[8+rax]
1834116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,QWORD PTR[16+rax]
1835116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[152+r8],rax
1836116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[168+r8],rsi
1837116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[176+r8],rdi
1838116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1839116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdi,QWORD PTR[40+r9]
1840116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,r8
1841116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	ecx,154
1842116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	0a548f3fch
1843116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1844116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rsi,r9
1845116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	xor	rcx,rcx
1846116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	rdx,QWORD PTR[8+rsi]
1847116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r8,QWORD PTR[rsi]
1848116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r9,QWORD PTR[16+rsi]
1849116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	r10,QWORD PTR[40+rsi]
1850116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r11,QWORD PTR[56+rsi]
1851116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	lea	r12,QWORD PTR[24+rsi]
1852116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[32+rsp],r10
1853116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[40+rsp],r11
1854116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[48+rsp],r12
1855116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	QWORD PTR[56+rsp],rcx
1856116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	call	QWORD PTR[__imp_RtlVirtualUnwind]
1857116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1858116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	mov	eax,1
1859116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	add	rsp,64
1860116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	popfq
1861116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pop	r15
1862116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pop	r14
1863116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pop	r13
1864116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pop	r12
1865116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pop	rbp
1866116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pop	rbx
1867116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pop	rdi
1868116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	pop	rsi
1869116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DB	0F3h,0C3h		;repret
1870116680a4aac90f2aa7413d9095a592090648e557Ben Murdochmod_exp_512_se_handler	ENDP
1871116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1872116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.text$	ENDS
1873116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.pdata	SEGMENT READONLY ALIGN(4)
1874116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	4
1875116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$SEH_begin_mod_exp_512
1876116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$SEH_end_mod_exp_512
1877116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel $L$SEH_info_mod_exp_512
1878116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1879116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.pdata	ENDS
1880116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.xdata	SEGMENT READONLY ALIGN(8)
1881116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN	8
1882116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_info_mod_exp_512::
1883116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB	9,0,0,0
1884116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch	DD	imagerel mod_exp_512_se_handler
1885116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1886116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.xdata	ENDS
1887116680a4aac90f2aa7413d9095a592090648e557Ben MurdochEND
1888