diff --git a/unpin_aarch64.cpp b/unpin_aarch64.cpp
index 84ce9e1f9b408e61e0726130b72d6c4ea23cd595..90fbe1d3061460a08423f992ce0bf913c4c440e5 100644
--- a/unpin_aarch64.cpp
+++ b/unpin_aarch64.cpp
@@ -104,7 +104,8 @@ void UnpinAarch64_t::HandlePcrelReloc(Instruction_t* from_insn, Relocation_t* re
 	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 op_byte=insn_bytes[3];
 
 	if(is_adrp_type || is_adr_type)