1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105 |
- ; This file is generated from a similarly-named Perl script in the BoringSSL
- ; source tree. Do not edit by hand.
- %ifdef BORINGSSL_PREFIX
- %include "boringssl_prefix_symbols_nasm.inc"
- %endif
- %ifidn __OUTPUT_FORMAT__,obj
- section code use32 class=code align=64
- %elifidn __OUTPUT_FORMAT__,win32
- [email protected] equ 1
- section .text code align=64
- %else
- section .text code
- %endif
- ;extern _GFp_ia32cap_P
- L$ONE_mont:
- dd 1,0,0,-1,-1,-1,-2,0
- align 16
- __ecp_nistz256_div_by_2:
- mov ebp,DWORD [esi]
- xor edx,edx
- mov ebx,DWORD [4+esi]
- mov eax,ebp
- and ebp,1
- mov ecx,DWORD [8+esi]
- sub edx,ebp
- add eax,edx
- adc ebx,edx
- mov DWORD [edi],eax
- adc ecx,edx
- mov DWORD [4+edi],ebx
- mov DWORD [8+edi],ecx
- mov eax,DWORD [12+esi]
- mov ebx,DWORD [16+esi]
- adc eax,0
- mov ecx,DWORD [20+esi]
- adc ebx,0
- mov DWORD [12+edi],eax
- adc ecx,0
- mov DWORD [16+edi],ebx
- mov DWORD [20+edi],ecx
- mov eax,DWORD [24+esi]
- mov ebx,DWORD [28+esi]
- adc eax,ebp
- adc ebx,edx
- mov DWORD [24+edi],eax
- sbb esi,esi
- mov DWORD [28+edi],ebx
- mov eax,DWORD [edi]
- mov ebx,DWORD [4+edi]
- mov ecx,DWORD [8+edi]
- mov edx,DWORD [12+edi]
- shr eax,1
- mov ebp,ebx
- shl ebx,31
- or eax,ebx
- shr ebp,1
- mov ebx,ecx
- shl ecx,31
- mov DWORD [edi],eax
- or ebp,ecx
- mov eax,DWORD [16+edi]
- shr ebx,1
- mov ecx,edx
- shl edx,31
- mov DWORD [4+edi],ebp
- or ebx,edx
- mov ebp,DWORD [20+edi]
- shr ecx,1
- mov edx,eax
- shl eax,31
- mov DWORD [8+edi],ebx
- or ecx,eax
- mov ebx,DWORD [24+edi]
- shr edx,1
- mov eax,ebp
- shl ebp,31
- mov DWORD [12+edi],ecx
- or edx,ebp
- mov ecx,DWORD [28+edi]
- shr eax,1
- mov ebp,ebx
- shl ebx,31
- mov DWORD [16+edi],edx
- or eax,ebx
- shr ebp,1
- mov ebx,ecx
- shl ecx,31
- mov DWORD [20+edi],eax
- or ebp,ecx
- shr ebx,1
- shl esi,31
- mov DWORD [24+edi],ebp
- or ebx,esi
- mov DWORD [28+edi],ebx
- ret
- global _GFp_nistz256_add
- align 16
- _GFp_nistz256_add:
- L$_GFp_nistz256_add_begin:
- push ebp
- push ebx
- push esi
- push edi
- mov esi,DWORD [24+esp]
- mov ebp,DWORD [28+esp]
- mov edi,DWORD [20+esp]
- call __ecp_nistz256_add
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
- align 16
- __ecp_nistz256_add:
- mov eax,DWORD [esi]
- mov ebx,DWORD [4+esi]
- mov ecx,DWORD [8+esi]
- add eax,DWORD [ebp]
- mov edx,DWORD [12+esi]
- adc ebx,DWORD [4+ebp]
- mov DWORD [edi],eax
- adc ecx,DWORD [8+ebp]
- mov DWORD [4+edi],ebx
- adc edx,DWORD [12+ebp]
- mov DWORD [8+edi],ecx
- mov DWORD [12+edi],edx
- mov eax,DWORD [16+esi]
- mov ebx,DWORD [20+esi]
- mov ecx,DWORD [24+esi]
- adc eax,DWORD [16+ebp]
- mov edx,DWORD [28+esi]
- adc ebx,DWORD [20+ebp]
- mov DWORD [16+edi],eax
- adc ecx,DWORD [24+ebp]
- mov DWORD [20+edi],ebx
- mov esi,0
- adc edx,DWORD [28+ebp]
- mov DWORD [24+edi],ecx
- adc esi,0
- mov DWORD [28+edi],edx
- mov eax,DWORD [edi]
- mov ebx,DWORD [4+edi]
- mov ecx,DWORD [8+edi]
- sub eax,-1
- mov edx,DWORD [12+edi]
- sbb ebx,-1
- mov eax,DWORD [16+edi]
- sbb ecx,-1
- mov ebx,DWORD [20+edi]
- sbb edx,0
- mov ecx,DWORD [24+edi]
- sbb eax,0
- mov edx,DWORD [28+edi]
- sbb ebx,0
- sbb ecx,1
- sbb edx,-1
- sbb esi,0
- not esi
- mov eax,DWORD [edi]
- mov ebp,esi
- mov ebx,DWORD [4+edi]
- shr ebp,31
- mov ecx,DWORD [8+edi]
- sub eax,esi
- mov edx,DWORD [12+edi]
- sbb ebx,esi
- mov DWORD [edi],eax
- sbb ecx,esi
- mov DWORD [4+edi],ebx
- sbb edx,0
- mov DWORD [8+edi],ecx
- mov DWORD [12+edi],edx
- mov eax,DWORD [16+edi]
- mov ebx,DWORD [20+edi]
- mov ecx,DWORD [24+edi]
- sbb eax,0
- mov edx,DWORD [28+edi]
- sbb ebx,0
- mov DWORD [16+edi],eax
- sbb ecx,ebp
- mov DWORD [20+edi],ebx
- sbb edx,esi
- mov DWORD [24+edi],ecx
- mov DWORD [28+edi],edx
- ret
- align 16
- __ecp_nistz256_sub:
- mov eax,DWORD [esi]
- mov ebx,DWORD [4+esi]
- mov ecx,DWORD [8+esi]
- sub eax,DWORD [ebp]
- mov edx,DWORD [12+esi]
- sbb ebx,DWORD [4+ebp]
- mov DWORD [edi],eax
- sbb ecx,DWORD [8+ebp]
- mov DWORD [4+edi],ebx
- sbb edx,DWORD [12+ebp]
- mov DWORD [8+edi],ecx
- mov DWORD [12+edi],edx
- mov eax,DWORD [16+esi]
- mov ebx,DWORD [20+esi]
- mov ecx,DWORD [24+esi]
- sbb eax,DWORD [16+ebp]
- mov edx,DWORD [28+esi]
- sbb ebx,DWORD [20+ebp]
- sbb ecx,DWORD [24+ebp]
- mov DWORD [16+edi],eax
- sbb edx,DWORD [28+ebp]
- mov DWORD [20+edi],ebx
- sbb esi,esi
- mov DWORD [24+edi],ecx
- mov DWORD [28+edi],edx
- mov eax,DWORD [edi]
- mov ebp,esi
- mov ebx,DWORD [4+edi]
- shr ebp,31
- mov ecx,DWORD [8+edi]
- add eax,esi
- mov edx,DWORD [12+edi]
- adc ebx,esi
- mov DWORD [edi],eax
- adc ecx,esi
- mov DWORD [4+edi],ebx
- adc edx,0
- mov DWORD [8+edi],ecx
- mov DWORD [12+edi],edx
- mov eax,DWORD [16+edi]
- mov ebx,DWORD [20+edi]
- mov ecx,DWORD [24+edi]
- adc eax,0
- mov edx,DWORD [28+edi]
- adc ebx,0
- mov DWORD [16+edi],eax
- adc ecx,ebp
- mov DWORD [20+edi],ebx
- adc edx,esi
- mov DWORD [24+edi],ecx
- mov DWORD [28+edi],edx
- ret
- global _GFp_nistz256_neg
- align 16
- _GFp_nistz256_neg:
- L$_GFp_nistz256_neg_begin:
- push ebp
- push ebx
- push esi
- push edi
- mov ebp,DWORD [24+esp]
- mov edi,DWORD [20+esp]
- xor eax,eax
- sub esp,32
- mov DWORD [esp],eax
- mov esi,esp
- mov DWORD [4+esp],eax
- mov DWORD [8+esp],eax
- mov DWORD [12+esp],eax
- mov DWORD [16+esp],eax
- mov DWORD [20+esp],eax
- mov DWORD [24+esp],eax
- mov DWORD [28+esp],eax
- call __ecp_nistz256_sub
- add esp,32
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
- align 16
- __picup_eax:
- mov eax,DWORD [esp]
- ret
- global _GFp_nistz256_mul_mont
- align 16
- _GFp_nistz256_mul_mont:
- L$_GFp_nistz256_mul_mont_begin:
- push ebp
- push ebx
- push esi
- push edi
- mov esi,DWORD [24+esp]
- mov ebp,DWORD [28+esp]
- call __picup_eax
- L$000pic:
- lea eax,[_GFp_ia32cap_P]
- mov eax,DWORD [eax]
- mov edi,DWORD [20+esp]
- call __ecp_nistz256_mul_mont
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
- align 16
- __ecp_nistz256_mul_mont:
- mov edx,esp
- sub esp,256
- movd xmm7,DWORD [ebp]
- lea ebp,[4+ebp]
- pcmpeqd xmm6,xmm6
- psrlq xmm6,48
- pshuflw xmm7,xmm7,220
- and esp,-64
- pshufd xmm7,xmm7,220
- lea ebx,[128+esp]
- movd xmm0,DWORD [esi]
- pshufd xmm0,xmm0,204
- movd xmm1,DWORD [4+esi]
- movdqa [ebx],xmm0
- pmuludq xmm0,xmm7
- movd xmm2,DWORD [8+esi]
- pshufd xmm1,xmm1,204
- movdqa [16+ebx],xmm1
- pmuludq xmm1,xmm7
- movq xmm4,xmm0
- pslldq xmm4,6
- paddq xmm4,xmm0
- movdqa xmm5,xmm4
- psrldq xmm4,10
- pand xmm5,xmm6
- movd xmm3,DWORD [12+esi]
- pshufd xmm2,xmm2,204
- movdqa [32+ebx],xmm2
- pmuludq xmm2,xmm7
- paddq xmm1,xmm4
- movdqa [esp],xmm1
- movd xmm0,DWORD [16+esi]
- pshufd xmm3,xmm3,204
- movdqa [48+ebx],xmm3
- pmuludq xmm3,xmm7
- movdqa [16+esp],xmm2
- movd xmm1,DWORD [20+esi]
- pshufd xmm0,xmm0,204
- movdqa [64+ebx],xmm0
- pmuludq xmm0,xmm7
- paddq xmm3,xmm5
- movdqa [32+esp],xmm3
- movd xmm2,DWORD [24+esi]
- pshufd xmm1,xmm1,204
- movdqa [80+ebx],xmm1
- pmuludq xmm1,xmm7
- movdqa [48+esp],xmm0
- pshufd xmm4,xmm5,177
- movd xmm3,DWORD [28+esi]
- pshufd xmm2,xmm2,204
- movdqa [96+ebx],xmm2
- pmuludq xmm2,xmm7
- movdqa [64+esp],xmm1
- psubq xmm4,xmm5
- movd xmm0,DWORD [ebp]
- pshufd xmm3,xmm3,204
- movdqa [112+ebx],xmm3
- pmuludq xmm3,xmm7
- pshuflw xmm7,xmm0,220
- movdqa xmm0,[ebx]
- pshufd xmm7,xmm7,220
- mov ecx,6
- lea ebp,[4+ebp]
- jmp NEAR L$001madd_sse2
- align 16
- L$001madd_sse2:
- paddq xmm2,xmm5
- paddq xmm3,xmm4
- movdqa xmm1,[16+ebx]
- pmuludq xmm0,xmm7
- movdqa [80+esp],xmm2
- movdqa xmm2,[32+ebx]
- pmuludq xmm1,xmm7
- movdqa [96+esp],xmm3
- paddq xmm0,[esp]
- movdqa xmm3,[48+ebx]
- pmuludq xmm2,xmm7
- movq xmm4,xmm0
- pslldq xmm4,6
- paddq xmm1,[16+esp]
- paddq xmm4,xmm0
- movdqa xmm5,xmm4
- psrldq xmm4,10
- movdqa xmm0,[64+ebx]
- pmuludq xmm3,xmm7
- paddq xmm1,xmm4
- paddq xmm2,[32+esp]
- movdqa [esp],xmm1
- movdqa xmm1,[80+ebx]
- pmuludq xmm0,xmm7
- paddq xmm3,[48+esp]
- movdqa [16+esp],xmm2
- pand xmm5,xmm6
- movdqa xmm2,[96+ebx]
- pmuludq xmm1,xmm7
- paddq xmm3,xmm5
- paddq xmm0,[64+esp]
- movdqa [32+esp],xmm3
- pshufd xmm4,xmm5,177
- movdqa xmm3,xmm7
- pmuludq xmm2,xmm7
- movd xmm7,DWORD [ebp]
- lea ebp,[4+ebp]
- paddq xmm1,[80+esp]
- psubq xmm4,xmm5
- movdqa [48+esp],xmm0
- pshuflw xmm7,xmm7,220
- pmuludq xmm3,[112+ebx]
- pshufd xmm7,xmm7,220
- movdqa xmm0,[ebx]
- movdqa [64+esp],xmm1
- paddq xmm2,[96+esp]
- dec ecx
- jnz NEAR L$001madd_sse2
- paddq xmm2,xmm5
- paddq xmm3,xmm4
- movdqa xmm1,[16+ebx]
- pmuludq xmm0,xmm7
- movdqa [80+esp],xmm2
- movdqa xmm2,[32+ebx]
- pmuludq xmm1,xmm7
- movdqa [96+esp],xmm3
- paddq xmm0,[esp]
- movdqa xmm3,[48+ebx]
- pmuludq xmm2,xmm7
- movq xmm4,xmm0
- pslldq xmm4,6
- paddq xmm1,[16+esp]
- paddq xmm4,xmm0
- movdqa xmm5,xmm4
- psrldq xmm4,10
- movdqa xmm0,[64+ebx]
- pmuludq xmm3,xmm7
- paddq xmm1,xmm4
- paddq xmm2,[32+esp]
- movdqa [esp],xmm1
- movdqa xmm1,[80+ebx]
- pmuludq xmm0,xmm7
- paddq xmm3,[48+esp]
- movdqa [16+esp],xmm2
- pand xmm5,xmm6
- movdqa xmm2,[96+ebx]
- pmuludq xmm1,xmm7
- paddq xmm3,xmm5
- paddq xmm0,[64+esp]
- movdqa [32+esp],xmm3
- pshufd xmm4,xmm5,177
- movdqa xmm3,[112+ebx]
- pmuludq xmm2,xmm7
- paddq xmm1,[80+esp]
- psubq xmm4,xmm5
- movdqa [48+esp],xmm0
- pmuludq xmm3,xmm7
- pcmpeqd xmm7,xmm7
- movdqa xmm0,[esp]
- pslldq xmm7,8
- movdqa [64+esp],xmm1
- paddq xmm2,[96+esp]
- paddq xmm2,xmm5
- paddq xmm3,xmm4
- movdqa [80+esp],xmm2
- movdqa [96+esp],xmm3
- movdqa xmm1,[16+esp]
- movdqa xmm2,[32+esp]
- movdqa xmm3,[48+esp]
- movq xmm4,xmm0
- pand xmm0,xmm7
- xor ebp,ebp
- pslldq xmm4,6
- movq xmm5,xmm1
- paddq xmm0,xmm4
- pand xmm1,xmm7
- psrldq xmm0,6
- movd eax,xmm0
- psrldq xmm0,4
- paddq xmm5,xmm0
- movdqa xmm0,[64+esp]
- sub eax,-1
- pslldq xmm5,6
- movq xmm4,xmm2
- paddq xmm1,xmm5
- pand xmm2,xmm7
- psrldq xmm1,6
- mov DWORD [edi],eax
- movd eax,xmm1
- psrldq xmm1,4
- paddq xmm4,xmm1
- movdqa xmm1,[80+esp]
- sbb eax,-1
- pslldq xmm4,6
- movq xmm5,xmm3
- paddq xmm2,xmm4
- pand xmm3,xmm7
- psrldq xmm2,6
- mov DWORD [4+edi],eax
- movd eax,xmm2
- psrldq xmm2,4
- paddq xmm5,xmm2
- movdqa xmm2,[96+esp]
- sbb eax,-1
- pslldq xmm5,6
- movq xmm4,xmm0
- paddq xmm3,xmm5
- pand xmm0,xmm7
- psrldq xmm3,6
- mov DWORD [8+edi],eax
- movd eax,xmm3
- psrldq xmm3,4
- paddq xmm4,xmm3
- sbb eax,0
- pslldq xmm4,6
- movq xmm5,xmm1
- paddq xmm0,xmm4
- pand xmm1,xmm7
- psrldq xmm0,6
- mov DWORD [12+edi],eax
- movd eax,xmm0
- psrldq xmm0,4
- paddq xmm5,xmm0
- sbb eax,0
- pslldq xmm5,6
- movq xmm4,xmm2
- paddq xmm1,xmm5
- pand xmm2,xmm7
- psrldq xmm1,6
- movd ebx,xmm1
- psrldq xmm1,4
- mov esp,edx
- paddq xmm4,xmm1
- pslldq xmm4,6
- paddq xmm2,xmm4
- psrldq xmm2,6
- movd ecx,xmm2
- psrldq xmm2,4
- sbb ebx,0
- movd edx,xmm2
- pextrw esi,xmm2,2
- sbb ecx,1
- sbb edx,-1
- sbb esi,0
- sub ebp,esi
- add DWORD [edi],esi
- adc DWORD [4+edi],esi
- adc DWORD [8+edi],esi
- adc DWORD [12+edi],0
- adc eax,0
- adc ebx,0
- mov DWORD [16+edi],eax
- adc ecx,ebp
- mov DWORD [20+edi],ebx
- adc edx,esi
- mov DWORD [24+edi],ecx
- mov DWORD [28+edi],edx
- ret
- global _GFp_nistz256_point_double
- align 16
- _GFp_nistz256_point_double:
- L$_GFp_nistz256_point_double_begin:
- push ebp
- push ebx
- push esi
- push edi
- mov esi,DWORD [24+esp]
- sub esp,164
- call __picup_eax
- L$002pic:
- lea edx,[_GFp_ia32cap_P]
- mov ebp,DWORD [edx]
- L$point_double_shortcut:
- mov eax,DWORD [esi]
- mov ebx,DWORD [4+esi]
- mov ecx,DWORD [8+esi]
- mov edx,DWORD [12+esi]
- mov DWORD [96+esp],eax
- mov DWORD [100+esp],ebx
- mov DWORD [104+esp],ecx
- mov DWORD [108+esp],edx
- mov eax,DWORD [16+esi]
- mov ebx,DWORD [20+esi]
- mov ecx,DWORD [24+esi]
- mov edx,DWORD [28+esi]
- mov DWORD [112+esp],eax
- mov DWORD [116+esp],ebx
- mov DWORD [120+esp],ecx
- mov DWORD [124+esp],edx
- mov DWORD [160+esp],ebp
- lea ebp,[32+esi]
- lea esi,[32+esi]
- lea edi,[esp]
- call __ecp_nistz256_add
- mov eax,DWORD [160+esp]
- mov esi,64
- add esi,DWORD [188+esp]
- lea edi,[64+esp]
- mov ebp,esi
- call __ecp_nistz256_mul_mont
- mov eax,DWORD [160+esp]
- lea esi,[esp]
- lea ebp,[esp]
- lea edi,[esp]
- call __ecp_nistz256_mul_mont
- mov eax,DWORD [160+esp]
- mov ebp,DWORD [188+esp]
- lea esi,[32+ebp]
- lea ebp,[64+ebp]
- lea edi,[128+esp]
- call __ecp_nistz256_mul_mont
- lea esi,[96+esp]
- lea ebp,[64+esp]
- lea edi,[32+esp]
- call __ecp_nistz256_add
- mov edi,64
- lea esi,[128+esp]
- lea ebp,[128+esp]
- add edi,DWORD [184+esp]
- call __ecp_nistz256_add
- lea esi,[96+esp]
- lea ebp,[64+esp]
- lea edi,[64+esp]
- call __ecp_nistz256_sub
- mov eax,DWORD [160+esp]
- lea esi,[esp]
- lea ebp,[esp]
- lea edi,[128+esp]
- call __ecp_nistz256_mul_mont
- mov eax,DWORD [160+esp]
- lea esi,[32+esp]
- lea ebp,[64+esp]
- lea edi,[32+esp]
- call __ecp_nistz256_mul_mont
- mov edi,32
- lea esi,[128+esp]
- add edi,DWORD [184+esp]
- call __ecp_nistz256_div_by_2
- lea esi,[32+esp]
- lea ebp,[32+esp]
- lea edi,[128+esp]
- call __ecp_nistz256_add
- mov eax,DWORD [160+esp]
- lea esi,[96+esp]
- lea ebp,[esp]
- lea edi,[esp]
- call __ecp_nistz256_mul_mont
- lea esi,[128+esp]
- lea ebp,[32+esp]
- lea edi,[32+esp]
- call __ecp_nistz256_add
- lea esi,[esp]
- lea ebp,[esp]
- lea edi,[128+esp]
- call __ecp_nistz256_add
- mov eax,DWORD [160+esp]
- lea esi,[32+esp]
- lea ebp,[32+esp]
- mov edi,DWORD [184+esp]
- call __ecp_nistz256_mul_mont
- mov esi,edi
- lea ebp,[128+esp]
- call __ecp_nistz256_sub
- lea esi,[esp]
- mov ebp,edi
- lea edi,[esp]
- call __ecp_nistz256_sub
- mov eax,DWORD [160+esp]
- mov esi,edi
- lea ebp,[32+esp]
- call __ecp_nistz256_mul_mont
- mov ebp,32
- lea esi,[esp]
- add ebp,DWORD [184+esp]
- mov edi,ebp
- call __ecp_nistz256_sub
- add esp,164
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
- global _GFp_nistz256_point_add_affine
- align 16
- _GFp_nistz256_point_add_affine:
- L$_GFp_nistz256_point_add_affine_begin:
- push ebp
- push ebx
- push esi
- push edi
- mov esi,DWORD [24+esp]
- sub esp,492
- call __picup_eax
- L$003pic:
- lea edx,[_GFp_ia32cap_P]
- mov ebp,DWORD [edx]
- lea edi,[96+esp]
- mov eax,DWORD [esi]
- mov ebx,DWORD [4+esi]
- mov ecx,DWORD [8+esi]
- mov edx,DWORD [12+esi]
- mov DWORD [edi],eax
- mov DWORD [488+esp],ebp
- mov DWORD [4+edi],ebx
- mov DWORD [8+edi],ecx
- mov DWORD [12+edi],edx
- mov eax,DWORD [16+esi]
- mov ebx,DWORD [20+esi]
- mov ecx,DWORD [24+esi]
- mov edx,DWORD [28+esi]
- mov DWORD [16+edi],eax
- mov DWORD [20+edi],ebx
- mov DWORD [24+edi],ecx
- mov DWORD [28+edi],edx
- mov eax,DWORD [32+esi]
- mov ebx,DWORD [36+esi]
- mov ecx,DWORD [40+esi]
- mov edx,DWORD [44+esi]
- mov DWORD [32+edi],eax
- mov DWORD [36+edi],ebx
- mov DWORD [40+edi],ecx
- mov DWORD [44+edi],edx
- mov eax,DWORD [48+esi]
- mov ebx,DWORD [52+esi]
- mov ecx,DWORD [56+esi]
- mov edx,DWORD [60+esi]
- mov DWORD [48+edi],eax
- mov DWORD [52+edi],ebx
- mov DWORD [56+edi],ecx
- mov DWORD [60+edi],edx
- mov eax,DWORD [64+esi]
- mov ebx,DWORD [68+esi]
- mov ecx,DWORD [72+esi]
- mov edx,DWORD [76+esi]
- mov DWORD [64+edi],eax
- mov ebp,eax
- mov DWORD [68+edi],ebx
- or ebp,ebx
- mov DWORD [72+edi],ecx
- or ebp,ecx
- mov DWORD [76+edi],edx
- or ebp,edx
- mov eax,DWORD [80+esi]
- mov ebx,DWORD [84+esi]
- mov ecx,DWORD [88+esi]
- mov edx,DWORD [92+esi]
- mov DWORD [80+edi],eax
- or ebp,eax
- mov DWORD [84+edi],ebx
- or ebp,ebx
- mov DWORD [88+edi],ecx
- or ebp,ecx
- mov DWORD [92+edi],edx
- or ebp,edx
- xor eax,eax
- mov esi,DWORD [520+esp]
- sub eax,ebp
- or ebp,eax
- sar ebp,31
- mov DWORD [480+esp],ebp
- lea edi,[192+esp]
- mov eax,DWORD [esi]
- mov ebx,DWORD [4+esi]
- mov ecx,DWORD [8+esi]
- mov edx,DWORD [12+esi]
- mov DWORD [edi],eax
- mov ebp,eax
- mov DWORD [4+edi],ebx
- or ebp,ebx
- mov DWORD [8+edi],ecx
- or ebp,ecx
- mov DWORD [12+edi],edx
- or ebp,edx
- mov eax,DWORD [16+esi]
- mov ebx,DWORD [20+esi]
- mov ecx,DWORD [24+esi]
- mov edx,DWORD [28+esi]
- mov DWORD [16+edi],eax
- or ebp,eax
- mov DWORD [20+edi],ebx
- or ebp,ebx
- mov DWORD [24+edi],ecx
- or ebp,ecx
- mov DWORD [28+edi],edx
- or ebp,edx
- mov eax,DWORD [32+esi]
- mov ebx,DWORD [36+esi]
- mov ecx,DWORD [40+esi]
- mov edx,DWORD [44+esi]
- mov DWORD [32+edi],eax
- or ebp,eax
- mov DWORD [36+edi],ebx
- or ebp,ebx
- mov DWORD [40+edi],ecx
- or ebp,ecx
- mov DWORD [44+edi],edx
- or ebp,edx
- mov eax,DWORD [48+esi]
- mov ebx,DWORD [52+esi]
- mov ecx,DWORD [56+esi]
- mov edx,DWORD [60+esi]
- mov DWORD [48+edi],eax
- or ebp,eax
- mov DWORD [52+edi],ebx
- or ebp,ebx
- mov DWORD [56+edi],ecx
- or ebp,ecx
- mov DWORD [60+edi],edx
- or ebp,edx
- xor ebx,ebx
- mov eax,DWORD [488+esp]
- sub ebx,ebp
- lea esi,[160+esp]
- or ebx,ebp
- lea ebp,[160+esp]
- sar ebx,31
- lea edi,[288+esp]
- mov DWORD [484+esp],ebx
- call __ecp_nistz256_mul_mont
- mov eax,DWORD [488+esp]
- lea esi,[192+esp]
- mov ebp,edi
- lea edi,[256+esp]
- call __ecp_nistz256_mul_mont
- mov eax,DWORD [488+esp]
- lea esi,[160+esp]
- lea ebp,[288+esp]
- lea edi,[288+esp]
- call __ecp_nistz256_mul_mont
- lea esi,[256+esp]
- lea ebp,[96+esp]
- lea edi,[320+esp]
- call __ecp_nistz256_sub
- mov eax,DWORD [488+esp]
- lea esi,[224+esp]
- lea ebp,[288+esp]
- lea edi,[288+esp]
- call __ecp_nistz256_mul_mont
- mov eax,DWORD [488+esp]
- lea esi,[160+esp]
- lea ebp,[320+esp]
- lea edi,[64+esp]
- call __ecp_nistz256_mul_mont
- lea esi,[288+esp]
- lea ebp,[128+esp]
- lea edi,[352+esp]
- call __ecp_nistz256_sub
- mov eax,DWORD [488+esp]
- lea esi,[320+esp]
- lea ebp,[320+esp]
- lea edi,[384+esp]
- call __ecp_nistz256_mul_mont
- mov eax,DWORD [488+esp]
- lea esi,[352+esp]
- lea ebp,[352+esp]
- lea edi,[448+esp]
- call __ecp_nistz256_mul_mont
- mov eax,DWORD [488+esp]
- lea esi,[96+esp]
- lea ebp,[384+esp]
- lea edi,[256+esp]
- call __ecp_nistz256_mul_mont
- mov eax,DWORD [488+esp]
- lea esi,[320+esp]
- lea ebp,[384+esp]
- lea edi,[416+esp]
- call __ecp_nistz256_mul_mont
- lea esi,[256+esp]
- lea ebp,[256+esp]
- lea edi,[384+esp]
- call __ecp_nistz256_add
- lea esi,[448+esp]
- lea ebp,[384+esp]
- lea edi,[esp]
- call __ecp_nistz256_sub
- lea esi,[esp]
- lea ebp,[416+esp]
- lea edi,[esp]
- call __ecp_nistz256_sub
- lea esi,[256+esp]
- lea ebp,[esp]
- lea edi,[32+esp]
- call __ecp_nistz256_sub
- mov eax,DWORD [488+esp]
- lea esi,[416+esp]
- lea ebp,[128+esp]
- lea edi,[288+esp]
- call __ecp_nistz256_mul_mont
- mov eax,DWORD [488+esp]
- lea esi,[352+esp]
- lea ebp,[32+esp]
- lea edi,[32+esp]
- call __ecp_nistz256_mul_mont
- lea esi,[32+esp]
- lea ebp,[288+esp]
- lea edi,[32+esp]
- call __ecp_nistz256_sub
- mov ebp,DWORD [480+esp]
- mov esi,DWORD [484+esp]
- mov edi,DWORD [512+esp]
- mov edx,ebp
- not ebp
- and edx,esi
- and ebp,esi
- not esi
- mov eax,edx
- and eax,DWORD [64+esp]
- mov ebx,ebp
- and ebx,1
- mov ecx,esi
- and ecx,DWORD [160+esp]
- or eax,ebx
- or eax,ecx
- mov DWORD [64+edi],eax
- mov eax,edx
- and eax,DWORD [68+esp]
- mov ecx,esi
- and ecx,DWORD [164+esp]
- or eax,ecx
- mov DWORD [68+edi],eax
- mov eax,edx
- and eax,DWORD [72+esp]
- mov ecx,esi
- and ecx,DWORD [168+esp]
- or eax,ecx
- mov DWORD [72+edi],eax
- mov eax,edx
- and eax,DWORD [76+esp]
- mov ecx,esi
- and ecx,DWORD [172+esp]
- or eax,ebp
- or eax,ecx
- mov DWORD [76+edi],eax
- mov eax,edx
- and eax,DWORD [80+esp]
- mov ecx,esi
- and ecx,DWORD [176+esp]
- or eax,ebp
- or eax,ecx
- mov DWORD [80+edi],eax
- mov eax,edx
- and eax,DWORD [84+esp]
- mov ecx,esi
- and ecx,DWORD [180+esp]
- or eax,ebp
- or eax,ecx
- mov DWORD [84+edi],eax
- mov eax,edx
- and eax,DWORD [88+esp]
- mov ebx,ebp
- and ebx,-2
- mov ecx,esi
- and ecx,DWORD [184+esp]
- or eax,ebx
- or eax,ecx
- mov DWORD [88+edi],eax
- mov eax,edx
- and eax,DWORD [92+esp]
- mov ecx,esi
- and ecx,DWORD [188+esp]
- or eax,ecx
- mov DWORD [92+edi],eax
- mov eax,edx
- and eax,DWORD [esp]
- mov ebx,ebp
- and ebx,DWORD [192+esp]
- mov ecx,esi
- and ecx,DWORD [96+esp]
- or eax,ebx
- or eax,ecx
- mov DWORD [edi],eax
- mov eax,edx
- and eax,DWORD [4+esp]
- mov ebx,ebp
- and ebx,DWORD [196+esp]
- mov ecx,esi
- and ecx,DWORD [100+esp]
- or eax,ebx
- or eax,ecx
- mov DWORD [4+edi],eax
- mov eax,edx
- and eax,DWORD [8+esp]
- mov ebx,ebp
- and ebx,DWORD [200+esp]
- mov ecx,esi
- and ecx,DWORD [104+esp]
- or eax,ebx
- or eax,ecx
- mov DWORD [8+edi],eax
- mov eax,edx
- and eax,DWORD [12+esp]
- mov ebx,ebp
- and ebx,DWORD [204+esp]
- mov ecx,esi
- and ecx,DWORD [108+esp]
- or eax,ebx
- or eax,ecx
- mov DWORD [12+edi],eax
- mov eax,edx
- and eax,DWORD [16+esp]
- mov ebx,ebp
- and ebx,DWORD [208+esp]
- mov ecx,esi
- and ecx,DWORD [112+esp]
- or eax,ebx
- or eax,ecx
- mov DWORD [16+edi],eax
- mov eax,edx
- and eax,DWORD [20+esp]
- mov ebx,ebp
- and ebx,DWORD [212+esp]
- mov ecx,esi
- and ecx,DWORD [116+esp]
- or eax,ebx
- or eax,ecx
- mov DWORD [20+edi],eax
- mov eax,edx
- and eax,DWORD [24+esp]
- mov ebx,ebp
- and ebx,DWORD [216+esp]
- mov ecx,esi
- and ecx,DWORD [120+esp]
- or eax,ebx
- or eax,ecx
- mov DWORD [24+edi],eax
- mov eax,edx
- and eax,DWORD [28+esp]
- mov ebx,ebp
- and ebx,DWORD [220+esp]
- mov ecx,esi
- and ecx,DWORD [124+esp]
- or eax,ebx
- or eax,ecx
- mov DWORD [28+edi],eax
- mov eax,edx
- and eax,DWORD [32+esp]
- mov ebx,ebp
- and ebx,DWORD [224+esp]
- mov ecx,esi
- and ecx,DWORD [128+esp]
- or eax,ebx
- or eax,ecx
- mov DWORD [32+edi],eax
- mov eax,edx
- and eax,DWORD [36+esp]
- mov ebx,ebp
- and ebx,DWORD [228+esp]
- mov ecx,esi
- and ecx,DWORD [132+esp]
- or eax,ebx
- or eax,ecx
- mov DWORD [36+edi],eax
- mov eax,edx
- and eax,DWORD [40+esp]
- mov ebx,ebp
- and ebx,DWORD [232+esp]
- mov ecx,esi
- and ecx,DWORD [136+esp]
- or eax,ebx
- or eax,ecx
- mov DWORD [40+edi],eax
- mov eax,edx
- and eax,DWORD [44+esp]
- mov ebx,ebp
- and ebx,DWORD [236+esp]
- mov ecx,esi
- and ecx,DWORD [140+esp]
- or eax,ebx
- or eax,ecx
- mov DWORD [44+edi],eax
- mov eax,edx
- and eax,DWORD [48+esp]
- mov ebx,ebp
- and ebx,DWORD [240+esp]
- mov ecx,esi
- and ecx,DWORD [144+esp]
- or eax,ebx
- or eax,ecx
- mov DWORD [48+edi],eax
- mov eax,edx
- and eax,DWORD [52+esp]
- mov ebx,ebp
- and ebx,DWORD [244+esp]
- mov ecx,esi
- and ecx,DWORD [148+esp]
- or eax,ebx
- or eax,ecx
- mov DWORD [52+edi],eax
- mov eax,edx
- and eax,DWORD [56+esp]
- mov ebx,ebp
- and ebx,DWORD [248+esp]
- mov ecx,esi
- and ecx,DWORD [152+esp]
- or eax,ebx
- or eax,ecx
- mov DWORD [56+edi],eax
- mov eax,edx
- and eax,DWORD [60+esp]
- mov ebx,ebp
- and ebx,DWORD [252+esp]
- mov ecx,esi
- and ecx,DWORD [156+esp]
- or eax,ebx
- or eax,ecx
- mov DWORD [60+edi],eax
- add esp,492
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
- segment .bss
- common _GFp_ia32cap_P 16
|