Index: trunk/ippTools/src/dettool.c
===================================================================
--- trunk/ippTools/src/dettool.c	(revision 14240)
+++ trunk/ippTools/src/dettool.c	(revision 14241)
@@ -55,4 +55,6 @@
 static bool addstackedMode(pxConfig *config);
 static bool stackedMode(pxConfig *config);
+static bool revertstackedMode(pxConfig *config);
+
 static bool tonormalizeMode(pxConfig *config);
 static bool addnormalizedstatMode(pxConfig *config);
@@ -132,4 +134,6 @@
         MODECASE(DETTOOL_MODE_ADDSTACKED,       addstackedMode);
         MODECASE(DETTOOL_MODE_STACKED,          stackedMode);
+        MODECASE(DETTOOL_MODE_REVERTSTACKED,    revertstackedMode);
+
         MODECASE(DETTOOL_MODE_TONORMALIZE,      tonormalizeMode);
         MODECASE(DETTOOL_MODE_ADDNORMALIZEDSTAT,addnormalizedstatMode);
@@ -3290,4 +3294,36 @@
 
     psFree(output);
+
+    return true;
+}
+
+
+static bool revertstackedMode(pxConfig *config)
+{
+    PS_ASSERT_PTR_NON_NULL(config, false);
+
+    psString query = pxDataGet("dettool_revertstacked.sql");
+    if (!query) {
+        psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
+        return false;
+    }
+
+    if (config->where) {
+        psString whereClause = psDBGenerateWhereConditionSQL(config->where, "detStackedImfile");
+        psStringAppend(&query, " AND %s", whereClause);
+        psFree(whereClause);
+    }
+
+    if (!p_psDBRunQuery(config->dbh, query)) {
+        psError(PS_ERR_UNKNOWN, false, "database error");
+        psFree(query);
+        return false;
+    }
+    psFree(query);
+
+    if (psDBAffectedRows(config->dbh) < 1) {
+        psError(PS_ERR_UNKNOWN, false, "should have affected atleast 1 row");
+        return false;
+    }
 
     return true;
