ge_p2_dbl.q (625B)
1 :name:fe:r->X:r->Y:r->Z:r->T:t0:t1:t2:t3:t4:t5:p->X:p->Y:p->Z: 2 fe r:var/r=fe: 3 4 enter f:enter/f:>X1=fe#11:>Y1=fe#12:>Z1=fe#13: 5 return:nofallthrough:<X3=fe#1:<Y3=fe#2:<Z3=fe#3:<T3=fe#4:leave: 6 7 h=f+g:<f=fe:<g=fe:>h=fe:asm/fe_add(>h,<f,<g);: 8 h=f-g:<f=fe:<g=fe:>h=fe:asm/fe_sub(>h,<f,<g);: 9 h=f*g:<f=fe:<g=fe:>h=fe:asm/fe_mul(>h,<f,<g);: 10 h=f^2:<f=fe:>h=fe:asm/fe_sq(>h,<f);: 11 h=2*f^2:<f=fe:>h=fe:asm/fe_sq2(>h,<f);: 12 h=2*g:<g=fe:>h=fe:asm/fe_add(>h,<g,<g);: 13 14 : 15 16 enter ge_p2_dbl 17 18 fe X1 19 fe Y1 20 fe Z1 21 fe A 22 fe AA 23 fe XX 24 fe YY 25 fe B 26 fe X3 27 fe Y3 28 fe Z3 29 fe T3 30 31 XX=X1^2 32 YY=Y1^2 33 B=2*Z1^2 34 A=X1+Y1 35 AA=A^2 36 Y3=YY+XX 37 Z3=YY-XX 38 X3=AA-Y3 39 T3=B-Z3 40 41 return