@@ -502,11 +502,11 @@ SECP256K1_INLINE static void secp256k1_fe_mul_inner(uint32_t *r, const uint32_t
502
502
uint64_t u1 = d & M ; d >>= 26 ; c += u1 * R0 ;
503
503
VERIFY_BITS (u1 , 26 );
504
504
VERIFY_BITS (d , 37 );
505
- VERIFY_BITS (c , 63 );
505
+ VERIFY_BITS (c , 62 );
506
506
/* [d u1 0 t9 0 0 0 0 0 0 0 c-u1*R0 t0] = [p11 p10 p9 0 0 0 0 0 0 0 p1 p0] */
507
507
uint32_t t1 = c & M ; c >>= 26 ; c += u1 * R1 ;
508
508
VERIFY_BITS (t1 , 26 );
509
- VERIFY_BITS (c , 38 );
509
+ VERIFY_BITS (c , 37 );
510
510
/* [d u1 0 t9 0 0 0 0 0 0 c-u1*R1 t1-u1*R0 t0] = [p11 p10 p9 0 0 0 0 0 0 0 p1 p0] */
511
511
/* [d 0 0 t9 0 0 0 0 0 0 c t1 t0] = [p11 p10 p9 0 0 0 0 0 0 0 p1 p0] */
512
512
@@ -527,11 +527,11 @@ SECP256K1_INLINE static void secp256k1_fe_mul_inner(uint32_t *r, const uint32_t
527
527
uint64_t u2 = d & M ; d >>= 26 ; c += u2 * R0 ;
528
528
VERIFY_BITS (u2 , 26 );
529
529
VERIFY_BITS (d , 37 );
530
- VERIFY_BITS (c , 63 );
530
+ VERIFY_BITS (c , 62 );
531
531
/* [d u2 0 0 t9 0 0 0 0 0 0 c-u2*R0 t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */
532
532
uint32_t t2 = c & M ; c >>= 26 ; c += u2 * R1 ;
533
533
VERIFY_BITS (t2 , 26 );
534
- VERIFY_BITS (c , 38 );
534
+ VERIFY_BITS (c , 37 );
535
535
/* [d u2 0 0 t9 0 0 0 0 0 c-u2*R1 t2-u2*R0 t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */
536
536
/* [d 0 0 0 t9 0 0 0 0 0 c t2 t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */
537
537
@@ -552,11 +552,11 @@ SECP256K1_INLINE static void secp256k1_fe_mul_inner(uint32_t *r, const uint32_t
552
552
uint64_t u3 = d & M ; d >>= 26 ; c += u3 * R0 ;
553
553
VERIFY_BITS (u3 , 26 );
554
554
VERIFY_BITS (d , 37 );
555
- /* VERIFY_BITS(c, 64); */
555
+ VERIFY_BITS (c , 63 );
556
556
/* [d u3 0 0 0 t9 0 0 0 0 0 c-u3*R0 t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */
557
557
uint32_t t3 = c & M ; c >>= 26 ; c += u3 * R1 ;
558
558
VERIFY_BITS (t3 , 26 );
559
- VERIFY_BITS (c , 39 );
559
+ VERIFY_BITS (c , 38 );
560
560
/* [d u3 0 0 0 t9 0 0 0 0 c-u3*R1 t3-u3*R0 t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */
561
561
/* [d 0 0 0 0 t9 0 0 0 0 c t3 t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */
562
562
@@ -577,11 +577,11 @@ SECP256K1_INLINE static void secp256k1_fe_mul_inner(uint32_t *r, const uint32_t
577
577
uint64_t u4 = d & M ; d >>= 26 ; c += u4 * R0 ;
578
578
VERIFY_BITS (u4 , 26 );
579
579
VERIFY_BITS (d , 36 );
580
- /* VERIFY_BITS(c, 64); */
580
+ VERIFY_BITS (c , 63 );
581
581
/* [d u4 0 0 0 0 t9 0 0 0 0 c-u4*R0 t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */
582
582
uint32_t t4 = c & M ; c >>= 26 ; c += u4 * R1 ;
583
583
VERIFY_BITS (t4 , 26 );
584
- VERIFY_BITS (c , 39 );
584
+ VERIFY_BITS (c , 38 );
585
585
/* [d u4 0 0 0 0 t9 0 0 0 c-u4*R1 t4-u4*R0 t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */
586
586
/* [d 0 0 0 0 0 t9 0 0 0 c t4 t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */
587
587
@@ -602,11 +602,11 @@ SECP256K1_INLINE static void secp256k1_fe_mul_inner(uint32_t *r, const uint32_t
602
602
uint64_t u5 = d & M ; d >>= 26 ; c += u5 * R0 ;
603
603
VERIFY_BITS (u5 , 26 );
604
604
VERIFY_BITS (d , 36 );
605
- /* VERIFY_BITS(c, 64); */
605
+ VERIFY_BITS (c , 63 );
606
606
/* [d u5 0 0 0 0 0 t9 0 0 0 c-u5*R0 t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */
607
607
uint32_t t5 = c & M ; c >>= 26 ; c += u5 * R1 ;
608
608
VERIFY_BITS (t5 , 26 );
609
- VERIFY_BITS (c , 39 );
609
+ VERIFY_BITS (c , 38 );
610
610
/* [d u5 0 0 0 0 0 t9 0 0 c-u5*R1 t5-u5*R0 t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */
611
611
/* [d 0 0 0 0 0 0 t9 0 0 c t5 t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */
612
612
@@ -627,11 +627,11 @@ SECP256K1_INLINE static void secp256k1_fe_mul_inner(uint32_t *r, const uint32_t
627
627
uint64_t u6 = d & M ; d >>= 26 ; c += u6 * R0 ;
628
628
VERIFY_BITS (u6 , 26 );
629
629
VERIFY_BITS (d , 35 );
630
- /* VERIFY_BITS(c, 64); */
630
+ VERIFY_BITS (c , 63 );
631
631
/* [d u6 0 0 0 0 0 0 t9 0 0 c-u6*R0 t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */
632
632
uint32_t t6 = c & M ; c >>= 26 ; c += u6 * R1 ;
633
633
VERIFY_BITS (t6 , 26 );
634
- VERIFY_BITS (c , 39 );
634
+ VERIFY_BITS (c , 38 );
635
635
/* [d u6 0 0 0 0 0 0 t9 0 c-u6*R1 t6-u6*R0 t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */
636
636
/* [d 0 0 0 0 0 0 0 t9 0 c t6 t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */
637
637
@@ -644,7 +644,7 @@ SECP256K1_INLINE static void secp256k1_fe_mul_inner(uint32_t *r, const uint32_t
644
644
+ (uint64_t )a [6 ] * b [1 ]
645
645
+ (uint64_t )a [7 ] * b [0 ];
646
646
/* VERIFY_BITS(c, 64); */
647
- VERIFY_CHECK (c <= 0x8000007C00000007ULL );
647
+ VERIFY_CHECK (c <= 0x8000003C00000007ULL );
648
648
/* [d 0 0 0 0 0 0 0 t9 0 c t6 t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 p7 p6 p5 p4 p3 p2 p1 p0] */
649
649
d += (uint64_t )a [8 ] * b [9 ]
650
650
+ (uint64_t )a [9 ] * b [8 ];
@@ -654,7 +654,7 @@ SECP256K1_INLINE static void secp256k1_fe_mul_inner(uint32_t *r, const uint32_t
654
654
VERIFY_BITS (u7 , 26 );
655
655
VERIFY_BITS (d , 32 );
656
656
/* VERIFY_BITS(c, 64); */
657
- VERIFY_CHECK (c <= 0x800001703FFFC2F7ULL );
657
+ VERIFY_CHECK (c <= 0x800001303FFFC2F7ULL );
658
658
/* [d u7 0 0 0 0 0 0 0 t9 0 c-u7*R0 t6 t5 t4 t3 t2 t1 t0] = [p17 p16 p15 p14 p13 p12 p11 p10 p9 0 p7 p6 p5 p4 p3 p2 p1 p0] */
659
659
uint32_t t7 = c & M ; c >>= 26 ; c += u7 * R1 ;
660
660
VERIFY_BITS (t7 , 26 );
@@ -672,16 +672,16 @@ SECP256K1_INLINE static void secp256k1_fe_mul_inner(uint32_t *r, const uint32_t
672
672
+ (uint64_t )a [7 ] * b [1 ]
673
673
+ (uint64_t )a [8 ] * b [0 ];
674
674
/* VERIFY_BITS(c, 64); */
675
- VERIFY_CHECK (c <= 0x9000007B80000008ULL );
675
+ VERIFY_CHECK (c <= 0x9000003B80000008ULL );
676
676
/* [d 0 0 0 0 0 0 0 0 t9 c t7 t6 t5 t4 t3 t2 t1 t0] = [p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
677
677
d += (uint64_t )a [9 ] * b [9 ];
678
- VERIFY_BITS (d , 57 );
678
+ VERIFY_BITS (d , 53 );
679
679
/* [d 0 0 0 0 0 0 0 0 t9 c t7 t6 t5 t4 t3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
680
680
uint64_t u8 = d & M ; d >>= 26 ; c += u8 * R0 ;
681
681
VERIFY_BITS (u8 , 26 );
682
- VERIFY_BITS (d , 31 );
682
+ VERIFY_BITS (d , 27 );
683
683
/* VERIFY_BITS(c, 64); */
684
- VERIFY_CHECK (c <= 0x9000016FBFFFC2F8ULL );
684
+ VERIFY_CHECK (c <= 0x9000012FBFFFC2F8ULL );
685
685
/* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 t7 t6 t5 t4 t3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
686
686
687
687
r [3 ] = t3 ;
@@ -702,35 +702,35 @@ SECP256K1_INLINE static void secp256k1_fe_mul_inner(uint32_t *r, const uint32_t
702
702
703
703
r [8 ] = c & M ; c >>= 26 ; c += u8 * R1 ;
704
704
VERIFY_BITS (r [8 ], 26 );
705
- VERIFY_BITS (c , 39 );
705
+ VERIFY_BITS (c , 38 );
706
706
/* [d u8 0 0 0 0 0 0 0 0 t9+c-u8*R1 r8-u8*R0 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
707
707
/* [d 0 0 0 0 0 0 0 0 0 t9+c r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
708
708
c += d * R0 + t9 ;
709
- VERIFY_BITS (c , 45 );
709
+ VERIFY_BITS (c , 42 );
710
710
/* [d 0 0 0 0 0 0 0 0 0 c-d*R0 r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
711
711
r [9 ] = c & (M >> 4 ); c >>= 22 ; c += d * (R1 << 4 );
712
712
VERIFY_BITS (r [9 ], 22 );
713
- VERIFY_BITS (c , 46 );
713
+ VERIFY_BITS (c , 42 );
714
714
/* [d 0 0 0 0 0 0 0 0 r9+((c-d*R1<<4)<<22)-d*R0 r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
715
715
/* [d 0 0 0 0 0 0 0 -d*R1 r9+(c<<22)-d*R0 r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
716
716
/* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
717
717
718
718
d = c * (R0 >> 4 ) + t0 ;
719
- VERIFY_BITS (d , 56 );
719
+ VERIFY_BITS (d , 52 );
720
720
/* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 t1 d-c*R0>>4] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
721
721
r [0 ] = d & M ; d >>= 26 ;
722
722
VERIFY_BITS (r [0 ], 26 );
723
- VERIFY_BITS (d , 30 );
723
+ VERIFY_BITS (d , 26 );
724
724
/* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 t1+d r0-c*R0>>4] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
725
725
d += c * (R1 >> 4 ) + t1 ;
726
- VERIFY_BITS (d , 53 );
727
- VERIFY_CHECK (d <= 0x10000003FFFFBFULL );
726
+ VERIFY_BITS (d , 49 );
727
+ VERIFY_CHECK (d <= 0x1000007D0FFBFULL );
728
728
/* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 d-c*R1>>4 r0-c*R0>>4] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
729
729
/* [r9 r8 r7 r6 r5 r4 r3 t2 d r0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
730
730
r [1 ] = d & M ; d >>= 26 ;
731
731
VERIFY_BITS (r [1 ], 26 );
732
- VERIFY_BITS (d , 27 );
733
- VERIFY_CHECK (d <= 0x4000000ULL );
732
+ VERIFY_BITS (d , 23 );
733
+ VERIFY_CHECK (d <= 0x400001ULL );
734
734
/* [r9 r8 r7 r6 r5 r4 r3 t2+d r1 r0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
735
735
d += t2 ;
736
736
VERIFY_BITS (d , 27 );
@@ -826,11 +826,11 @@ SECP256K1_INLINE static void secp256k1_fe_sqr_inner(uint32_t *r, const uint32_t
826
826
uint64_t u2 = d & M ; d >>= 26 ; c += u2 * R0 ;
827
827
VERIFY_BITS (u2 , 26 );
828
828
VERIFY_BITS (d , 37 );
829
- VERIFY_BITS (c , 63 );
829
+ VERIFY_BITS (c , 62 );
830
830
/* [d u2 0 0 t9 0 0 0 0 0 0 c-u2*R0 t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */
831
831
uint32_t t2 = c & M ; c >>= 26 ; c += u2 * R1 ;
832
832
VERIFY_BITS (t2 , 26 );
833
- VERIFY_BITS (c , 38 );
833
+ VERIFY_BITS (c , 37 );
834
834
/* [d u2 0 0 t9 0 0 0 0 0 c-u2*R1 t2-u2*R0 t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */
835
835
/* [d 0 0 0 t9 0 0 0 0 0 c t2 t1 t0] = [p12 p11 p10 p9 0 0 0 0 0 0 p2 p1 p0] */
836
836
@@ -846,11 +846,11 @@ SECP256K1_INLINE static void secp256k1_fe_sqr_inner(uint32_t *r, const uint32_t
846
846
uint64_t u3 = d & M ; d >>= 26 ; c += u3 * R0 ;
847
847
VERIFY_BITS (u3 , 26 );
848
848
VERIFY_BITS (d , 37 );
849
- /* VERIFY_BITS(c, 64); */
849
+ VERIFY_BITS (c , 63 );
850
850
/* [d u3 0 0 0 t9 0 0 0 0 0 c-u3*R0 t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */
851
851
uint32_t t3 = c & M ; c >>= 26 ; c += u3 * R1 ;
852
852
VERIFY_BITS (t3 , 26 );
853
- VERIFY_BITS (c , 39 );
853
+ VERIFY_BITS (c , 38 );
854
854
/* [d u3 0 0 0 t9 0 0 0 0 c-u3*R1 t3-u3*R0 t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */
855
855
/* [d 0 0 0 0 t9 0 0 0 0 c t3 t2 t1 t0] = [p13 p12 p11 p10 p9 0 0 0 0 0 p3 p2 p1 p0] */
856
856
@@ -867,11 +867,11 @@ SECP256K1_INLINE static void secp256k1_fe_sqr_inner(uint32_t *r, const uint32_t
867
867
uint64_t u4 = d & M ; d >>= 26 ; c += u4 * R0 ;
868
868
VERIFY_BITS (u4 , 26 );
869
869
VERIFY_BITS (d , 36 );
870
- /* VERIFY_BITS(c, 64); */
870
+ VERIFY_BITS (c , 63 );
871
871
/* [d u4 0 0 0 0 t9 0 0 0 0 c-u4*R0 t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */
872
872
uint32_t t4 = c & M ; c >>= 26 ; c += u4 * R1 ;
873
873
VERIFY_BITS (t4 , 26 );
874
- VERIFY_BITS (c , 39 );
874
+ VERIFY_BITS (c , 38 );
875
875
/* [d u4 0 0 0 0 t9 0 0 0 c-u4*R1 t4-u4*R0 t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */
876
876
/* [d 0 0 0 0 0 t9 0 0 0 c t4 t3 t2 t1 t0] = [p14 p13 p12 p11 p10 p9 0 0 0 0 p4 p3 p2 p1 p0] */
877
877
@@ -887,11 +887,11 @@ SECP256K1_INLINE static void secp256k1_fe_sqr_inner(uint32_t *r, const uint32_t
887
887
uint64_t u5 = d & M ; d >>= 26 ; c += u5 * R0 ;
888
888
VERIFY_BITS (u5 , 26 );
889
889
VERIFY_BITS (d , 36 );
890
- /* VERIFY_BITS(c, 64); */
890
+ VERIFY_BITS (c , 63 );
891
891
/* [d u5 0 0 0 0 0 t9 0 0 0 c-u5*R0 t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */
892
892
uint32_t t5 = c & M ; c >>= 26 ; c += u5 * R1 ;
893
893
VERIFY_BITS (t5 , 26 );
894
- VERIFY_BITS (c , 39 );
894
+ VERIFY_BITS (c , 38 );
895
895
/* [d u5 0 0 0 0 0 t9 0 0 c-u5*R1 t5-u5*R0 t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */
896
896
/* [d 0 0 0 0 0 0 t9 0 0 c t5 t4 t3 t2 t1 t0] = [p15 p14 p13 p12 p11 p10 p9 0 0 0 p5 p4 p3 p2 p1 p0] */
897
897
@@ -908,11 +908,11 @@ SECP256K1_INLINE static void secp256k1_fe_sqr_inner(uint32_t *r, const uint32_t
908
908
uint64_t u6 = d & M ; d >>= 26 ; c += u6 * R0 ;
909
909
VERIFY_BITS (u6 , 26 );
910
910
VERIFY_BITS (d , 35 );
911
- /* VERIFY_BITS(c, 64); */
911
+ VERIFY_BITS (c , 63 );
912
912
/* [d u6 0 0 0 0 0 0 t9 0 0 c-u6*R0 t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */
913
913
uint32_t t6 = c & M ; c >>= 26 ; c += u6 * R1 ;
914
914
VERIFY_BITS (t6 , 26 );
915
- VERIFY_BITS (c , 39 );
915
+ VERIFY_BITS (c , 38 );
916
916
/* [d u6 0 0 0 0 0 0 t9 0 c-u6*R1 t6-u6*R0 t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */
917
917
/* [d 0 0 0 0 0 0 0 t9 0 c t6 t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 0 p6 p5 p4 p3 p2 p1 p0] */
918
918
@@ -921,7 +921,7 @@ SECP256K1_INLINE static void secp256k1_fe_sqr_inner(uint32_t *r, const uint32_t
921
921
+ (uint64_t )(a [2 ]* 2 ) * a [5 ]
922
922
+ (uint64_t )(a [3 ]* 2 ) * a [4 ];
923
923
/* VERIFY_BITS(c, 64); */
924
- VERIFY_CHECK (c <= 0x8000007C00000007ULL );
924
+ VERIFY_CHECK (c <= 0x8000003C00000007ULL );
925
925
/* [d 0 0 0 0 0 0 0 t9 0 c t6 t5 t4 t3 t2 t1 t0] = [p16 p15 p14 p13 p12 p11 p10 p9 0 p7 p6 p5 p4 p3 p2 p1 p0] */
926
926
d += (uint64_t )(a [8 ]* 2 ) * a [9 ];
927
927
VERIFY_BITS (d , 58 );
@@ -930,7 +930,7 @@ SECP256K1_INLINE static void secp256k1_fe_sqr_inner(uint32_t *r, const uint32_t
930
930
VERIFY_BITS (u7 , 26 );
931
931
VERIFY_BITS (d , 32 );
932
932
/* VERIFY_BITS(c, 64); */
933
- VERIFY_CHECK (c <= 0x800001703FFFC2F7ULL );
933
+ VERIFY_CHECK (c <= 0x800001303FFFC2F7ULL );
934
934
/* [d u7 0 0 0 0 0 0 0 t9 0 c-u7*R0 t6 t5 t4 t3 t2 t1 t0] = [p17 p16 p15 p14 p13 p12 p11 p10 p9 0 p7 p6 p5 p4 p3 p2 p1 p0] */
935
935
uint32_t t7 = c & M ; c >>= 26 ; c += u7 * R1 ;
936
936
VERIFY_BITS (t7 , 26 );
@@ -944,16 +944,16 @@ SECP256K1_INLINE static void secp256k1_fe_sqr_inner(uint32_t *r, const uint32_t
944
944
+ (uint64_t )(a [3 ]* 2 ) * a [5 ]
945
945
+ (uint64_t )a [4 ] * a [4 ];
946
946
/* VERIFY_BITS(c, 64); */
947
- VERIFY_CHECK (c <= 0x9000007B80000008ULL );
947
+ VERIFY_CHECK (c <= 0x9000003B80000008ULL );
948
948
/* [d 0 0 0 0 0 0 0 0 t9 c t7 t6 t5 t4 t3 t2 t1 t0] = [p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
949
949
d += (uint64_t )a [9 ] * a [9 ];
950
- VERIFY_BITS (d , 57 );
950
+ VERIFY_BITS (d , 53 );
951
951
/* [d 0 0 0 0 0 0 0 0 t9 c t7 t6 t5 t4 t3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
952
952
uint64_t u8 = d & M ; d >>= 26 ; c += u8 * R0 ;
953
953
VERIFY_BITS (u8 , 26 );
954
- VERIFY_BITS (d , 31 );
954
+ VERIFY_BITS (d , 27 );
955
955
/* VERIFY_BITS(c, 64); */
956
- VERIFY_CHECK (c <= 0x9000016FBFFFC2F8ULL );
956
+ VERIFY_CHECK (c <= 0x9000012FBFFFC2F8ULL );
957
957
/* [d u8 0 0 0 0 0 0 0 0 t9 c-u8*R0 t7 t6 t5 t4 t3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
958
958
959
959
r [3 ] = t3 ;
@@ -974,35 +974,35 @@ SECP256K1_INLINE static void secp256k1_fe_sqr_inner(uint32_t *r, const uint32_t
974
974
975
975
r [8 ] = c & M ; c >>= 26 ; c += u8 * R1 ;
976
976
VERIFY_BITS (r [8 ], 26 );
977
- VERIFY_BITS (c , 39 );
977
+ VERIFY_BITS (c , 38 );
978
978
/* [d u8 0 0 0 0 0 0 0 0 t9+c-u8*R1 r8-u8*R0 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
979
979
/* [d 0 0 0 0 0 0 0 0 0 t9+c r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
980
980
c += d * R0 + t9 ;
981
- VERIFY_BITS (c , 45 );
981
+ VERIFY_BITS (c , 42 );
982
982
/* [d 0 0 0 0 0 0 0 0 0 c-d*R0 r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
983
983
r [9 ] = c & (M >> 4 ); c >>= 22 ; c += d * (R1 << 4 );
984
984
VERIFY_BITS (r [9 ], 22 );
985
- VERIFY_BITS (c , 46 );
985
+ VERIFY_BITS (c , 42 );
986
986
/* [d 0 0 0 0 0 0 0 0 r9+((c-d*R1<<4)<<22)-d*R0 r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
987
987
/* [d 0 0 0 0 0 0 0 -d*R1 r9+(c<<22)-d*R0 r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
988
988
/* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 t1 t0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
989
989
990
990
d = c * (R0 >> 4 ) + t0 ;
991
- VERIFY_BITS (d , 56 );
991
+ VERIFY_BITS (d , 52 );
992
992
/* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 t1 d-c*R0>>4] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
993
993
r [0 ] = d & M ; d >>= 26 ;
994
994
VERIFY_BITS (r [0 ], 26 );
995
- VERIFY_BITS (d , 30 );
995
+ VERIFY_BITS (d , 26 );
996
996
/* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 t1+d r0-c*R0>>4] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
997
997
d += c * (R1 >> 4 ) + t1 ;
998
- VERIFY_BITS (d , 53 );
999
- VERIFY_CHECK (d <= 0x10000003FFFFBFULL );
998
+ VERIFY_BITS (d , 49 );
999
+ VERIFY_CHECK (d <= 0x1000007D0FFBFULL );
1000
1000
/* [r9+(c<<22) r8 r7 r6 r5 r4 r3 t2 d-c*R1>>4 r0-c*R0>>4] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
1001
1001
/* [r9 r8 r7 r6 r5 r4 r3 t2 d r0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
1002
1002
r [1 ] = d & M ; d >>= 26 ;
1003
1003
VERIFY_BITS (r [1 ], 26 );
1004
- VERIFY_BITS (d , 27 );
1005
- VERIFY_CHECK (d <= 0x4000000ULL );
1004
+ VERIFY_BITS (d , 23 );
1005
+ VERIFY_CHECK (d <= 0x400001ULL );
1006
1006
/* [r9 r8 r7 r6 r5 r4 r3 t2+d r1 r0] = [p18 p17 p16 p15 p14 p13 p12 p11 p10 p9 p8 p7 p6 p5 p4 p3 p2 p1 p0] */
1007
1007
d += t2 ;
1008
1008
VERIFY_BITS (d , 27 );
0 commit comments