 +    dr_restore_reg(drcontext, ilist, where, xax, spill_xax);
 +    dr_restore_arith_flags(drcontext, ilist, where, spill_aflags);
 +}
-diff --git a/clients/drsigil/drsigil_ipc.c b/clients/drsigil/drsigil_ipc.c
+diff --git a/clients/drsigil/ipc.c b/clients/drsigil/ipc.c
 new file mode 100644
 index 00000000..ca9a8a5f
 --- /dev/null
-+++ b/clients/drsigil/drsigil_ipc.c
++++ b/clients/drsigil/ipc.c
 @@ -0,0 +1,376 @@
 +#include "drsigil.h"
 +#include <string.h>

+    dr_global_free((void*)channel->ticket_queue.head, sizeof(ticket_queue_t));
+    dr_mutex_destroy(channel->queue_lock);
+}
diff --git a/clients/drsigil/drsigil_parser.c b/clients/drsigil/drsigil_parser.c
new file mode 100644
index 00000000..0d0ced3a
--- /dev/null
+++ b/clients/drsigil/drsigil_parser.c
@@ -0,0 +1,55 @@
+#include <string.h>
+#include <getopt.h>

+void parse(int argc, char *argv[], command_line_options *clo);
+
+#endif
diff --git a/clients/drsigil/instrument.c b/clients/drsigil/instrument.c
new file mode 100644
index 00000000..05d9868b
--- /dev/null
+++ b/clients/drsigil/instrument.c
@@ -0,0 +1,602 @@
+#include "drsigil.h"
+#include "drmgr.h"
