Use uint64_t instead of size_t for addresses
diff --git a/arch/AArch64/AArch64Disassembler.c b/arch/AArch64/AArch64Disassembler.c
index e849050..a6dd3f9 100644
--- a/arch/AArch64/AArch64Disassembler.c
+++ b/arch/AArch64/AArch64Disassembler.c
@@ -228,7 +228,7 @@
 static DecodeStatus _getInstruction(MCInst *MI,
 		unsigned char *code, size_t code_len,
 		uint16_t *Size,
-		size_t Address, MCRegisterInfo *MRI)
+		uint64_t Address, MCRegisterInfo *MRI)
 {
 	if (code_len < 4) {
 		// not enough data
@@ -254,7 +254,7 @@
 	return MCDisassembler_Fail;
 }
 
-bool AArch64_getInstruction(csh ud, unsigned char *code, size_t code_len, MCInst *instr, uint16_t *size, size_t address, void *info)
+bool AArch64_getInstruction(csh ud, unsigned char *code, size_t code_len, MCInst *instr, uint16_t *size, uint64_t address, void *info)
 {
 	DecodeStatus status = _getInstruction(instr,
 			code, code_len,
diff --git a/arch/AArch64/AArch64Disassembler.h b/arch/AArch64/AArch64Disassembler.h
index 5490c6b..26e2279 100644
--- a/arch/AArch64/AArch64Disassembler.h
+++ b/arch/AArch64/AArch64Disassembler.h
@@ -13,7 +13,6 @@
 void AArch64_init(MCRegisterInfo *MRI);
 
 bool AArch64_getInstruction(csh ud, unsigned char *code, size_t code_len,
-		MCInst *instr, uint16_t *size, size_t address, void *info);
+		MCInst *instr, uint16_t *size, uint64_t address, void *info);
 
 #endif
-
diff --git a/arch/ARM/ARMDisassembler.c b/arch/ARM/ARMDisassembler.c
index 22500a8..ac67423 100644
--- a/arch/ARM/ARMDisassembler.c
+++ b/arch/ARM/ARMDisassembler.c
@@ -416,7 +416,7 @@
 }
 
 static DecodeStatus _ARM_getInstruction(cs_struct *ud, MCInst *MI, unsigned char *code, size_t code_len,
-		uint16_t *Size, size_t Address)
+		uint16_t *Size, uint64_t Address)
 {
 	uint8_t bytes[4];
 
@@ -638,7 +638,7 @@
 }
 
 static DecodeStatus _Thumb_getInstruction(cs_struct *ud, MCInst *MI, unsigned char *code, size_t code_len,
-		uint16_t *Size, size_t Address)
+		uint16_t *Size, uint64_t Address)
 {
 	uint8_t bytes[4];
 
@@ -815,7 +815,7 @@
 }
 
 bool Thumb_getInstruction(csh ud, unsigned char *code, size_t code_len, MCInst *instr,
-		uint16_t *size, size_t address, void *info)
+		uint16_t *size, uint64_t address, void *info)
 {
 	DecodeStatus status = _Thumb_getInstruction((cs_struct *)ud, instr, code, code_len, size, address);
 
@@ -824,7 +824,7 @@
 }
 
 bool ARM_getInstruction(csh ud, unsigned char *code, size_t code_len, MCInst *instr,
-		uint16_t *size, size_t address, void *info)
+		uint16_t *size, uint64_t address, void *info)
 {
 	DecodeStatus status = _ARM_getInstruction((cs_struct *)ud, instr, code, code_len, size, address);
 
diff --git a/arch/ARM/ARMDisassembler.h b/arch/ARM/ARMDisassembler.h
index eb466a3..782a763 100644
--- a/arch/ARM/ARMDisassembler.h
+++ b/arch/ARM/ARMDisassembler.h
@@ -9,8 +9,8 @@
 
 void ARM_init(MCRegisterInfo *MRI);
 
-bool ARM_getInstruction(csh handle, unsigned char *code, size_t code_len, MCInst *instr, uint16_t *size, size_t address, void *info);
+bool ARM_getInstruction(csh handle, unsigned char *code, size_t code_len, MCInst *instr, uint16_t *size, uint64_t address, void *info);
 
-bool Thumb_getInstruction(csh handle, unsigned char *code, size_t code_len, MCInst *instr, uint16_t *size, size_t address, void *info);
+bool Thumb_getInstruction(csh handle, unsigned char *code, size_t code_len, MCInst *instr, uint16_t *size, uint64_t address, void *info);
 
 #endif
diff --git a/arch/Mips/MipsDisassembler.c b/arch/Mips/MipsDisassembler.c
index e6a8cd4..160433f 100644
--- a/arch/Mips/MipsDisassembler.c
+++ b/arch/Mips/MipsDisassembler.c
@@ -245,7 +245,7 @@
 static DecodeStatus MipsDisassembler_getInstruction(int mode, MCInst *instr,
 		unsigned char *code, size_t code_len,
 		uint16_t *Size,
-		size_t Address, bool isBigEndian, MCRegisterInfo *MRI,
+		uint64_t Address, bool isBigEndian, MCRegisterInfo *MRI,
 		bool isMicroMips)
 {
 	uint32_t Insn;
@@ -280,7 +280,7 @@
 }
 
 bool Mips_getInstruction(csh ud, unsigned char *code, size_t code_len, MCInst *instr,
-		uint16_t *size, size_t address, void *info)
+		uint16_t *size, uint64_t address, void *info)
 {
 	cs_struct *handle = (cs_struct *)(uintptr_t)ud;
 
diff --git a/arch/Mips/MipsDisassembler.h b/arch/Mips/MipsDisassembler.h
index 850023c..02b1272 100644
--- a/arch/Mips/MipsDisassembler.h
+++ b/arch/Mips/MipsDisassembler.h
@@ -12,9 +12,9 @@
 void Mips_init(MCRegisterInfo *MRI);
 
 bool Mips_getInstruction(csh handle, unsigned char *code, size_t code_len,
-		MCInst *instr, uint16_t *size, size_t address, void *info);
+		MCInst *instr, uint16_t *size, uint64_t address, void *info);
 
 bool Mips64_getInstruction(csh handle, unsigned char *code, size_t code_len,
-		MCInst *instr, uint16_t *size, size_t address, void *info);
+		MCInst *instr, uint16_t *size, uint64_t address, void *info);
 
 #endif
diff --git a/arch/X86/X86Disassembler.c b/arch/X86/X86Disassembler.c
index 7a4c8c1..ef29a00 100644
--- a/arch/X86/X86Disassembler.c
+++ b/arch/X86/X86Disassembler.c
@@ -535,7 +535,7 @@
 }
 
 // Public interface for the disassembler
-bool X86_getInstruction(csh ud, unsigned char *code, size_t code_len, MCInst *instr, uint16_t *size, size_t address, void *_info)
+bool X86_getInstruction(csh ud, unsigned char *code, size_t code_len, MCInst *instr, uint16_t *size, uint64_t address, void *_info)
 {
 	cs_struct *handle = (cs_struct *)(uintptr_t)ud;
 	InternalInstruction insn;
diff --git a/arch/X86/X86Disassembler.h b/arch/X86/X86Disassembler.h
index aadf0d1..7be16fb 100644
--- a/arch/X86/X86Disassembler.h
+++ b/arch/X86/X86Disassembler.h
@@ -96,6 +96,6 @@
 #undef INSTRUCTION_IDS
 
 bool X86_getInstruction(csh handle, unsigned char *code, size_t code_len,
-		MCInst *instr, uint16_t *size, size_t address, void *info);
+		MCInst *instr, uint16_t *size, uint64_t address, void *info);
 
 #endif
diff --git a/cs.c b/cs.c
index bf8f3d6..49a898c 100644
--- a/cs.c
+++ b/cs.c
@@ -193,7 +193,7 @@
 	insn->mnemonic[sizeof(insn->mnemonic) - 1] = '\0';
 }
 
-size_t cs_disasm(csh ud, unsigned char *buffer, size_t size, size_t offset, size_t count, cs_insn *insn)
+size_t cs_disasm(csh ud, unsigned char *buffer, size_t size, uint64_t offset, size_t count, cs_insn *insn)
 {
 	cs_struct *handle = (cs_struct *)(uintptr_t)ud;
 	MCInst mci;
@@ -242,7 +242,7 @@
 
 // dynamicly allocate memory to contain disasm insn
 // NOTE: caller must free() the allocated memory itself to avoid memory leaking
-size_t cs_disasm_dyn(csh ud, unsigned char *buffer, size_t size, size_t offset, size_t count, cs_insn **insn)
+size_t cs_disasm_dyn(csh ud, unsigned char *buffer, size_t size, uint64_t offset, size_t count, cs_insn **insn)
 {
 	cs_struct *handle = (cs_struct *)(uintptr_t)ud;
 	MCInst mci;
diff --git a/cs_priv.h b/cs_priv.h
index 07eeda8..014e983 100644
--- a/cs_priv.h
+++ b/cs_priv.h
@@ -15,7 +15,7 @@
 // this is the best time to gather insn's characteristics
 typedef void (*PostPrinter_t)(unsigned int insn, cs_insn *, char *mnem);
 
-typedef bool (*Disasm_t)(csh handle, unsigned char *code, size_t code_len, MCInst *instr, uint16_t *size, size_t address, void *info);
+typedef bool (*Disasm_t)(csh handle, unsigned char *code, size_t code_len, MCInst *instr, uint16_t *size, uint64_t address, void *info);
 
 typedef char *(*GetName_t)(unsigned int reg);
 
diff --git a/include/capstone.h b/include/capstone.h
index 0a22260..8245971 100644
--- a/include/capstone.h
+++ b/include/capstone.h
@@ -146,7 +146,7 @@
 */
 size_t cs_disasm(csh handle,
 		unsigned char *code, size_t code_size,
-		size_t offset,
+		uint64_t offset,
 		size_t count,
 		cs_insn *insn);
 
@@ -170,7 +170,7 @@
 */
 size_t cs_disasm_dyn(csh handle,
 		unsigned char *code, size_t code_size,
-		size_t offset,
+		uint64_t offset,
 		size_t count,
 		cs_insn **insn);