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