diff --git a/library/gcm.c b/library/gcm.c
index 89068c9..3faaa5d 100644
--- a/library/gcm.c
+++ b/library/gcm.c
@@ -226,14 +226,8 @@
         {
             use_len = ( iv_len < 16 ) ? iv_len : 16;
 
-            if( use_len == 16 )
-            {
-                ((uint64_t *) y)[0] ^= ((uint64_t *) p)[0];
-                ((uint64_t *) y)[1] ^= ((uint64_t *) p)[1];
-            }
-            else
-                for( i = 0; i < use_len; i++ )
-                    y[i] ^= p[i];
+            for( i = 0; i < use_len; i++ )
+                y[i] ^= p[i];
         
             gcm_mult( ctx, y, y );
 
@@ -241,8 +235,8 @@
             p += use_len;
         }
 
-        ((uint64_t *) y)[0] ^= ((uint64_t *) work_buf)[0];
-        ((uint64_t *) y)[1] ^= ((uint64_t *) work_buf)[1];
+        for( i = 0; i < 16; i++ )
+            y[i] ^= work_buf[i];
 
         gcm_mult( ctx, y, y );
     }
@@ -255,14 +249,8 @@
     {
         use_len = ( add_len < 16 ) ? add_len : 16;
 
-        if( use_len == 16 )
-        {
-            ((uint64_t *) buf)[0] ^= ((uint64_t *) p)[0];
-            ((uint64_t *) buf)[1] ^= ((uint64_t *) p)[1];
-        }
-        else
-            for( i = 0; i < use_len; i++ )
-                buf[i] ^= p[i];
+        for( i = 0; i < use_len; i++ )
+            buf[i] ^= p[i];
         
         gcm_mult( ctx, buf, buf );
 
@@ -281,22 +269,11 @@
 
         aes_crypt_ecb( &ctx->aes_ctx, AES_ENCRYPT, y, ectr );
 
-        if( use_len == 16 )
+        for( i = 0; i < use_len; i++ )
         {
-            ((uint64_t *) out_p)[0] = ((uint64_t *) ectr)[0] ^
-                                      ((uint64_t *) p)[0];
-            ((uint64_t *) buf)[0] ^= ((uint64_t *) (*xor_p))[0];
-
-            ((uint64_t *) out_p)[1] = ((uint64_t *) ectr)[1] ^
-                                      ((uint64_t *) p)[1];
-            ((uint64_t *) buf)[1] ^= ((uint64_t *) (*xor_p))[1];
+            out_p[i] = ectr[i] ^ p[i];
+            buf[i] ^= (*xor_p)[i];
         }
-        else
-            for( i = 0; i < use_len; i++ )
-            {
-                out_p[i] = ectr[i] ^ p[i];
-                buf[i] ^= (*xor_p)[i];
-            }
         
         gcm_mult( ctx, buf, buf );
         
@@ -312,19 +289,13 @@
         PUT_UINT32_BE( orig_add_len , work_buf, 4 );
         PUT_UINT32_BE( orig_len , work_buf, 12 );
 
-        ((uint64_t *) buf)[0] ^= ((uint64_t *) work_buf)[0];
-        ((uint64_t *) buf)[1] ^= ((uint64_t *) work_buf)[1];
+        for( i = 0; i < 16; i++ )
+            buf[i] ^= work_buf[i];
 
         gcm_mult( ctx, buf, buf );
 
-        if( tag_len == 16 )
-        {
-            ((uint64_t *) tag)[0] ^= ((uint64_t *) buf)[0];
-            ((uint64_t *) tag)[1] ^= ((uint64_t *) buf)[1];
-        }
-        else
-            for( i = 0; i < tag_len; i++ )
-                tag[i] ^= buf[i];
+        for( i = 0; i < tag_len; i++ )
+            tag[i] ^= buf[i];
     }
 
     return( 0 );
