| ; 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 |
| $@feat.00 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 |