ge_add.q (773B)
1 :name:fe:r->X:r->Y:r->Z:r->T:t0:t1:t2:t3:t4:t5:p->X:p->Y:p->Z:p->T:q->YplusX:q->YminusX:q->Z:q->T2d: 2 fe r:var/r=fe: 3 4 enter f:enter/f:>X1=fe#11:>Y1=fe#12:>Z1=fe#13:>T1=fe#14:>YpX2=fe#15:>YmX2=fe#16:>Z2=fe#17:>T2d2=fe#18: 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*g:<g=fe:>h=fe:asm/fe_add(>h,<g,<g);: 12 13 : 14 15 enter ge_add 16 17 fe X1 18 fe Y1 19 fe Z1 20 fe Z2 21 fe T1 22 fe ZZ 23 fe YpX2 24 fe YmX2 25 fe T2d2 26 fe X3 27 fe Y3 28 fe Z3 29 fe T3 30 fe YpX1 31 fe YmX1 32 fe A 33 fe B 34 fe C 35 fe D 36 37 YpX1 = Y1+X1 38 YmX1 = Y1-X1 39 A = YpX1*YpX2 40 B = YmX1*YmX2 41 C = T2d2*T1 42 ZZ = Z1*Z2 43 D = 2*ZZ 44 X3 = A-B 45 Y3 = A+B 46 Z3 = D+C 47 T3 = D-C 48 49 return