cryptlib/bn-sol.s

Tue, 29 Mar 2011 20:04:34 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 29 Mar 2011 20:04:34 +0200
changeset 334
4a34d7a82eab
permissions
-rw-r--r--

Rework package yet again, correcting and introducing new buildconf logic:
Conditionally disable bootstrap stage comparison correctly, correct
english grammar, better find system as(1) and ld(1), indotruce detailed
optimization option messages, more completely guess cpu types, allow
profiled bootstrapping without a preinstalled GCC because many other
compilers have long since implemented 64-bit arithmetic, instruct make
to build sequentially (not in sparallel) when building a profiled
bootstrap as GCC online documents recommend, and generally improve
comment blocks.

The single most important correction in this changeset relates to the
GCC changed optimization policy since at least GCC 4.5, in which -march
is always passed and not always correctly guessed. In the case of this
package, allowing GCC to guess the architecture leads to wild build
errors at various subcomponents (zlib, libgcc, libiberty...) and
bootstrap stages. It seems quite platform specific, and the safest
approach to correcting this seems to be explicitly always specifying the
-march argument when bootstrapping GCC. Because the best choice 'native'
is not available when bootstrapping using a foreign (non GCC) compiler,
a guess is made according to rpmmacros l_platform in that case.

It is questionable as to whether these recent optimization changes
on the part of GCC or this package are compatible with each other,
or if either are complete or correct at all. At least applying these
corrections allows this package to build again in most cases test.

michael@38 1 / Don't even think of reading this code
michael@38 2 / It was automatically generated by x86.pl
michael@38 3 / Which is a perl program used to generate the x86 assember for
michael@38 4 / any of elf, a.out, BSDI, Win32, gaswin (for GNU as on Win32) or Solaris
michael@38 5 / eric <eay@cryptsoft.com>
michael@38 6
michael@38 7 .file "x86.s"
michael@38 8 .version "01.01"
michael@38 9 gcc2_compiled.:
michael@38 10 .text
michael@38 11 .align 16
michael@38 12 .globl bn_mul_add_words
michael@38 13 .type bn_mul_add_words,@function
michael@38 14 bn_mul_add_words:
michael@38 15 pushl %ebp
michael@38 16 pushl %ebx
michael@38 17 pushl %esi
michael@38 18 pushl %edi
michael@38 19
michael@38 20
michael@38 21 xorl %esi, %esi
michael@38 22 movl 20(%esp), %edi
michael@38 23 movl 28(%esp), %ecx
michael@38 24 movl 24(%esp), %ebx
michael@38 25 andl $4294967288, %ecx
michael@38 26 movl 32(%esp), %ebp
michael@38 27 pushl %ecx
michael@38 28 jz .L000maw_finish
michael@38 29 .L001maw_loop:
michael@38 30 movl %ecx, (%esp)
michael@38 31 / Round 0
michael@38 32 movl (%ebx), %eax
michael@38 33 mull %ebp
michael@38 34 addl %esi, %eax
michael@38 35 movl (%edi), %esi
michael@38 36 adcl $0, %edx
michael@38 37 addl %esi, %eax
michael@38 38 adcl $0, %edx
michael@38 39 movl %eax, (%edi)
michael@38 40 movl %edx, %esi
michael@38 41 / Round 4
michael@38 42 movl 4(%ebx), %eax
michael@38 43 mull %ebp
michael@38 44 addl %esi, %eax
michael@38 45 movl 4(%edi), %esi
michael@38 46 adcl $0, %edx
michael@38 47 addl %esi, %eax
michael@38 48 adcl $0, %edx
michael@38 49 movl %eax, 4(%edi)
michael@38 50 movl %edx, %esi
michael@38 51 / Round 8
michael@38 52 movl 8(%ebx), %eax
michael@38 53 mull %ebp
michael@38 54 addl %esi, %eax
michael@38 55 movl 8(%edi), %esi
michael@38 56 adcl $0, %edx
michael@38 57 addl %esi, %eax
michael@38 58 adcl $0, %edx
michael@38 59 movl %eax, 8(%edi)
michael@38 60 movl %edx, %esi
michael@38 61 / Round 12
michael@38 62 movl 12(%ebx), %eax
michael@38 63 mull %ebp
michael@38 64 addl %esi, %eax
michael@38 65 movl 12(%edi), %esi
michael@38 66 adcl $0, %edx
michael@38 67 addl %esi, %eax
michael@38 68 adcl $0, %edx
michael@38 69 movl %eax, 12(%edi)
michael@38 70 movl %edx, %esi
michael@38 71 / Round 16
michael@38 72 movl 16(%ebx), %eax
michael@38 73 mull %ebp
michael@38 74 addl %esi, %eax
michael@38 75 movl 16(%edi), %esi
michael@38 76 adcl $0, %edx
michael@38 77 addl %esi, %eax
michael@38 78 adcl $0, %edx
michael@38 79 movl %eax, 16(%edi)
michael@38 80 movl %edx, %esi
michael@38 81 / Round 20
michael@38 82 movl 20(%ebx), %eax
michael@38 83 mull %ebp
michael@38 84 addl %esi, %eax
michael@38 85 movl 20(%edi), %esi
michael@38 86 adcl $0, %edx
michael@38 87 addl %esi, %eax
michael@38 88 adcl $0, %edx
michael@38 89 movl %eax, 20(%edi)
michael@38 90 movl %edx, %esi
michael@38 91 / Round 24
michael@38 92 movl 24(%ebx), %eax
michael@38 93 mull %ebp
michael@38 94 addl %esi, %eax
michael@38 95 movl 24(%edi), %esi
michael@38 96 adcl $0, %edx
michael@38 97 addl %esi, %eax
michael@38 98 adcl $0, %edx
michael@38 99 movl %eax, 24(%edi)
michael@38 100 movl %edx, %esi
michael@38 101 / Round 28
michael@38 102 movl 28(%ebx), %eax
michael@38 103 mull %ebp
michael@38 104 addl %esi, %eax
michael@38 105 movl 28(%edi), %esi
michael@38 106 adcl $0, %edx
michael@38 107 addl %esi, %eax
michael@38 108 adcl $0, %edx
michael@38 109 movl %eax, 28(%edi)
michael@38 110 movl %edx, %esi
michael@38 111
michael@38 112 movl (%esp), %ecx
michael@38 113 addl $32, %ebx
michael@38 114 addl $32, %edi
michael@38 115 subl $8, %ecx
michael@38 116 jnz .L001maw_loop
michael@38 117 .L000maw_finish:
michael@38 118 movl 32(%esp), %ecx
michael@38 119 andl $7, %ecx
michael@38 120 jnz .L002maw_finish2
michael@38 121 jmp .L003maw_end
michael@38 122 .align 16
michael@38 123 .L002maw_finish2:
michael@38 124 / Tail Round 0
michael@38 125 movl (%ebx), %eax
michael@38 126 mull %ebp
michael@38 127 addl %esi, %eax
michael@38 128 movl (%edi), %esi
michael@38 129 adcl $0, %edx
michael@38 130 addl %esi, %eax
michael@38 131 adcl $0, %edx
michael@38 132 decl %ecx
michael@38 133 movl %eax, (%edi)
michael@38 134 movl %edx, %esi
michael@38 135 jz .L003maw_end
michael@38 136 / Tail Round 1
michael@38 137 movl 4(%ebx), %eax
michael@38 138 mull %ebp
michael@38 139 addl %esi, %eax
michael@38 140 movl 4(%edi), %esi
michael@38 141 adcl $0, %edx
michael@38 142 addl %esi, %eax
michael@38 143 adcl $0, %edx
michael@38 144 decl %ecx
michael@38 145 movl %eax, 4(%edi)
michael@38 146 movl %edx, %esi
michael@38 147 jz .L003maw_end
michael@38 148 / Tail Round 2
michael@38 149 movl 8(%ebx), %eax
michael@38 150 mull %ebp
michael@38 151 addl %esi, %eax
michael@38 152 movl 8(%edi), %esi
michael@38 153 adcl $0, %edx
michael@38 154 addl %esi, %eax
michael@38 155 adcl $0, %edx
michael@38 156 decl %ecx
michael@38 157 movl %eax, 8(%edi)
michael@38 158 movl %edx, %esi
michael@38 159 jz .L003maw_end
michael@38 160 / Tail Round 3
michael@38 161 movl 12(%ebx), %eax
michael@38 162 mull %ebp
michael@38 163 addl %esi, %eax
michael@38 164 movl 12(%edi), %esi
michael@38 165 adcl $0, %edx
michael@38 166 addl %esi, %eax
michael@38 167 adcl $0, %edx
michael@38 168 decl %ecx
michael@38 169 movl %eax, 12(%edi)
michael@38 170 movl %edx, %esi
michael@38 171 jz .L003maw_end
michael@38 172 / Tail Round 4
michael@38 173 movl 16(%ebx), %eax
michael@38 174 mull %ebp
michael@38 175 addl %esi, %eax
michael@38 176 movl 16(%edi), %esi
michael@38 177 adcl $0, %edx
michael@38 178 addl %esi, %eax
michael@38 179 adcl $0, %edx
michael@38 180 decl %ecx
michael@38 181 movl %eax, 16(%edi)
michael@38 182 movl %edx, %esi
michael@38 183 jz .L003maw_end
michael@38 184 / Tail Round 5
michael@38 185 movl 20(%ebx), %eax
michael@38 186 mull %ebp
michael@38 187 addl %esi, %eax
michael@38 188 movl 20(%edi), %esi
michael@38 189 adcl $0, %edx
michael@38 190 addl %esi, %eax
michael@38 191 adcl $0, %edx
michael@38 192 decl %ecx
michael@38 193 movl %eax, 20(%edi)
michael@38 194 movl %edx, %esi
michael@38 195 jz .L003maw_end
michael@38 196 / Tail Round 6
michael@38 197 movl 24(%ebx), %eax
michael@38 198 mull %ebp
michael@38 199 addl %esi, %eax
michael@38 200 movl 24(%edi), %esi
michael@38 201 adcl $0, %edx
michael@38 202 addl %esi, %eax
michael@38 203 adcl $0, %edx
michael@38 204 movl %eax, 24(%edi)
michael@38 205 movl %edx, %esi
michael@38 206 .L003maw_end:
michael@38 207 movl %esi, %eax
michael@38 208 popl %ecx
michael@38 209 popl %edi
michael@38 210 popl %esi
michael@38 211 popl %ebx
michael@38 212 popl %ebp
michael@38 213 ret
michael@38 214 .bn_mul_add_words_end:
michael@38 215 .size bn_mul_add_words,.bn_mul_add_words_end-bn_mul_add_words
michael@38 216 .ident "bn_mul_add_words"
michael@38 217 .text
michael@38 218 .align 16
michael@38 219 .globl bn_mul_words
michael@38 220 .type bn_mul_words,@function
michael@38 221 bn_mul_words:
michael@38 222 pushl %ebp
michael@38 223 pushl %ebx
michael@38 224 pushl %esi
michael@38 225 pushl %edi
michael@38 226
michael@38 227
michael@38 228 xorl %esi, %esi
michael@38 229 movl 20(%esp), %edi
michael@38 230 movl 24(%esp), %ebx
michael@38 231 movl 28(%esp), %ebp
michael@38 232 movl 32(%esp), %ecx
michael@38 233 andl $4294967288, %ebp
michael@38 234 jz .L004mw_finish
michael@38 235 .L005mw_loop:
michael@38 236 / Round 0
michael@38 237 movl (%ebx), %eax
michael@38 238 mull %ecx
michael@38 239 addl %esi, %eax
michael@38 240 adcl $0, %edx
michael@38 241 movl %eax, (%edi)
michael@38 242 movl %edx, %esi
michael@38 243 / Round 4
michael@38 244 movl 4(%ebx), %eax
michael@38 245 mull %ecx
michael@38 246 addl %esi, %eax
michael@38 247 adcl $0, %edx
michael@38 248 movl %eax, 4(%edi)
michael@38 249 movl %edx, %esi
michael@38 250 / Round 8
michael@38 251 movl 8(%ebx), %eax
michael@38 252 mull %ecx
michael@38 253 addl %esi, %eax
michael@38 254 adcl $0, %edx
michael@38 255 movl %eax, 8(%edi)
michael@38 256 movl %edx, %esi
michael@38 257 / Round 12
michael@38 258 movl 12(%ebx), %eax
michael@38 259 mull %ecx
michael@38 260 addl %esi, %eax
michael@38 261 adcl $0, %edx
michael@38 262 movl %eax, 12(%edi)
michael@38 263 movl %edx, %esi
michael@38 264 / Round 16
michael@38 265 movl 16(%ebx), %eax
michael@38 266 mull %ecx
michael@38 267 addl %esi, %eax
michael@38 268 adcl $0, %edx
michael@38 269 movl %eax, 16(%edi)
michael@38 270 movl %edx, %esi
michael@38 271 / Round 20
michael@38 272 movl 20(%ebx), %eax
michael@38 273 mull %ecx
michael@38 274 addl %esi, %eax
michael@38 275 adcl $0, %edx
michael@38 276 movl %eax, 20(%edi)
michael@38 277 movl %edx, %esi
michael@38 278 / Round 24
michael@38 279 movl 24(%ebx), %eax
michael@38 280 mull %ecx
michael@38 281 addl %esi, %eax
michael@38 282 adcl $0, %edx
michael@38 283 movl %eax, 24(%edi)
michael@38 284 movl %edx, %esi
michael@38 285 / Round 28
michael@38 286 movl 28(%ebx), %eax
michael@38 287 mull %ecx
michael@38 288 addl %esi, %eax
michael@38 289 adcl $0, %edx
michael@38 290 movl %eax, 28(%edi)
michael@38 291 movl %edx, %esi
michael@38 292
michael@38 293 addl $32, %ebx
michael@38 294 addl $32, %edi
michael@38 295 subl $8, %ebp
michael@38 296 jz .L004mw_finish
michael@38 297 jmp .L005mw_loop
michael@38 298 .L004mw_finish:
michael@38 299 movl 28(%esp), %ebp
michael@38 300 andl $7, %ebp
michael@38 301 jnz .L006mw_finish2
michael@38 302 jmp .L007mw_end
michael@38 303 .align 16
michael@38 304 .L006mw_finish2:
michael@38 305 / Tail Round 0
michael@38 306 movl (%ebx), %eax
michael@38 307 mull %ecx
michael@38 308 addl %esi, %eax
michael@38 309 adcl $0, %edx
michael@38 310 movl %eax, (%edi)
michael@38 311 movl %edx, %esi
michael@38 312 decl %ebp
michael@38 313 jz .L007mw_end
michael@38 314 / Tail Round 1
michael@38 315 movl 4(%ebx), %eax
michael@38 316 mull %ecx
michael@38 317 addl %esi, %eax
michael@38 318 adcl $0, %edx
michael@38 319 movl %eax, 4(%edi)
michael@38 320 movl %edx, %esi
michael@38 321 decl %ebp
michael@38 322 jz .L007mw_end
michael@38 323 / Tail Round 2
michael@38 324 movl 8(%ebx), %eax
michael@38 325 mull %ecx
michael@38 326 addl %esi, %eax
michael@38 327 adcl $0, %edx
michael@38 328 movl %eax, 8(%edi)
michael@38 329 movl %edx, %esi
michael@38 330 decl %ebp
michael@38 331 jz .L007mw_end
michael@38 332 / Tail Round 3
michael@38 333 movl 12(%ebx), %eax
michael@38 334 mull %ecx
michael@38 335 addl %esi, %eax
michael@38 336 adcl $0, %edx
michael@38 337 movl %eax, 12(%edi)
michael@38 338 movl %edx, %esi
michael@38 339 decl %ebp
michael@38 340 jz .L007mw_end
michael@38 341 / Tail Round 4
michael@38 342 movl 16(%ebx), %eax
michael@38 343 mull %ecx
michael@38 344 addl %esi, %eax
michael@38 345 adcl $0, %edx
michael@38 346 movl %eax, 16(%edi)
michael@38 347 movl %edx, %esi
michael@38 348 decl %ebp
michael@38 349 jz .L007mw_end
michael@38 350 / Tail Round 5
michael@38 351 movl 20(%ebx), %eax
michael@38 352 mull %ecx
michael@38 353 addl %esi, %eax
michael@38 354 adcl $0, %edx
michael@38 355 movl %eax, 20(%edi)
michael@38 356 movl %edx, %esi
michael@38 357 decl %ebp
michael@38 358 jz .L007mw_end
michael@38 359 / Tail Round 6
michael@38 360 movl 24(%ebx), %eax
michael@38 361 mull %ecx
michael@38 362 addl %esi, %eax
michael@38 363 adcl $0, %edx
michael@38 364 movl %eax, 24(%edi)
michael@38 365 movl %edx, %esi
michael@38 366 .L007mw_end:
michael@38 367 movl %esi, %eax
michael@38 368 popl %edi
michael@38 369 popl %esi
michael@38 370 popl %ebx
michael@38 371 popl %ebp
michael@38 372 ret
michael@38 373 .bn_mul_words_end:
michael@38 374 .size bn_mul_words,.bn_mul_words_end-bn_mul_words
michael@38 375 .ident "bn_mul_words"
michael@38 376 .text
michael@38 377 .align 16
michael@38 378 .globl bn_sqr_words
michael@38 379 .type bn_sqr_words,@function
michael@38 380 bn_sqr_words:
michael@38 381 pushl %ebp
michael@38 382 pushl %ebx
michael@38 383 pushl %esi
michael@38 384 pushl %edi
michael@38 385
michael@38 386
michael@38 387 movl 20(%esp), %esi
michael@38 388 movl 24(%esp), %edi
michael@38 389 movl 28(%esp), %ebx
michael@38 390 andl $4294967288, %ebx
michael@38 391 jz .L008sw_finish
michael@38 392 .L009sw_loop:
michael@38 393 / Round 0
michael@38 394 movl (%edi), %eax
michael@38 395 mull %eax
michael@38 396 movl %eax, (%esi)
michael@38 397 movl %edx, 4(%esi)
michael@38 398 / Round 4
michael@38 399 movl 4(%edi), %eax
michael@38 400 mull %eax
michael@38 401 movl %eax, 8(%esi)
michael@38 402 movl %edx, 12(%esi)
michael@38 403 / Round 8
michael@38 404 movl 8(%edi), %eax
michael@38 405 mull %eax
michael@38 406 movl %eax, 16(%esi)
michael@38 407 movl %edx, 20(%esi)
michael@38 408 / Round 12
michael@38 409 movl 12(%edi), %eax
michael@38 410 mull %eax
michael@38 411 movl %eax, 24(%esi)
michael@38 412 movl %edx, 28(%esi)
michael@38 413 / Round 16
michael@38 414 movl 16(%edi), %eax
michael@38 415 mull %eax
michael@38 416 movl %eax, 32(%esi)
michael@38 417 movl %edx, 36(%esi)
michael@38 418 / Round 20
michael@38 419 movl 20(%edi), %eax
michael@38 420 mull %eax
michael@38 421 movl %eax, 40(%esi)
michael@38 422 movl %edx, 44(%esi)
michael@38 423 / Round 24
michael@38 424 movl 24(%edi), %eax
michael@38 425 mull %eax
michael@38 426 movl %eax, 48(%esi)
michael@38 427 movl %edx, 52(%esi)
michael@38 428 / Round 28
michael@38 429 movl 28(%edi), %eax
michael@38 430 mull %eax
michael@38 431 movl %eax, 56(%esi)
michael@38 432 movl %edx, 60(%esi)
michael@38 433
michael@38 434 addl $32, %edi
michael@38 435 addl $64, %esi
michael@38 436 subl $8, %ebx
michael@38 437 jnz .L009sw_loop
michael@38 438 .L008sw_finish:
michael@38 439 movl 28(%esp), %ebx
michael@38 440 andl $7, %ebx
michael@38 441 jz .L010sw_end
michael@38 442 / Tail Round 0
michael@38 443 movl (%edi), %eax
michael@38 444 mull %eax
michael@38 445 movl %eax, (%esi)
michael@38 446 decl %ebx
michael@38 447 movl %edx, 4(%esi)
michael@38 448 jz .L010sw_end
michael@38 449 / Tail Round 1
michael@38 450 movl 4(%edi), %eax
michael@38 451 mull %eax
michael@38 452 movl %eax, 8(%esi)
michael@38 453 decl %ebx
michael@38 454 movl %edx, 12(%esi)
michael@38 455 jz .L010sw_end
michael@38 456 / Tail Round 2
michael@38 457 movl 8(%edi), %eax
michael@38 458 mull %eax
michael@38 459 movl %eax, 16(%esi)
michael@38 460 decl %ebx
michael@38 461 movl %edx, 20(%esi)
michael@38 462 jz .L010sw_end
michael@38 463 / Tail Round 3
michael@38 464 movl 12(%edi), %eax
michael@38 465 mull %eax
michael@38 466 movl %eax, 24(%esi)
michael@38 467 decl %ebx
michael@38 468 movl %edx, 28(%esi)
michael@38 469 jz .L010sw_end
michael@38 470 / Tail Round 4
michael@38 471 movl 16(%edi), %eax
michael@38 472 mull %eax
michael@38 473 movl %eax, 32(%esi)
michael@38 474 decl %ebx
michael@38 475 movl %edx, 36(%esi)
michael@38 476 jz .L010sw_end
michael@38 477 / Tail Round 5
michael@38 478 movl 20(%edi), %eax
michael@38 479 mull %eax
michael@38 480 movl %eax, 40(%esi)
michael@38 481 decl %ebx
michael@38 482 movl %edx, 44(%esi)
michael@38 483 jz .L010sw_end
michael@38 484 / Tail Round 6
michael@38 485 movl 24(%edi), %eax
michael@38 486 mull %eax
michael@38 487 movl %eax, 48(%esi)
michael@38 488 movl %edx, 52(%esi)
michael@38 489 .L010sw_end:
michael@38 490 popl %edi
michael@38 491 popl %esi
michael@38 492 popl %ebx
michael@38 493 popl %ebp
michael@38 494 ret
michael@38 495 .bn_sqr_words_end:
michael@38 496 .size bn_sqr_words,.bn_sqr_words_end-bn_sqr_words
michael@38 497 .ident "bn_sqr_words"
michael@38 498 .text
michael@38 499 .align 16
michael@38 500 .globl bn_div_words
michael@38 501 .type bn_div_words,@function
michael@38 502 bn_div_words:
michael@38 503 pushl %ebp
michael@38 504 pushl %ebx
michael@38 505 pushl %esi
michael@38 506 pushl %edi
michael@38 507
michael@38 508 movl 20(%esp), %edx
michael@38 509 movl 24(%esp), %eax
michael@38 510 movl 28(%esp), %ebx
michael@38 511 divl %ebx
michael@38 512 popl %edi
michael@38 513 popl %esi
michael@38 514 popl %ebx
michael@38 515 popl %ebp
michael@38 516 ret
michael@38 517 .bn_div_words_end:
michael@38 518 .size bn_div_words,.bn_div_words_end-bn_div_words
michael@38 519 .ident "bn_div_words"
michael@38 520 .text
michael@38 521 .align 16
michael@38 522 .globl bn_add_words
michael@38 523 .type bn_add_words,@function
michael@38 524 bn_add_words:
michael@38 525 pushl %ebp
michael@38 526 pushl %ebx
michael@38 527 pushl %esi
michael@38 528 pushl %edi
michael@38 529
michael@38 530
michael@38 531 movl 20(%esp), %ebx
michael@38 532 movl 24(%esp), %esi
michael@38 533 movl 28(%esp), %edi
michael@38 534 movl 32(%esp), %ebp
michael@38 535 xorl %eax, %eax
michael@38 536 andl $4294967288, %ebp
michael@38 537 jz .L011aw_finish
michael@38 538 .L012aw_loop:
michael@38 539 / Round 0
michael@38 540 movl (%esi), %ecx
michael@38 541 movl (%edi), %edx
michael@38 542 addl %eax, %ecx
michael@38 543 movl $0, %eax
michael@38 544 adcl %eax, %eax
michael@38 545 addl %edx, %ecx
michael@38 546 adcl $0, %eax
michael@38 547 movl %ecx, (%ebx)
michael@38 548 / Round 1
michael@38 549 movl 4(%esi), %ecx
michael@38 550 movl 4(%edi), %edx
michael@38 551 addl %eax, %ecx
michael@38 552 movl $0, %eax
michael@38 553 adcl %eax, %eax
michael@38 554 addl %edx, %ecx
michael@38 555 adcl $0, %eax
michael@38 556 movl %ecx, 4(%ebx)
michael@38 557 / Round 2
michael@38 558 movl 8(%esi), %ecx
michael@38 559 movl 8(%edi), %edx
michael@38 560 addl %eax, %ecx
michael@38 561 movl $0, %eax
michael@38 562 adcl %eax, %eax
michael@38 563 addl %edx, %ecx
michael@38 564 adcl $0, %eax
michael@38 565 movl %ecx, 8(%ebx)
michael@38 566 / Round 3
michael@38 567 movl 12(%esi), %ecx
michael@38 568 movl 12(%edi), %edx
michael@38 569 addl %eax, %ecx
michael@38 570 movl $0, %eax
michael@38 571 adcl %eax, %eax
michael@38 572 addl %edx, %ecx
michael@38 573 adcl $0, %eax
michael@38 574 movl %ecx, 12(%ebx)
michael@38 575 / Round 4
michael@38 576 movl 16(%esi), %ecx
michael@38 577 movl 16(%edi), %edx
michael@38 578 addl %eax, %ecx
michael@38 579 movl $0, %eax
michael@38 580 adcl %eax, %eax
michael@38 581 addl %edx, %ecx
michael@38 582 adcl $0, %eax
michael@38 583 movl %ecx, 16(%ebx)
michael@38 584 / Round 5
michael@38 585 movl 20(%esi), %ecx
michael@38 586 movl 20(%edi), %edx
michael@38 587 addl %eax, %ecx
michael@38 588 movl $0, %eax
michael@38 589 adcl %eax, %eax
michael@38 590 addl %edx, %ecx
michael@38 591 adcl $0, %eax
michael@38 592 movl %ecx, 20(%ebx)
michael@38 593 / Round 6
michael@38 594 movl 24(%esi), %ecx
michael@38 595 movl 24(%edi), %edx
michael@38 596 addl %eax, %ecx
michael@38 597 movl $0, %eax
michael@38 598 adcl %eax, %eax
michael@38 599 addl %edx, %ecx
michael@38 600 adcl $0, %eax
michael@38 601 movl %ecx, 24(%ebx)
michael@38 602 / Round 7
michael@38 603 movl 28(%esi), %ecx
michael@38 604 movl 28(%edi), %edx
michael@38 605 addl %eax, %ecx
michael@38 606 movl $0, %eax
michael@38 607 adcl %eax, %eax
michael@38 608 addl %edx, %ecx
michael@38 609 adcl $0, %eax
michael@38 610 movl %ecx, 28(%ebx)
michael@38 611
michael@38 612 addl $32, %esi
michael@38 613 addl $32, %edi
michael@38 614 addl $32, %ebx
michael@38 615 subl $8, %ebp
michael@38 616 jnz .L012aw_loop
michael@38 617 .L011aw_finish:
michael@38 618 movl 32(%esp), %ebp
michael@38 619 andl $7, %ebp
michael@38 620 jz .L013aw_end
michael@38 621 / Tail Round 0
michael@38 622 movl (%esi), %ecx
michael@38 623 movl (%edi), %edx
michael@38 624 addl %eax, %ecx
michael@38 625 movl $0, %eax
michael@38 626 adcl %eax, %eax
michael@38 627 addl %edx, %ecx
michael@38 628 adcl $0, %eax
michael@38 629 decl %ebp
michael@38 630 movl %ecx, (%ebx)
michael@38 631 jz .L013aw_end
michael@38 632 / Tail Round 1
michael@38 633 movl 4(%esi), %ecx
michael@38 634 movl 4(%edi), %edx
michael@38 635 addl %eax, %ecx
michael@38 636 movl $0, %eax
michael@38 637 adcl %eax, %eax
michael@38 638 addl %edx, %ecx
michael@38 639 adcl $0, %eax
michael@38 640 decl %ebp
michael@38 641 movl %ecx, 4(%ebx)
michael@38 642 jz .L013aw_end
michael@38 643 / Tail Round 2
michael@38 644 movl 8(%esi), %ecx
michael@38 645 movl 8(%edi), %edx
michael@38 646 addl %eax, %ecx
michael@38 647 movl $0, %eax
michael@38 648 adcl %eax, %eax
michael@38 649 addl %edx, %ecx
michael@38 650 adcl $0, %eax
michael@38 651 decl %ebp
michael@38 652 movl %ecx, 8(%ebx)
michael@38 653 jz .L013aw_end
michael@38 654 / Tail Round 3
michael@38 655 movl 12(%esi), %ecx
michael@38 656 movl 12(%edi), %edx
michael@38 657 addl %eax, %ecx
michael@38 658 movl $0, %eax
michael@38 659 adcl %eax, %eax
michael@38 660 addl %edx, %ecx
michael@38 661 adcl $0, %eax
michael@38 662 decl %ebp
michael@38 663 movl %ecx, 12(%ebx)
michael@38 664 jz .L013aw_end
michael@38 665 / Tail Round 4
michael@38 666 movl 16(%esi), %ecx
michael@38 667 movl 16(%edi), %edx
michael@38 668 addl %eax, %ecx
michael@38 669 movl $0, %eax
michael@38 670 adcl %eax, %eax
michael@38 671 addl %edx, %ecx
michael@38 672 adcl $0, %eax
michael@38 673 decl %ebp
michael@38 674 movl %ecx, 16(%ebx)
michael@38 675 jz .L013aw_end
michael@38 676 / Tail Round 5
michael@38 677 movl 20(%esi), %ecx
michael@38 678 movl 20(%edi), %edx
michael@38 679 addl %eax, %ecx
michael@38 680 movl $0, %eax
michael@38 681 adcl %eax, %eax
michael@38 682 addl %edx, %ecx
michael@38 683 adcl $0, %eax
michael@38 684 decl %ebp
michael@38 685 movl %ecx, 20(%ebx)
michael@38 686 jz .L013aw_end
michael@38 687 / Tail Round 6
michael@38 688 movl 24(%esi), %ecx
michael@38 689 movl 24(%edi), %edx
michael@38 690 addl %eax, %ecx
michael@38 691 movl $0, %eax
michael@38 692 adcl %eax, %eax
michael@38 693 addl %edx, %ecx
michael@38 694 adcl $0, %eax
michael@38 695 movl %ecx, 24(%ebx)
michael@38 696 .L013aw_end:
michael@38 697 popl %edi
michael@38 698 popl %esi
michael@38 699 popl %ebx
michael@38 700 popl %ebp
michael@38 701 ret
michael@38 702 .bn_add_words_end:
michael@38 703 .size bn_add_words,.bn_add_words_end-bn_add_words
michael@38 704 .ident "bn_add_words"
michael@38 705 .text
michael@38 706 .align 16
michael@38 707 .globl bn_sub_words
michael@38 708 .type bn_sub_words,@function
michael@38 709 bn_sub_words:
michael@38 710 pushl %ebp
michael@38 711 pushl %ebx
michael@38 712 pushl %esi
michael@38 713 pushl %edi
michael@38 714
michael@38 715
michael@38 716 movl 20(%esp), %ebx
michael@38 717 movl 24(%esp), %esi
michael@38 718 movl 28(%esp), %edi
michael@38 719 movl 32(%esp), %ebp
michael@38 720 xorl %eax, %eax
michael@38 721 andl $4294967288, %ebp
michael@38 722 jz .L014aw_finish
michael@38 723 .L015aw_loop:
michael@38 724 / Round 0
michael@38 725 movl (%esi), %ecx
michael@38 726 movl (%edi), %edx
michael@38 727 subl %eax, %ecx
michael@38 728 movl $0, %eax
michael@38 729 adcl %eax, %eax
michael@38 730 subl %edx, %ecx
michael@38 731 adcl $0, %eax
michael@38 732 movl %ecx, (%ebx)
michael@38 733 / Round 1
michael@38 734 movl 4(%esi), %ecx
michael@38 735 movl 4(%edi), %edx
michael@38 736 subl %eax, %ecx
michael@38 737 movl $0, %eax
michael@38 738 adcl %eax, %eax
michael@38 739 subl %edx, %ecx
michael@38 740 adcl $0, %eax
michael@38 741 movl %ecx, 4(%ebx)
michael@38 742 / Round 2
michael@38 743 movl 8(%esi), %ecx
michael@38 744 movl 8(%edi), %edx
michael@38 745 subl %eax, %ecx
michael@38 746 movl $0, %eax
michael@38 747 adcl %eax, %eax
michael@38 748 subl %edx, %ecx
michael@38 749 adcl $0, %eax
michael@38 750 movl %ecx, 8(%ebx)
michael@38 751 / Round 3
michael@38 752 movl 12(%esi), %ecx
michael@38 753 movl 12(%edi), %edx
michael@38 754 subl %eax, %ecx
michael@38 755 movl $0, %eax
michael@38 756 adcl %eax, %eax
michael@38 757 subl %edx, %ecx
michael@38 758 adcl $0, %eax
michael@38 759 movl %ecx, 12(%ebx)
michael@38 760 / Round 4
michael@38 761 movl 16(%esi), %ecx
michael@38 762 movl 16(%edi), %edx
michael@38 763 subl %eax, %ecx
michael@38 764 movl $0, %eax
michael@38 765 adcl %eax, %eax
michael@38 766 subl %edx, %ecx
michael@38 767 adcl $0, %eax
michael@38 768 movl %ecx, 16(%ebx)
michael@38 769 / Round 5
michael@38 770 movl 20(%esi), %ecx
michael@38 771 movl 20(%edi), %edx
michael@38 772 subl %eax, %ecx
michael@38 773 movl $0, %eax
michael@38 774 adcl %eax, %eax
michael@38 775 subl %edx, %ecx
michael@38 776 adcl $0, %eax
michael@38 777 movl %ecx, 20(%ebx)
michael@38 778 / Round 6
michael@38 779 movl 24(%esi), %ecx
michael@38 780 movl 24(%edi), %edx
michael@38 781 subl %eax, %ecx
michael@38 782 movl $0, %eax
michael@38 783 adcl %eax, %eax
michael@38 784 subl %edx, %ecx
michael@38 785 adcl $0, %eax
michael@38 786 movl %ecx, 24(%ebx)
michael@38 787 / Round 7
michael@38 788 movl 28(%esi), %ecx
michael@38 789 movl 28(%edi), %edx
michael@38 790 subl %eax, %ecx
michael@38 791 movl $0, %eax
michael@38 792 adcl %eax, %eax
michael@38 793 subl %edx, %ecx
michael@38 794 adcl $0, %eax
michael@38 795 movl %ecx, 28(%ebx)
michael@38 796
michael@38 797 addl $32, %esi
michael@38 798 addl $32, %edi
michael@38 799 addl $32, %ebx
michael@38 800 subl $8, %ebp
michael@38 801 jnz .L015aw_loop
michael@38 802 .L014aw_finish:
michael@38 803 movl 32(%esp), %ebp
michael@38 804 andl $7, %ebp
michael@38 805 jz .L016aw_end
michael@38 806 / Tail Round 0
michael@38 807 movl (%esi), %ecx
michael@38 808 movl (%edi), %edx
michael@38 809 subl %eax, %ecx
michael@38 810 movl $0, %eax
michael@38 811 adcl %eax, %eax
michael@38 812 subl %edx, %ecx
michael@38 813 adcl $0, %eax
michael@38 814 decl %ebp
michael@38 815 movl %ecx, (%ebx)
michael@38 816 jz .L016aw_end
michael@38 817 / Tail Round 1
michael@38 818 movl 4(%esi), %ecx
michael@38 819 movl 4(%edi), %edx
michael@38 820 subl %eax, %ecx
michael@38 821 movl $0, %eax
michael@38 822 adcl %eax, %eax
michael@38 823 subl %edx, %ecx
michael@38 824 adcl $0, %eax
michael@38 825 decl %ebp
michael@38 826 movl %ecx, 4(%ebx)
michael@38 827 jz .L016aw_end
michael@38 828 / Tail Round 2
michael@38 829 movl 8(%esi), %ecx
michael@38 830 movl 8(%edi), %edx
michael@38 831 subl %eax, %ecx
michael@38 832 movl $0, %eax
michael@38 833 adcl %eax, %eax
michael@38 834 subl %edx, %ecx
michael@38 835 adcl $0, %eax
michael@38 836 decl %ebp
michael@38 837 movl %ecx, 8(%ebx)
michael@38 838 jz .L016aw_end
michael@38 839 / Tail Round 3
michael@38 840 movl 12(%esi), %ecx
michael@38 841 movl 12(%edi), %edx
michael@38 842 subl %eax, %ecx
michael@38 843 movl $0, %eax
michael@38 844 adcl %eax, %eax
michael@38 845 subl %edx, %ecx
michael@38 846 adcl $0, %eax
michael@38 847 decl %ebp
michael@38 848 movl %ecx, 12(%ebx)
michael@38 849 jz .L016aw_end
michael@38 850 / Tail Round 4
michael@38 851 movl 16(%esi), %ecx
michael@38 852 movl 16(%edi), %edx
michael@38 853 subl %eax, %ecx
michael@38 854 movl $0, %eax
michael@38 855 adcl %eax, %eax
michael@38 856 subl %edx, %ecx
michael@38 857 adcl $0, %eax
michael@38 858 decl %ebp
michael@38 859 movl %ecx, 16(%ebx)
michael@38 860 jz .L016aw_end
michael@38 861 / Tail Round 5
michael@38 862 movl 20(%esi), %ecx
michael@38 863 movl 20(%edi), %edx
michael@38 864 subl %eax, %ecx
michael@38 865 movl $0, %eax
michael@38 866 adcl %eax, %eax
michael@38 867 subl %edx, %ecx
michael@38 868 adcl $0, %eax
michael@38 869 decl %ebp
michael@38 870 movl %ecx, 20(%ebx)
michael@38 871 jz .L016aw_end
michael@38 872 / Tail Round 6
michael@38 873 movl 24(%esi), %ecx
michael@38 874 movl 24(%edi), %edx
michael@38 875 subl %eax, %ecx
michael@38 876 movl $0, %eax
michael@38 877 adcl %eax, %eax
michael@38 878 subl %edx, %ecx
michael@38 879 adcl $0, %eax
michael@38 880 movl %ecx, 24(%ebx)
michael@38 881 .L016aw_end:
michael@38 882 popl %edi
michael@38 883 popl %esi
michael@38 884 popl %ebx
michael@38 885 popl %ebp
michael@38 886 ret
michael@38 887 .bn_sub_words_end:
michael@38 888 .size bn_sub_words,.bn_sub_words_end-bn_sub_words
michael@38 889 .ident "bn_sub_words"
michael@38 890 .text
michael@38 891 .align 16
michael@38 892 .globl bn_mul_comba8
michael@38 893 .type bn_mul_comba8,@function
michael@38 894 bn_mul_comba8:
michael@38 895 pushl %esi
michael@38 896 movl 12(%esp), %esi
michael@38 897 pushl %edi
michael@38 898 movl 20(%esp), %edi
michael@38 899 pushl %ebp
michael@38 900 pushl %ebx
michael@38 901 xorl %ebx, %ebx
michael@38 902 movl (%esi), %eax
michael@38 903 xorl %ecx, %ecx
michael@38 904 movl (%edi), %edx
michael@38 905 / ################## Calculate word 0
michael@38 906 xorl %ebp, %ebp
michael@38 907 / mul a[0]*b[0]
michael@38 908 mull %edx
michael@38 909 addl %eax, %ebx
michael@38 910 movl 20(%esp), %eax
michael@38 911 adcl %edx, %ecx
michael@38 912 movl (%edi), %edx
michael@38 913 adcl $0, %ebp
michael@38 914 movl %ebx, (%eax)
michael@38 915 movl 4(%esi), %eax
michael@38 916 / saved r[0]
michael@38 917 / ################## Calculate word 1
michael@38 918 xorl %ebx, %ebx
michael@38 919 / mul a[1]*b[0]
michael@38 920 mull %edx
michael@38 921 addl %eax, %ecx
michael@38 922 movl (%esi), %eax
michael@38 923 adcl %edx, %ebp
michael@38 924 movl 4(%edi), %edx
michael@38 925 adcl $0, %ebx
michael@38 926 / mul a[0]*b[1]
michael@38 927 mull %edx
michael@38 928 addl %eax, %ecx
michael@38 929 movl 20(%esp), %eax
michael@38 930 adcl %edx, %ebp
michael@38 931 movl (%edi), %edx
michael@38 932 adcl $0, %ebx
michael@38 933 movl %ecx, 4(%eax)
michael@38 934 movl 8(%esi), %eax
michael@38 935 / saved r[1]
michael@38 936 / ################## Calculate word 2
michael@38 937 xorl %ecx, %ecx
michael@38 938 / mul a[2]*b[0]
michael@38 939 mull %edx
michael@38 940 addl %eax, %ebp
michael@38 941 movl 4(%esi), %eax
michael@38 942 adcl %edx, %ebx
michael@38 943 movl 4(%edi), %edx
michael@38 944 adcl $0, %ecx
michael@38 945 / mul a[1]*b[1]
michael@38 946 mull %edx
michael@38 947 addl %eax, %ebp
michael@38 948 movl (%esi), %eax
michael@38 949 adcl %edx, %ebx
michael@38 950 movl 8(%edi), %edx
michael@38 951 adcl $0, %ecx
michael@38 952 / mul a[0]*b[2]
michael@38 953 mull %edx
michael@38 954 addl %eax, %ebp
michael@38 955 movl 20(%esp), %eax
michael@38 956 adcl %edx, %ebx
michael@38 957 movl (%edi), %edx
michael@38 958 adcl $0, %ecx
michael@38 959 movl %ebp, 8(%eax)
michael@38 960 movl 12(%esi), %eax
michael@38 961 / saved r[2]
michael@38 962 / ################## Calculate word 3
michael@38 963 xorl %ebp, %ebp
michael@38 964 / mul a[3]*b[0]
michael@38 965 mull %edx
michael@38 966 addl %eax, %ebx
michael@38 967 movl 8(%esi), %eax
michael@38 968 adcl %edx, %ecx
michael@38 969 movl 4(%edi), %edx
michael@38 970 adcl $0, %ebp
michael@38 971 / mul a[2]*b[1]
michael@38 972 mull %edx
michael@38 973 addl %eax, %ebx
michael@38 974 movl 4(%esi), %eax
michael@38 975 adcl %edx, %ecx
michael@38 976 movl 8(%edi), %edx
michael@38 977 adcl $0, %ebp
michael@38 978 / mul a[1]*b[2]
michael@38 979 mull %edx
michael@38 980 addl %eax, %ebx
michael@38 981 movl (%esi), %eax
michael@38 982 adcl %edx, %ecx
michael@38 983 movl 12(%edi), %edx
michael@38 984 adcl $0, %ebp
michael@38 985 / mul a[0]*b[3]
michael@38 986 mull %edx
michael@38 987 addl %eax, %ebx
michael@38 988 movl 20(%esp), %eax
michael@38 989 adcl %edx, %ecx
michael@38 990 movl (%edi), %edx
michael@38 991 adcl $0, %ebp
michael@38 992 movl %ebx, 12(%eax)
michael@38 993 movl 16(%esi), %eax
michael@38 994 / saved r[3]
michael@38 995 / ################## Calculate word 4
michael@38 996 xorl %ebx, %ebx
michael@38 997 / mul a[4]*b[0]
michael@38 998 mull %edx
michael@38 999 addl %eax, %ecx
michael@38 1000 movl 12(%esi), %eax
michael@38 1001 adcl %edx, %ebp
michael@38 1002 movl 4(%edi), %edx
michael@38 1003 adcl $0, %ebx
michael@38 1004 / mul a[3]*b[1]
michael@38 1005 mull %edx
michael@38 1006 addl %eax, %ecx
michael@38 1007 movl 8(%esi), %eax
michael@38 1008 adcl %edx, %ebp
michael@38 1009 movl 8(%edi), %edx
michael@38 1010 adcl $0, %ebx
michael@38 1011 / mul a[2]*b[2]
michael@38 1012 mull %edx
michael@38 1013 addl %eax, %ecx
michael@38 1014 movl 4(%esi), %eax
michael@38 1015 adcl %edx, %ebp
michael@38 1016 movl 12(%edi), %edx
michael@38 1017 adcl $0, %ebx
michael@38 1018 / mul a[1]*b[3]
michael@38 1019 mull %edx
michael@38 1020 addl %eax, %ecx
michael@38 1021 movl (%esi), %eax
michael@38 1022 adcl %edx, %ebp
michael@38 1023 movl 16(%edi), %edx
michael@38 1024 adcl $0, %ebx
michael@38 1025 / mul a[0]*b[4]
michael@38 1026 mull %edx
michael@38 1027 addl %eax, %ecx
michael@38 1028 movl 20(%esp), %eax
michael@38 1029 adcl %edx, %ebp
michael@38 1030 movl (%edi), %edx
michael@38 1031 adcl $0, %ebx
michael@38 1032 movl %ecx, 16(%eax)
michael@38 1033 movl 20(%esi), %eax
michael@38 1034 / saved r[4]
michael@38 1035 / ################## Calculate word 5
michael@38 1036 xorl %ecx, %ecx
michael@38 1037 / mul a[5]*b[0]
michael@38 1038 mull %edx
michael@38 1039 addl %eax, %ebp
michael@38 1040 movl 16(%esi), %eax
michael@38 1041 adcl %edx, %ebx
michael@38 1042 movl 4(%edi), %edx
michael@38 1043 adcl $0, %ecx
michael@38 1044 / mul a[4]*b[1]
michael@38 1045 mull %edx
michael@38 1046 addl %eax, %ebp
michael@38 1047 movl 12(%esi), %eax
michael@38 1048 adcl %edx, %ebx
michael@38 1049 movl 8(%edi), %edx
michael@38 1050 adcl $0, %ecx
michael@38 1051 / mul a[3]*b[2]
michael@38 1052 mull %edx
michael@38 1053 addl %eax, %ebp
michael@38 1054 movl 8(%esi), %eax
michael@38 1055 adcl %edx, %ebx
michael@38 1056 movl 12(%edi), %edx
michael@38 1057 adcl $0, %ecx
michael@38 1058 / mul a[2]*b[3]
michael@38 1059 mull %edx
michael@38 1060 addl %eax, %ebp
michael@38 1061 movl 4(%esi), %eax
michael@38 1062 adcl %edx, %ebx
michael@38 1063 movl 16(%edi), %edx
michael@38 1064 adcl $0, %ecx
michael@38 1065 / mul a[1]*b[4]
michael@38 1066 mull %edx
michael@38 1067 addl %eax, %ebp
michael@38 1068 movl (%esi), %eax
michael@38 1069 adcl %edx, %ebx
michael@38 1070 movl 20(%edi), %edx
michael@38 1071 adcl $0, %ecx
michael@38 1072 / mul a[0]*b[5]
michael@38 1073 mull %edx
michael@38 1074 addl %eax, %ebp
michael@38 1075 movl 20(%esp), %eax
michael@38 1076 adcl %edx, %ebx
michael@38 1077 movl (%edi), %edx
michael@38 1078 adcl $0, %ecx
michael@38 1079 movl %ebp, 20(%eax)
michael@38 1080 movl 24(%esi), %eax
michael@38 1081 / saved r[5]
michael@38 1082 / ################## Calculate word 6
michael@38 1083 xorl %ebp, %ebp
michael@38 1084 / mul a[6]*b[0]
michael@38 1085 mull %edx
michael@38 1086 addl %eax, %ebx
michael@38 1087 movl 20(%esi), %eax
michael@38 1088 adcl %edx, %ecx
michael@38 1089 movl 4(%edi), %edx
michael@38 1090 adcl $0, %ebp
michael@38 1091 / mul a[5]*b[1]
michael@38 1092 mull %edx
michael@38 1093 addl %eax, %ebx
michael@38 1094 movl 16(%esi), %eax
michael@38 1095 adcl %edx, %ecx
michael@38 1096 movl 8(%edi), %edx
michael@38 1097 adcl $0, %ebp
michael@38 1098 / mul a[4]*b[2]
michael@38 1099 mull %edx
michael@38 1100 addl %eax, %ebx
michael@38 1101 movl 12(%esi), %eax
michael@38 1102 adcl %edx, %ecx
michael@38 1103 movl 12(%edi), %edx
michael@38 1104 adcl $0, %ebp
michael@38 1105 / mul a[3]*b[3]
michael@38 1106 mull %edx
michael@38 1107 addl %eax, %ebx
michael@38 1108 movl 8(%esi), %eax
michael@38 1109 adcl %edx, %ecx
michael@38 1110 movl 16(%edi), %edx
michael@38 1111 adcl $0, %ebp
michael@38 1112 / mul a[2]*b[4]
michael@38 1113 mull %edx
michael@38 1114 addl %eax, %ebx
michael@38 1115 movl 4(%esi), %eax
michael@38 1116 adcl %edx, %ecx
michael@38 1117 movl 20(%edi), %edx
michael@38 1118 adcl $0, %ebp
michael@38 1119 / mul a[1]*b[5]
michael@38 1120 mull %edx
michael@38 1121 addl %eax, %ebx
michael@38 1122 movl (%esi), %eax
michael@38 1123 adcl %edx, %ecx
michael@38 1124 movl 24(%edi), %edx
michael@38 1125 adcl $0, %ebp
michael@38 1126 / mul a[0]*b[6]
michael@38 1127 mull %edx
michael@38 1128 addl %eax, %ebx
michael@38 1129 movl 20(%esp), %eax
michael@38 1130 adcl %edx, %ecx
michael@38 1131 movl (%edi), %edx
michael@38 1132 adcl $0, %ebp
michael@38 1133 movl %ebx, 24(%eax)
michael@38 1134 movl 28(%esi), %eax
michael@38 1135 / saved r[6]
michael@38 1136 / ################## Calculate word 7
michael@38 1137 xorl %ebx, %ebx
michael@38 1138 / mul a[7]*b[0]
michael@38 1139 mull %edx
michael@38 1140 addl %eax, %ecx
michael@38 1141 movl 24(%esi), %eax
michael@38 1142 adcl %edx, %ebp
michael@38 1143 movl 4(%edi), %edx
michael@38 1144 adcl $0, %ebx
michael@38 1145 / mul a[6]*b[1]
michael@38 1146 mull %edx
michael@38 1147 addl %eax, %ecx
michael@38 1148 movl 20(%esi), %eax
michael@38 1149 adcl %edx, %ebp
michael@38 1150 movl 8(%edi), %edx
michael@38 1151 adcl $0, %ebx
michael@38 1152 / mul a[5]*b[2]
michael@38 1153 mull %edx
michael@38 1154 addl %eax, %ecx
michael@38 1155 movl 16(%esi), %eax
michael@38 1156 adcl %edx, %ebp
michael@38 1157 movl 12(%edi), %edx
michael@38 1158 adcl $0, %ebx
michael@38 1159 / mul a[4]*b[3]
michael@38 1160 mull %edx
michael@38 1161 addl %eax, %ecx
michael@38 1162 movl 12(%esi), %eax
michael@38 1163 adcl %edx, %ebp
michael@38 1164 movl 16(%edi), %edx
michael@38 1165 adcl $0, %ebx
michael@38 1166 / mul a[3]*b[4]
michael@38 1167 mull %edx
michael@38 1168 addl %eax, %ecx
michael@38 1169 movl 8(%esi), %eax
michael@38 1170 adcl %edx, %ebp
michael@38 1171 movl 20(%edi), %edx
michael@38 1172 adcl $0, %ebx
michael@38 1173 / mul a[2]*b[5]
michael@38 1174 mull %edx
michael@38 1175 addl %eax, %ecx
michael@38 1176 movl 4(%esi), %eax
michael@38 1177 adcl %edx, %ebp
michael@38 1178 movl 24(%edi), %edx
michael@38 1179 adcl $0, %ebx
michael@38 1180 / mul a[1]*b[6]
michael@38 1181 mull %edx
michael@38 1182 addl %eax, %ecx
michael@38 1183 movl (%esi), %eax
michael@38 1184 adcl %edx, %ebp
michael@38 1185 movl 28(%edi), %edx
michael@38 1186 adcl $0, %ebx
michael@38 1187 / mul a[0]*b[7]
michael@38 1188 mull %edx
michael@38 1189 addl %eax, %ecx
michael@38 1190 movl 20(%esp), %eax
michael@38 1191 adcl %edx, %ebp
michael@38 1192 movl 4(%edi), %edx
michael@38 1193 adcl $0, %ebx
michael@38 1194 movl %ecx, 28(%eax)
michael@38 1195 movl 28(%esi), %eax
michael@38 1196 / saved r[7]
michael@38 1197 / ################## Calculate word 8
michael@38 1198 xorl %ecx, %ecx
michael@38 1199 / mul a[7]*b[1]
michael@38 1200 mull %edx
michael@38 1201 addl %eax, %ebp
michael@38 1202 movl 24(%esi), %eax
michael@38 1203 adcl %edx, %ebx
michael@38 1204 movl 8(%edi), %edx
michael@38 1205 adcl $0, %ecx
michael@38 1206 / mul a[6]*b[2]
michael@38 1207 mull %edx
michael@38 1208 addl %eax, %ebp
michael@38 1209 movl 20(%esi), %eax
michael@38 1210 adcl %edx, %ebx
michael@38 1211 movl 12(%edi), %edx
michael@38 1212 adcl $0, %ecx
michael@38 1213 / mul a[5]*b[3]
michael@38 1214 mull %edx
michael@38 1215 addl %eax, %ebp
michael@38 1216 movl 16(%esi), %eax
michael@38 1217 adcl %edx, %ebx
michael@38 1218 movl 16(%edi), %edx
michael@38 1219 adcl $0, %ecx
michael@38 1220 / mul a[4]*b[4]
michael@38 1221 mull %edx
michael@38 1222 addl %eax, %ebp
michael@38 1223 movl 12(%esi), %eax
michael@38 1224 adcl %edx, %ebx
michael@38 1225 movl 20(%edi), %edx
michael@38 1226 adcl $0, %ecx
michael@38 1227 / mul a[3]*b[5]
michael@38 1228 mull %edx
michael@38 1229 addl %eax, %ebp
michael@38 1230 movl 8(%esi), %eax
michael@38 1231 adcl %edx, %ebx
michael@38 1232 movl 24(%edi), %edx
michael@38 1233 adcl $0, %ecx
michael@38 1234 / mul a[2]*b[6]
michael@38 1235 mull %edx
michael@38 1236 addl %eax, %ebp
michael@38 1237 movl 4(%esi), %eax
michael@38 1238 adcl %edx, %ebx
michael@38 1239 movl 28(%edi), %edx
michael@38 1240 adcl $0, %ecx
michael@38 1241 / mul a[1]*b[7]
michael@38 1242 mull %edx
michael@38 1243 addl %eax, %ebp
michael@38 1244 movl 20(%esp), %eax
michael@38 1245 adcl %edx, %ebx
michael@38 1246 movl 8(%edi), %edx
michael@38 1247 adcl $0, %ecx
michael@38 1248 movl %ebp, 32(%eax)
michael@38 1249 movl 28(%esi), %eax
michael@38 1250 / saved r[8]
michael@38 1251 / ################## Calculate word 9
michael@38 1252 xorl %ebp, %ebp
michael@38 1253 / mul a[7]*b[2]
michael@38 1254 mull %edx
michael@38 1255 addl %eax, %ebx
michael@38 1256 movl 24(%esi), %eax
michael@38 1257 adcl %edx, %ecx
michael@38 1258 movl 12(%edi), %edx
michael@38 1259 adcl $0, %ebp
michael@38 1260 / mul a[6]*b[3]
michael@38 1261 mull %edx
michael@38 1262 addl %eax, %ebx
michael@38 1263 movl 20(%esi), %eax
michael@38 1264 adcl %edx, %ecx
michael@38 1265 movl 16(%edi), %edx
michael@38 1266 adcl $0, %ebp
michael@38 1267 / mul a[5]*b[4]
michael@38 1268 mull %edx
michael@38 1269 addl %eax, %ebx
michael@38 1270 movl 16(%esi), %eax
michael@38 1271 adcl %edx, %ecx
michael@38 1272 movl 20(%edi), %edx
michael@38 1273 adcl $0, %ebp
michael@38 1274 / mul a[4]*b[5]
michael@38 1275 mull %edx
michael@38 1276 addl %eax, %ebx
michael@38 1277 movl 12(%esi), %eax
michael@38 1278 adcl %edx, %ecx
michael@38 1279 movl 24(%edi), %edx
michael@38 1280 adcl $0, %ebp
michael@38 1281 / mul a[3]*b[6]
michael@38 1282 mull %edx
michael@38 1283 addl %eax, %ebx
michael@38 1284 movl 8(%esi), %eax
michael@38 1285 adcl %edx, %ecx
michael@38 1286 movl 28(%edi), %edx
michael@38 1287 adcl $0, %ebp
michael@38 1288 / mul a[2]*b[7]
michael@38 1289 mull %edx
michael@38 1290 addl %eax, %ebx
michael@38 1291 movl 20(%esp), %eax
michael@38 1292 adcl %edx, %ecx
michael@38 1293 movl 12(%edi), %edx
michael@38 1294 adcl $0, %ebp
michael@38 1295 movl %ebx, 36(%eax)
michael@38 1296 movl 28(%esi), %eax
michael@38 1297 / saved r[9]
michael@38 1298 / ################## Calculate word 10
michael@38 1299 xorl %ebx, %ebx
michael@38 1300 / mul a[7]*b[3]
michael@38 1301 mull %edx
michael@38 1302 addl %eax, %ecx
michael@38 1303 movl 24(%esi), %eax
michael@38 1304 adcl %edx, %ebp
michael@38 1305 movl 16(%edi), %edx
michael@38 1306 adcl $0, %ebx
michael@38 1307 / mul a[6]*b[4]
michael@38 1308 mull %edx
michael@38 1309 addl %eax, %ecx
michael@38 1310 movl 20(%esi), %eax
michael@38 1311 adcl %edx, %ebp
michael@38 1312 movl 20(%edi), %edx
michael@38 1313 adcl $0, %ebx
michael@38 1314 / mul a[5]*b[5]
michael@38 1315 mull %edx
michael@38 1316 addl %eax, %ecx
michael@38 1317 movl 16(%esi), %eax
michael@38 1318 adcl %edx, %ebp
michael@38 1319 movl 24(%edi), %edx
michael@38 1320 adcl $0, %ebx
michael@38 1321 / mul a[4]*b[6]
michael@38 1322 mull %edx
michael@38 1323 addl %eax, %ecx
michael@38 1324 movl 12(%esi), %eax
michael@38 1325 adcl %edx, %ebp
michael@38 1326 movl 28(%edi), %edx
michael@38 1327 adcl $0, %ebx
michael@38 1328 / mul a[3]*b[7]
michael@38 1329 mull %edx
michael@38 1330 addl %eax, %ecx
michael@38 1331 movl 20(%esp), %eax
michael@38 1332 adcl %edx, %ebp
michael@38 1333 movl 16(%edi), %edx
michael@38 1334 adcl $0, %ebx
michael@38 1335 movl %ecx, 40(%eax)
michael@38 1336 movl 28(%esi), %eax
michael@38 1337 / saved r[10]
michael@38 1338 / ################## Calculate word 11
michael@38 1339 xorl %ecx, %ecx
michael@38 1340 / mul a[7]*b[4]
michael@38 1341 mull %edx
michael@38 1342 addl %eax, %ebp
michael@38 1343 movl 24(%esi), %eax
michael@38 1344 adcl %edx, %ebx
michael@38 1345 movl 20(%edi), %edx
michael@38 1346 adcl $0, %ecx
michael@38 1347 / mul a[6]*b[5]
michael@38 1348 mull %edx
michael@38 1349 addl %eax, %ebp
michael@38 1350 movl 20(%esi), %eax
michael@38 1351 adcl %edx, %ebx
michael@38 1352 movl 24(%edi), %edx
michael@38 1353 adcl $0, %ecx
michael@38 1354 / mul a[5]*b[6]
michael@38 1355 mull %edx
michael@38 1356 addl %eax, %ebp
michael@38 1357 movl 16(%esi), %eax
michael@38 1358 adcl %edx, %ebx
michael@38 1359 movl 28(%edi), %edx
michael@38 1360 adcl $0, %ecx
michael@38 1361 / mul a[4]*b[7]
michael@38 1362 mull %edx
michael@38 1363 addl %eax, %ebp
michael@38 1364 movl 20(%esp), %eax
michael@38 1365 adcl %edx, %ebx
michael@38 1366 movl 20(%edi), %edx
michael@38 1367 adcl $0, %ecx
michael@38 1368 movl %ebp, 44(%eax)
michael@38 1369 movl 28(%esi), %eax
michael@38 1370 / saved r[11]
michael@38 1371 / ################## Calculate word 12
michael@38 1372 xorl %ebp, %ebp
michael@38 1373 / mul a[7]*b[5]
michael@38 1374 mull %edx
michael@38 1375 addl %eax, %ebx
michael@38 1376 movl 24(%esi), %eax
michael@38 1377 adcl %edx, %ecx
michael@38 1378 movl 24(%edi), %edx
michael@38 1379 adcl $0, %ebp
michael@38 1380 / mul a[6]*b[6]
michael@38 1381 mull %edx
michael@38 1382 addl %eax, %ebx
michael@38 1383 movl 20(%esi), %eax
michael@38 1384 adcl %edx, %ecx
michael@38 1385 movl 28(%edi), %edx
michael@38 1386 adcl $0, %ebp
michael@38 1387 / mul a[5]*b[7]
michael@38 1388 mull %edx
michael@38 1389 addl %eax, %ebx
michael@38 1390 movl 20(%esp), %eax
michael@38 1391 adcl %edx, %ecx
michael@38 1392 movl 24(%edi), %edx
michael@38 1393 adcl $0, %ebp
michael@38 1394 movl %ebx, 48(%eax)
michael@38 1395 movl 28(%esi), %eax
michael@38 1396 / saved r[12]
michael@38 1397 / ################## Calculate word 13
michael@38 1398 xorl %ebx, %ebx
michael@38 1399 / mul a[7]*b[6]
michael@38 1400 mull %edx
michael@38 1401 addl %eax, %ecx
michael@38 1402 movl 24(%esi), %eax
michael@38 1403 adcl %edx, %ebp
michael@38 1404 movl 28(%edi), %edx
michael@38 1405 adcl $0, %ebx
michael@38 1406 / mul a[6]*b[7]
michael@38 1407 mull %edx
michael@38 1408 addl %eax, %ecx
michael@38 1409 movl 20(%esp), %eax
michael@38 1410 adcl %edx, %ebp
michael@38 1411 movl 28(%edi), %edx
michael@38 1412 adcl $0, %ebx
michael@38 1413 movl %ecx, 52(%eax)
michael@38 1414 movl 28(%esi), %eax
michael@38 1415 / saved r[13]
michael@38 1416 / ################## Calculate word 14
michael@38 1417 xorl %ecx, %ecx
michael@38 1418 / mul a[7]*b[7]
michael@38 1419 mull %edx
michael@38 1420 addl %eax, %ebp
michael@38 1421 movl 20(%esp), %eax
michael@38 1422 adcl %edx, %ebx
michael@38 1423 adcl $0, %ecx
michael@38 1424 movl %ebp, 56(%eax)
michael@38 1425 / saved r[14]
michael@38 1426 / save r[15]
michael@38 1427 movl %ebx, 60(%eax)
michael@38 1428 popl %ebx
michael@38 1429 popl %ebp
michael@38 1430 popl %edi
michael@38 1431 popl %esi
michael@38 1432 ret
michael@38 1433 .L_bn_mul_comba8_end:
michael@38 1434 .size bn_mul_comba8,.L_bn_mul_comba8_end-bn_mul_comba8
michael@38 1435 .ident "desasm.pl"
michael@38 1436 .text
michael@38 1437 .align 16
michael@38 1438 .globl bn_mul_comba4
michael@38 1439 .type bn_mul_comba4,@function
michael@38 1440 bn_mul_comba4:
michael@38 1441 pushl %esi
michael@38 1442 movl 12(%esp), %esi
michael@38 1443 pushl %edi
michael@38 1444 movl 20(%esp), %edi
michael@38 1445 pushl %ebp
michael@38 1446 pushl %ebx
michael@38 1447 xorl %ebx, %ebx
michael@38 1448 movl (%esi), %eax
michael@38 1449 xorl %ecx, %ecx
michael@38 1450 movl (%edi), %edx
michael@38 1451 / ################## Calculate word 0
michael@38 1452 xorl %ebp, %ebp
michael@38 1453 / mul a[0]*b[0]
michael@38 1454 mull %edx
michael@38 1455 addl %eax, %ebx
michael@38 1456 movl 20(%esp), %eax
michael@38 1457 adcl %edx, %ecx
michael@38 1458 movl (%edi), %edx
michael@38 1459 adcl $0, %ebp
michael@38 1460 movl %ebx, (%eax)
michael@38 1461 movl 4(%esi), %eax
michael@38 1462 / saved r[0]
michael@38 1463 / ################## Calculate word 1
michael@38 1464 xorl %ebx, %ebx
michael@38 1465 / mul a[1]*b[0]
michael@38 1466 mull %edx
michael@38 1467 addl %eax, %ecx
michael@38 1468 movl (%esi), %eax
michael@38 1469 adcl %edx, %ebp
michael@38 1470 movl 4(%edi), %edx
michael@38 1471 adcl $0, %ebx
michael@38 1472 / mul a[0]*b[1]
michael@38 1473 mull %edx
michael@38 1474 addl %eax, %ecx
michael@38 1475 movl 20(%esp), %eax
michael@38 1476 adcl %edx, %ebp
michael@38 1477 movl (%edi), %edx
michael@38 1478 adcl $0, %ebx
michael@38 1479 movl %ecx, 4(%eax)
michael@38 1480 movl 8(%esi), %eax
michael@38 1481 / saved r[1]
michael@38 1482 / ################## Calculate word 2
michael@38 1483 xorl %ecx, %ecx
michael@38 1484 / mul a[2]*b[0]
michael@38 1485 mull %edx
michael@38 1486 addl %eax, %ebp
michael@38 1487 movl 4(%esi), %eax
michael@38 1488 adcl %edx, %ebx
michael@38 1489 movl 4(%edi), %edx
michael@38 1490 adcl $0, %ecx
michael@38 1491 / mul a[1]*b[1]
michael@38 1492 mull %edx
michael@38 1493 addl %eax, %ebp
michael@38 1494 movl (%esi), %eax
michael@38 1495 adcl %edx, %ebx
michael@38 1496 movl 8(%edi), %edx
michael@38 1497 adcl $0, %ecx
michael@38 1498 / mul a[0]*b[2]
michael@38 1499 mull %edx
michael@38 1500 addl %eax, %ebp
michael@38 1501 movl 20(%esp), %eax
michael@38 1502 adcl %edx, %ebx
michael@38 1503 movl (%edi), %edx
michael@38 1504 adcl $0, %ecx
michael@38 1505 movl %ebp, 8(%eax)
michael@38 1506 movl 12(%esi), %eax
michael@38 1507 / saved r[2]
michael@38 1508 / ################## Calculate word 3
michael@38 1509 xorl %ebp, %ebp
michael@38 1510 / mul a[3]*b[0]
michael@38 1511 mull %edx
michael@38 1512 addl %eax, %ebx
michael@38 1513 movl 8(%esi), %eax
michael@38 1514 adcl %edx, %ecx
michael@38 1515 movl 4(%edi), %edx
michael@38 1516 adcl $0, %ebp
michael@38 1517 / mul a[2]*b[1]
michael@38 1518 mull %edx
michael@38 1519 addl %eax, %ebx
michael@38 1520 movl 4(%esi), %eax
michael@38 1521 adcl %edx, %ecx
michael@38 1522 movl 8(%edi), %edx
michael@38 1523 adcl $0, %ebp
michael@38 1524 / mul a[1]*b[2]
michael@38 1525 mull %edx
michael@38 1526 addl %eax, %ebx
michael@38 1527 movl (%esi), %eax
michael@38 1528 adcl %edx, %ecx
michael@38 1529 movl 12(%edi), %edx
michael@38 1530 adcl $0, %ebp
michael@38 1531 / mul a[0]*b[3]
michael@38 1532 mull %edx
michael@38 1533 addl %eax, %ebx
michael@38 1534 movl 20(%esp), %eax
michael@38 1535 adcl %edx, %ecx
michael@38 1536 movl 4(%edi), %edx
michael@38 1537 adcl $0, %ebp
michael@38 1538 movl %ebx, 12(%eax)
michael@38 1539 movl 12(%esi), %eax
michael@38 1540 / saved r[3]
michael@38 1541 / ################## Calculate word 4
michael@38 1542 xorl %ebx, %ebx
michael@38 1543 / mul a[3]*b[1]
michael@38 1544 mull %edx
michael@38 1545 addl %eax, %ecx
michael@38 1546 movl 8(%esi), %eax
michael@38 1547 adcl %edx, %ebp
michael@38 1548 movl 8(%edi), %edx
michael@38 1549 adcl $0, %ebx
michael@38 1550 / mul a[2]*b[2]
michael@38 1551 mull %edx
michael@38 1552 addl %eax, %ecx
michael@38 1553 movl 4(%esi), %eax
michael@38 1554 adcl %edx, %ebp
michael@38 1555 movl 12(%edi), %edx
michael@38 1556 adcl $0, %ebx
michael@38 1557 / mul a[1]*b[3]
michael@38 1558 mull %edx
michael@38 1559 addl %eax, %ecx
michael@38 1560 movl 20(%esp), %eax
michael@38 1561 adcl %edx, %ebp
michael@38 1562 movl 8(%edi), %edx
michael@38 1563 adcl $0, %ebx
michael@38 1564 movl %ecx, 16(%eax)
michael@38 1565 movl 12(%esi), %eax
michael@38 1566 / saved r[4]
michael@38 1567 / ################## Calculate word 5
michael@38 1568 xorl %ecx, %ecx
michael@38 1569 / mul a[3]*b[2]
michael@38 1570 mull %edx
michael@38 1571 addl %eax, %ebp
michael@38 1572 movl 8(%esi), %eax
michael@38 1573 adcl %edx, %ebx
michael@38 1574 movl 12(%edi), %edx
michael@38 1575 adcl $0, %ecx
michael@38 1576 / mul a[2]*b[3]
michael@38 1577 mull %edx
michael@38 1578 addl %eax, %ebp
michael@38 1579 movl 20(%esp), %eax
michael@38 1580 adcl %edx, %ebx
michael@38 1581 movl 12(%edi), %edx
michael@38 1582 adcl $0, %ecx
michael@38 1583 movl %ebp, 20(%eax)
michael@38 1584 movl 12(%esi), %eax
michael@38 1585 / saved r[5]
michael@38 1586 / ################## Calculate word 6
michael@38 1587 xorl %ebp, %ebp
michael@38 1588 / mul a[3]*b[3]
michael@38 1589 mull %edx
michael@38 1590 addl %eax, %ebx
michael@38 1591 movl 20(%esp), %eax
michael@38 1592 adcl %edx, %ecx
michael@38 1593 adcl $0, %ebp
michael@38 1594 movl %ebx, 24(%eax)
michael@38 1595 / saved r[6]
michael@38 1596 / save r[7]
michael@38 1597 movl %ecx, 28(%eax)
michael@38 1598 popl %ebx
michael@38 1599 popl %ebp
michael@38 1600 popl %edi
michael@38 1601 popl %esi
michael@38 1602 ret
michael@38 1603 .L_bn_mul_comba4_end:
michael@38 1604 .size bn_mul_comba4,.L_bn_mul_comba4_end-bn_mul_comba4
michael@38 1605 .ident "desasm.pl"
michael@38 1606 .text
michael@38 1607 .align 16
michael@38 1608 .globl bn_sqr_comba8
michael@38 1609 .type bn_sqr_comba8,@function
michael@38 1610 bn_sqr_comba8:
michael@38 1611 pushl %esi
michael@38 1612 pushl %edi
michael@38 1613 pushl %ebp
michael@38 1614 pushl %ebx
michael@38 1615 movl 20(%esp), %edi
michael@38 1616 movl 24(%esp), %esi
michael@38 1617 xorl %ebx, %ebx
michael@38 1618 xorl %ecx, %ecx
michael@38 1619 movl (%esi), %eax
michael@38 1620 / ############### Calculate word 0
michael@38 1621 xorl %ebp, %ebp
michael@38 1622 / sqr a[0]*a[0]
michael@38 1623 mull %eax
michael@38 1624 addl %eax, %ebx
michael@38 1625 adcl %edx, %ecx
michael@38 1626 movl (%esi), %edx
michael@38 1627 adcl $0, %ebp
michael@38 1628 movl %ebx, (%edi)
michael@38 1629 movl 4(%esi), %eax
michael@38 1630 / saved r[0]
michael@38 1631 / ############### Calculate word 1
michael@38 1632 xorl %ebx, %ebx
michael@38 1633 / sqr a[1]*a[0]
michael@38 1634 mull %edx
michael@38 1635 addl %eax, %eax
michael@38 1636 adcl %edx, %edx
michael@38 1637 adcl $0, %ebx
michael@38 1638 addl %eax, %ecx
michael@38 1639 adcl %edx, %ebp
michael@38 1640 movl 8(%esi), %eax
michael@38 1641 adcl $0, %ebx
michael@38 1642 movl %ecx, 4(%edi)
michael@38 1643 movl (%esi), %edx
michael@38 1644 / saved r[1]
michael@38 1645 / ############### Calculate word 2
michael@38 1646 xorl %ecx, %ecx
michael@38 1647 / sqr a[2]*a[0]
michael@38 1648 mull %edx
michael@38 1649 addl %eax, %eax
michael@38 1650 adcl %edx, %edx
michael@38 1651 adcl $0, %ecx
michael@38 1652 addl %eax, %ebp
michael@38 1653 adcl %edx, %ebx
michael@38 1654 movl 4(%esi), %eax
michael@38 1655 adcl $0, %ecx
michael@38 1656 / sqr a[1]*a[1]
michael@38 1657 mull %eax
michael@38 1658 addl %eax, %ebp
michael@38 1659 adcl %edx, %ebx
michael@38 1660 movl (%esi), %edx
michael@38 1661 adcl $0, %ecx
michael@38 1662 movl %ebp, 8(%edi)
michael@38 1663 movl 12(%esi), %eax
michael@38 1664 / saved r[2]
michael@38 1665 / ############### Calculate word 3
michael@38 1666 xorl %ebp, %ebp
michael@38 1667 / sqr a[3]*a[0]
michael@38 1668 mull %edx
michael@38 1669 addl %eax, %eax
michael@38 1670 adcl %edx, %edx
michael@38 1671 adcl $0, %ebp
michael@38 1672 addl %eax, %ebx
michael@38 1673 adcl %edx, %ecx
michael@38 1674 movl 8(%esi), %eax
michael@38 1675 adcl $0, %ebp
michael@38 1676 movl 4(%esi), %edx
michael@38 1677 / sqr a[2]*a[1]
michael@38 1678 mull %edx
michael@38 1679 addl %eax, %eax
michael@38 1680 adcl %edx, %edx
michael@38 1681 adcl $0, %ebp
michael@38 1682 addl %eax, %ebx
michael@38 1683 adcl %edx, %ecx
michael@38 1684 movl 16(%esi), %eax
michael@38 1685 adcl $0, %ebp
michael@38 1686 movl %ebx, 12(%edi)
michael@38 1687 movl (%esi), %edx
michael@38 1688 / saved r[3]
michael@38 1689 / ############### Calculate word 4
michael@38 1690 xorl %ebx, %ebx
michael@38 1691 / sqr a[4]*a[0]
michael@38 1692 mull %edx
michael@38 1693 addl %eax, %eax
michael@38 1694 adcl %edx, %edx
michael@38 1695 adcl $0, %ebx
michael@38 1696 addl %eax, %ecx
michael@38 1697 adcl %edx, %ebp
michael@38 1698 movl 12(%esi), %eax
michael@38 1699 adcl $0, %ebx
michael@38 1700 movl 4(%esi), %edx
michael@38 1701 / sqr a[3]*a[1]
michael@38 1702 mull %edx
michael@38 1703 addl %eax, %eax
michael@38 1704 adcl %edx, %edx
michael@38 1705 adcl $0, %ebx
michael@38 1706 addl %eax, %ecx
michael@38 1707 adcl %edx, %ebp
michael@38 1708 movl 8(%esi), %eax
michael@38 1709 adcl $0, %ebx
michael@38 1710 / sqr a[2]*a[2]
michael@38 1711 mull %eax
michael@38 1712 addl %eax, %ecx
michael@38 1713 adcl %edx, %ebp
michael@38 1714 movl (%esi), %edx
michael@38 1715 adcl $0, %ebx
michael@38 1716 movl %ecx, 16(%edi)
michael@38 1717 movl 20(%esi), %eax
michael@38 1718 / saved r[4]
michael@38 1719 / ############### Calculate word 5
michael@38 1720 xorl %ecx, %ecx
michael@38 1721 / sqr a[5]*a[0]
michael@38 1722 mull %edx
michael@38 1723 addl %eax, %eax
michael@38 1724 adcl %edx, %edx
michael@38 1725 adcl $0, %ecx
michael@38 1726 addl %eax, %ebp
michael@38 1727 adcl %edx, %ebx
michael@38 1728 movl 16(%esi), %eax
michael@38 1729 adcl $0, %ecx
michael@38 1730 movl 4(%esi), %edx
michael@38 1731 / sqr a[4]*a[1]
michael@38 1732 mull %edx
michael@38 1733 addl %eax, %eax
michael@38 1734 adcl %edx, %edx
michael@38 1735 adcl $0, %ecx
michael@38 1736 addl %eax, %ebp
michael@38 1737 adcl %edx, %ebx
michael@38 1738 movl 12(%esi), %eax
michael@38 1739 adcl $0, %ecx
michael@38 1740 movl 8(%esi), %edx
michael@38 1741 / sqr a[3]*a[2]
michael@38 1742 mull %edx
michael@38 1743 addl %eax, %eax
michael@38 1744 adcl %edx, %edx
michael@38 1745 adcl $0, %ecx
michael@38 1746 addl %eax, %ebp
michael@38 1747 adcl %edx, %ebx
michael@38 1748 movl 24(%esi), %eax
michael@38 1749 adcl $0, %ecx
michael@38 1750 movl %ebp, 20(%edi)
michael@38 1751 movl (%esi), %edx
michael@38 1752 / saved r[5]
michael@38 1753 / ############### Calculate word 6
michael@38 1754 xorl %ebp, %ebp
michael@38 1755 / sqr a[6]*a[0]
michael@38 1756 mull %edx
michael@38 1757 addl %eax, %eax
michael@38 1758 adcl %edx, %edx
michael@38 1759 adcl $0, %ebp
michael@38 1760 addl %eax, %ebx
michael@38 1761 adcl %edx, %ecx
michael@38 1762 movl 20(%esi), %eax
michael@38 1763 adcl $0, %ebp
michael@38 1764 movl 4(%esi), %edx
michael@38 1765 / sqr a[5]*a[1]
michael@38 1766 mull %edx
michael@38 1767 addl %eax, %eax
michael@38 1768 adcl %edx, %edx
michael@38 1769 adcl $0, %ebp
michael@38 1770 addl %eax, %ebx
michael@38 1771 adcl %edx, %ecx
michael@38 1772 movl 16(%esi), %eax
michael@38 1773 adcl $0, %ebp
michael@38 1774 movl 8(%esi), %edx
michael@38 1775 / sqr a[4]*a[2]
michael@38 1776 mull %edx
michael@38 1777 addl %eax, %eax
michael@38 1778 adcl %edx, %edx
michael@38 1779 adcl $0, %ebp
michael@38 1780 addl %eax, %ebx
michael@38 1781 adcl %edx, %ecx
michael@38 1782 movl 12(%esi), %eax
michael@38 1783 adcl $0, %ebp
michael@38 1784 / sqr a[3]*a[3]
michael@38 1785 mull %eax
michael@38 1786 addl %eax, %ebx
michael@38 1787 adcl %edx, %ecx
michael@38 1788 movl (%esi), %edx
michael@38 1789 adcl $0, %ebp
michael@38 1790 movl %ebx, 24(%edi)
michael@38 1791 movl 28(%esi), %eax
michael@38 1792 / saved r[6]
michael@38 1793 / ############### Calculate word 7
michael@38 1794 xorl %ebx, %ebx
michael@38 1795 / sqr a[7]*a[0]
michael@38 1796 mull %edx
michael@38 1797 addl %eax, %eax
michael@38 1798 adcl %edx, %edx
michael@38 1799 adcl $0, %ebx
michael@38 1800 addl %eax, %ecx
michael@38 1801 adcl %edx, %ebp
michael@38 1802 movl 24(%esi), %eax
michael@38 1803 adcl $0, %ebx
michael@38 1804 movl 4(%esi), %edx
michael@38 1805 / sqr a[6]*a[1]
michael@38 1806 mull %edx
michael@38 1807 addl %eax, %eax
michael@38 1808 adcl %edx, %edx
michael@38 1809 adcl $0, %ebx
michael@38 1810 addl %eax, %ecx
michael@38 1811 adcl %edx, %ebp
michael@38 1812 movl 20(%esi), %eax
michael@38 1813 adcl $0, %ebx
michael@38 1814 movl 8(%esi), %edx
michael@38 1815 / sqr a[5]*a[2]
michael@38 1816 mull %edx
michael@38 1817 addl %eax, %eax
michael@38 1818 adcl %edx, %edx
michael@38 1819 adcl $0, %ebx
michael@38 1820 addl %eax, %ecx
michael@38 1821 adcl %edx, %ebp
michael@38 1822 movl 16(%esi), %eax
michael@38 1823 adcl $0, %ebx
michael@38 1824 movl 12(%esi), %edx
michael@38 1825 / sqr a[4]*a[3]
michael@38 1826 mull %edx
michael@38 1827 addl %eax, %eax
michael@38 1828 adcl %edx, %edx
michael@38 1829 adcl $0, %ebx
michael@38 1830 addl %eax, %ecx
michael@38 1831 adcl %edx, %ebp
michael@38 1832 movl 28(%esi), %eax
michael@38 1833 adcl $0, %ebx
michael@38 1834 movl %ecx, 28(%edi)
michael@38 1835 movl 4(%esi), %edx
michael@38 1836 / saved r[7]
michael@38 1837 / ############### Calculate word 8
michael@38 1838 xorl %ecx, %ecx
michael@38 1839 / sqr a[7]*a[1]
michael@38 1840 mull %edx
michael@38 1841 addl %eax, %eax
michael@38 1842 adcl %edx, %edx
michael@38 1843 adcl $0, %ecx
michael@38 1844 addl %eax, %ebp
michael@38 1845 adcl %edx, %ebx
michael@38 1846 movl 24(%esi), %eax
michael@38 1847 adcl $0, %ecx
michael@38 1848 movl 8(%esi), %edx
michael@38 1849 / sqr a[6]*a[2]
michael@38 1850 mull %edx
michael@38 1851 addl %eax, %eax
michael@38 1852 adcl %edx, %edx
michael@38 1853 adcl $0, %ecx
michael@38 1854 addl %eax, %ebp
michael@38 1855 adcl %edx, %ebx
michael@38 1856 movl 20(%esi), %eax
michael@38 1857 adcl $0, %ecx
michael@38 1858 movl 12(%esi), %edx
michael@38 1859 / sqr a[5]*a[3]
michael@38 1860 mull %edx
michael@38 1861 addl %eax, %eax
michael@38 1862 adcl %edx, %edx
michael@38 1863 adcl $0, %ecx
michael@38 1864 addl %eax, %ebp
michael@38 1865 adcl %edx, %ebx
michael@38 1866 movl 16(%esi), %eax
michael@38 1867 adcl $0, %ecx
michael@38 1868 / sqr a[4]*a[4]
michael@38 1869 mull %eax
michael@38 1870 addl %eax, %ebp
michael@38 1871 adcl %edx, %ebx
michael@38 1872 movl 8(%esi), %edx
michael@38 1873 adcl $0, %ecx
michael@38 1874 movl %ebp, 32(%edi)
michael@38 1875 movl 28(%esi), %eax
michael@38 1876 / saved r[8]
michael@38 1877 / ############### Calculate word 9
michael@38 1878 xorl %ebp, %ebp
michael@38 1879 / sqr a[7]*a[2]
michael@38 1880 mull %edx
michael@38 1881 addl %eax, %eax
michael@38 1882 adcl %edx, %edx
michael@38 1883 adcl $0, %ebp
michael@38 1884 addl %eax, %ebx
michael@38 1885 adcl %edx, %ecx
michael@38 1886 movl 24(%esi), %eax
michael@38 1887 adcl $0, %ebp
michael@38 1888 movl 12(%esi), %edx
michael@38 1889 / sqr a[6]*a[3]
michael@38 1890 mull %edx
michael@38 1891 addl %eax, %eax
michael@38 1892 adcl %edx, %edx
michael@38 1893 adcl $0, %ebp
michael@38 1894 addl %eax, %ebx
michael@38 1895 adcl %edx, %ecx
michael@38 1896 movl 20(%esi), %eax
michael@38 1897 adcl $0, %ebp
michael@38 1898 movl 16(%esi), %edx
michael@38 1899 / sqr a[5]*a[4]
michael@38 1900 mull %edx
michael@38 1901 addl %eax, %eax
michael@38 1902 adcl %edx, %edx
michael@38 1903 adcl $0, %ebp
michael@38 1904 addl %eax, %ebx
michael@38 1905 adcl %edx, %ecx
michael@38 1906 movl 28(%esi), %eax
michael@38 1907 adcl $0, %ebp
michael@38 1908 movl %ebx, 36(%edi)
michael@38 1909 movl 12(%esi), %edx
michael@38 1910 / saved r[9]
michael@38 1911 / ############### Calculate word 10
michael@38 1912 xorl %ebx, %ebx
michael@38 1913 / sqr a[7]*a[3]
michael@38 1914 mull %edx
michael@38 1915 addl %eax, %eax
michael@38 1916 adcl %edx, %edx
michael@38 1917 adcl $0, %ebx
michael@38 1918 addl %eax, %ecx
michael@38 1919 adcl %edx, %ebp
michael@38 1920 movl 24(%esi), %eax
michael@38 1921 adcl $0, %ebx
michael@38 1922 movl 16(%esi), %edx
michael@38 1923 / sqr a[6]*a[4]
michael@38 1924 mull %edx
michael@38 1925 addl %eax, %eax
michael@38 1926 adcl %edx, %edx
michael@38 1927 adcl $0, %ebx
michael@38 1928 addl %eax, %ecx
michael@38 1929 adcl %edx, %ebp
michael@38 1930 movl 20(%esi), %eax
michael@38 1931 adcl $0, %ebx
michael@38 1932 / sqr a[5]*a[5]
michael@38 1933 mull %eax
michael@38 1934 addl %eax, %ecx
michael@38 1935 adcl %edx, %ebp
michael@38 1936 movl 16(%esi), %edx
michael@38 1937 adcl $0, %ebx
michael@38 1938 movl %ecx, 40(%edi)
michael@38 1939 movl 28(%esi), %eax
michael@38 1940 / saved r[10]
michael@38 1941 / ############### Calculate word 11
michael@38 1942 xorl %ecx, %ecx
michael@38 1943 / sqr a[7]*a[4]
michael@38 1944 mull %edx
michael@38 1945 addl %eax, %eax
michael@38 1946 adcl %edx, %edx
michael@38 1947 adcl $0, %ecx
michael@38 1948 addl %eax, %ebp
michael@38 1949 adcl %edx, %ebx
michael@38 1950 movl 24(%esi), %eax
michael@38 1951 adcl $0, %ecx
michael@38 1952 movl 20(%esi), %edx
michael@38 1953 / sqr a[6]*a[5]
michael@38 1954 mull %edx
michael@38 1955 addl %eax, %eax
michael@38 1956 adcl %edx, %edx
michael@38 1957 adcl $0, %ecx
michael@38 1958 addl %eax, %ebp
michael@38 1959 adcl %edx, %ebx
michael@38 1960 movl 28(%esi), %eax
michael@38 1961 adcl $0, %ecx
michael@38 1962 movl %ebp, 44(%edi)
michael@38 1963 movl 20(%esi), %edx
michael@38 1964 / saved r[11]
michael@38 1965 / ############### Calculate word 12
michael@38 1966 xorl %ebp, %ebp
michael@38 1967 / sqr a[7]*a[5]
michael@38 1968 mull %edx
michael@38 1969 addl %eax, %eax
michael@38 1970 adcl %edx, %edx
michael@38 1971 adcl $0, %ebp
michael@38 1972 addl %eax, %ebx
michael@38 1973 adcl %edx, %ecx
michael@38 1974 movl 24(%esi), %eax
michael@38 1975 adcl $0, %ebp
michael@38 1976 / sqr a[6]*a[6]
michael@38 1977 mull %eax
michael@38 1978 addl %eax, %ebx
michael@38 1979 adcl %edx, %ecx
michael@38 1980 movl 24(%esi), %edx
michael@38 1981 adcl $0, %ebp
michael@38 1982 movl %ebx, 48(%edi)
michael@38 1983 movl 28(%esi), %eax
michael@38 1984 / saved r[12]
michael@38 1985 / ############### Calculate word 13
michael@38 1986 xorl %ebx, %ebx
michael@38 1987 / sqr a[7]*a[6]
michael@38 1988 mull %edx
michael@38 1989 addl %eax, %eax
michael@38 1990 adcl %edx, %edx
michael@38 1991 adcl $0, %ebx
michael@38 1992 addl %eax, %ecx
michael@38 1993 adcl %edx, %ebp
michael@38 1994 movl 28(%esi), %eax
michael@38 1995 adcl $0, %ebx
michael@38 1996 movl %ecx, 52(%edi)
michael@38 1997 / saved r[13]
michael@38 1998 / ############### Calculate word 14
michael@38 1999 xorl %ecx, %ecx
michael@38 2000 / sqr a[7]*a[7]
michael@38 2001 mull %eax
michael@38 2002 addl %eax, %ebp
michael@38 2003 adcl %edx, %ebx
michael@38 2004 adcl $0, %ecx
michael@38 2005 movl %ebp, 56(%edi)
michael@38 2006 / saved r[14]
michael@38 2007 movl %ebx, 60(%edi)
michael@38 2008 popl %ebx
michael@38 2009 popl %ebp
michael@38 2010 popl %edi
michael@38 2011 popl %esi
michael@38 2012 ret
michael@38 2013 .L_bn_sqr_comba8_end:
michael@38 2014 .size bn_sqr_comba8,.L_bn_sqr_comba8_end-bn_sqr_comba8
michael@38 2015 .ident "desasm.pl"
michael@38 2016 .text
michael@38 2017 .align 16
michael@38 2018 .globl bn_sqr_comba4
michael@38 2019 .type bn_sqr_comba4,@function
michael@38 2020 bn_sqr_comba4:
michael@38 2021 pushl %esi
michael@38 2022 pushl %edi
michael@38 2023 pushl %ebp
michael@38 2024 pushl %ebx
michael@38 2025 movl 20(%esp), %edi
michael@38 2026 movl 24(%esp), %esi
michael@38 2027 xorl %ebx, %ebx
michael@38 2028 xorl %ecx, %ecx
michael@38 2029 movl (%esi), %eax
michael@38 2030 / ############### Calculate word 0
michael@38 2031 xorl %ebp, %ebp
michael@38 2032 / sqr a[0]*a[0]
michael@38 2033 mull %eax
michael@38 2034 addl %eax, %ebx
michael@38 2035 adcl %edx, %ecx
michael@38 2036 movl (%esi), %edx
michael@38 2037 adcl $0, %ebp
michael@38 2038 movl %ebx, (%edi)
michael@38 2039 movl 4(%esi), %eax
michael@38 2040 / saved r[0]
michael@38 2041 / ############### Calculate word 1
michael@38 2042 xorl %ebx, %ebx
michael@38 2043 / sqr a[1]*a[0]
michael@38 2044 mull %edx
michael@38 2045 addl %eax, %eax
michael@38 2046 adcl %edx, %edx
michael@38 2047 adcl $0, %ebx
michael@38 2048 addl %eax, %ecx
michael@38 2049 adcl %edx, %ebp
michael@38 2050 movl 8(%esi), %eax
michael@38 2051 adcl $0, %ebx
michael@38 2052 movl %ecx, 4(%edi)
michael@38 2053 movl (%esi), %edx
michael@38 2054 / saved r[1]
michael@38 2055 / ############### Calculate word 2
michael@38 2056 xorl %ecx, %ecx
michael@38 2057 / sqr a[2]*a[0]
michael@38 2058 mull %edx
michael@38 2059 addl %eax, %eax
michael@38 2060 adcl %edx, %edx
michael@38 2061 adcl $0, %ecx
michael@38 2062 addl %eax, %ebp
michael@38 2063 adcl %edx, %ebx
michael@38 2064 movl 4(%esi), %eax
michael@38 2065 adcl $0, %ecx
michael@38 2066 / sqr a[1]*a[1]
michael@38 2067 mull %eax
michael@38 2068 addl %eax, %ebp
michael@38 2069 adcl %edx, %ebx
michael@38 2070 movl (%esi), %edx
michael@38 2071 adcl $0, %ecx
michael@38 2072 movl %ebp, 8(%edi)
michael@38 2073 movl 12(%esi), %eax
michael@38 2074 / saved r[2]
michael@38 2075 / ############### Calculate word 3
michael@38 2076 xorl %ebp, %ebp
michael@38 2077 / sqr a[3]*a[0]
michael@38 2078 mull %edx
michael@38 2079 addl %eax, %eax
michael@38 2080 adcl %edx, %edx
michael@38 2081 adcl $0, %ebp
michael@38 2082 addl %eax, %ebx
michael@38 2083 adcl %edx, %ecx
michael@38 2084 movl 8(%esi), %eax
michael@38 2085 adcl $0, %ebp
michael@38 2086 movl 4(%esi), %edx
michael@38 2087 / sqr a[2]*a[1]
michael@38 2088 mull %edx
michael@38 2089 addl %eax, %eax
michael@38 2090 adcl %edx, %edx
michael@38 2091 adcl $0, %ebp
michael@38 2092 addl %eax, %ebx
michael@38 2093 adcl %edx, %ecx
michael@38 2094 movl 12(%esi), %eax
michael@38 2095 adcl $0, %ebp
michael@38 2096 movl %ebx, 12(%edi)
michael@38 2097 movl 4(%esi), %edx
michael@38 2098 / saved r[3]
michael@38 2099 / ############### Calculate word 4
michael@38 2100 xorl %ebx, %ebx
michael@38 2101 / sqr a[3]*a[1]
michael@38 2102 mull %edx
michael@38 2103 addl %eax, %eax
michael@38 2104 adcl %edx, %edx
michael@38 2105 adcl $0, %ebx
michael@38 2106 addl %eax, %ecx
michael@38 2107 adcl %edx, %ebp
michael@38 2108 movl 8(%esi), %eax
michael@38 2109 adcl $0, %ebx
michael@38 2110 / sqr a[2]*a[2]
michael@38 2111 mull %eax
michael@38 2112 addl %eax, %ecx
michael@38 2113 adcl %edx, %ebp
michael@38 2114 movl 8(%esi), %edx
michael@38 2115 adcl $0, %ebx
michael@38 2116 movl %ecx, 16(%edi)
michael@38 2117 movl 12(%esi), %eax
michael@38 2118 / saved r[4]
michael@38 2119 / ############### Calculate word 5
michael@38 2120 xorl %ecx, %ecx
michael@38 2121 / sqr a[3]*a[2]
michael@38 2122 mull %edx
michael@38 2123 addl %eax, %eax
michael@38 2124 adcl %edx, %edx
michael@38 2125 adcl $0, %ecx
michael@38 2126 addl %eax, %ebp
michael@38 2127 adcl %edx, %ebx
michael@38 2128 movl 12(%esi), %eax
michael@38 2129 adcl $0, %ecx
michael@38 2130 movl %ebp, 20(%edi)
michael@38 2131 / saved r[5]
michael@38 2132 / ############### Calculate word 6
michael@38 2133 xorl %ebp, %ebp
michael@38 2134 / sqr a[3]*a[3]
michael@38 2135 mull %eax
michael@38 2136 addl %eax, %ebx
michael@38 2137 adcl %edx, %ecx
michael@38 2138 adcl $0, %ebp
michael@38 2139 movl %ebx, 24(%edi)
michael@38 2140 / saved r[6]
michael@38 2141 movl %ecx, 28(%edi)
michael@38 2142 popl %ebx
michael@38 2143 popl %ebp
michael@38 2144 popl %edi
michael@38 2145 popl %esi
michael@38 2146 ret
michael@38 2147 .L_bn_sqr_comba4_end:
michael@38 2148 .size bn_sqr_comba4,.L_bn_sqr_comba4_end-bn_sqr_comba4
michael@38 2149 .ident "desasm.pl"

mercurial