removed order dependency in DEFAULT references

diff --git a/libasn1fix/asn1fix.c b/libasn1fix/asn1fix.c
index 33123fc..7bfb903 100644
--- a/libasn1fix/asn1fix.c
+++ b/libasn1fix/asn1fix.c
@@ -262,6 +262,12 @@
 			continue;
 
 		/*
+		 * Dereference DEFAULT values.
+		 */
+		ret = asn1f_recurse_expr(arg, asn1f_fix_dereference_defaults);
+		RET2RVAL(ret, rvalue);
+
+		/*
 		 * Check semantic validity of constraints.
 		 */
 		ret = asn1f_recurse_expr(arg, asn1f_check_constraints);
diff --git a/libasn1fix/asn1fix_derefv.c b/libasn1fix/asn1fix_derefv.c
index eb67ac3..261425c 100644
--- a/libasn1fix/asn1fix_derefv.c
+++ b/libasn1fix/asn1fix_derefv.c
@@ -15,6 +15,18 @@
 		}
 	}
 
+	return r_value;
+}
+
+
+/*
+ * Dereference DEFAULT values
+ */
+int
+asn1f_fix_dereference_defaults(arg_t *arg) {
+	asn1p_expr_t *expr = arg->expr;
+	int r_value = 0;
+
 	if(expr->marker.default_value) {
 		arg_t tmparg = *arg;
 		asn1p_expr_t tmpexpr = *expr;
diff --git a/libasn1fix/asn1fix_derefv.h b/libasn1fix/asn1fix_derefv.h
index 9315385..3964f53 100644
--- a/libasn1fix/asn1fix_derefv.h
+++ b/libasn1fix/asn1fix_derefv.h
@@ -3,4 +3,6 @@
 
 int asn1f_fix_dereference_values(arg_t *);
 
+int asn1f_fix_dereference_defaults(arg_t *);
+
 #endif	/* _ASN1FIX_DEREFV_H_ */