diff --git a/unpin_arm32.cpp b/unpin_arm32.cpp
index 6705e45b41d31cc1e5e117b4a4f914115da030cd..fe643c493c895f1a0436475500bbbb465fdf765c 100644
--- a/unpin_arm32.cpp
+++ b/unpin_arm32.cpp
@@ -73,7 +73,10 @@ void UnpinArm32_t::HandlePcrelReloc(Instruction_t* from_insn, Relocation_t* relo
 	uint8_t    insn_bytes[insn_bytes_len]; // compiler disallows init on some platforms.
         // but memcpy should init it sufficiently.
         memcpy(insn_bytes, from_insn->getDataBits().c_str(), insn_bytes_len);
-        const auto full_insn=*(uint32_t*)insn_bytes;
+        auto full_insn=(uint32_t)0;
+	memcpy(&full_insn,insn_bytes, sizeof(full_insn));
+
+
 	const auto mask1  = (1<<1 )-1;
 	const auto mask4  = (1<<4 )-1;
 	const auto mask8  = (1<<8 )-1;