diff --git a/afl_transforms/tools/zax/test/test_graph.sh b/afl_transforms/tools/zax/test/test_graph.sh
new file mode 100755
index 0000000000000000000000000000000000000000..9410509a56f95a421a483c50c27524f17d13e33d
--- /dev/null
+++ b/afl_transforms/tools/zax/test/test_graph.sh
@@ -0,0 +1,94 @@
+PUT=test_mystrlen.exe
+MYARG="123456789a"
+
+ZAFL_PUT="$PUT.zafl $PUT.zafl.c $PUT.zafl.g $PUT.zafl.d $PUT.zafl.d.g $PUT.zafl.c.d.g"
+
+log_msg()
+{
+	echo "TEST PASS: $1"
+}
+
+log_error()
+{
+	echo "TEST FAIL: $1"
+	exit 1
+}
+
+build_one()
+{
+	orig=$1
+	zafl=$2
+	shift
+	shift
+	zafl.sh $orig $zafl $@
+	if [ $? -eq 0 ]; then
+		log_msg "build $zafl" 
+	else
+		log_error "build $zafl" 
+	fi
+}
+
+build_all()
+{
+	g++ test_mystrlen.cpp -o $PUT
+
+	build_one $PUT $PUT.zafl -v -t $PUT.analysis 
+	build_one $PUT $PUT.zafl.c -c -v -t $PUT.analysis.c
+	build_one $PUT $PUT.zafl.g -g -v -t $PUT.analysis.g
+	build_one $PUT $PUT.zafl.d -d -v -t $PUT.analysis.d
+	build_one $PUT $PUT.zafl.d.g -d -g -v -t $PUT.analysis.d.g
+	build_one $PUT $PUT.zafl.c.d.g -d -g -v -t $PUT.analysis.c.d.g
+}
+
+clean_all()
+{
+	rm -fr ${PUT}* 
+}
+
+verify_output()
+{
+	./$PUT $MYARG TR > $PUT.output.orig
+
+	for p in $ZAFL_PUT
+	do
+		echo "Program under test: $p"
+		./${p} $MYARG > $p.output
+		diff $PUT.output.orig $p.output
+		if [ ! $? -eq 0 ]; then
+			log_error "output verification failure: $p.output"
+		fi
+
+	done
+
+	log_msg "output verified"
+}
+
+verify_afl_map()
+{
+	for p in $ZAFL_PUT
+	do
+		echo "Computing trace maps for input $MYARG"
+		afl-showmap -o $p.map -- ./$p $MYARG
+		cut -d':' -f2 $p.map | sort -r | head -n 1 > $p.max_count
+	done
+
+	for p in $ZAFL_PUT
+	do
+		diff $PUT.zafl.max_count $p.max_count >/dev/null 2>&1
+		if [ $? -eq 0 ]; then
+			log_msg "maximum edge counter for $PUT.zafl and $p match"
+		else
+			echo -n "Maximum count for $PUT: "
+			cat $PUT.zafl.max_count
+			echo -n "Maximum count for $p: "
+			cat $p.max_count
+			log_error "maximum edge counter does not match for $PUT.zafl and $p"
+		fi
+	done
+}
+
+clean_all
+build_all
+verify_output
+verify_afl_map
+clean_all
diff --git a/afl_transforms/tools/zax/test/test_mystrlen.cpp b/afl_transforms/tools/zax/test/test_mystrlen.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e933cd17394fec957693b574e1657fbb554a2138
--- /dev/null
+++ b/afl_transforms/tools/zax/test/test_mystrlen.cpp
@@ -0,0 +1,20 @@
+#include <iostream>
+using namespace std;
+
+size_t my_strlen(char *arg)
+{
+	auto count = 0;
+	while (*arg!='\0')
+	{
+		count++;
+		arg++;
+	}
+
+	return count;
+}
+
+int main(int argc, char **argv)
+{
+	if (argc > 1)
+		cout << "length: " << my_strlen(argv[1]) << endl;
+}
diff --git a/afl_transforms/tools/zax/zax_base.cpp b/afl_transforms/tools/zax/zax_base.cpp
index ccd6b4c1cbdb772fefb233886e9d95eb2651abc8..754441f9eee3468152c0917f0f57c5923487273e 100644
--- a/afl_transforms/tools/zax/zax_base.cpp
+++ b/afl_transforms/tools/zax/zax_base.cpp
@@ -833,6 +833,8 @@ int ZaxBase_t::execute()
 
 		if (m_verbose)
 		{
+ 			getFileIR()->assembleRegistry();
+		 	getFileIR()->setBaseIDS();
 			cout << "Post transformation CFG for " << f->getName() << ":" << endl;
 			auto post_cfg=ControlFlowGraph_t::factory(f);	
 			cout << *post_cfg << endl;