From b6283ba8956c5c36aad0276755cdb304b9d15b20 Mon Sep 17 00:00:00 2001
From: an7s <an7s@git.zephyr-software.com>
Date: Thu, 3 Nov 2011 14:42:18 +0000
Subject: [PATCH] adding more tests

Former-commit-id: d4b064690b54136bdbfaff8cc46de7068b289f66
---
 .gitattributes                      |  15 +
 tests/simple/Makefile               |  63 ++
 tests/simple/banner_O3.exe          | Bin 0 -> 8052 bytes
 tests/simple/banner_nop.exe         | Bin 0 -> 8079 bytes
 tests/simple/banner_test.sh         |  10 +
 tests/simple/cal_O3.exe             | Bin 0 -> 7548 bytes
 tests/simple/cal_nop.exe            | Bin 0 -> 7548 bytes
 tests/simple/cal_test.sh            | 107 ++++
 tests/simple/dumbledore_cmd_O3.exe  | Bin 0 -> 7284 bytes
 tests/simple/dumbledore_cmd_nop.exe | Bin 0 -> 7314 bytes
 tests/simple/dumbledore_test.sh     |  16 +
 tests/simple/jack_tests/banner.c    | 193 ++++++
 tests/simple/jack_tests/cal.c       | 206 +++++++
 tests/simple/jack_tests/grep.c      | 523 ++++++++++++++++
 tests/simple/jack_tests/k1.c        |  43 ++
 tests/simple/jack_tests/od.c        | 893 ++++++++++++++++++++++++++++
 16 files changed, 2069 insertions(+)
 create mode 100644 tests/simple/Makefile
 create mode 100755 tests/simple/banner_O3.exe
 create mode 100755 tests/simple/banner_nop.exe
 create mode 100644 tests/simple/banner_test.sh
 create mode 100755 tests/simple/cal_O3.exe
 create mode 100755 tests/simple/cal_nop.exe
 create mode 100644 tests/simple/cal_test.sh
 create mode 100755 tests/simple/dumbledore_cmd_O3.exe
 create mode 100755 tests/simple/dumbledore_cmd_nop.exe
 create mode 100644 tests/simple/dumbledore_test.sh
 create mode 100644 tests/simple/jack_tests/banner.c
 create mode 100644 tests/simple/jack_tests/cal.c
 create mode 100644 tests/simple/jack_tests/grep.c
 create mode 100644 tests/simple/jack_tests/k1.c
 create mode 100644 tests/simple/jack_tests/od.c

diff --git a/.gitattributes b/.gitattributes
index 2751d1e39..9cb60e9cc 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -327,6 +327,21 @@ tests/coreutils/Makefile -text
 tests/coreutils/bzip2_manual_tests.sh -text
 tests/coreutils/cat_manual_tests.sh -text
 tests/coreutils/ls_manual_tests.sh -text
+tests/simple/Makefile -text
+tests/simple/banner_O3.exe -text
+tests/simple/banner_nop.exe -text
+tests/simple/banner_test.sh -text
+tests/simple/cal_O3.exe -text
+tests/simple/cal_nop.exe -text
+tests/simple/cal_test.sh -text
+tests/simple/dumbledore_cmd_O3.exe -text
+tests/simple/dumbledore_cmd_nop.exe -text
+tests/simple/dumbledore_test.sh -text
+tests/simple/jack_tests/banner.c -text
+tests/simple/jack_tests/cal.c -text
+tests/simple/jack_tests/grep.c -text
+tests/simple/jack_tests/k1.c -text
+tests/simple/jack_tests/od.c -text
 tools/Makefile -text
 tools/cover/Makefile -text
 tools/cover/cover.cpp -text
diff --git a/tests/simple/Makefile b/tests/simple/Makefile
new file mode 100644
index 000000000..7316b2aff
--- /dev/null
+++ b/tests/simple/Makefile
@@ -0,0 +1,63 @@
+progs=discrete_xform.peasoup integration_simp.peasoup sieve.peasoup knapsack.peasoup dumbledore_cmd_nop.peasoup dumbledore_cmd_O3.peasoup quick_sort.peasoup hanoi.peasoup merge_sort.peasoup k1.peasoup banner_nop.peasoup banner_O3.peasoup cal_nop.peasoup cal_O3.peasoup
+
+ps_analyze_flags="--step ilr=off --step integertransform=off --step manual_test=on --step concolic=off --step isr=off"
+
+ps_analyze_concolic_flags="--step ilr=off --step integertransform=off --step manual_test=off --step concolic=on --step isr=off"
+
+discrete_xform.peasoup:
+	${PEASOUP_HOME}/tools/ps_analyze.sh ${SECURITY_TRANSFORMS_HOME}/tests/simple/discrete_fourier_transform.exe discrete_xform.peasoup ${ps_analyze_flags} --manual_test_script ${SECURITY_TRANSFORMS_HOME}/tests/simple/discrete_xform_test.sh
+
+integration_simp.peasoup:
+	${PEASOUP_HOME}/tools/ps_analyze.sh ${SECURITY_TRANSFORMS_HOME}/tests/simple/integration_simp.exe integration_simp.peasoup ${ps_analyze_flags} --manual_test_script ${SECURITY_TRANSFORMS_HOME}/tests/simple/integration_simp_test.sh
+
+sieve.peasoup:
+	${PEASOUP_HOME}/tools/ps_analyze.sh ${SECURITY_TRANSFORMS_HOME}/tests/simple/sieve.exe sieve.peasoup ${ps_analyze_flags} --manual_test_script ${SECURITY_TRANSFORMS_HOME}/tests/simple/sieve_test.sh
+
+knapsack.peasoup:
+	${PEASOUP_HOME}/tools/ps_analyze.sh ${SECURITY_TRANSFORMS_HOME}/tests/simple/knapsack_problem.exe knapsack.peasoup ${ps_analyze_flags} --manual_test_script ${SECURITY_TRANSFORMS_HOME}/tests/simple/knapsack_test.sh
+
+dumbledore_cmd_nop.peasoup:
+	${PEASOUP_HOME}/tools/ps_analyze.sh ${SECURITY_TRANSFORMS_HOME}/tests/simple/dumbledore_cmd_nop.exe dumbledore_cmd_nop.peasoup ${ps_analyze_flags} --manual_test_script ${SECURITY_TRANSFORMS_HOME}/tests/simple/dumbledore_test.sh
+
+dumbledore_cmd_O3.peasoup:
+	${PEASOUP_HOME}/tools/ps_analyze.sh ${SECURITY_TRANSFORMS_HOME}/tests/simple/dumbledore_cmd_O3.exe dumbledore_cmd_O3.peasoup ${ps_analyze_flags} --manual_test_script ${SECURITY_TRANSFORMS_HOME}/tests/simple/dumbledore_test.sh
+
+dumbledore_cmd_O3_concolic.peasoup:
+	${PEASOUP_HOME}/tools/ps_analyze.sh ${SECURITY_TRANSFORMS_HOME}/tests/simple/dumbledore_cmd_O3.exe dumbledore_cmd_O3.peasoup ${ps_analyze_concolic_flags} 
+
+quick_sort.peasoup:
+	${PEASOUP_HOME}/tools/ps_analyze.sh ${SECURITY_TRANSFORMS_HOME}/tests/simple/quick_sort.exe quick_sort.peasoup ${ps_analyze_flags} --manual_test_script ${SECURITY_TRANSFORMS_HOME}/tests/simple/quick_sort_test.sh
+
+hanoi.peasoup:
+	${PEASOUP_HOME}/tools/ps_analyze.sh ${SECURITY_TRANSFORMS_HOME}/tests/simple/hanoi.exe hanoi.peasoup ${ps_analyze_flags} --manual_test_script ${SECURITY_TRANSFORMS_HOME}/tests/simple/hanoi_test.sh
+
+merge_sort.peasoup:
+	${PEASOUP_HOME}/tools/ps_analyze.sh ${SECURITY_TRANSFORMS_HOME}/tests/simple/merge_sort.exe merge_sort.peasoup ${ps_analyze_flags} --manual_test_script ${SECURITY_TRANSFORMS_HOME}/tests/simple/merge_sort_test.sh
+
+k1.peasoup:
+	${PEASOUP_HOME}/tools/ps_analyze.sh ${SECURITY_TRANSFORMS_HOME}/tests/simple/k1.exe k1.peasoup ${ps_analyze_flags} --manual_test_script ${SECURITY_TRANSFORMS_HOME}/tests/simple/k1_test.sh
+
+banner_nop.peasoup:
+	${PEASOUP_HOME}/tools/ps_analyze.sh ${SECURITY_TRANSFORMS_HOME}/tests/simple/banner_nop.exe banner_nop.peasoup ${ps_analyze_flags} --manual_test_script ${SECURITY_TRANSFORMS_HOME}/tests/simple/banner_test.sh
+
+banner_O3.peasoup:
+	${PEASOUP_HOME}/tools/ps_analyze.sh ${SECURITY_TRANSFORMS_HOME}/tests/simple/banner_O3.exe banner_O3.peasoup ${ps_analyze_flags} --manual_test_script ${SECURITY_TRANSFORMS_HOME}/tests/simple/banner_test.sh
+
+cal_O3.peasoup:
+	${PEASOUP_HOME}/tools/ps_analyze.sh ${SECURITY_TRANSFORMS_HOME}/tests/simple/cal_O3.exe cal_O3.peasoup ${ps_analyze_flags} --manual_test_script ${SECURITY_TRANSFORMS_HOME}/tests/simple/cal_test.sh
+
+cal_O3_concolic.peasoup:
+	${PEASOUP_HOME}/tools/ps_analyze.sh ${SECURITY_TRANSFORMS_HOME}/tests/simple/cal_O3.exe cal_O3_concolic.peasoup ${ps_analyze_concolic_flags}
+
+
+cal_nop.peasoup:
+	${PEASOUP_HOME}/tools/ps_analyze.sh ${SECURITY_TRANSFORMS_HOME}/tests/simple/cal_nop.exe cal_nop.peasoup ${ps_analyze_flags} --manual_test_script ${SECURITY_TRANSFORMS_HOME}/tests/simple/cal_test.sh
+
+
+
+
+clean:
+	rm -f ${progs}
+	rm -Rf peasoup_executable_directory.*
+	${PEASOUP_HOME}/tools/db/drop_my_tables.sh
+	${PEASOUP_HOME}/tools/db/pdb_setup.sh
\ No newline at end of file
diff --git a/tests/simple/banner_O3.exe b/tests/simple/banner_O3.exe
new file mode 100755
index 0000000000000000000000000000000000000000..8bda73c386f1d556a5039009e9195fb53dd6182c
GIT binary patch
literal 8052
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
O_ih|h;xtmaSo|Ajbd4YY

literal 0
HcmV?d00001

diff --git a/tests/simple/banner_nop.exe b/tests/simple/banner_nop.exe
new file mode 100755
index 0000000000000000000000000000000000000000..2dd6f18cc49d78af7569605541293efaaec56eb5
GIT binary patch
literal 8079
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
E7e(mL=l}o!

literal 0
HcmV?d00001

diff --git a/tests/simple/banner_test.sh b/tests/simple/banner_test.sh
new file mode 100644
index 000000000..5c69984a1
--- /dev/null
+++ b/tests/simple/banner_test.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/banner_nop.exe hello > outputfile1
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./banner.exe hello > outputfile1" --prog banner.exe  --outfile outputfile1 --name hello
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/banner_nop.exe 12345 > outputfile1
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./banner.exe 12345 > outputfile1" --prog banner.exe  --outfile outputfile1 --name numbers
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/banner_nop.exe Hello World 1234 > outputfile1
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./banner.exe Hello World 1234 > outputfile1" --prog banner.exe  --outfile outputfile1 --name HelloWorld1234
\ No newline at end of file
diff --git a/tests/simple/cal_O3.exe b/tests/simple/cal_O3.exe
new file mode 100755
index 0000000000000000000000000000000000000000..d6e0ea1762a7fde37733683cc42e6478f0aa8e91
GIT binary patch
literal 7548
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
Oh4b%~<9~q*7V*D(-<p~L

literal 0
HcmV?d00001

diff --git a/tests/simple/cal_nop.exe b/tests/simple/cal_nop.exe
new file mode 100755
index 0000000000000000000000000000000000000000..780f7dc3b7e04e2e8a62572005d78318e1265369
GIT binary patch
literal 7548
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

literal 0
HcmV?d00001

diff --git a/tests/simple/cal_test.sh b/tests/simple/cal_test.sh
new file mode 100644
index 000000000..1bc6e58c6
--- /dev/null
+++ b/tests/simple/cal_test.sh
@@ -0,0 +1,107 @@
+#!/bin/sh
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/cal_nop.exe > outputfile1
+exitcode=$?
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./cal_nop.exe > outputfile1" --prog cal_nop.exe  --outfile outputfile1 --name NoInput --exitcode $exitcode
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/cal_nop.exe 999999 > outputfile1
+exitcode=$?
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./cal_nop.exe 999999 > outputfile1" --prog cal_nop.exe  --outfile outputfile1 --name BadYear1 --exitcode $exitcode
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/cal_nop.exe 0 > outputfile1
+exitcode=$?
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./cal_nop.exe 0 > outputfile1" --prog cal_nop.exe  --outfile outputfile1 --name BadYear2 --exitcode $exitcode
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/cal_nop.exe 0 2011 > outputfile1
+exitcode=$?
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./cal_nop.exe 0 2011 > outputfile1" --prog cal_nop.exe  --outfile outputfile1 --name BadMonth1 --exitcode $exitcode
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/cal_nop.exe 13 2011 > outputfile1
+exitcode=$?
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./cal_nop.exe 13 2011 > outputfile1" --prog cal_nop.exe  --outfile outputfile1 --name BadMonth2 --exitcode $exitcode
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/cal_nop.exe 13 0 > outputfile1
+exitcode=$?
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./cal_nop.exe 13 0 > outputfile1" --prog cal_nop.exe  --outfile outputfile1 --name BadYearMonth1 --exitcode $exitcode
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/cal_nop.exe 0 999999 > outputfile1
+exitcode=$?
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./cal_nop.exe 0 999999 > outputfile1" --prog cal_nop.exe  --outfile outputfile1 --name BadYearMonth2 --exitcode $exitcode
+
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/cal_nop.exe 2011 > outputfile1
+exitcode=$?
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./cal_nop.exe 2011 > outputfile1" --prog cal_nop.exe  --outfile outputfile1 --name Year2001 --exitcode $exitcode
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/cal_nop.exe 1500 > outputfile1
+exitcode=$?
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./cal_nop.exe 1500 > outputfile1" --prog cal_nop.exe  --outfile outputfile1 --name Year1500 --exitcode $exitcode
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/cal_nop.exe 1 > outputfile1
+exitcode=$?
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./cal_nop.exe 1 > outputfile1" --prog cal_nop.exe  --outfile outputfile1 --name Year1 --exitcode $exitcode
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/cal_nop.exe 2000 > outputfile1
+exitcode=$?
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./cal_nop.exe 2000 > outputfile1" --prog cal_nop.exe  --outfile outputfile1 --name LeapYear2000 --exitcode $exitcode
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/cal_nop.exe 1804 > outputfile1
+exitcode=$?
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./cal_nop.exe 1804 > outputfile1" --prog cal_nop.exe  --outfile outputfile1 --name LeapYear1804 --exitcode $exitcode
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/cal_nop.exe 1 2011 > outputfile1
+exitcode=$?
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./cal_nop.exe 1 2011 > outputfile1" --prog cal_nop.exe  --outfile outputfile1 --name Jan2011 --exitcode $exitcode
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/cal_nop.exe 2 2011 > outputfile1
+exitcode=$?
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./cal_nop.exe 2 2011 > outputfile1" --prog cal_nop.exe  --outfile outputfile1 --name Feb2011 --exitcode $exitcode
+
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/cal_nop.exe 3 2011 > outputfile1
+exitcode=$?
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./cal_nop.exe 3 2011 > outputfile1" --prog cal_nop.exe  --outfile outputfile1 --name March2011 --exitcode $exitcode
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/cal_nop.exe 4 2011 > outputfile1
+exitcode=$?
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./cal_nop.exe 4 2011 > outputfile1" --prog cal_nop.exe  --outfile outputfile1 --name April2011 --exitcode $exitcode
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/cal_nop.exe 5 2011 > outputfile1
+exitcode=$?
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./cal_nop.exe 5 2011 > outputfile1" --prog cal_nop.exe  --outfile outputfile1 --name May2011 --exitcode $exitcode
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/cal_nop.exe 6 2011 > outputfile1
+exitcode=$?
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./cal_nop.exe 6 2011 > outputfile1" --prog cal_nop.exe  --outfile outputfile1 --name June2011 --exitcode $exitcode
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/cal_nop.exe 7 2011 > outputfile1
+exitcode=$?
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./cal_nop.exe 7 2011 > outputfile1" --prog cal_nop.exe  --outfile outputfile1 --name July2011 --exitcode $exitcode
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/cal_nop.exe 8 2011 > outputfile1
+exitcode=$?
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./cal_nop.exe 8 2011 > outputfile1" --prog cal_nop.exe  --outfile outputfile1 --name August2011 --exitcode $exitcode
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/cal_nop.exe 9 2011 > outputfile1
+exitcode=$?
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./cal_nop.exe 9 2011 > outputfile1" --prog cal_nop.exe  --outfile outputfile1 --name Sept2011 --exitcode $exitcode
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/cal_nop.exe 10 2011 > outputfile1
+exitcode=$?
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./cal_nop.exe 10 2011 > outputfile1" --prog cal_nop.exe  --outfile outputfile1 --name Oct2011 --exitcode $exitcode
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/cal_nop.exe 11 2011 > outputfile1
+exitcode=$?
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./cal_nop.exe 11 2011 > outputfile1" --prog cal_nop.exe  --outfile outputfile1 --name Nov2011 --exitcode $exitcode
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/cal_nop.exe 12 2011 > outputfile1
+exitcode=$?
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./cal_nop.exe 12 2011 > outputfile1" --prog cal_nop.exe  --outfile outputfile1 --name Dec2011 --exitcode $exitcode
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/cal_nop.exe 2 1952 > outputfile1
+exitcode=$?
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./cal_nop.exe 2 1952 > outputfile1" --prog cal_nop.exe  --outfile outputfile1 --name LeapYearFeb1952 --exitcode $exitcode
+
+
+rm outputfile1
+
diff --git a/tests/simple/dumbledore_cmd_O3.exe b/tests/simple/dumbledore_cmd_O3.exe
new file mode 100755
index 0000000000000000000000000000000000000000..deeaa78f185d77653eff2dd8b7af80f0cdc58aab
GIT binary patch
literal 7284
zcmeHMU2Igx6`r-%up}=2Tfii4bX81aB(t%>5EHcxU@ykR{F}cLxU6@ty<6M6?(SV;
zr%4-k<0PxaDQf%Bs%lzfDXNen(NqE|BI48tO2va4rIJ;l%55RCYc~Rwrc`y=e&5W_
zdTm;%ed~iqI(N=D=ggdQ&z!k;?%Z#9TedkI4xvk)$QMNC5>8hg>Y5TIsS}29i7N4g
zcw8((6J>R;KnEl{pi=?boS=Nlfb04p2bBSnDC5{9S=bj8SS$pI{Y9~o7ZwRo_#>x_
zRE!QaAljuo50wGA0U2o&m_#{kkhVjAJ8Y90fk|4n_qH7Xe5mOD`ykJ?e-D}@_NVVp
zb%olV>I$sw3Wejno>;`QPRZb!lsD}<08aVIG2yE0>qgDkP(JqPGaoNGYfUeI?I*wd
z_>;oG<ca>BlxZKx%Xpy9Ews=3Cs9r;^$cNvmHa!;{c)IlZlRto2ADM(pe_Y9&BGh#
z;m3eyUURw_gAz`HX?Ao+!e-3&MQzg*2#KGe*eJ~A-DnMj!e%^X1)$dx4TbG?(;w^v
zfWE(zyxHyxb)kVBGoy6-LSfO=(!907T<59Fay40QJz8a9mOACVJHRpSBo=ol^chC`
z2zc2palY_pu)Q+0gwgA!GRhs~&msor$4=K`)K1n2u8TD$p^!Ch`atsb{=~F%f_;wm
zj|^7`k^0U|I-MT)&@PyG0<9Bwd3hdv4j;WflHPD1Bd1r-;L1Mf)wB>KJ2{SS>D9Cp
zq-=6jVp<H+<;h`*X*pO<d=413EVX|=p8S2{)}1}A`+}P>AHhAi>^&GX2Ar;m3sAgw
zdQQps{mK_BFr0`#d&WS0sT^MQPq}gZ;2(L3DaWR<*b{^2X&^D|7@|trJwUNk-!vAT
zxLUvg9EmH=qsK-D?azzB_nxFa#!pO_pQ(WEz_49<k!@g>Tys{kEj@aDWWGO#4kD7(
zskqBJ!xfSA-l`o=y<AvyetFU5UnTzji2c&Q^}%B|;;yM!`{{w}cIg}Le7IF~-n~dE
z#Q*fSYg`{!8w+lT_|qxxjpX8#cQo1LOnE;_Hn~#Xv1C(W%6l`}RGjjTC!5?U?=5S6
z0j<SXC9YH-J#HQwsU3!q(-<}X4fkS<pSWKhzdQAt+Tp1)gD1tr*B+$PsCj?4?i@Op
zn66KG3$4^L>2hmjb?t|VmtA@G3zsVqm-of%PS?-*jQh*m@x@mQ%F(v<T4SY)Le$PO
z$Pp4I+Jplm7hRS*6jjcOlISt<hkvHi2nbAA>!r1#fh4*muGAkllhX*koTpTeb2ebX
z+F^w3rAl|aaO!y_S8?Ng<;Lx5qth)?jg{^pItHeEs7f&vL)D5ghH4a3IaH^Zs-b!?
zlVwOQ1n0d89~{iiDdICfA27cYyWw&F$oE&m@9Bz(_pwk0FO_3}!33{su6>Zs8%W!g
zwV$TE#k_0878T~tm2_67zxy+4C9XO)J&67;aiv1eSE`~Csg%j*Gkh;3?x*dtOXS*5
zC#Ia~(NsQ~;`daNW_9(NErd4{({SYo)+h7Ff#<-X(2KrkzzBtn)+io7p>T(24f?{J
zMqeaeZLE%Y9ucD1h+6(gcefP|7<SNSQ)YBnw&626qP~D-MB0tjej^fwG!!#@u~?`h
z3~ig87s^5e79y|^frSVxL|`ET|JM<~o<r`lbxmivW8<d05LAV4VtibPo0;#RQ~0+0
z>w|RUB5Hnv)qfM;5~#<3`R4BfJqlv~Wgr&rJMLk}BEMn5b34gT>=hsv#+RSlsQFFC
zj|1*0S!2%_8OHeVEkd8}pnew^?EhT&&8$0xVe9LlH$iWKbbBM1riO-RjH&}|@vt2?
z>O6Ix^=s?m5^Y$cun?YDU$^aRLv2S@9n>7Y`mAV=@Ps3_<=L{ed9Cg1$e@mJ+|w2h
z;Tt*>5FVnSFBTM@KwlW+soIVz$w@033q`_nfC*XD>Y~14db(`k!S)ST+v>%&9RQ+8
zz-Rk}#|oP5QD3(uJbpV8jlqDbzT(F~7{u2d^20y`9dYr<(Nxd27_`;q&(^W|Z|cXP
z#ChU8%X1I_&ZRDtv8)2&=tJts^9l$IU|smV%~A`}dO_q@5PFqTqApr*J0NqBcA1~2
zpjQo^dC5XOQX}Y7<Pi0kzZWxh=j-i)oH<NA=Jgo#PJpK`VC7iM?}H%bHubm;>cKGo
zb)hcHaS(Hudd%N<!EkM9yKE<Qf|&E<nfJqBHiOT#3n*R$;e%fG5zJpW!6eq>@m`4&
zAg#xB=7OGqHtKOrYrRw8=_}j0-m9Qj16~*EvAhn_dWWHR7<zl8L|v#y`Zh@G@l5R;
z^r}I+Fm^2818F@zUv9zyoH1mJw)<8_k8!yVz5CD$X0?<}!nZ*jk9sHYg?R#j(_^41
z%bx>JJ-Q^%+i+OLc<G}1TtI`?<H3OYKj>Y~(c=L?1@!b798>cn;2C4umFIZS8wJn#
zWuYGZxB=33c~*1h-;77yU+3uY`Fam}^W#Uo-{$BQ<FmFH6Ttk_Mf*372HK~8Jo%`A
zo&jDLt#=y@^sgo(px!F2l#x-+=Q_vI<yq)`q5*2^u(0Nw=`xNN#~v8_EE?8=Xct{&
zF6WL{g9Ez8oQ`@ts6JHqJYu6d=~d^X3abJ5d{J0g;B!P_b=Q1eD9k5~dM+r;8CC0F
zVKtljJ(ZuyEUsrI=ZZwZx?q(r)b}#ir^0;lsCB5YnklX~g}HLoS+&ATCFc537)gM_
zb)qmMC**oiSiWs#-Yd+vF5bz=ABEKun|Z7--`2>3ELLxI=B1J^mvZKx!hEY^zK}l(
z^EglClfpQW$SL{av1}f&*(vU(dB<Fr#15R)Vw$u5Iq*iQ0@nUHu$$NbJf4Y9o>(fL
zqa5~`4-T<Xd>J**_c)WpLDZXHRpV1XH*aX4FTLU%`~ARto}hwmiTD=kT>C!&K9`9%
z$NMQ2Glk>*0=$loBX5Nm1J?H^@=C?zJUj!e<L$^>CJNx7j;A5Y1^*539F&<@3VQ}H
zpR<4xKMAah0cPVoyaSl|!FcdodvA`M+0Y5B^Qjak`CpwUe-n5nr~eOuwSUF%?<}x8
zGyf%d<>CS`PhT;#D9I}mSAcnh%Xy*y9|6mwTHs>DYaCb?`ZEK}vpZ%|3Fgm%CHsZU
z_|#tn%+p79D}nt&;N0=bfO|0C??6s_p94M%`+%Y}Z>iV>%(LVb7=ZFG0rNd5<$O~5
zqjt=Wx3_!zIJ|FY-M!CjY2M$8KLDoLI0x-$$Poo1W=B_~&DUkhotNp0_X_N)db%vz
z3V5EbSywA4FhhY}qV+;<*UUh?ySq=@@$PDrX149yveRp7L^GP7wIa89(h7!X>#_oo
zsAc-Q1N6G7W%t%CE#~fR+xB}~&DJejTfFq1yGPR(jr#gb9Q4g?kbgOZ*?45vmYvNF
zf?GrN&jM=l2ZlcuH|3Ty+dSv*h`HmWxzFkd#jqo8=)wV^6%%HAj~RRc1I+#(*}Pf*
z{otRD%z*R%kjyI8Jp8X^j%R^b#Kc)<pv!_4IXOB|S)b*W*)*}s%{o5!56!H#I<bp8
zXc-)N><L!xk)xI`u;0c{o({9Ox0iw2SijMO^HH<MZ`#3lxYN_tE9B1|8D#M<luP{x

literal 0
HcmV?d00001

diff --git a/tests/simple/dumbledore_cmd_nop.exe b/tests/simple/dumbledore_cmd_nop.exe
new file mode 100755
index 0000000000000000000000000000000000000000..51d1db3a9093191360c3e75968049c1227bd450c
GIT binary patch
literal 7314
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

literal 0
HcmV?d00001

diff --git a/tests/simple/dumbledore_test.sh b/tests/simple/dumbledore_test.sh
new file mode 100644
index 000000000..5c3bbb795
--- /dev/null
+++ b/tests/simple/dumbledore_test.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/dumbledore_cmd_nop.exe > outputfile1
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./dumbledore_cmd.exe > outputfile1" --prog dumbledore_cmd.exe  --outfile outputfile1 --name NoInput
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/dumbledore_cmd_nop.exe Ben > outputfile1
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./dumbledore_cmd.exe Ben > outputfile1" --prog dumbledore_cmd.exe  --outfile outputfile1 --name DInput
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/dumbledore_cmd_nop.exe "Wizard in Train" > outputfile1
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./dumbledore_cmd.exe \"Wizard in Train\" > outputfile1" --prog dumbledore_cmd.exe  --outfile outputfile1 --name DInput2
+
+$SECURITY_TRANSFORMS_HOME/tests/simple/dumbledore_cmd_nop.exe "Wizard in Training" > outputfile1
+$PEASOUP_HOME/tools/manual_test_import.sh --cmd "./dumbledore_cmd.exe \"Wizard in Training\" > outputfile1" --prog dumbledore_cmd.exe  --outfile outputfile1 --name BInput
+
+# cleanup
+rm outputfile1
diff --git a/tests/simple/jack_tests/banner.c b/tests/simple/jack_tests/banner.c
new file mode 100644
index 000000000..1accc98aa
--- /dev/null
+++ b/tests/simple/jack_tests/banner.c
@@ -0,0 +1,193 @@
+#include <stdio.h>
+/*
+ *      improved banner program
+ */
+
+/*
+ *      bit pattern character table
+ */
+
+char btab[][7] = {
+        010,    010,    010,    010,    010,    00,     010,
+        024,    024,    024,    00,     00,     00,     00,
+        024,    024,    0177,   024,    0177,   024,    024,
+        010,    034,    050,    034,    012,    034,    010,
+        0161,   0122,   0164,   010,    027,    045,    0107,
+        034,    042,    024,    010,    025,    042,    035,
+        04,     010,    020,    00,     00,     00,     00,
+        01,     02,     04,     04,     04,     02,     01,
+        0100,   040,    020,    020,    020,    040,    0100,
+        0111,   052,    034,    0177,   034,    052,    0111,
+        00,     010,    010,    076,    010,    010,    00,
+        00,     00,     00,     00,     00,     040,    0100,
+        00,     00,     00,     074,    00,     00,     00,
+        00,     00,     00,     00,     00,     00,     040,
+        01,     02,     04,     010,    020,    040,    0100,
+        034,    042,    0105,   0111,   0121,   042,    034,
+        030,    010,    010,    010,    010,    010,    034,
+        034,    042,    02,     04,     010,    020,    076,
+        034,    042,    02,     04,     02,     042,    034,
+        02,     06,     012,    022,    077,    02,     02,
+        076,    040,    040,    074,    02,     042,    034,
+        02,     04,     010,    036,    041,    041,    036,
+        077,    01,     02,     04,     010,    020,    040,
+        034,    042,    042,    034,    042,    042,    034,
+        036,    041,    041,    036,    04,     010,    020,
+        00,     00,     00,     010,    00,     010,    00,
+        00,     00,     00,     010,    00,     010,    020,
+        02,     04,     010,    020,    010,    04,     02,
+        00,     00,     074,    00,     074,    00,     00,
+        040,    020,    010,    04,     010,    020,    040,
+        034,    042,    02,     04,     010,    00,     010,
+        076,    0101,   0117,   0111,   0117,   0100,   076,
+        034,    042,    0101,   0177,   0101,   0101,   0101,
+        0176,   0101,   0101,   0176,   0101,   0101,   0176,
+        034,    042,    0100,   0100,   0100,   042,    034,
+        0174,   0102,   0101,   0101,   0101,   0102,   0174,
+        0176,   0100,   0100,   0170,   0100,   0100,   0176,
+        0176,   0100,   0100,   0170,   0100,   0100,   0100,
+        036,    041,    0100,   0100,   0107,   041,    036,
+        0101,   0101,   0101,   0177,   0101,   0101,   0101,
+        034,    010,    010,    010,    010,    010,    034,
+        02,     02,     02,     02,     02,     042,    034,
+        0102,   0104,   0110,   0120,   0150,   0104,   0102,
+        0100,   0100,   0100,   0100,   0100,   0100,   0176,
+        0101,   0143,   0125,   0111,   0101,   0101,   0101,
+        0101,   0141,   0121,   0111,   0105,   0103,   0101,
+        076,    0101,   0101,   0101,   0101,   0101,   076,
+        0176,   0101,   0101,   0176,   0100,   0100,   0100,
+        076,    0101,   0101,   0111,   0105,   0102,   075,
+        0176,   0101,   0101,   0176,   0104,   0102,   0101,
+        076,    0101,   0100,   076,    01,     0101,   076,
+        0177,   010,    010,    010,    010,    010,    010,
+        0101,   0101,   0101,   0101,   0101,   0101,   076,
+        0101,   0101,   0101,   0101,   042,    024,    010,
+        0101,   0101,   0101,   0111,   0125,   0143,   0101,
+        0101,   042,    024,    010,    024,    042,    0101,
+        0101,   042,    024,    010,    010,    010,    010,
+        0177,   02,     04,     010,    020,    040,    0177,
+        07,     04,     04,     04,     04,     04,     07,
+        0100,   040,    020,    010,    04,     02,     01,
+        0160,   020,    020,    020,    020,    020,    0160,
+        010,    024,    042,    0101,   00,     00,     00,
+        00,     00,     00,     00,     00,     00,     0177,
+        020,    010,    04,     00,     00,     00,     00,
+        00,     076,    02,     076,    042,    077,    00,
+        040,    040,    074,    042,    042,    0174,   00,
+        00,     036,    040,    040,    040,    036,    00,
+        02,     02,     036,    042,    042,    037,    00,
+        00,     036,    041,    077,    040,    036,    00,
+        010,    024,    020,    070,    020,    020,    00,
+        00,     034,    042,    042,    036,    02,     014,
+        040,    040,    076,    041,    041,    041,    00,
+        010,    00,     010,    010,    010,    034,    00,
+        02,     00,     02,     02,     02,     022,    014,
+        040,    044,    050,    060,    050,    044,    00,
+        030,    010,    010,    010,    010,    034,    00,
+        00,     0166,   0111,   0111,   0111,   0111,   00,
+        00,     076,    041,    041,    041,    041,    00,
+        00,     036,    041,    041,    041,    036,    00,
+        00,     074,    042,    042,    074,    040,    040,
+        00,     036,    042,    042,    036,    02,     03,
+        00,     054,    042,    040,    040,    040,    00,
+        00,     036,    040,    036,    01,     036,    00,
+        020,    074,    020,    020,    022,    014,    00,
+        00,     041,    041,    041,    041,    035,    00,
+        00,     042,    042,    024,    024,    010,    00,
+        00,     0101,   0101,   0111,   0111,   066,    00,
+        00,     042,    024,    010,    024,    042,    00,
+        00,     042,    042,    042,    036,    02,     014,
+        00,     076,    04,     010,    020,    076,    00,
+        03,     04,     04,     030,    04,     04,     03,
+        010,    010,    010,    010,    010,    010,    010,
+        0140,   020,    020,    014,    020,    020,    0140,
+        060,    0111,   06,     00,     00,     00,     00,
+        0177,   0177,   0177,   0177,   0177,   0177,   0177,
+
+};
+
+/*
+ * subroutine to make the characters for a banner
+ */
+
+char *
+mkline(s, prch, line, space)
+        char *s, prch, *space;
+        int line;
+{
+        char *rs, *rl;
+        int bit;
+        int i, j, m;
+
+        rl = space;
+        for (i = 0; i < 7; i++) {
+                j = 0;
+                for (rs = s; *rs && j < line; j++) {
+                        bit = (bit=(*rs++&0177)-'!') < 0 ? 0 : btab[bit][i];
+                        for (m = 0100; bit; m >>= 1) {
+                                *rl++ = m&bit ? (prch ? prch : rs[-1]) : ' ';
+                                bit &= ~m;
+                        }
+                        *rl++ = '\t';
+                }
+                while (*--rl == '\t')
+                        ;
+                ++rl;
+                *rl++ = '\n';
+        }
+        *rl = '\0';
+        return(space);
+}
+
+main(argc, argv)
+        int argc;
+        char **argv;
+{
+        char prch, *space;
+        static char buf[256];
+        int line;
+        char *malloc();
+
+        prch = '*';
+        line = 10;
+        while (**++argv == '-') {
+                --argc;
+                switch(*++*argv) {
+
+                case 'c':               /* char to use */
+                        prch = *++*argv;
+                        break;
+
+                case 'l':
+                case 'w':
+                        line = atoi(++*argv)>>3;
+                        break;
+                }
+        }
+        space = malloc((unsigned)line*64);
+        printf("\n");
+        if (--argc) {
+                do {
+                        *space = '*';
+                        printf("\n%s", mkline(*argv++, prch, line, space));
+                } while (--argc);
+        }
+
+        else
+                while (fgets(buf, sizeof(buf), stdin) != NULL) {
+                        printf("\n%s", mkline(buf, prch, line, space));
+                }
+}
+
+atoi (str)
+char *str;
+{
+   int i = 0;
+   int retval = 0;
+
+   while (str[i] >= '0' && str[i] <= '9') {
+      retval *= 10;
+      retval += str[i++] - '0';
+   }
+   return (retval);
+}
diff --git a/tests/simple/jack_tests/cal.c b/tests/simple/jack_tests/cal.c
new file mode 100644
index 000000000..eb8175d68
--- /dev/null
+++ b/tests/simple/jack_tests/cal.c
@@ -0,0 +1,206 @@
+char	dayw[] = {
+	" S  M Tu  W Th  F  S"
+};
+char	*smon[]= {
+	"January", "February", "March", "April",
+	"May", "June", "July", "August",
+	"September", "October", "November", "December",
+};
+char	string[432];
+
+main(argc, argv)
+char *argv[];
+{
+	int y, i, j;
+	int m;
+
+	if(argc < 2) {
+		printf("usage: cal [month] year\n");
+		exit(0);
+	}
+	if(argc == 2)
+		goto xlong;
+
+/*
+ *	print out just month
+ */
+
+	m = number(argv[1]);
+	if(m<1 || m>12)
+		goto badarg;
+	y = number(argv[2]);
+	if(y<1 || y>9999)
+		goto badarg;
+	printf("   %s %u\n", smon[m-1], y);
+	printf("%s\n", dayw);
+	cal(m, y, string, 24);
+	for(i=0; i<6*24; i+=24)
+		pstr(string+i, 24);
+	exit(0);
+
+/*
+ *	print out complete year
+ */
+
+xlong:
+	y = number(argv[1]);
+	if(y<1 || y>9999)
+		goto badarg;
+	printf("\n\n\n");
+	printf("				%u\n", y);
+	printf("\n");
+	for(i=0; i<12; i+=3) {
+		for(j=0; j<6*72; j++)
+			string[j] = '\0';
+		printf("	 %.3s", smon[i]);
+		printf("			%.3s", smon[i+1]);
+		printf("		       %.3s\n", smon[i+2]);
+		printf("%s   %s   %s\n", dayw, dayw, dayw);
+		cal(i+1, y, string, 72);
+		cal(i+2, y, string+23, 72);
+		cal(i+3, y, string+46, 72);
+		for(j=0; j<6*72; j+=72)
+			pstr(string+j, 72);
+	}
+	printf("\n\n\n");
+	exit(0);
+
+badarg:
+	printf("Bad argument\n");
+}
+
+number(str)
+char *str;
+{
+	int n, c;
+	char *s;
+
+	n = 0;
+	s = str;
+	while(c = *s++) {
+		if(c<'0' || c>'9')
+			return(0);
+		n = n*10 + c-'0';
+	}
+	return(n);
+}
+
+pstr(str, n)
+char *str;
+{
+	int i;
+	char *s;
+
+	s = str;
+	i = n;
+	while(i--)
+		if(*s++ == '\0')
+			s[-1] = ' ';
+	i = n+1;
+	while(i--)
+		if(*--s != ' ')
+			break;
+	s[1] = '\0';
+	printf("%s\n", str);
+}
+
+char	mon[] = {
+	0,
+	31, 29, 31, 30,
+	31, 30, 31, 31,
+	30, 31, 30, 31,
+};
+
+cal(m, y, p, w)
+char *p;
+{
+	int d, i;
+	char *s;
+
+	s = p;
+	d = jan1(y);
+	mon[2] = 29;
+	mon[9] = 30;
+
+	switch((jan1(y+1)+7-d)%7) {
+
+	/*
+	 *	non-leap year
+	 */
+	case 1:
+		mon[2] = 28;
+		break;
+
+	/*
+	 *	1752
+	 */
+	default:
+		mon[9] = 19;
+		break;
+
+	/*
+	 *	leap year
+	 */
+	case 2:
+		;
+	}
+	for(i=1; i<m; i++)
+		d += mon[i];
+	d %= 7;
+	s += 3*d;
+	for(i=1; i<=mon[m]; i++) {
+		if(i==3 && mon[m]==19) {
+			i += 11;
+			mon[m] += 11;
+		}
+		if(i > 9)
+			*s = i/10+'0';
+		s++;
+		*s++ = i%10+'0';
+		s++;
+		if(++d == 7) {
+			d = 0;
+			s = p+w;
+			p = s;
+		}
+	}
+}
+
+/*
+ *	return day of the week
+ *	of jan 1 of given year
+ */
+
+
+jan1(yr)
+{
+	int y, d;
+
+/*
+ *	normal gregorian calendar
+ *	one extra day per four years
+ */
+
+	y = yr;
+	d = 4+y+(y+3)/4;
+
+/*
+ *	julian calendar
+ *	regular gregorian
+ *	less three days per 400
+ */
+
+	if(y > 1800) {
+		d -= (y-1701)/100;
+		d += (y-1601)/400;
+	}
+
+/*
+ *	great calendar changeover instant
+ */
+
+	if(y > 1752)
+		d += 3;
+
+	return(d%7);
+}
diff --git a/tests/simple/jack_tests/grep.c b/tests/simple/jack_tests/grep.c
new file mode 100644
index 000000000..d49f0e3e1
--- /dev/null
+++ b/tests/simple/jack_tests/grep.c
@@ -0,0 +1,523 @@
+#ifndef lint
+static char sccsid[] = "@(#)grep.c	4.5 (Berkeley) 8/11/83";
+#endif
+
+/*
+ * grep -- print lines matching (or not matching) a pattern
+ *
+ *	status returns:
+ *		0 - ok, and some matches
+ *		1 - ok, but no matches
+ *		2 - some error
+ */
+
+#include <stdio.h>
+#include <ctype.h>
+
+#define	CBRA	1
+#define	CCHR	2
+#define	CDOT	4
+#define	CCL	6
+#define	NCCL	8
+#define	CDOL	10
+#define	CEOF	11
+#define	CKET	12
+#define	CBRC	14
+#define	CLET	15
+#define	CBACK	18
+
+#define	STAR	01
+
+#define	LBSIZE	BUFSIZ
+#define	ESIZE	256
+#define	NBRA	9
+
+char	expbuf[ESIZE];
+long	lnum;
+char	linebuf[LBSIZE+1];
+char	ybuf[ESIZE];
+int	bflag;
+int	lflag;
+int	nflag;
+int	cflag;
+int	vflag;
+int	nfile;
+int	hflag	= 1;
+int	sflag;
+int	yflag;
+int	wflag;
+int	retcode = 0;
+int	circf;
+int	blkno;
+long	tln;
+int	nsucc;
+char	*braslist[NBRA];
+char	*braelist[NBRA];
+char	bittab[] = {
+	1,
+	2,
+	4,
+	8,
+	16,
+	32,
+	64,
+	128
+};
+
+main(argc, argv)
+char **argv;
+{
+	while (--argc > 0 && (++argv)[0][0]=='-')
+		switch (argv[0][1]) {
+
+		case 'i':
+		case 'y':
+			yflag++;
+			continue;
+
+		case 'w':
+			wflag++;
+			continue;
+
+		case 'h':
+			hflag = 0;
+			continue;
+
+		case 's':
+			sflag++;
+			continue;
+
+		case 'v':
+			vflag++;
+			continue;
+
+		case 'b':
+			bflag++;
+			continue;
+
+		case 'l':
+			lflag++;
+			continue;
+
+		case 'c':
+			cflag++;
+			continue;
+
+		case 'n':
+			nflag++;
+			continue;
+
+		case 'e':
+			--argc;
+			++argv;
+			goto out;
+
+		default:
+			errexit("grep: unknown flag\n", (char *)NULL);
+			continue;
+		}
+out:
+	if (argc<=0)
+		exit(2);
+	if (yflag) {
+		register char *p, *s;
+		for (s = ybuf, p = *argv; *p; ) {
+			if (*p == '\\') {
+				*s++ = *p++;
+				if (*p)
+					*s++ = *p++;
+			} else if (*p == '[') {
+				while (*p != '\0' && *p != ']')
+					*s++ = *p++;
+			} else if (islower(*p)) {
+				*s++ = '[';
+				*s++ = toupper(*p);
+				*s++ = *p++;
+				*s++ = ']';
+			} else
+				*s++ = *p++;
+			if (s >= ybuf+ESIZE-5)
+				errexit("grep: argument too long\n", (char *)NULL);
+		}
+		*s = '\0';
+		*argv = ybuf;
+	}
+	compile(*argv);
+	nfile = --argc;
+	if (argc<=0) {
+		if (lflag)
+			exit(1);
+		execute((char *)NULL);
+	} else while (--argc >= 0) {
+		argv++;
+		execute(*argv);
+	}
+	exit(retcode != 0 ? retcode : nsucc == 0);
+}
+
+compile(sp)
+register char *sp;
+{
+	register int c;
+	register char *ep;
+	char *cstart;
+	char *lastep;
+	int cclcnt;
+	char bracket[NBRA], *bracketp;
+	int closed;
+	char numbra;
+	char neg;
+
+	ep = expbuf;
+	lastep = 0;
+	bracketp = bracket;
+	closed = numbra = 0;
+	if (*sp == '^') {
+		circf++;
+		sp++;
+	}
+	if (wflag)
+		*ep++ = CBRC;
+	for (;;) {
+		if (ep >= &expbuf[ESIZE])
+			goto cerror;
+		if ((c = *sp++) != '*')
+			lastep = ep;
+		switch (c) {
+
+		case '\0':
+			if (wflag)
+				*ep++ = CLET;
+			*ep++ = CEOF;
+			return;
+
+		case '.':
+			*ep++ = CDOT;
+			continue;
+
+		case '*':
+			if (lastep==0 || *lastep==CBRA || *lastep==CKET ||
+			    *lastep == CBRC || *lastep == CLET)
+				goto defchar;
+			*lastep |= STAR;
+			continue;
+
+		case '$':
+			if (*sp != '\0')
+				goto defchar;
+			*ep++ = CDOL;
+			continue;
+
+		case '[':
+			if(&ep[17] >= &expbuf[ESIZE])
+				goto cerror;
+			*ep++ = CCL;
+			neg = 0;
+			if((c = *sp++) == '^') {
+				neg = 1;
+				c = *sp++;
+			}
+			cstart = sp;
+			do {
+				if (c=='\0')
+					goto cerror;
+				if (c=='-' && sp>cstart && *sp!=']') {
+					for (c = sp[-2]; c<*sp; c++)
+						ep[c>>3] |= bittab[c&07];
+					sp++;
+				}
+				ep[c>>3] |= bittab[c&07];
+			} while((c = *sp++) != ']');
+			if(neg) {
+				for(cclcnt = 0; cclcnt < 16; cclcnt++)
+					ep[cclcnt] ^= -1;
+				ep[0] &= 0376;
+			}
+
+			ep += 16;
+
+			continue;
+
+		case '\\':
+			if((c = *sp++) == 0)
+				goto cerror;
+			if(c == '<') {
+				*ep++ = CBRC;
+				continue;
+			}
+			if(c == '>') {
+				*ep++ = CLET;
+				continue;
+			}
+			if(c == '(') {
+				if(numbra >= NBRA) {
+					goto cerror;
+				}
+				*bracketp++ = numbra;
+				*ep++ = CBRA;
+				*ep++ = numbra++;
+				continue;
+			}
+			if(c == ')') {
+				if(bracketp <= bracket) {
+					goto cerror;
+				}
+				*ep++ = CKET;
+				*ep++ = *--bracketp;
+				closed++;
+				continue;
+			}
+
+			if(c >= '1' && c <= '9') {
+				if((c -= '1') >= closed)
+					goto cerror;
+				*ep++ = CBACK;
+				*ep++ = c;
+				continue;
+			}
+
+		defchar:
+		default:
+			*ep++ = CCHR;
+			*ep++ = c;
+		}
+	}
+    cerror:
+	errexit("grep: RE error\n", (char *)NULL);
+}
+
+execute(file)
+char *file;
+{
+	register char *p1, *p2;
+	register int c;
+
+	if (file) {
+		if (freopen(file, "r", stdin) == NULL) {
+			perror(file);
+			retcode = 2;
+		}
+	}
+	lnum = 0;
+	tln = 0;
+	for (;;) {
+		lnum++;
+		p1 = linebuf;
+		while ((c = getchar()) != '\n') {
+			if (c == EOF) {
+				if (cflag) {
+					if (nfile>1)
+						printf("%s:", file);
+					printf("%D\n", tln);
+					fflush(stdout);
+				}
+				return;
+			}
+			*p1++ = c;
+			if (p1 >= &linebuf[LBSIZE-1])
+				break;
+		}
+		*p1++ = '\0';
+		p1 = linebuf;
+		p2 = expbuf;
+		if (circf) {
+			if (advance(p1, p2))
+				goto found;
+			goto nfound;
+		}
+		/* fast check for first character */
+		if (*p2==CCHR) {
+			c = p2[1];
+			do {
+				if (*p1!=c)
+					continue;
+				if (advance(p1, p2))
+					goto found;
+			} while (*p1++);
+			goto nfound;
+		}
+		/* regular algorithm */
+		do {
+			if (advance(p1, p2))
+				goto found;
+		} while (*p1++);
+	nfound:
+		if (vflag)
+			succeed(file);
+		continue;
+	found:
+		if (vflag==0)
+			succeed(file);
+	}
+}
+
+advance(lp, ep)
+register char *lp, *ep;
+{
+	register char *curlp;
+	char c;
+	char *bbeg;
+	int ct;
+
+	for (;;) switch (*ep++) {
+
+	case CCHR:
+		if (*ep++ == *lp++)
+			continue;
+		return(0);
+
+	case CDOT:
+		if (*lp++)
+			continue;
+		return(0);
+
+	case CDOL:
+		if (*lp==0)
+			continue;
+		return(0);
+
+	case CEOF:
+		return(1);
+
+	case CCL:
+		c = *lp++ & 0177;
+		if(ep[c>>3] & bittab[c & 07]) {
+			ep += 16;
+			continue;
+		}
+		return(0);
+	case CBRA:
+		braslist[*ep++] = lp;
+		continue;
+
+	case CKET:
+		braelist[*ep++] = lp;
+		continue;
+
+	case CBACK:
+		bbeg = braslist[*ep];
+		if (braelist[*ep]==0)
+			return(0);
+		ct = braelist[*ep++] - bbeg;
+		if(ecmp(bbeg, lp, ct)) {
+			lp += ct;
+			continue;
+		}
+		return(0);
+
+	case CBACK|STAR:
+		bbeg = braslist[*ep];
+		if (braelist[*ep]==0)
+			return(0);
+		ct = braelist[*ep++] - bbeg;
+		curlp = lp;
+		while(ecmp(bbeg, lp, ct))
+			lp += ct;
+		while(lp >= curlp) {
+			if(advance(lp, ep))	return(1);
+			lp -= ct;
+		}
+		return(0);
+
+
+	case CDOT|STAR:
+		curlp = lp;
+		while (*lp++);
+		goto star;
+
+	case CCHR|STAR:
+		curlp = lp;
+		while (*lp++ == *ep);
+		ep++;
+		goto star;
+
+	case CCL|STAR:
+		curlp = lp;
+		do {
+			c = *lp++ & 0177;
+		} while(ep[c>>3] & bittab[c & 07]);
+		ep += 16;
+		goto star;
+
+	star:
+		if(--lp == curlp) {
+			continue;
+		}
+
+		if(*ep == CCHR) {
+			c = ep[1];
+			do {
+				if(*lp != c)
+					continue;
+				if(advance(lp, ep))
+					return(1);
+			} while(lp-- > curlp);
+			return(0);
+		}
+
+		do {
+			if (advance(lp, ep))
+				return(1);
+		} while (lp-- > curlp);
+		return(0);
+
+	case CBRC:
+		if (lp == expbuf)
+			continue;
+#define	uletter(c)	(isalpha(c) || (c) == '_')
+		if (uletter(*lp) || isdigit(*lp))
+			if (!uletter(lp[-1]) && !isdigit(lp[-1]))
+				continue;
+		return (0);
+
+	case CLET:
+		if (!uletter(*lp) && !isdigit(*lp))
+			continue;
+		return (0);
+
+	default:
+		errexit("grep RE botch\n", (char *)NULL);
+	}
+}
+
+succeed(f)
+char *f;
+{
+	nsucc = 1;
+	if (sflag)
+		return;
+	if (cflag) {
+		tln++;
+		return;
+	}
+	if (lflag) {
+		printf("%s\n", f);
+		fflush(stdout);
+		fseek(stdin, 0l, 2);
+		return;
+	}
+	if (nfile > 1 && hflag)
+		printf("%s:", f);
+	if (bflag)
+		printf("%u:", blkno);
+	if (nflag)
+		printf("%ld:", lnum);
+	printf("%s\n", linebuf);
+	fflush(stdout);
+}
+
+ecmp(a, b, count)
+char	*a, *b;
+{
+	register int cc = count;
+	while(cc--)
+		if(*a++ != *b++)	return(0);
+	return(1);
+}
+
+errexit(s, f)
+char *s, *f;
+{
+	fprintf(stderr, s, f);
+	exit(2);
+}
diff --git a/tests/simple/jack_tests/k1.c b/tests/simple/jack_tests/k1.c
new file mode 100644
index 000000000..1151f989b
--- /dev/null
+++ b/tests/simple/jack_tests/k1.c
@@ -0,0 +1,43 @@
+/*
+ * Kernel 1 Hydro
+ *
+ * Translated from Fortran by Sanjay Jinturkar 
+ * 6/28/92
+ */
+#define LOOP 50000
+
+#ifndef TIMES
+#define TIMES 100
+#endif
+
+main()
+{
+   double x[LOOP], y[LOOP], zx[LOOP+23];
+   int i;
+
+   for (i = 0; i < LOOP; i++)
+      x[i] = y[i] = zx[i] = 3.0;
+
+   for (i = 0; i < TIMES; i++)
+      loop (x, y, zx, LOOP);
+
+   printf("contents\n");
+   for(i = 0;i<LOOP;i++)
+   {
+       printf("x: %lf\ty: %lf\tzx: %lf\n",x[i],y[i],zx[i]);
+   }
+}
+
+loop(x, y, zx, n) 
+double x[], y[], zx[];
+int n;
+{
+  int k;
+  double q = 12.0;
+  double r = 5.2;
+  double t = 13.4;
+
+  for (k = 0; k < n; k++)
+     x[k] = q + y[k] * (r * zx[k + 10] + t * zx[k + 11]);
+}
+
diff --git a/tests/simple/jack_tests/od.c b/tests/simple/jack_tests/od.c
new file mode 100644
index 000000000..d78c71979
--- /dev/null
+++ b/tests/simple/jack_tests/od.c
@@ -0,0 +1,893 @@
+static char *sccsid = "@(#)od.c	5.11 (Berkeley) 4/29/83";
+/*
+ * od -- octal, hex, decimal, character dump of data in a file.
+ *
+ * usage:  od [-abBcdDefFhHiIlLopPs[n]vw[n]xX] [file] [[+]offset[.][b] [label]]
+ *
+ * where the option flags have the following meaning:
+ *   character	object	radix	signed?
+ *	a	byte	(10)	(n.a.)	ASCII named byte stream
+ *	b	byte	  8	 no	byte octal
+ *	c	byte	 (8)	(no)	character with octal non-graphic bytes
+ *	d	short	 10	 no
+ *	D	long	 10	 no
+ *	e,F	double	(10)		double precision floating pt.
+ *	f	float	(10)		single precision floating pt.
+ *	h,x	short	 16	 no
+ *	H,X	long	 16	 no
+ *	i	short	 10	yes
+ *	I,l,L	long	 10	yes
+ *	o,B	short	  8	 no	(default conversion)
+ *	O	long	  8	 no
+ *	s[n]	string	 (8)		ASCII graphic strings
+ *
+ *	p				indicate EVEN parity on 'a' conversion
+ *	P				indicate ODD parity on 'a' conversion
+ *	v				show all data - don't skip like lines.
+ *	w[n]				bytes per display line
+ *
+ * More than one format character may be given.
+ * If {file} is not specified, standard input is read.
+ * If {file} is not specified, then {offset} must start with '+'.
+ * {Offset} may be HEX (0xnnn), OCTAL (0nn), or decimal (nnn.).
+ * The default is octal. The same radix will be used to display the address.
+ */
+
+#include <stdio.h>
+
+#define DBUF_SIZE	BUFSIZ
+#define BIG_DBUF	32
+#define NO		0
+#define YES		1
+#define EVEN	       -1
+#define ODD		1
+#define UNSIGNED	0
+#define SIGNED		1
+#define PADDR		1
+#define MIN_SLEN	3
+
+int	a_put();
+int	b_put();
+int	c_put();
+int	s_put();
+int	us_put();
+int	l_put();
+int	f_put();
+int	d_put();
+int	st_put();
+
+struct dfmt {
+	int	df_field;	/* external field required for object */
+	int	df_size;	/* size (bytes) of object */
+	int	df_radix;	/* conversion radix */
+	int	df_signed;	/* signed? flag */
+	int	df_paddr;	/* "put address on each line?" flag */
+	int	(*df_put)();	/* function to output object */
+	char	*df_fmt;	/* output string format */
+} *conv_vec[32];		/* vector of conversions to be done */
+
+struct dfmt	ascii	= { 3, sizeof (char),   10,        0, PADDR,  a_put, 0};
+struct dfmt	byte	= { 3, sizeof (char),    8, UNSIGNED, PADDR,  b_put, 0};
+struct dfmt	cchar	= { 3, sizeof (char),    8, UNSIGNED, PADDR,  c_put, 0};
+struct dfmt	u_s_oct	= { 6, sizeof (short),   8, UNSIGNED, PADDR, us_put, 0};
+struct dfmt	u_s_dec	= { 5, sizeof (short),  10, UNSIGNED, PADDR, us_put, 0};
+struct dfmt	u_s_hex	= { 4, sizeof (short),  16, UNSIGNED, PADDR, us_put, 0};
+struct dfmt	u_l_oct	= {11, sizeof (long),    8, UNSIGNED, PADDR,  l_put, 0};
+struct dfmt	u_l_dec	= {10, sizeof (long),   10, UNSIGNED, PADDR,  l_put, 0};
+struct dfmt	u_l_hex	= { 8, sizeof (long),   16, UNSIGNED, PADDR,  l_put, 0};
+struct dfmt	s_s_dec	= { 6, sizeof (short),  10,   SIGNED, PADDR,  s_put, 0};
+struct dfmt	s_l_dec	= {11, sizeof (long),   10,   SIGNED, PADDR,  l_put, 0};
+struct dfmt	flt	= {14, sizeof (float),  10,   SIGNED, PADDR,  f_put, 0};
+struct dfmt	dble	= {21, sizeof (double), 10,   SIGNED, PADDR,  d_put, 0};
+struct dfmt	string	= { 0,               0,  8,        0,    NO, st_put, 0};
+
+
+char	usage[]	="usage: od [-abcdfhilopswvx] [file] [[+]offset[.][b] [label]]";
+char	dbuf[DBUF_SIZE];
+char	lastdbuf[DBUF_SIZE];
+int	addr_base	= 8;		/* default address base is OCTAL */
+long	addr		= 0L;		/* current file offset */
+long	label		= -1L;		/* current label; -1 is "off" */
+int	dbuf_size	= 16;		/* file bytes / display line */
+int	_parity		= NO;		/* show parity on ascii bytes */
+char	fmt[]	= "            %s";	/* 12 blanks */
+char	*icvt();
+char	*scvt();
+char	*underline();
+long	get_addr();
+
+
+/*
+ * special form of _ctyp
+ */
+
+#define A	01
+#define G	02
+#define D	04
+#define P	010
+#define X	020
+#define isdigit(c)	(_ctyp[c] & D)
+#define isascii(c)	(_ctyp[c] & A)
+#define isgraphic(c)	(_ctyp[c] & G)
+#define isprint(c)	(_ctyp[c] & P)
+#define ishex(c)	(_ctyp[c] & (X|D))
+
+char	_ctyp[256] = {
+/* 000 */	0,	0,	0,	0,	0,	0,	0,	0,
+/* 010 */	A,	A,	A,	0,	A,	A,	0,	0,
+/* 020 */	0,	0,	0,	0,	0,	0,	0,	0,
+/* 030 */	0,	0,	0,	0,	0,	0,	0,	0,
+/* 040 */     P|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,
+/* 050 */   P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,
+/* 060 */ P|G|D|A,P|G|D|A,P|G|D|A,P|G|D|A,P|G|D|A,P|G|D|A,P|G|D|A,P|G|D|A,
+/* 070 */ P|G|D|A,P|G|D|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,
+/* 100 */   P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,
+/* 110 */   P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,
+/* 120 */   P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,
+/* 130 */   P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,
+/* 140 */   P|G|A,X|P|G|A,X|P|G|A,X|P|G|A,X|P|G|A,X|P|G|A,X|P|G|A,  P|G|A,
+/* 150 */   P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,
+/* 160 */   P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,
+/* 170 */   P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,  P|G|A,	0,
+/* 200 */	0,	0,	0,	0,	0,	0,	0,	0,
+/* 210 */	0,	0,	0,	0,	0,	0,	0,	0,
+/* 220 */	0,	0,	0,	0,	0,	0,	0,	0,
+/* 230 */	0,	0,	0,	0,	0,	0,	0,	0,
+/* 240 */	0,	0,	0,	0,	0,	0,	0,	0,
+/* 250 */	0,	0,	0,	0,	0,	0,	0,	0,
+/* 260 */	0,	0,	0,	0,	0,	0,	0,	0,
+/* 270 */	0,	0,	0,	0,	0,	0,	0,	0,
+/* 300 */	0,	0,	0,	0,	0,	0,	0,	0,
+/* 310 */	0,	0,	0,	0,	0,	0,	0,	0,
+/* 320 */	0,	0,	0,	0,	0,	0,	0,	0,
+/* 330 */	0,	0,	0,	0,	0,	0,	0,	0,
+/* 340 */	0,	0,	0,	0,	0,	0,	0,	0,
+/* 350 */	0,	0,	0,	0,	0,	0,	0,	0,
+/* 360 */	0,	0,	0,	0,	0,	0,	0,	0,
+/* 370 */	0,	0,	0,	0,	0,	0,	0,	0,
+};
+
+main(argc, argv)
+int	argc;
+char	**argv;
+{
+	register char *p;
+	register char *l;
+	register n, same;
+	struct dfmt	*d;
+	struct dfmt	**cv = conv_vec;
+	int	showall = NO;
+	int	field, llen, nelm;
+	int	max_llen = 0;
+
+	argv++;
+	argc--;
+
+	if(argc > 0)
+	{
+		p = *argv;
+		if(*p == '-')
+		{
+			while(*++p != '\0')
+			{
+				switch(*p)
+				{
+				case 'a':
+					d = &ascii;
+					break;
+				case 'b':
+					d = &byte;
+					break;
+				case 'c':
+					d = &cchar;
+					break;
+				case 'd':
+					d = &u_s_dec;
+					break;
+				case 'D':
+					d = &u_l_dec;
+					break;
+				case 'e':
+				case 'F':
+					d = &dble;
+					break;
+				case 'f':
+					d = &flt;
+					break;
+				case 'h':
+				case 'x':
+					d = &u_s_hex;
+					break;
+				case 'H':
+				case 'X':
+					d = &u_l_hex;
+					break;
+				case 'i':
+					d = &s_s_dec;
+					break;
+				case 'I':
+				case 'l':
+				case 'L':
+					d = &s_l_dec;
+					break;
+				case 'o':
+				case 'B':
+					d = &u_s_oct;
+					break;
+				case 'O':
+					d = &u_l_oct;
+					break;
+				case 'p':
+					_parity = EVEN;
+					continue;
+				case 'P':
+					_parity = ODD;
+					continue;
+				case 's':
+					d = &string;
+					*(cv++) = d;
+					while (isdigit(p[1]))
+						d->df_size = (10 * d->df_size) + (*++p - '0');
+					if (d->df_size <= 0)
+						d->df_size = MIN_SLEN;
+					showall = YES;
+					continue;
+				case 'w':
+					dbuf_size = 0;
+					while (isdigit(p[1]))
+						dbuf_size = (10 * dbuf_size) + (*++p - '0');
+					if (dbuf_size == 0)
+						dbuf_size = BIG_DBUF;
+					continue;
+				case 'v':
+					showall = YES;
+					continue;
+				default:
+					printf("od: bad flag -%c\n", *p);
+					puts(usage);
+					exit(1);
+				}
+				*(cv++) = d;
+			}
+			argc--;
+			argv++;
+		}
+	}
+
+	/*
+	 * if nothing spec'd, setup default conversion.
+	 */
+	if(cv == conv_vec)
+		*(cv++) = &u_s_oct;
+
+	*cv = (struct dfmt *)0;
+
+	/*
+	 * calculate display parameters
+	 */
+	for (cv = conv_vec; d = *cv; cv++)
+	{
+		nelm = (dbuf_size + d->df_size - 1) / d->df_size;
+		llen = nelm * (d->df_field + 1);
+		if (llen > max_llen)
+			max_llen = llen;
+	}
+
+	/*
+	 * setup df_fmt to point to uniform output fields.
+	 */
+	for (cv = conv_vec; d = *cv; cv++)
+	{
+		if (d->df_field)	/* only if external field is known */
+		{
+			nelm = (dbuf_size + d->df_size - 1) / d->df_size;
+			field = max_llen / nelm;
+			d->df_fmt = fmt + 12 - (field - d->df_field);
+		}
+	}
+
+	/*
+	 * input file specified ?
+	 */
+	if(argc > 0 && **argv != '+')
+	{
+		if (freopen(*argv, "r", stdin) == NULL)
+		{
+			perror(*argv);
+			exit(1);
+		}
+		argv++;
+		argc--;
+	}
+
+	/*
+	 * check for possible offset [label]
+	 */
+	if (argc > 0)
+	{
+		addr = get_addr(*argv);
+		offset(addr);
+		argv++;
+		argc--;
+
+		if (argc > 0)
+			label = get_addr(*argv);
+	}
+
+	/*
+	 * main dump loop
+	 */
+	same = -1;
+	while ((n = fread(dbuf, 1, dbuf_size, stdin)) > 0)
+	{
+		if (same>=0 && bufncmp(dbuf, lastdbuf, dbuf_size) == 0 && !showall)
+		{
+			if (same==0)
+			{
+				printf("*\n");
+				same = 1;
+			}
+		}
+		else
+		{
+			line(n);
+			same = 0;
+			p = dbuf;
+			l = lastdbuf;
+			for (nelm = 0; nelm < dbuf_size; nelm++)
+			{
+				*l++ = *p;
+				*p++ = '\0';
+			}
+		}
+		addr += n;
+		if (label >= 0)
+			label += n;
+	}
+
+	/*
+	 * Some conversions require "flushing".
+	 */
+	n = 0;
+	for (cv = conv_vec; *cv; cv++)
+	{
+		if ((*cv)->df_paddr)
+		{
+			if (n++ == 0)
+				put_addr(addr, label, '\n');
+		}
+		else
+			(*((*cv)->df_put))(0, *cv);
+	}
+}
+
+put_addr(a, l, c)
+long	a;
+long	l;
+char	c;
+{
+	fputs(icvt(a, addr_base, UNSIGNED, 7), stdout);
+	if (l >= 0)
+		printf(" (%s)", icvt(l, addr_base, UNSIGNED, 7));
+	putchar(c);
+}
+
+line(n)
+int	n;
+{
+	register i, first;
+	register struct dfmt *c;
+	register struct dfmt **cv = conv_vec;
+
+	first = YES;
+	while (c = *cv++)
+	{
+		if (c->df_paddr)
+		{
+			if (first)
+			{
+				put_addr(addr, label, ' ');
+				first = NO;
+			}
+			else
+			{
+				putchar('\t');
+				if (label >= 0)
+					fputs("\t  ", stdout);
+			}
+		}
+		i = 0;
+		while (i < n)
+			i += (*(c->df_put))(dbuf+i, c);
+		if (c->df_paddr)
+			putchar('\n');
+	}
+}
+
+s_put(n, d)
+short	*n;
+struct dfmt	*d;
+{
+	printf(d->df_fmt, icvt((long)*n, d->df_radix, d->df_signed, d->df_field));
+	return(d->df_size);
+}
+
+us_put(n, d)
+unsigned short	*n;
+struct dfmt	*d;
+{
+	printf(d->df_fmt, icvt((long)*n, d->df_radix, d->df_signed, d->df_field));
+	return(d->df_size);
+}
+
+l_put(n, d)
+long	*n;
+struct dfmt	*d;
+{
+	printf(d->df_fmt, icvt(*n, d->df_radix, d->df_signed, d->df_field));
+	return(d->df_size);
+}
+
+d_put(f, d)
+double	*f;
+struct dfmt *d;
+{
+	char fbuf[24];
+	struct l { long n[2]; };
+
+#if	vax
+	if ((((struct l *)f)->n[0] & 0xff00) == 0x8000)	/* Vax illegal f.p. */
+		sprintf(fbuf, "    %08x %08x",
+			((struct l *)f)->n[0], ((struct l *)f)->n[1]);
+	else
+#endif
+
+		sprintf(fbuf, "%21.14e", *f);
+	printf(d->df_fmt, fbuf);
+	return(d->df_size);
+}
+
+f_put(f, d)
+float	*f;
+struct dfmt *d;
+{
+	char fbuf[16];
+
+#if	vax
+	if ((*(long *)f & 0xff00) == 0x8000)	/* Vax illegal f.p. form */
+		sprintf(fbuf, "      %08x", *(long *)f);
+	else
+#endif
+		sprintf(fbuf, "%14.7e", *f);
+	printf(d->df_fmt, fbuf);
+	return(d->df_size);
+}
+
+
+char	asc_name[34][4] = {
+/* 000 */	"nul",	"soh",	"stx",	"etx",	"eot",	"enq",	"ack",	"bel",
+/* 010 */	" bs",	" ht",	" nl",	" vt",	" ff",	" cr",	" so",	" si",
+/* 020 */	"dle",	"dc1",	"dc2",	"dc3",	"dc4",	"nak",	"syn",	"etb",
+/* 030 */	"can",	" em",	"sub",	"esc",	" fs",	" gs",	" rs",	" us",
+/* 040 */	" sp",	"del"
+};
+
+a_put(cc, d)
+char	*cc;
+struct dfmt *d;
+{
+	int c = *cc;
+	register char *s = "   ";
+	register pbit = parity((int)c & 0377);
+
+	c &= 0177;
+	if (isgraphic(c))
+	{
+		s[2] = c;
+		if (pbit == _parity)
+			printf(d->df_fmt, underline(s));
+		else
+			printf(d->df_fmt, s);
+	}
+	else
+	{
+		if (c == 0177)
+			c = ' ' + 1;
+		if (pbit == _parity)
+			printf(d->df_fmt, underline(asc_name[c]));
+		else
+			printf(d->df_fmt, asc_name[c]);
+	}
+	return(1);
+}
+
+parity(word)
+int	word;
+{
+	register int p = 0;
+	register int w = word;
+
+	if (w)
+		do
+		{
+			p ^= 1;
+		} while(w &= (~(-w)));
+	return (p? ODD:EVEN);
+}
+
+char *
+underline(s)
+char	*s;
+{
+	static char ulbuf[16];
+	register char *u = ulbuf;
+
+	while (*s)
+	{
+		if (*s != ' ')
+		{
+			*u++ = '_';
+			*u++ = '\b';
+		}
+		*u++ = *s++;
+	}
+	*u = '\0';
+	return(ulbuf);
+}
+
+b_put(b, d)
+char	*b;
+struct dfmt *d;
+{
+	printf(d->df_fmt, icvt((long)*b & 0377, d->df_radix, d->df_signed, d->df_field));
+	return(1);
+}
+
+c_put(cc, d)
+char	*cc;
+struct dfmt *d;
+{
+	register char	*s;
+	register int	n;
+	register int	c = *cc & 0377;
+
+	s = scvt(c, d);
+	for (n = d->df_field - strlen(s); n > 0; n--)
+		putchar(' ');
+	printf(d->df_fmt, s);
+	return(1);
+}
+
+char *scvt(c, d)
+int	c;
+struct dfmt	*d;
+{
+	static char s[2];
+
+	switch(c)
+	{
+		case '\0':
+			return("\\0");
+
+		case '\b':
+			return("\\b");
+
+		case '\f':
+			return("\\f");
+
+		case '\n':
+			return("\\n");
+
+		case '\r':
+			return("\\r");
+
+		case '\t':
+			return("\\t");
+
+		default:
+			if (isprint(c))
+			{
+				s[0] = c;
+				return(s);
+			}
+			return(icvt((long)c, d->df_radix, d->df_signed, d->df_field));
+	}
+}
+
+/*
+ * Look for strings.
+ * A string contains bytes > 037 && < 177, and ends with a null.
+ * The minimum length is given in the dfmt structure.
+ */
+
+#define CNULL		'\0'
+#define S_EMPTY	0
+#define S_FILL	1
+#define	S_CONT	2
+#define SBUFSIZE	1024
+
+static char	str_buf[SBUFSIZE];
+static int	str_mode = S_EMPTY;
+static char	*str_ptr;
+static long	str_addr;
+static long	str_label;
+
+st_put(cc, d)
+char	*cc;
+struct dfmt	*d;
+{
+	register int	c;
+
+	if (cc == 0)
+	{
+		pr_sbuf(d, YES);
+		return(1);
+	}
+
+	c = (*cc & 0377);
+
+	if (str_mode & S_FILL)
+	{
+		if (isascii(c))
+			put_sbuf(c, d);
+		else
+		{
+			*str_ptr = CNULL;
+			if (c == NULL)
+				pr_sbuf(d, YES);
+			str_mode = S_EMPTY;
+		}
+	}
+	else if (isascii(c))
+	{
+		str_mode = S_FILL;
+		str_addr = addr + (cc - dbuf);	  /* ugly */
+		if ((str_label = label) >= 0)
+			str_label += (cc - dbuf); /*  ''  */
+		str_ptr = str_buf;
+		put_sbuf(c, d);
+	}
+
+	return(1);
+}
+
+put_sbuf(c, d)
+int	c;
+struct dfmt	*d;
+{
+	*str_ptr++ = c;
+	if (str_ptr >= (str_buf + SBUFSIZE))
+	{
+		pr_sbuf(d, NO);
+		str_ptr = str_buf;
+		str_mode |= S_CONT;
+	}
+}
+
+pr_sbuf(d, end)
+struct dfmt	*d;
+int	end;
+{
+	register char	*p = str_buf;
+
+	if (str_mode == S_EMPTY
+	    || (!(str_mode & S_CONT) && (str_ptr - str_buf) < d->df_size))
+		return;
+
+	if (!(str_mode & S_CONT))
+		put_addr(str_addr, str_label, ' ');
+
+	while (p < str_ptr)
+		fputs(scvt(*p++, d), stdout);
+
+	if (end)
+		putchar('\n');
+}
+
+/*
+ * integer to ascii conversion
+ *
+ * This code has been rearranged to produce optimized runtime code.
+ */
+
+#define MAXINTLENGTH	32
+static char	_digit[] = "0123456789abcdef";
+static char	_icv_buf[MAXINTLENGTH+1];
+static long	_mask = 0x7fffffff;
+
+char *
+icvt (value, radix, psigned, ndigits)
+long	value;
+int	radix;
+int	psigned;
+int	ndigits;
+{
+	register long	val = value;
+	register long	rad = radix;
+	register char	*b = &_icv_buf[MAXINTLENGTH];
+	register char	*d = _digit;
+	register long	tmp1;
+	register long	tmp2;
+	long	rem;
+	long	kludge;
+	int	sign;
+
+	if (val == 0)
+	{
+		*--b = '0';
+		sign = 0;
+		goto done; /*return(b);*/
+	}
+
+	if (psigned && (sign = (val < 0)))	/* signed conversion */
+	{
+		/*
+		 * It is necessary to do the first divide
+		 * before the absolute value, for the case -2^31
+		 *
+		 * This is actually what is being done...
+		 * tmp1 = (int)(val % rad);
+		 * val /= rad;
+		 * val = -val
+		 * *--b = d[-tmp1];
+		 */
+		tmp1 = val / rad;
+		*--b = d[(tmp1 * rad) - val];
+		val = -tmp1;
+	}
+	else				/* unsigned conversion */
+	{
+		sign = 0;
+		if (val < 0)
+		{	/* ALL THIS IS TO SIMULATE UNSIGNED LONG MOD & DIV */
+			kludge = _mask - (rad - 1);
+			val &= _mask;
+			/*
+			 * This is really what's being done...
+			 * rem = (kludge % rad) + (val % rad);
+			 * val = (kludge / rad) + (val / rad) + (rem / rad) + 1;
+			 * *--b = d[rem % rad];
+			 */
+			tmp1 = kludge / rad;
+			tmp2 = val / rad;
+			rem = (kludge - (tmp1 * rad)) + (val - (tmp2 * rad));
+			val = ++tmp1 + tmp2;
+			tmp1 = rem / rad;
+			val += tmp1;
+			*--b = d[rem - (tmp1 * rad)];
+		}
+	}
+
+	while (val)
+	{
+		/*
+		 * This is really what's being done ...
+		 * *--b = d[val % rad];
+		 * val /= rad;
+		 */
+		tmp1 = val / rad;
+		*--b = d[val - (tmp1 * rad)];
+		val = tmp1;
+	}
+
+done:
+	if (sign)
+		*--b = '-';
+
+	tmp1 = ndigits - (&_icv_buf[MAXINTLENGTH] - b);
+	tmp2 = psigned? ' ':'0';
+	while (tmp1 > 0)
+	{
+		*--b = tmp2;
+		tmp1--;
+	}
+
+	return(b);
+}
+
+long get_addr(s)
+register char *s;
+{
+	register char *p;
+	register long a;
+	register int d;
+
+	if (*s=='+')
+		s++;
+	if (*s=='x')
+	{
+		s++;
+		addr_base = 16;
+	}
+	else if (*s=='0' && s[1]=='x')
+	{
+		s += 2;
+		addr_base = 16;
+	}
+	else if (*s == '0')
+		addr_base = 8;
+	p = s;
+	while(*p)
+	{
+		if (*p++=='.')
+			addr_base = 10;
+	}
+	for (a=0; *s; s++)
+	{
+		d = *s;
+		if(isdigit(d))
+			a = a*addr_base + d - '0';
+		else if (ishex(d) && addr_base==16)
+			a = a*addr_base + d + 10 - 'a';
+		else
+			break;
+	}
+
+	if (*s == '.')
+		s++;
+	if(*s=='b')
+		a *= 512;
+	if(*s=='B')
+		a *= 1024;
+
+	return(a);
+}
+
+bufncmp(a, b, n)
+char	*a;
+char	*b;
+int	n;
+{
+	while (n--)
+		if (*a++ != *b++)
+			return(1);
+	return(0);
+}
+
+offset(a)
+long	a;
+{
+	if (canseek(stdin))
+	{
+		/*
+		 * in case we're accessing a raw disk,
+		 * we have to seek in multiples of a physical block.
+		 */
+		fseek(stdin, a & 0xfffffe00L, 0);
+		a &= 0x1ffL;
+	}
+	dumbseek(stdin, a);
+}
+
+dumbseek(s, offset)
+FILE	*s;
+long	offset;
+{
+	char	buf[BUFSIZ];
+	int	n;
+	int	nr;
+
+	while (offset > 0)
+	{
+		nr = (offset > BUFSIZ) ? BUFSIZ : (int)offset;
+		if ((n = fread(buf, 1, nr, s)) != nr)
+		{
+			fprintf(stderr, "EOF\n");
+			exit(1);
+		}
+		offset -= n;
+	}
+}
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+canseek(f)
+FILE	*f;
+{
+	struct stat statb;
+
+	return( (fstat(fileno(f),&statb)==0) &&
+		(statb.st_nlink > 0) &&		/*!pipe*/
+		(!isatty(fileno(f))) );
+}
-- 
GitLab