diff -ruw 240402_AIMer/Additional_Implementation/aarch64/aimer128f/field.c 240402_AIMer.patched/Additional_Implementation/aarch64/aimer128f/field.c
--- 240402_AIMer/Additional_Implementation/aarch64/aimer128f/field.c	2024-04-03 13:11:08.000000000 -0500
+++ 240402_AIMer.patched/Additional_Implementation/aarch64/aimer128f/field.c	2024-05-02 05:16:47.843518536 -0500
@@ -7,23 +7,25 @@
 
 void GF_to_bytes(const GF in, uint8_t* out)
 {
-  uint64_t temp = htole64(in[0]);
-  size_t num_bytes = sizeof(uint64_t);
-
-  memcpy(out, (uint8_t*)(&temp), num_bytes);
-  temp = htole64(in[1]);
-  memcpy(out + num_bytes, (uint8_t*)(&temp), num_bytes);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = in[i];
+    for (j = 0;j < 8;++j) {
+      *out++ = u;
+      u >>= 8;
+    }
+  }
 }
 
 void GF_from_bytes(const uint8_t* in, GF out)
 {
-  uint64_t temp;
-  size_t num_bytes = sizeof(uint64_t);
-
-  memcpy((uint8_t*)(&temp), in, num_bytes);
-  out[0] = le64toh(temp);
-  memcpy((uint8_t*)(&temp), in + num_bytes, num_bytes);
-  out[1] = le64toh(temp);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = 0;
+    for (j = 7;j >= 0;--j)
+      u = (u<<8)|in[8*i+j];
+    out[i] = u;
+  }
 }
 
 void GF_transposed_matmul(const GF a, const GF b[AIM2_NUM_BITS_FIELD], GF c)
diff -ruw 240402_AIMer/Additional_Implementation/aarch64/aimer128s/field.c 240402_AIMer.patched/Additional_Implementation/aarch64/aimer128s/field.c
--- 240402_AIMer/Additional_Implementation/aarch64/aimer128s/field.c	2024-04-03 13:11:08.000000000 -0500
+++ 240402_AIMer.patched/Additional_Implementation/aarch64/aimer128s/field.c	2024-05-02 05:16:47.843518536 -0500
@@ -7,23 +7,25 @@
 
 void GF_to_bytes(const GF in, uint8_t* out)
 {
-  uint64_t temp = htole64(in[0]);
-  size_t num_bytes = sizeof(uint64_t);
-
-  memcpy(out, (uint8_t*)(&temp), num_bytes);
-  temp = htole64(in[1]);
-  memcpy(out + num_bytes, (uint8_t*)(&temp), num_bytes);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = in[i];
+    for (j = 0;j < 8;++j) {
+      *out++ = u;
+      u >>= 8;
+    }
+  }
 }
 
 void GF_from_bytes(const uint8_t* in, GF out)
 {
-  uint64_t temp;
-  size_t num_bytes = sizeof(uint64_t);
-
-  memcpy((uint8_t*)(&temp), in, num_bytes);
-  out[0] = le64toh(temp);
-  memcpy((uint8_t*)(&temp), in + num_bytes, num_bytes);
-  out[1] = le64toh(temp);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = 0;
+    for (j = 7;j >= 0;--j)
+      u = (u<<8)|in[8*i+j];
+    out[i] = u;
+  }
 }
 
 void GF_transposed_matmul(const GF a, const GF b[AIM2_NUM_BITS_FIELD], GF c)
diff -ruw 240402_AIMer/Additional_Implementation/aarch64/aimer192f/field.c 240402_AIMer.patched/Additional_Implementation/aarch64/aimer192f/field.c
--- 240402_AIMer/Additional_Implementation/aarch64/aimer192f/field.c	2024-04-03 13:11:10.000000000 -0500
+++ 240402_AIMer.patched/Additional_Implementation/aarch64/aimer192f/field.c	2024-05-02 05:16:56.751735542 -0500
@@ -7,27 +7,25 @@
 
 void GF_to_bytes(const GF in, uint8_t* out)
 {
-  uint64_t temp = htole64(in[0]);
-  size_t num_bytes = sizeof(uint64_t);
-
-  memcpy(out, (uint8_t*)(&temp), num_bytes);
-  temp = htole64(in[1]);
-  memcpy(out + num_bytes, (uint8_t*)(&temp), num_bytes);
-  temp = htole64(in[2]);
-  memcpy(out + 2 * num_bytes, (uint8_t*)(&temp), num_bytes);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = in[i];
+    for (j = 0;j < 8;++j) {
+      *out++ = u;
+      u >>= 8;
+    }
+  }
 }
 
 void GF_from_bytes(const uint8_t* in, GF out)
 {
-  uint64_t temp;
-  size_t num_bytes = sizeof(uint64_t);
-
-  memcpy((uint8_t*)(&temp), in, num_bytes);
-  out[0] = le64toh(temp);
-  memcpy((uint8_t*)(&temp), in + num_bytes, num_bytes);
-  out[1] = le64toh(temp);
-  memcpy((uint8_t*)(&temp), in + 2 * num_bytes, num_bytes);
-  out[2] = le64toh(temp);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = 0;
+    for (j = 7;j >= 0;--j)
+      u = (u<<8)|in[8*i+j];
+    out[i] = u;
+  }
 }
 
 void GF_transposed_matmul(const GF a, const GF b[AIM2_NUM_BITS_FIELD], GF c)
diff -ruw 240402_AIMer/Additional_Implementation/aarch64/aimer192s/field.c 240402_AIMer.patched/Additional_Implementation/aarch64/aimer192s/field.c
--- 240402_AIMer/Additional_Implementation/aarch64/aimer192s/field.c	2024-04-03 13:11:12.000000000 -0500
+++ 240402_AIMer.patched/Additional_Implementation/aarch64/aimer192s/field.c	2024-05-02 05:16:56.751735542 -0500
@@ -7,27 +7,25 @@
 
 void GF_to_bytes(const GF in, uint8_t* out)
 {
-  uint64_t temp = htole64(in[0]);
-  size_t num_bytes = sizeof(uint64_t);
-
-  memcpy(out, (uint8_t*)(&temp), num_bytes);
-  temp = htole64(in[1]);
-  memcpy(out + num_bytes, (uint8_t*)(&temp), num_bytes);
-  temp = htole64(in[2]);
-  memcpy(out + 2 * num_bytes, (uint8_t*)(&temp), num_bytes);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = in[i];
+    for (j = 0;j < 8;++j) {
+      *out++ = u;
+      u >>= 8;
+    }
+  }
 }
 
 void GF_from_bytes(const uint8_t* in, GF out)
 {
-  uint64_t temp;
-  size_t num_bytes = sizeof(uint64_t);
-
-  memcpy((uint8_t*)(&temp), in, num_bytes);
-  out[0] = le64toh(temp);
-  memcpy((uint8_t*)(&temp), in + num_bytes, num_bytes);
-  out[1] = le64toh(temp);
-  memcpy((uint8_t*)(&temp), in + 2 * num_bytes, num_bytes);
-  out[2] = le64toh(temp);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = 0;
+    for (j = 7;j >= 0;--j)
+      u = (u<<8)|in[8*i+j];
+    out[i] = u;
+  }
 }
 
 void GF_transposed_matmul(const GF a, const GF b[AIM2_NUM_BITS_FIELD], GF c)
diff -ruw 240402_AIMer/Additional_Implementation/aarch64/aimer256f/field.c 240402_AIMer.patched/Additional_Implementation/aarch64/aimer256f/field.c
--- 240402_AIMer/Additional_Implementation/aarch64/aimer256f/field.c	2024-04-03 13:11:12.000000000 -0500
+++ 240402_AIMer.patched/Additional_Implementation/aarch64/aimer256f/field.c	2024-05-02 05:16:37.775272983 -0500
@@ -7,31 +7,25 @@
 
 void GF_to_bytes(const GF in, uint8_t* out)
 {
-  uint64_t temp = htole64(in[0]);
-  size_t num_bytes = sizeof(uint64_t);
-
-  memcpy(out, (uint8_t*)(&temp), num_bytes);
-  temp = htole64(in[1]);
-  memcpy(out + num_bytes, (uint8_t*)(&temp), num_bytes);
-  temp = htole64(in[2]);
-  memcpy(out + 2 * num_bytes, (uint8_t*)(&temp), num_bytes);
-  temp = htole64(in[3]);
-  memcpy(out + 3 * num_bytes, (uint8_t*)(&temp), num_bytes);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = in[i];
+    for (j = 0;j < 8;++j) {
+      *out++ = u;
+      u >>= 8;
+    }
+  }
 }
 
 void GF_from_bytes(const uint8_t* in, GF out)
 {
-  uint64_t temp;
-  size_t num_bytes = sizeof(uint64_t);
-
-  memcpy((uint8_t*)(&temp), in, num_bytes);
-  out[0] = le64toh(temp);
-  memcpy((uint8_t*)(&temp), in + num_bytes, num_bytes);
-  out[1] = le64toh(temp);
-  memcpy((uint8_t*)(&temp), in + 2 * num_bytes, num_bytes);
-  out[2] = le64toh(temp);
-  memcpy((uint8_t*)(&temp), in + 3 * num_bytes, num_bytes);
-  out[3] = le64toh(temp);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = 0;
+    for (j = 7;j >= 0;--j)
+      u = (u<<8)|in[8*i+j];
+    out[i] = u;
+  }
 }
 
 void GF_transposed_matmul(const GF a, const GF b[AIM2_NUM_BITS_FIELD], GF c)
diff -ruw 240402_AIMer/Additional_Implementation/aarch64/aimer256s/field.c 240402_AIMer.patched/Additional_Implementation/aarch64/aimer256s/field.c
--- 240402_AIMer/Additional_Implementation/aarch64/aimer256s/field.c	2024-04-03 13:11:14.000000000 -0500
+++ 240402_AIMer.patched/Additional_Implementation/aarch64/aimer256s/field.c	2024-05-02 05:16:37.775272983 -0500
@@ -7,31 +7,25 @@
 
 void GF_to_bytes(const GF in, uint8_t* out)
 {
-  uint64_t temp = htole64(in[0]);
-  size_t num_bytes = sizeof(uint64_t);
-
-  memcpy(out, (uint8_t*)(&temp), num_bytes);
-  temp = htole64(in[1]);
-  memcpy(out + num_bytes, (uint8_t*)(&temp), num_bytes);
-  temp = htole64(in[2]);
-  memcpy(out + 2 * num_bytes, (uint8_t*)(&temp), num_bytes);
-  temp = htole64(in[3]);
-  memcpy(out + 3 * num_bytes, (uint8_t*)(&temp), num_bytes);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = in[i];
+    for (j = 0;j < 8;++j) {
+      *out++ = u;
+      u >>= 8;
+    }
+  }
 }
 
 void GF_from_bytes(const uint8_t* in, GF out)
 {
-  uint64_t temp;
-  size_t num_bytes = sizeof(uint64_t);
-
-  memcpy((uint8_t*)(&temp), in, num_bytes);
-  out[0] = le64toh(temp);
-  memcpy((uint8_t*)(&temp), in + num_bytes, num_bytes);
-  out[1] = le64toh(temp);
-  memcpy((uint8_t*)(&temp), in + 2 * num_bytes, num_bytes);
-  out[2] = le64toh(temp);
-  memcpy((uint8_t*)(&temp), in + 3 * num_bytes, num_bytes);
-  out[3] = le64toh(temp);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = 0;
+    for (j = 7;j >= 0;--j)
+      u = (u<<8)|in[8*i+j];
+    out[i] = u;
+  }
 }
 
 void GF_transposed_matmul(const GF a, const GF b[AIM2_NUM_BITS_FIELD], GF c)
diff -ruw 240402_AIMer/Additional_Implementation/avx2/aimer128f/field.c 240402_AIMer.patched/Additional_Implementation/avx2/aimer128f/field.c
--- 240402_AIMer/Additional_Implementation/avx2/aimer128f/field.c	2024-04-03 13:11:16.000000000 -0500
+++ 240402_AIMer.patched/Additional_Implementation/avx2/aimer128f/field.c	2024-05-02 05:17:11.668098391 -0500
@@ -7,14 +7,25 @@
 
 void GF_to_bytes(const GF in, uint8_t* out)
 {
-  ((uint64_t*)out)[0] = htole64(in[0]);
-  ((uint64_t*)out)[1] = htole64(in[1]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = in[i];
+    for (j = 0;j < 8;++j) {
+      *out++ = u;
+      u >>= 8;
+    }
+  }
 }
 
 void GF_from_bytes(const uint8_t* in, GF out)
 {
-  out[0] = le64toh(((uint64_t*)in)[0]);
-  out[1] = le64toh(((uint64_t*)in)[1]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = 0;
+    for (j = 7;j >= 0;--j)
+      u = (u<<8)|in[8*i+j];
+    out[i] = u;
+  }
 }
 
 void GF_set0(GF a)
diff -ruw 240402_AIMer/Additional_Implementation/avx2/aimer128s/field.c 240402_AIMer.patched/Additional_Implementation/avx2/aimer128s/field.c
--- 240402_AIMer/Additional_Implementation/avx2/aimer128s/field.c	2024-04-03 13:11:16.000000000 -0500
+++ 240402_AIMer.patched/Additional_Implementation/avx2/aimer128s/field.c	2024-05-02 05:17:11.668098391 -0500
@@ -7,14 +7,25 @@
 
 void GF_to_bytes(const GF in, uint8_t* out)
 {
-  ((uint64_t*)out)[0] = htole64(in[0]);
-  ((uint64_t*)out)[1] = htole64(in[1]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = in[i];
+    for (j = 0;j < 8;++j) {
+      *out++ = u;
+      u >>= 8;
+    }
+  }
 }
 
 void GF_from_bytes(const uint8_t* in, GF out)
 {
-  out[0] = le64toh(((uint64_t*)in)[0]);
-  out[1] = le64toh(((uint64_t*)in)[1]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = 0;
+    for (j = 7;j >= 0;--j)
+      u = (u<<8)|in[8*i+j];
+    out[i] = u;
+  }
 }
 
 void GF_set0(GF a)
diff -ruw 240402_AIMer/Additional_Implementation/avx2/aimer192f/field.c 240402_AIMer.patched/Additional_Implementation/avx2/aimer192f/field.c
--- 240402_AIMer/Additional_Implementation/avx2/aimer192f/field.c	2024-04-03 13:11:18.000000000 -0500
+++ 240402_AIMer.patched/Additional_Implementation/avx2/aimer192f/field.c	2024-05-02 05:17:19.552289918 -0500
@@ -8,16 +8,25 @@
 
 void GF_to_bytes(const GF in, uint8_t* out)
 {
-  ((uint64_t*)out)[0] = htole64(in[0]);
-  ((uint64_t*)out)[1] = htole64(in[1]);
-  ((uint64_t*)out)[2] = htole64(in[2]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = in[i];
+    for (j = 0;j < 8;++j) {
+      *out++ = u;
+      u >>= 8;
+    }
+  }
 }
 
 void GF_from_bytes(const uint8_t* in, GF out)
 {
-  out[0] = le64toh(((uint64_t*)in)[0]);
-  out[1] = le64toh(((uint64_t*)in)[1]);
-  out[2] = le64toh(((uint64_t*)in)[2]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = 0;
+    for (j = 7;j >= 0;--j)
+      u = (u<<8)|in[8*i+j];
+    out[i] = u;
+  }
 }
 
 void GF_set0(GF a)
diff -ruw 240402_AIMer/Additional_Implementation/avx2/aimer192s/field.c 240402_AIMer.patched/Additional_Implementation/avx2/aimer192s/field.c
--- 240402_AIMer/Additional_Implementation/avx2/aimer192s/field.c	2024-04-03 13:11:20.000000000 -0500
+++ 240402_AIMer.patched/Additional_Implementation/avx2/aimer192s/field.c	2024-05-02 05:17:19.552289918 -0500
@@ -8,16 +8,25 @@
 
 void GF_to_bytes(const GF in, uint8_t* out)
 {
-  ((uint64_t*)out)[0] = htole64(in[0]);
-  ((uint64_t*)out)[1] = htole64(in[1]);
-  ((uint64_t*)out)[2] = htole64(in[2]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = in[i];
+    for (j = 0;j < 8;++j) {
+      *out++ = u;
+      u >>= 8;
+    }
+  }
 }
 
 void GF_from_bytes(const uint8_t* in, GF out)
 {
-  out[0] = le64toh(((uint64_t*)in)[0]);
-  out[1] = le64toh(((uint64_t*)in)[1]);
-  out[2] = le64toh(((uint64_t*)in)[2]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = 0;
+    for (j = 7;j >= 0;--j)
+      u = (u<<8)|in[8*i+j];
+    out[i] = u;
+  }
 }
 
 void GF_set0(GF a)
diff -ruw 240402_AIMer/Additional_Implementation/avx2/aimer256f/field.c 240402_AIMer.patched/Additional_Implementation/avx2/aimer256f/field.c
--- 240402_AIMer/Additional_Implementation/avx2/aimer256f/field.c	2024-04-03 13:11:20.000000000 -0500
+++ 240402_AIMer.patched/Additional_Implementation/avx2/aimer256f/field.c	2024-05-02 05:17:04.327919917 -0500
@@ -8,18 +8,25 @@
 
 void GF_to_bytes(const GF in, uint8_t* out)
 {
-  ((uint64_t*)out)[0] = htole64(in[0]);
-  ((uint64_t*)out)[1] = htole64(in[1]);
-  ((uint64_t*)out)[2] = htole64(in[2]);
-  ((uint64_t*)out)[3] = htole64(in[3]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = in[i];
+    for (j = 0;j < 8;++j) {
+      *out++ = u;
+      u >>= 8;
+    }
+  }
 }
 
 void GF_from_bytes(const uint8_t* in, GF out)
 {
-  out[0] = le64toh(((uint64_t*)in)[0]);
-  out[1] = le64toh(((uint64_t*)in)[1]);
-  out[2] = le64toh(((uint64_t*)in)[2]);
-  out[3] = le64toh(((uint64_t*)in)[3]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = 0;
+    for (j = 7;j >= 0;--j)
+      u = (u<<8)|in[8*i+j];
+    out[i] = u;
+  }
 }
 
 void GF_set0(GF a)
diff -ruw 240402_AIMer/Additional_Implementation/avx2/aimer256s/field.c 240402_AIMer.patched/Additional_Implementation/avx2/aimer256s/field.c
--- 240402_AIMer/Additional_Implementation/avx2/aimer256s/field.c	2024-04-03 13:11:22.000000000 -0500
+++ 240402_AIMer.patched/Additional_Implementation/avx2/aimer256s/field.c	2024-05-02 05:17:04.327919917 -0500
@@ -8,18 +8,25 @@
 
 void GF_to_bytes(const GF in, uint8_t* out)
 {
-  ((uint64_t*)out)[0] = htole64(in[0]);
-  ((uint64_t*)out)[1] = htole64(in[1]);
-  ((uint64_t*)out)[2] = htole64(in[2]);
-  ((uint64_t*)out)[3] = htole64(in[3]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = in[i];
+    for (j = 0;j < 8;++j) {
+      *out++ = u;
+      u >>= 8;
+    }
+  }
 }
 
 void GF_from_bytes(const uint8_t* in, GF out)
 {
-  out[0] = le64toh(((uint64_t*)in)[0]);
-  out[1] = le64toh(((uint64_t*)in)[1]);
-  out[2] = le64toh(((uint64_t*)in)[2]);
-  out[3] = le64toh(((uint64_t*)in)[3]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = 0;
+    for (j = 7;j >= 0;--j)
+      u = (u<<8)|in[8*i+j];
+    out[i] = u;
+  }
 }
 
 void GF_set0(GF a)
diff -ruw 240402_AIMer/Optimized_Implementation/aimer128f/field.c 240402_AIMer.patched/Optimized_Implementation/aimer128f/field.c
--- 240402_AIMer/Optimized_Implementation/aimer128f/field.c	2024-05-02 05:13:11.382419265 -0500
+++ 240402_AIMer.patched/Optimized_Implementation/aimer128f/field.c	2024-05-02 05:18:02.665334291 -0500
@@ -24,14 +24,25 @@
 
 void GF_to_bytes(const GF in, uint8_t* out)
 {
-  ((uint64_t*)out)[0] = htole64(in[0]);
-  ((uint64_t*)out)[1] = htole64(in[1]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = in[i];
+    for (j = 0;j < 8;++j) {
+      *out++ = u;
+      u >>= 8;
+    }
+  }
 }
 
 void GF_from_bytes(const uint8_t* in, GF out)
 {
-  out[0] = le64toh(((uint64_t*)in)[0]);
-  out[1] = le64toh(((uint64_t*)in)[1]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = 0;
+    for (j = 7;j >= 0;--j)
+      u = (u<<8)|in[8*i+j];
+    out[i] = u;
+  }
 }
 
 void GF_set0(GF a)
diff -ruw 240402_AIMer/Optimized_Implementation/aimer128s/field.c 240402_AIMer.patched/Optimized_Implementation/aimer128s/field.c
--- 240402_AIMer/Optimized_Implementation/aimer128s/field.c	2024-05-02 05:13:11.382419265 -0500
+++ 240402_AIMer.patched/Optimized_Implementation/aimer128s/field.c	2024-05-02 05:18:02.665334291 -0500
@@ -24,14 +24,25 @@
 
 void GF_to_bytes(const GF in, uint8_t* out)
 {
-  ((uint64_t*)out)[0] = htole64(in[0]);
-  ((uint64_t*)out)[1] = htole64(in[1]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = in[i];
+    for (j = 0;j < 8;++j) {
+      *out++ = u;
+      u >>= 8;
+    }
+  }
 }
 
 void GF_from_bytes(const uint8_t* in, GF out)
 {
-  out[0] = le64toh(((uint64_t*)in)[0]);
-  out[1] = le64toh(((uint64_t*)in)[1]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = 0;
+    for (j = 7;j >= 0;--j)
+      u = (u<<8)|in[8*i+j];
+    out[i] = u;
+  }
 }
 
 void GF_set0(GF a)
diff -ruw 240402_AIMer/Optimized_Implementation/aimer192f/field.c 240402_AIMer.patched/Optimized_Implementation/aimer192f/field.c
--- 240402_AIMer/Optimized_Implementation/aimer192f/field.c	2024-05-02 05:13:11.382419265 -0500
+++ 240402_AIMer.patched/Optimized_Implementation/aimer192f/field.c	2024-05-02 05:18:08.841483505 -0500
@@ -24,16 +24,25 @@
 
 void GF_to_bytes(const GF in, uint8_t* out)
 {
-  ((uint64_t*)out)[0] = htole64(in[0]);
-  ((uint64_t*)out)[1] = htole64(in[1]);
-  ((uint64_t*)out)[2] = htole64(in[2]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = in[i];
+    for (j = 0;j < 8;++j) {
+      *out++ = u;
+      u >>= 8;
+    }
+  }
 }
 
 void GF_from_bytes(const uint8_t* in, GF out)
 {
-  out[0] = le64toh(((uint64_t*)in)[0]);
-  out[1] = le64toh(((uint64_t*)in)[1]);
-  out[2] = le64toh(((uint64_t*)in)[2]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = 0;
+    for (j = 7;j >= 0;--j)
+      u = (u<<8)|in[8*i+j];
+    out[i] = u;
+  }
 }
 
 void GF_set0(GF a)
diff -ruw 240402_AIMer/Optimized_Implementation/aimer192s/field.c 240402_AIMer.patched/Optimized_Implementation/aimer192s/field.c
--- 240402_AIMer/Optimized_Implementation/aimer192s/field.c	2024-05-02 05:13:11.382419265 -0500
+++ 240402_AIMer.patched/Optimized_Implementation/aimer192s/field.c	2024-05-02 05:18:08.841483505 -0500
@@ -24,16 +24,25 @@
 
 void GF_to_bytes(const GF in, uint8_t* out)
 {
-  ((uint64_t*)out)[0] = htole64(in[0]);
-  ((uint64_t*)out)[1] = htole64(in[1]);
-  ((uint64_t*)out)[2] = htole64(in[2]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = in[i];
+    for (j = 0;j < 8;++j) {
+      *out++ = u;
+      u >>= 8;
+    }
+  }
 }
 
 void GF_from_bytes(const uint8_t* in, GF out)
 {
-  out[0] = le64toh(((uint64_t*)in)[0]);
-  out[1] = le64toh(((uint64_t*)in)[1]);
-  out[2] = le64toh(((uint64_t*)in)[2]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = 0;
+    for (j = 7;j >= 0;--j)
+      u = (u<<8)|in[8*i+j];
+    out[i] = u;
+  }
 }
 
 void GF_set0(GF a)
diff -ruw 240402_AIMer/Optimized_Implementation/aimer256f/field.c 240402_AIMer.patched/Optimized_Implementation/aimer256f/field.c
--- 240402_AIMer/Optimized_Implementation/aimer256f/field.c	2024-05-02 05:13:11.382419265 -0500
+++ 240402_AIMer.patched/Optimized_Implementation/aimer256f/field.c	2024-05-02 05:17:55.961172209 -0500
@@ -24,18 +24,25 @@
 
 void GF_to_bytes(const GF in, uint8_t* out)
 {
-  ((uint64_t*)out)[0] = htole64(in[0]);
-  ((uint64_t*)out)[1] = htole64(in[1]);
-  ((uint64_t*)out)[2] = htole64(in[2]);
-  ((uint64_t*)out)[3] = htole64(in[3]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = in[i];
+    for (j = 0;j < 8;++j) {
+      *out++ = u;
+      u >>= 8;
+    }
+  }
 }
 
 void GF_from_bytes(const uint8_t* in, GF out)
 {
-  out[0] = le64toh(((uint64_t*)in)[0]);
-  out[1] = le64toh(((uint64_t*)in)[1]);
-  out[2] = le64toh(((uint64_t*)in)[2]);
-  out[3] = le64toh(((uint64_t*)in)[3]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = 0;
+    for (j = 7;j >= 0;--j)
+      u = (u<<8)|in[8*i+j];
+    out[i] = u;
+  }
 }
 
 void GF_set0(GF a)
diff -ruw 240402_AIMer/Optimized_Implementation/aimer256s/field.c 240402_AIMer.patched/Optimized_Implementation/aimer256s/field.c
--- 240402_AIMer/Optimized_Implementation/aimer256s/field.c	2024-05-02 05:13:11.382419265 -0500
+++ 240402_AIMer.patched/Optimized_Implementation/aimer256s/field.c	2024-05-02 05:17:55.961172209 -0500
@@ -24,18 +24,25 @@
 
 void GF_to_bytes(const GF in, uint8_t* out)
 {
-  ((uint64_t*)out)[0] = htole64(in[0]);
-  ((uint64_t*)out)[1] = htole64(in[1]);
-  ((uint64_t*)out)[2] = htole64(in[2]);
-  ((uint64_t*)out)[3] = htole64(in[3]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = in[i];
+    for (j = 0;j < 8;++j) {
+      *out++ = u;
+      u >>= 8;
+    }
+  }
 }
 
 void GF_from_bytes(const uint8_t* in, GF out)
 {
-  out[0] = le64toh(((uint64_t*)in)[0]);
-  out[1] = le64toh(((uint64_t*)in)[1]);
-  out[2] = le64toh(((uint64_t*)in)[2]);
-  out[3] = le64toh(((uint64_t*)in)[3]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = 0;
+    for (j = 7;j >= 0;--j)
+      u = (u<<8)|in[8*i+j];
+    out[i] = u;
+  }
 }
 
 void GF_set0(GF a)
diff -ruw 240402_AIMer/Reference_Implementation/aimer128f/field.c 240402_AIMer.patched/Reference_Implementation/aimer128f/field.c
--- 240402_AIMer/Reference_Implementation/aimer128f/field.c	2024-05-02 05:13:11.382419265 -0500
+++ 240402_AIMer.patched/Reference_Implementation/aimer128f/field.c	2024-05-02 05:17:41.504822315 -0500
@@ -37,19 +37,24 @@
 
 void GF_to_bytes(const GF in, uint8_t* out)
 {
-  uint64_t* temp = (uint64_t*)out;
-  for (unsigned i = 0; i < AIM2_NUM_WORDS_FIELD; i++)
-  {
-    temp[i] = htole64(in[i]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = in[i];
+    for (j = 0;j < 8;++j) {
+      *out++ = u;
+      u >>= 8;
+    }
   }
 }
 
 void GF_from_bytes(const uint8_t* in, GF out)
 {
-  uint64_t* temp = (uint64_t*)in;
-  for (unsigned i = 0; i < AIM2_NUM_WORDS_FIELD; i++)
-  {
-    out[i] = le64toh(temp[i]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = 0;
+    for (j = 7;j >= 0;--j)
+      u = (u<<8)|in[8*i+j];
+    out[i] = u;
   }
 }
 
diff -ruw 240402_AIMer/Reference_Implementation/aimer128s/field.c 240402_AIMer.patched/Reference_Implementation/aimer128s/field.c
--- 240402_AIMer/Reference_Implementation/aimer128s/field.c	2024-05-02 05:13:11.382419265 -0500
+++ 240402_AIMer.patched/Reference_Implementation/aimer128s/field.c	2024-05-02 05:17:41.504822315 -0500
@@ -37,19 +37,24 @@
 
 void GF_to_bytes(const GF in, uint8_t* out)
 {
-  uint64_t* temp = (uint64_t*)out;
-  for (unsigned i = 0; i < AIM2_NUM_WORDS_FIELD; i++)
-  {
-    temp[i] = htole64(in[i]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = in[i];
+    for (j = 0;j < 8;++j) {
+      *out++ = u;
+      u >>= 8;
+    }
   }
 }
 
 void GF_from_bytes(const uint8_t* in, GF out)
 {
-  uint64_t* temp = (uint64_t*)in;
-  for (unsigned i = 0; i < AIM2_NUM_WORDS_FIELD; i++)
-  {
-    out[i] = le64toh(temp[i]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = 0;
+    for (j = 7;j >= 0;--j)
+      u = (u<<8)|in[8*i+j];
+    out[i] = u;
   }
 }
 
diff -ruw 240402_AIMer/Reference_Implementation/aimer192f/field.c 240402_AIMer.patched/Reference_Implementation/aimer192f/field.c
--- 240402_AIMer/Reference_Implementation/aimer192f/field.c	2024-05-02 05:13:11.386419356 -0500
+++ 240402_AIMer.patched/Reference_Implementation/aimer192f/field.c	2024-05-02 05:17:49.489015628 -0500
@@ -37,19 +37,24 @@
 
 void GF_to_bytes(const GF in, uint8_t* out)
 {
-  uint64_t* temp = (uint64_t*)out;
-  for (unsigned i = 0; i < AIM2_NUM_WORDS_FIELD; i++)
-  {
-    temp[i] = htole64(in[i]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = in[i];
+    for (j = 0;j < 8;++j) {
+      *out++ = u;
+      u >>= 8;
+    }
   }
 }
 
 void GF_from_bytes(const uint8_t* in, GF out)
 {
-  uint64_t* temp = (uint64_t*)in;
-  for (unsigned i = 0; i < AIM2_NUM_WORDS_FIELD; i++)
-  {
-    out[i] = le64toh(temp[i]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = 0;
+    for (j = 7;j >= 0;--j)
+      u = (u<<8)|in[8*i+j];
+    out[i] = u;
   }
 }
 
diff -ruw 240402_AIMer/Reference_Implementation/aimer192s/field.c 240402_AIMer.patched/Reference_Implementation/aimer192s/field.c
--- 240402_AIMer/Reference_Implementation/aimer192s/field.c	2024-05-02 05:13:11.386419356 -0500
+++ 240402_AIMer.patched/Reference_Implementation/aimer192s/field.c	2024-05-02 05:17:49.489015628 -0500
@@ -37,19 +37,24 @@
 
 void GF_to_bytes(const GF in, uint8_t* out)
 {
-  uint64_t* temp = (uint64_t*)out;
-  for (unsigned i = 0; i < AIM2_NUM_WORDS_FIELD; i++)
-  {
-    temp[i] = htole64(in[i]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = in[i];
+    for (j = 0;j < 8;++j) {
+      *out++ = u;
+      u >>= 8;
+    }
   }
 }
 
 void GF_from_bytes(const uint8_t* in, GF out)
 {
-  uint64_t* temp = (uint64_t*)in;
-  for (unsigned i = 0; i < AIM2_NUM_WORDS_FIELD; i++)
-  {
-    out[i] = le64toh(temp[i]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = 0;
+    for (j = 7;j >= 0;--j)
+      u = (u<<8)|in[8*i+j];
+    out[i] = u;
   }
 }
 
diff -ruw 240402_AIMer/Reference_Implementation/aimer256f/field.c 240402_AIMer.patched/Reference_Implementation/aimer256f/field.c
--- 240402_AIMer/Reference_Implementation/aimer256f/field.c	2024-05-02 05:13:11.386419356 -0500
+++ 240402_AIMer.patched/Reference_Implementation/aimer256f/field.c	2024-05-02 05:17:30.700560440 -0500
@@ -37,19 +37,24 @@
 
 void GF_to_bytes(const GF in, uint8_t* out)
 {
-  uint64_t* temp = (uint64_t*)out;
-  for (unsigned i = 0; i < AIM2_NUM_WORDS_FIELD; i++)
-  {
-    temp[i] = htole64(in[i]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = in[i];
+    for (j = 0;j < 8;++j) {
+      *out++ = u;
+      u >>= 8;
+    }
   }
 }
 
 void GF_from_bytes(const uint8_t* in, GF out)
 {
-  uint64_t* temp = (uint64_t*)in;
-  for (unsigned i = 0; i < AIM2_NUM_WORDS_FIELD; i++)
-  {
-    out[i] = le64toh(temp[i]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = 0;
+    for (j = 7;j >= 0;--j)
+      u = (u<<8)|in[8*i+j];
+    out[i] = u;
   }
 }
 
diff -ruw 240402_AIMer/Reference_Implementation/aimer256s/field.c 240402_AIMer.patched/Reference_Implementation/aimer256s/field.c
--- 240402_AIMer/Reference_Implementation/aimer256s/field.c	2024-05-02 05:13:11.386419356 -0500
+++ 240402_AIMer.patched/Reference_Implementation/aimer256s/field.c	2024-05-02 05:17:30.700560440 -0500
@@ -37,19 +37,24 @@
 
 void GF_to_bytes(const GF in, uint8_t* out)
 {
-  uint64_t* temp = (uint64_t*)out;
-  for (unsigned i = 0; i < AIM2_NUM_WORDS_FIELD; i++)
-  {
-    temp[i] = htole64(in[i]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = in[i];
+    for (j = 0;j < 8;++j) {
+      *out++ = u;
+      u >>= 8;
+    }
   }
 }
 
 void GF_from_bytes(const uint8_t* in, GF out)
 {
-  uint64_t* temp = (uint64_t*)in;
-  for (unsigned i = 0; i < AIM2_NUM_WORDS_FIELD; i++)
-  {
-    out[i] = le64toh(temp[i]);
+  int i, j;
+  for (i = 0;i < AIM2_NUM_WORDS_FIELD;++i) {
+    uint64_t u = 0;
+    for (j = 7;j >= 0;--j)
+      u = (u<<8)|in[8*i+j];
+    out[i] = u;
   }
 }
 
