more more fixes on C coding style
diff --git a/arch/ARM/ARMModule.c b/arch/ARM/ARMModule.c
index 8e32b03..43d43b0 100644
--- a/arch/ARM/ARMModule.c
+++ b/arch/ARM/ARMModule.c
@@ -9,7 +9,7 @@
 
 static cs_err init(cs_struct *ud)
 {
-    MCRegisterInfo *mri;
+	MCRegisterInfo *mri;
 
 	// verify if requested mode is valid
 	if (ud->mode & ~(CS_MODE_LITTLE_ENDIAN | CS_MODE_ARM |
diff --git a/arch/Mips/MipsDisassembler.c b/arch/Mips/MipsDisassembler.c
index 3af0ed1..f880a7f 100644
--- a/arch/Mips/MipsDisassembler.c
+++ b/arch/Mips/MipsDisassembler.c
@@ -193,7 +193,7 @@
 
 void Mips_init(MCRegisterInfo *MRI)
 {
-  	// InitMCRegisterInfo(MipsRegDesc, 317,
+	// InitMCRegisterInfo(MipsRegDesc, 317,
 	// RA, PC,
 	// MipsMCRegisterClasses, 34,
 	// MipsRegUnitRoots, 196,
@@ -249,7 +249,7 @@
 		uint64_t Address, bool isBigEndian, MCRegisterInfo *MRI)
 {
 	uint32_t Insn;
-    DecodeStatus Result;
+	DecodeStatus Result;
 
 	if (code_len < 4)
 		// not enough data
@@ -716,9 +716,9 @@
 static DecodeStatus DecodeLSAImm(MCInst *Inst,
 		unsigned Insn, uint64_t Address, MCRegisterInfo *Decoder)
 {
-  // We add one to the immediate field as it was encoded as 'imm - 1'.
-  MCInst_addOperand(Inst, MCOperand_CreateImm(Insn + 1));
-  return MCDisassembler_Success;
+	// We add one to the immediate field as it was encoded as 'imm - 1'.
+	MCInst_addOperand(Inst, MCOperand_CreateImm(Insn + 1));
+	return MCDisassembler_Success;
 }
 
 static DecodeStatus DecodeInsSize(MCInst *Inst,
diff --git a/arch/Mips/MipsModule.c b/arch/Mips/MipsModule.c
index dd4c1b4..ea7d726 100644
--- a/arch/Mips/MipsModule.c
+++ b/arch/Mips/MipsModule.c
@@ -11,7 +11,7 @@
 
 static cs_err init(cs_struct *ud)
 {
-    MCRegisterInfo *mri;
+	MCRegisterInfo *mri;
 
 	// verify if requested mode is valid
 	if (ud->mode & ~(CS_MODE_LITTLE_ENDIAN | CS_MODE_32 | CS_MODE_64 |
diff --git a/arch/PowerPC/PPCInstPrinter.c b/arch/PowerPC/PPCInstPrinter.c
index bc530f1..9281255 100644
--- a/arch/PowerPC/PPCInstPrinter.c
+++ b/arch/PowerPC/PPCInstPrinter.c
@@ -370,11 +370,11 @@
 
 static void printBranchOperand(MCInst *MI, unsigned OpNo, SStream *O)
 {
-    if (!MCOperand_isImm(MCInst_getOperand(MI, OpNo)))
-    {
+	if (!MCOperand_isImm(MCInst_getOperand(MI, OpNo)))
+	{
 		printOperand(MI, OpNo, O);
-        return;
-    }
+		return;
+	}
 
 	// Branches can take an immediate operand.  This is used by the branch
 	// selection pass to print .+8, an eight byte displacement from the PC.
@@ -384,11 +384,11 @@
 
 static void printAbsBranchOperand(MCInst *MI, unsigned OpNo, SStream *O)
 {
-    if (!MCOperand_isImm(MCInst_getOperand(MI, OpNo)))
-    {
+	if (!MCOperand_isImm(MCInst_getOperand(MI, OpNo)))
+	{
 		printOperand(MI, OpNo, O);
-        return;
-    }
+		return;
+	}
 
 	int tmp = (int)MCOperand_getImm(MCInst_getOperand(MI, OpNo)) * 4;
 	if (tmp >= 0) {
diff --git a/arch/PowerPC/PPCModule.c b/arch/PowerPC/PPCModule.c
index 2ed3497..89845b1 100644
--- a/arch/PowerPC/PPCModule.c
+++ b/arch/PowerPC/PPCModule.c
@@ -11,7 +11,7 @@
 
 static cs_err init(cs_struct *ud)
 {
-    MCRegisterInfo *mri;
+	MCRegisterInfo *mri;
 
 	// verify if requested mode is valid
 	if (ud->mode & ~(CS_MODE_LITTLE_ENDIAN | CS_MODE_32 | CS_MODE_64 |
diff --git a/arch/X86/X86Disassembler.c b/arch/X86/X86Disassembler.c
index ec0c07c..ca6949b 100644
--- a/arch/X86/X86Disassembler.c
+++ b/arch/X86/X86Disassembler.c
@@ -67,7 +67,7 @@
 #define ENTRY(x) X86_##x,
 	uint8_t llvmRegnums[] = {
 		ALL_REGS
-		0
+			0
 	};
 #undef ENTRY
 
@@ -149,10 +149,10 @@
 			MCInst_addOperand(mcInst, MCOperand_CreateReg(X86_XMM0 + ((uint32_t)immediate >> 4)));
 			return;
 		case TYPE_XMM256:
-            MCInst_addOperand(mcInst, MCOperand_CreateReg(X86_YMM0 + ((uint32_t)immediate >> 4)));
+			MCInst_addOperand(mcInst, MCOperand_CreateReg(X86_YMM0 + ((uint32_t)immediate >> 4)));
 			return;
 		case TYPE_XMM512:
-            MCInst_addOperand(mcInst, MCOperand_CreateReg(X86_ZMM0 + ((uint32_t)immediate >> 4)));
+			MCInst_addOperand(mcInst, MCOperand_CreateReg(X86_ZMM0 + ((uint32_t)immediate >> 4)));
 			return;
 		case TYPE_REL8:
 			if(immediate & 0x80)
@@ -196,7 +196,7 @@
 				return true;
 #define ENTRY(x)                                                      \
 		case EA_REG_##x:                                                    \
-				MCInst_addOperand(mcInst, MCOperand_CreateReg(X86_##x)); break;
+																			MCInst_addOperand(mcInst, MCOperand_CreateReg(X86_##x)); break;
 			ALL_REGS
 #undef ENTRY
 		default:
@@ -240,7 +240,7 @@
 			switch (insn->sibBase) {
 #define ENTRY(x)                                          \
 				case SIB_BASE_##x:                                  \
-					baseReg = MCOperand_CreateReg(X86_##x); break;
+																	baseReg = MCOperand_CreateReg(X86_##x); break;
 				ALL_SIB_BASES
 #undef ENTRY
 				default:
@@ -288,12 +288,12 @@
 					return true;
 #define ENTRY(x)                                          \
 				case SIB_INDEX_##x:                                 \
-						indexReg = MCOperand_CreateReg(X86_##x); break;
+																	indexReg = MCOperand_CreateReg(X86_##x); break;
 					EA_BASES_32BIT
-					EA_BASES_64BIT
-					REGS_XMM
-					REGS_YMM
-					REGS_ZMM
+						EA_BASES_64BIT
+						REGS_XMM
+						REGS_YMM
+						REGS_ZMM
 #undef ENTRY
 			}
 		} else {
@@ -343,7 +343,7 @@
 						//   placeholders to keep the compiler happy.
 #define ENTRY(x)                                        \
 					case EA_BASE_##x:                                 \
-							baseReg = MCOperand_CreateReg(X86_##x); break; 
+																	  baseReg = MCOperand_CreateReg(X86_##x); break; 
 						ALL_EA_BASES
 #undef ENTRY
 #define ENTRY(x) case EA_REG_##x:
diff --git a/arch/X86/X86DisassemblerDecoder.c b/arch/X86/X86DisassemblerDecoder.c
index 448f412..2d5dc4a 100644
--- a/arch/X86/X86DisassemblerDecoder.c
+++ b/arch/X86/X86DisassemblerDecoder.c
@@ -1157,7 +1157,7 @@
 		return 0;
 
 	insn->consumedDisplacement = TRUE;
-    insn->displacementOffset = (uint8_t)(insn->readerCursor - insn->startLocation);
+	insn->displacementOffset = (uint8_t)(insn->readerCursor - insn->startLocation);
 
 	switch (insn->eaDisplacement) {
 		case EA_DISP_NONE:
diff --git a/arch/X86/X86Mapping.c b/arch/X86/X86Mapping.c
index bd1e96a..a4ed5f8 100644
--- a/arch/X86/X86Mapping.c
+++ b/arch/X86/X86Mapping.c
@@ -6625,10 +6625,10 @@
 			insn->detail->regs_read_count = (uint8_t)count_positive(insns[i].regs_use);
 
 			memcpy(insn->detail->regs_write, insns[i].regs_mod, sizeof(insns[i].regs_mod));
-            insn->detail->regs_write_count = (uint8_t)count_positive(insns[i].regs_mod);
+			insn->detail->regs_write_count = (uint8_t)count_positive(insns[i].regs_mod);
 
 			memcpy(insn->detail->groups, insns[i].groups, sizeof(insns[i].groups));
-            insn->detail->groups_count = (uint8_t)count_positive(insns[i].groups);
+			insn->detail->groups_count = (uint8_t)count_positive(insns[i].groups);
 
 			if (insns[i].branch || insns[i].indirect_branch) {
 				// this insn also belongs to JUMP group. add JUMP group
@@ -6651,7 +6651,7 @@
 {
 	// is this a prefix instruction?
 	if (insn->id == X86_INS_LOCK || insn->id == X86_INS_REP ||
-		insn->id == X86_INS_REPNE) {
+			insn->id == X86_INS_REPNE) {
 		// then save this as prev_prefix
 		h->prev_prefix = (uint8_t)insn->id;
 		return false;
@@ -6662,7 +6662,8 @@
 		return true;
 	}
 
-	// cannot combine this with a prefix
+	// neither prefix instruction nor having previous instruction as prefix,
+	// so we cannot combine this with a prefix
 	return false;
 }
 
diff --git a/cs.c b/cs.c
index 02c8019..95d9924 100644
--- a/cs.c
+++ b/cs.c
@@ -10,6 +10,8 @@
 #include "utils.h"
 #include "MCRegisterInfo.h"
 
+#define INSN_CACHE_SIZE 64
+
 cs_err (*arch_init[MAX_ARCH])(cs_struct *) = { NULL };
 cs_err (*arch_option[MAX_ARCH]) (cs_struct *, cs_opt_type, size_t value) = { NULL };
 void (*arch_destroy[MAX_ARCH]) (cs_struct *) = { NULL };
@@ -87,7 +89,7 @@
 	if (!handle)
 		return CS_ERR_CSH;
 
-	struct cs_struct *ud = (cs_struct *)(uintptr_t)handle;
+	struct cs_struct *ud = (struct cs_struct *)(uintptr_t)handle;
 
 	return ud->errnum;
 }
@@ -128,7 +130,7 @@
 	archs_enable();
 
 	if (arch < CS_ARCH_MAX && arch_init[arch]) {
-		cs_struct *ud;
+		struct cs_struct *ud;
 
 		ud = cs_mem_calloc(1, sizeof(*ud));
 		if (!ud) {
@@ -164,7 +166,7 @@
 	if (!handle)
 		return CS_ERR_CSH;
 
-	struct cs_struct *ud = (cs_struct *)(uintptr_t)handle;
+	struct cs_struct *ud = (struct cs_struct *)(uintptr_t)handle;
 
 	switch (ud->arch) {
 		case CS_ARCH_X86:
@@ -191,21 +193,20 @@
 #define MIN(x, y) ((x) < (y) ? (x) : (y))
 
 // fill insn with mnemonic & operands info
-static void fill_insn(cs_struct *handle, cs_insn *insn, char *buffer, MCInst *mci,
+static void fill_insn(struct cs_struct *handle, cs_insn *insn, char *buffer, MCInst *mci,
 		PostPrinter_t postprinter, const uint8_t *code)
 {
 	if (handle->detail) {
 		// avoiding copy insn->detail
-		memcpy(insn, &mci->flat_insn, sizeof(*insn) - sizeof(insn->detail));
+		memcpy(insn, (uintptr_t)&mci->flat_insn, sizeof(*insn) - sizeof(insn->detail));
 
 		// NOTE: copy details in 2 chunks, since union is always put at address divisible by 8
 		// copy from @regs_read until @arm
-        memcpy(insn->detail,
-               (void*) ((uintptr_t) &mci->flat_insn + offsetof(cs_insn_flat, regs_read)),
+		memcpy(insn->detail, (void *)(&(mci->flat_insn)) + offsetof(cs_insn_flat, regs_read),
 				offsetof(cs_detail, arm) - offsetof(cs_detail, regs_read));
 		// then copy from @arm until end
-        memcpy((void *)((uintptr_t) (insn->detail) + offsetof(cs_detail, arm)),
-               (void *)((uintptr_t) (&(mci->flat_insn)) + offsetof(cs_insn_flat, arm)),
+		memcpy((void *)((uintptr_t)(insn->detail) + offsetof(cs_detail, arm)),
+				(void *)((uintptr_t)(&(mci->flat_insn)) + offsetof(cs_insn_flat, arm)),
 				sizeof(cs_detail) - offsetof(cs_detail, arm));
 	} else {
 		insn->address = mci->address;
@@ -263,7 +264,7 @@
 		return CS_ERR_OK;
 	}
 
-	cs_struct *handle = (cs_struct *)(uintptr_t)ud;
+	struct cs_struct *handle = (struct cs_struct *)(uintptr_t)ud;
 	if (!handle)
 		return CS_ERR_CSH;
 
@@ -281,7 +282,8 @@
 	if (f == 0) {
 		if (total == NULL)
 			return NULL;
-		// get the trailing insn from total buffer
+		// get the trailing insn from total buffer, which is at
+		// the end of the latest cache trunk
 		return (cs_insn *)((void*)((uintptr_t)total + total_size - sizeof(cs_insn)));
 	} else
 		return &cache[f - 1];
@@ -291,12 +293,12 @@
 // NOTE: caller must free() the allocated memory itself to avoid memory leaking
 size_t cs_disasm_ex(csh ud, const uint8_t *buffer, size_t size, uint64_t offset, size_t count, cs_insn **insn)
 {
-	cs_struct *handle = (cs_struct *)(uintptr_t)ud;
+	struct cs_struct *handle = (struct cs_struct *)(uintptr_t)ud;
 	MCInst mci;
 	uint16_t insn_size;
 	size_t c = 0;
 	unsigned int f = 0;
-	cs_insn insn_cache[64];
+	cs_insn insn_cache[INSN_CACHE_SIZE];
 	void *total = NULL;
 	size_t total_size = 0;
 
@@ -308,6 +310,9 @@
 
 	handle->errnum = CS_ERR_OK;
 
+	// reset previous prefix for X86
+	handle->prev_prefix = 0;
+
 	memset(insn_cache, 0, sizeof(insn_cache));
 
 	while (size > 0) {
@@ -340,7 +345,7 @@
 
 				if (f == ARR_SIZE(insn_cache)) {
 					// resize total to contain newly disasm insns
-					total_size += sizeof(insn_cache);
+					total_size += (sizeof(cs_insn) * INSN_CACHE_SIZE);
 					void *tmp = cs_mem_realloc(total, total_size);
 					if (tmp == NULL) {	// insufficient memory
 						cs_mem_free(total);
@@ -350,6 +355,7 @@
 
 					total = tmp;
 					memcpy((void*)((uintptr_t)total + total_size - sizeof(insn_cache)), insn_cache, sizeof(insn_cache));
+
 					// reset f back to 0
 					f = 0;
 				}
@@ -385,6 +391,7 @@
 
 		total = tmp;
 		memcpy((void*)((uintptr_t)total + total_size), insn_cache, f * sizeof(insn_cache[0]));
+
 	}
 
 	*insn = total;
@@ -407,7 +414,7 @@
 // return friendly name of regiser in a string
 const char *cs_reg_name(csh ud, unsigned int reg)
 {
-	cs_struct *handle = (cs_struct *)(uintptr_t)ud;
+	struct cs_struct *handle = (struct cs_struct *)(uintptr_t)ud;
 
 	if (!handle || handle->reg_name == NULL) {
 		return NULL;
@@ -418,7 +425,7 @@
 
 const char *cs_insn_name(csh ud, unsigned int insn)
 {
-	cs_struct *handle = (cs_struct *)(uintptr_t)ud;
+	struct cs_struct *handle = (struct cs_struct *)(uintptr_t)ud;
 
 	if (!handle || handle->insn_name == NULL) {
 		return NULL;
@@ -444,7 +451,7 @@
 	if (!ud)
 		return false;
 
-	struct cs_struct *handle = (cs_struct *)(uintptr_t)ud;
+	struct cs_struct *handle = (struct cs_struct *)(uintptr_t)ud;
 	if (!handle->detail) {
 		handle->errnum = CS_ERR_DETAIL;
 		return false;
@@ -458,7 +465,7 @@
 	if (!ud)
 		return false;
 
-    struct cs_struct *handle = (cs_struct *) (uintptr_t) ud;
+	struct cs_struct *handle = (struct cs_struct *)(uintptr_t)ud;
 	if (!handle->detail) {
 		handle->errnum = CS_ERR_DETAIL;
 		return false;
@@ -472,7 +479,7 @@
 	if (!ud)
 		return false;
 
-    struct cs_struct *handle = (cs_struct *) (uintptr_t) ud;
+	struct cs_struct *handle = (struct cs_struct *)(uintptr_t)ud;
 	if (!handle->detail) {
 		handle->errnum = CS_ERR_DETAIL;
 		return false;
@@ -486,7 +493,7 @@
 	if (!ud)
 		return -1;
 
-    struct cs_struct *handle = (cs_struct *) (uintptr_t) ud;
+	struct cs_struct *handle = (struct cs_struct *)(uintptr_t)ud;
 	if (!handle->detail) {
 		handle->errnum = CS_ERR_DETAIL;
 		return -1;
@@ -536,7 +543,7 @@
 	if (!ud)
 		return -1;
 
-    struct cs_struct *handle = (cs_struct *) (uintptr_t) ud;
+	struct cs_struct *handle = (struct cs_struct *)(uintptr_t)ud;
 	if (!handle->detail) {
 		handle->errnum = CS_ERR_DETAIL;
 		return -1;