1; This file is generated from a similarly-named Perl script in the BoringSSL 2; source tree. Do not edit by hand. 3 4%ifdef BORINGSSL_PREFIX 5%include "boringssl_prefix_symbols_nasm.inc" 6%endif 7%ifidn __OUTPUT_FORMAT__,obj 8section code use32 class=code align=64 9%elifidn __OUTPUT_FORMAT__,win32 10%ifdef __YASM_VERSION_ID__ 11%if __YASM_VERSION_ID__ < 01010000h 12%error yasm version 1.1.0 or later needed. 13%endif 14; Yasm automatically includes .00 and complains about redefining it. 15; https://www.tortall.net/projects/yasm/manual/html/objfmt-win32-safeseh.html 16%else 17$@feat.00 equ 1 18%endif 19section .text code align=64 20%else 21section .text code 22%endif 23;extern _GFp_ia32cap_P 24L$ONE_mont: 25dd 1,0,0,-1,-1,-1,-2,0 26align 16 27__ecp_nistz256_div_by_2: 28 mov ebp,DWORD [esi] 29 xor edx,edx 30 mov ebx,DWORD [4+esi] 31 mov eax,ebp 32 and ebp,1 33 mov ecx,DWORD [8+esi] 34 sub edx,ebp 35 add eax,edx 36 adc ebx,edx 37 mov DWORD [edi],eax 38 adc ecx,edx 39 mov DWORD [4+edi],ebx 40 mov DWORD [8+edi],ecx 41 mov eax,DWORD [12+esi] 42 mov ebx,DWORD [16+esi] 43 adc eax,0 44 mov ecx,DWORD [20+esi] 45 adc ebx,0 46 mov DWORD [12+edi],eax 47 adc ecx,0 48 mov DWORD [16+edi],ebx 49 mov DWORD [20+edi],ecx 50 mov eax,DWORD [24+esi] 51 mov ebx,DWORD [28+esi] 52 adc eax,ebp 53 adc ebx,edx 54 mov DWORD [24+edi],eax 55 sbb esi,esi 56 mov DWORD [28+edi],ebx 57 mov eax,DWORD [edi] 58 mov ebx,DWORD [4+edi] 59 mov ecx,DWORD [8+edi] 60 mov edx,DWORD [12+edi] 61 shr eax,1 62 mov ebp,ebx 63 shl ebx,31 64 or eax,ebx 65 shr ebp,1 66 mov ebx,ecx 67 shl ecx,31 68 mov DWORD [edi],eax 69 or ebp,ecx 70 mov eax,DWORD [16+edi] 71 shr ebx,1 72 mov ecx,edx 73 shl edx,31 74 mov DWORD [4+edi],ebp 75 or ebx,edx 76 mov ebp,DWORD [20+edi] 77 shr ecx,1 78 mov edx,eax 79 shl eax,31 80 mov DWORD [8+edi],ebx 81 or ecx,eax 82 mov ebx,DWORD [24+edi] 83 shr edx,1 84 mov eax,ebp 85 shl ebp,31 86 mov DWORD [12+edi],ecx 87 or edx,ebp 88 mov ecx,DWORD [28+edi] 89 shr eax,1 90 mov ebp,ebx 91 shl ebx,31 92 mov DWORD [16+edi],edx 93 or eax,ebx 94 shr ebp,1 95 mov ebx,ecx 96 shl ecx,31 97 mov DWORD [20+edi],eax 98 or ebp,ecx 99 shr ebx,1 100 shl esi,31 101 mov DWORD [24+edi],ebp 102 or ebx,esi 103 mov DWORD [28+edi],ebx 104 ret 105global _GFp_nistz256_add 106align 16 107_GFp_nistz256_add: 108L$_GFp_nistz256_add_begin: 109 push ebp 110 push ebx 111 push esi 112 push edi 113 mov esi,DWORD [24+esp] 114 mov ebp,DWORD [28+esp] 115 mov edi,DWORD [20+esp] 116 call __ecp_nistz256_add 117 pop edi 118 pop esi 119 pop ebx 120 pop ebp 121 ret 122align 16 123__ecp_nistz256_add: 124 mov eax,DWORD [esi] 125 mov ebx,DWORD [4+esi] 126 mov ecx,DWORD [8+esi] 127 add eax,DWORD [ebp] 128 mov edx,DWORD [12+esi] 129 adc ebx,DWORD [4+ebp] 130 mov DWORD [edi],eax 131 adc ecx,DWORD [8+ebp] 132 mov DWORD [4+edi],ebx 133 adc edx,DWORD [12+ebp] 134 mov DWORD [8+edi],ecx 135 mov DWORD [12+edi],edx 136 mov eax,DWORD [16+esi] 137 mov ebx,DWORD [20+esi] 138 mov ecx,DWORD [24+esi] 139 adc eax,DWORD [16+ebp] 140 mov edx,DWORD [28+esi] 141 adc ebx,DWORD [20+ebp] 142 mov DWORD [16+edi],eax 143 adc ecx,DWORD [24+ebp] 144 mov DWORD [20+edi],ebx 145 mov esi,0 146 adc edx,DWORD [28+ebp] 147 mov DWORD [24+edi],ecx 148 adc esi,0 149 mov DWORD [28+edi],edx 150 mov eax,DWORD [edi] 151 mov ebx,DWORD [4+edi] 152 mov ecx,DWORD [8+edi] 153 sub eax,-1 154 mov edx,DWORD [12+edi] 155 sbb ebx,-1 156 mov eax,DWORD [16+edi] 157 sbb ecx,-1 158 mov ebx,DWORD [20+edi] 159 sbb edx,0 160 mov ecx,DWORD [24+edi] 161 sbb eax,0 162 mov edx,DWORD [28+edi] 163 sbb ebx,0 164 sbb ecx,1 165 sbb edx,-1 166 sbb esi,0 167 not esi 168 mov eax,DWORD [edi] 169 mov ebp,esi 170 mov ebx,DWORD [4+edi] 171 shr ebp,31 172 mov ecx,DWORD [8+edi] 173 sub eax,esi 174 mov edx,DWORD [12+edi] 175 sbb ebx,esi 176 mov DWORD [edi],eax 177 sbb ecx,esi 178 mov DWORD [4+edi],ebx 179 sbb edx,0 180 mov DWORD [8+edi],ecx 181 mov DWORD [12+edi],edx 182 mov eax,DWORD [16+edi] 183 mov ebx,DWORD [20+edi] 184 mov ecx,DWORD [24+edi] 185 sbb eax,0 186 mov edx,DWORD [28+edi] 187 sbb ebx,0 188 mov DWORD [16+edi],eax 189 sbb ecx,ebp 190 mov DWORD [20+edi],ebx 191 sbb edx,esi 192 mov DWORD [24+edi],ecx 193 mov DWORD [28+edi],edx 194 ret 195align 16 196__ecp_nistz256_sub: 197 mov eax,DWORD [esi] 198 mov ebx,DWORD [4+esi] 199 mov ecx,DWORD [8+esi] 200 sub eax,DWORD [ebp] 201 mov edx,DWORD [12+esi] 202 sbb ebx,DWORD [4+ebp] 203 mov DWORD [edi],eax 204 sbb ecx,DWORD [8+ebp] 205 mov DWORD [4+edi],ebx 206 sbb edx,DWORD [12+ebp] 207 mov DWORD [8+edi],ecx 208 mov DWORD [12+edi],edx 209 mov eax,DWORD [16+esi] 210 mov ebx,DWORD [20+esi] 211 mov ecx,DWORD [24+esi] 212 sbb eax,DWORD [16+ebp] 213 mov edx,DWORD [28+esi] 214 sbb ebx,DWORD [20+ebp] 215 sbb ecx,DWORD [24+ebp] 216 mov DWORD [16+edi],eax 217 sbb edx,DWORD [28+ebp] 218 mov DWORD [20+edi],ebx 219 sbb esi,esi 220 mov DWORD [24+edi],ecx 221 mov DWORD [28+edi],edx 222 mov eax,DWORD [edi] 223 mov ebp,esi 224 mov ebx,DWORD [4+edi] 225 shr ebp,31 226 mov ecx,DWORD [8+edi] 227 add eax,esi 228 mov edx,DWORD [12+edi] 229 adc ebx,esi 230 mov DWORD [edi],eax 231 adc ecx,esi 232 mov DWORD [4+edi],ebx 233 adc edx,0 234 mov DWORD [8+edi],ecx 235 mov DWORD [12+edi],edx 236 mov eax,DWORD [16+edi] 237 mov ebx,DWORD [20+edi] 238 mov ecx,DWORD [24+edi] 239 adc eax,0 240 mov edx,DWORD [28+edi] 241 adc ebx,0 242 mov DWORD [16+edi],eax 243 adc ecx,ebp 244 mov DWORD [20+edi],ebx 245 adc edx,esi 246 mov DWORD [24+edi],ecx 247 mov DWORD [28+edi],edx 248 ret 249global _GFp_nistz256_neg 250align 16 251_GFp_nistz256_neg: 252L$_GFp_nistz256_neg_begin: 253 push ebp 254 push ebx 255 push esi 256 push edi 257 mov ebp,DWORD [24+esp] 258 mov edi,DWORD [20+esp] 259 xor eax,eax 260 sub esp,32 261 mov DWORD [esp],eax 262 mov esi,esp 263 mov DWORD [4+esp],eax 264 mov DWORD [8+esp],eax 265 mov DWORD [12+esp],eax 266 mov DWORD [16+esp],eax 267 mov DWORD [20+esp],eax 268 mov DWORD [24+esp],eax 269 mov DWORD [28+esp],eax 270 call __ecp_nistz256_sub 271 add esp,32 272 pop edi 273 pop esi 274 pop ebx 275 pop ebp 276 ret 277align 16 278__picup_eax: 279 mov eax,DWORD [esp] 280 ret 281global _GFp_nistz256_mul_mont 282align 16 283_GFp_nistz256_mul_mont: 284L$_GFp_nistz256_mul_mont_begin: 285 push ebp 286 push ebx 287 push esi 288 push edi 289 mov esi,DWORD [24+esp] 290 mov ebp,DWORD [28+esp] 291 call __picup_eax 292L$000pic: 293 lea eax,[_GFp_ia32cap_P] 294 mov eax,DWORD [eax] 295 mov edi,DWORD [20+esp] 296 call __ecp_nistz256_mul_mont 297 pop edi 298 pop esi 299 pop ebx 300 pop ebp 301 ret 302align 16 303__ecp_nistz256_mul_mont: 304 mov edx,esp 305 sub esp,256 306 movd xmm7,DWORD [ebp] 307 lea ebp,[4+ebp] 308 pcmpeqd xmm6,xmm6 309 psrlq xmm6,48 310 pshuflw xmm7,xmm7,220 311 and esp,-64 312 pshufd xmm7,xmm7,220 313 lea ebx,[128+esp] 314 movd xmm0,DWORD [esi] 315 pshufd xmm0,xmm0,204 316 movd xmm1,DWORD [4+esi] 317 movdqa [ebx],xmm0 318 pmuludq xmm0,xmm7 319 movd xmm2,DWORD [8+esi] 320 pshufd xmm1,xmm1,204 321 movdqa [16+ebx],xmm1 322 pmuludq xmm1,xmm7 323 movq xmm4,xmm0 324 pslldq xmm4,6 325 paddq xmm4,xmm0 326 movdqa xmm5,xmm4 327 psrldq xmm4,10 328 pand xmm5,xmm6 329 movd xmm3,DWORD [12+esi] 330 pshufd xmm2,xmm2,204 331 movdqa [32+ebx],xmm2 332 pmuludq xmm2,xmm7 333 paddq xmm1,xmm4 334 movdqa [esp],xmm1 335 movd xmm0,DWORD [16+esi] 336 pshufd xmm3,xmm3,204 337 movdqa [48+ebx],xmm3 338 pmuludq xmm3,xmm7 339 movdqa [16+esp],xmm2 340 movd xmm1,DWORD [20+esi] 341 pshufd xmm0,xmm0,204 342 movdqa [64+ebx],xmm0 343 pmuludq xmm0,xmm7 344 paddq xmm3,xmm5 345 movdqa [32+esp],xmm3 346 movd xmm2,DWORD [24+esi] 347 pshufd xmm1,xmm1,204 348 movdqa [80+ebx],xmm1 349 pmuludq xmm1,xmm7 350 movdqa [48+esp],xmm0 351 pshufd xmm4,xmm5,177 352 movd xmm3,DWORD [28+esi] 353 pshufd xmm2,xmm2,204 354 movdqa [96+ebx],xmm2 355 pmuludq xmm2,xmm7 356 movdqa [64+esp],xmm1 357 psubq xmm4,xmm5 358 movd xmm0,DWORD [ebp] 359 pshufd xmm3,xmm3,204 360 movdqa [112+ebx],xmm3 361 pmuludq xmm3,xmm7 362 pshuflw xmm7,xmm0,220 363 movdqa xmm0,[ebx] 364 pshufd xmm7,xmm7,220 365 mov ecx,6 366 lea ebp,[4+ebp] 367 jmp NEAR L$001madd_sse2 368align 16 369L$001madd_sse2: 370 paddq xmm2,xmm5 371 paddq xmm3,xmm4 372 movdqa xmm1,[16+ebx] 373 pmuludq xmm0,xmm7 374 movdqa [80+esp],xmm2 375 movdqa xmm2,[32+ebx] 376 pmuludq xmm1,xmm7 377 movdqa [96+esp],xmm3 378 paddq xmm0,[esp] 379 movdqa xmm3,[48+ebx] 380 pmuludq xmm2,xmm7 381 movq xmm4,xmm0 382 pslldq xmm4,6 383 paddq xmm1,[16+esp] 384 paddq xmm4,xmm0 385 movdqa xmm5,xmm4 386 psrldq xmm4,10 387 movdqa xmm0,[64+ebx] 388 pmuludq xmm3,xmm7 389 paddq xmm1,xmm4 390 paddq xmm2,[32+esp] 391 movdqa [esp],xmm1 392 movdqa xmm1,[80+ebx] 393 pmuludq xmm0,xmm7 394 paddq xmm3,[48+esp] 395 movdqa [16+esp],xmm2 396 pand xmm5,xmm6 397 movdqa xmm2,[96+ebx] 398 pmuludq xmm1,xmm7 399 paddq xmm3,xmm5 400 paddq xmm0,[64+esp] 401 movdqa [32+esp],xmm3 402 pshufd xmm4,xmm5,177 403 movdqa xmm3,xmm7 404 pmuludq xmm2,xmm7 405 movd xmm7,DWORD [ebp] 406 lea ebp,[4+ebp] 407 paddq xmm1,[80+esp] 408 psubq xmm4,xmm5 409 movdqa [48+esp],xmm0 410 pshuflw xmm7,xmm7,220 411 pmuludq xmm3,[112+ebx] 412 pshufd xmm7,xmm7,220 413 movdqa xmm0,[ebx] 414 movdqa [64+esp],xmm1 415 paddq xmm2,[96+esp] 416 dec ecx 417 jnz NEAR L$001madd_sse2 418 paddq xmm2,xmm5 419 paddq xmm3,xmm4 420 movdqa xmm1,[16+ebx] 421 pmuludq xmm0,xmm7 422 movdqa [80+esp],xmm2 423 movdqa xmm2,[32+ebx] 424 pmuludq xmm1,xmm7 425 movdqa [96+esp],xmm3 426 paddq xmm0,[esp] 427 movdqa xmm3,[48+ebx] 428 pmuludq xmm2,xmm7 429 movq xmm4,xmm0 430 pslldq xmm4,6 431 paddq xmm1,[16+esp] 432 paddq xmm4,xmm0 433 movdqa xmm5,xmm4 434 psrldq xmm4,10 435 movdqa xmm0,[64+ebx] 436 pmuludq xmm3,xmm7 437 paddq xmm1,xmm4 438 paddq xmm2,[32+esp] 439 movdqa [esp],xmm1 440 movdqa xmm1,[80+ebx] 441 pmuludq xmm0,xmm7 442 paddq xmm3,[48+esp] 443 movdqa [16+esp],xmm2 444 pand xmm5,xmm6 445 movdqa xmm2,[96+ebx] 446 pmuludq xmm1,xmm7 447 paddq xmm3,xmm5 448 paddq xmm0,[64+esp] 449 movdqa [32+esp],xmm3 450 pshufd xmm4,xmm5,177 451 movdqa xmm3,[112+ebx] 452 pmuludq xmm2,xmm7 453 paddq xmm1,[80+esp] 454 psubq xmm4,xmm5 455 movdqa [48+esp],xmm0 456 pmuludq xmm3,xmm7 457 pcmpeqd xmm7,xmm7 458 movdqa xmm0,[esp] 459 pslldq xmm7,8 460 movdqa [64+esp],xmm1 461 paddq xmm2,[96+esp] 462 paddq xmm2,xmm5 463 paddq xmm3,xmm4 464 movdqa [80+esp],xmm2 465 movdqa [96+esp],xmm3 466 movdqa xmm1,[16+esp] 467 movdqa xmm2,[32+esp] 468 movdqa xmm3,[48+esp] 469 movq xmm4,xmm0 470 pand xmm0,xmm7 471 xor ebp,ebp 472 pslldq xmm4,6 473 movq xmm5,xmm1 474 paddq xmm0,xmm4 475 pand xmm1,xmm7 476 psrldq xmm0,6 477 movd eax,xmm0 478 psrldq xmm0,4 479 paddq xmm5,xmm0 480 movdqa xmm0,[64+esp] 481 sub eax,-1 482 pslldq xmm5,6 483 movq xmm4,xmm2 484 paddq xmm1,xmm5 485 pand xmm2,xmm7 486 psrldq xmm1,6 487 mov DWORD [edi],eax 488 movd eax,xmm1 489 psrldq xmm1,4 490 paddq xmm4,xmm1 491 movdqa xmm1,[80+esp] 492 sbb eax,-1 493 pslldq xmm4,6 494 movq xmm5,xmm3 495 paddq xmm2,xmm4 496 pand xmm3,xmm7 497 psrldq xmm2,6 498 mov DWORD [4+edi],eax 499 movd eax,xmm2 500 psrldq xmm2,4 501 paddq xmm5,xmm2 502 movdqa xmm2,[96+esp] 503 sbb eax,-1 504 pslldq xmm5,6 505 movq xmm4,xmm0 506 paddq xmm3,xmm5 507 pand xmm0,xmm7 508 psrldq xmm3,6 509 mov DWORD [8+edi],eax 510 movd eax,xmm3 511 psrldq xmm3,4 512 paddq xmm4,xmm3 513 sbb eax,0 514 pslldq xmm4,6 515 movq xmm5,xmm1 516 paddq xmm0,xmm4 517 pand xmm1,xmm7 518 psrldq xmm0,6 519 mov DWORD [12+edi],eax 520 movd eax,xmm0 521 psrldq xmm0,4 522 paddq xmm5,xmm0 523 sbb eax,0 524 pslldq xmm5,6 525 movq xmm4,xmm2 526 paddq xmm1,xmm5 527 pand xmm2,xmm7 528 psrldq xmm1,6 529 movd ebx,xmm1 530 psrldq xmm1,4 531 mov esp,edx 532 paddq xmm4,xmm1 533 pslldq xmm4,6 534 paddq xmm2,xmm4 535 psrldq xmm2,6 536 movd ecx,xmm2 537 psrldq xmm2,4 538 sbb ebx,0 539 movd edx,xmm2 540 pextrw esi,xmm2,2 541 sbb ecx,1 542 sbb edx,-1 543 sbb esi,0 544 sub ebp,esi 545 add DWORD [edi],esi 546 adc DWORD [4+edi],esi 547 adc DWORD [8+edi],esi 548 adc DWORD [12+edi],0 549 adc eax,0 550 adc ebx,0 551 mov DWORD [16+edi],eax 552 adc ecx,ebp 553 mov DWORD [20+edi],ebx 554 adc edx,esi 555 mov DWORD [24+edi],ecx 556 mov DWORD [28+edi],edx 557 ret 558global _GFp_nistz256_point_double 559align 16 560_GFp_nistz256_point_double: 561L$_GFp_nistz256_point_double_begin: 562 push ebp 563 push ebx 564 push esi 565 push edi 566 mov esi,DWORD [24+esp] 567 sub esp,164 568 call __picup_eax 569L$002pic: 570 lea edx,[_GFp_ia32cap_P] 571 mov ebp,DWORD [edx] 572L$point_double_shortcut: 573 mov eax,DWORD [esi] 574 mov ebx,DWORD [4+esi] 575 mov ecx,DWORD [8+esi] 576 mov edx,DWORD [12+esi] 577 mov DWORD [96+esp],eax 578 mov DWORD [100+esp],ebx 579 mov DWORD [104+esp],ecx 580 mov DWORD [108+esp],edx 581 mov eax,DWORD [16+esi] 582 mov ebx,DWORD [20+esi] 583 mov ecx,DWORD [24+esi] 584 mov edx,DWORD [28+esi] 585 mov DWORD [112+esp],eax 586 mov DWORD [116+esp],ebx 587 mov DWORD [120+esp],ecx 588 mov DWORD [124+esp],edx 589 mov DWORD [160+esp],ebp 590 lea ebp,[32+esi] 591 lea esi,[32+esi] 592 lea edi,[esp] 593 call __ecp_nistz256_add 594 mov eax,DWORD [160+esp] 595 mov esi,64 596 add esi,DWORD [188+esp] 597 lea edi,[64+esp] 598 mov ebp,esi 599 call __ecp_nistz256_mul_mont 600 mov eax,DWORD [160+esp] 601 lea esi,[esp] 602 lea ebp,[esp] 603 lea edi,[esp] 604 call __ecp_nistz256_mul_mont 605 mov eax,DWORD [160+esp] 606 mov ebp,DWORD [188+esp] 607 lea esi,[32+ebp] 608 lea ebp,[64+ebp] 609 lea edi,[128+esp] 610 call __ecp_nistz256_mul_mont 611 lea esi,[96+esp] 612 lea ebp,[64+esp] 613 lea edi,[32+esp] 614 call __ecp_nistz256_add 615 mov edi,64 616 lea esi,[128+esp] 617 lea ebp,[128+esp] 618 add edi,DWORD [184+esp] 619 call __ecp_nistz256_add 620 lea esi,[96+esp] 621 lea ebp,[64+esp] 622 lea edi,[64+esp] 623 call __ecp_nistz256_sub 624 mov eax,DWORD [160+esp] 625 lea esi,[esp] 626 lea ebp,[esp] 627 lea edi,[128+esp] 628 call __ecp_nistz256_mul_mont 629 mov eax,DWORD [160+esp] 630 lea esi,[32+esp] 631 lea ebp,[64+esp] 632 lea edi,[32+esp] 633 call __ecp_nistz256_mul_mont 634 mov edi,32 635 lea esi,[128+esp] 636 add edi,DWORD [184+esp] 637 call __ecp_nistz256_div_by_2 638 lea esi,[32+esp] 639 lea ebp,[32+esp] 640 lea edi,[128+esp] 641 call __ecp_nistz256_add 642 mov eax,DWORD [160+esp] 643 lea esi,[96+esp] 644 lea ebp,[esp] 645 lea edi,[esp] 646 call __ecp_nistz256_mul_mont 647 lea esi,[128+esp] 648 lea ebp,[32+esp] 649 lea edi,[32+esp] 650 call __ecp_nistz256_add 651 lea esi,[esp] 652 lea ebp,[esp] 653 lea edi,[128+esp] 654 call __ecp_nistz256_add 655 mov eax,DWORD [160+esp] 656 lea esi,[32+esp] 657 lea ebp,[32+esp] 658 mov edi,DWORD [184+esp] 659 call __ecp_nistz256_mul_mont 660 mov esi,edi 661 lea ebp,[128+esp] 662 call __ecp_nistz256_sub 663 lea esi,[esp] 664 mov ebp,edi 665 lea edi,[esp] 666 call __ecp_nistz256_sub 667 mov eax,DWORD [160+esp] 668 mov esi,edi 669 lea ebp,[32+esp] 670 call __ecp_nistz256_mul_mont 671 mov ebp,32 672 lea esi,[esp] 673 add ebp,DWORD [184+esp] 674 mov edi,ebp 675 call __ecp_nistz256_sub 676 add esp,164 677 pop edi 678 pop esi 679 pop ebx 680 pop ebp 681 ret 682global _GFp_nistz256_point_add_affine 683align 16 684_GFp_nistz256_point_add_affine: 685L$_GFp_nistz256_point_add_affine_begin: 686 push ebp 687 push ebx 688 push esi 689 push edi 690 mov esi,DWORD [24+esp] 691 sub esp,492 692 call __picup_eax 693L$003pic: 694 lea edx,[_GFp_ia32cap_P] 695 mov ebp,DWORD [edx] 696 lea edi,[96+esp] 697 mov eax,DWORD [esi] 698 mov ebx,DWORD [4+esi] 699 mov ecx,DWORD [8+esi] 700 mov edx,DWORD [12+esi] 701 mov DWORD [edi],eax 702 mov DWORD [488+esp],ebp 703 mov DWORD [4+edi],ebx 704 mov DWORD [8+edi],ecx 705 mov DWORD [12+edi],edx 706 mov eax,DWORD [16+esi] 707 mov ebx,DWORD [20+esi] 708 mov ecx,DWORD [24+esi] 709 mov edx,DWORD [28+esi] 710 mov DWORD [16+edi],eax 711 mov DWORD [20+edi],ebx 712 mov DWORD [24+edi],ecx 713 mov DWORD [28+edi],edx 714 mov eax,DWORD [32+esi] 715 mov ebx,DWORD [36+esi] 716 mov ecx,DWORD [40+esi] 717 mov edx,DWORD [44+esi] 718 mov DWORD [32+edi],eax 719 mov DWORD [36+edi],ebx 720 mov DWORD [40+edi],ecx 721 mov DWORD [44+edi],edx 722 mov eax,DWORD [48+esi] 723 mov ebx,DWORD [52+esi] 724 mov ecx,DWORD [56+esi] 725 mov edx,DWORD [60+esi] 726 mov DWORD [48+edi],eax 727 mov DWORD [52+edi],ebx 728 mov DWORD [56+edi],ecx 729 mov DWORD [60+edi],edx 730 mov eax,DWORD [64+esi] 731 mov ebx,DWORD [68+esi] 732 mov ecx,DWORD [72+esi] 733 mov edx,DWORD [76+esi] 734 mov DWORD [64+edi],eax 735 mov ebp,eax 736 mov DWORD [68+edi],ebx 737 or ebp,ebx 738 mov DWORD [72+edi],ecx 739 or ebp,ecx 740 mov DWORD [76+edi],edx 741 or ebp,edx 742 mov eax,DWORD [80+esi] 743 mov ebx,DWORD [84+esi] 744 mov ecx,DWORD [88+esi] 745 mov edx,DWORD [92+esi] 746 mov DWORD [80+edi],eax 747 or ebp,eax 748 mov DWORD [84+edi],ebx 749 or ebp,ebx 750 mov DWORD [88+edi],ecx 751 or ebp,ecx 752 mov DWORD [92+edi],edx 753 or ebp,edx 754 xor eax,eax 755 mov esi,DWORD [520+esp] 756 sub eax,ebp 757 or ebp,eax 758 sar ebp,31 759 mov DWORD [480+esp],ebp 760 lea edi,[192+esp] 761 mov eax,DWORD [esi] 762 mov ebx,DWORD [4+esi] 763 mov ecx,DWORD [8+esi] 764 mov edx,DWORD [12+esi] 765 mov DWORD [edi],eax 766 mov ebp,eax 767 mov DWORD [4+edi],ebx 768 or ebp,ebx 769 mov DWORD [8+edi],ecx 770 or ebp,ecx 771 mov DWORD [12+edi],edx 772 or ebp,edx 773 mov eax,DWORD [16+esi] 774 mov ebx,DWORD [20+esi] 775 mov ecx,DWORD [24+esi] 776 mov edx,DWORD [28+esi] 777 mov DWORD [16+edi],eax 778 or ebp,eax 779 mov DWORD [20+edi],ebx 780 or ebp,ebx 781 mov DWORD [24+edi],ecx 782 or ebp,ecx 783 mov DWORD [28+edi],edx 784 or ebp,edx 785 mov eax,DWORD [32+esi] 786 mov ebx,DWORD [36+esi] 787 mov ecx,DWORD [40+esi] 788 mov edx,DWORD [44+esi] 789 mov DWORD [32+edi],eax 790 or ebp,eax 791 mov DWORD [36+edi],ebx 792 or ebp,ebx 793 mov DWORD [40+edi],ecx 794 or ebp,ecx 795 mov DWORD [44+edi],edx 796 or ebp,edx 797 mov eax,DWORD [48+esi] 798 mov ebx,DWORD [52+esi] 799 mov ecx,DWORD [56+esi] 800 mov edx,DWORD [60+esi] 801 mov DWORD [48+edi],eax 802 or ebp,eax 803 mov DWORD [52+edi],ebx 804 or ebp,ebx 805 mov DWORD [56+edi],ecx 806 or ebp,ecx 807 mov DWORD [60+edi],edx 808 or ebp,edx 809 xor ebx,ebx 810 mov eax,DWORD [488+esp] 811 sub ebx,ebp 812 lea esi,[160+esp] 813 or ebx,ebp 814 lea ebp,[160+esp] 815 sar ebx,31 816 lea edi,[288+esp] 817 mov DWORD [484+esp],ebx 818 call __ecp_nistz256_mul_mont 819 mov eax,DWORD [488+esp] 820 lea esi,[192+esp] 821 mov ebp,edi 822 lea edi,[256+esp] 823 call __ecp_nistz256_mul_mont 824 mov eax,DWORD [488+esp] 825 lea esi,[160+esp] 826 lea ebp,[288+esp] 827 lea edi,[288+esp] 828 call __ecp_nistz256_mul_mont 829 lea esi,[256+esp] 830 lea ebp,[96+esp] 831 lea edi,[320+esp] 832 call __ecp_nistz256_sub 833 mov eax,DWORD [488+esp] 834 lea esi,[224+esp] 835 lea ebp,[288+esp] 836 lea edi,[288+esp] 837 call __ecp_nistz256_mul_mont 838 mov eax,DWORD [488+esp] 839 lea esi,[160+esp] 840 lea ebp,[320+esp] 841 lea edi,[64+esp] 842 call __ecp_nistz256_mul_mont 843 lea esi,[288+esp] 844 lea ebp,[128+esp] 845 lea edi,[352+esp] 846 call __ecp_nistz256_sub 847 mov eax,DWORD [488+esp] 848 lea esi,[320+esp] 849 lea ebp,[320+esp] 850 lea edi,[384+esp] 851 call __ecp_nistz256_mul_mont 852 mov eax,DWORD [488+esp] 853 lea esi,[352+esp] 854 lea ebp,[352+esp] 855 lea edi,[448+esp] 856 call __ecp_nistz256_mul_mont 857 mov eax,DWORD [488+esp] 858 lea esi,[96+esp] 859 lea ebp,[384+esp] 860 lea edi,[256+esp] 861 call __ecp_nistz256_mul_mont 862 mov eax,DWORD [488+esp] 863 lea esi,[320+esp] 864 lea ebp,[384+esp] 865 lea edi,[416+esp] 866 call __ecp_nistz256_mul_mont 867 lea esi,[256+esp] 868 lea ebp,[256+esp] 869 lea edi,[384+esp] 870 call __ecp_nistz256_add 871 lea esi,[448+esp] 872 lea ebp,[384+esp] 873 lea edi,[esp] 874 call __ecp_nistz256_sub 875 lea esi,[esp] 876 lea ebp,[416+esp] 877 lea edi,[esp] 878 call __ecp_nistz256_sub 879 lea esi,[256+esp] 880 lea ebp,[esp] 881 lea edi,[32+esp] 882 call __ecp_nistz256_sub 883 mov eax,DWORD [488+esp] 884 lea esi,[416+esp] 885 lea ebp,[128+esp] 886 lea edi,[288+esp] 887 call __ecp_nistz256_mul_mont 888 mov eax,DWORD [488+esp] 889 lea esi,[352+esp] 890 lea ebp,[32+esp] 891 lea edi,[32+esp] 892 call __ecp_nistz256_mul_mont 893 lea esi,[32+esp] 894 lea ebp,[288+esp] 895 lea edi,[32+esp] 896 call __ecp_nistz256_sub 897 mov ebp,DWORD [480+esp] 898 mov esi,DWORD [484+esp] 899 mov edi,DWORD [512+esp] 900 mov edx,ebp 901 not ebp 902 and edx,esi 903 and ebp,esi 904 not esi 905 mov eax,edx 906 and eax,DWORD [64+esp] 907 mov ebx,ebp 908 and ebx,1 909 mov ecx,esi 910 and ecx,DWORD [160+esp] 911 or eax,ebx 912 or eax,ecx 913 mov DWORD [64+edi],eax 914 mov eax,edx 915 and eax,DWORD [68+esp] 916 mov ecx,esi 917 and ecx,DWORD [164+esp] 918 or eax,ecx 919 mov DWORD [68+edi],eax 920 mov eax,edx 921 and eax,DWORD [72+esp] 922 mov ecx,esi 923 and ecx,DWORD [168+esp] 924 or eax,ecx 925 mov DWORD [72+edi],eax 926 mov eax,edx 927 and eax,DWORD [76+esp] 928 mov ecx,esi 929 and ecx,DWORD [172+esp] 930 or eax,ebp 931 or eax,ecx 932 mov DWORD [76+edi],eax 933 mov eax,edx 934 and eax,DWORD [80+esp] 935 mov ecx,esi 936 and ecx,DWORD [176+esp] 937 or eax,ebp 938 or eax,ecx 939 mov DWORD [80+edi],eax 940 mov eax,edx 941 and eax,DWORD [84+esp] 942 mov ecx,esi 943 and ecx,DWORD [180+esp] 944 or eax,ebp 945 or eax,ecx 946 mov DWORD [84+edi],eax 947 mov eax,edx 948 and eax,DWORD [88+esp] 949 mov ebx,ebp 950 and ebx,-2 951 mov ecx,esi 952 and ecx,DWORD [184+esp] 953 or eax,ebx 954 or eax,ecx 955 mov DWORD [88+edi],eax 956 mov eax,edx 957 and eax,DWORD [92+esp] 958 mov ecx,esi 959 and ecx,DWORD [188+esp] 960 or eax,ecx 961 mov DWORD [92+edi],eax 962 mov eax,edx 963 and eax,DWORD [esp] 964 mov ebx,ebp 965 and ebx,DWORD [192+esp] 966 mov ecx,esi 967 and ecx,DWORD [96+esp] 968 or eax,ebx 969 or eax,ecx 970 mov DWORD [edi],eax 971 mov eax,edx 972 and eax,DWORD [4+esp] 973 mov ebx,ebp 974 and ebx,DWORD [196+esp] 975 mov ecx,esi 976 and ecx,DWORD [100+esp] 977 or eax,ebx 978 or eax,ecx 979 mov DWORD [4+edi],eax 980 mov eax,edx 981 and eax,DWORD [8+esp] 982 mov ebx,ebp 983 and ebx,DWORD [200+esp] 984 mov ecx,esi 985 and ecx,DWORD [104+esp] 986 or eax,ebx 987 or eax,ecx 988 mov DWORD [8+edi],eax 989 mov eax,edx 990 and eax,DWORD [12+esp] 991 mov ebx,ebp 992 and ebx,DWORD [204+esp] 993 mov ecx,esi 994 and ecx,DWORD [108+esp] 995 or eax,ebx 996 or eax,ecx 997 mov DWORD [12+edi],eax 998 mov eax,edx 999 and eax,DWORD [16+esp] 1000 mov ebx,ebp 1001 and ebx,DWORD [208+esp] 1002 mov ecx,esi 1003 and ecx,DWORD [112+esp] 1004 or eax,ebx 1005 or eax,ecx 1006 mov DWORD [16+edi],eax 1007 mov eax,edx 1008 and eax,DWORD [20+esp] 1009 mov ebx,ebp 1010 and ebx,DWORD [212+esp] 1011 mov ecx,esi 1012 and ecx,DWORD [116+esp] 1013 or eax,ebx 1014 or eax,ecx 1015 mov DWORD [20+edi],eax 1016 mov eax,edx 1017 and eax,DWORD [24+esp] 1018 mov ebx,ebp 1019 and ebx,DWORD [216+esp] 1020 mov ecx,esi 1021 and ecx,DWORD [120+esp] 1022 or eax,ebx 1023 or eax,ecx 1024 mov DWORD [24+edi],eax 1025 mov eax,edx 1026 and eax,DWORD [28+esp] 1027 mov ebx,ebp 1028 and ebx,DWORD [220+esp] 1029 mov ecx,esi 1030 and ecx,DWORD [124+esp] 1031 or eax,ebx 1032 or eax,ecx 1033 mov DWORD [28+edi],eax 1034 mov eax,edx 1035 and eax,DWORD [32+esp] 1036 mov ebx,ebp 1037 and ebx,DWORD [224+esp] 1038 mov ecx,esi 1039 and ecx,DWORD [128+esp] 1040 or eax,ebx 1041 or eax,ecx 1042 mov DWORD [32+edi],eax 1043 mov eax,edx 1044 and eax,DWORD [36+esp] 1045 mov ebx,ebp 1046 and ebx,DWORD [228+esp] 1047 mov ecx,esi 1048 and ecx,DWORD [132+esp] 1049 or eax,ebx 1050 or eax,ecx 1051 mov DWORD [36+edi],eax 1052 mov eax,edx 1053 and eax,DWORD [40+esp] 1054 mov ebx,ebp 1055 and ebx,DWORD [232+esp] 1056 mov ecx,esi 1057 and ecx,DWORD [136+esp] 1058 or eax,ebx 1059 or eax,ecx 1060 mov DWORD [40+edi],eax 1061 mov eax,edx 1062 and eax,DWORD [44+esp] 1063 mov ebx,ebp 1064 and ebx,DWORD [236+esp] 1065 mov ecx,esi 1066 and ecx,DWORD [140+esp] 1067 or eax,ebx 1068 or eax,ecx 1069 mov DWORD [44+edi],eax 1070 mov eax,edx 1071 and eax,DWORD [48+esp] 1072 mov ebx,ebp 1073 and ebx,DWORD [240+esp] 1074 mov ecx,esi 1075 and ecx,DWORD [144+esp] 1076 or eax,ebx 1077 or eax,ecx 1078 mov DWORD [48+edi],eax 1079 mov eax,edx 1080 and eax,DWORD [52+esp] 1081 mov ebx,ebp 1082 and ebx,DWORD [244+esp] 1083 mov ecx,esi 1084 and ecx,DWORD [148+esp] 1085 or eax,ebx 1086 or eax,ecx 1087 mov DWORD [52+edi],eax 1088 mov eax,edx 1089 and eax,DWORD [56+esp] 1090 mov ebx,ebp 1091 and ebx,DWORD [248+esp] 1092 mov ecx,esi 1093 and ecx,DWORD [152+esp] 1094 or eax,ebx 1095 or eax,ecx 1096 mov DWORD [56+edi],eax 1097 mov eax,edx 1098 and eax,DWORD [60+esp] 1099 mov ebx,ebp 1100 and ebx,DWORD [252+esp] 1101 mov ecx,esi 1102 and ecx,DWORD [156+esp] 1103 or eax,ebx 1104 or eax,ecx 1105 mov DWORD [60+edi],eax 1106 add esp,492 1107 pop edi 1108 pop esi 1109 pop ebx 1110 pop ebp 1111 ret 1112segment .bss 1113common _GFp_ia32cap_P 16 1114