1 .text 2 .type __mul_1x1_mmx,@function 3 .align 4 4 __mul_1x1_mmx: 5 %ifdef __CET__ 6 7 .byte 243,15,30,251 8 %endif 9 10 subl $36,%esp 11 movl %eax,%ecx 12 leal (%eax,%eax,1),%edx 13 andl $1073741823,%ecx 14 leal (%edx,%edx,1),%ebp 15 movl $0,(%esp) 16 andl $2147483647,%edx 17 movd %eax,%mm2 18 movd %ebx,%mm3 19 movl %ecx,4(%esp) 20 xorl %edx,%ecx 21 pxor %mm5,%mm5 22 pxor %mm4,%mm4 23 movl %edx,8(%esp) 24 xorl %ebp,%edx 25 movl %ecx,12(%esp) 26 pcmpgtd %mm2,%mm5 27 paddd %mm2,%mm2 28 xorl %edx,%ecx 29 movl %ebp,16(%esp) 30 xorl %edx,%ebp 31 pand %mm3,%mm5 32 pcmpgtd %mm2,%mm4 33 movl %ecx,20(%esp) 34 xorl %ecx,%ebp 35 psllq $31,%mm5 36 pand %mm3,%mm4 37 movl %edx,24(%esp) 38 movl $7,%esi 39 movl %ebp,28(%esp) 40 movl %esi,%ebp 41 andl %ebx,%esi 42 shrl $3,%ebx 43 movl %ebp,%edi 44 psllq $30,%mm4 45 andl %ebx,%edi 46 shrl $3,%ebx 47 movd (%esp,%esi,4),%mm0 48 movl %ebp,%esi 49 andl %ebx,%esi 50 shrl $3,%ebx 51 movd (%esp,%edi,4),%mm2 52 movl %ebp,%edi 53 psllq $3,%mm2 54 andl %ebx,%edi 55 shrl $3,%ebx 56 pxor %mm2,%mm0 57 movd (%esp,%esi,4),%mm1 58 movl %ebp,%esi 59 psllq $6,%mm1 60 andl %ebx,%esi 61 shrl $3,%ebx 62 pxor %mm1,%mm0 63 movd (%esp,%edi,4),%mm2 64 movl %ebp,%edi 65 psllq $9,%mm2 66 andl %ebx,%edi 67 shrl $3,%ebx 68 pxor %mm2,%mm0 69 movd (%esp,%esi,4),%mm1 70 movl %ebp,%esi 71 psllq $12,%mm1 72 andl %ebx,%esi 73 shrl $3,%ebx 74 pxor %mm1,%mm0 75 movd (%esp,%edi,4),%mm2 76 movl %ebp,%edi 77 psllq $15,%mm2 78 andl %ebx,%edi 79 shrl $3,%ebx 80 pxor %mm2,%mm0 81 movd (%esp,%esi,4),%mm1 82 movl %ebp,%esi 83 psllq $18,%mm1 84 andl %ebx,%esi 85 shrl $3,%ebx 86 pxor %mm1,%mm0 87 movd (%esp,%edi,4),%mm2 88 movl %ebp,%edi 89 psllq $21,%mm2 90 andl %ebx,%edi 91 shrl $3,%ebx 92 pxor %mm2,%mm0 93 movd (%esp,%esi,4),%mm1 94 movl %ebp,%esi 95 psllq $24,%mm1 96 andl %ebx,%esi 97 shrl $3,%ebx 98 pxor %mm1,%mm0 99 movd (%esp,%edi,4),%mm2 100 pxor %mm4,%mm0 101 psllq $27,%mm2 102 pxor %mm2,%mm0 103 movd (%esp,%esi,4),%mm1 104 pxor %mm5,%mm0 105 psllq $30,%mm1 106 addl $36,%esp 107 pxor %mm1,%mm0 108 ret 109 .type __mul_1x1_ialu,@function 110 .align 4 111 __mul_1x1_ialu: 112 %ifdef __CET__ 113 114 .byte 243,15,30,251 115 %endif 116 117 subl $36,%esp 118 movl %eax,%ecx 119 leal (%eax,%eax,1),%edx 120 leal (,%eax,4),%ebp 121 andl $1073741823,%ecx 122 leal (%eax,%eax,1),%edi 123 sarl $31,%eax 124 movl $0,(%esp) 125 andl $2147483647,%edx 126 movl %ecx,4(%esp) 127 xorl %edx,%ecx 128 movl %edx,8(%esp) 129 xorl %ebp,%edx 130 movl %ecx,12(%esp) 131 xorl %edx,%ecx 132 movl %ebp,16(%esp) 133 xorl %edx,%ebp 134 movl %ecx,20(%esp) 135 xorl %ecx,%ebp 136 sarl $31,%edi 137 andl %ebx,%eax 138 movl %edx,24(%esp) 139 andl %ebx,%edi 140 movl %ebp,28(%esp) 141 movl %eax,%edx 142 shll $31,%eax 143 movl %edi,%ecx 144 shrl $1,%edx 145 movl $7,%esi 146 shll $30,%edi 147 andl %ebx,%esi 148 shrl $2,%ecx 149 xorl %edi,%eax 150 shrl $3,%ebx 151 movl $7,%edi 152 andl %ebx,%edi 153 shrl $3,%ebx 154 xorl %ecx,%edx 155 xorl (%esp,%esi,4),%eax 156 movl $7,%esi 157 andl %ebx,%esi 158 shrl $3,%ebx 159 movl (%esp,%edi,4),%ebp 160 movl $7,%edi 161 movl %ebp,%ecx 162 shll $3,%ebp 163 andl %ebx,%edi 164 shrl $29,%ecx 165 xorl %ebp,%eax 166 shrl $3,%ebx 167 xorl %ecx,%edx 168 movl (%esp,%esi,4),%ecx 169 movl $7,%esi 170 movl %ecx,%ebp 171 shll $6,%ecx 172 andl %ebx,%esi 173 shrl $26,%ebp 174 xorl %ecx,%eax 175 shrl $3,%ebx 176 xorl %ebp,%edx 177 movl (%esp,%edi,4),%ebp 178 movl $7,%edi 179 movl %ebp,%ecx 180 shll $9,%ebp 181 andl %ebx,%edi 182 shrl $23,%ecx 183 xorl %ebp,%eax 184 shrl $3,%ebx 185 xorl %ecx,%edx 186 movl (%esp,%esi,4),%ecx 187 movl $7,%esi 188 movl %ecx,%ebp 189 shll $12,%ecx 190 andl %ebx,%esi 191 shrl $20,%ebp 192 xorl %ecx,%eax 193 shrl $3,%ebx 194 xorl %ebp,%edx 195 movl (%esp,%edi,4),%ebp 196 movl $7,%edi 197 movl %ebp,%ecx 198 shll $15,%ebp 199 andl %ebx,%edi 200 shrl $17,%ecx 201 xorl %ebp,%eax 202 shrl $3,%ebx 203 xorl %ecx,%edx 204 movl (%esp,%esi,4),%ecx 205 movl $7,%esi 206 movl %ecx,%ebp 207 shll $18,%ecx 208 andl %ebx,%esi 209 shrl $14,%ebp 210 xorl %ecx,%eax 211 shrl $3,%ebx 212 xorl %ebp,%edx 213 movl (%esp,%edi,4),%ebp 214 movl $7,%edi 215 movl %ebp,%ecx 216 shll $21,%ebp 217 andl %ebx,%edi 218 shrl $11,%ecx 219 xorl %ebp,%eax 220 shrl $3,%ebx 221 xorl %ecx,%edx 222 movl (%esp,%esi,4),%ecx 223 movl $7,%esi 224 movl %ecx,%ebp 225 shll $24,%ecx 226 andl %ebx,%esi 227 shrl $8,%ebp 228 xorl %ecx,%eax 229 shrl $3,%ebx 230 xorl %ebp,%edx 231 movl (%esp,%edi,4),%ebp 232 movl %ebp,%ecx 233 shll $27,%ebp 234 movl (%esp,%esi,4),%edi 235 shrl $5,%ecx 236 movl %edi,%esi 237 xorl %ebp,%eax 238 shll $30,%edi 239 xorl %ecx,%edx 240 shrl $2,%esi 241 xorl %edi,%eax 242 xorl %esi,%edx 243 addl $36,%esp 244 ret 245 .globl _bn_GF2m_mul_2x2 246 .type _bn_GF2m_mul_2x2,@function 247 .align 4 248 _bn_GF2m_mul_2x2: 249 L_bn_GF2m_mul_2x2_begin: 250 %ifdef __CET__ 251 252 .byte 243,15,30,251 253 %endif 254 255 call L000PIC_me_up 256 L000PIC_me_up: 257 popl %edx 258 leal __GLOBAL_OFFSET_TABLE_+[.-L000PIC_me_up](%edx),%edx 259 movl _OPENSSL_ia32cap_P@GOT(%edx),%edx 260 movl (%edx),%eax 261 movl 4(%edx),%edx 262 testl $8388608,%eax 263 jz L001ialu 264 testl $16777216,%eax 265 jz L002mmx 266 testl $2,%edx 267 jz L002mmx 268 movups 8(%esp),%xmm0 269 shufps $177,%xmm0,%xmm0 270 .byte 102,15,58,68,192,1 271 movl 4(%esp),%eax 272 movups %xmm0,(%eax) 273 ret 274 .align 4,0x90 275 L002mmx: 276 pushl %ebp 277 pushl %ebx 278 pushl %esi 279 pushl %edi 280 movl 24(%esp),%eax 281 movl 32(%esp),%ebx 282 call __mul_1x1_mmx 283 movq %mm0,%mm7 284 movl 28(%esp),%eax 285 movl 36(%esp),%ebx 286 call __mul_1x1_mmx 287 movq %mm0,%mm6 288 movl 24(%esp),%eax 289 movl 32(%esp),%ebx 290 xorl 28(%esp),%eax 291 xorl 36(%esp),%ebx 292 call __mul_1x1_mmx 293 pxor %mm7,%mm0 294 movl 20(%esp),%eax 295 pxor %mm6,%mm0 296 movq %mm0,%mm2 297 psllq $32,%mm0 298 popl %edi 299 psrlq $32,%mm2 300 popl %esi 301 pxor %mm6,%mm0 302 popl %ebx 303 pxor %mm7,%mm2 304 movq %mm0,(%eax) 305 popl %ebp 306 movq %mm2,8(%eax) 307 emms 308 ret 309 .align 4,0x90 310 L001ialu: 311 pushl %ebp 312 pushl %ebx 313 pushl %esi 314 pushl %edi 315 subl $20,%esp 316 movl 44(%esp),%eax 317 movl 52(%esp),%ebx 318 call __mul_1x1_ialu 319 movl %eax,8(%esp) 320 movl %edx,12(%esp) 321 movl 48(%esp),%eax 322 movl 56(%esp),%ebx 323 call __mul_1x1_ialu 324 movl %eax,(%esp) 325 movl %edx,4(%esp) 326 movl 44(%esp),%eax 327 movl 52(%esp),%ebx 328 xorl 48(%esp),%eax 329 xorl 56(%esp),%ebx 330 call __mul_1x1_ialu 331 movl 40(%esp),%ebp 332 movl (%esp),%ebx 333 movl 4(%esp),%ecx 334 movl 8(%esp),%edi 335 movl 12(%esp),%esi 336 xorl %edx,%eax 337 xorl %ecx,%edx 338 xorl %ebx,%eax 339 movl %ebx,(%ebp) 340 xorl %edi,%edx 341 movl %esi,12(%ebp) 342 xorl %esi,%eax 343 addl $20,%esp 344 xorl %esi,%edx 345 popl %edi 346 xorl %edx,%eax 347 popl %esi 348 movl %edx,8(%ebp) 349 popl %ebx 350 movl %eax,4(%ebp) 351 popl %ebp 352 ret 353 .byte 71,70,40,50,94,109,41,32,77,117,108,116,105,112,108,105 354 .byte 99,97,116,105,111,110,32,102,111,114,32,120,56,54,44,32 355 .byte 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 356 .byte 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 357 .byte 62,0 358 .comm _OPENSSL_ia32cap_P,16 359