Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Side by Side Diff: third_party/boringssl/win-x86_64/crypto/bn/rsaz-x86_64.asm

Issue 693893006: Roll BoringSSL. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@nasm
Patch Set: roll further Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 OPTION» DOTNAME 1 default»rel
2 .text$» SEGMENT ALIGN(256) 'CODE' 2 %define XMMWORD
3 %define YMMWORD
4 %define ZMMWORD
5 section».text code align=64
3 6
4 EXTERN OPENSSL_ia32cap_P:NEAR
5 7
6 PUBLIC» rsaz_512_sqr 8 EXTERN» OPENSSL_ia32cap_P
9
10 global» rsaz_512_sqr
7 11
8 ALIGN 32 12 ALIGN 32
9 rsaz_512_sqr» PROC PUBLIC 13 rsaz_512_sqr:
10 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue 14 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue
11 » mov» QWORD PTR[16+rsp],rsi 15 » mov» QWORD[16+rsp],rsi
12 mov rax,rsp 16 mov rax,rsp
13 $L$SEH_begin_rsaz_512_sqr:: 17 $L$SEH_begin_rsaz_512_sqr:
14 mov rdi,rcx 18 mov rdi,rcx
15 mov rsi,rdx 19 mov rsi,rdx
16 mov rdx,r8 20 mov rdx,r8
17 mov rcx,r9 21 mov rcx,r9
18 » mov» r8,QWORD PTR[40+rsp] 22 » mov» r8,QWORD[40+rsp]
19 23
20 24
21 push rbx 25 push rbx
22 push rbp 26 push rbp
23 push r12 27 push r12
24 push r13 28 push r13
25 push r14 29 push r14
26 push r15 30 push r15
27 31
28 sub rsp,128+24 32 sub rsp,128+24
29 $L$sqr_body:: 33 $L$sqr_body:
30 mov rbp,rdx 34 mov rbp,rdx
31 » mov» rdx,QWORD PTR[rsi] 35 » mov» rdx,QWORD[rsi]
32 » mov» rax,QWORD PTR[8+rsi] 36 » mov» rax,QWORD[8+rsi]
33 » mov» QWORD PTR[128+rsp],rcx 37 » mov» QWORD[128+rsp],rcx
34 » jmp» $L$oop_sqr 38 » jmp» NEAR $L$oop_sqr
35 39
36 ALIGN 32 40 ALIGN 32
37 $L$oop_sqr:: 41 $L$oop_sqr:
38 » mov» DWORD PTR[((128+8))+rsp],r8d 42 » mov» DWORD[((128+8))+rsp],r8d
39 43
40 mov rbx,rdx 44 mov rbx,rdx
41 mul rdx 45 mul rdx
42 mov r8,rax 46 mov r8,rax
43 » mov» rax,QWORD PTR[16+rsi] 47 » mov» rax,QWORD[16+rsi]
44 mov r9,rdx 48 mov r9,rdx
45 49
46 mul rbx 50 mul rbx
47 add r9,rax 51 add r9,rax
48 » mov» rax,QWORD PTR[24+rsi] 52 » mov» rax,QWORD[24+rsi]
49 mov r10,rdx 53 mov r10,rdx
50 adc r10,0 54 adc r10,0
51 55
52 mul rbx 56 mul rbx
53 add r10,rax 57 add r10,rax
54 » mov» rax,QWORD PTR[32+rsi] 58 » mov» rax,QWORD[32+rsi]
55 mov r11,rdx 59 mov r11,rdx
56 adc r11,0 60 adc r11,0
57 61
58 mul rbx 62 mul rbx
59 add r11,rax 63 add r11,rax
60 » mov» rax,QWORD PTR[40+rsi] 64 » mov» rax,QWORD[40+rsi]
61 mov r12,rdx 65 mov r12,rdx
62 adc r12,0 66 adc r12,0
63 67
64 mul rbx 68 mul rbx
65 add r12,rax 69 add r12,rax
66 » mov» rax,QWORD PTR[48+rsi] 70 » mov» rax,QWORD[48+rsi]
67 mov r13,rdx 71 mov r13,rdx
68 adc r13,0 72 adc r13,0
69 73
70 mul rbx 74 mul rbx
71 add r13,rax 75 add r13,rax
72 » mov» rax,QWORD PTR[56+rsi] 76 » mov» rax,QWORD[56+rsi]
73 mov r14,rdx 77 mov r14,rdx
74 adc r14,0 78 adc r14,0
75 79
76 mul rbx 80 mul rbx
77 add r14,rax 81 add r14,rax
78 mov rax,rbx 82 mov rax,rbx
79 mov r15,rdx 83 mov r15,rdx
80 adc r15,0 84 adc r15,0
81 85
82 add r8,r8 86 add r8,r8
83 mov rcx,r9 87 mov rcx,r9
84 adc r9,r9 88 adc r9,r9
85 89
86 mul rax 90 mul rax
87 » mov» QWORD PTR[rsp],rax 91 » mov» QWORD[rsp],rax
88 add r8,rdx 92 add r8,rdx
89 adc r9,0 93 adc r9,0
90 94
91 » mov» QWORD PTR[8+rsp],r8 95 » mov» QWORD[8+rsp],r8
92 shr rcx,63 96 shr rcx,63
93 97
94 98
95 » mov» r8,QWORD PTR[8+rsi] 99 » mov» r8,QWORD[8+rsi]
96 » mov» rax,QWORD PTR[16+rsi] 100 » mov» rax,QWORD[16+rsi]
97 mul r8 101 mul r8
98 add r10,rax 102 add r10,rax
99 » mov» rax,QWORD PTR[24+rsi] 103 » mov» rax,QWORD[24+rsi]
100 mov rbx,rdx 104 mov rbx,rdx
101 adc rbx,0 105 adc rbx,0
102 106
103 mul r8 107 mul r8
104 add r11,rax 108 add r11,rax
105 » mov» rax,QWORD PTR[32+rsi] 109 » mov» rax,QWORD[32+rsi]
106 adc rdx,0 110 adc rdx,0
107 add r11,rbx 111 add r11,rbx
108 mov rbx,rdx 112 mov rbx,rdx
109 adc rbx,0 113 adc rbx,0
110 114
111 mul r8 115 mul r8
112 add r12,rax 116 add r12,rax
113 » mov» rax,QWORD PTR[40+rsi] 117 » mov» rax,QWORD[40+rsi]
114 adc rdx,0 118 adc rdx,0
115 add r12,rbx 119 add r12,rbx
116 mov rbx,rdx 120 mov rbx,rdx
117 adc rbx,0 121 adc rbx,0
118 122
119 mul r8 123 mul r8
120 add r13,rax 124 add r13,rax
121 » mov» rax,QWORD PTR[48+rsi] 125 » mov» rax,QWORD[48+rsi]
122 adc rdx,0 126 adc rdx,0
123 add r13,rbx 127 add r13,rbx
124 mov rbx,rdx 128 mov rbx,rdx
125 adc rbx,0 129 adc rbx,0
126 130
127 mul r8 131 mul r8
128 add r14,rax 132 add r14,rax
129 » mov» rax,QWORD PTR[56+rsi] 133 » mov» rax,QWORD[56+rsi]
130 adc rdx,0 134 adc rdx,0
131 add r14,rbx 135 add r14,rbx
132 mov rbx,rdx 136 mov rbx,rdx
133 adc rbx,0 137 adc rbx,0
134 138
135 mul r8 139 mul r8
136 add r15,rax 140 add r15,rax
137 mov rax,r8 141 mov rax,r8
138 adc rdx,0 142 adc rdx,0
139 add r15,rbx 143 add r15,rbx
140 mov r8,rdx 144 mov r8,rdx
141 mov rdx,r10 145 mov rdx,r10
142 adc r8,0 146 adc r8,0
143 147
144 add rdx,rdx 148 add rdx,rdx
145 » lea» r10,QWORD PTR[r10*2+rcx] 149 » lea» r10,[r10*2+rcx]
146 mov rbx,r11 150 mov rbx,r11
147 adc r11,r11 151 adc r11,r11
148 152
149 mul rax 153 mul rax
150 add r9,rax 154 add r9,rax
151 adc r10,rdx 155 adc r10,rdx
152 adc r11,0 156 adc r11,0
153 157
154 » mov» QWORD PTR[16+rsp],r9 158 » mov» QWORD[16+rsp],r9
155 » mov» QWORD PTR[24+rsp],r10 159 » mov» QWORD[24+rsp],r10
156 shr rbx,63 160 shr rbx,63
157 161
158 162
159 » mov» r9,QWORD PTR[16+rsi] 163 » mov» r9,QWORD[16+rsi]
160 » mov» rax,QWORD PTR[24+rsi] 164 » mov» rax,QWORD[24+rsi]
161 mul r9 165 mul r9
162 add r12,rax 166 add r12,rax
163 » mov» rax,QWORD PTR[32+rsi] 167 » mov» rax,QWORD[32+rsi]
164 mov rcx,rdx 168 mov rcx,rdx
165 adc rcx,0 169 adc rcx,0
166 170
167 mul r9 171 mul r9
168 add r13,rax 172 add r13,rax
169 » mov» rax,QWORD PTR[40+rsi] 173 » mov» rax,QWORD[40+rsi]
170 adc rdx,0 174 adc rdx,0
171 add r13,rcx 175 add r13,rcx
172 mov rcx,rdx 176 mov rcx,rdx
173 adc rcx,0 177 adc rcx,0
174 178
175 mul r9 179 mul r9
176 add r14,rax 180 add r14,rax
177 » mov» rax,QWORD PTR[48+rsi] 181 » mov» rax,QWORD[48+rsi]
178 adc rdx,0 182 adc rdx,0
179 add r14,rcx 183 add r14,rcx
180 mov rcx,rdx 184 mov rcx,rdx
181 adc rcx,0 185 adc rcx,0
182 186
183 mul r9 187 mul r9
184 mov r10,r12 188 mov r10,r12
185 » lea» r12,QWORD PTR[r12*2+rbx] 189 » lea» r12,[r12*2+rbx]
186 add r15,rax 190 add r15,rax
187 » mov» rax,QWORD PTR[56+rsi] 191 » mov» rax,QWORD[56+rsi]
188 adc rdx,0 192 adc rdx,0
189 add r15,rcx 193 add r15,rcx
190 mov rcx,rdx 194 mov rcx,rdx
191 adc rcx,0 195 adc rcx,0
192 196
193 mul r9 197 mul r9
194 shr r10,63 198 shr r10,63
195 add r8,rax 199 add r8,rax
196 mov rax,r9 200 mov rax,r9
197 adc rdx,0 201 adc rdx,0
198 add r8,rcx 202 add r8,rcx
199 mov r9,rdx 203 mov r9,rdx
200 adc r9,0 204 adc r9,0
201 205
202 mov rcx,r13 206 mov rcx,r13
203 » lea» r13,QWORD PTR[r13*2+r10] 207 » lea» r13,[r13*2+r10]
204 208
205 mul rax 209 mul rax
206 add r11,rax 210 add r11,rax
207 adc r12,rdx 211 adc r12,rdx
208 adc r13,0 212 adc r13,0
209 213
210 » mov» QWORD PTR[32+rsp],r11 214 » mov» QWORD[32+rsp],r11
211 » mov» QWORD PTR[40+rsp],r12 215 » mov» QWORD[40+rsp],r12
212 shr rcx,63 216 shr rcx,63
213 217
214 218
215 » mov» r10,QWORD PTR[24+rsi] 219 » mov» r10,QWORD[24+rsi]
216 » mov» rax,QWORD PTR[32+rsi] 220 » mov» rax,QWORD[32+rsi]
217 mul r10 221 mul r10
218 add r14,rax 222 add r14,rax
219 » mov» rax,QWORD PTR[40+rsi] 223 » mov» rax,QWORD[40+rsi]
220 mov rbx,rdx 224 mov rbx,rdx
221 adc rbx,0 225 adc rbx,0
222 226
223 mul r10 227 mul r10
224 add r15,rax 228 add r15,rax
225 » mov» rax,QWORD PTR[48+rsi] 229 » mov» rax,QWORD[48+rsi]
226 adc rdx,0 230 adc rdx,0
227 add r15,rbx 231 add r15,rbx
228 mov rbx,rdx 232 mov rbx,rdx
229 adc rbx,0 233 adc rbx,0
230 234
231 mul r10 235 mul r10
232 mov r12,r14 236 mov r12,r14
233 » lea» r14,QWORD PTR[r14*2+rcx] 237 » lea» r14,[r14*2+rcx]
234 add r8,rax 238 add r8,rax
235 » mov» rax,QWORD PTR[56+rsi] 239 » mov» rax,QWORD[56+rsi]
236 adc rdx,0 240 adc rdx,0
237 add r8,rbx 241 add r8,rbx
238 mov rbx,rdx 242 mov rbx,rdx
239 adc rbx,0 243 adc rbx,0
240 244
241 mul r10 245 mul r10
242 shr r12,63 246 shr r12,63
243 add r9,rax 247 add r9,rax
244 mov rax,r10 248 mov rax,r10
245 adc rdx,0 249 adc rdx,0
246 add r9,rbx 250 add r9,rbx
247 mov r10,rdx 251 mov r10,rdx
248 adc r10,0 252 adc r10,0
249 253
250 mov rbx,r15 254 mov rbx,r15
251 » lea» r15,QWORD PTR[r15*2+r12] 255 » lea» r15,[r15*2+r12]
252 256
253 mul rax 257 mul rax
254 add r13,rax 258 add r13,rax
255 adc r14,rdx 259 adc r14,rdx
256 adc r15,0 260 adc r15,0
257 261
258 » mov» QWORD PTR[48+rsp],r13 262 » mov» QWORD[48+rsp],r13
259 » mov» QWORD PTR[56+rsp],r14 263 » mov» QWORD[56+rsp],r14
260 shr rbx,63 264 shr rbx,63
261 265
262 266
263 » mov» r11,QWORD PTR[32+rsi] 267 » mov» r11,QWORD[32+rsi]
264 » mov» rax,QWORD PTR[40+rsi] 268 » mov» rax,QWORD[40+rsi]
265 mul r11 269 mul r11
266 add r8,rax 270 add r8,rax
267 » mov» rax,QWORD PTR[48+rsi] 271 » mov» rax,QWORD[48+rsi]
268 mov rcx,rdx 272 mov rcx,rdx
269 adc rcx,0 273 adc rcx,0
270 274
271 mul r11 275 mul r11
272 add r9,rax 276 add r9,rax
273 » mov» rax,QWORD PTR[56+rsi] 277 » mov» rax,QWORD[56+rsi]
274 adc rdx,0 278 adc rdx,0
275 mov r12,r8 279 mov r12,r8
276 » lea» r8,QWORD PTR[r8*2+rbx] 280 » lea» r8,[r8*2+rbx]
277 add r9,rcx 281 add r9,rcx
278 mov rcx,rdx 282 mov rcx,rdx
279 adc rcx,0 283 adc rcx,0
280 284
281 mul r11 285 mul r11
282 shr r12,63 286 shr r12,63
283 add r10,rax 287 add r10,rax
284 mov rax,r11 288 mov rax,r11
285 adc rdx,0 289 adc rdx,0
286 add r10,rcx 290 add r10,rcx
287 mov r11,rdx 291 mov r11,rdx
288 adc r11,0 292 adc r11,0
289 293
290 mov rcx,r9 294 mov rcx,r9
291 » lea» r9,QWORD PTR[r9*2+r12] 295 » lea» r9,[r9*2+r12]
292 296
293 mul rax 297 mul rax
294 add r15,rax 298 add r15,rax
295 adc r8,rdx 299 adc r8,rdx
296 adc r9,0 300 adc r9,0
297 301
298 » mov» QWORD PTR[64+rsp],r15 302 » mov» QWORD[64+rsp],r15
299 » mov» QWORD PTR[72+rsp],r8 303 » mov» QWORD[72+rsp],r8
300 shr rcx,63 304 shr rcx,63
301 305
302 306
303 » mov» r12,QWORD PTR[40+rsi] 307 » mov» r12,QWORD[40+rsi]
304 » mov» rax,QWORD PTR[48+rsi] 308 » mov» rax,QWORD[48+rsi]
305 mul r12 309 mul r12
306 add r10,rax 310 add r10,rax
307 » mov» rax,QWORD PTR[56+rsi] 311 » mov» rax,QWORD[56+rsi]
308 mov rbx,rdx 312 mov rbx,rdx
309 adc rbx,0 313 adc rbx,0
310 314
311 mul r12 315 mul r12
312 add r11,rax 316 add r11,rax
313 mov rax,r12 317 mov rax,r12
314 mov r15,r10 318 mov r15,r10
315 » lea» r10,QWORD PTR[r10*2+rcx] 319 » lea» r10,[r10*2+rcx]
316 adc rdx,0 320 adc rdx,0
317 shr r15,63 321 shr r15,63
318 add r11,rbx 322 add r11,rbx
319 mov r12,rdx 323 mov r12,rdx
320 adc r12,0 324 adc r12,0
321 325
322 mov rbx,r11 326 mov rbx,r11
323 » lea» r11,QWORD PTR[r11*2+r15] 327 » lea» r11,[r11*2+r15]
324 328
325 mul rax 329 mul rax
326 add r9,rax 330 add r9,rax
327 adc r10,rdx 331 adc r10,rdx
328 adc r11,0 332 adc r11,0
329 333
330 » mov» QWORD PTR[80+rsp],r9 334 » mov» QWORD[80+rsp],r9
331 » mov» QWORD PTR[88+rsp],r10 335 » mov» QWORD[88+rsp],r10
332 336
333 337
334 » mov» r13,QWORD PTR[48+rsi] 338 » mov» r13,QWORD[48+rsi]
335 » mov» rax,QWORD PTR[56+rsi] 339 » mov» rax,QWORD[56+rsi]
336 mul r13 340 mul r13
337 add r12,rax 341 add r12,rax
338 mov rax,r13 342 mov rax,r13
339 mov r13,rdx 343 mov r13,rdx
340 adc r13,0 344 adc r13,0
341 345
342 xor r14,r14 346 xor r14,r14
343 shl rbx,1 347 shl rbx,1
344 adc r12,r12 348 adc r12,r12
345 adc r13,r13 349 adc r13,r13
346 adc r14,r14 350 adc r14,r14
347 351
348 mul rax 352 mul rax
349 add r11,rax 353 add r11,rax
350 adc r12,rdx 354 adc r12,rdx
351 adc r13,0 355 adc r13,0
352 356
353 » mov» QWORD PTR[96+rsp],r11 357 » mov» QWORD[96+rsp],r11
354 » mov» QWORD PTR[104+rsp],r12 358 » mov» QWORD[104+rsp],r12
355 359
356 360
357 » mov» rax,QWORD PTR[56+rsi] 361 » mov» rax,QWORD[56+rsi]
358 mul rax 362 mul rax
359 add r13,rax 363 add r13,rax
360 adc rdx,0 364 adc rdx,0
361 365
362 add r14,rdx 366 add r14,rdx
363 367
364 » mov» QWORD PTR[112+rsp],r13 368 » mov» QWORD[112+rsp],r13
365 » mov» QWORD PTR[120+rsp],r14 369 » mov» QWORD[120+rsp],r14
366 370
367 » mov» r8,QWORD PTR[rsp] 371 » mov» r8,QWORD[rsp]
368 » mov» r9,QWORD PTR[8+rsp] 372 » mov» r9,QWORD[8+rsp]
369 » mov» r10,QWORD PTR[16+rsp] 373 » mov» r10,QWORD[16+rsp]
370 » mov» r11,QWORD PTR[24+rsp] 374 » mov» r11,QWORD[24+rsp]
371 » mov» r12,QWORD PTR[32+rsp] 375 » mov» r12,QWORD[32+rsp]
372 » mov» r13,QWORD PTR[40+rsp] 376 » mov» r13,QWORD[40+rsp]
373 » mov» r14,QWORD PTR[48+rsp] 377 » mov» r14,QWORD[48+rsp]
374 » mov» r15,QWORD PTR[56+rsp] 378 » mov» r15,QWORD[56+rsp]
375 379
376 call __rsaz_512_reduce 380 call __rsaz_512_reduce
377 381
378 » add» r8,QWORD PTR[64+rsp] 382 » add» r8,QWORD[64+rsp]
379 » adc» r9,QWORD PTR[72+rsp] 383 » adc» r9,QWORD[72+rsp]
380 » adc» r10,QWORD PTR[80+rsp] 384 » adc» r10,QWORD[80+rsp]
381 » adc» r11,QWORD PTR[88+rsp] 385 » adc» r11,QWORD[88+rsp]
382 » adc» r12,QWORD PTR[96+rsp] 386 » adc» r12,QWORD[96+rsp]
383 » adc» r13,QWORD PTR[104+rsp] 387 » adc» r13,QWORD[104+rsp]
384 » adc» r14,QWORD PTR[112+rsp] 388 » adc» r14,QWORD[112+rsp]
385 » adc» r15,QWORD PTR[120+rsp] 389 » adc» r15,QWORD[120+rsp]
386 sbb rcx,rcx 390 sbb rcx,rcx
387 391
388 call __rsaz_512_subtract 392 call __rsaz_512_subtract
389 393
390 mov rdx,r8 394 mov rdx,r8
391 mov rax,r9 395 mov rax,r9
392 » mov» r8d,DWORD PTR[((128+8))+rsp] 396 » mov» r8d,DWORD[((128+8))+rsp]
393 mov rsi,rdi 397 mov rsi,rdi
394 398
395 dec r8d 399 dec r8d
396 » jnz» $L$oop_sqr 400 » jnz» NEAR $L$oop_sqr
397 401
398 » lea» rax,QWORD PTR[((128+24+48))+rsp] 402 » lea» rax,[((128+24+48))+rsp]
399 » mov» r15,QWORD PTR[((-48))+rax] 403 » mov» r15,QWORD[((-48))+rax]
400 » mov» r14,QWORD PTR[((-40))+rax] 404 » mov» r14,QWORD[((-40))+rax]
401 » mov» r13,QWORD PTR[((-32))+rax] 405 » mov» r13,QWORD[((-32))+rax]
402 » mov» r12,QWORD PTR[((-24))+rax] 406 » mov» r12,QWORD[((-24))+rax]
403 » mov» rbp,QWORD PTR[((-16))+rax] 407 » mov» rbp,QWORD[((-16))+rax]
404 » mov» rbx,QWORD PTR[((-8))+rax] 408 » mov» rbx,QWORD[((-8))+rax]
405 » lea» rsp,QWORD PTR[rax] 409 » lea» rsp,[rax]
406 $L$sqr_epilogue:: 410 $L$sqr_epilogue:
407 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue 411 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue
408 » mov» rsi,QWORD PTR[16+rsp] 412 » mov» rsi,QWORD[16+rsp]
409 DB 0F3h,0C3h ;repret 413 DB 0F3h,0C3h ;repret
410 $L$SEH_end_rsaz_512_sqr:: 414 $L$SEH_end_rsaz_512_sqr:
411 rsaz_512_sqr» ENDP 415 global» rsaz_512_mul
412 PUBLIC» rsaz_512_mul
413 416
414 ALIGN 32 417 ALIGN 32
415 rsaz_512_mul» PROC PUBLIC 418 rsaz_512_mul:
416 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue 419 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue
417 » mov» QWORD PTR[16+rsp],rsi 420 » mov» QWORD[16+rsp],rsi
418 mov rax,rsp 421 mov rax,rsp
419 $L$SEH_begin_rsaz_512_mul:: 422 $L$SEH_begin_rsaz_512_mul:
420 mov rdi,rcx 423 mov rdi,rcx
421 mov rsi,rdx 424 mov rsi,rdx
422 mov rdx,r8 425 mov rdx,r8
423 mov rcx,r9 426 mov rcx,r9
424 » mov» r8,QWORD PTR[40+rsp] 427 » mov» r8,QWORD[40+rsp]
425 428
426 429
427 push rbx 430 push rbx
428 push rbp 431 push rbp
429 push r12 432 push r12
430 push r13 433 push r13
431 push r14 434 push r14
432 push r15 435 push r15
433 436
434 sub rsp,128+24 437 sub rsp,128+24
435 $L$mul_body:: 438 $L$mul_body:
436 DB 102,72,15,110,199 439 DB 102,72,15,110,199
437 DB 102,72,15,110,201 440 DB 102,72,15,110,201
438 » mov» QWORD PTR[128+rsp],r8 441 » mov» QWORD[128+rsp],r8
439 » mov» rbx,QWORD PTR[rdx] 442 » mov» rbx,QWORD[rdx]
440 mov rbp,rdx 443 mov rbp,rdx
441 call __rsaz_512_mul 444 call __rsaz_512_mul
442 445
443 DB 102,72,15,126,199 446 DB 102,72,15,126,199
444 DB 102,72,15,126,205 447 DB 102,72,15,126,205
445 448
446 » mov» r8,QWORD PTR[rsp] 449 » mov» r8,QWORD[rsp]
447 » mov» r9,QWORD PTR[8+rsp] 450 » mov» r9,QWORD[8+rsp]
448 » mov» r10,QWORD PTR[16+rsp] 451 » mov» r10,QWORD[16+rsp]
449 » mov» r11,QWORD PTR[24+rsp] 452 » mov» r11,QWORD[24+rsp]
450 » mov» r12,QWORD PTR[32+rsp] 453 » mov» r12,QWORD[32+rsp]
451 » mov» r13,QWORD PTR[40+rsp] 454 » mov» r13,QWORD[40+rsp]
452 » mov» r14,QWORD PTR[48+rsp] 455 » mov» r14,QWORD[48+rsp]
453 » mov» r15,QWORD PTR[56+rsp] 456 » mov» r15,QWORD[56+rsp]
454 457
455 call __rsaz_512_reduce 458 call __rsaz_512_reduce
456 » add» r8,QWORD PTR[64+rsp] 459 » add» r8,QWORD[64+rsp]
457 » adc» r9,QWORD PTR[72+rsp] 460 » adc» r9,QWORD[72+rsp]
458 » adc» r10,QWORD PTR[80+rsp] 461 » adc» r10,QWORD[80+rsp]
459 » adc» r11,QWORD PTR[88+rsp] 462 » adc» r11,QWORD[88+rsp]
460 » adc» r12,QWORD PTR[96+rsp] 463 » adc» r12,QWORD[96+rsp]
461 » adc» r13,QWORD PTR[104+rsp] 464 » adc» r13,QWORD[104+rsp]
462 » adc» r14,QWORD PTR[112+rsp] 465 » adc» r14,QWORD[112+rsp]
463 » adc» r15,QWORD PTR[120+rsp] 466 » adc» r15,QWORD[120+rsp]
464 sbb rcx,rcx 467 sbb rcx,rcx
465 468
466 call __rsaz_512_subtract 469 call __rsaz_512_subtract
467 470
468 » lea» rax,QWORD PTR[((128+24+48))+rsp] 471 » lea» rax,[((128+24+48))+rsp]
469 » mov» r15,QWORD PTR[((-48))+rax] 472 » mov» r15,QWORD[((-48))+rax]
470 » mov» r14,QWORD PTR[((-40))+rax] 473 » mov» r14,QWORD[((-40))+rax]
471 » mov» r13,QWORD PTR[((-32))+rax] 474 » mov» r13,QWORD[((-32))+rax]
472 » mov» r12,QWORD PTR[((-24))+rax] 475 » mov» r12,QWORD[((-24))+rax]
473 » mov» rbp,QWORD PTR[((-16))+rax] 476 » mov» rbp,QWORD[((-16))+rax]
474 » mov» rbx,QWORD PTR[((-8))+rax] 477 » mov» rbx,QWORD[((-8))+rax]
475 » lea» rsp,QWORD PTR[rax] 478 » lea» rsp,[rax]
476 $L$mul_epilogue:: 479 $L$mul_epilogue:
477 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue 480 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue
478 » mov» rsi,QWORD PTR[16+rsp] 481 » mov» rsi,QWORD[16+rsp]
479 DB 0F3h,0C3h ;repret 482 DB 0F3h,0C3h ;repret
480 $L$SEH_end_rsaz_512_mul:: 483 $L$SEH_end_rsaz_512_mul:
481 rsaz_512_mul» ENDP 484 global» rsaz_512_mul_gather4
482 PUBLIC» rsaz_512_mul_gather4
483 485
484 ALIGN 32 486 ALIGN 32
485 rsaz_512_mul_gather4» PROC PUBLIC 487 rsaz_512_mul_gather4:
486 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue 488 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue
487 » mov» QWORD PTR[16+rsp],rsi 489 » mov» QWORD[16+rsp],rsi
488 mov rax,rsp 490 mov rax,rsp
489 $L$SEH_begin_rsaz_512_mul_gather4:: 491 $L$SEH_begin_rsaz_512_mul_gather4:
490 mov rdi,rcx 492 mov rdi,rcx
491 mov rsi,rdx 493 mov rsi,rdx
492 mov rdx,r8 494 mov rdx,r8
493 mov rcx,r9 495 mov rcx,r9
494 » mov» r8,QWORD PTR[40+rsp] 496 » mov» r8,QWORD[40+rsp]
495 » mov» r9,QWORD PTR[48+rsp] 497 » mov» r9,QWORD[48+rsp]
496 498
497 499
498 push rbx 500 push rbx
499 push rbp 501 push rbp
500 push r12 502 push r12
501 push r13 503 push r13
502 push r14 504 push r14
503 push r15 505 push r15
504 506
505 mov r9d,r9d 507 mov r9d,r9d
506 sub rsp,128+24 508 sub rsp,128+24
507 $L$mul_gather4_body:: 509 $L$mul_gather4_body:
508 » mov» eax,DWORD PTR[64+r9*4+rdx] 510 » mov» eax,DWORD[64+r9*4+rdx]
509 DB 102,72,15,110,199 511 DB 102,72,15,110,199
510 » mov» ebx,DWORD PTR[r9*4+rdx] 512 » mov» ebx,DWORD[r9*4+rdx]
511 DB 102,72,15,110,201 513 DB 102,72,15,110,201
512 » mov» QWORD PTR[128+rsp],r8 514 » mov» QWORD[128+rsp],r8
513 515
514 shl rax,32 516 shl rax,32
515 or rbx,rax 517 or rbx,rax
516 » mov» rax,QWORD PTR[rsi] 518 » mov» rax,QWORD[rsi]
517 » mov» rcx,QWORD PTR[8+rsi] 519 » mov» rcx,QWORD[8+rsi]
518 » lea» rbp,QWORD PTR[128+r9*4+rdx] 520 » lea» rbp,[128+r9*4+rdx]
519 mul rbx 521 mul rbx
520 » mov» QWORD PTR[rsp],rax 522 » mov» QWORD[rsp],rax
521 mov rax,rcx 523 mov rax,rcx
522 mov r8,rdx 524 mov r8,rdx
523 525
524 mul rbx 526 mul rbx
525 » movd» xmm4,DWORD PTR[rbp] 527 » movd» xmm4,DWORD[rbp]
526 add r8,rax 528 add r8,rax
527 » mov» rax,QWORD PTR[16+rsi] 529 » mov» rax,QWORD[16+rsi]
528 mov r9,rdx 530 mov r9,rdx
529 adc r9,0 531 adc r9,0
530 532
531 mul rbx 533 mul rbx
532 » movd» xmm5,DWORD PTR[64+rbp] 534 » movd» xmm5,DWORD[64+rbp]
533 add r9,rax 535 add r9,rax
534 » mov» rax,QWORD PTR[24+rsi] 536 » mov» rax,QWORD[24+rsi]
535 mov r10,rdx 537 mov r10,rdx
536 adc r10,0 538 adc r10,0
537 539
538 mul rbx 540 mul rbx
539 pslldq xmm5,4 541 pslldq xmm5,4
540 add r10,rax 542 add r10,rax
541 » mov» rax,QWORD PTR[32+rsi] 543 » mov» rax,QWORD[32+rsi]
542 mov r11,rdx 544 mov r11,rdx
543 adc r11,0 545 adc r11,0
544 546
545 mul rbx 547 mul rbx
546 por xmm4,xmm5 548 por xmm4,xmm5
547 add r11,rax 549 add r11,rax
548 » mov» rax,QWORD PTR[40+rsi] 550 » mov» rax,QWORD[40+rsi]
549 mov r12,rdx 551 mov r12,rdx
550 adc r12,0 552 adc r12,0
551 553
552 mul rbx 554 mul rbx
553 add r12,rax 555 add r12,rax
554 » mov» rax,QWORD PTR[48+rsi] 556 » mov» rax,QWORD[48+rsi]
555 mov r13,rdx 557 mov r13,rdx
556 adc r13,0 558 adc r13,0
557 559
558 mul rbx 560 mul rbx
559 » lea» rbp,QWORD PTR[128+rbp] 561 » lea» rbp,[128+rbp]
560 add r13,rax 562 add r13,rax
561 » mov» rax,QWORD PTR[56+rsi] 563 » mov» rax,QWORD[56+rsi]
562 mov r14,rdx 564 mov r14,rdx
563 adc r14,0 565 adc r14,0
564 566
565 mul rbx 567 mul rbx
566 DB 102,72,15,126,227 568 DB 102,72,15,126,227
567 add r14,rax 569 add r14,rax
568 » mov» rax,QWORD PTR[rsi] 570 » mov» rax,QWORD[rsi]
569 mov r15,rdx 571 mov r15,rdx
570 adc r15,0 572 adc r15,0
571 573
572 » lea» rdi,QWORD PTR[8+rsp] 574 » lea» rdi,[8+rsp]
573 mov ecx,7 575 mov ecx,7
574 » jmp» $L$oop_mul_gather 576 » jmp» NEAR $L$oop_mul_gather
575 577
576 ALIGN 32 578 ALIGN 32
577 $L$oop_mul_gather:: 579 $L$oop_mul_gather:
578 mul rbx 580 mul rbx
579 add r8,rax 581 add r8,rax
580 » mov» rax,QWORD PTR[8+rsi] 582 » mov» rax,QWORD[8+rsi]
581 » mov» QWORD PTR[rdi],r8 583 » mov» QWORD[rdi],r8
582 mov r8,rdx 584 mov r8,rdx
583 adc r8,0 585 adc r8,0
584 586
585 mul rbx 587 mul rbx
586 » movd» xmm4,DWORD PTR[rbp] 588 » movd» xmm4,DWORD[rbp]
587 add r9,rax 589 add r9,rax
588 » mov» rax,QWORD PTR[16+rsi] 590 » mov» rax,QWORD[16+rsi]
589 adc rdx,0 591 adc rdx,0
590 add r8,r9 592 add r8,r9
591 mov r9,rdx 593 mov r9,rdx
592 adc r9,0 594 adc r9,0
593 595
594 mul rbx 596 mul rbx
595 » movd» xmm5,DWORD PTR[64+rbp] 597 » movd» xmm5,DWORD[64+rbp]
596 add r10,rax 598 add r10,rax
597 » mov» rax,QWORD PTR[24+rsi] 599 » mov» rax,QWORD[24+rsi]
598 adc rdx,0 600 adc rdx,0
599 add r9,r10 601 add r9,r10
600 mov r10,rdx 602 mov r10,rdx
601 adc r10,0 603 adc r10,0
602 604
603 mul rbx 605 mul rbx
604 pslldq xmm5,4 606 pslldq xmm5,4
605 add r11,rax 607 add r11,rax
606 » mov» rax,QWORD PTR[32+rsi] 608 » mov» rax,QWORD[32+rsi]
607 adc rdx,0 609 adc rdx,0
608 add r10,r11 610 add r10,r11
609 mov r11,rdx 611 mov r11,rdx
610 adc r11,0 612 adc r11,0
611 613
612 mul rbx 614 mul rbx
613 por xmm4,xmm5 615 por xmm4,xmm5
614 add r12,rax 616 add r12,rax
615 » mov» rax,QWORD PTR[40+rsi] 617 » mov» rax,QWORD[40+rsi]
616 adc rdx,0 618 adc rdx,0
617 add r11,r12 619 add r11,r12
618 mov r12,rdx 620 mov r12,rdx
619 adc r12,0 621 adc r12,0
620 622
621 mul rbx 623 mul rbx
622 add r13,rax 624 add r13,rax
623 » mov» rax,QWORD PTR[48+rsi] 625 » mov» rax,QWORD[48+rsi]
624 adc rdx,0 626 adc rdx,0
625 add r12,r13 627 add r12,r13
626 mov r13,rdx 628 mov r13,rdx
627 adc r13,0 629 adc r13,0
628 630
629 mul rbx 631 mul rbx
630 add r14,rax 632 add r14,rax
631 » mov» rax,QWORD PTR[56+rsi] 633 » mov» rax,QWORD[56+rsi]
632 adc rdx,0 634 adc rdx,0
633 add r13,r14 635 add r13,r14
634 mov r14,rdx 636 mov r14,rdx
635 adc r14,0 637 adc r14,0
636 638
637 mul rbx 639 mul rbx
638 DB 102,72,15,126,227 640 DB 102,72,15,126,227
639 add r15,rax 641 add r15,rax
640 » mov» rax,QWORD PTR[rsi] 642 » mov» rax,QWORD[rsi]
641 adc rdx,0 643 adc rdx,0
642 add r14,r15 644 add r14,r15
643 mov r15,rdx 645 mov r15,rdx
644 adc r15,0 646 adc r15,0
645 647
646 » lea» rbp,QWORD PTR[128+rbp] 648 » lea» rbp,[128+rbp]
647 » lea» rdi,QWORD PTR[8+rdi] 649 » lea» rdi,[8+rdi]
648 650
649 dec ecx 651 dec ecx
650 » jnz» $L$oop_mul_gather 652 » jnz» NEAR $L$oop_mul_gather
651 653
652 » mov» QWORD PTR[rdi],r8 654 » mov» QWORD[rdi],r8
653 » mov» QWORD PTR[8+rdi],r9 655 » mov» QWORD[8+rdi],r9
654 » mov» QWORD PTR[16+rdi],r10 656 » mov» QWORD[16+rdi],r10
655 » mov» QWORD PTR[24+rdi],r11 657 » mov» QWORD[24+rdi],r11
656 » mov» QWORD PTR[32+rdi],r12 658 » mov» QWORD[32+rdi],r12
657 » mov» QWORD PTR[40+rdi],r13 659 » mov» QWORD[40+rdi],r13
658 » mov» QWORD PTR[48+rdi],r14 660 » mov» QWORD[48+rdi],r14
659 » mov» QWORD PTR[56+rdi],r15 661 » mov» QWORD[56+rdi],r15
660 662
661 DB 102,72,15,126,199 663 DB 102,72,15,126,199
662 DB 102,72,15,126,205 664 DB 102,72,15,126,205
663 665
664 » mov» r8,QWORD PTR[rsp] 666 » mov» r8,QWORD[rsp]
665 » mov» r9,QWORD PTR[8+rsp] 667 » mov» r9,QWORD[8+rsp]
666 » mov» r10,QWORD PTR[16+rsp] 668 » mov» r10,QWORD[16+rsp]
667 » mov» r11,QWORD PTR[24+rsp] 669 » mov» r11,QWORD[24+rsp]
668 » mov» r12,QWORD PTR[32+rsp] 670 » mov» r12,QWORD[32+rsp]
669 » mov» r13,QWORD PTR[40+rsp] 671 » mov» r13,QWORD[40+rsp]
670 » mov» r14,QWORD PTR[48+rsp] 672 » mov» r14,QWORD[48+rsp]
671 » mov» r15,QWORD PTR[56+rsp] 673 » mov» r15,QWORD[56+rsp]
672 674
673 call __rsaz_512_reduce 675 call __rsaz_512_reduce
674 » add» r8,QWORD PTR[64+rsp] 676 » add» r8,QWORD[64+rsp]
675 » adc» r9,QWORD PTR[72+rsp] 677 » adc» r9,QWORD[72+rsp]
676 » adc» r10,QWORD PTR[80+rsp] 678 » adc» r10,QWORD[80+rsp]
677 » adc» r11,QWORD PTR[88+rsp] 679 » adc» r11,QWORD[88+rsp]
678 » adc» r12,QWORD PTR[96+rsp] 680 » adc» r12,QWORD[96+rsp]
679 » adc» r13,QWORD PTR[104+rsp] 681 » adc» r13,QWORD[104+rsp]
680 » adc» r14,QWORD PTR[112+rsp] 682 » adc» r14,QWORD[112+rsp]
681 » adc» r15,QWORD PTR[120+rsp] 683 » adc» r15,QWORD[120+rsp]
682 sbb rcx,rcx 684 sbb rcx,rcx
683 685
684 call __rsaz_512_subtract 686 call __rsaz_512_subtract
685 687
686 » lea» rax,QWORD PTR[((128+24+48))+rsp] 688 » lea» rax,[((128+24+48))+rsp]
687 » mov» r15,QWORD PTR[((-48))+rax] 689 » mov» r15,QWORD[((-48))+rax]
688 » mov» r14,QWORD PTR[((-40))+rax] 690 » mov» r14,QWORD[((-40))+rax]
689 » mov» r13,QWORD PTR[((-32))+rax] 691 » mov» r13,QWORD[((-32))+rax]
690 » mov» r12,QWORD PTR[((-24))+rax] 692 » mov» r12,QWORD[((-24))+rax]
691 » mov» rbp,QWORD PTR[((-16))+rax] 693 » mov» rbp,QWORD[((-16))+rax]
692 » mov» rbx,QWORD PTR[((-8))+rax] 694 » mov» rbx,QWORD[((-8))+rax]
693 » lea» rsp,QWORD PTR[rax] 695 » lea» rsp,[rax]
694 $L$mul_gather4_epilogue:: 696 $L$mul_gather4_epilogue:
695 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue 697 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue
696 » mov» rsi,QWORD PTR[16+rsp] 698 » mov» rsi,QWORD[16+rsp]
697 DB 0F3h,0C3h ;repret 699 DB 0F3h,0C3h ;repret
698 $L$SEH_end_rsaz_512_mul_gather4:: 700 $L$SEH_end_rsaz_512_mul_gather4:
699 rsaz_512_mul_gather4» ENDP 701 global» rsaz_512_mul_scatter4
700 PUBLIC» rsaz_512_mul_scatter4
701 702
702 ALIGN 32 703 ALIGN 32
703 rsaz_512_mul_scatter4» PROC PUBLIC 704 rsaz_512_mul_scatter4:
704 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue 705 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue
705 » mov» QWORD PTR[16+rsp],rsi 706 » mov» QWORD[16+rsp],rsi
706 mov rax,rsp 707 mov rax,rsp
707 $L$SEH_begin_rsaz_512_mul_scatter4:: 708 $L$SEH_begin_rsaz_512_mul_scatter4:
708 mov rdi,rcx 709 mov rdi,rcx
709 mov rsi,rdx 710 mov rsi,rdx
710 mov rdx,r8 711 mov rdx,r8
711 mov rcx,r9 712 mov rcx,r9
712 » mov» r8,QWORD PTR[40+rsp] 713 » mov» r8,QWORD[40+rsp]
713 » mov» r9,QWORD PTR[48+rsp] 714 » mov» r9,QWORD[48+rsp]
714 715
715 716
716 push rbx 717 push rbx
717 push rbp 718 push rbp
718 push r12 719 push r12
719 push r13 720 push r13
720 push r14 721 push r14
721 push r15 722 push r15
722 723
723 mov r9d,r9d 724 mov r9d,r9d
724 sub rsp,128+24 725 sub rsp,128+24
725 $L$mul_scatter4_body:: 726 $L$mul_scatter4_body:
726 » lea» r8,QWORD PTR[r9*4+r8] 727 » lea» r8,[r9*4+r8]
727 DB 102,72,15,110,199 728 DB 102,72,15,110,199
728 DB 102,72,15,110,202 729 DB 102,72,15,110,202
729 DB 102,73,15,110,208 730 DB 102,73,15,110,208
730 » mov» QWORD PTR[128+rsp],rcx 731 » mov» QWORD[128+rsp],rcx
731 732
732 mov rbp,rdi 733 mov rbp,rdi
733 » mov» rbx,QWORD PTR[rdi] 734 » mov» rbx,QWORD[rdi]
734 call __rsaz_512_mul 735 call __rsaz_512_mul
735 736
736 DB 102,72,15,126,199 737 DB 102,72,15,126,199
737 DB 102,72,15,126,205 738 DB 102,72,15,126,205
738 739
739 » mov» r8,QWORD PTR[rsp] 740 » mov» r8,QWORD[rsp]
740 » mov» r9,QWORD PTR[8+rsp] 741 » mov» r9,QWORD[8+rsp]
741 » mov» r10,QWORD PTR[16+rsp] 742 » mov» r10,QWORD[16+rsp]
742 » mov» r11,QWORD PTR[24+rsp] 743 » mov» r11,QWORD[24+rsp]
743 » mov» r12,QWORD PTR[32+rsp] 744 » mov» r12,QWORD[32+rsp]
744 » mov» r13,QWORD PTR[40+rsp] 745 » mov» r13,QWORD[40+rsp]
745 » mov» r14,QWORD PTR[48+rsp] 746 » mov» r14,QWORD[48+rsp]
746 » mov» r15,QWORD PTR[56+rsp] 747 » mov» r15,QWORD[56+rsp]
747 748
748 call __rsaz_512_reduce 749 call __rsaz_512_reduce
749 » add» r8,QWORD PTR[64+rsp] 750 » add» r8,QWORD[64+rsp]
750 » adc» r9,QWORD PTR[72+rsp] 751 » adc» r9,QWORD[72+rsp]
751 » adc» r10,QWORD PTR[80+rsp] 752 » adc» r10,QWORD[80+rsp]
752 » adc» r11,QWORD PTR[88+rsp] 753 » adc» r11,QWORD[88+rsp]
753 » adc» r12,QWORD PTR[96+rsp] 754 » adc» r12,QWORD[96+rsp]
754 » adc» r13,QWORD PTR[104+rsp] 755 » adc» r13,QWORD[104+rsp]
755 » adc» r14,QWORD PTR[112+rsp] 756 » adc» r14,QWORD[112+rsp]
756 » adc» r15,QWORD PTR[120+rsp] 757 » adc» r15,QWORD[120+rsp]
757 DB 102,72,15,126,214 758 DB 102,72,15,126,214
758 sbb rcx,rcx 759 sbb rcx,rcx
759 760
760 call __rsaz_512_subtract 761 call __rsaz_512_subtract
761 762
762 » mov» DWORD PTR[rsi],r8d 763 » mov» DWORD[rsi],r8d
763 shr r8,32 764 shr r8,32
764 » mov» DWORD PTR[128+rsi],r9d 765 » mov» DWORD[128+rsi],r9d
765 shr r9,32 766 shr r9,32
766 » mov» DWORD PTR[256+rsi],r10d 767 » mov» DWORD[256+rsi],r10d
767 shr r10,32 768 shr r10,32
768 » mov» DWORD PTR[384+rsi],r11d 769 » mov» DWORD[384+rsi],r11d
769 shr r11,32 770 shr r11,32
770 » mov» DWORD PTR[512+rsi],r12d 771 » mov» DWORD[512+rsi],r12d
771 shr r12,32 772 shr r12,32
772 » mov» DWORD PTR[640+rsi],r13d 773 » mov» DWORD[640+rsi],r13d
773 shr r13,32 774 shr r13,32
774 » mov» DWORD PTR[768+rsi],r14d 775 » mov» DWORD[768+rsi],r14d
775 shr r14,32 776 shr r14,32
776 » mov» DWORD PTR[896+rsi],r15d 777 » mov» DWORD[896+rsi],r15d
777 shr r15,32 778 shr r15,32
778 » mov» DWORD PTR[64+rsi],r8d 779 » mov» DWORD[64+rsi],r8d
779 » mov» DWORD PTR[192+rsi],r9d 780 » mov» DWORD[192+rsi],r9d
780 » mov» DWORD PTR[320+rsi],r10d 781 » mov» DWORD[320+rsi],r10d
781 » mov» DWORD PTR[448+rsi],r11d 782 » mov» DWORD[448+rsi],r11d
782 » mov» DWORD PTR[576+rsi],r12d 783 » mov» DWORD[576+rsi],r12d
783 » mov» DWORD PTR[704+rsi],r13d 784 » mov» DWORD[704+rsi],r13d
784 » mov» DWORD PTR[832+rsi],r14d 785 » mov» DWORD[832+rsi],r14d
785 » mov» DWORD PTR[960+rsi],r15d 786 » mov» DWORD[960+rsi],r15d
786 787
787 » lea» rax,QWORD PTR[((128+24+48))+rsp] 788 » lea» rax,[((128+24+48))+rsp]
788 » mov» r15,QWORD PTR[((-48))+rax] 789 » mov» r15,QWORD[((-48))+rax]
789 » mov» r14,QWORD PTR[((-40))+rax] 790 » mov» r14,QWORD[((-40))+rax]
790 » mov» r13,QWORD PTR[((-32))+rax] 791 » mov» r13,QWORD[((-32))+rax]
791 » mov» r12,QWORD PTR[((-24))+rax] 792 » mov» r12,QWORD[((-24))+rax]
792 » mov» rbp,QWORD PTR[((-16))+rax] 793 » mov» rbp,QWORD[((-16))+rax]
793 » mov» rbx,QWORD PTR[((-8))+rax] 794 » mov» rbx,QWORD[((-8))+rax]
794 » lea» rsp,QWORD PTR[rax] 795 » lea» rsp,[rax]
795 $L$mul_scatter4_epilogue:: 796 $L$mul_scatter4_epilogue:
796 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue 797 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue
797 » mov» rsi,QWORD PTR[16+rsp] 798 » mov» rsi,QWORD[16+rsp]
798 DB 0F3h,0C3h ;repret 799 DB 0F3h,0C3h ;repret
799 $L$SEH_end_rsaz_512_mul_scatter4:: 800 $L$SEH_end_rsaz_512_mul_scatter4:
800 rsaz_512_mul_scatter4» ENDP 801 global» rsaz_512_mul_by_one
801 PUBLIC» rsaz_512_mul_by_one
802 802
803 ALIGN 32 803 ALIGN 32
804 rsaz_512_mul_by_one» PROC PUBLIC 804 rsaz_512_mul_by_one:
805 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue 805 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue
806 » mov» QWORD PTR[16+rsp],rsi 806 » mov» QWORD[16+rsp],rsi
807 mov rax,rsp 807 mov rax,rsp
808 $L$SEH_begin_rsaz_512_mul_by_one:: 808 $L$SEH_begin_rsaz_512_mul_by_one:
809 mov rdi,rcx 809 mov rdi,rcx
810 mov rsi,rdx 810 mov rsi,rdx
811 mov rdx,r8 811 mov rdx,r8
812 mov rcx,r9 812 mov rcx,r9
813 813
814 814
815 push rbx 815 push rbx
816 push rbp 816 push rbp
817 push r12 817 push r12
818 push r13 818 push r13
819 push r14 819 push r14
820 push r15 820 push r15
821 821
822 sub rsp,128+24 822 sub rsp,128+24
823 $L$mul_by_one_body:: 823 $L$mul_by_one_body:
824 mov rbp,rdx 824 mov rbp,rdx
825 » mov» QWORD PTR[128+rsp],rcx 825 » mov» QWORD[128+rsp],rcx
826 826
827 » mov» r8,QWORD PTR[rsi] 827 » mov» r8,QWORD[rsi]
828 pxor xmm0,xmm0 828 pxor xmm0,xmm0
829 » mov» r9,QWORD PTR[8+rsi] 829 » mov» r9,QWORD[8+rsi]
830 » mov» r10,QWORD PTR[16+rsi] 830 » mov» r10,QWORD[16+rsi]
831 » mov» r11,QWORD PTR[24+rsi] 831 » mov» r11,QWORD[24+rsi]
832 » mov» r12,QWORD PTR[32+rsi] 832 » mov» r12,QWORD[32+rsi]
833 » mov» r13,QWORD PTR[40+rsi] 833 » mov» r13,QWORD[40+rsi]
834 » mov» r14,QWORD PTR[48+rsi] 834 » mov» r14,QWORD[48+rsi]
835 » mov» r15,QWORD PTR[56+rsi] 835 » mov» r15,QWORD[56+rsi]
836 836
837 » movdqa» XMMWORD PTR[rsp],xmm0 837 » movdqa» XMMWORD[rsp],xmm0
838 » movdqa» XMMWORD PTR[16+rsp],xmm0 838 » movdqa» XMMWORD[16+rsp],xmm0
839 » movdqa» XMMWORD PTR[32+rsp],xmm0 839 » movdqa» XMMWORD[32+rsp],xmm0
840 » movdqa» XMMWORD PTR[48+rsp],xmm0 840 » movdqa» XMMWORD[48+rsp],xmm0
841 » movdqa» XMMWORD PTR[64+rsp],xmm0 841 » movdqa» XMMWORD[64+rsp],xmm0
842 » movdqa» XMMWORD PTR[80+rsp],xmm0 842 » movdqa» XMMWORD[80+rsp],xmm0
843 » movdqa» XMMWORD PTR[96+rsp],xmm0 843 » movdqa» XMMWORD[96+rsp],xmm0
844 call __rsaz_512_reduce 844 call __rsaz_512_reduce
845 » mov» QWORD PTR[rdi],r8 845 » mov» QWORD[rdi],r8
846 » mov» QWORD PTR[8+rdi],r9 846 » mov» QWORD[8+rdi],r9
847 » mov» QWORD PTR[16+rdi],r10 847 » mov» QWORD[16+rdi],r10
848 » mov» QWORD PTR[24+rdi],r11 848 » mov» QWORD[24+rdi],r11
849 » mov» QWORD PTR[32+rdi],r12 849 » mov» QWORD[32+rdi],r12
850 » mov» QWORD PTR[40+rdi],r13 850 » mov» QWORD[40+rdi],r13
851 » mov» QWORD PTR[48+rdi],r14 851 » mov» QWORD[48+rdi],r14
852 » mov» QWORD PTR[56+rdi],r15 852 » mov» QWORD[56+rdi],r15
853 853
854 » lea» rax,QWORD PTR[((128+24+48))+rsp] 854 » lea» rax,[((128+24+48))+rsp]
855 » mov» r15,QWORD PTR[((-48))+rax] 855 » mov» r15,QWORD[((-48))+rax]
856 » mov» r14,QWORD PTR[((-40))+rax] 856 » mov» r14,QWORD[((-40))+rax]
857 » mov» r13,QWORD PTR[((-32))+rax] 857 » mov» r13,QWORD[((-32))+rax]
858 » mov» r12,QWORD PTR[((-24))+rax] 858 » mov» r12,QWORD[((-24))+rax]
859 » mov» rbp,QWORD PTR[((-16))+rax] 859 » mov» rbp,QWORD[((-16))+rax]
860 » mov» rbx,QWORD PTR[((-8))+rax] 860 » mov» rbx,QWORD[((-8))+rax]
861 » lea» rsp,QWORD PTR[rax] 861 » lea» rsp,[rax]
862 $L$mul_by_one_epilogue:: 862 $L$mul_by_one_epilogue:
863 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue 863 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue
864 » mov» rsi,QWORD PTR[16+rsp] 864 » mov» rsi,QWORD[16+rsp]
865 DB 0F3h,0C3h ;repret 865 DB 0F3h,0C3h ;repret
866 $L$SEH_end_rsaz_512_mul_by_one:: 866 $L$SEH_end_rsaz_512_mul_by_one:
867 rsaz_512_mul_by_one» ENDP
868 867
869 ALIGN 32 868 ALIGN 32
870 __rsaz_512_reduce» PROC PRIVATE 869 __rsaz_512_reduce:
871 mov rbx,r8 870 mov rbx,r8
872 » imul» rbx,QWORD PTR[((128+8))+rsp] 871 » imul» rbx,QWORD[((128+8))+rsp]
873 » mov» rax,QWORD PTR[rbp] 872 » mov» rax,QWORD[rbp]
874 mov ecx,8 873 mov ecx,8
875 » jmp» $L$reduction_loop 874 » jmp» NEAR $L$reduction_loop
876 875
877 ALIGN 32 876 ALIGN 32
878 $L$reduction_loop:: 877 $L$reduction_loop:
879 mul rbx 878 mul rbx
880 » mov» rax,QWORD PTR[8+rbp] 879 » mov» rax,QWORD[8+rbp]
881 neg r8 880 neg r8
882 mov r8,rdx 881 mov r8,rdx
883 adc r8,0 882 adc r8,0
884 883
885 mul rbx 884 mul rbx
886 add r9,rax 885 add r9,rax
887 » mov» rax,QWORD PTR[16+rbp] 886 » mov» rax,QWORD[16+rbp]
888 adc rdx,0 887 adc rdx,0
889 add r8,r9 888 add r8,r9
890 mov r9,rdx 889 mov r9,rdx
891 adc r9,0 890 adc r9,0
892 891
893 mul rbx 892 mul rbx
894 add r10,rax 893 add r10,rax
895 » mov» rax,QWORD PTR[24+rbp] 894 » mov» rax,QWORD[24+rbp]
896 adc rdx,0 895 adc rdx,0
897 add r9,r10 896 add r9,r10
898 mov r10,rdx 897 mov r10,rdx
899 adc r10,0 898 adc r10,0
900 899
901 mul rbx 900 mul rbx
902 add r11,rax 901 add r11,rax
903 » mov» rax,QWORD PTR[32+rbp] 902 » mov» rax,QWORD[32+rbp]
904 adc rdx,0 903 adc rdx,0
905 add r10,r11 904 add r10,r11
906 » mov» rsi,QWORD PTR[((128+8))+rsp] 905 » mov» rsi,QWORD[((128+8))+rsp]
907 906
908 907
909 adc rdx,0 908 adc rdx,0
910 mov r11,rdx 909 mov r11,rdx
911 910
912 mul rbx 911 mul rbx
913 add r12,rax 912 add r12,rax
914 » mov» rax,QWORD PTR[40+rbp] 913 » mov» rax,QWORD[40+rbp]
915 adc rdx,0 914 adc rdx,0
916 imul rsi,r8 915 imul rsi,r8
917 add r11,r12 916 add r11,r12
918 mov r12,rdx 917 mov r12,rdx
919 adc r12,0 918 adc r12,0
920 919
921 mul rbx 920 mul rbx
922 add r13,rax 921 add r13,rax
923 » mov» rax,QWORD PTR[48+rbp] 922 » mov» rax,QWORD[48+rbp]
924 adc rdx,0 923 adc rdx,0
925 add r12,r13 924 add r12,r13
926 mov r13,rdx 925 mov r13,rdx
927 adc r13,0 926 adc r13,0
928 927
929 mul rbx 928 mul rbx
930 add r14,rax 929 add r14,rax
931 » mov» rax,QWORD PTR[56+rbp] 930 » mov» rax,QWORD[56+rbp]
932 adc rdx,0 931 adc rdx,0
933 add r13,r14 932 add r13,r14
934 mov r14,rdx 933 mov r14,rdx
935 adc r14,0 934 adc r14,0
936 935
937 mul rbx 936 mul rbx
938 mov rbx,rsi 937 mov rbx,rsi
939 add r15,rax 938 add r15,rax
940 » mov» rax,QWORD PTR[rbp] 939 » mov» rax,QWORD[rbp]
941 adc rdx,0 940 adc rdx,0
942 add r14,r15 941 add r14,r15
943 mov r15,rdx 942 mov r15,rdx
944 adc r15,0 943 adc r15,0
945 944
946 dec ecx 945 dec ecx
947 » jne» $L$reduction_loop 946 » jne» NEAR $L$reduction_loop
948 947
949 DB 0F3h,0C3h ;repret 948 DB 0F3h,0C3h ;repret
950 __rsaz_512_reduce» ENDP 949
951 950
952 ALIGN 32 951 ALIGN 32
953 __rsaz_512_subtract» PROC PRIVATE 952 __rsaz_512_subtract:
954 » mov» QWORD PTR[rdi],r8 953 » mov» QWORD[rdi],r8
955 » mov» QWORD PTR[8+rdi],r9 954 » mov» QWORD[8+rdi],r9
956 » mov» QWORD PTR[16+rdi],r10 955 » mov» QWORD[16+rdi],r10
957 » mov» QWORD PTR[24+rdi],r11 956 » mov» QWORD[24+rdi],r11
958 » mov» QWORD PTR[32+rdi],r12 957 » mov» QWORD[32+rdi],r12
959 » mov» QWORD PTR[40+rdi],r13 958 » mov» QWORD[40+rdi],r13
960 » mov» QWORD PTR[48+rdi],r14 959 » mov» QWORD[48+rdi],r14
961 » mov» QWORD PTR[56+rdi],r15 960 » mov» QWORD[56+rdi],r15
962 961
963 » mov» r8,QWORD PTR[rbp] 962 » mov» r8,QWORD[rbp]
964 » mov» r9,QWORD PTR[8+rbp] 963 » mov» r9,QWORD[8+rbp]
965 neg r8 964 neg r8
966 not r9 965 not r9
967 and r8,rcx 966 and r8,rcx
968 » mov» r10,QWORD PTR[16+rbp] 967 » mov» r10,QWORD[16+rbp]
969 and r9,rcx 968 and r9,rcx
970 not r10 969 not r10
971 » mov» r11,QWORD PTR[24+rbp] 970 » mov» r11,QWORD[24+rbp]
972 and r10,rcx 971 and r10,rcx
973 not r11 972 not r11
974 » mov» r12,QWORD PTR[32+rbp] 973 » mov» r12,QWORD[32+rbp]
975 and r11,rcx 974 and r11,rcx
976 not r12 975 not r12
977 » mov» r13,QWORD PTR[40+rbp] 976 » mov» r13,QWORD[40+rbp]
978 and r12,rcx 977 and r12,rcx
979 not r13 978 not r13
980 » mov» r14,QWORD PTR[48+rbp] 979 » mov» r14,QWORD[48+rbp]
981 and r13,rcx 980 and r13,rcx
982 not r14 981 not r14
983 » mov» r15,QWORD PTR[56+rbp] 982 » mov» r15,QWORD[56+rbp]
984 and r14,rcx 983 and r14,rcx
985 not r15 984 not r15
986 and r15,rcx 985 and r15,rcx
987 986
988 » add» r8,QWORD PTR[rdi] 987 » add» r8,QWORD[rdi]
989 » adc» r9,QWORD PTR[8+rdi] 988 » adc» r9,QWORD[8+rdi]
990 » adc» r10,QWORD PTR[16+rdi] 989 » adc» r10,QWORD[16+rdi]
991 » adc» r11,QWORD PTR[24+rdi] 990 » adc» r11,QWORD[24+rdi]
992 » adc» r12,QWORD PTR[32+rdi] 991 » adc» r12,QWORD[32+rdi]
993 » adc» r13,QWORD PTR[40+rdi] 992 » adc» r13,QWORD[40+rdi]
994 » adc» r14,QWORD PTR[48+rdi] 993 » adc» r14,QWORD[48+rdi]
995 » adc» r15,QWORD PTR[56+rdi] 994 » adc» r15,QWORD[56+rdi]
996 995
997 » mov» QWORD PTR[rdi],r8 996 » mov» QWORD[rdi],r8
998 » mov» QWORD PTR[8+rdi],r9 997 » mov» QWORD[8+rdi],r9
999 » mov» QWORD PTR[16+rdi],r10 998 » mov» QWORD[16+rdi],r10
1000 » mov» QWORD PTR[24+rdi],r11 999 » mov» QWORD[24+rdi],r11
1001 » mov» QWORD PTR[32+rdi],r12 1000 » mov» QWORD[32+rdi],r12
1002 » mov» QWORD PTR[40+rdi],r13 1001 » mov» QWORD[40+rdi],r13
1003 » mov» QWORD PTR[48+rdi],r14 1002 » mov» QWORD[48+rdi],r14
1004 » mov» QWORD PTR[56+rdi],r15 1003 » mov» QWORD[56+rdi],r15
1005 1004
1006 DB 0F3h,0C3h ;repret 1005 DB 0F3h,0C3h ;repret
1007 __rsaz_512_subtract» ENDP 1006
1008 1007
1009 ALIGN 32 1008 ALIGN 32
1010 __rsaz_512_mul» PROC PRIVATE 1009 __rsaz_512_mul:
1011 » lea» rdi,QWORD PTR[8+rsp] 1010 » lea» rdi,[8+rsp]
1012 1011
1013 » mov» rax,QWORD PTR[rsi] 1012 » mov» rax,QWORD[rsi]
1014 mul rbx 1013 mul rbx
1015 » mov» QWORD PTR[rdi],rax 1014 » mov» QWORD[rdi],rax
1016 » mov» rax,QWORD PTR[8+rsi] 1015 » mov» rax,QWORD[8+rsi]
1017 mov r8,rdx 1016 mov r8,rdx
1018 1017
1019 mul rbx 1018 mul rbx
1020 add r8,rax 1019 add r8,rax
1021 » mov» rax,QWORD PTR[16+rsi] 1020 » mov» rax,QWORD[16+rsi]
1022 mov r9,rdx 1021 mov r9,rdx
1023 adc r9,0 1022 adc r9,0
1024 1023
1025 mul rbx 1024 mul rbx
1026 add r9,rax 1025 add r9,rax
1027 » mov» rax,QWORD PTR[24+rsi] 1026 » mov» rax,QWORD[24+rsi]
1028 mov r10,rdx 1027 mov r10,rdx
1029 adc r10,0 1028 adc r10,0
1030 1029
1031 mul rbx 1030 mul rbx
1032 add r10,rax 1031 add r10,rax
1033 » mov» rax,QWORD PTR[32+rsi] 1032 » mov» rax,QWORD[32+rsi]
1034 mov r11,rdx 1033 mov r11,rdx
1035 adc r11,0 1034 adc r11,0
1036 1035
1037 mul rbx 1036 mul rbx
1038 add r11,rax 1037 add r11,rax
1039 » mov» rax,QWORD PTR[40+rsi] 1038 » mov» rax,QWORD[40+rsi]
1040 mov r12,rdx 1039 mov r12,rdx
1041 adc r12,0 1040 adc r12,0
1042 1041
1043 mul rbx 1042 mul rbx
1044 add r12,rax 1043 add r12,rax
1045 » mov» rax,QWORD PTR[48+rsi] 1044 » mov» rax,QWORD[48+rsi]
1046 mov r13,rdx 1045 mov r13,rdx
1047 adc r13,0 1046 adc r13,0
1048 1047
1049 mul rbx 1048 mul rbx
1050 add r13,rax 1049 add r13,rax
1051 » mov» rax,QWORD PTR[56+rsi] 1050 » mov» rax,QWORD[56+rsi]
1052 mov r14,rdx 1051 mov r14,rdx
1053 adc r14,0 1052 adc r14,0
1054 1053
1055 mul rbx 1054 mul rbx
1056 add r14,rax 1055 add r14,rax
1057 » mov» rax,QWORD PTR[rsi] 1056 » mov» rax,QWORD[rsi]
1058 mov r15,rdx 1057 mov r15,rdx
1059 adc r15,0 1058 adc r15,0
1060 1059
1061 » lea» rbp,QWORD PTR[8+rbp] 1060 » lea» rbp,[8+rbp]
1062 » lea» rdi,QWORD PTR[8+rdi] 1061 » lea» rdi,[8+rdi]
1063 1062
1064 mov ecx,7 1063 mov ecx,7
1065 » jmp» $L$oop_mul 1064 » jmp» NEAR $L$oop_mul
1066 1065
1067 ALIGN 32 1066 ALIGN 32
1068 $L$oop_mul:: 1067 $L$oop_mul:
1069 » mov» rbx,QWORD PTR[rbp] 1068 » mov» rbx,QWORD[rbp]
1070 mul rbx 1069 mul rbx
1071 add r8,rax 1070 add r8,rax
1072 » mov» rax,QWORD PTR[8+rsi] 1071 » mov» rax,QWORD[8+rsi]
1073 » mov» QWORD PTR[rdi],r8 1072 » mov» QWORD[rdi],r8
1074 mov r8,rdx 1073 mov r8,rdx
1075 adc r8,0 1074 adc r8,0
1076 1075
1077 mul rbx 1076 mul rbx
1078 add r9,rax 1077 add r9,rax
1079 » mov» rax,QWORD PTR[16+rsi] 1078 » mov» rax,QWORD[16+rsi]
1080 adc rdx,0 1079 adc rdx,0
1081 add r8,r9 1080 add r8,r9
1082 mov r9,rdx 1081 mov r9,rdx
1083 adc r9,0 1082 adc r9,0
1084 1083
1085 mul rbx 1084 mul rbx
1086 add r10,rax 1085 add r10,rax
1087 » mov» rax,QWORD PTR[24+rsi] 1086 » mov» rax,QWORD[24+rsi]
1088 adc rdx,0 1087 adc rdx,0
1089 add r9,r10 1088 add r9,r10
1090 mov r10,rdx 1089 mov r10,rdx
1091 adc r10,0 1090 adc r10,0
1092 1091
1093 mul rbx 1092 mul rbx
1094 add r11,rax 1093 add r11,rax
1095 » mov» rax,QWORD PTR[32+rsi] 1094 » mov» rax,QWORD[32+rsi]
1096 adc rdx,0 1095 adc rdx,0
1097 add r10,r11 1096 add r10,r11
1098 mov r11,rdx 1097 mov r11,rdx
1099 adc r11,0 1098 adc r11,0
1100 1099
1101 mul rbx 1100 mul rbx
1102 add r12,rax 1101 add r12,rax
1103 » mov» rax,QWORD PTR[40+rsi] 1102 » mov» rax,QWORD[40+rsi]
1104 adc rdx,0 1103 adc rdx,0
1105 add r11,r12 1104 add r11,r12
1106 mov r12,rdx 1105 mov r12,rdx
1107 adc r12,0 1106 adc r12,0
1108 1107
1109 mul rbx 1108 mul rbx
1110 add r13,rax 1109 add r13,rax
1111 » mov» rax,QWORD PTR[48+rsi] 1110 » mov» rax,QWORD[48+rsi]
1112 adc rdx,0 1111 adc rdx,0
1113 add r12,r13 1112 add r12,r13
1114 mov r13,rdx 1113 mov r13,rdx
1115 adc r13,0 1114 adc r13,0
1116 1115
1117 mul rbx 1116 mul rbx
1118 add r14,rax 1117 add r14,rax
1119 » mov» rax,QWORD PTR[56+rsi] 1118 » mov» rax,QWORD[56+rsi]
1120 adc rdx,0 1119 adc rdx,0
1121 add r13,r14 1120 add r13,r14
1122 mov r14,rdx 1121 mov r14,rdx
1123 » lea» rbp,QWORD PTR[8+rbp] 1122 » lea» rbp,[8+rbp]
1124 adc r14,0 1123 adc r14,0
1125 1124
1126 mul rbx 1125 mul rbx
1127 add r15,rax 1126 add r15,rax
1128 » mov» rax,QWORD PTR[rsi] 1127 » mov» rax,QWORD[rsi]
1129 adc rdx,0 1128 adc rdx,0
1130 add r14,r15 1129 add r14,r15
1131 mov r15,rdx 1130 mov r15,rdx
1132 adc r15,0 1131 adc r15,0
1133 1132
1134 » lea» rdi,QWORD PTR[8+rdi] 1133 » lea» rdi,[8+rdi]
1135 1134
1136 dec ecx 1135 dec ecx
1137 » jnz» $L$oop_mul 1136 » jnz» NEAR $L$oop_mul
1138 1137
1139 » mov» QWORD PTR[rdi],r8 1138 » mov» QWORD[rdi],r8
1140 » mov» QWORD PTR[8+rdi],r9 1139 » mov» QWORD[8+rdi],r9
1141 » mov» QWORD PTR[16+rdi],r10 1140 » mov» QWORD[16+rdi],r10
1142 » mov» QWORD PTR[24+rdi],r11 1141 » mov» QWORD[24+rdi],r11
1143 » mov» QWORD PTR[32+rdi],r12 1142 » mov» QWORD[32+rdi],r12
1144 » mov» QWORD PTR[40+rdi],r13 1143 » mov» QWORD[40+rdi],r13
1145 » mov» QWORD PTR[48+rdi],r14 1144 » mov» QWORD[48+rdi],r14
1146 » mov» QWORD PTR[56+rdi],r15 1145 » mov» QWORD[56+rdi],r15
1147 1146
1148 DB 0F3h,0C3h ;repret 1147 DB 0F3h,0C3h ;repret
1149 __rsaz_512_mul» ENDP 1148
1150 PUBLIC» rsaz_512_scatter4 1149 global» rsaz_512_scatter4
1151 1150
1152 ALIGN 16 1151 ALIGN 16
1153 rsaz_512_scatter4» PROC PUBLIC 1152 rsaz_512_scatter4:
1154 » lea» rcx,QWORD PTR[r8*4+rcx] 1153 » lea» rcx,[r8*4+rcx]
1155 mov r9d,8 1154 mov r9d,8
1156 » jmp» $L$oop_scatter 1155 » jmp» NEAR $L$oop_scatter
1157 ALIGN 16 1156 ALIGN 16
1158 $L$oop_scatter:: 1157 $L$oop_scatter:
1159 » mov» rax,QWORD PTR[rdx] 1158 » mov» rax,QWORD[rdx]
1160 » lea» rdx,QWORD PTR[8+rdx] 1159 » lea» rdx,[8+rdx]
1161 » mov» DWORD PTR[rcx],eax 1160 » mov» DWORD[rcx],eax
1162 shr rax,32 1161 shr rax,32
1163 » mov» DWORD PTR[64+rcx],eax 1162 » mov» DWORD[64+rcx],eax
1164 » lea» rcx,QWORD PTR[128+rcx] 1163 » lea» rcx,[128+rcx]
1165 dec r9d 1164 dec r9d
1166 » jnz» $L$oop_scatter 1165 » jnz» NEAR $L$oop_scatter
1167 DB 0F3h,0C3h ;repret 1166 DB 0F3h,0C3h ;repret
1168 rsaz_512_scatter4 ENDP
1169 1167
1170 PUBLIC» rsaz_512_gather4 1168
1169 global» rsaz_512_gather4
1171 1170
1172 ALIGN 16 1171 ALIGN 16
1173 rsaz_512_gather4» PROC PUBLIC 1172 rsaz_512_gather4:
1174 » lea» rdx,QWORD PTR[r8*4+rdx] 1173 » lea» rdx,[r8*4+rdx]
1175 mov r9d,8 1174 mov r9d,8
1176 » jmp» $L$oop_gather 1175 » jmp» NEAR $L$oop_gather
1177 ALIGN 16 1176 ALIGN 16
1178 $L$oop_gather:: 1177 $L$oop_gather:
1179 » mov» eax,DWORD PTR[rdx] 1178 » mov» eax,DWORD[rdx]
1180 » mov» r8d,DWORD PTR[64+rdx] 1179 » mov» r8d,DWORD[64+rdx]
1181 » lea» rdx,QWORD PTR[128+rdx] 1180 » lea» rdx,[128+rdx]
1182 shl r8,32 1181 shl r8,32
1183 or rax,r8 1182 or rax,r8
1184 » mov» QWORD PTR[rcx],rax 1183 » mov» QWORD[rcx],rax
1185 » lea» rcx,QWORD PTR[8+rcx] 1184 » lea» rcx,[8+rcx]
1186 dec r9d 1185 dec r9d
1187 » jnz» $L$oop_gather 1186 » jnz» NEAR $L$oop_gather
1188 DB 0F3h,0C3h ;repret 1187 DB 0F3h,0C3h ;repret
1189 rsaz_512_gather4» ENDP 1188
1190 EXTERN» __imp_RtlVirtualUnwind:NEAR 1189 EXTERN» __imp_RtlVirtualUnwind
1191 1190
1192 ALIGN 16 1191 ALIGN 16
1193 se_handler» PROC PRIVATE 1192 se_handler:
1194 push rsi 1193 push rsi
1195 push rdi 1194 push rdi
1196 push rbx 1195 push rbx
1197 push rbp 1196 push rbp
1198 push r12 1197 push r12
1199 push r13 1198 push r13
1200 push r14 1199 push r14
1201 push r15 1200 push r15
1202 pushfq 1201 pushfq
1203 sub rsp,64 1202 sub rsp,64
1204 1203
1205 » mov» rax,QWORD PTR[120+r8] 1204 » mov» rax,QWORD[120+r8]
1206 » mov» rbx,QWORD PTR[248+r8] 1205 » mov» rbx,QWORD[248+r8]
1207 1206
1208 » mov» rsi,QWORD PTR[8+r9] 1207 » mov» rsi,QWORD[8+r9]
1209 » mov» r11,QWORD PTR[56+r9] 1208 » mov» r11,QWORD[56+r9]
1210 1209
1211 » mov» r10d,DWORD PTR[r11] 1210 » mov» r10d,DWORD[r11]
1212 » lea» r10,QWORD PTR[r10*1+rsi] 1211 » lea» r10,[r10*1+rsi]
1213 cmp rbx,r10 1212 cmp rbx,r10
1214 » jb» $L$common_seh_tail 1213 » jb» NEAR $L$common_seh_tail
1215 1214
1216 » mov» rax,QWORD PTR[152+r8] 1215 » mov» rax,QWORD[152+r8]
1217 1216
1218 » mov» r10d,DWORD PTR[4+r11] 1217 » mov» r10d,DWORD[4+r11]
1219 » lea» r10,QWORD PTR[r10*1+rsi] 1218 » lea» r10,[r10*1+rsi]
1220 cmp rbx,r10 1219 cmp rbx,r10
1221 » jae» $L$common_seh_tail 1220 » jae» NEAR $L$common_seh_tail
1222 1221
1223 » lea» rax,QWORD PTR[((128+24+48))+rax] 1222 » lea» rax,[((128+24+48))+rax]
1224 1223
1225 » mov» rbx,QWORD PTR[((-8))+rax] 1224 » mov» rbx,QWORD[((-8))+rax]
1226 » mov» rbp,QWORD PTR[((-16))+rax] 1225 » mov» rbp,QWORD[((-16))+rax]
1227 » mov» r12,QWORD PTR[((-24))+rax] 1226 » mov» r12,QWORD[((-24))+rax]
1228 » mov» r13,QWORD PTR[((-32))+rax] 1227 » mov» r13,QWORD[((-32))+rax]
1229 » mov» r14,QWORD PTR[((-40))+rax] 1228 » mov» r14,QWORD[((-40))+rax]
1230 » mov» r15,QWORD PTR[((-48))+rax] 1229 » mov» r15,QWORD[((-48))+rax]
1231 » mov» QWORD PTR[144+r8],rbx 1230 » mov» QWORD[144+r8],rbx
1232 » mov» QWORD PTR[160+r8],rbp 1231 » mov» QWORD[160+r8],rbp
1233 » mov» QWORD PTR[216+r8],r12 1232 » mov» QWORD[216+r8],r12
1234 » mov» QWORD PTR[224+r8],r13 1233 » mov» QWORD[224+r8],r13
1235 » mov» QWORD PTR[232+r8],r14 1234 » mov» QWORD[232+r8],r14
1236 » mov» QWORD PTR[240+r8],r15 1235 » mov» QWORD[240+r8],r15
1237 1236
1238 $L$common_seh_tail:: 1237 $L$common_seh_tail:
1239 » mov» rdi,QWORD PTR[8+rax] 1238 » mov» rdi,QWORD[8+rax]
1240 » mov» rsi,QWORD PTR[16+rax] 1239 » mov» rsi,QWORD[16+rax]
1241 » mov» QWORD PTR[152+r8],rax 1240 » mov» QWORD[152+r8],rax
1242 » mov» QWORD PTR[168+r8],rsi 1241 » mov» QWORD[168+r8],rsi
1243 » mov» QWORD PTR[176+r8],rdi 1242 » mov» QWORD[176+r8],rdi
1244 1243
1245 » mov» rdi,QWORD PTR[40+r9] 1244 » mov» rdi,QWORD[40+r9]
1246 mov rsi,r8 1245 mov rsi,r8
1247 mov ecx,154 1246 mov ecx,154
1248 » DD» 0a548f3fch 1247 » DD» 0xa548f3fc
1249 1248
1250 mov rsi,r9 1249 mov rsi,r9
1251 xor rcx,rcx 1250 xor rcx,rcx
1252 » mov» rdx,QWORD PTR[8+rsi] 1251 » mov» rdx,QWORD[8+rsi]
1253 » mov» r8,QWORD PTR[rsi] 1252 » mov» r8,QWORD[rsi]
1254 » mov» r9,QWORD PTR[16+rsi] 1253 » mov» r9,QWORD[16+rsi]
1255 » mov» r10,QWORD PTR[40+rsi] 1254 » mov» r10,QWORD[40+rsi]
1256 » lea» r11,QWORD PTR[56+rsi] 1255 » lea» r11,[56+rsi]
1257 » lea» r12,QWORD PTR[24+rsi] 1256 » lea» r12,[24+rsi]
1258 » mov» QWORD PTR[32+rsp],r10 1257 » mov» QWORD[32+rsp],r10
1259 » mov» QWORD PTR[40+rsp],r11 1258 » mov» QWORD[40+rsp],r11
1260 » mov» QWORD PTR[48+rsp],r12 1259 » mov» QWORD[48+rsp],r12
1261 » mov» QWORD PTR[56+rsp],rcx 1260 » mov» QWORD[56+rsp],rcx
1262 » call» QWORD PTR[__imp_RtlVirtualUnwind] 1261 » call» QWORD[__imp_RtlVirtualUnwind]
1263 1262
1264 mov eax,1 1263 mov eax,1
1265 add rsp,64 1264 add rsp,64
1266 popfq 1265 popfq
1267 pop r15 1266 pop r15
1268 pop r14 1267 pop r14
1269 pop r13 1268 pop r13
1270 pop r12 1269 pop r12
1271 pop rbp 1270 pop rbp
1272 pop rbx 1271 pop rbx
1273 pop rdi 1272 pop rdi
1274 pop rsi 1273 pop rsi
1275 DB 0F3h,0C3h ;repret 1274 DB 0F3h,0C3h ;repret
1276 se_handler ENDP
1277 1275
1278 .text$» ENDS 1276
1279 .pdata» SEGMENT READONLY ALIGN(4) 1277 section».pdata rdata align=4
1280 ALIGN 4 1278 ALIGN 4
1281 » DD» imagerel $L$SEH_begin_rsaz_512_sqr 1279 » DD» $L$SEH_begin_rsaz_512_sqr wrt ..imagebase
1282 » DD» imagerel $L$SEH_end_rsaz_512_sqr 1280 » DD» $L$SEH_end_rsaz_512_sqr wrt ..imagebase
1283 » DD» imagerel $L$SEH_info_rsaz_512_sqr 1281 » DD» $L$SEH_info_rsaz_512_sqr wrt ..imagebase
1284 1282
1285 » DD» imagerel $L$SEH_begin_rsaz_512_mul 1283 » DD» $L$SEH_begin_rsaz_512_mul wrt ..imagebase
1286 » DD» imagerel $L$SEH_end_rsaz_512_mul 1284 » DD» $L$SEH_end_rsaz_512_mul wrt ..imagebase
1287 » DD» imagerel $L$SEH_info_rsaz_512_mul 1285 » DD» $L$SEH_info_rsaz_512_mul wrt ..imagebase
1288 1286
1289 » DD» imagerel $L$SEH_begin_rsaz_512_mul_gather4 1287 » DD» $L$SEH_begin_rsaz_512_mul_gather4 wrt ..imagebase
1290 » DD» imagerel $L$SEH_end_rsaz_512_mul_gather4 1288 » DD» $L$SEH_end_rsaz_512_mul_gather4 wrt ..imagebase
1291 » DD» imagerel $L$SEH_info_rsaz_512_mul_gather4 1289 » DD» $L$SEH_info_rsaz_512_mul_gather4 wrt ..imagebase
1292 1290
1293 » DD» imagerel $L$SEH_begin_rsaz_512_mul_scatter4 1291 » DD» $L$SEH_begin_rsaz_512_mul_scatter4 wrt ..imagebase
1294 » DD» imagerel $L$SEH_end_rsaz_512_mul_scatter4 1292 » DD» $L$SEH_end_rsaz_512_mul_scatter4 wrt ..imagebase
1295 » DD» imagerel $L$SEH_info_rsaz_512_mul_scatter4 1293 » DD» $L$SEH_info_rsaz_512_mul_scatter4 wrt ..imagebase
1296 1294
1297 » DD» imagerel $L$SEH_begin_rsaz_512_mul_by_one 1295 » DD» $L$SEH_begin_rsaz_512_mul_by_one wrt ..imagebase
1298 » DD» imagerel $L$SEH_end_rsaz_512_mul_by_one 1296 » DD» $L$SEH_end_rsaz_512_mul_by_one wrt ..imagebase
1299 » DD» imagerel $L$SEH_info_rsaz_512_mul_by_one 1297 » DD» $L$SEH_info_rsaz_512_mul_by_one wrt ..imagebase
1300 1298
1301 .pdata» ENDS 1299 section».xdata rdata align=8
1302 .xdata» SEGMENT READONLY ALIGN(8)
1303 ALIGN 8 1300 ALIGN 8
1304 $L$SEH_info_rsaz_512_sqr:: 1301 $L$SEH_info_rsaz_512_sqr:
1305 DB 9,0,0,0 1302 DB 9,0,0,0
1306 » DD» imagerel se_handler 1303 » DD» se_handler wrt ..imagebase
1307 » DD» imagerel $L$sqr_body,imagerel $L$sqr_epilogue 1304 » DD» $L$sqr_body wrt ..imagebase,$L$sqr_epilogue wrt ..imagebase
1308 $L$SEH_info_rsaz_512_mul:: 1305 $L$SEH_info_rsaz_512_mul:
1309 DB 9,0,0,0 1306 DB 9,0,0,0
1310 » DD» imagerel se_handler 1307 » DD» se_handler wrt ..imagebase
1311 » DD» imagerel $L$mul_body,imagerel $L$mul_epilogue 1308 » DD» $L$mul_body wrt ..imagebase,$L$mul_epilogue wrt ..imagebase
1312 $L$SEH_info_rsaz_512_mul_gather4:: 1309 $L$SEH_info_rsaz_512_mul_gather4:
1313 DB 9,0,0,0 1310 DB 9,0,0,0
1314 » DD» imagerel se_handler 1311 » DD» se_handler wrt ..imagebase
1315 » DD» imagerel $L$mul_gather4_body,imagerel $L$mul_gather4_epilogue 1312 » DD» $L$mul_gather4_body wrt ..imagebase,$L$mul_gather4_epilogue wrt ..imagebase
1316 $L$SEH_info_rsaz_512_mul_scatter4:: 1313 $L$SEH_info_rsaz_512_mul_scatter4:
1317 DB 9,0,0,0 1314 DB 9,0,0,0
1318 » DD» imagerel se_handler 1315 » DD» se_handler wrt ..imagebase
1319 » DD» imagerel $L$mul_scatter4_body,imagerel $L$mul_scatter4_epilogue 1316 » DD» $L$mul_scatter4_body wrt ..imagebase,$L$mul_scatter4_epilogue wr t ..imagebase
1320 $L$SEH_info_rsaz_512_mul_by_one:: 1317 $L$SEH_info_rsaz_512_mul_by_one:
1321 DB 9,0,0,0 1318 DB 9,0,0,0
1322 » DD» imagerel se_handler 1319 » DD» se_handler wrt ..imagebase
1323 » DD» imagerel $L$mul_by_one_body,imagerel $L$mul_by_one_epilogue 1320 » DD» $L$mul_by_one_body wrt ..imagebase,$L$mul_by_one_epilogue wrt .. imagebase
1324
1325 .xdata» ENDS
1326 END
OLDNEW
« no previous file with comments | « third_party/boringssl/win-x86_64/crypto/bn/rsaz-avx2.asm ('k') | third_party/boringssl/win-x86_64/crypto/bn/x86_64-mont.asm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698