--- a/common/crypto/aes256-aarch64.cpp
+++ b/common/crypto/aes256-aarch64.cpp
@@ -78,7 +78,7 @@
 void crypto_aarch64_aes256_set_decrypt_key(vk_aes_ctx_t *vk_ctx, const uint8_t key[32]) {
   crypto_aarch64_aes256_set_encrypt_key(vk_ctx, key);
 
-  unsigned char *a = align16(&vk_ctx->u.ctx.a);
+  unsigned char *a = (unsigned char *)align16(&vk_ctx->u.ctx.a);
   for (int i = 1; i <= 13; i++) {
     asm volatile("mov x9, %[key] ;"
                  "ld1 {v0.16b}, [x9] ;"
@@ -97,7 +97,7 @@
 
   asm volatile("mov x9, %[iv]  ;"       // move IV address in x9
                "mov x10, %[out] ;"      // move out address in x10
-               "mov x11, %[size] ;"     // move size value in x11
+               "mov w11, %w[size] ;"    // move size value in x11
                "mov x12, %[in] ;"       // move plaintext address in x12
                "mov x13, %[key] ;"      // move key address in x13
                "ld1 {v25.16b}, [x9] ;"  // load IV to v0.16b
@@ -167,7 +167,7 @@
 
   asm volatile("mov x9, %[iv]  ;"       // move IV address in x9
                "mov x10, %[out] ;"      // move out address in x10
-               "mov x11, %[size] ;"     // move size value in x11
+               "mov w11, %w[size] ;"    // move size value in x11
                "mov x12, %[in] ;"       // move ciphertext address in x12
                "mov x13, %[key] ;"      // move key address in x13
                "ld1 {v25.16b}, [x9] ;"  // load IV to v25.16b
@@ -238,7 +238,7 @@
 
   asm volatile("mov x9, %[iv]  ;"             // move IGE IV address in x9
                "mov x10, %[out] ;"            // move out address in x10
-               "mov x11, %[size] ;"           // move size value in x11
+               "mov w11, %w[size] ;"          // move size value in x11
                "mov x12, %[in] ;"             // move plaintext address in x12
                "mov x13, %[key] ;"            // move key address in x13
                "ld1 {v25.16b}, [x9], #16 ;"   // load IGE IV Y to v25.16b
@@ -313,7 +313,7 @@
 
   asm volatile("mov x9, %[iv]  ;"           // move IGE IV address in x9
                "mov x10, %[out] ;"          // move out address in x10
-               "mov x11, %[size] ;"         // move size value in x11
+               "mov w11, %w[size] ;"        // move size value in x11
                "mov x12, %[in] ;"           // move cyphertext address in x12
                "mov x13, %[key] ;"          // move key address in x13
                "ld1 {v25.16b}, [x9], #16 ;" // load IGE IV Y to v25.16b
@@ -439,7 +439,7 @@
                "mov x10, %[in] ;"       // move plaintext address in x10
                "mov x11, %[key] ;"      // move key address in x11
                "mov x12, %[iv]  ;"      // move IV address in x12
-               "mov x13, %[n] ;"        // move n value in x11
+               "mov w13, %w[n] ;"       // move n value in x11
                "ld1 {v26.16b}, [x12] ;" // load IV to v0.16b
                "eor v25.16b, v25.16b, v25.16b ;"
                "mov w15, #1 ;"
