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» bn_mul_mont_gather5 | 8 EXTERN» OPENSSL_ia32cap_P |
| 9 |
| 10 global» bn_mul_mont_gather5 |
7 | 11 |
8 ALIGN 64 | 12 ALIGN 64 |
9 bn_mul_mont_gather5» PROC PUBLIC | 13 bn_mul_mont_gather5: |
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_bn_mul_mont_gather5:: | 17 $L$SEH_begin_bn_mul_mont_gather5: |
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 » mov» r9,QWORD PTR[48+rsp] | 23 » mov» r9,QWORD[48+rsp] |
20 | 24 |
21 | 25 |
22 test r9d,7 | 26 test r9d,7 |
23 » jnz» $L$mul_enter | 27 » jnz» NEAR $L$mul_enter |
24 » jmp» $L$mul4x_enter | 28 » jmp» NEAR $L$mul4x_enter |
25 | 29 |
26 ALIGN 16 | 30 ALIGN 16 |
27 $L$mul_enter:: | 31 $L$mul_enter: |
28 mov r9d,r9d | 32 mov r9d,r9d |
29 mov rax,rsp | 33 mov rax,rsp |
30 » mov» r10d,DWORD PTR[56+rsp] | 34 » mov» r10d,DWORD[56+rsp] |
31 push rbx | 35 push rbx |
32 push rbp | 36 push rbp |
33 push r12 | 37 push r12 |
34 push r13 | 38 push r13 |
35 push r14 | 39 push r14 |
36 push r15 | 40 push r15 |
37 » lea» rsp,QWORD PTR[((-40))+rsp] | 41 » lea» rsp,[((-40))+rsp] |
38 » movaps» XMMWORD PTR[rsp],xmm6 | 42 » movaps» XMMWORD[rsp],xmm6 |
39 » movaps» XMMWORD PTR[16+rsp],xmm7 | 43 » movaps» XMMWORD[16+rsp],xmm7 |
40 » lea» r11,QWORD PTR[2+r9] | 44 » lea» r11,[2+r9] |
41 neg r11 | 45 neg r11 |
42 » lea» rsp,QWORD PTR[r11*8+rsp] | 46 » lea» rsp,[r11*8+rsp] |
43 and rsp,-1024 | 47 and rsp,-1024 |
44 | 48 |
45 » mov» QWORD PTR[8+r9*8+rsp],rax | 49 » mov» QWORD[8+r9*8+rsp],rax |
46 $L$mul_body:: | 50 $L$mul_body: |
47 mov r12,rdx | 51 mov r12,rdx |
48 mov r11,r10 | 52 mov r11,r10 |
49 shr r10,3 | 53 shr r10,3 |
50 and r11,7 | 54 and r11,7 |
51 not r10 | 55 not r10 |
52 » lea» rax,QWORD PTR[$L$magic_masks] | 56 » lea» rax,[$L$magic_masks] |
53 and r10,3 | 57 and r10,3 |
54 » lea» r12,QWORD PTR[96+r11*8+r12] | 58 » lea» r12,[96+r11*8+r12] |
55 » movq» xmm4,QWORD PTR[r10*8+rax] | 59 » movq» xmm4,QWORD[r10*8+rax] |
56 » movq» xmm5,QWORD PTR[8+r10*8+rax] | 60 » movq» xmm5,QWORD[8+r10*8+rax] |
57 » movq» xmm6,QWORD PTR[16+r10*8+rax] | 61 » movq» xmm6,QWORD[16+r10*8+rax] |
58 » movq» xmm7,QWORD PTR[24+r10*8+rax] | 62 » movq» xmm7,QWORD[24+r10*8+rax] |
59 | 63 |
60 » movq» xmm0,QWORD PTR[(((-96)))+r12] | 64 » movq» xmm0,QWORD[(((-96)))+r12] |
61 » movq» xmm1,QWORD PTR[((-32))+r12] | 65 » movq» xmm1,QWORD[((-32))+r12] |
62 pand xmm0,xmm4 | 66 pand xmm0,xmm4 |
63 » movq» xmm2,QWORD PTR[32+r12] | 67 » movq» xmm2,QWORD[32+r12] |
64 pand xmm1,xmm5 | 68 pand xmm1,xmm5 |
65 » movq» xmm3,QWORD PTR[96+r12] | 69 » movq» xmm3,QWORD[96+r12] |
66 pand xmm2,xmm6 | 70 pand xmm2,xmm6 |
67 por xmm0,xmm1 | 71 por xmm0,xmm1 |
68 pand xmm3,xmm7 | 72 pand xmm3,xmm7 |
69 por xmm0,xmm2 | 73 por xmm0,xmm2 |
70 » lea» r12,QWORD PTR[256+r12] | 74 » lea» r12,[256+r12] |
71 por xmm0,xmm3 | 75 por xmm0,xmm3 |
72 | 76 |
73 DB 102,72,15,126,195 | 77 DB 102,72,15,126,195 |
74 | 78 |
75 » mov» r8,QWORD PTR[r8] | 79 » mov» r8,QWORD[r8] |
76 » mov» rax,QWORD PTR[rsi] | 80 » mov» rax,QWORD[rsi] |
77 | 81 |
78 xor r14,r14 | 82 xor r14,r14 |
79 xor r15,r15 | 83 xor r15,r15 |
80 | 84 |
81 » movq» xmm0,QWORD PTR[(((-96)))+r12] | 85 » movq» xmm0,QWORD[(((-96)))+r12] |
82 » movq» xmm1,QWORD PTR[((-32))+r12] | 86 » movq» xmm1,QWORD[((-32))+r12] |
83 pand xmm0,xmm4 | 87 pand xmm0,xmm4 |
84 » movq» xmm2,QWORD PTR[32+r12] | 88 » movq» xmm2,QWORD[32+r12] |
85 pand xmm1,xmm5 | 89 pand xmm1,xmm5 |
86 | 90 |
87 mov rbp,r8 | 91 mov rbp,r8 |
88 mul rbx | 92 mul rbx |
89 mov r10,rax | 93 mov r10,rax |
90 » mov» rax,QWORD PTR[rcx] | 94 » mov» rax,QWORD[rcx] |
91 | 95 |
92 » movq» xmm3,QWORD PTR[96+r12] | 96 » movq» xmm3,QWORD[96+r12] |
93 pand xmm2,xmm6 | 97 pand xmm2,xmm6 |
94 por xmm0,xmm1 | 98 por xmm0,xmm1 |
95 pand xmm3,xmm7 | 99 pand xmm3,xmm7 |
96 | 100 |
97 imul rbp,r10 | 101 imul rbp,r10 |
98 mov r11,rdx | 102 mov r11,rdx |
99 | 103 |
100 por xmm0,xmm2 | 104 por xmm0,xmm2 |
101 » lea» r12,QWORD PTR[256+r12] | 105 » lea» r12,[256+r12] |
102 por xmm0,xmm3 | 106 por xmm0,xmm3 |
103 | 107 |
104 mul rbp | 108 mul rbp |
105 add r10,rax | 109 add r10,rax |
106 » mov» rax,QWORD PTR[8+rsi] | 110 » mov» rax,QWORD[8+rsi] |
107 adc rdx,0 | 111 adc rdx,0 |
108 mov r13,rdx | 112 mov r13,rdx |
109 | 113 |
110 » lea» r15,QWORD PTR[1+r15] | 114 » lea» r15,[1+r15] |
111 » jmp» $L$1st_enter | 115 » jmp» NEAR $L$1st_enter |
112 | 116 |
113 ALIGN 16 | 117 ALIGN 16 |
114 $L$1st:: | 118 $L$1st: |
115 add r13,rax | 119 add r13,rax |
116 » mov» rax,QWORD PTR[r15*8+rsi] | 120 » mov» rax,QWORD[r15*8+rsi] |
117 adc rdx,0 | 121 adc rdx,0 |
118 add r13,r11 | 122 add r13,r11 |
119 mov r11,r10 | 123 mov r11,r10 |
120 adc rdx,0 | 124 adc rdx,0 |
121 » mov» QWORD PTR[((-16))+r15*8+rsp],r13 | 125 » mov» QWORD[((-16))+r15*8+rsp],r13 |
122 mov r13,rdx | 126 mov r13,rdx |
123 | 127 |
124 $L$1st_enter:: | 128 $L$1st_enter: |
125 mul rbx | 129 mul rbx |
126 add r11,rax | 130 add r11,rax |
127 » mov» rax,QWORD PTR[r15*8+rcx] | 131 » mov» rax,QWORD[r15*8+rcx] |
128 adc rdx,0 | 132 adc rdx,0 |
129 » lea» r15,QWORD PTR[1+r15] | 133 » lea» r15,[1+r15] |
130 mov r10,rdx | 134 mov r10,rdx |
131 | 135 |
132 mul rbp | 136 mul rbp |
133 cmp r15,r9 | 137 cmp r15,r9 |
134 » jne» $L$1st | 138 » jne» NEAR $L$1st |
135 | 139 |
136 DB 102,72,15,126,195 | 140 DB 102,72,15,126,195 |
137 | 141 |
138 add r13,rax | 142 add r13,rax |
139 » mov» rax,QWORD PTR[rsi] | 143 » mov» rax,QWORD[rsi] |
140 adc rdx,0 | 144 adc rdx,0 |
141 add r13,r11 | 145 add r13,r11 |
142 adc rdx,0 | 146 adc rdx,0 |
143 » mov» QWORD PTR[((-16))+r15*8+rsp],r13 | 147 » mov» QWORD[((-16))+r15*8+rsp],r13 |
144 mov r13,rdx | 148 mov r13,rdx |
145 mov r11,r10 | 149 mov r11,r10 |
146 | 150 |
147 xor rdx,rdx | 151 xor rdx,rdx |
148 add r13,r11 | 152 add r13,r11 |
149 adc rdx,0 | 153 adc rdx,0 |
150 » mov» QWORD PTR[((-8))+r9*8+rsp],r13 | 154 » mov» QWORD[((-8))+r9*8+rsp],r13 |
151 » mov» QWORD PTR[r9*8+rsp],rdx | 155 » mov» QWORD[r9*8+rsp],rdx |
152 | 156 |
153 » lea» r14,QWORD PTR[1+r14] | 157 » lea» r14,[1+r14] |
154 » jmp» $L$outer | 158 » jmp» NEAR $L$outer |
155 ALIGN 16 | 159 ALIGN 16 |
156 $L$outer:: | 160 $L$outer: |
157 xor r15,r15 | 161 xor r15,r15 |
158 mov rbp,r8 | 162 mov rbp,r8 |
159 » mov» r10,QWORD PTR[rsp] | 163 » mov» r10,QWORD[rsp] |
160 | 164 |
161 » movq» xmm0,QWORD PTR[(((-96)))+r12] | 165 » movq» xmm0,QWORD[(((-96)))+r12] |
162 » movq» xmm1,QWORD PTR[((-32))+r12] | 166 » movq» xmm1,QWORD[((-32))+r12] |
163 pand xmm0,xmm4 | 167 pand xmm0,xmm4 |
164 » movq» xmm2,QWORD PTR[32+r12] | 168 » movq» xmm2,QWORD[32+r12] |
165 pand xmm1,xmm5 | 169 pand xmm1,xmm5 |
166 | 170 |
167 mul rbx | 171 mul rbx |
168 add r10,rax | 172 add r10,rax |
169 » mov» rax,QWORD PTR[rcx] | 173 » mov» rax,QWORD[rcx] |
170 adc rdx,0 | 174 adc rdx,0 |
171 | 175 |
172 » movq» xmm3,QWORD PTR[96+r12] | 176 » movq» xmm3,QWORD[96+r12] |
173 pand xmm2,xmm6 | 177 pand xmm2,xmm6 |
174 por xmm0,xmm1 | 178 por xmm0,xmm1 |
175 pand xmm3,xmm7 | 179 pand xmm3,xmm7 |
176 | 180 |
177 imul rbp,r10 | 181 imul rbp,r10 |
178 mov r11,rdx | 182 mov r11,rdx |
179 | 183 |
180 por xmm0,xmm2 | 184 por xmm0,xmm2 |
181 » lea» r12,QWORD PTR[256+r12] | 185 » lea» r12,[256+r12] |
182 por xmm0,xmm3 | 186 por xmm0,xmm3 |
183 | 187 |
184 mul rbp | 188 mul rbp |
185 add r10,rax | 189 add r10,rax |
186 » mov» rax,QWORD PTR[8+rsi] | 190 » mov» rax,QWORD[8+rsi] |
187 adc rdx,0 | 191 adc rdx,0 |
188 » mov» r10,QWORD PTR[8+rsp] | 192 » mov» r10,QWORD[8+rsp] |
189 mov r13,rdx | 193 mov r13,rdx |
190 | 194 |
191 » lea» r15,QWORD PTR[1+r15] | 195 » lea» r15,[1+r15] |
192 » jmp» $L$inner_enter | 196 » jmp» NEAR $L$inner_enter |
193 | 197 |
194 ALIGN 16 | 198 ALIGN 16 |
195 $L$inner:: | 199 $L$inner: |
196 add r13,rax | 200 add r13,rax |
197 » mov» rax,QWORD PTR[r15*8+rsi] | 201 » mov» rax,QWORD[r15*8+rsi] |
198 adc rdx,0 | 202 adc rdx,0 |
199 add r13,r10 | 203 add r13,r10 |
200 » mov» r10,QWORD PTR[r15*8+rsp] | 204 » mov» r10,QWORD[r15*8+rsp] |
201 adc rdx,0 | 205 adc rdx,0 |
202 » mov» QWORD PTR[((-16))+r15*8+rsp],r13 | 206 » mov» QWORD[((-16))+r15*8+rsp],r13 |
203 mov r13,rdx | 207 mov r13,rdx |
204 | 208 |
205 $L$inner_enter:: | 209 $L$inner_enter: |
206 mul rbx | 210 mul rbx |
207 add r11,rax | 211 add r11,rax |
208 » mov» rax,QWORD PTR[r15*8+rcx] | 212 » mov» rax,QWORD[r15*8+rcx] |
209 adc rdx,0 | 213 adc rdx,0 |
210 add r10,r11 | 214 add r10,r11 |
211 mov r11,rdx | 215 mov r11,rdx |
212 adc r11,0 | 216 adc r11,0 |
213 » lea» r15,QWORD PTR[1+r15] | 217 » lea» r15,[1+r15] |
214 | 218 |
215 mul rbp | 219 mul rbp |
216 cmp r15,r9 | 220 cmp r15,r9 |
217 » jne» $L$inner | 221 » jne» NEAR $L$inner |
218 | 222 |
219 DB 102,72,15,126,195 | 223 DB 102,72,15,126,195 |
220 | 224 |
221 add r13,rax | 225 add r13,rax |
222 » mov» rax,QWORD PTR[rsi] | 226 » mov» rax,QWORD[rsi] |
223 adc rdx,0 | 227 adc rdx,0 |
224 add r13,r10 | 228 add r13,r10 |
225 » mov» r10,QWORD PTR[r15*8+rsp] | 229 » mov» r10,QWORD[r15*8+rsp] |
226 adc rdx,0 | 230 adc rdx,0 |
227 » mov» QWORD PTR[((-16))+r15*8+rsp],r13 | 231 » mov» QWORD[((-16))+r15*8+rsp],r13 |
228 mov r13,rdx | 232 mov r13,rdx |
229 | 233 |
230 xor rdx,rdx | 234 xor rdx,rdx |
231 add r13,r11 | 235 add r13,r11 |
232 adc rdx,0 | 236 adc rdx,0 |
233 add r13,r10 | 237 add r13,r10 |
234 adc rdx,0 | 238 adc rdx,0 |
235 » mov» QWORD PTR[((-8))+r9*8+rsp],r13 | 239 » mov» QWORD[((-8))+r9*8+rsp],r13 |
236 » mov» QWORD PTR[r9*8+rsp],rdx | 240 » mov» QWORD[r9*8+rsp],rdx |
237 | 241 |
238 » lea» r14,QWORD PTR[1+r14] | 242 » lea» r14,[1+r14] |
239 cmp r14,r9 | 243 cmp r14,r9 |
240 » jb» $L$outer | 244 » jb» NEAR $L$outer |
241 | 245 |
242 xor r14,r14 | 246 xor r14,r14 |
243 » mov» rax,QWORD PTR[rsp] | 247 » mov» rax,QWORD[rsp] |
244 » lea» rsi,QWORD PTR[rsp] | 248 » lea» rsi,[rsp] |
245 mov r15,r9 | 249 mov r15,r9 |
246 » jmp» $L$sub | 250 » jmp» NEAR $L$sub |
247 ALIGN 16 | 251 ALIGN 16 |
248 $L$sub::» sbb» rax,QWORD PTR[r14*8+rcx] | 252 $L$sub:»sbb» rax,QWORD[r14*8+rcx] |
249 » mov» QWORD PTR[r14*8+rdi],rax | 253 » mov» QWORD[r14*8+rdi],rax |
250 » mov» rax,QWORD PTR[8+r14*8+rsi] | 254 » mov» rax,QWORD[8+r14*8+rsi] |
251 » lea» r14,QWORD PTR[1+r14] | 255 » lea» r14,[1+r14] |
252 dec r15 | 256 dec r15 |
253 » jnz» $L$sub | 257 » jnz» NEAR $L$sub |
254 | 258 |
255 sbb rax,0 | 259 sbb rax,0 |
256 xor r14,r14 | 260 xor r14,r14 |
257 mov r15,r9 | 261 mov r15,r9 |
258 ALIGN 16 | 262 ALIGN 16 |
259 $L$copy:: | 263 $L$copy: |
260 » mov» rsi,QWORD PTR[r14*8+rsp] | 264 » mov» rsi,QWORD[r14*8+rsp] |
261 » mov» rcx,QWORD PTR[r14*8+rdi] | 265 » mov» rcx,QWORD[r14*8+rdi] |
262 xor rsi,rcx | 266 xor rsi,rcx |
263 and rsi,rax | 267 and rsi,rax |
264 xor rsi,rcx | 268 xor rsi,rcx |
265 » mov» QWORD PTR[r14*8+rsp],r14 | 269 » mov» QWORD[r14*8+rsp],r14 |
266 » mov» QWORD PTR[r14*8+rdi],rsi | 270 » mov» QWORD[r14*8+rdi],rsi |
267 » lea» r14,QWORD PTR[1+r14] | 271 » lea» r14,[1+r14] |
268 sub r15,1 | 272 sub r15,1 |
269 » jnz» $L$copy | 273 » jnz» NEAR $L$copy |
270 | 274 |
271 » mov» rsi,QWORD PTR[8+r9*8+rsp] | 275 » mov» rsi,QWORD[8+r9*8+rsp] |
272 mov rax,1 | 276 mov rax,1 |
273 » movaps» xmm6,XMMWORD PTR[((-88))+rsi] | 277 » movaps» xmm6,XMMWORD[((-88))+rsi] |
274 » movaps» xmm7,XMMWORD PTR[((-72))+rsi] | 278 » movaps» xmm7,XMMWORD[((-72))+rsi] |
275 » mov» r15,QWORD PTR[((-48))+rsi] | 279 » mov» r15,QWORD[((-48))+rsi] |
276 » mov» r14,QWORD PTR[((-40))+rsi] | 280 » mov» r14,QWORD[((-40))+rsi] |
277 » mov» r13,QWORD PTR[((-32))+rsi] | 281 » mov» r13,QWORD[((-32))+rsi] |
278 » mov» r12,QWORD PTR[((-24))+rsi] | 282 » mov» r12,QWORD[((-24))+rsi] |
279 » mov» rbp,QWORD PTR[((-16))+rsi] | 283 » mov» rbp,QWORD[((-16))+rsi] |
280 » mov» rbx,QWORD PTR[((-8))+rsi] | 284 » mov» rbx,QWORD[((-8))+rsi] |
281 » lea» rsp,QWORD PTR[rsi] | 285 » lea» rsp,[rsi] |
282 $L$mul_epilogue:: | 286 $L$mul_epilogue: |
283 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue | 287 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue |
284 » mov» rsi,QWORD PTR[16+rsp] | 288 » mov» rsi,QWORD[16+rsp] |
285 DB 0F3h,0C3h ;repret | 289 DB 0F3h,0C3h ;repret |
286 $L$SEH_end_bn_mul_mont_gather5:: | 290 $L$SEH_end_bn_mul_mont_gather5: |
287 bn_mul_mont_gather5» ENDP | |
288 | 291 |
289 ALIGN 32 | 292 ALIGN 32 |
290 bn_mul4x_mont_gather5» PROC PRIVATE | 293 bn_mul4x_mont_gather5: |
291 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue | 294 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue |
292 » mov» QWORD PTR[16+rsp],rsi | 295 » mov» QWORD[16+rsp],rsi |
293 mov rax,rsp | 296 mov rax,rsp |
294 $L$SEH_begin_bn_mul4x_mont_gather5:: | 297 $L$SEH_begin_bn_mul4x_mont_gather5: |
295 mov rdi,rcx | 298 mov rdi,rcx |
296 mov rsi,rdx | 299 mov rsi,rdx |
297 mov rdx,r8 | 300 mov rdx,r8 |
298 mov rcx,r9 | 301 mov rcx,r9 |
299 » mov» r8,QWORD PTR[40+rsp] | 302 » mov» r8,QWORD[40+rsp] |
300 » mov» r9,QWORD PTR[48+rsp] | 303 » mov» r9,QWORD[48+rsp] |
301 | 304 |
302 | 305 |
303 $L$mul4x_enter:: | 306 $L$mul4x_enter: |
304 DB» 067h | 307 DB» 0x67 |
305 mov rax,rsp | 308 mov rax,rsp |
306 push rbx | 309 push rbx |
307 push rbp | 310 push rbp |
308 push r12 | 311 push r12 |
309 push r13 | 312 push r13 |
310 push r14 | 313 push r14 |
311 push r15 | 314 push r15 |
312 » lea» rsp,QWORD PTR[((-40))+rsp] | 315 » lea» rsp,[((-40))+rsp] |
313 » movaps» XMMWORD PTR[rsp],xmm6 | 316 » movaps» XMMWORD[rsp],xmm6 |
314 » movaps» XMMWORD PTR[16+rsp],xmm7 | 317 » movaps» XMMWORD[16+rsp],xmm7 |
315 DB» 067h | 318 DB» 0x67 |
316 mov r10d,r9d | 319 mov r10d,r9d |
317 shl r9d,3 | 320 shl r9d,3 |
318 shl r10d,3+2 | 321 shl r10d,3+2 |
319 neg r9 | 322 neg r9 |
320 | 323 |
321 | 324 |
322 | 325 |
323 | 326 |
324 | 327 |
325 | 328 |
326 | 329 |
327 | 330 |
328 » lea» r11,QWORD PTR[((-64))+r9*2+rsp] | 331 » lea» r11,[((-64))+r9*2+rsp] |
329 sub r11,rsi | 332 sub r11,rsi |
330 and r11,4095 | 333 and r11,4095 |
331 cmp r10,r11 | 334 cmp r10,r11 |
332 » jb» $L$mul4xsp_alt | 335 » jb» NEAR $L$mul4xsp_alt |
333 sub rsp,r11 | 336 sub rsp,r11 |
334 » lea» rsp,QWORD PTR[((-64))+r9*2+rsp] | 337 » lea» rsp,[((-64))+r9*2+rsp] |
335 » jmp» $L$mul4xsp_done | 338 » jmp» NEAR $L$mul4xsp_done |
336 | 339 |
337 ALIGN 32 | 340 ALIGN 32 |
338 $L$mul4xsp_alt:: | 341 $L$mul4xsp_alt: |
339 » lea» r10,QWORD PTR[((4096-64))+r9*2] | 342 » lea» r10,[((4096-64))+r9*2] |
340 » lea» rsp,QWORD PTR[((-64))+r9*2+rsp] | 343 » lea» rsp,[((-64))+r9*2+rsp] |
341 sub r11,r10 | 344 sub r11,r10 |
342 mov r10,0 | 345 mov r10,0 |
343 cmovc r11,r10 | 346 cmovc r11,r10 |
344 sub rsp,r11 | 347 sub rsp,r11 |
345 $L$mul4xsp_done:: | 348 $L$mul4xsp_done: |
346 and rsp,-64 | 349 and rsp,-64 |
347 neg r9 | 350 neg r9 |
348 | 351 |
349 » mov» QWORD PTR[40+rsp],rax | 352 » mov» QWORD[40+rsp],rax |
350 $L$mul4x_body:: | 353 $L$mul4x_body: |
351 | 354 |
352 call mul4x_internal | 355 call mul4x_internal |
353 | 356 |
354 » mov» rsi,QWORD PTR[40+rsp] | 357 » mov» rsi,QWORD[40+rsp] |
355 mov rax,1 | 358 mov rax,1 |
356 » movaps» xmm6,XMMWORD PTR[((-88))+rsi] | 359 » movaps» xmm6,XMMWORD[((-88))+rsi] |
357 » movaps» xmm7,XMMWORD PTR[((-72))+rsi] | 360 » movaps» xmm7,XMMWORD[((-72))+rsi] |
358 » mov» r15,QWORD PTR[((-48))+rsi] | 361 » mov» r15,QWORD[((-48))+rsi] |
359 » mov» r14,QWORD PTR[((-40))+rsi] | 362 » mov» r14,QWORD[((-40))+rsi] |
360 » mov» r13,QWORD PTR[((-32))+rsi] | 363 » mov» r13,QWORD[((-32))+rsi] |
361 » mov» r12,QWORD PTR[((-24))+rsi] | 364 » mov» r12,QWORD[((-24))+rsi] |
362 » mov» rbp,QWORD PTR[((-16))+rsi] | 365 » mov» rbp,QWORD[((-16))+rsi] |
363 » mov» rbx,QWORD PTR[((-8))+rsi] | 366 » mov» rbx,QWORD[((-8))+rsi] |
364 » lea» rsp,QWORD PTR[rsi] | 367 » lea» rsp,[rsi] |
365 $L$mul4x_epilogue:: | 368 $L$mul4x_epilogue: |
366 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue | 369 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue |
367 » mov» rsi,QWORD PTR[16+rsp] | 370 » mov» rsi,QWORD[16+rsp] |
368 DB 0F3h,0C3h ;repret | 371 DB 0F3h,0C3h ;repret |
369 $L$SEH_end_bn_mul4x_mont_gather5:: | 372 $L$SEH_end_bn_mul4x_mont_gather5: |
370 bn_mul4x_mont_gather5» ENDP | |
371 | 373 |
372 | 374 |
373 ALIGN 32 | 375 ALIGN 32 |
374 mul4x_internal» PROC PRIVATE | 376 mul4x_internal: |
375 shl r9,5 | 377 shl r9,5 |
376 » mov» r10d,DWORD PTR[56+rax] | 378 » mov» r10d,DWORD[56+rax] |
377 » lea» r13,QWORD PTR[256+r9*1+rdx] | 379 » lea» r13,[256+r9*1+rdx] |
378 shr r9,5 | 380 shr r9,5 |
379 mov r11,r10 | 381 mov r11,r10 |
380 shr r10,3 | 382 shr r10,3 |
381 and r11,7 | 383 and r11,7 |
382 not r10 | 384 not r10 |
383 » lea» rax,QWORD PTR[$L$magic_masks] | 385 » lea» rax,[$L$magic_masks] |
384 and r10,3 | 386 and r10,3 |
385 » lea» r12,QWORD PTR[96+r11*8+rdx] | 387 » lea» r12,[96+r11*8+rdx] |
386 » movq» xmm4,QWORD PTR[r10*8+rax] | 388 » movq» xmm4,QWORD[r10*8+rax] |
387 » movq» xmm5,QWORD PTR[8+r10*8+rax] | 389 » movq» xmm5,QWORD[8+r10*8+rax] |
388 add r11,7 | 390 add r11,7 |
389 » movq» xmm6,QWORD PTR[16+r10*8+rax] | 391 » movq» xmm6,QWORD[16+r10*8+rax] |
390 » movq» xmm7,QWORD PTR[24+r10*8+rax] | 392 » movq» xmm7,QWORD[24+r10*8+rax] |
391 and r11,7 | 393 and r11,7 |
392 | 394 |
393 » movq» xmm0,QWORD PTR[(((-96)))+r12] | 395 » movq» xmm0,QWORD[(((-96)))+r12] |
394 » lea» r14,QWORD PTR[256+r12] | 396 » lea» r14,[256+r12] |
395 » movq» xmm1,QWORD PTR[((-32))+r12] | 397 » movq» xmm1,QWORD[((-32))+r12] |
396 pand xmm0,xmm4 | 398 pand xmm0,xmm4 |
397 » movq» xmm2,QWORD PTR[32+r12] | 399 » movq» xmm2,QWORD[32+r12] |
398 pand xmm1,xmm5 | 400 pand xmm1,xmm5 |
399 » movq» xmm3,QWORD PTR[96+r12] | 401 » movq» xmm3,QWORD[96+r12] |
400 pand xmm2,xmm6 | 402 pand xmm2,xmm6 |
401 DB» 067h | 403 DB» 0x67 |
402 por xmm0,xmm1 | 404 por xmm0,xmm1 |
403 » movq» xmm1,QWORD PTR[((-96))+r14] | 405 » movq» xmm1,QWORD[((-96))+r14] |
404 DB» 067h | 406 DB» 0x67 |
405 pand xmm3,xmm7 | 407 pand xmm3,xmm7 |
406 DB» 067h | 408 DB» 0x67 |
407 por xmm0,xmm2 | 409 por xmm0,xmm2 |
408 » movq» xmm2,QWORD PTR[((-32))+r14] | 410 » movq» xmm2,QWORD[((-32))+r14] |
409 DB» 067h | 411 DB» 0x67 |
410 pand xmm1,xmm4 | 412 pand xmm1,xmm4 |
411 DB» 067h | 413 DB» 0x67 |
412 por xmm0,xmm3 | 414 por xmm0,xmm3 |
413 » movq» xmm3,QWORD PTR[32+r14] | 415 » movq» xmm3,QWORD[32+r14] |
414 | 416 |
415 DB 102,72,15,126,195 | 417 DB 102,72,15,126,195 |
416 » movq» xmm0,QWORD PTR[96+r14] | 418 » movq» xmm0,QWORD[96+r14] |
417 » mov» QWORD PTR[((16+8))+rsp],r13 | 419 » mov» QWORD[((16+8))+rsp],r13 |
418 » mov» QWORD PTR[((56+8))+rsp],rdi | 420 » mov» QWORD[((56+8))+rsp],rdi |
419 | 421 |
420 » mov» r8,QWORD PTR[r8] | 422 » mov» r8,QWORD[r8] |
421 » mov» rax,QWORD PTR[rsi] | 423 » mov» rax,QWORD[rsi] |
422 » lea» rsi,QWORD PTR[r9*1+rsi] | 424 » lea» rsi,[r9*1+rsi] |
423 neg r9 | 425 neg r9 |
424 | 426 |
425 mov rbp,r8 | 427 mov rbp,r8 |
426 mul rbx | 428 mul rbx |
427 mov r10,rax | 429 mov r10,rax |
428 » mov» rax,QWORD PTR[rcx] | 430 » mov» rax,QWORD[rcx] |
429 | 431 |
430 pand xmm2,xmm5 | 432 pand xmm2,xmm5 |
431 pand xmm3,xmm6 | 433 pand xmm3,xmm6 |
432 por xmm1,xmm2 | 434 por xmm1,xmm2 |
433 | 435 |
434 imul rbp,r10 | 436 imul rbp,r10 |
435 | 437 |
436 | 438 |
437 | 439 |
438 | 440 |
439 | 441 |
440 | 442 |
441 | 443 |
442 » lea» r14,QWORD PTR[((64+8))+r11*8+rsp] | 444 » lea» r14,[((64+8))+r11*8+rsp] |
443 mov r11,rdx | 445 mov r11,rdx |
444 | 446 |
445 pand xmm0,xmm7 | 447 pand xmm0,xmm7 |
446 por xmm1,xmm3 | 448 por xmm1,xmm3 |
447 » lea» r12,QWORD PTR[512+r12] | 449 » lea» r12,[512+r12] |
448 por xmm0,xmm1 | 450 por xmm0,xmm1 |
449 | 451 |
450 mul rbp | 452 mul rbp |
451 add r10,rax | 453 add r10,rax |
452 » mov» rax,QWORD PTR[8+r9*1+rsi] | 454 » mov» rax,QWORD[8+r9*1+rsi] |
453 » adc» rdx,0 | 455 » adc» rdx,0 |
454 » mov» rdi,rdx | 456 » mov» rdi,rdx |
455 | 457 |
456 » mul» rbx | 458 » mul» rbx |
457 » add» r11,rax | 459 » add» r11,rax |
458 » mov» rax,QWORD PTR[16+rcx] | 460 » mov» rax,QWORD[16+rcx] |
459 » adc» rdx,0 | 461 » adc» rdx,0 |
460 » mov» r10,rdx | 462 » mov» r10,rdx |
461 | 463 |
462 » mul» rbp | 464 » mul» rbp |
463 » add» rdi,rax | 465 » add» rdi,rax |
464 » mov» rax,QWORD PTR[16+r9*1+rsi] | 466 » mov» rax,QWORD[16+r9*1+rsi] |
465 » adc» rdx,0 | 467 » adc» rdx,0 |
466 » add» rdi,r11 | 468 » add» rdi,r11 |
467 » lea» r15,QWORD PTR[32+r9] | 469 » lea» r15,[32+r9] |
468 » lea» rcx,QWORD PTR[64+rcx] | 470 » lea» rcx,[64+rcx] |
469 » adc» rdx,0 | 471 » adc» rdx,0 |
470 » mov» QWORD PTR[r14],rdi | 472 » mov» QWORD[r14],rdi |
471 » mov» r13,rdx | 473 » mov» r13,rdx |
472 » jmp» $L$1st4x | 474 » jmp» NEAR $L$1st4x |
473 | 475 |
474 ALIGN 32 | 476 ALIGN 32 |
475 $L$1st4x:: | 477 $L$1st4x: |
476 » mul» rbx | 478 » mul» rbx |
477 » add» r10,rax | 479 » add» r10,rax |
478 » mov» rax,QWORD PTR[((-32))+rcx] | 480 » mov» rax,QWORD[((-32))+rcx] |
479 » lea» r14,QWORD PTR[32+r14] | 481 » lea» r14,[32+r14] |
480 » adc» rdx,0 | 482 » adc» rdx,0 |
481 » mov» r11,rdx | 483 » mov» r11,rdx |
482 | 484 |
483 » mul» rbp | 485 » mul» rbp |
484 » add» r13,rax | 486 » add» r13,rax |
485 » mov» rax,QWORD PTR[((-8))+r15*1+rsi] | 487 » mov» rax,QWORD[((-8))+r15*1+rsi] |
486 » adc» rdx,0 | 488 » adc» rdx,0 |
487 » add» r13,r10 | 489 » add» r13,r10 |
488 » adc» rdx,0 | 490 » adc» rdx,0 |
489 » mov» QWORD PTR[((-24))+r14],r13 | 491 » mov» QWORD[((-24))+r14],r13 |
490 » mov» rdi,rdx | 492 » mov» rdi,rdx |
491 | 493 |
492 » mul» rbx | 494 » mul» rbx |
493 » add» r11,rax | 495 » add» r11,rax |
494 » mov» rax,QWORD PTR[((-16))+rcx] | 496 » mov» rax,QWORD[((-16))+rcx] |
495 » adc» rdx,0 | 497 » adc» rdx,0 |
496 » mov» r10,rdx | 498 » mov» r10,rdx |
497 | 499 |
498 » mul» rbp | 500 » mul» rbp |
499 » add» rdi,rax | 501 » add» rdi,rax |
500 » mov» rax,QWORD PTR[r15*1+rsi] | 502 » mov» rax,QWORD[r15*1+rsi] |
501 » adc» rdx,0 | 503 » adc» rdx,0 |
502 » add» rdi,r11 | 504 » add» rdi,r11 |
503 » adc» rdx,0 | 505 » adc» rdx,0 |
504 » mov» QWORD PTR[((-16))+r14],rdi | 506 » mov» QWORD[((-16))+r14],rdi |
505 » mov» r13,rdx | 507 » mov» r13,rdx |
506 | 508 |
507 » mul» rbx | 509 » mul» rbx |
508 » add» r10,rax | 510 » add» r10,rax |
509 » mov» rax,QWORD PTR[rcx] | 511 » mov» rax,QWORD[rcx] |
510 » adc» rdx,0 | 512 » adc» rdx,0 |
511 » mov» r11,rdx | 513 » mov» r11,rdx |
512 | 514 |
513 » mul» rbp | 515 » mul» rbp |
514 » add» r13,rax | 516 » add» r13,rax |
515 » mov» rax,QWORD PTR[8+r15*1+rsi] | 517 » mov» rax,QWORD[8+r15*1+rsi] |
516 » adc» rdx,0 | 518 » adc» rdx,0 |
517 » add» r13,r10 | 519 » add» r13,r10 |
518 » adc» rdx,0 | 520 » adc» rdx,0 |
519 » mov» QWORD PTR[((-8))+r14],r13 | 521 » mov» QWORD[((-8))+r14],r13 |
520 » mov» rdi,rdx | 522 » mov» rdi,rdx |
521 | 523 |
522 » mul» rbx | 524 » mul» rbx |
523 » add» r11,rax | 525 » add» r11,rax |
524 » mov» rax,QWORD PTR[16+rcx] | 526 » mov» rax,QWORD[16+rcx] |
525 » adc» rdx,0 | 527 » adc» rdx,0 |
526 » mov» r10,rdx | 528 » mov» r10,rdx |
527 | 529 |
528 » mul» rbp | 530 » mul» rbp |
529 » add» rdi,rax | 531 » add» rdi,rax |
530 » mov» rax,QWORD PTR[16+r15*1+rsi] | 532 » mov» rax,QWORD[16+r15*1+rsi] |
531 » adc» rdx,0 | 533 » adc» rdx,0 |
532 » add» rdi,r11 | 534 » add» rdi,r11 |
533 » lea» rcx,QWORD PTR[64+rcx] | 535 » lea» rcx,[64+rcx] |
534 » adc» rdx,0 | 536 » adc» rdx,0 |
535 » mov» QWORD PTR[r14],rdi | 537 » mov» QWORD[r14],rdi |
536 mov r13,rdx | 538 mov r13,rdx |
537 | 539 |
538 add r15,32 | 540 add r15,32 |
539 » jnz» $L$1st4x | 541 » jnz» NEAR $L$1st4x |
540 | 542 |
541 » mul» rbx | 543 » mul» rbx |
542 » add» r10,rax | 544 » add» r10,rax |
543 » mov» rax,QWORD PTR[((-32))+rcx] | 545 » mov» rax,QWORD[((-32))+rcx] |
544 » lea» r14,QWORD PTR[32+r14] | 546 » lea» r14,[32+r14] |
545 » adc» rdx,0 | 547 » adc» rdx,0 |
546 » mov» r11,rdx | 548 » mov» r11,rdx |
547 | 549 |
548 » mul» rbp | 550 » mul» rbp |
549 » add» r13,rax | 551 » add» r13,rax |
550 » mov» rax,QWORD PTR[((-8))+rsi] | 552 » mov» rax,QWORD[((-8))+rsi] |
551 » adc» rdx,0 | 553 » adc» rdx,0 |
552 » add» r13,r10 | 554 » add» r13,r10 |
553 » adc» rdx,0 | 555 » adc» rdx,0 |
554 » mov» QWORD PTR[((-24))+r14],r13 | 556 » mov» QWORD[((-24))+r14],r13 |
555 » mov» rdi,rdx | 557 » mov» rdi,rdx |
556 | 558 |
557 » mul» rbx | 559 » mul» rbx |
558 » add» r11,rax | 560 » add» r11,rax |
559 » mov» rax,QWORD PTR[((-16))+rcx] | 561 » mov» rax,QWORD[((-16))+rcx] |
560 » adc» rdx,0 | 562 » adc» rdx,0 |
561 » mov» r10,rdx | 563 » mov» r10,rdx |
562 | 564 |
563 » mul» rbp | 565 » mul» rbp |
564 » add» rdi,rax | 566 » add» rdi,rax |
565 » mov» rax,QWORD PTR[r9*1+rsi] | 567 » mov» rax,QWORD[r9*1+rsi] |
566 » adc» rdx,0 | 568 » adc» rdx,0 |
567 » add» rdi,r11 | 569 » add» rdi,r11 |
568 » adc» rdx,0 | 570 » adc» rdx,0 |
569 » mov» QWORD PTR[((-16))+r14],rdi | 571 » mov» QWORD[((-16))+r14],rdi |
570 mov r13,rdx | 572 mov r13,rdx |
571 | 573 |
572 DB 102,72,15,126,195 | 574 DB 102,72,15,126,195 |
573 » lea» rcx,QWORD PTR[r9*2+rcx] | 575 » lea» rcx,[r9*2+rcx] |
574 | 576 |
575 xor rdi,rdi | 577 xor rdi,rdi |
576 add r13,r10 | 578 add r13,r10 |
577 adc rdi,0 | 579 adc rdi,0 |
578 » mov» QWORD PTR[((-8))+r14],r13 | 580 » mov» QWORD[((-8))+r14],r13 |
579 | 581 |
580 » jmp» $L$outer4x | 582 » jmp» NEAR $L$outer4x |
581 | 583 |
582 ALIGN 32 | 584 ALIGN 32 |
583 $L$outer4x:: | 585 $L$outer4x: |
584 » mov» r10,QWORD PTR[r9*1+r14] | 586 » mov» r10,QWORD[r9*1+r14] |
585 mov rbp,r8 | 587 mov rbp,r8 |
586 mul rbx | 588 mul rbx |
587 add r10,rax | 589 add r10,rax |
588 » mov» rax,QWORD PTR[rcx] | 590 » mov» rax,QWORD[rcx] |
589 » adc» rdx,0 | 591 » adc» rdx,0 |
590 | 592 |
591 » movq» xmm0,QWORD PTR[(((-96)))+r12] | 593 » movq» xmm0,QWORD[(((-96)))+r12] |
592 » movq» xmm1,QWORD PTR[((-32))+r12] | 594 » movq» xmm1,QWORD[((-32))+r12] |
593 pand xmm0,xmm4 | 595 pand xmm0,xmm4 |
594 » movq» xmm2,QWORD PTR[32+r12] | 596 » movq» xmm2,QWORD[32+r12] |
595 pand xmm1,xmm5 | 597 pand xmm1,xmm5 |
596 » movq» xmm3,QWORD PTR[96+r12] | 598 » movq» xmm3,QWORD[96+r12] |
597 | 599 |
598 imul rbp,r10 | 600 imul rbp,r10 |
599 DB» 067h | 601 DB» 0x67 |
600 » mov» r11,rdx | 602 » mov» r11,rdx |
601 » mov» QWORD PTR[r14],rdi | 603 » mov» QWORD[r14],rdi |
602 | 604 |
603 pand xmm2,xmm6 | 605 pand xmm2,xmm6 |
604 por xmm0,xmm1 | 606 por xmm0,xmm1 |
605 pand xmm3,xmm7 | 607 pand xmm3,xmm7 |
606 por xmm0,xmm2 | 608 por xmm0,xmm2 |
607 » lea» r14,QWORD PTR[r9*1+r14] | 609 » lea» r14,[r9*1+r14] |
608 » lea» r12,QWORD PTR[256+r12] | 610 » lea» r12,[256+r12] |
609 por xmm0,xmm3 | 611 por xmm0,xmm3 |
610 | 612 |
611 mul rbp | 613 mul rbp |
612 add r10,rax | 614 add r10,rax |
613 » mov» rax,QWORD PTR[8+r9*1+rsi] | 615 » mov» rax,QWORD[8+r9*1+rsi] |
614 » adc» rdx,0 | 616 » adc» rdx,0 |
615 » mov» rdi,rdx | 617 » mov» rdi,rdx |
616 | 618 |
617 » mul» rbx | 619 » mul» rbx |
618 » add» r11,rax | 620 » add» r11,rax |
619 » mov» rax,QWORD PTR[16+rcx] | 621 » mov» rax,QWORD[16+rcx] |
620 » adc» rdx,0 | 622 » adc» rdx,0 |
621 » add» r11,QWORD PTR[8+r14] | 623 » add» r11,QWORD[8+r14] |
622 » adc» rdx,0 | 624 » adc» rdx,0 |
623 » mov» r10,rdx | 625 » mov» r10,rdx |
624 | 626 |
625 » mul» rbp | 627 » mul» rbp |
626 » add» rdi,rax | 628 » add» rdi,rax |
627 » mov» rax,QWORD PTR[16+r9*1+rsi] | 629 » mov» rax,QWORD[16+r9*1+rsi] |
628 » adc» rdx,0 | 630 » adc» rdx,0 |
629 » add» rdi,r11 | 631 » add» rdi,r11 |
630 » lea» r15,QWORD PTR[32+r9] | 632 » lea» r15,[32+r9] |
631 » lea» rcx,QWORD PTR[64+rcx] | 633 » lea» rcx,[64+rcx] |
632 » adc» rdx,0 | 634 » adc» rdx,0 |
633 » mov» r13,rdx | 635 » mov» r13,rdx |
634 » jmp» $L$inner4x | 636 » jmp» NEAR $L$inner4x |
635 | 637 |
636 ALIGN 32 | 638 ALIGN 32 |
637 $L$inner4x:: | 639 $L$inner4x: |
638 » mul» rbx | 640 » mul» rbx |
639 » add» r10,rax | 641 » add» r10,rax |
640 » mov» rax,QWORD PTR[((-32))+rcx] | 642 » mov» rax,QWORD[((-32))+rcx] |
641 » adc» rdx,0 | 643 » adc» rdx,0 |
642 » add» r10,QWORD PTR[16+r14] | 644 » add» r10,QWORD[16+r14] |
643 » lea» r14,QWORD PTR[32+r14] | 645 » lea» r14,[32+r14] |
644 » adc» rdx,0 | 646 » adc» rdx,0 |
645 » mov» r11,rdx | 647 » mov» r11,rdx |
646 | 648 |
647 » mul» rbp | 649 » mul» rbp |
648 » add» r13,rax | 650 » add» r13,rax |
649 » mov» rax,QWORD PTR[((-8))+r15*1+rsi] | 651 » mov» rax,QWORD[((-8))+r15*1+rsi] |
650 » adc» rdx,0 | 652 » adc» rdx,0 |
651 » add» r13,r10 | 653 » add» r13,r10 |
652 » adc» rdx,0 | 654 » adc» rdx,0 |
653 » mov» QWORD PTR[((-32))+r14],rdi | 655 » mov» QWORD[((-32))+r14],rdi |
654 » mov» rdi,rdx | 656 » mov» rdi,rdx |
655 | 657 |
656 » mul» rbx | 658 » mul» rbx |
657 » add» r11,rax | 659 » add» r11,rax |
658 » mov» rax,QWORD PTR[((-16))+rcx] | 660 » mov» rax,QWORD[((-16))+rcx] |
659 » adc» rdx,0 | 661 » adc» rdx,0 |
660 » add» r11,QWORD PTR[((-8))+r14] | 662 » add» r11,QWORD[((-8))+r14] |
661 » adc» rdx,0 | 663 » adc» rdx,0 |
662 » mov» r10,rdx | 664 » mov» r10,rdx |
663 | 665 |
664 » mul» rbp | 666 » mul» rbp |
665 » add» rdi,rax | 667 » add» rdi,rax |
666 » mov» rax,QWORD PTR[r15*1+rsi] | 668 » mov» rax,QWORD[r15*1+rsi] |
667 » adc» rdx,0 | 669 » adc» rdx,0 |
668 » add» rdi,r11 | 670 » add» rdi,r11 |
669 » adc» rdx,0 | 671 » adc» rdx,0 |
670 » mov» QWORD PTR[((-24))+r14],r13 | 672 » mov» QWORD[((-24))+r14],r13 |
671 » mov» r13,rdx | 673 » mov» r13,rdx |
672 | 674 |
673 » mul» rbx | 675 » mul» rbx |
674 » add» r10,rax | 676 » add» r10,rax |
675 » mov» rax,QWORD PTR[rcx] | 677 » mov» rax,QWORD[rcx] |
676 » adc» rdx,0 | 678 » adc» rdx,0 |
677 » add» r10,QWORD PTR[r14] | 679 » add» r10,QWORD[r14] |
678 » adc» rdx,0 | 680 » adc» rdx,0 |
679 » mov» r11,rdx | 681 » mov» r11,rdx |
680 | 682 |
681 » mul» rbp | 683 » mul» rbp |
682 » add» r13,rax | 684 » add» r13,rax |
683 » mov» rax,QWORD PTR[8+r15*1+rsi] | 685 » mov» rax,QWORD[8+r15*1+rsi] |
684 » adc» rdx,0 | 686 » adc» rdx,0 |
685 » add» r13,r10 | 687 » add» r13,r10 |
686 » adc» rdx,0 | 688 » adc» rdx,0 |
687 » mov» QWORD PTR[((-16))+r14],rdi | 689 » mov» QWORD[((-16))+r14],rdi |
688 » mov» rdi,rdx | 690 » mov» rdi,rdx |
689 | 691 |
690 » mul» rbx | 692 » mul» rbx |
691 » add» r11,rax | 693 » add» r11,rax |
692 » mov» rax,QWORD PTR[16+rcx] | 694 » mov» rax,QWORD[16+rcx] |
693 » adc» rdx,0 | 695 » adc» rdx,0 |
694 » add» r11,QWORD PTR[8+r14] | 696 » add» r11,QWORD[8+r14] |
695 » adc» rdx,0 | 697 » adc» rdx,0 |
696 » mov» r10,rdx | 698 » mov» r10,rdx |
697 | 699 |
698 » mul» rbp | 700 » mul» rbp |
699 » add» rdi,rax | 701 » add» rdi,rax |
700 » mov» rax,QWORD PTR[16+r15*1+rsi] | 702 » mov» rax,QWORD[16+r15*1+rsi] |
701 » adc» rdx,0 | 703 » adc» rdx,0 |
702 » add» rdi,r11 | 704 » add» rdi,r11 |
703 » lea» rcx,QWORD PTR[64+rcx] | 705 » lea» rcx,[64+rcx] |
704 » adc» rdx,0 | 706 » adc» rdx,0 |
705 » mov» QWORD PTR[((-8))+r14],r13 | 707 » mov» QWORD[((-8))+r14],r13 |
706 mov r13,rdx | 708 mov r13,rdx |
707 | 709 |
708 add r15,32 | 710 add r15,32 |
709 » jnz» $L$inner4x | 711 » jnz» NEAR $L$inner4x |
710 | 712 |
711 » mul» rbx | 713 » mul» rbx |
712 » add» r10,rax | 714 » add» r10,rax |
713 » mov» rax,QWORD PTR[((-32))+rcx] | 715 » mov» rax,QWORD[((-32))+rcx] |
714 » adc» rdx,0 | 716 » adc» rdx,0 |
715 » add» r10,QWORD PTR[16+r14] | 717 » add» r10,QWORD[16+r14] |
716 » lea» r14,QWORD PTR[32+r14] | 718 » lea» r14,[32+r14] |
717 » adc» rdx,0 | 719 » adc» rdx,0 |
718 » mov» r11,rdx | 720 » mov» r11,rdx |
719 | 721 |
720 » mul» rbp | 722 » mul» rbp |
721 » add» r13,rax | 723 » add» r13,rax |
722 » mov» rax,QWORD PTR[((-8))+rsi] | 724 » mov» rax,QWORD[((-8))+rsi] |
723 » adc» rdx,0 | 725 » adc» rdx,0 |
724 » add» r13,r10 | 726 » add» r13,r10 |
725 » adc» rdx,0 | 727 » adc» rdx,0 |
726 » mov» QWORD PTR[((-32))+r14],rdi | 728 » mov» QWORD[((-32))+r14],rdi |
727 mov rdi,rdx | 729 mov rdi,rdx |
728 | 730 |
729 mul rbx | 731 mul rbx |
730 add r11,rax | 732 add r11,rax |
731 mov rax,rbp | 733 mov rax,rbp |
732 » mov» rbp,QWORD PTR[((-16))+rcx] | 734 » mov» rbp,QWORD[((-16))+rcx] |
733 » adc» rdx,0 | 735 » adc» rdx,0 |
734 » add» r11,QWORD PTR[((-8))+r14] | 736 » add» r11,QWORD[((-8))+r14] |
735 » adc» rdx,0 | 737 » adc» rdx,0 |
736 » mov» r10,rdx | 738 » mov» r10,rdx |
737 | 739 |
738 » mul» rbp | 740 » mul» rbp |
739 » add» rdi,rax | 741 » add» rdi,rax |
740 » mov» rax,QWORD PTR[r9*1+rsi] | 742 » mov» rax,QWORD[r9*1+rsi] |
741 » adc» rdx,0 | 743 » adc» rdx,0 |
742 » add» rdi,r11 | 744 » add» rdi,r11 |
743 » adc» rdx,0 | 745 » adc» rdx,0 |
744 » mov» QWORD PTR[((-24))+r14],r13 | 746 » mov» QWORD[((-24))+r14],r13 |
745 mov r13,rdx | 747 mov r13,rdx |
746 | 748 |
747 DB 102,72,15,126,195 | 749 DB 102,72,15,126,195 |
748 » mov» QWORD PTR[((-16))+r14],rdi | 750 » mov» QWORD[((-16))+r14],rdi |
749 » lea» rcx,QWORD PTR[r9*2+rcx] | 751 » lea» rcx,[r9*2+rcx] |
750 | 752 |
751 xor rdi,rdi | 753 xor rdi,rdi |
752 add r13,r10 | 754 add r13,r10 |
753 adc rdi,0 | 755 adc rdi,0 |
754 » add» r13,QWORD PTR[r14] | 756 » add» r13,QWORD[r14] |
755 adc rdi,0 | 757 adc rdi,0 |
756 » mov» QWORD PTR[((-8))+r14],r13 | 758 » mov» QWORD[((-8))+r14],r13 |
757 | 759 |
758 » cmp» r12,QWORD PTR[((16+8))+rsp] | 760 » cmp» r12,QWORD[((16+8))+rsp] |
759 » jb» $L$outer4x | 761 » jb» NEAR $L$outer4x |
760 sub rbp,r13 | 762 sub rbp,r13 |
761 adc r15,r15 | 763 adc r15,r15 |
762 or rdi,r15 | 764 or rdi,r15 |
763 xor rdi,1 | 765 xor rdi,1 |
764 » lea» rbx,QWORD PTR[r9*1+r14] | 766 » lea» rbx,[r9*1+r14] |
765 » lea» rbp,QWORD PTR[rdi*8+rcx] | 767 » lea» rbp,[rdi*8+rcx] |
766 mov rcx,r9 | 768 mov rcx,r9 |
767 sar rcx,3+2 | 769 sar rcx,3+2 |
768 » mov» rdi,QWORD PTR[((56+8))+rsp] | 770 » mov» rdi,QWORD[((56+8))+rsp] |
769 » jmp» $L$sqr4x_sub | 771 » jmp» NEAR $L$sqr4x_sub |
770 mul4x_internal» ENDP | 772 |
771 PUBLIC» bn_power5 | 773 global» bn_power5 |
772 | 774 |
773 ALIGN 32 | 775 ALIGN 32 |
774 bn_power5» PROC PUBLIC | 776 bn_power5: |
775 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue | 777 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue |
776 » mov» QWORD PTR[16+rsp],rsi | 778 » mov» QWORD[16+rsp],rsi |
777 mov rax,rsp | 779 mov rax,rsp |
778 $L$SEH_begin_bn_power5:: | 780 $L$SEH_begin_bn_power5: |
779 mov rdi,rcx | 781 mov rdi,rcx |
780 mov rsi,rdx | 782 mov rsi,rdx |
781 mov rdx,r8 | 783 mov rdx,r8 |
782 mov rcx,r9 | 784 mov rcx,r9 |
783 » mov» r8,QWORD PTR[40+rsp] | 785 » mov» r8,QWORD[40+rsp] |
784 » mov» r9,QWORD PTR[48+rsp] | 786 » mov» r9,QWORD[48+rsp] |
785 | 787 |
786 | 788 |
787 mov rax,rsp | 789 mov rax,rsp |
788 push rbx | 790 push rbx |
789 push rbp | 791 push rbp |
790 push r12 | 792 push r12 |
791 push r13 | 793 push r13 |
792 push r14 | 794 push r14 |
793 push r15 | 795 push r15 |
794 » lea» rsp,QWORD PTR[((-40))+rsp] | 796 » lea» rsp,[((-40))+rsp] |
795 » movaps» XMMWORD PTR[rsp],xmm6 | 797 » movaps» XMMWORD[rsp],xmm6 |
796 » movaps» XMMWORD PTR[16+rsp],xmm7 | 798 » movaps» XMMWORD[16+rsp],xmm7 |
797 mov r10d,r9d | 799 mov r10d,r9d |
798 shl r9d,3 | 800 shl r9d,3 |
799 shl r10d,3+2 | 801 shl r10d,3+2 |
800 neg r9 | 802 neg r9 |
801 » mov» r8,QWORD PTR[r8] | 803 » mov» r8,QWORD[r8] |
802 | 804 |
803 | 805 |
804 | 806 |
805 | 807 |
806 | 808 |
807 | 809 |
808 | 810 |
809 » lea» r11,QWORD PTR[((-64))+r9*2+rsp] | 811 » lea» r11,[((-64))+r9*2+rsp] |
810 sub r11,rsi | 812 sub r11,rsi |
811 and r11,4095 | 813 and r11,4095 |
812 cmp r10,r11 | 814 cmp r10,r11 |
813 » jb» $L$pwr_sp_alt | 815 » jb» NEAR $L$pwr_sp_alt |
814 sub rsp,r11 | 816 sub rsp,r11 |
815 » lea» rsp,QWORD PTR[((-64))+r9*2+rsp] | 817 » lea» rsp,[((-64))+r9*2+rsp] |
816 » jmp» $L$pwr_sp_done | 818 » jmp» NEAR $L$pwr_sp_done |
817 | 819 |
818 ALIGN 32 | 820 ALIGN 32 |
819 $L$pwr_sp_alt:: | 821 $L$pwr_sp_alt: |
820 » lea» r10,QWORD PTR[((4096-64))+r9*2] | 822 » lea» r10,[((4096-64))+r9*2] |
821 » lea» rsp,QWORD PTR[((-64))+r9*2+rsp] | 823 » lea» rsp,[((-64))+r9*2+rsp] |
822 sub r11,r10 | 824 sub r11,r10 |
823 mov r10,0 | 825 mov r10,0 |
824 cmovc r11,r10 | 826 cmovc r11,r10 |
825 sub rsp,r11 | 827 sub rsp,r11 |
826 $L$pwr_sp_done:: | 828 $L$pwr_sp_done: |
827 and rsp,-64 | 829 and rsp,-64 |
828 mov r10,r9 | 830 mov r10,r9 |
829 neg r9 | 831 neg r9 |
830 | 832 |
831 | 833 |
832 | 834 |
833 | 835 |
834 | 836 |
835 | 837 |
836 | 838 |
837 | 839 |
838 | 840 |
839 | 841 |
840 » mov» QWORD PTR[32+rsp],r8 | 842 » mov» QWORD[32+rsp],r8 |
841 » mov» QWORD PTR[40+rsp],rax | 843 » mov» QWORD[40+rsp],rax |
842 $L$power5_body:: | 844 $L$power5_body: |
843 DB 102,72,15,110,207 | 845 DB 102,72,15,110,207 |
844 DB 102,72,15,110,209 | 846 DB 102,72,15,110,209 |
845 DB 102,73,15,110,218 | 847 DB 102,73,15,110,218 |
846 DB 102,72,15,110,226 | 848 DB 102,72,15,110,226 |
847 | 849 |
848 call __bn_sqr8x_internal | 850 call __bn_sqr8x_internal |
849 call __bn_sqr8x_internal | 851 call __bn_sqr8x_internal |
850 call __bn_sqr8x_internal | 852 call __bn_sqr8x_internal |
851 call __bn_sqr8x_internal | 853 call __bn_sqr8x_internal |
852 call __bn_sqr8x_internal | 854 call __bn_sqr8x_internal |
853 | 855 |
854 DB 102,72,15,126,209 | 856 DB 102,72,15,126,209 |
855 DB 102,72,15,126,226 | 857 DB 102,72,15,126,226 |
856 mov rdi,rsi | 858 mov rdi,rsi |
857 » mov» rax,QWORD PTR[40+rsp] | 859 » mov» rax,QWORD[40+rsp] |
858 » lea» r8,QWORD PTR[32+rsp] | 860 » lea» r8,[32+rsp] |
859 | 861 |
860 call mul4x_internal | 862 call mul4x_internal |
861 | 863 |
862 » mov» rsi,QWORD PTR[40+rsp] | 864 » mov» rsi,QWORD[40+rsp] |
863 mov rax,1 | 865 mov rax,1 |
864 » mov» r15,QWORD PTR[((-48))+rsi] | 866 » mov» r15,QWORD[((-48))+rsi] |
865 » mov» r14,QWORD PTR[((-40))+rsi] | 867 » mov» r14,QWORD[((-40))+rsi] |
866 » mov» r13,QWORD PTR[((-32))+rsi] | 868 » mov» r13,QWORD[((-32))+rsi] |
867 » mov» r12,QWORD PTR[((-24))+rsi] | 869 » mov» r12,QWORD[((-24))+rsi] |
868 » mov» rbp,QWORD PTR[((-16))+rsi] | 870 » mov» rbp,QWORD[((-16))+rsi] |
869 » mov» rbx,QWORD PTR[((-8))+rsi] | 871 » mov» rbx,QWORD[((-8))+rsi] |
870 » lea» rsp,QWORD PTR[rsi] | 872 » lea» rsp,[rsi] |
871 $L$power5_epilogue:: | 873 $L$power5_epilogue: |
872 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue | 874 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue |
873 » mov» rsi,QWORD PTR[16+rsp] | 875 » mov» rsi,QWORD[16+rsp] |
874 DB 0F3h,0C3h ;repret | 876 DB 0F3h,0C3h ;repret |
875 $L$SEH_end_bn_power5:: | 877 $L$SEH_end_bn_power5: |
876 bn_power5» ENDP | |
877 | 878 |
878 PUBLIC» bn_sqr8x_internal | 879 global» bn_sqr8x_internal |
879 | 880 |
880 | 881 |
881 ALIGN 32 | 882 ALIGN 32 |
882 bn_sqr8x_internal» PROC PUBLIC | 883 bn_sqr8x_internal: |
883 __bn_sqr8x_internal:: | 884 __bn_sqr8x_internal: |
884 | 885 |
885 | 886 |
886 | 887 |
887 | 888 |
888 | 889 |
889 | 890 |
890 | 891 |
891 | 892 |
892 | 893 |
893 | 894 |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
947 | 948 |
948 | 949 |
949 | 950 |
950 | 951 |
951 | 952 |
952 | 953 |
953 | 954 |
954 | 955 |
955 | 956 |
956 | 957 |
957 » lea» rbp,QWORD PTR[32+r10] | 958 » lea» rbp,[32+r10] |
958 » lea» rsi,QWORD PTR[r9*1+rsi] | 959 » lea» rsi,[r9*1+rsi] |
959 | 960 |
960 mov rcx,r9 | 961 mov rcx,r9 |
961 | 962 |
962 | 963 |
963 » mov» r14,QWORD PTR[((-32))+rbp*1+rsi] | 964 » mov» r14,QWORD[((-32))+rbp*1+rsi] |
964 » lea» rdi,QWORD PTR[((48+8))+r9*2+rsp] | 965 » lea» rdi,[((48+8))+r9*2+rsp] |
965 » mov» rax,QWORD PTR[((-24))+rbp*1+rsi] | 966 » mov» rax,QWORD[((-24))+rbp*1+rsi] |
966 » lea» rdi,QWORD PTR[((-32))+rbp*1+rdi] | 967 » lea» rdi,[((-32))+rbp*1+rdi] |
967 » mov» rbx,QWORD PTR[((-16))+rbp*1+rsi] | 968 » mov» rbx,QWORD[((-16))+rbp*1+rsi] |
968 mov r15,rax | 969 mov r15,rax |
969 | 970 |
970 mul r14 | 971 mul r14 |
971 mov r10,rax | 972 mov r10,rax |
972 mov rax,rbx | 973 mov rax,rbx |
973 mov r11,rdx | 974 mov r11,rdx |
974 » mov» QWORD PTR[((-24))+rbp*1+rdi],r10 | 975 » mov» QWORD[((-24))+rbp*1+rdi],r10 |
975 | 976 |
976 mul r14 | 977 mul r14 |
977 add r11,rax | 978 add r11,rax |
978 mov rax,rbx | 979 mov rax,rbx |
979 adc rdx,0 | 980 adc rdx,0 |
980 » mov» QWORD PTR[((-16))+rbp*1+rdi],r11 | 981 » mov» QWORD[((-16))+rbp*1+rdi],r11 |
981 mov r10,rdx | 982 mov r10,rdx |
982 | 983 |
983 | 984 |
984 » mov» rbx,QWORD PTR[((-8))+rbp*1+rsi] | 985 » mov» rbx,QWORD[((-8))+rbp*1+rsi] |
985 mul r15 | 986 mul r15 |
986 mov r12,rax | 987 mov r12,rax |
987 mov rax,rbx | 988 mov rax,rbx |
988 mov r13,rdx | 989 mov r13,rdx |
989 | 990 |
990 » lea» rcx,QWORD PTR[rbp] | 991 » lea» rcx,[rbp] |
991 mul r14 | 992 mul r14 |
992 add r10,rax | 993 add r10,rax |
993 mov rax,rbx | 994 mov rax,rbx |
994 mov r11,rdx | 995 mov r11,rdx |
995 adc r11,0 | 996 adc r11,0 |
996 add r10,r12 | 997 add r10,r12 |
997 adc r11,0 | 998 adc r11,0 |
998 » mov» QWORD PTR[((-8))+rcx*1+rdi],r10 | 999 » mov» QWORD[((-8))+rcx*1+rdi],r10 |
999 » jmp» $L$sqr4x_1st | 1000 » jmp» NEAR $L$sqr4x_1st |
1000 | 1001 |
1001 ALIGN 32 | 1002 ALIGN 32 |
1002 $L$sqr4x_1st:: | 1003 $L$sqr4x_1st: |
1003 » mov» rbx,QWORD PTR[rcx*1+rsi] | 1004 » mov» rbx,QWORD[rcx*1+rsi] |
1004 mul r15 | 1005 mul r15 |
1005 add r13,rax | 1006 add r13,rax |
1006 mov rax,rbx | 1007 mov rax,rbx |
1007 mov r12,rdx | 1008 mov r12,rdx |
1008 adc r12,0 | 1009 adc r12,0 |
1009 | 1010 |
1010 mul r14 | 1011 mul r14 |
1011 add r11,rax | 1012 add r11,rax |
1012 mov rax,rbx | 1013 mov rax,rbx |
1013 » mov» rbx,QWORD PTR[8+rcx*1+rsi] | 1014 » mov» rbx,QWORD[8+rcx*1+rsi] |
1014 mov r10,rdx | 1015 mov r10,rdx |
1015 adc r10,0 | 1016 adc r10,0 |
1016 add r11,r13 | 1017 add r11,r13 |
1017 adc r10,0 | 1018 adc r10,0 |
1018 | 1019 |
1019 | 1020 |
1020 mul r15 | 1021 mul r15 |
1021 add r12,rax | 1022 add r12,rax |
1022 mov rax,rbx | 1023 mov rax,rbx |
1023 » mov» QWORD PTR[rcx*1+rdi],r11 | 1024 » mov» QWORD[rcx*1+rdi],r11 |
1024 mov r13,rdx | 1025 mov r13,rdx |
1025 adc r13,0 | 1026 adc r13,0 |
1026 | 1027 |
1027 mul r14 | 1028 mul r14 |
1028 add r10,rax | 1029 add r10,rax |
1029 mov rax,rbx | 1030 mov rax,rbx |
1030 » mov» rbx,QWORD PTR[16+rcx*1+rsi] | 1031 » mov» rbx,QWORD[16+rcx*1+rsi] |
1031 mov r11,rdx | 1032 mov r11,rdx |
1032 adc r11,0 | 1033 adc r11,0 |
1033 add r10,r12 | 1034 add r10,r12 |
1034 adc r11,0 | 1035 adc r11,0 |
1035 | 1036 |
1036 mul r15 | 1037 mul r15 |
1037 add r13,rax | 1038 add r13,rax |
1038 mov rax,rbx | 1039 mov rax,rbx |
1039 » mov» QWORD PTR[8+rcx*1+rdi],r10 | 1040 » mov» QWORD[8+rcx*1+rdi],r10 |
1040 mov r12,rdx | 1041 mov r12,rdx |
1041 adc r12,0 | 1042 adc r12,0 |
1042 | 1043 |
1043 mul r14 | 1044 mul r14 |
1044 add r11,rax | 1045 add r11,rax |
1045 mov rax,rbx | 1046 mov rax,rbx |
1046 » mov» rbx,QWORD PTR[24+rcx*1+rsi] | 1047 » mov» rbx,QWORD[24+rcx*1+rsi] |
1047 mov r10,rdx | 1048 mov r10,rdx |
1048 adc r10,0 | 1049 adc r10,0 |
1049 add r11,r13 | 1050 add r11,r13 |
1050 adc r10,0 | 1051 adc r10,0 |
1051 | 1052 |
1052 | 1053 |
1053 mul r15 | 1054 mul r15 |
1054 add r12,rax | 1055 add r12,rax |
1055 mov rax,rbx | 1056 mov rax,rbx |
1056 » mov» QWORD PTR[16+rcx*1+rdi],r11 | 1057 » mov» QWORD[16+rcx*1+rdi],r11 |
1057 mov r13,rdx | 1058 mov r13,rdx |
1058 adc r13,0 | 1059 adc r13,0 |
1059 » lea» rcx,QWORD PTR[32+rcx] | 1060 » lea» rcx,[32+rcx] |
1060 | 1061 |
1061 mul r14 | 1062 mul r14 |
1062 add r10,rax | 1063 add r10,rax |
1063 mov rax,rbx | 1064 mov rax,rbx |
1064 mov r11,rdx | 1065 mov r11,rdx |
1065 adc r11,0 | 1066 adc r11,0 |
1066 add r10,r12 | 1067 add r10,r12 |
1067 adc r11,0 | 1068 adc r11,0 |
1068 » mov» QWORD PTR[((-8))+rcx*1+rdi],r10 | 1069 » mov» QWORD[((-8))+rcx*1+rdi],r10 |
1069 | 1070 |
1070 cmp rcx,0 | 1071 cmp rcx,0 |
1071 » jne» $L$sqr4x_1st | 1072 » jne» NEAR $L$sqr4x_1st |
1072 | 1073 |
1073 mul r15 | 1074 mul r15 |
1074 add r13,rax | 1075 add r13,rax |
1075 » lea» rbp,QWORD PTR[16+rbp] | 1076 » lea» rbp,[16+rbp] |
1076 adc rdx,0 | 1077 adc rdx,0 |
1077 add r13,r11 | 1078 add r13,r11 |
1078 adc rdx,0 | 1079 adc rdx,0 |
1079 | 1080 |
1080 » mov» QWORD PTR[rdi],r13 | 1081 » mov» QWORD[rdi],r13 |
1081 mov r12,rdx | 1082 mov r12,rdx |
1082 » mov» QWORD PTR[8+rdi],rdx | 1083 » mov» QWORD[8+rdi],rdx |
1083 » jmp» $L$sqr4x_outer | 1084 » jmp» NEAR $L$sqr4x_outer |
1084 | 1085 |
1085 ALIGN 32 | 1086 ALIGN 32 |
1086 $L$sqr4x_outer:: | 1087 $L$sqr4x_outer: |
1087 » mov» r14,QWORD PTR[((-32))+rbp*1+rsi] | 1088 » mov» r14,QWORD[((-32))+rbp*1+rsi] |
1088 » lea» rdi,QWORD PTR[((48+8))+r9*2+rsp] | 1089 » lea» rdi,[((48+8))+r9*2+rsp] |
1089 » mov» rax,QWORD PTR[((-24))+rbp*1+rsi] | 1090 » mov» rax,QWORD[((-24))+rbp*1+rsi] |
1090 » lea» rdi,QWORD PTR[((-32))+rbp*1+rdi] | 1091 » lea» rdi,[((-32))+rbp*1+rdi] |
1091 » mov» rbx,QWORD PTR[((-16))+rbp*1+rsi] | 1092 » mov» rbx,QWORD[((-16))+rbp*1+rsi] |
1092 mov r15,rax | 1093 mov r15,rax |
1093 | 1094 |
1094 mul r14 | 1095 mul r14 |
1095 » mov» r10,QWORD PTR[((-24))+rbp*1+rdi] | 1096 » mov» r10,QWORD[((-24))+rbp*1+rdi] |
1096 add r10,rax | 1097 add r10,rax |
1097 mov rax,rbx | 1098 mov rax,rbx |
1098 adc rdx,0 | 1099 adc rdx,0 |
1099 » mov» QWORD PTR[((-24))+rbp*1+rdi],r10 | 1100 » mov» QWORD[((-24))+rbp*1+rdi],r10 |
1100 mov r11,rdx | 1101 mov r11,rdx |
1101 | 1102 |
1102 mul r14 | 1103 mul r14 |
1103 add r11,rax | 1104 add r11,rax |
1104 mov rax,rbx | 1105 mov rax,rbx |
1105 adc rdx,0 | 1106 adc rdx,0 |
1106 » add» r11,QWORD PTR[((-16))+rbp*1+rdi] | 1107 » add» r11,QWORD[((-16))+rbp*1+rdi] |
1107 mov r10,rdx | 1108 mov r10,rdx |
1108 adc r10,0 | 1109 adc r10,0 |
1109 » mov» QWORD PTR[((-16))+rbp*1+rdi],r11 | 1110 » mov» QWORD[((-16))+rbp*1+rdi],r11 |
1110 | 1111 |
1111 xor r12,r12 | 1112 xor r12,r12 |
1112 | 1113 |
1113 » mov» rbx,QWORD PTR[((-8))+rbp*1+rsi] | 1114 » mov» rbx,QWORD[((-8))+rbp*1+rsi] |
1114 mul r15 | 1115 mul r15 |
1115 add r12,rax | 1116 add r12,rax |
1116 mov rax,rbx | 1117 mov rax,rbx |
1117 adc rdx,0 | 1118 adc rdx,0 |
1118 » add» r12,QWORD PTR[((-8))+rbp*1+rdi] | 1119 » add» r12,QWORD[((-8))+rbp*1+rdi] |
1119 mov r13,rdx | 1120 mov r13,rdx |
1120 adc r13,0 | 1121 adc r13,0 |
1121 | 1122 |
1122 mul r14 | 1123 mul r14 |
1123 add r10,rax | 1124 add r10,rax |
1124 mov rax,rbx | 1125 mov rax,rbx |
1125 adc rdx,0 | 1126 adc rdx,0 |
1126 add r10,r12 | 1127 add r10,r12 |
1127 mov r11,rdx | 1128 mov r11,rdx |
1128 adc r11,0 | 1129 adc r11,0 |
1129 » mov» QWORD PTR[((-8))+rbp*1+rdi],r10 | 1130 » mov» QWORD[((-8))+rbp*1+rdi],r10 |
1130 | 1131 |
1131 » lea» rcx,QWORD PTR[rbp] | 1132 » lea» rcx,[rbp] |
1132 » jmp» $L$sqr4x_inner | 1133 » jmp» NEAR $L$sqr4x_inner |
1133 | 1134 |
1134 ALIGN 32 | 1135 ALIGN 32 |
1135 $L$sqr4x_inner:: | 1136 $L$sqr4x_inner: |
1136 » mov» rbx,QWORD PTR[rcx*1+rsi] | 1137 » mov» rbx,QWORD[rcx*1+rsi] |
1137 mul r15 | 1138 mul r15 |
1138 add r13,rax | 1139 add r13,rax |
1139 mov rax,rbx | 1140 mov rax,rbx |
1140 mov r12,rdx | 1141 mov r12,rdx |
1141 adc r12,0 | 1142 adc r12,0 |
1142 » add» r13,QWORD PTR[rcx*1+rdi] | 1143 » add» r13,QWORD[rcx*1+rdi] |
1143 adc r12,0 | 1144 adc r12,0 |
1144 | 1145 |
1145 DB» 067h | 1146 DB» 0x67 |
1146 mul r14 | 1147 mul r14 |
1147 add r11,rax | 1148 add r11,rax |
1148 mov rax,rbx | 1149 mov rax,rbx |
1149 » mov» rbx,QWORD PTR[8+rcx*1+rsi] | 1150 » mov» rbx,QWORD[8+rcx*1+rsi] |
1150 mov r10,rdx | 1151 mov r10,rdx |
1151 adc r10,0 | 1152 adc r10,0 |
1152 add r11,r13 | 1153 add r11,r13 |
1153 adc r10,0 | 1154 adc r10,0 |
1154 | 1155 |
1155 mul r15 | 1156 mul r15 |
1156 add r12,rax | 1157 add r12,rax |
1157 » mov» QWORD PTR[rcx*1+rdi],r11 | 1158 » mov» QWORD[rcx*1+rdi],r11 |
1158 mov rax,rbx | 1159 mov rax,rbx |
1159 mov r13,rdx | 1160 mov r13,rdx |
1160 adc r13,0 | 1161 adc r13,0 |
1161 » add» r12,QWORD PTR[8+rcx*1+rdi] | 1162 » add» r12,QWORD[8+rcx*1+rdi] |
1162 » lea» rcx,QWORD PTR[16+rcx] | 1163 » lea» rcx,[16+rcx] |
1163 adc r13,0 | 1164 adc r13,0 |
1164 | 1165 |
1165 mul r14 | 1166 mul r14 |
1166 add r10,rax | 1167 add r10,rax |
1167 mov rax,rbx | 1168 mov rax,rbx |
1168 adc rdx,0 | 1169 adc rdx,0 |
1169 add r10,r12 | 1170 add r10,r12 |
1170 mov r11,rdx | 1171 mov r11,rdx |
1171 adc r11,0 | 1172 adc r11,0 |
1172 » mov» QWORD PTR[((-8))+rcx*1+rdi],r10 | 1173 » mov» QWORD[((-8))+rcx*1+rdi],r10 |
1173 | 1174 |
1174 cmp rcx,0 | 1175 cmp rcx,0 |
1175 » jne» $L$sqr4x_inner | 1176 » jne» NEAR $L$sqr4x_inner |
1176 | 1177 |
1177 DB» 067h | 1178 DB» 0x67 |
1178 mul r15 | 1179 mul r15 |
1179 add r13,rax | 1180 add r13,rax |
1180 adc rdx,0 | 1181 adc rdx,0 |
1181 add r13,r11 | 1182 add r13,r11 |
1182 adc rdx,0 | 1183 adc rdx,0 |
1183 | 1184 |
1184 » mov» QWORD PTR[rdi],r13 | 1185 » mov» QWORD[rdi],r13 |
1185 mov r12,rdx | 1186 mov r12,rdx |
1186 » mov» QWORD PTR[8+rdi],rdx | 1187 » mov» QWORD[8+rdi],rdx |
1187 | 1188 |
1188 add rbp,16 | 1189 add rbp,16 |
1189 » jnz» $L$sqr4x_outer | 1190 » jnz» NEAR $L$sqr4x_outer |
1190 | 1191 |
1191 | 1192 |
1192 » mov» r14,QWORD PTR[((-32))+rsi] | 1193 » mov» r14,QWORD[((-32))+rsi] |
1193 » lea» rdi,QWORD PTR[((48+8))+r9*2+rsp] | 1194 » lea» rdi,[((48+8))+r9*2+rsp] |
1194 » mov» rax,QWORD PTR[((-24))+rsi] | 1195 » mov» rax,QWORD[((-24))+rsi] |
1195 » lea» rdi,QWORD PTR[((-32))+rbp*1+rdi] | 1196 » lea» rdi,[((-32))+rbp*1+rdi] |
1196 » mov» rbx,QWORD PTR[((-16))+rsi] | 1197 » mov» rbx,QWORD[((-16))+rsi] |
1197 mov r15,rax | 1198 mov r15,rax |
1198 | 1199 |
1199 mul r14 | 1200 mul r14 |
1200 add r10,rax | 1201 add r10,rax |
1201 mov rax,rbx | 1202 mov rax,rbx |
1202 mov r11,rdx | 1203 mov r11,rdx |
1203 adc r11,0 | 1204 adc r11,0 |
1204 | 1205 |
1205 mul r14 | 1206 mul r14 |
1206 add r11,rax | 1207 add r11,rax |
1207 mov rax,rbx | 1208 mov rax,rbx |
1208 » mov» QWORD PTR[((-24))+rdi],r10 | 1209 » mov» QWORD[((-24))+rdi],r10 |
1209 mov r10,rdx | 1210 mov r10,rdx |
1210 adc r10,0 | 1211 adc r10,0 |
1211 add r11,r13 | 1212 add r11,r13 |
1212 » mov» rbx,QWORD PTR[((-8))+rsi] | 1213 » mov» rbx,QWORD[((-8))+rsi] |
1213 adc r10,0 | 1214 adc r10,0 |
1214 | 1215 |
1215 mul r15 | 1216 mul r15 |
1216 add r12,rax | 1217 add r12,rax |
1217 mov rax,rbx | 1218 mov rax,rbx |
1218 » mov» QWORD PTR[((-16))+rdi],r11 | 1219 » mov» QWORD[((-16))+rdi],r11 |
1219 mov r13,rdx | 1220 mov r13,rdx |
1220 adc r13,0 | 1221 adc r13,0 |
1221 | 1222 |
1222 mul r14 | 1223 mul r14 |
1223 add r10,rax | 1224 add r10,rax |
1224 mov rax,rbx | 1225 mov rax,rbx |
1225 mov r11,rdx | 1226 mov r11,rdx |
1226 adc r11,0 | 1227 adc r11,0 |
1227 add r10,r12 | 1228 add r10,r12 |
1228 adc r11,0 | 1229 adc r11,0 |
1229 » mov» QWORD PTR[((-8))+rdi],r10 | 1230 » mov» QWORD[((-8))+rdi],r10 |
1230 | 1231 |
1231 mul r15 | 1232 mul r15 |
1232 add r13,rax | 1233 add r13,rax |
1233 » mov» rax,QWORD PTR[((-16))+rsi] | 1234 » mov» rax,QWORD[((-16))+rsi] |
1234 adc rdx,0 | 1235 adc rdx,0 |
1235 add r13,r11 | 1236 add r13,r11 |
1236 adc rdx,0 | 1237 adc rdx,0 |
1237 | 1238 |
1238 » mov» QWORD PTR[rdi],r13 | 1239 » mov» QWORD[rdi],r13 |
1239 mov r12,rdx | 1240 mov r12,rdx |
1240 » mov» QWORD PTR[8+rdi],rdx | 1241 » mov» QWORD[8+rdi],rdx |
1241 | 1242 |
1242 mul rbx | 1243 mul rbx |
1243 add rbp,16 | 1244 add rbp,16 |
1244 xor r14,r14 | 1245 xor r14,r14 |
1245 sub rbp,r9 | 1246 sub rbp,r9 |
1246 xor r15,r15 | 1247 xor r15,r15 |
1247 | 1248 |
1248 add rax,r12 | 1249 add rax,r12 |
1249 adc rdx,0 | 1250 adc rdx,0 |
1250 » mov» QWORD PTR[8+rdi],rax | 1251 » mov» QWORD[8+rdi],rax |
1251 » mov» QWORD PTR[16+rdi],rdx | 1252 » mov» QWORD[16+rdi],rdx |
1252 » mov» QWORD PTR[24+rdi],r15 | 1253 » mov» QWORD[24+rdi],r15 |
1253 | 1254 |
1254 » mov» rax,QWORD PTR[((-16))+rbp*1+rsi] | 1255 » mov» rax,QWORD[((-16))+rbp*1+rsi] |
1255 » lea» rdi,QWORD PTR[((48+8))+rsp] | 1256 » lea» rdi,[((48+8))+rsp] |
1256 xor r10,r10 | 1257 xor r10,r10 |
1257 » mov» r11,QWORD PTR[8+rdi] | 1258 » mov» r11,QWORD[8+rdi] |
1258 | 1259 |
1259 » lea» r12,QWORD PTR[r10*2+r14] | 1260 » lea» r12,[r10*2+r14] |
1260 » shr» r10,63 | 1261 » shr» r10,63 |
1261 » lea» r13,QWORD PTR[r11*2+rcx] | 1262 » lea» r13,[r11*2+rcx] |
1262 » shr» r11,63 | 1263 » shr» r11,63 |
1263 » or» r13,r10 | 1264 » or» r13,r10 |
1264 » mov» r10,QWORD PTR[16+rdi] | 1265 » mov» r10,QWORD[16+rdi] |
1265 » mov» r14,r11 | 1266 » mov» r14,r11 |
1266 » mul» rax | 1267 » mul» rax |
1267 » neg» r15 | 1268 » neg» r15 |
1268 » mov» r11,QWORD PTR[24+rdi] | 1269 » mov» r11,QWORD[24+rdi] |
1269 » adc» r12,rax | 1270 » adc» r12,rax |
1270 » mov» rax,QWORD PTR[((-8))+rbp*1+rsi] | 1271 » mov» rax,QWORD[((-8))+rbp*1+rsi] |
1271 » mov» QWORD PTR[rdi],r12 | 1272 » mov» QWORD[rdi],r12 |
1272 » adc» r13,rdx | 1273 » adc» r13,rdx |
1273 | 1274 |
1274 » lea» rbx,QWORD PTR[r10*2+r14] | 1275 » lea» rbx,[r10*2+r14] |
1275 » mov» QWORD PTR[8+rdi],r13 | 1276 » mov» QWORD[8+rdi],r13 |
1276 » sbb» r15,r15 | 1277 » sbb» r15,r15 |
1277 » shr» r10,63 | 1278 » shr» r10,63 |
1278 » lea» r8,QWORD PTR[r11*2+rcx] | 1279 » lea» r8,[r11*2+rcx] |
1279 » shr» r11,63 | 1280 » shr» r11,63 |
1280 » or» r8,r10 | 1281 » or» r8,r10 |
1281 » mov» r10,QWORD PTR[32+rdi] | 1282 » mov» r10,QWORD[32+rdi] |
1282 » mov» r14,r11 | 1283 » mov» r14,r11 |
1283 » mul» rax | 1284 » mul» rax |
1284 » neg» r15 | 1285 » neg» r15 |
1285 » mov» r11,QWORD PTR[40+rdi] | 1286 » mov» r11,QWORD[40+rdi] |
1286 » adc» rbx,rax | 1287 » adc» rbx,rax |
1287 » mov» rax,QWORD PTR[rbp*1+rsi] | 1288 » mov» rax,QWORD[rbp*1+rsi] |
1288 » mov» QWORD PTR[16+rdi],rbx | 1289 » mov» QWORD[16+rdi],rbx |
1289 » adc» r8,rdx | 1290 » adc» r8,rdx |
1290 » lea» rbp,QWORD PTR[16+rbp] | 1291 » lea» rbp,[16+rbp] |
1291 » mov» QWORD PTR[24+rdi],r8 | 1292 » mov» QWORD[24+rdi],r8 |
1292 » sbb» r15,r15 | 1293 » sbb» r15,r15 |
1293 » lea» rdi,QWORD PTR[64+rdi] | 1294 » lea» rdi,[64+rdi] |
1294 » jmp» $L$sqr4x_shift_n_add | 1295 » jmp» NEAR $L$sqr4x_shift_n_add |
1295 | 1296 |
1296 ALIGN 32 | 1297 ALIGN 32 |
1297 $L$sqr4x_shift_n_add:: | 1298 $L$sqr4x_shift_n_add: |
1298 » lea» r12,QWORD PTR[r10*2+r14] | 1299 » lea» r12,[r10*2+r14] |
1299 » shr» r10,63 | 1300 » shr» r10,63 |
1300 » lea» r13,QWORD PTR[r11*2+rcx] | 1301 » lea» r13,[r11*2+rcx] |
1301 » shr» r11,63 | 1302 » shr» r11,63 |
1302 » or» r13,r10 | 1303 » or» r13,r10 |
1303 » mov» r10,QWORD PTR[((-16))+rdi] | 1304 » mov» r10,QWORD[((-16))+rdi] |
1304 » mov» r14,r11 | 1305 » mov» r14,r11 |
1305 » mul» rax | 1306 » mul» rax |
1306 » neg» r15 | 1307 » neg» r15 |
1307 » mov» r11,QWORD PTR[((-8))+rdi] | 1308 » mov» r11,QWORD[((-8))+rdi] |
1308 » adc» r12,rax | 1309 » adc» r12,rax |
1309 » mov» rax,QWORD PTR[((-8))+rbp*1+rsi] | 1310 » mov» rax,QWORD[((-8))+rbp*1+rsi] |
1310 » mov» QWORD PTR[((-32))+rdi],r12 | 1311 » mov» QWORD[((-32))+rdi],r12 |
1311 » adc» r13,rdx | 1312 » adc» r13,rdx |
1312 | 1313 |
1313 » lea» rbx,QWORD PTR[r10*2+r14] | 1314 » lea» rbx,[r10*2+r14] |
1314 » mov» QWORD PTR[((-24))+rdi],r13 | 1315 » mov» QWORD[((-24))+rdi],r13 |
1315 » sbb» r15,r15 | 1316 » sbb» r15,r15 |
1316 » shr» r10,63 | 1317 » shr» r10,63 |
1317 » lea» r8,QWORD PTR[r11*2+rcx] | 1318 » lea» r8,[r11*2+rcx] |
1318 » shr» r11,63 | 1319 » shr» r11,63 |
1319 » or» r8,r10 | 1320 » or» r8,r10 |
1320 » mov» r10,QWORD PTR[rdi] | 1321 » mov» r10,QWORD[rdi] |
1321 » mov» r14,r11 | 1322 » mov» r14,r11 |
1322 » mul» rax | 1323 » mul» rax |
1323 » neg» r15 | 1324 » neg» r15 |
1324 » mov» r11,QWORD PTR[8+rdi] | 1325 » mov» r11,QWORD[8+rdi] |
1325 » adc» rbx,rax | 1326 » adc» rbx,rax |
1326 » mov» rax,QWORD PTR[rbp*1+rsi] | 1327 » mov» rax,QWORD[rbp*1+rsi] |
1327 » mov» QWORD PTR[((-16))+rdi],rbx | 1328 » mov» QWORD[((-16))+rdi],rbx |
1328 » adc» r8,rdx | 1329 » adc» r8,rdx |
1329 | 1330 |
1330 » lea» r12,QWORD PTR[r10*2+r14] | 1331 » lea» r12,[r10*2+r14] |
1331 » mov» QWORD PTR[((-8))+rdi],r8 | 1332 » mov» QWORD[((-8))+rdi],r8 |
1332 » sbb» r15,r15 | 1333 » sbb» r15,r15 |
1333 » shr» r10,63 | 1334 » shr» r10,63 |
1334 » lea» r13,QWORD PTR[r11*2+rcx] | 1335 » lea» r13,[r11*2+rcx] |
1335 » shr» r11,63 | 1336 » shr» r11,63 |
1336 » or» r13,r10 | 1337 » or» r13,r10 |
1337 » mov» r10,QWORD PTR[16+rdi] | 1338 » mov» r10,QWORD[16+rdi] |
1338 » mov» r14,r11 | 1339 » mov» r14,r11 |
1339 » mul» rax | 1340 » mul» rax |
1340 » neg» r15 | 1341 » neg» r15 |
1341 » mov» r11,QWORD PTR[24+rdi] | 1342 » mov» r11,QWORD[24+rdi] |
1342 » adc» r12,rax | 1343 » adc» r12,rax |
1343 » mov» rax,QWORD PTR[8+rbp*1+rsi] | 1344 » mov» rax,QWORD[8+rbp*1+rsi] |
1344 » mov» QWORD PTR[rdi],r12 | 1345 » mov» QWORD[rdi],r12 |
1345 » adc» r13,rdx | 1346 » adc» r13,rdx |
1346 | 1347 |
1347 » lea» rbx,QWORD PTR[r10*2+r14] | 1348 » lea» rbx,[r10*2+r14] |
1348 » mov» QWORD PTR[8+rdi],r13 | 1349 » mov» QWORD[8+rdi],r13 |
1349 » sbb» r15,r15 | 1350 » sbb» r15,r15 |
1350 » shr» r10,63 | 1351 » shr» r10,63 |
1351 » lea» r8,QWORD PTR[r11*2+rcx] | 1352 » lea» r8,[r11*2+rcx] |
1352 » shr» r11,63 | 1353 » shr» r11,63 |
1353 » or» r8,r10 | 1354 » or» r8,r10 |
1354 » mov» r10,QWORD PTR[32+rdi] | 1355 » mov» r10,QWORD[32+rdi] |
1355 » mov» r14,r11 | 1356 » mov» r14,r11 |
1356 » mul» rax | 1357 » mul» rax |
1357 » neg» r15 | 1358 » neg» r15 |
1358 » mov» r11,QWORD PTR[40+rdi] | 1359 » mov» r11,QWORD[40+rdi] |
1359 » adc» rbx,rax | 1360 » adc» rbx,rax |
1360 » mov» rax,QWORD PTR[16+rbp*1+rsi] | 1361 » mov» rax,QWORD[16+rbp*1+rsi] |
1361 » mov» QWORD PTR[16+rdi],rbx | 1362 » mov» QWORD[16+rdi],rbx |
1362 » adc» r8,rdx | 1363 » adc» r8,rdx |
1363 » mov» QWORD PTR[24+rdi],r8 | 1364 » mov» QWORD[24+rdi],r8 |
1364 » sbb» r15,r15 | 1365 » sbb» r15,r15 |
1365 » lea» rdi,QWORD PTR[64+rdi] | 1366 » lea» rdi,[64+rdi] |
1366 add rbp,32 | 1367 add rbp,32 |
1367 » jnz» $L$sqr4x_shift_n_add | 1368 » jnz» NEAR $L$sqr4x_shift_n_add |
1368 | 1369 |
1369 » lea» r12,QWORD PTR[r10*2+r14] | 1370 » lea» r12,[r10*2+r14] |
1370 DB» 067h | 1371 DB» 0x67 |
1371 » shr» r10,63 | 1372 » shr» r10,63 |
1372 » lea» r13,QWORD PTR[r11*2+rcx] | 1373 » lea» r13,[r11*2+rcx] |
1373 » shr» r11,63 | 1374 » shr» r11,63 |
1374 » or» r13,r10 | 1375 » or» r13,r10 |
1375 » mov» r10,QWORD PTR[((-16))+rdi] | 1376 » mov» r10,QWORD[((-16))+rdi] |
1376 » mov» r14,r11 | 1377 » mov» r14,r11 |
1377 » mul» rax | 1378 » mul» rax |
1378 » neg» r15 | 1379 » neg» r15 |
1379 » mov» r11,QWORD PTR[((-8))+rdi] | 1380 » mov» r11,QWORD[((-8))+rdi] |
1380 » adc» r12,rax | 1381 » adc» r12,rax |
1381 » mov» rax,QWORD PTR[((-8))+rsi] | 1382 » mov» rax,QWORD[((-8))+rsi] |
1382 » mov» QWORD PTR[((-32))+rdi],r12 | 1383 » mov» QWORD[((-32))+rdi],r12 |
1383 » adc» r13,rdx | 1384 » adc» r13,rdx |
1384 | 1385 |
1385 » lea» rbx,QWORD PTR[r10*2+r14] | 1386 » lea» rbx,[r10*2+r14] |
1386 » mov» QWORD PTR[((-24))+rdi],r13 | 1387 » mov» QWORD[((-24))+rdi],r13 |
1387 » sbb» r15,r15 | 1388 » sbb» r15,r15 |
1388 » shr» r10,63 | 1389 » shr» r10,63 |
1389 » lea» r8,QWORD PTR[r11*2+rcx] | 1390 » lea» r8,[r11*2+rcx] |
1390 » shr» r11,63 | 1391 » shr» r11,63 |
1391 » or» r8,r10 | 1392 » or» r8,r10 |
1392 » mul» rax | 1393 » mul» rax |
1393 » neg» r15 | 1394 » neg» r15 |
1394 » adc» rbx,rax | 1395 » adc» rbx,rax |
1395 » adc» r8,rdx | 1396 » adc» r8,rdx |
1396 » mov» QWORD PTR[((-16))+rdi],rbx | 1397 » mov» QWORD[((-16))+rdi],rbx |
1397 » mov» QWORD PTR[((-8))+rdi],r8 | 1398 » mov» QWORD[((-8))+rdi],r8 |
1398 DB 102,72,15,126,213 | 1399 DB 102,72,15,126,213 |
1399 sqr8x_reduction:: | 1400 sqr8x_reduction: |
1400 xor rax,rax | 1401 xor rax,rax |
1401 » lea» rcx,QWORD PTR[r9*2+rbp] | 1402 » lea» rcx,[r9*2+rbp] |
1402 » lea» rdx,QWORD PTR[((48+8))+r9*2+rsp] | 1403 » lea» rdx,[((48+8))+r9*2+rsp] |
1403 » mov» QWORD PTR[((0+8))+rsp],rcx | 1404 » mov» QWORD[((0+8))+rsp],rcx |
1404 » lea» rdi,QWORD PTR[((48+8))+r9*1+rsp] | 1405 » lea» rdi,[((48+8))+r9*1+rsp] |
1405 » mov» QWORD PTR[((8+8))+rsp],rdx | 1406 » mov» QWORD[((8+8))+rsp],rdx |
1406 neg r9 | 1407 neg r9 |
1407 » jmp» $L$8x_reduction_loop | 1408 » jmp» NEAR $L$8x_reduction_loop |
1408 | 1409 |
1409 ALIGN 32 | 1410 ALIGN 32 |
1410 $L$8x_reduction_loop:: | 1411 $L$8x_reduction_loop: |
1411 » lea» rdi,QWORD PTR[r9*1+rdi] | 1412 » lea» rdi,[r9*1+rdi] |
1412 DB» 066h | 1413 DB» 0x66 |
1413 » mov» rbx,QWORD PTR[rdi] | 1414 » mov» rbx,QWORD[rdi] |
1414 » mov» r9,QWORD PTR[8+rdi] | 1415 » mov» r9,QWORD[8+rdi] |
1415 » mov» r10,QWORD PTR[16+rdi] | 1416 » mov» r10,QWORD[16+rdi] |
1416 » mov» r11,QWORD PTR[24+rdi] | 1417 » mov» r11,QWORD[24+rdi] |
1417 » mov» r12,QWORD PTR[32+rdi] | 1418 » mov» r12,QWORD[32+rdi] |
1418 » mov» r13,QWORD PTR[40+rdi] | 1419 » mov» r13,QWORD[40+rdi] |
1419 » mov» r14,QWORD PTR[48+rdi] | 1420 » mov» r14,QWORD[48+rdi] |
1420 » mov» r15,QWORD PTR[56+rdi] | 1421 » mov» r15,QWORD[56+rdi] |
1421 » mov» QWORD PTR[rdx],rax | 1422 » mov» QWORD[rdx],rax |
1422 » lea» rdi,QWORD PTR[64+rdi] | 1423 » lea» rdi,[64+rdi] |
1423 | 1424 |
1424 DB» 067h | 1425 DB» 0x67 |
1425 mov r8,rbx | 1426 mov r8,rbx |
1426 » imul» rbx,QWORD PTR[((32+8))+rsp] | 1427 » imul» rbx,QWORD[((32+8))+rsp] |
1427 » mov» rax,QWORD PTR[rbp] | 1428 » mov» rax,QWORD[rbp] |
1428 mov ecx,8 | 1429 mov ecx,8 |
1429 » jmp» $L$8x_reduce | 1430 » jmp» NEAR $L$8x_reduce |
1430 | 1431 |
1431 ALIGN 32 | 1432 ALIGN 32 |
1432 $L$8x_reduce:: | 1433 $L$8x_reduce: |
1433 » mul» rbx | 1434 » mul» rbx |
1434 » mov» rax,QWORD PTR[16+rbp] | 1435 » mov» rax,QWORD[16+rbp] |
1435 neg r8 | 1436 neg r8 |
1436 mov r8,rdx | 1437 mov r8,rdx |
1437 adc r8,0 | 1438 adc r8,0 |
1438 | 1439 |
1439 mul rbx | 1440 mul rbx |
1440 add r9,rax | 1441 add r9,rax |
1441 » mov» rax,QWORD PTR[32+rbp] | 1442 » mov» rax,QWORD[32+rbp] |
1442 adc rdx,0 | 1443 adc rdx,0 |
1443 add r8,r9 | 1444 add r8,r9 |
1444 » mov» QWORD PTR[((48-8+8))+rcx*8+rsp],rbx | 1445 » mov» QWORD[((48-8+8))+rcx*8+rsp],rbx |
1445 mov r9,rdx | 1446 mov r9,rdx |
1446 adc r9,0 | 1447 adc r9,0 |
1447 | 1448 |
1448 mul rbx | 1449 mul rbx |
1449 add r10,rax | 1450 add r10,rax |
1450 » mov» rax,QWORD PTR[48+rbp] | 1451 » mov» rax,QWORD[48+rbp] |
1451 adc rdx,0 | 1452 adc rdx,0 |
1452 add r9,r10 | 1453 add r9,r10 |
1453 » mov» rsi,QWORD PTR[((32+8))+rsp] | 1454 » mov» rsi,QWORD[((32+8))+rsp] |
1454 mov r10,rdx | 1455 mov r10,rdx |
1455 adc r10,0 | 1456 adc r10,0 |
1456 | 1457 |
1457 mul rbx | 1458 mul rbx |
1458 add r11,rax | 1459 add r11,rax |
1459 » mov» rax,QWORD PTR[64+rbp] | 1460 » mov» rax,QWORD[64+rbp] |
1460 adc rdx,0 | 1461 adc rdx,0 |
1461 imul rsi,r8 | 1462 imul rsi,r8 |
1462 add r10,r11 | 1463 add r10,r11 |
1463 mov r11,rdx | 1464 mov r11,rdx |
1464 adc r11,0 | 1465 adc r11,0 |
1465 | 1466 |
1466 mul rbx | 1467 mul rbx |
1467 add r12,rax | 1468 add r12,rax |
1468 » mov» rax,QWORD PTR[80+rbp] | 1469 » mov» rax,QWORD[80+rbp] |
1469 adc rdx,0 | 1470 adc rdx,0 |
1470 add r11,r12 | 1471 add r11,r12 |
1471 mov r12,rdx | 1472 mov r12,rdx |
1472 adc r12,0 | 1473 adc r12,0 |
1473 | 1474 |
1474 mul rbx | 1475 mul rbx |
1475 add r13,rax | 1476 add r13,rax |
1476 » mov» rax,QWORD PTR[96+rbp] | 1477 » mov» rax,QWORD[96+rbp] |
1477 adc rdx,0 | 1478 adc rdx,0 |
1478 add r12,r13 | 1479 add r12,r13 |
1479 mov r13,rdx | 1480 mov r13,rdx |
1480 adc r13,0 | 1481 adc r13,0 |
1481 | 1482 |
1482 mul rbx | 1483 mul rbx |
1483 add r14,rax | 1484 add r14,rax |
1484 » mov» rax,QWORD PTR[112+rbp] | 1485 » mov» rax,QWORD[112+rbp] |
1485 adc rdx,0 | 1486 adc rdx,0 |
1486 add r13,r14 | 1487 add r13,r14 |
1487 mov r14,rdx | 1488 mov r14,rdx |
1488 adc r14,0 | 1489 adc r14,0 |
1489 | 1490 |
1490 mul rbx | 1491 mul rbx |
1491 mov rbx,rsi | 1492 mov rbx,rsi |
1492 add r15,rax | 1493 add r15,rax |
1493 » mov» rax,QWORD PTR[rbp] | 1494 » mov» rax,QWORD[rbp] |
1494 adc rdx,0 | 1495 adc rdx,0 |
1495 add r14,r15 | 1496 add r14,r15 |
1496 mov r15,rdx | 1497 mov r15,rdx |
1497 adc r15,0 | 1498 adc r15,0 |
1498 | 1499 |
1499 dec ecx | 1500 dec ecx |
1500 » jnz» $L$8x_reduce | 1501 » jnz» NEAR $L$8x_reduce |
1501 | 1502 |
1502 » lea» rbp,QWORD PTR[128+rbp] | 1503 » lea» rbp,[128+rbp] |
1503 xor rax,rax | 1504 xor rax,rax |
1504 » mov» rdx,QWORD PTR[((8+8))+rsp] | 1505 » mov» rdx,QWORD[((8+8))+rsp] |
1505 » cmp» rbp,QWORD PTR[((0+8))+rsp] | 1506 » cmp» rbp,QWORD[((0+8))+rsp] |
1506 » jae» $L$8x_no_tail | 1507 » jae» NEAR $L$8x_no_tail |
1507 | 1508 |
1508 DB» 066h | 1509 DB» 0x66 |
1509 » add» r8,QWORD PTR[rdi] | 1510 » add» r8,QWORD[rdi] |
1510 » adc» r9,QWORD PTR[8+rdi] | 1511 » adc» r9,QWORD[8+rdi] |
1511 » adc» r10,QWORD PTR[16+rdi] | 1512 » adc» r10,QWORD[16+rdi] |
1512 » adc» r11,QWORD PTR[24+rdi] | 1513 » adc» r11,QWORD[24+rdi] |
1513 » adc» r12,QWORD PTR[32+rdi] | 1514 » adc» r12,QWORD[32+rdi] |
1514 » adc» r13,QWORD PTR[40+rdi] | 1515 » adc» r13,QWORD[40+rdi] |
1515 » adc» r14,QWORD PTR[48+rdi] | 1516 » adc» r14,QWORD[48+rdi] |
1516 » adc» r15,QWORD PTR[56+rdi] | 1517 » adc» r15,QWORD[56+rdi] |
1517 sbb rsi,rsi | 1518 sbb rsi,rsi |
1518 | 1519 |
1519 » mov» rbx,QWORD PTR[((48+56+8))+rsp] | 1520 » mov» rbx,QWORD[((48+56+8))+rsp] |
1520 mov ecx,8 | 1521 mov ecx,8 |
1521 » mov» rax,QWORD PTR[rbp] | 1522 » mov» rax,QWORD[rbp] |
1522 » jmp» $L$8x_tail | 1523 » jmp» NEAR $L$8x_tail |
1523 | 1524 |
1524 ALIGN 32 | 1525 ALIGN 32 |
1525 $L$8x_tail:: | 1526 $L$8x_tail: |
1526 mul rbx | 1527 mul rbx |
1527 add r8,rax | 1528 add r8,rax |
1528 » mov» rax,QWORD PTR[16+rbp] | 1529 » mov» rax,QWORD[16+rbp] |
1529 » mov» QWORD PTR[rdi],r8 | 1530 » mov» QWORD[rdi],r8 |
1530 mov r8,rdx | 1531 mov r8,rdx |
1531 adc r8,0 | 1532 adc r8,0 |
1532 | 1533 |
1533 mul rbx | 1534 mul rbx |
1534 add r9,rax | 1535 add r9,rax |
1535 » mov» rax,QWORD PTR[32+rbp] | 1536 » mov» rax,QWORD[32+rbp] |
1536 adc rdx,0 | 1537 adc rdx,0 |
1537 add r8,r9 | 1538 add r8,r9 |
1538 » lea» rdi,QWORD PTR[8+rdi] | 1539 » lea» rdi,[8+rdi] |
1539 mov r9,rdx | 1540 mov r9,rdx |
1540 adc r9,0 | 1541 adc r9,0 |
1541 | 1542 |
1542 mul rbx | 1543 mul rbx |
1543 add r10,rax | 1544 add r10,rax |
1544 » mov» rax,QWORD PTR[48+rbp] | 1545 » mov» rax,QWORD[48+rbp] |
1545 adc rdx,0 | 1546 adc rdx,0 |
1546 add r9,r10 | 1547 add r9,r10 |
1547 mov r10,rdx | 1548 mov r10,rdx |
1548 adc r10,0 | 1549 adc r10,0 |
1549 | 1550 |
1550 mul rbx | 1551 mul rbx |
1551 add r11,rax | 1552 add r11,rax |
1552 » mov» rax,QWORD PTR[64+rbp] | 1553 » mov» rax,QWORD[64+rbp] |
1553 adc rdx,0 | 1554 adc rdx,0 |
1554 add r10,r11 | 1555 add r10,r11 |
1555 mov r11,rdx | 1556 mov r11,rdx |
1556 adc r11,0 | 1557 adc r11,0 |
1557 | 1558 |
1558 mul rbx | 1559 mul rbx |
1559 add r12,rax | 1560 add r12,rax |
1560 » mov» rax,QWORD PTR[80+rbp] | 1561 » mov» rax,QWORD[80+rbp] |
1561 adc rdx,0 | 1562 adc rdx,0 |
1562 add r11,r12 | 1563 add r11,r12 |
1563 mov r12,rdx | 1564 mov r12,rdx |
1564 adc r12,0 | 1565 adc r12,0 |
1565 | 1566 |
1566 mul rbx | 1567 mul rbx |
1567 add r13,rax | 1568 add r13,rax |
1568 » mov» rax,QWORD PTR[96+rbp] | 1569 » mov» rax,QWORD[96+rbp] |
1569 adc rdx,0 | 1570 adc rdx,0 |
1570 add r12,r13 | 1571 add r12,r13 |
1571 mov r13,rdx | 1572 mov r13,rdx |
1572 adc r13,0 | 1573 adc r13,0 |
1573 | 1574 |
1574 mul rbx | 1575 mul rbx |
1575 add r14,rax | 1576 add r14,rax |
1576 » mov» rax,QWORD PTR[112+rbp] | 1577 » mov» rax,QWORD[112+rbp] |
1577 adc rdx,0 | 1578 adc rdx,0 |
1578 add r13,r14 | 1579 add r13,r14 |
1579 mov r14,rdx | 1580 mov r14,rdx |
1580 adc r14,0 | 1581 adc r14,0 |
1581 | 1582 |
1582 mul rbx | 1583 mul rbx |
1583 » mov» rbx,QWORD PTR[((48-16+8))+rcx*8+rsp] | 1584 » mov» rbx,QWORD[((48-16+8))+rcx*8+rsp] |
1584 add r15,rax | 1585 add r15,rax |
1585 adc rdx,0 | 1586 adc rdx,0 |
1586 add r14,r15 | 1587 add r14,r15 |
1587 » mov» rax,QWORD PTR[rbp] | 1588 » mov» rax,QWORD[rbp] |
1588 mov r15,rdx | 1589 mov r15,rdx |
1589 adc r15,0 | 1590 adc r15,0 |
1590 | 1591 |
1591 dec ecx | 1592 dec ecx |
1592 » jnz» $L$8x_tail | 1593 » jnz» NEAR $L$8x_tail |
1593 | 1594 |
1594 » lea» rbp,QWORD PTR[128+rbp] | 1595 » lea» rbp,[128+rbp] |
1595 » mov» rdx,QWORD PTR[((8+8))+rsp] | 1596 » mov» rdx,QWORD[((8+8))+rsp] |
1596 » cmp» rbp,QWORD PTR[((0+8))+rsp] | 1597 » cmp» rbp,QWORD[((0+8))+rsp] |
1597 » jae» $L$8x_tail_done | 1598 » jae» NEAR $L$8x_tail_done |
1598 | 1599 |
1599 » mov» rbx,QWORD PTR[((48+56+8))+rsp] | 1600 » mov» rbx,QWORD[((48+56+8))+rsp] |
1600 neg rsi | 1601 neg rsi |
1601 » mov» rax,QWORD PTR[rbp] | 1602 » mov» rax,QWORD[rbp] |
1602 » adc» r8,QWORD PTR[rdi] | 1603 » adc» r8,QWORD[rdi] |
1603 » adc» r9,QWORD PTR[8+rdi] | 1604 » adc» r9,QWORD[8+rdi] |
1604 » adc» r10,QWORD PTR[16+rdi] | 1605 » adc» r10,QWORD[16+rdi] |
1605 » adc» r11,QWORD PTR[24+rdi] | 1606 » adc» r11,QWORD[24+rdi] |
1606 » adc» r12,QWORD PTR[32+rdi] | 1607 » adc» r12,QWORD[32+rdi] |
1607 » adc» r13,QWORD PTR[40+rdi] | 1608 » adc» r13,QWORD[40+rdi] |
1608 » adc» r14,QWORD PTR[48+rdi] | 1609 » adc» r14,QWORD[48+rdi] |
1609 » adc» r15,QWORD PTR[56+rdi] | 1610 » adc» r15,QWORD[56+rdi] |
1610 sbb rsi,rsi | 1611 sbb rsi,rsi |
1611 | 1612 |
1612 mov ecx,8 | 1613 mov ecx,8 |
1613 » jmp» $L$8x_tail | 1614 » jmp» NEAR $L$8x_tail |
1614 | 1615 |
1615 ALIGN 32 | 1616 ALIGN 32 |
1616 $L$8x_tail_done:: | 1617 $L$8x_tail_done: |
1617 » add» r8,QWORD PTR[rdx] | 1618 » add» r8,QWORD[rdx] |
1618 xor rax,rax | 1619 xor rax,rax |
1619 | 1620 |
1620 neg rsi | 1621 neg rsi |
1621 $L$8x_no_tail:: | 1622 $L$8x_no_tail: |
1622 » adc» r8,QWORD PTR[rdi] | 1623 » adc» r8,QWORD[rdi] |
1623 » adc» r9,QWORD PTR[8+rdi] | 1624 » adc» r9,QWORD[8+rdi] |
1624 » adc» r10,QWORD PTR[16+rdi] | 1625 » adc» r10,QWORD[16+rdi] |
1625 » adc» r11,QWORD PTR[24+rdi] | 1626 » adc» r11,QWORD[24+rdi] |
1626 » adc» r12,QWORD PTR[32+rdi] | 1627 » adc» r12,QWORD[32+rdi] |
1627 » adc» r13,QWORD PTR[40+rdi] | 1628 » adc» r13,QWORD[40+rdi] |
1628 » adc» r14,QWORD PTR[48+rdi] | 1629 » adc» r14,QWORD[48+rdi] |
1629 » adc» r15,QWORD PTR[56+rdi] | 1630 » adc» r15,QWORD[56+rdi] |
1630 adc rax,0 | 1631 adc rax,0 |
1631 » mov» rcx,QWORD PTR[((-16))+rbp] | 1632 » mov» rcx,QWORD[((-16))+rbp] |
1632 xor rsi,rsi | 1633 xor rsi,rsi |
1633 | 1634 |
1634 DB 102,72,15,126,213 | 1635 DB 102,72,15,126,213 |
1635 | 1636 |
1636 » mov» QWORD PTR[rdi],r8 | 1637 » mov» QWORD[rdi],r8 |
1637 » mov» QWORD PTR[8+rdi],r9 | 1638 » mov» QWORD[8+rdi],r9 |
1638 DB 102,73,15,126,217 | 1639 DB 102,73,15,126,217 |
1639 » mov» QWORD PTR[16+rdi],r10 | 1640 » mov» QWORD[16+rdi],r10 |
1640 » mov» QWORD PTR[24+rdi],r11 | 1641 » mov» QWORD[24+rdi],r11 |
1641 » mov» QWORD PTR[32+rdi],r12 | 1642 » mov» QWORD[32+rdi],r12 |
1642 » mov» QWORD PTR[40+rdi],r13 | 1643 » mov» QWORD[40+rdi],r13 |
1643 » mov» QWORD PTR[48+rdi],r14 | 1644 » mov» QWORD[48+rdi],r14 |
1644 » mov» QWORD PTR[56+rdi],r15 | 1645 » mov» QWORD[56+rdi],r15 |
1645 » lea» rdi,QWORD PTR[64+rdi] | 1646 » lea» rdi,[64+rdi] |
1646 | 1647 |
1647 cmp rdi,rdx | 1648 cmp rdi,rdx |
1648 » jb» $L$8x_reduction_loop | 1649 » jb» NEAR $L$8x_reduction_loop |
1649 | 1650 |
1650 sub rcx,r15 | 1651 sub rcx,r15 |
1651 » lea» rbx,QWORD PTR[r9*1+rdi] | 1652 » lea» rbx,[r9*1+rdi] |
1652 adc rsi,rsi | 1653 adc rsi,rsi |
1653 mov rcx,r9 | 1654 mov rcx,r9 |
1654 or rax,rsi | 1655 or rax,rsi |
1655 DB 102,72,15,126,207 | 1656 DB 102,72,15,126,207 |
1656 xor rax,1 | 1657 xor rax,1 |
1657 DB 102,72,15,126,206 | 1658 DB 102,72,15,126,206 |
1658 » lea» rbp,QWORD PTR[rax*8+rbp] | 1659 » lea» rbp,[rax*8+rbp] |
1659 sar rcx,3+2 | 1660 sar rcx,3+2 |
1660 » jmp» $L$sqr4x_sub | 1661 » jmp» NEAR $L$sqr4x_sub |
1661 | 1662 |
1662 ALIGN 32 | 1663 ALIGN 32 |
1663 $L$sqr4x_sub:: | 1664 $L$sqr4x_sub: |
1664 DB» 066h | 1665 DB» 0x66 |
1665 » mov» r12,QWORD PTR[rbx] | 1666 » mov» r12,QWORD[rbx] |
1666 » mov» r13,QWORD PTR[8+rbx] | 1667 » mov» r13,QWORD[8+rbx] |
1667 » sbb» r12,QWORD PTR[rbp] | 1668 » sbb» r12,QWORD[rbp] |
1668 » mov» r14,QWORD PTR[16+rbx] | 1669 » mov» r14,QWORD[16+rbx] |
1669 » sbb» r13,QWORD PTR[16+rbp] | 1670 » sbb» r13,QWORD[16+rbp] |
1670 » mov» r15,QWORD PTR[24+rbx] | 1671 » mov» r15,QWORD[24+rbx] |
1671 » lea» rbx,QWORD PTR[32+rbx] | 1672 » lea» rbx,[32+rbx] |
1672 » sbb» r14,QWORD PTR[32+rbp] | 1673 » sbb» r14,QWORD[32+rbp] |
1673 » mov» QWORD PTR[rdi],r12 | 1674 » mov» QWORD[rdi],r12 |
1674 » sbb» r15,QWORD PTR[48+rbp] | 1675 » sbb» r15,QWORD[48+rbp] |
1675 » lea» rbp,QWORD PTR[64+rbp] | 1676 » lea» rbp,[64+rbp] |
1676 » mov» QWORD PTR[8+rdi],r13 | 1677 » mov» QWORD[8+rdi],r13 |
1677 » mov» QWORD PTR[16+rdi],r14 | 1678 » mov» QWORD[16+rdi],r14 |
1678 » mov» QWORD PTR[24+rdi],r15 | 1679 » mov» QWORD[24+rdi],r15 |
1679 » lea» rdi,QWORD PTR[32+rdi] | 1680 » lea» rdi,[32+rdi] |
1680 | 1681 |
1681 inc rcx | 1682 inc rcx |
1682 » jnz» $L$sqr4x_sub | 1683 » jnz» NEAR $L$sqr4x_sub |
1683 mov r10,r9 | 1684 mov r10,r9 |
1684 neg r9 | 1685 neg r9 |
1685 DB 0F3h,0C3h ;repret | 1686 DB 0F3h,0C3h ;repret |
1686 bn_sqr8x_internal» ENDP | 1687 |
1687 PUBLIC» bn_from_montgomery | 1688 global» bn_from_montgomery |
1688 | 1689 |
1689 ALIGN 32 | 1690 ALIGN 32 |
1690 bn_from_montgomery» PROC PUBLIC | 1691 bn_from_montgomery: |
1691 » test» DWORD PTR[48+rsp],7 | 1692 » test» DWORD[48+rsp],7 |
1692 » jz» bn_from_mont8x | 1693 » jz» NEAR bn_from_mont8x |
1693 xor eax,eax | 1694 xor eax,eax |
1694 DB 0F3h,0C3h ;repret | 1695 DB 0F3h,0C3h ;repret |
1695 bn_from_montgomery» ENDP | 1696 |
1696 | 1697 |
1697 | 1698 |
1698 ALIGN 32 | 1699 ALIGN 32 |
1699 bn_from_mont8x» PROC PRIVATE | 1700 bn_from_mont8x: |
1700 » mov» QWORD PTR[8+rsp],rdi» ;WIN64 prologue | 1701 » mov» QWORD[8+rsp],rdi» ;WIN64 prologue |
1701 » mov» QWORD PTR[16+rsp],rsi | 1702 » mov» QWORD[16+rsp],rsi |
1702 mov rax,rsp | 1703 mov rax,rsp |
1703 $L$SEH_begin_bn_from_mont8x:: | 1704 $L$SEH_begin_bn_from_mont8x: |
1704 mov rdi,rcx | 1705 mov rdi,rcx |
1705 mov rsi,rdx | 1706 mov rsi,rdx |
1706 mov rdx,r8 | 1707 mov rdx,r8 |
1707 mov rcx,r9 | 1708 mov rcx,r9 |
1708 » mov» r8,QWORD PTR[40+rsp] | 1709 » mov» r8,QWORD[40+rsp] |
1709 » mov» r9,QWORD PTR[48+rsp] | 1710 » mov» r9,QWORD[48+rsp] |
1710 | 1711 |
1711 | 1712 |
1712 DB» 067h | 1713 DB» 0x67 |
1713 mov rax,rsp | 1714 mov rax,rsp |
1714 push rbx | 1715 push rbx |
1715 push rbp | 1716 push rbp |
1716 push r12 | 1717 push r12 |
1717 push r13 | 1718 push r13 |
1718 push r14 | 1719 push r14 |
1719 push r15 | 1720 push r15 |
1720 » lea» rsp,QWORD PTR[((-40))+rsp] | 1721 » lea» rsp,[((-40))+rsp] |
1721 » movaps» XMMWORD PTR[rsp],xmm6 | 1722 » movaps» XMMWORD[rsp],xmm6 |
1722 » movaps» XMMWORD PTR[16+rsp],xmm7 | 1723 » movaps» XMMWORD[16+rsp],xmm7 |
1723 DB» 067h | 1724 DB» 0x67 |
1724 mov r10d,r9d | 1725 mov r10d,r9d |
1725 shl r9d,3 | 1726 shl r9d,3 |
1726 shl r10d,3+2 | 1727 shl r10d,3+2 |
1727 neg r9 | 1728 neg r9 |
1728 » mov» r8,QWORD PTR[r8] | 1729 » mov» r8,QWORD[r8] |
1729 | 1730 |
1730 | 1731 |
1731 | 1732 |
1732 | 1733 |
1733 | 1734 |
1734 | 1735 |
1735 | 1736 |
1736 » lea» r11,QWORD PTR[((-64))+r9*2+rsp] | 1737 » lea» r11,[((-64))+r9*2+rsp] |
1737 sub r11,rsi | 1738 sub r11,rsi |
1738 and r11,4095 | 1739 and r11,4095 |
1739 cmp r10,r11 | 1740 cmp r10,r11 |
1740 » jb» $L$from_sp_alt | 1741 » jb» NEAR $L$from_sp_alt |
1741 sub rsp,r11 | 1742 sub rsp,r11 |
1742 » lea» rsp,QWORD PTR[((-64))+r9*2+rsp] | 1743 » lea» rsp,[((-64))+r9*2+rsp] |
1743 » jmp» $L$from_sp_done | 1744 » jmp» NEAR $L$from_sp_done |
1744 | 1745 |
1745 ALIGN 32 | 1746 ALIGN 32 |
1746 $L$from_sp_alt:: | 1747 $L$from_sp_alt: |
1747 » lea» r10,QWORD PTR[((4096-64))+r9*2] | 1748 » lea» r10,[((4096-64))+r9*2] |
1748 » lea» rsp,QWORD PTR[((-64))+r9*2+rsp] | 1749 » lea» rsp,[((-64))+r9*2+rsp] |
1749 sub r11,r10 | 1750 sub r11,r10 |
1750 mov r10,0 | 1751 mov r10,0 |
1751 cmovc r11,r10 | 1752 cmovc r11,r10 |
1752 sub rsp,r11 | 1753 sub rsp,r11 |
1753 $L$from_sp_done:: | 1754 $L$from_sp_done: |
1754 and rsp,-64 | 1755 and rsp,-64 |
1755 mov r10,r9 | 1756 mov r10,r9 |
1756 neg r9 | 1757 neg r9 |
1757 | 1758 |
1758 | 1759 |
1759 | 1760 |
1760 | 1761 |
1761 | 1762 |
1762 | 1763 |
1763 | 1764 |
1764 | 1765 |
1765 | 1766 |
1766 | 1767 |
1767 » mov» QWORD PTR[32+rsp],r8 | 1768 » mov» QWORD[32+rsp],r8 |
1768 » mov» QWORD PTR[40+rsp],rax | 1769 » mov» QWORD[40+rsp],rax |
1769 $L$from_body:: | 1770 $L$from_body: |
1770 mov r11,r9 | 1771 mov r11,r9 |
1771 » lea» rax,QWORD PTR[48+rsp] | 1772 » lea» rax,[48+rsp] |
1772 pxor xmm0,xmm0 | 1773 pxor xmm0,xmm0 |
1773 » jmp» $L$mul_by_1 | 1774 » jmp» NEAR $L$mul_by_1 |
1774 | 1775 |
1775 ALIGN 32 | 1776 ALIGN 32 |
1776 $L$mul_by_1:: | 1777 $L$mul_by_1: |
1777 » movdqu» xmm1,XMMWORD PTR[rsi] | 1778 » movdqu» xmm1,XMMWORD[rsi] |
1778 » movdqu» xmm2,XMMWORD PTR[16+rsi] | 1779 » movdqu» xmm2,XMMWORD[16+rsi] |
1779 » movdqu» xmm3,XMMWORD PTR[32+rsi] | 1780 » movdqu» xmm3,XMMWORD[32+rsi] |
1780 » movdqa» XMMWORD PTR[r9*1+rax],xmm0 | 1781 » movdqa» XMMWORD[r9*1+rax],xmm0 |
1781 » movdqu» xmm4,XMMWORD PTR[48+rsi] | 1782 » movdqu» xmm4,XMMWORD[48+rsi] |
1782 » movdqa» XMMWORD PTR[16+r9*1+rax],xmm0 | 1783 » movdqa» XMMWORD[16+r9*1+rax],xmm0 |
1783 DB» 048h,08dh,0b6h,040h,000h,000h,000h | 1784 DB» 0x48,0x8d,0xb6,0x40,0x00,0x00,0x00 |
1784 » movdqa» XMMWORD PTR[rax],xmm1 | 1785 » movdqa» XMMWORD[rax],xmm1 |
1785 » movdqa» XMMWORD PTR[32+r9*1+rax],xmm0 | 1786 » movdqa» XMMWORD[32+r9*1+rax],xmm0 |
1786 » movdqa» XMMWORD PTR[16+rax],xmm2 | 1787 » movdqa» XMMWORD[16+rax],xmm2 |
1787 » movdqa» XMMWORD PTR[48+r9*1+rax],xmm0 | 1788 » movdqa» XMMWORD[48+r9*1+rax],xmm0 |
1788 » movdqa» XMMWORD PTR[32+rax],xmm3 | 1789 » movdqa» XMMWORD[32+rax],xmm3 |
1789 » movdqa» XMMWORD PTR[48+rax],xmm4 | 1790 » movdqa» XMMWORD[48+rax],xmm4 |
1790 » lea» rax,QWORD PTR[64+rax] | 1791 » lea» rax,[64+rax] |
1791 sub r11,64 | 1792 sub r11,64 |
1792 » jnz» $L$mul_by_1 | 1793 » jnz» NEAR $L$mul_by_1 |
1793 | 1794 |
1794 DB 102,72,15,110,207 | 1795 DB 102,72,15,110,207 |
1795 DB 102,72,15,110,209 | 1796 DB 102,72,15,110,209 |
1796 DB» 067h | 1797 DB» 0x67 |
1797 mov rbp,rcx | 1798 mov rbp,rcx |
1798 DB 102,73,15,110,218 | 1799 DB 102,73,15,110,218 |
1799 call sqr8x_reduction | 1800 call sqr8x_reduction |
1800 | 1801 |
1801 pxor xmm0,xmm0 | 1802 pxor xmm0,xmm0 |
1802 » lea» rax,QWORD PTR[48+rsp] | 1803 » lea» rax,[48+rsp] |
1803 » mov» rsi,QWORD PTR[40+rsp] | 1804 » mov» rsi,QWORD[40+rsp] |
1804 » jmp» $L$from_mont_zero | 1805 » jmp» NEAR $L$from_mont_zero |
1805 | 1806 |
1806 ALIGN 32 | 1807 ALIGN 32 |
1807 $L$from_mont_zero:: | 1808 $L$from_mont_zero: |
1808 » movdqa» XMMWORD PTR[rax],xmm0 | 1809 » movdqa» XMMWORD[rax],xmm0 |
1809 » movdqa» XMMWORD PTR[16+rax],xmm0 | 1810 » movdqa» XMMWORD[16+rax],xmm0 |
1810 » movdqa» XMMWORD PTR[32+rax],xmm0 | 1811 » movdqa» XMMWORD[32+rax],xmm0 |
1811 » movdqa» XMMWORD PTR[48+rax],xmm0 | 1812 » movdqa» XMMWORD[48+rax],xmm0 |
1812 » lea» rax,QWORD PTR[64+rax] | 1813 » lea» rax,[64+rax] |
1813 sub r9,32 | 1814 sub r9,32 |
1814 » jnz» $L$from_mont_zero | 1815 » jnz» NEAR $L$from_mont_zero |
1815 | 1816 |
1816 mov rax,1 | 1817 mov rax,1 |
1817 » mov» r15,QWORD PTR[((-48))+rsi] | 1818 » mov» r15,QWORD[((-48))+rsi] |
1818 » mov» r14,QWORD PTR[((-40))+rsi] | 1819 » mov» r14,QWORD[((-40))+rsi] |
1819 » mov» r13,QWORD PTR[((-32))+rsi] | 1820 » mov» r13,QWORD[((-32))+rsi] |
1820 » mov» r12,QWORD PTR[((-24))+rsi] | 1821 » mov» r12,QWORD[((-24))+rsi] |
1821 » mov» rbp,QWORD PTR[((-16))+rsi] | 1822 » mov» rbp,QWORD[((-16))+rsi] |
1822 » mov» rbx,QWORD PTR[((-8))+rsi] | 1823 » mov» rbx,QWORD[((-8))+rsi] |
1823 » lea» rsp,QWORD PTR[rsi] | 1824 » lea» rsp,[rsi] |
1824 $L$from_epilogue:: | 1825 $L$from_epilogue: |
1825 » mov» rdi,QWORD PTR[8+rsp]» ;WIN64 epilogue | 1826 » mov» rdi,QWORD[8+rsp]» ;WIN64 epilogue |
1826 » mov» rsi,QWORD PTR[16+rsp] | 1827 » mov» rsi,QWORD[16+rsp] |
1827 DB 0F3h,0C3h ;repret | 1828 DB 0F3h,0C3h ;repret |
1828 $L$SEH_end_bn_from_mont8x:: | 1829 $L$SEH_end_bn_from_mont8x: |
1829 bn_from_mont8x» ENDP | 1830 global» bn_scatter5 |
1830 PUBLIC» bn_scatter5 | |
1831 | 1831 |
1832 ALIGN 16 | 1832 ALIGN 16 |
1833 bn_scatter5» PROC PUBLIC | 1833 bn_scatter5: |
1834 cmp edx,0 | 1834 cmp edx,0 |
1835 » jz» $L$scatter_epilogue | 1835 » jz» NEAR $L$scatter_epilogue |
1836 » lea» r8,QWORD PTR[r9*8+r8] | 1836 » lea» r8,[r9*8+r8] |
1837 $L$scatter:: | 1837 $L$scatter: |
1838 » mov» rax,QWORD PTR[rcx] | 1838 » mov» rax,QWORD[rcx] |
1839 » lea» rcx,QWORD PTR[8+rcx] | 1839 » lea» rcx,[8+rcx] |
1840 » mov» QWORD PTR[r8],rax | 1840 » mov» QWORD[r8],rax |
1841 » lea» r8,QWORD PTR[256+r8] | 1841 » lea» r8,[256+r8] |
1842 sub edx,1 | 1842 sub edx,1 |
1843 » jnz» $L$scatter | 1843 » jnz» NEAR $L$scatter |
1844 $L$scatter_epilogue:: | 1844 $L$scatter_epilogue: |
1845 DB 0F3h,0C3h ;repret | 1845 DB 0F3h,0C3h ;repret |
1846 bn_scatter5 ENDP | |
1847 | 1846 |
1848 PUBLIC» bn_gather5 | 1847 |
| 1848 global» bn_gather5 |
1849 | 1849 |
1850 ALIGN 16 | 1850 ALIGN 16 |
1851 bn_gather5» PROC PUBLIC | 1851 bn_gather5: |
1852 $L$SEH_begin_bn_gather5:: | 1852 $L$SEH_begin_bn_gather5: |
1853 | 1853 |
1854 DB» 048h,083h,0ech,028h | 1854 DB» 0x48,0x83,0xec,0x28 |
1855 DB» 00fh,029h,034h,024h | 1855 DB» 0x0f,0x29,0x34,0x24 |
1856 DB» 00fh,029h,07ch,024h,010h | 1856 DB» 0x0f,0x29,0x7c,0x24,0x10 |
1857 mov r11d,r9d | 1857 mov r11d,r9d |
1858 shr r9d,3 | 1858 shr r9d,3 |
1859 and r11,7 | 1859 and r11,7 |
1860 not r9d | 1860 not r9d |
1861 » lea» rax,QWORD PTR[$L$magic_masks] | 1861 » lea» rax,[$L$magic_masks] |
1862 and r9d,3 | 1862 and r9d,3 |
1863 » lea» r8,QWORD PTR[128+r11*8+r8] | 1863 » lea» r8,[128+r11*8+r8] |
1864 » movq» xmm4,QWORD PTR[r9*8+rax] | 1864 » movq» xmm4,QWORD[r9*8+rax] |
1865 » movq» xmm5,QWORD PTR[8+r9*8+rax] | 1865 » movq» xmm5,QWORD[8+r9*8+rax] |
1866 » movq» xmm6,QWORD PTR[16+r9*8+rax] | 1866 » movq» xmm6,QWORD[16+r9*8+rax] |
1867 » movq» xmm7,QWORD PTR[24+r9*8+rax] | 1867 » movq» xmm7,QWORD[24+r9*8+rax] |
1868 » jmp» $L$gather | 1868 » jmp» NEAR $L$gather |
1869 ALIGN 16 | 1869 ALIGN 16 |
1870 $L$gather:: | 1870 $L$gather: |
1871 » movq» xmm0,QWORD PTR[(((-128)))+r8] | 1871 » movq» xmm0,QWORD[(((-128)))+r8] |
1872 » movq» xmm1,QWORD PTR[((-64))+r8] | 1872 » movq» xmm1,QWORD[((-64))+r8] |
1873 pand xmm0,xmm4 | 1873 pand xmm0,xmm4 |
1874 » movq» xmm2,QWORD PTR[r8] | 1874 » movq» xmm2,QWORD[r8] |
1875 pand xmm1,xmm5 | 1875 pand xmm1,xmm5 |
1876 » movq» xmm3,QWORD PTR[64+r8] | 1876 » movq» xmm3,QWORD[64+r8] |
1877 pand xmm2,xmm6 | 1877 pand xmm2,xmm6 |
1878 por xmm0,xmm1 | 1878 por xmm0,xmm1 |
1879 pand xmm3,xmm7 | 1879 pand xmm3,xmm7 |
1880 DB» 067h,067h | 1880 DB» 0x67,0x67 |
1881 por xmm0,xmm2 | 1881 por xmm0,xmm2 |
1882 » lea» r8,QWORD PTR[256+r8] | 1882 » lea» r8,[256+r8] |
1883 por xmm0,xmm3 | 1883 por xmm0,xmm3 |
1884 | 1884 |
1885 » movq» QWORD PTR[rcx],xmm0 | 1885 » movq» QWORD[rcx],xmm0 |
1886 » lea» rcx,QWORD PTR[8+rcx] | 1886 » lea» rcx,[8+rcx] |
1887 sub edx,1 | 1887 sub edx,1 |
1888 » jnz» $L$gather | 1888 » jnz» NEAR $L$gather |
1889 » movaps» xmm6,XMMWORD PTR[rsp] | 1889 » movaps» xmm6,XMMWORD[rsp] |
1890 » movaps» xmm7,XMMWORD PTR[16+rsp] | 1890 » movaps» xmm7,XMMWORD[16+rsp] |
1891 » lea» rsp,QWORD PTR[40+rsp] | 1891 » lea» rsp,[40+rsp] |
1892 DB 0F3h,0C3h ;repret | 1892 DB 0F3h,0C3h ;repret |
1893 $L$SEH_end_bn_gather5:: | 1893 $L$SEH_end_bn_gather5: |
1894 bn_gather5» ENDP | 1894 |
1895 ALIGN 64 | 1895 ALIGN 64 |
1896 $L$magic_masks:: | 1896 $L$magic_masks: |
1897 DD 0,0,0,0,0,0,-1,-1 | 1897 DD 0,0,0,0,0,0,-1,-1 |
1898 DD 0,0,0,0,0,0,0,0 | 1898 DD 0,0,0,0,0,0,0,0 |
1899 DB 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105 | 1899 DB 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105 |
1900 DB 112,108,105,99,97,116,105,111,110,32,119,105,116,104,32,115 | 1900 DB 112,108,105,99,97,116,105,111,110,32,119,105,116,104,32,115 |
1901 DB 99,97,116,116,101,114,47,103,97,116,104,101,114,32,102,111 | 1901 DB 99,97,116,116,101,114,47,103,97,116,104,101,114,32,102,111 |
1902 DB 114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79 | 1902 DB 114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79 |
1903 DB 71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111 | 1903 DB 71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111 |
1904 DB 112,101,110,115,115,108,46,111,114,103,62,0 | 1904 DB 112,101,110,115,115,108,46,111,114,103,62,0 |
1905 EXTERN» __imp_RtlVirtualUnwind:NEAR | 1905 EXTERN» __imp_RtlVirtualUnwind |
1906 | 1906 |
1907 ALIGN 16 | 1907 ALIGN 16 |
1908 mul_handler» PROC PRIVATE | 1908 mul_handler: |
1909 push rsi | 1909 push rsi |
1910 push rdi | 1910 push rdi |
1911 push rbx | 1911 push rbx |
1912 push rbp | 1912 push rbp |
1913 push r12 | 1913 push r12 |
1914 push r13 | 1914 push r13 |
1915 push r14 | 1915 push r14 |
1916 push r15 | 1916 push r15 |
1917 pushfq | 1917 pushfq |
1918 sub rsp,64 | 1918 sub rsp,64 |
1919 | 1919 |
1920 » mov» rax,QWORD PTR[120+r8] | 1920 » mov» rax,QWORD[120+r8] |
1921 » mov» rbx,QWORD PTR[248+r8] | 1921 » mov» rbx,QWORD[248+r8] |
1922 | 1922 |
1923 » mov» rsi,QWORD PTR[8+r9] | 1923 » mov» rsi,QWORD[8+r9] |
1924 » mov» r11,QWORD PTR[56+r9] | 1924 » mov» r11,QWORD[56+r9] |
1925 | 1925 |
1926 » mov» r10d,DWORD PTR[r11] | 1926 » mov» r10d,DWORD[r11] |
1927 » lea» r10,QWORD PTR[r10*1+rsi] | 1927 » lea» r10,[r10*1+rsi] |
1928 cmp rbx,r10 | 1928 cmp rbx,r10 |
1929 » jb» $L$common_seh_tail | 1929 » jb» NEAR $L$common_seh_tail |
1930 | 1930 |
1931 » mov» rax,QWORD PTR[152+r8] | 1931 » mov» rax,QWORD[152+r8] |
1932 | 1932 |
1933 » mov» r10d,DWORD PTR[4+r11] | 1933 » mov» r10d,DWORD[4+r11] |
1934 » lea» r10,QWORD PTR[r10*1+rsi] | 1934 » lea» r10,[r10*1+rsi] |
1935 cmp rbx,r10 | 1935 cmp rbx,r10 |
1936 » jae» $L$common_seh_tail | 1936 » jae» NEAR $L$common_seh_tail |
1937 | 1937 |
1938 » lea» r10,QWORD PTR[$L$mul_epilogue] | 1938 » lea» r10,[$L$mul_epilogue] |
1939 cmp rbx,r10 | 1939 cmp rbx,r10 |
1940 » jb» $L$body_40 | 1940 » jb» NEAR $L$body_40 |
1941 | 1941 |
1942 » mov» r10,QWORD PTR[192+r8] | 1942 » mov» r10,QWORD[192+r8] |
1943 » mov» rax,QWORD PTR[8+r10*8+rax] | 1943 » mov» rax,QWORD[8+r10*8+rax] |
1944 » jmp» $L$body_proceed | 1944 » jmp» NEAR $L$body_proceed |
1945 | 1945 |
1946 $L$body_40:: | 1946 $L$body_40: |
1947 » mov» rax,QWORD PTR[40+rax] | 1947 » mov» rax,QWORD[40+rax] |
1948 $L$body_proceed:: | 1948 $L$body_proceed: |
1949 | 1949 |
1950 » movaps» xmm0,XMMWORD PTR[((-88))+rax] | 1950 » movaps» xmm0,XMMWORD[((-88))+rax] |
1951 » movaps» xmm1,XMMWORD PTR[((-72))+rax] | 1951 » movaps» xmm1,XMMWORD[((-72))+rax] |
1952 | 1952 |
1953 » mov» rbx,QWORD PTR[((-8))+rax] | 1953 » mov» rbx,QWORD[((-8))+rax] |
1954 » mov» rbp,QWORD PTR[((-16))+rax] | 1954 » mov» rbp,QWORD[((-16))+rax] |
1955 » mov» r12,QWORD PTR[((-24))+rax] | 1955 » mov» r12,QWORD[((-24))+rax] |
1956 » mov» r13,QWORD PTR[((-32))+rax] | 1956 » mov» r13,QWORD[((-32))+rax] |
1957 » mov» r14,QWORD PTR[((-40))+rax] | 1957 » mov» r14,QWORD[((-40))+rax] |
1958 » mov» r15,QWORD PTR[((-48))+rax] | 1958 » mov» r15,QWORD[((-48))+rax] |
1959 » mov» QWORD PTR[144+r8],rbx | 1959 » mov» QWORD[144+r8],rbx |
1960 » mov» QWORD PTR[160+r8],rbp | 1960 » mov» QWORD[160+r8],rbp |
1961 » mov» QWORD PTR[216+r8],r12 | 1961 » mov» QWORD[216+r8],r12 |
1962 » mov» QWORD PTR[224+r8],r13 | 1962 » mov» QWORD[224+r8],r13 |
1963 » mov» QWORD PTR[232+r8],r14 | 1963 » mov» QWORD[232+r8],r14 |
1964 » mov» QWORD PTR[240+r8],r15 | 1964 » mov» QWORD[240+r8],r15 |
1965 » movups» XMMWORD PTR[512+r8],xmm0 | 1965 » movups» XMMWORD[512+r8],xmm0 |
1966 » movups» XMMWORD PTR[528+r8],xmm1 | 1966 » movups» XMMWORD[528+r8],xmm1 |
1967 | 1967 |
1968 $L$common_seh_tail:: | 1968 $L$common_seh_tail: |
1969 » mov» rdi,QWORD PTR[8+rax] | 1969 » mov» rdi,QWORD[8+rax] |
1970 » mov» rsi,QWORD PTR[16+rax] | 1970 » mov» rsi,QWORD[16+rax] |
1971 » mov» QWORD PTR[152+r8],rax | 1971 » mov» QWORD[152+r8],rax |
1972 » mov» QWORD PTR[168+r8],rsi | 1972 » mov» QWORD[168+r8],rsi |
1973 » mov» QWORD PTR[176+r8],rdi | 1973 » mov» QWORD[176+r8],rdi |
1974 | 1974 |
1975 » mov» rdi,QWORD PTR[40+r9] | 1975 » mov» rdi,QWORD[40+r9] |
1976 mov rsi,r8 | 1976 mov rsi,r8 |
1977 mov ecx,154 | 1977 mov ecx,154 |
1978 » DD» 0a548f3fch | 1978 » DD» 0xa548f3fc |
1979 | 1979 |
1980 mov rsi,r9 | 1980 mov rsi,r9 |
1981 xor rcx,rcx | 1981 xor rcx,rcx |
1982 » mov» rdx,QWORD PTR[8+rsi] | 1982 » mov» rdx,QWORD[8+rsi] |
1983 » mov» r8,QWORD PTR[rsi] | 1983 » mov» r8,QWORD[rsi] |
1984 » mov» r9,QWORD PTR[16+rsi] | 1984 » mov» r9,QWORD[16+rsi] |
1985 » mov» r10,QWORD PTR[40+rsi] | 1985 » mov» r10,QWORD[40+rsi] |
1986 » lea» r11,QWORD PTR[56+rsi] | 1986 » lea» r11,[56+rsi] |
1987 » lea» r12,QWORD PTR[24+rsi] | 1987 » lea» r12,[24+rsi] |
1988 » mov» QWORD PTR[32+rsp],r10 | 1988 » mov» QWORD[32+rsp],r10 |
1989 » mov» QWORD PTR[40+rsp],r11 | 1989 » mov» QWORD[40+rsp],r11 |
1990 » mov» QWORD PTR[48+rsp],r12 | 1990 » mov» QWORD[48+rsp],r12 |
1991 » mov» QWORD PTR[56+rsp],rcx | 1991 » mov» QWORD[56+rsp],rcx |
1992 » call» QWORD PTR[__imp_RtlVirtualUnwind] | 1992 » call» QWORD[__imp_RtlVirtualUnwind] |
1993 | 1993 |
1994 mov eax,1 | 1994 mov eax,1 |
1995 add rsp,64 | 1995 add rsp,64 |
1996 popfq | 1996 popfq |
1997 pop r15 | 1997 pop r15 |
1998 pop r14 | 1998 pop r14 |
1999 pop r13 | 1999 pop r13 |
2000 pop r12 | 2000 pop r12 |
2001 pop rbp | 2001 pop rbp |
2002 pop rbx | 2002 pop rbx |
2003 pop rdi | 2003 pop rdi |
2004 pop rsi | 2004 pop rsi |
2005 DB 0F3h,0C3h ;repret | 2005 DB 0F3h,0C3h ;repret |
2006 mul_handler ENDP | |
2007 | 2006 |
2008 .text$» ENDS | 2007 |
2009 .pdata» SEGMENT READONLY ALIGN(4) | 2008 section».pdata rdata align=4 |
2010 ALIGN 4 | 2009 ALIGN 4 |
2011 » DD» imagerel $L$SEH_begin_bn_mul_mont_gather5 | 2010 » DD» $L$SEH_begin_bn_mul_mont_gather5 wrt ..imagebase |
2012 » DD» imagerel $L$SEH_end_bn_mul_mont_gather5 | 2011 » DD» $L$SEH_end_bn_mul_mont_gather5 wrt ..imagebase |
2013 » DD» imagerel $L$SEH_info_bn_mul_mont_gather5 | 2012 » DD» $L$SEH_info_bn_mul_mont_gather5 wrt ..imagebase |
2014 | 2013 |
2015 » DD» imagerel $L$SEH_begin_bn_mul4x_mont_gather5 | 2014 » DD» $L$SEH_begin_bn_mul4x_mont_gather5 wrt ..imagebase |
2016 » DD» imagerel $L$SEH_end_bn_mul4x_mont_gather5 | 2015 » DD» $L$SEH_end_bn_mul4x_mont_gather5 wrt ..imagebase |
2017 » DD» imagerel $L$SEH_info_bn_mul4x_mont_gather5 | 2016 » DD» $L$SEH_info_bn_mul4x_mont_gather5 wrt ..imagebase |
2018 | 2017 |
2019 » DD» imagerel $L$SEH_begin_bn_power5 | 2018 » DD» $L$SEH_begin_bn_power5 wrt ..imagebase |
2020 » DD» imagerel $L$SEH_end_bn_power5 | 2019 » DD» $L$SEH_end_bn_power5 wrt ..imagebase |
2021 » DD» imagerel $L$SEH_info_bn_power5 | 2020 » DD» $L$SEH_info_bn_power5 wrt ..imagebase |
2022 | 2021 |
2023 » DD» imagerel $L$SEH_begin_bn_from_mont8x | 2022 » DD» $L$SEH_begin_bn_from_mont8x wrt ..imagebase |
2024 » DD» imagerel $L$SEH_end_bn_from_mont8x | 2023 » DD» $L$SEH_end_bn_from_mont8x wrt ..imagebase |
2025 » DD» imagerel $L$SEH_info_bn_from_mont8x | 2024 » DD» $L$SEH_info_bn_from_mont8x wrt ..imagebase |
2026 » DD» imagerel $L$SEH_begin_bn_gather5 | 2025 » DD» $L$SEH_begin_bn_gather5 wrt ..imagebase |
2027 » DD» imagerel $L$SEH_end_bn_gather5 | 2026 » DD» $L$SEH_end_bn_gather5 wrt ..imagebase |
2028 » DD» imagerel $L$SEH_info_bn_gather5 | 2027 » DD» $L$SEH_info_bn_gather5 wrt ..imagebase |
2029 | 2028 |
2030 .pdata» ENDS | 2029 section».xdata rdata align=8 |
2031 .xdata» SEGMENT READONLY ALIGN(8) | |
2032 ALIGN 8 | 2030 ALIGN 8 |
2033 $L$SEH_info_bn_mul_mont_gather5:: | 2031 $L$SEH_info_bn_mul_mont_gather5: |
2034 DB 9,0,0,0 | 2032 DB 9,0,0,0 |
2035 » DD» imagerel mul_handler | 2033 » DD» mul_handler wrt ..imagebase |
2036 » DD» imagerel $L$mul_body,imagerel $L$mul_epilogue | 2034 » DD» $L$mul_body wrt ..imagebase,$L$mul_epilogue wrt ..imagebase |
2037 ALIGN 8 | 2035 ALIGN 8 |
2038 $L$SEH_info_bn_mul4x_mont_gather5:: | 2036 $L$SEH_info_bn_mul4x_mont_gather5: |
2039 DB 9,0,0,0 | 2037 DB 9,0,0,0 |
2040 » DD» imagerel mul_handler | 2038 » DD» mul_handler wrt ..imagebase |
2041 » DD» imagerel $L$mul4x_body,imagerel $L$mul4x_epilogue | 2039 » DD» $L$mul4x_body wrt ..imagebase,$L$mul4x_epilogue wrt ..imagebase |
2042 ALIGN 8 | 2040 ALIGN 8 |
2043 $L$SEH_info_bn_power5:: | 2041 $L$SEH_info_bn_power5: |
2044 DB 9,0,0,0 | 2042 DB 9,0,0,0 |
2045 » DD» imagerel mul_handler | 2043 » DD» mul_handler wrt ..imagebase |
2046 » DD» imagerel $L$power5_body,imagerel $L$power5_epilogue | 2044 » DD» $L$power5_body wrt ..imagebase,$L$power5_epilogue wrt ..imagebas
e |
2047 ALIGN 8 | 2045 ALIGN 8 |
2048 $L$SEH_info_bn_from_mont8x:: | 2046 $L$SEH_info_bn_from_mont8x: |
2049 DB 9,0,0,0 | 2047 DB 9,0,0,0 |
2050 » DD» imagerel mul_handler | 2048 » DD» mul_handler wrt ..imagebase |
2051 » DD» imagerel $L$from_body,imagerel $L$from_epilogue | 2049 » DD» $L$from_body wrt ..imagebase,$L$from_epilogue wrt ..imagebase |
2052 ALIGN 8 | 2050 ALIGN 8 |
2053 $L$SEH_info_bn_gather5:: | 2051 $L$SEH_info_bn_gather5: |
2054 DB» 001h,00dh,005h,000h | 2052 DB» 0x01,0x0d,0x05,0x00 |
2055 DB» 00dh,078h,001h,000h | 2053 DB» 0x0d,0x78,0x01,0x00 |
2056 DB» 008h,068h,000h,000h | 2054 DB» 0x08,0x68,0x00,0x00 |
2057 DB» 004h,042h,000h,000h | 2055 DB» 0x04,0x42,0x00,0x00 |
2058 ALIGN 8 | 2056 ALIGN 8 |
2059 | |
2060 .xdata ENDS | |
2061 END | |
OLD | NEW |