cryptlib/c-sol.s

Mon, 28 Jan 2013 17:37:18 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Mon, 28 Jan 2013 17:37:18 +0100
changeset 758
a2c6460cfb16
parent 38
7fea9071f237
permissions
-rw-r--r--

Correct socket error reporting improvement with IPv6 portable code,
after helpful recommendation by Saúl Ibarra Corretgé on OSips devlist.

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