; 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 %ifdef __YASM_VERSION_ID__ %if __YASM_VERSION_ID__ < 01010000h %error yasm version 1.1.0 or later needed. %endif ; Yasm automatically includes .00 and complains about redefining it. ; https://www.tortall.net/projects/yasm/manual/html/objfmt-win32-safeseh.html %else $@feat.00 equ 1 %endif 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