diff --git a/library/ecp.c b/library/ecp.c
index 2fe456f..574b181 100644
--- a/library/ecp.c
+++ b/library/ecp.c
@@ -109,11 +109,11 @@
  */
 int ecp_copy( ecp_point *P, const ecp_point *Q )
 {
-    int ret = 0;
+    int ret;
 
     if( Q->is_zero ) {
         ecp_set_zero( P );
-        return( ret );
+        return( 0 );
     }
 
     P->is_zero = Q->is_zero;
@@ -130,7 +130,7 @@
 int ecp_point_read_string( ecp_point *P, int radix,
                            const char *x, const char *y )
 {
-    int ret = 0;
+    int ret;
 
     P->is_zero = 0;
     MPI_CHK( mpi_read_string( &P->X, radix, x ) );
@@ -147,7 +147,7 @@
                            const char *p, const char *b,
                            const char *gx, const char *gy, const char *n)
 {
-    int ret = 0;
+    int ret;
 
     MPI_CHK( mpi_read_string( &grp->P, radix, p ) );
     MPI_CHK( mpi_read_string( &grp->B, radix, b ) );
@@ -159,15 +159,11 @@
 }
 
 /*
- * Wrapper around fast quasi-modp functions, with fallback to mpi_mod_mpi
- *
- * The quasi-modp functions expect an mpi N such that 0 <= N < 2^(2*pbits)
- * and change it in-place so that it can easily be brought in the 0..P-1
- * range by a few additions or substractions.
+ * Wrapper around fast quasi-modp functions, with fall-back to mpi_mod_mpi
  */
 static int ecp_modp( mpi *N, const ecp_group *grp )
 {
-    int ret = 0;
+    int ret;
 
     if( grp->modp == NULL )
         return( mpi_mod_mpi( N, N, &grp->P ) );
@@ -206,7 +202,7 @@
  */
 static int ecp_mod_p521( mpi *N )
 {
-    int ret = 0;
+    int ret;
     t_uint Mp[P521_SIZE_INT];
     mpi M;
 
@@ -353,13 +349,13 @@
 }
 
 /*
- * Fast mod-p functions expect an argument in the 0 .. p^2 range.
+ * Fast mod-p functions expect their argument to be in the 0..p^2 range.
  *
- * In order to garantee that, we need to ensure that operands of
- * mpi_mul_mpi are in the 0 .. p range. So, after each operation we will
+ * In order to guarantee that, we need to ensure that operands of
+ * mpi_mul_mpi are in the 0..p range. So, after each operation we will
  * bring the result back to this range.
  *
- * The following macros are helpers for that.
+ * The following macros are shortcuts for doing that.
  */
 
 /*
@@ -412,7 +408,7 @@
  */
 static int ecp_ptjac_copy( ecp_ptjac *R, const ecp_ptjac *P )
 {
-    int ret = 0;
+    int ret;
 
     MPI_CHK( mpi_copy( &R->X, &P->X ) );
     MPI_CHK( mpi_copy( &R->Y, &P->Y ) );
@@ -427,7 +423,7 @@
  */
 static int ecp_ptjac_set_zero( ecp_ptjac *P )
 {
-    int ret = 0;
+    int ret;
 
     MPI_CHK( mpi_lset( &P->X, 1 ) );
     MPI_CHK( mpi_lset( &P->Y, 1 ) );
@@ -442,7 +438,7 @@
  */
 static int ecp_aff_to_jac( ecp_ptjac *jac, const ecp_point *aff )
 {
-    int ret = 0;
+    int ret;
 
     if( aff->is_zero )
         return( ecp_ptjac_set_zero( jac ) );
@@ -461,7 +457,7 @@
 static int ecp_jac_to_aff( const ecp_group *grp,
                            ecp_point *aff, const ecp_ptjac *jac )
 {
-    int ret = 0;
+    int ret;
     mpi Zi, ZZi, T;
 
     if( mpi_cmp_int( &jac->Z, 0 ) == 0 ) {
@@ -499,7 +495,7 @@
 static int ecp_double_jac( const ecp_group *grp, ecp_ptjac *R,
                            const ecp_ptjac *P )
 {
-    int ret = 0;
+    int ret;
     mpi T1, T2, T3, X, Y, Z;
 
     if( mpi_cmp_int( &P->Z, 0 ) == 0 )
@@ -508,17 +504,16 @@
     mpi_init( &T1 ); mpi_init( &T2 ); mpi_init( &T3 );
     mpi_init( &X ); mpi_init( &Y ); mpi_init( &Z );
 
-    MPI_CHK( mpi_mul_mpi( &T1,  &P->Z,  &P->Z ) ); MOD_MUL( T1 );
-    MPI_CHK( mpi_sub_mpi( &T2,  &P->X,  &T1   ) ); MOD_SUB( T2 );
-    MPI_CHK( mpi_add_mpi( &T1,  &P->X,  &T1   ) ); MOD_ADD( T1 );
-    MPI_CHK( mpi_mul_mpi( &T2,  &T2,    &T1   ) ); MOD_MUL( T2 );
-    MPI_CHK( mpi_mul_int( &T2,  &T2,    3     ) ); MOD_ADD( T2 );
-    MPI_CHK( mpi_copy   ( &Y,   &P->Y         ) );
-    MPI_CHK( mpi_shift_l( &Y,   1             ) ); MOD_ADD( Y  );
-    MPI_CHK( mpi_mul_mpi( &Z,   &Y,     &P->Z ) ); MOD_MUL( Z  );
-    MPI_CHK( mpi_mul_mpi( &Y,   &Y,     &Y    ) ); MOD_MUL( Y  );
-    MPI_CHK( mpi_mul_mpi( &T3,  &Y,     &P->X ) ); MOD_MUL( T3 );
-    MPI_CHK( mpi_mul_mpi( &Y,   &Y,     &Y    ) ); MOD_MUL( Y  );
+    MPI_CHK( mpi_mul_mpi( &T1,  &P->Z,  &P->Z ) );  MOD_MUL( T1 );
+    MPI_CHK( mpi_sub_mpi( &T2,  &P->X,  &T1   ) );  MOD_SUB( T2 );
+    MPI_CHK( mpi_add_mpi( &T1,  &P->X,  &T1   ) );  MOD_ADD( T1 );
+    MPI_CHK( mpi_mul_mpi( &T2,  &T2,    &T1   ) );  MOD_MUL( T2 );
+    MPI_CHK( mpi_mul_int( &T2,  &T2,    3     ) );  MOD_ADD( T2 );
+    MPI_CHK( mpi_mul_int( &Y,   &P->Y,  2     ) );  MOD_ADD( Y  );
+    MPI_CHK( mpi_mul_mpi( &Z,   &Y,     &P->Z ) );  MOD_MUL( Z  );
+    MPI_CHK( mpi_mul_mpi( &Y,   &Y,     &Y    ) );  MOD_MUL( Y  );
+    MPI_CHK( mpi_mul_mpi( &T3,  &Y,     &P->X ) );  MOD_MUL( T3 );
+    MPI_CHK( mpi_mul_mpi( &Y,   &Y,     &Y    ) );  MOD_MUL( Y  );
 
     /*
      * For Y = Y / 2 mod p, we must make sure that Y is even before
@@ -528,13 +523,12 @@
         MPI_CHK( mpi_add_mpi( &Y, &Y, &grp->P ) );
     MPI_CHK( mpi_shift_r( &Y,   1             ) );
 
-    MPI_CHK( mpi_mul_mpi( &X,   &T2,    &T2   ) ); MOD_MUL( X  );
-    MPI_CHK( mpi_copy   ( &T1,  &T3           ) );
-    MPI_CHK( mpi_shift_l( &T1,  1             ) ); MOD_ADD( T1 );
-    MPI_CHK( mpi_sub_mpi( &X,   &X,     &T1   ) ); MOD_SUB( X  );
-    MPI_CHK( mpi_sub_mpi( &T1,  &T3,    &X    ) ); MOD_SUB( T1 );
-    MPI_CHK( mpi_mul_mpi( &T1,  &T1,    &T2   ) ); MOD_MUL( T1 );
-    MPI_CHK( mpi_sub_mpi( &Y,   &T1,    &Y    ) ); MOD_SUB( Y  );
+    MPI_CHK( mpi_mul_mpi( &X,   &T2,    &T2   ) );  MOD_MUL( X  );
+    MPI_CHK( mpi_mul_int( &T1,  &T3,    2     ) );  MOD_ADD( T1 );
+    MPI_CHK( mpi_sub_mpi( &X,   &X,     &T1   ) );  MOD_SUB( X  );
+    MPI_CHK( mpi_sub_mpi( &T1,  &T3,    &X    ) );  MOD_SUB( T1 );
+    MPI_CHK( mpi_mul_mpi( &T1,  &T1,    &T2   ) );  MOD_MUL( T1 );
+    MPI_CHK( mpi_sub_mpi( &Y,   &T1,    &Y    ) );  MOD_SUB( Y  );
 
     MPI_CHK( mpi_copy( &R->X, &X ) );
     MPI_CHK( mpi_copy( &R->Y, &Y ) );
@@ -554,7 +548,7 @@
 static int ecp_add_mixed( const ecp_group *grp, ecp_ptjac *R,
                           const ecp_ptjac *P, const ecp_point *Q )
 {
-    int ret = 0;
+    int ret;
     mpi T1, T2, T3, T4, X, Y, Z;
 
     /*
@@ -569,12 +563,12 @@
     mpi_init( &T1 ); mpi_init( &T2 ); mpi_init( &T3 ); mpi_init( &T4 );
     mpi_init( &X ); mpi_init( &Y ); mpi_init( &Z );
 
-    MPI_CHK( mpi_mul_mpi( &T1,  &P->Z,  &P->Z ) ); MOD_MUL( T1 );
-    MPI_CHK( mpi_mul_mpi( &T2,  &T1,    &P->Z ) ); MOD_MUL( T2 );
-    MPI_CHK( mpi_mul_mpi( &T1,  &T1,    &Q->X ) ); MOD_MUL( T1 );
-    MPI_CHK( mpi_mul_mpi( &T2,  &T2,    &Q->Y ) ); MOD_MUL( T2 );
-    MPI_CHK( mpi_sub_mpi( &T1,  &T1,    &P->X ) ); MOD_SUB( T1 );
-    MPI_CHK( mpi_sub_mpi( &T2,  &T2,    &P->Y ) ); MOD_SUB( T2 );
+    MPI_CHK( mpi_mul_mpi( &T1,  &P->Z,  &P->Z ) );  MOD_MUL( T1 );
+    MPI_CHK( mpi_mul_mpi( &T2,  &T1,    &P->Z ) );  MOD_MUL( T2 );
+    MPI_CHK( mpi_mul_mpi( &T1,  &T1,    &Q->X ) );  MOD_MUL( T1 );
+    MPI_CHK( mpi_mul_mpi( &T2,  &T2,    &Q->Y ) );  MOD_MUL( T2 );
+    MPI_CHK( mpi_sub_mpi( &T1,  &T1,    &P->X ) );  MOD_SUB( T1 );
+    MPI_CHK( mpi_sub_mpi( &T2,  &T2,    &P->Y ) );  MOD_SUB( T2 );
 
     if( mpi_cmp_int( &T1, 0 ) == 0 )
     {
@@ -590,18 +584,18 @@
         }
     }
 
-    MPI_CHK( mpi_mul_mpi( &Z,   &P->Z,  &T1   ) ); MOD_MUL( Z  );
-    MPI_CHK( mpi_mul_mpi( &T3,  &T1,    &T1   ) ); MOD_MUL( T3 );
-    MPI_CHK( mpi_mul_mpi( &T4,  &T3,    &T1   ) ); MOD_MUL( T4 );
-    MPI_CHK( mpi_mul_mpi( &T3,  &T3,    &P->X ) ); MOD_MUL( T3 );
-    MPI_CHK( mpi_mul_int( &T1,  &T3,    2     ) ); MOD_ADD( T1 );
-    MPI_CHK( mpi_mul_mpi( &X,   &T2,    &T2   ) ); MOD_MUL( X  );
-    MPI_CHK( mpi_sub_mpi( &X,   &X,     &T1   ) ); MOD_SUB( X  );
-    MPI_CHK( mpi_sub_mpi( &X,   &X,     &T4   ) ); MOD_SUB( X  );
-    MPI_CHK( mpi_sub_mpi( &T3,  &T3,    &X    ) ); MOD_SUB( T3 );
-    MPI_CHK( mpi_mul_mpi( &T3,  &T3,    &T2   ) ); MOD_MUL( T3 );
-    MPI_CHK( mpi_mul_mpi( &T4,  &T4,    &P->Y ) ); MOD_MUL( T4 );
-    MPI_CHK( mpi_sub_mpi( &Y,   &T3,    &T4   ) ); MOD_SUB( Y  );
+    MPI_CHK( mpi_mul_mpi( &Z,   &P->Z,  &T1   ) );  MOD_MUL( Z  );
+    MPI_CHK( mpi_mul_mpi( &T3,  &T1,    &T1   ) );  MOD_MUL( T3 );
+    MPI_CHK( mpi_mul_mpi( &T4,  &T3,    &T1   ) );  MOD_MUL( T4 );
+    MPI_CHK( mpi_mul_mpi( &T3,  &T3,    &P->X ) );  MOD_MUL( T3 );
+    MPI_CHK( mpi_mul_int( &T1,  &T3,    2     ) );  MOD_ADD( T1 );
+    MPI_CHK( mpi_mul_mpi( &X,   &T2,    &T2   ) );  MOD_MUL( X  );
+    MPI_CHK( mpi_sub_mpi( &X,   &X,     &T1   ) );  MOD_SUB( X  );
+    MPI_CHK( mpi_sub_mpi( &X,   &X,     &T4   ) );  MOD_SUB( X  );
+    MPI_CHK( mpi_sub_mpi( &T3,  &T3,    &X    ) );  MOD_SUB( T3 );
+    MPI_CHK( mpi_mul_mpi( &T3,  &T3,    &T2   ) );  MOD_MUL( T3 );
+    MPI_CHK( mpi_mul_mpi( &T4,  &T4,    &P->Y ) );  MOD_MUL( T4 );
+    MPI_CHK( mpi_sub_mpi( &Y,   &T3,    &T4   ) );  MOD_SUB( Y  );
 
     MPI_CHK( mpi_copy( &R->X, &X ) );
     MPI_CHK( mpi_copy( &R->Y, &Y ) );
@@ -621,7 +615,7 @@
 int ecp_add( const ecp_group *grp, ecp_point *R,
              const ecp_point *P, const ecp_point *Q )
 {
-    int ret = 0;
+    int ret;
     ecp_ptjac J;
 
     ecp_ptjac_init( &J );
@@ -643,20 +637,20 @@
 int ecp_mul( const ecp_group *grp, ecp_point *R,
              const mpi *m, const ecp_point *P )
 {
-    int ret = 0;
+    int ret;
     size_t pos;
     ecp_ptjac Q[2];
 
-    ecp_ptjac_init( &Q[0] ); ecp_ptjac_init( &Q[1] );
-
     /*
      * The general method works only for m >= 1
      */
     if( mpi_cmp_int( m, 0 ) == 0 ) {
         ecp_set_zero( R );
-        goto cleanup;
+        return( 0 );
     }
 
+    ecp_ptjac_init( &Q[0] ); ecp_ptjac_init( &Q[1] );
+
     ecp_ptjac_set_zero( &Q[0] );
 
     for( pos = mpi_msb( m ) - 1 ; ; pos-- )
