OLD | NEW |
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 | |
OLD | NEW |