static void resolve_var_overlaps(RzAnalysisVar *var) {
	// We do not touch variables stored in registers
	// or arguments
	if (!var->type || var->isarg || var->kind == RZ_ANALYSIS_VAR_KIND_REG) {
		return;
	}
	// We ignore overlaps between atomic types because current
	// detection of the variable default type is suboptimal.
	// The default type is `intXX_t` where XX is the bitness of the platform
	// But some binaries can use variables of the smaller size by default
	// and Rizin doesn't detect bitwidth perfectly. Thus, we skip ATOMIC
	// types in the overlap detection.
	if (rz_type_is_atomic(var->fcn->analysis->typedb, var->type)) {
		return;
	}
	ut64 varsize = rz_type_db_get_bitsize(var->fcn->analysis->typedb, var->type) / 8;
	if (!varsize) {
		return;
	}
	// delete variables which are overlaid by the variable type
	RzPVector *cloned_vars = (RzPVector *)rz_vector_clone((RzVector *)&var->fcn->vars);
	void **it;
	rz_pvector_foreach (cloned_vars, it) {
		RzAnalysisVar *other = *it;
		if (!other) {
			continue;
		}
		if (strcmp(var->name, other->name) && var_overlap(var, other, varsize)) {
			rz_analysis_var_delete(other);
		}
	}
	rz_pvector_free(cloned_vars);
}
static void resolve_var_overlaps(RzAnalysisVar *var) {
	 
	 
	if (!var->type || var->isarg || var->kind == RZ_ANALYSIS_VAR_KIND_REG) {
		return;
	}
	 
	 
	 
	 
	 
	 
	if (rz_type_is_atomic(var->fcn->analysis->typedb, var->type)) {
		return;
	}
	ut64 varsize = rz_type_db_get_bitsize(var->fcn->analysis->typedb, var->type) / 8;
	if (!varsize) {
		return;
	}
	 
	RzPVector *cloned_vars = (RzPVector *)rz_vector_clone((RzVector *)&var->fcn->vars);
	void **it;
	rz_pvector_foreach (cloned_vars, it) {
		RzAnalysisVar *other = *it;
		if (!other) {
			continue;
		}
		if (strcmp(var->name, other->name) && var_overlap(var, other, varsize)) {
			rz_analysis_var_delete(other);
		}
	}
	rz_pvector_free(cloned_vars);
}