1 .text 2 .type _mul_1x1_mmx,@function 3 .align 16 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 .size _mul_1x1_mmx,.-_mul_1x1_mmx 110 .type _mul_1x1_ialu,@function 111 .align 16 112 _mul_1x1_ialu: 113 %ifdef __CET__ 114 115 .byte 243,15,30,251 116 %endif 117 118 subl $36,%esp 119 movl %eax,%ecx 120 leal (%eax,%eax,1),%edx 121 leal (,%eax,4),%ebp 122 andl $1073741823,%ecx 123 leal (%eax,%eax,1),%edi 124 sarl $31,%eax 125 movl $0,(%esp) 126 andl $2147483647,%edx 127 movl %ecx,4(%esp) 128 xorl %edx,%ecx 129 movl %edx,8(%esp) 130 xorl %ebp,%edx 131 movl %ecx,12(%esp) 132 xorl %edx,%ecx 133 movl %ebp,16(%esp) 134 xorl %edx,%ebp 135 movl %ecx,20(%esp) 136 xorl %ecx,%ebp 137 sarl $31,%edi 138 andl %ebx,%eax 139 movl %edx,24(%esp) 140 andl %ebx,%edi 141 movl %ebp,28(%esp) 142 movl %eax,%edx 143 shll $31,%eax 144 movl %edi,%ecx 145 shrl $1,%edx 146 movl $7,%esi 147 shll $30,%edi 148 andl %ebx,%esi 149 shrl $2,%ecx 150 xorl %edi,%eax 151 shrl $3,%ebx 152 movl $7,%edi 153 andl %ebx,%edi 154 shrl $3,%ebx 155 xorl %ecx,%edx 156 xorl (%esp,%esi,4),%eax 157 movl $7,%esi 158 andl %ebx,%esi 159 shrl $3,%ebx 160 movl (%esp,%edi,4),%ebp 161 movl $7,%edi 162 movl %ebp,%ecx 163 shll $3,%ebp 164 andl %ebx,%edi 165 shrl $29,%ecx 166 xorl %ebp,%eax 167 shrl $3,%ebx 168 xorl %ecx,%edx 169 movl (%esp,%esi,4),%ecx 170 movl $7,%esi 171 movl %ecx,%ebp 172 shll $6,%ecx 173 andl %ebx,%esi 174 shrl $26,%ebp 175 xorl %ecx,%eax 176 shrl $3,%ebx 177 xorl %ebp,%edx 178 movl (%esp,%edi,4),%ebp 179 movl $7,%edi 180 movl %ebp,%ecx 181 shll $9,%ebp 182 andl %ebx,%edi 183 shrl $23,%ecx 184 xorl %ebp,%eax 185 shrl $3,%ebx 186 xorl %ecx,%edx 187 movl (%esp,%esi,4),%ecx 188 movl $7,%esi 189 movl %ecx,%ebp 190 shll $12,%ecx 191 andl %ebx,%esi 192 shrl $20,%ebp 193 xorl %ecx,%eax 194 shrl $3,%ebx 195 xorl %ebp,%edx 196 movl (%esp,%edi,4),%ebp 197 movl $7,%edi 198 movl %ebp,%ecx 199 shll $15,%ebp 200 andl %ebx,%edi 201 shrl $17,%ecx 202 xorl %ebp,%eax 203 shrl $3,%ebx 204 xorl %ecx,%edx 205 movl (%esp,%esi,4),%ecx 206 movl $7,%esi 207 movl %ecx,%ebp 208 shll $18,%ecx 209 andl %ebx,%esi 210 shrl $14,%ebp 211 xorl %ecx,%eax 212 shrl $3,%ebx 213 xorl %ebp,%edx 214 movl (%esp,%edi,4),%ebp 215 movl $7,%edi 216 movl %ebp,%ecx 217 shll $21,%ebp 218 andl %ebx,%edi 219 shrl $11,%ecx 220 xorl %ebp,%eax 221 shrl $3,%ebx 222 xorl %ecx,%edx 223 movl (%esp,%esi,4),%ecx 224 movl $7,%esi 225 movl %ecx,%ebp 226 shll $24,%ecx 227 andl %ebx,%esi 228 shrl $8,%ebp 229 xorl %ecx,%eax 230 shrl $3,%ebx 231 xorl %ebp,%edx 232 movl (%esp,%edi,4),%ebp 233 movl %ebp,%ecx 234 shll $27,%ebp 235 movl (%esp,%esi,4),%edi 236 shrl $5,%ecx 237 movl %edi,%esi 238 xorl %ebp,%eax 239 shll $30,%edi 240 xorl %ecx,%edx 241 shrl $2,%esi 242 xorl %edi,%eax 243 xorl %esi,%edx 244 addl $36,%esp 245 ret 246 .size _mul_1x1_ialu,.-_mul_1x1_ialu 247 .globl bn_GF2m_mul_2x2 248 .type bn_GF2m_mul_2x2,@function 249 .align 16 250 bn_GF2m_mul_2x2: 251 .L_bn_GF2m_mul_2x2_begin: 252 %ifdef __CET__ 253 254 .byte 243,15,30,251 255 %endif 256 257 call .L000PIC_me_up 258 .L000PIC_me_up: 259 popl %edx 260 leal OPENSSL_ia32cap_P-.L000PIC_me_up(%edx),%edx 261 movl (%edx),%eax 262 movl 4(%edx),%edx 263 testl $8388608,%eax 264 jz .L001ialu 265 testl $16777216,%eax 266 jz .L002mmx 267 testl $2,%edx 268 jz .L002mmx 269 movups 8(%esp),%xmm0 270 shufps $177,%xmm0,%xmm0 271 .byte 102,15,58,68,192,1 272 movl 4(%esp),%eax 273 movups %xmm0,(%eax) 274 ret 275 .align 16 276 .L002mmx: 277 pushl %ebp 278 pushl %ebx 279 pushl %esi 280 pushl %edi 281 movl 24(%esp),%eax 282 movl 32(%esp),%ebx 283 call _mul_1x1_mmx 284 movq %mm0,%mm7 285 movl 28(%esp),%eax 286 movl 36(%esp),%ebx 287 call _mul_1x1_mmx 288 movq %mm0,%mm6 289 movl 24(%esp),%eax 290 movl 32(%esp),%ebx 291 xorl 28(%esp),%eax 292 xorl 36(%esp),%ebx 293 call _mul_1x1_mmx 294 pxor %mm7,%mm0 295 movl 20(%esp),%eax 296 pxor %mm6,%mm0 297 movq %mm0,%mm2 298 psllq $32,%mm0 299 popl %edi 300 psrlq $32,%mm2 301 popl %esi 302 pxor %mm6,%mm0 303 popl %ebx 304 pxor %mm7,%mm2 305 movq %mm0,(%eax) 306 popl %ebp 307 movq %mm2,8(%eax) 308 emms 309 ret 310 .align 16 311 .L001ialu: 312 pushl %ebp 313 pushl %ebx 314 pushl %esi 315 pushl %edi 316 subl $20,%esp 317 movl 44(%esp),%eax 318 movl 52(%esp),%ebx 319 call _mul_1x1_ialu 320 movl %eax,8(%esp) 321 movl %edx,12(%esp) 322 movl 48(%esp),%eax 323 movl 56(%esp),%ebx 324 call _mul_1x1_ialu 325 movl %eax,(%esp) 326 movl %edx,4(%esp) 327 movl 44(%esp),%eax 328 movl 52(%esp),%ebx 329 xorl 48(%esp),%eax 330 xorl 56(%esp),%ebx 331 call _mul_1x1_ialu 332 movl 40(%esp),%ebp 333 movl (%esp),%ebx 334 movl 4(%esp),%ecx 335 movl 8(%esp),%edi 336 movl 12(%esp),%esi 337 xorl %edx,%eax 338 xorl %ecx,%edx 339 xorl %ebx,%eax 340 movl %ebx,(%ebp) 341 xorl %edi,%edx 342 movl %esi,12(%ebp) 343 xorl %esi,%eax 344 addl $20,%esp 345 xorl %esi,%edx 346 popl %edi 347 xorl %edx,%eax 348 popl %esi 349 movl %edx,8(%ebp) 350 popl %ebx 351 movl %eax,4(%ebp) 352 popl %ebp 353 ret 354 .size bn_GF2m_mul_2x2,.-.L_bn_GF2m_mul_2x2_begin 355 .byte 71,70,40,50,94,109,41,32,77,117,108,116,105,112,108,105 356 .byte 99,97,116,105,111,110,32,102,111,114,32,120,56,54,44,32 357 .byte 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 358 .byte 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 359 .byte 62,0 360 .comm OPENSSL_ia32cap_P,16,4 361 362 .section ".note.gnu.property", "a" 363 .p2align 2 364 .long 1f - 0f 365 .long 4f - 1f 366 .long 5 367 0: 368 .asciz "GNU" 369 1: 370 .p2align 2 371 .long 0xc0000002 372 .long 3f - 2f 373 2: 374 .long 3 375 3: 376 .p2align 2 377 4: 378