diff --git a/3rdparty/demangler/CMakeLists.txt b/3rdparty/demangler/CMakeLists.txt
new file mode 100644
index 0000000000..275e1d30d2
--- /dev/null
+++ b/3rdparty/demangler/CMakeLists.txt
@@ -0,0 +1,6 @@
+
+cmake_minimum_required(VERSION 3.6)
+
+project(demangler CXX)
+
+add_subdirectory(src)
diff --git a/3rdparty/demangler/demangler.vcxproj b/3rdparty/demangler/demangler.vcxproj
new file mode 100644
index 0000000000..1a98723062
--- /dev/null
+++ b/3rdparty/demangler/demangler.vcxproj
@@ -0,0 +1,59 @@
+
+
+
+
+
+ {1E3D706C-1D95-4E1B-BDF2-CA3D0007DF7F}
+
+
+
+ StaticLibrary
+ $(DefaultPlatformToolset)
+ MultiByte
+ true
+ true
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AllRules.ruleset
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ %(PreprocessorDefinitions)
+ TurnOffAllWarnings
+ $(ProjectDir)include;$(ProjectDir)src;%(AdditionalIncludeDirectories)
+
+
+
+
+
diff --git a/3rdparty/demangler/demangler.vcxproj.filters b/3rdparty/demangler/demangler.vcxproj.filters
new file mode 100644
index 0000000000..83cc2b0424
--- /dev/null
+++ b/3rdparty/demangler/demangler.vcxproj.filters
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/3rdparty/demangler/include/demangler/demangler.h b/3rdparty/demangler/include/demangler/demangler.h
new file mode 100644
index 0000000000..bcdf05dafd
--- /dev/null
+++ b/3rdparty/demangler/include/demangler/demangler.h
@@ -0,0 +1,45 @@
+/**
+ * @file include/demangler/demangler.h
+ * @brief Demangler library.
+ * @copyright (c) 2017 Avast Software, licensed under the MIT license
+ */
+
+#ifndef DEMANGLER_DEMANGLERL_H
+#define DEMANGLER_DEMANGLERL_H
+
+#include
+#include
+
+#include "demangler/gparser.h"
+
+namespace demangler {
+
+/**
+ * The grammar parser class - the core of the demangler.
+ */
+class CDemangler {
+ cGram *pGram;
+ cName *pName;
+ std::string compiler = "gcc";
+ cGram::errcode errState; /// error state; 0 = everyting is ok
+
+public:
+ CDemangler(std::string gname, bool i = true);
+ static std::unique_ptr createGcc(bool i = true);
+ static std::unique_ptr createMs(bool i = true);
+ static std::unique_ptr createBorland(bool i = true);
+ virtual ~CDemangler();
+
+ bool isOk();
+ std::string printError();
+ void resetError();
+
+ void createGrammar(std::string inputfilename, std::string outputname);
+ cName *demangleToClass(std::string inputName);
+ std::string demangleToString(std::string inputName);
+ void setSubAnalyze(bool x);
+};
+
+} // namespace demangler
+
+#endif
diff --git a/3rdparty/demangler/include/demangler/demglobal.h b/3rdparty/demangler/include/demangler/demglobal.h
new file mode 100644
index 0000000000..9fbdbbdd59
--- /dev/null
+++ b/3rdparty/demangler/include/demangler/demglobal.h
@@ -0,0 +1,20 @@
+/**
+ * @file include/demangler/demglobal.h
+ * @brief Global variables in demangler namespace.
+ * @copyright (c) 2017 Avast Software, licensed under the MIT license
+ */
+
+#ifndef DEMANGLER_DEMGLOBAL_H
+#define DEMANGLER_DEMGLOBAL_H
+
+#include "demangler/igrams.h"
+
+namespace demangler {
+
+extern cGram::igram_t internalGrammarStruct;
+extern cIgram_msll* igram_msll;
+extern cIgram_gccll* igram_gccll;
+
+} // namespace demangler
+
+#endif
diff --git a/3rdparty/demangler/include/demangler/demtools.h b/3rdparty/demangler/include/demangler/demtools.h
new file mode 100644
index 0000000000..2bbcade545
--- /dev/null
+++ b/3rdparty/demangler/include/demangler/demtools.h
@@ -0,0 +1,36 @@
+/**
+ * @file include/demangler/demtools.h
+ * @brief Tools and extra functions for demangler.
+ * @copyright (c) 2017 Avast Software, licensed under the MIT license
+ */
+
+#ifndef DEMANGLER_DEMTOOLS_H
+#define DEMANGLER_DEMTOOLS_H
+
+#include
+
+namespace demangler {
+
+/**
+ * @brief Structure for date and time.
+ */
+struct sdate_t {
+ unsigned int y = 0;
+ unsigned int m = 0;
+ unsigned int d = 0;
+ unsigned int h = 0;
+ unsigned int min = 0;
+ unsigned int s = 0;
+};
+
+bool fileExists(const std::string &filename);
+
+void initSdate_t(sdate_t &x);
+
+sdate_t genTimeStruct();
+
+void xreplace(std::string &source, const std::string &tobereplaced, const std::string &replacement);
+
+} // namespace demangler
+
+#endif
diff --git a/3rdparty/demangler/include/demangler/gparser.h b/3rdparty/demangler/include/demangler/gparser.h
new file mode 100644
index 0000000000..860be584a1
--- /dev/null
+++ b/3rdparty/demangler/include/demangler/gparser.h
@@ -0,0 +1,830 @@
+/**
+ * @file include/demangler/gparser.h
+ * @brief Parser of LL grammar.
+ * @copyright (c) 2017 Avast Software, licensed under the MIT license
+ */
+
+#ifndef DEMANGLER_GPARSER_H
+#define DEMANGLER_GPARSER_H
+
+#include