\hypertarget{classtheo_1_1decomp_1_1decomp__t}{}\doxysection{theo\+::decomp\+::decomp\+\_\+t Class Reference} \label{classtheo_1_1decomp_1_1decomp__t}\index{theo::decomp::decomp\_t@{theo::decomp::decomp\_t}} the main decomposition class which is responsible for breaking down lib file into coff files, and extracted used symbols from the coff files. {\ttfamily \#include \char`\"{}decomp.\+hpp\char`\"{}} \doxysubsection*{Public Member Functions} \begin{DoxyCompactItemize} \item \mbox{\hyperlink{classtheo_1_1decomp_1_1decomp__t_a35cfac16bd918d576b29e04388690d68}{decomp\+\_\+t}} (std\+::vector$<$ std\+::uint8\+\_\+t $>$ \&\mbox{\hyperlink{classtheo_1_1decomp_1_1decomp__t_aa728bde8ec1c5c28ec09f86adf427ae2}{lib}}, \mbox{\hyperlink{classtheo_1_1recomp_1_1symbol__table__t}{recomp\+::symbol\+\_\+table\+\_\+t}} $\ast$\mbox{\hyperlink{classtheo_1_1decomp_1_1decomp__t_a8630f2ee0f4fb9516f5b20014e4c6120}{syms}}) \begin{DoxyCompactList}\small\item\em the explicit constructor for \mbox{\hyperlink{classtheo_1_1decomp_1_1decomp__t}{decomp\+\_\+t}} \end{DoxyCompactList}\item std\+::vector$<$ \mbox{\hyperlink{classtheo_1_1decomp_1_1routine__t}{routine\+\_\+t}} $>$ \mbox{\hyperlink{classtheo_1_1decomp_1_1decomp__t_a79c965ec0a996a936faae7f54b0e055e}{rtns}} () \begin{DoxyCompactList}\small\item\em gets all of the routine objects. \end{DoxyCompactList}\item std\+::vector$<$ std\+::uint8\+\_\+t $>$ \mbox{\hyperlink{classtheo_1_1decomp_1_1decomp__t_aa728bde8ec1c5c28ec09f86adf427ae2}{lib}} () \begin{DoxyCompactList}\small\item\em gets a vector of bytes consisting of the lib file. \end{DoxyCompactList}\item std\+::vector$<$ std\+::vector$<$ std\+::uint8\+\_\+t $>$ $>$ \mbox{\hyperlink{classtheo_1_1decomp_1_1decomp__t_a81ae70b313a9ef24ea5d8f404699baef}{objs}} () \begin{DoxyCompactList}\small\item\em gets all the obj files as a vector of a vector of bytes. \end{DoxyCompactList}\item \mbox{\hyperlink{classtheo_1_1recomp_1_1symbol__table__t}{recomp\+::symbol\+\_\+table\+\_\+t}} $\ast$ \mbox{\hyperlink{classtheo_1_1decomp_1_1decomp__t_a8630f2ee0f4fb9516f5b20014e4c6120}{syms}} () \begin{DoxyCompactList}\small\item\em gets the symbol table. \end{DoxyCompactList}\item std\+::map$<$ coff\+::section\+\_\+header\+\_\+t $\ast$, std\+::size\+\_\+t $>$ \& \mbox{\hyperlink{classtheo_1_1decomp_1_1decomp__t_a860dddc3a5d12231b685dbaa12a0db06}{scn\+\_\+hash\+\_\+tbl}} () \begin{DoxyCompactList}\small\item\em gets the section hash table section header -\/-\/\texorpdfstring{$>$}{>} hash of the section header ptr. \end{DoxyCompactList}\item std\+::optional$<$ \mbox{\hyperlink{classtheo_1_1recomp_1_1symbol__table__t}{recomp\+::symbol\+\_\+table\+\_\+t}} $\ast$ $>$ \mbox{\hyperlink{classtheo_1_1decomp_1_1decomp__t_ae23353a4293aa30969b6d3fa37359469}{decompose}} (std\+::string \&entry\+\_\+sym) \begin{DoxyCompactList}\small\item\em decomposes (extracts) the symbols used. this function determines all used symbols given the entry point. \end{DoxyCompactList}\end{DoxyCompactItemize} \doxysubsection{Detailed Description} the main decomposition class which is responsible for breaking down lib file into coff files, and extracted used symbols from the coff files. Definition at line \mbox{\hyperlink{decomp_8hpp_source_l00061}{61}} of file \mbox{\hyperlink{decomp_8hpp_source}{decomp.\+hpp}}. \doxysubsection{Constructor \& Destructor Documentation} \mbox{\Hypertarget{classtheo_1_1decomp_1_1decomp__t_a35cfac16bd918d576b29e04388690d68}\label{classtheo_1_1decomp_1_1decomp__t_a35cfac16bd918d576b29e04388690d68}} \index{theo::decomp::decomp\_t@{theo::decomp::decomp\_t}!decomp\_t@{decomp\_t}} \index{decomp\_t@{decomp\_t}!theo::decomp::decomp\_t@{theo::decomp::decomp\_t}} \doxysubsubsection{\texorpdfstring{decomp\_t()}{decomp\_t()}} {\footnotesize\ttfamily theo\+::decomp\+::decomp\+\_\+t\+::decomp\+\_\+t (\begin{DoxyParamCaption}\item[{std\+::vector$<$ std\+::uint8\+\_\+t $>$ \&}]{lib, }\item[{\mbox{\hyperlink{classtheo_1_1recomp_1_1symbol__table__t}{recomp\+::symbol\+\_\+table\+\_\+t}} $\ast$}]{syms }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [explicit]}} the explicit constructor for \mbox{\hyperlink{classtheo_1_1decomp_1_1decomp__t}{decomp\+\_\+t}} \begin{DoxyParams}{Parameters} {\em lib} & vector of bytes containing the lib file.\\ \hline {\em syms} & symbol table that gets populated and managed by this class.\\ \hline \end{DoxyParams} Definition at line \mbox{\hyperlink{decomp_8cpp_source_l00034}{34}} of file \mbox{\hyperlink{decomp_8cpp_source}{decomp.\+cpp}}. \begin{DoxyCode}{0} \DoxyCodeLine{00035 : m\_lib(\mbox{\hyperlink{classtheo_1_1decomp_1_1decomp__t_aa728bde8ec1c5c28ec09f86adf427ae2}{lib}}), m\_syms(\mbox{\hyperlink{classtheo_1_1decomp_1_1decomp__t_a8630f2ee0f4fb9516f5b20014e4c6120}{syms}}) \{\}} \end{DoxyCode} \doxysubsection{Member Function Documentation} \mbox{\Hypertarget{classtheo_1_1decomp_1_1decomp__t_ae23353a4293aa30969b6d3fa37359469}\label{classtheo_1_1decomp_1_1decomp__t_ae23353a4293aa30969b6d3fa37359469}} \index{theo::decomp::decomp\_t@{theo::decomp::decomp\_t}!decompose@{decompose}} \index{decompose@{decompose}!theo::decomp::decomp\_t@{theo::decomp::decomp\_t}} \doxysubsubsection{\texorpdfstring{decompose()}{decompose()}} {\footnotesize\ttfamily std\+::optional$<$ \mbox{\hyperlink{classtheo_1_1recomp_1_1symbol__table__t}{recomp\+::symbol\+\_\+table\+\_\+t}} $\ast$ $>$ theo\+::decomp\+::decomp\+\_\+t\+::decompose (\begin{DoxyParamCaption}\item[{std\+::string \&}]{entry\+\_\+sym }\end{DoxyParamCaption})} decomposes (extracts) the symbols used. this function determines all used symbols given the entry point. \begin{DoxyParams}{Parameters} {\em entry\+\_\+sym} & the entry point symbol name.\\ \hline \end{DoxyParams} \begin{DoxyReturn}{Returns} returns an optional pointer to the symbol table. no value in the optional object on failure. \end{DoxyReturn} Definition at line \mbox{\hyperlink{decomp_8cpp_source_l00037}{37}} of file \mbox{\hyperlink{decomp_8cpp_source}{decomp.\+cpp}}. \begin{DoxyCode}{0} \DoxyCodeLine{00038 \{} \DoxyCodeLine{00039 \textcolor{comment}{// extract obj files from the archive file...}} \DoxyCodeLine{00040 \textcolor{comment}{//}} \DoxyCodeLine{00041 ar::view \mbox{\hyperlink{classtheo_1_1decomp_1_1decomp__t_aa728bde8ec1c5c28ec09f86adf427ae2}{lib}}(m\_lib.data(), m\_lib.size());} \DoxyCodeLine{00042 std::for\_each(} \DoxyCodeLine{00043 \mbox{\hyperlink{classtheo_1_1decomp_1_1decomp__t_aa728bde8ec1c5c28ec09f86adf427ae2}{lib}}.begin(), \mbox{\hyperlink{classtheo_1_1decomp_1_1decomp__t_aa728bde8ec1c5c28ec09f86adf427ae2}{lib}}.end(),} \DoxyCodeLine{00044 [\&](std::pair itr) \{} \DoxyCodeLine{00045 \textcolor{comment}{// if the entry isnt the symbol table or the string table}} \DoxyCodeLine{00046 \textcolor{comment}{// then we know its an obj file...}} \DoxyCodeLine{00047 \textcolor{comment}{//}} \DoxyCodeLine{00048 if (!itr.second.is\_symbol\_table() \&\& !itr.second.is\_string\_table()) \{} \DoxyCodeLine{00049 spdlog::info(\textcolor{stringliteral}{"{}extracted obj from archive: \{\}"{}}, itr.first);} \DoxyCodeLine{00050 std::vector data(itr.second.begin(), itr.second.end());} \DoxyCodeLine{00051 m\_objs.push\_back(data);} \DoxyCodeLine{00052 \}} \DoxyCodeLine{00053 \});} \DoxyCodeLine{00054 } \DoxyCodeLine{00055 std::for\_each(} \DoxyCodeLine{00056 m\_objs.begin(), m\_objs.end(), [\&](std::vector\& img\_data) \{} \DoxyCodeLine{00057 auto img = reinterpret\_cast(img\_data.data());} \DoxyCodeLine{00058 for (auto idx = 0u; idx < img-\/>file\_header.num\_symbols; ++idx) \{} \DoxyCodeLine{00059 auto sym = img-\/>get\_symbol(idx);} \DoxyCodeLine{00060 if (sym-\/>section\_index -\/ 1 > img-\/>file\_header.num\_sections)} \DoxyCodeLine{00061 continue;} \DoxyCodeLine{00062 } \DoxyCodeLine{00063 auto sym\_name = symbol\_t::name(img, sym);} \DoxyCodeLine{00064 if (sym\_name.length()) \{} \DoxyCodeLine{00065 auto sym\_hash = symbol\_t::hash(sym\_name.data());} \DoxyCodeLine{00066 auto sym\_size =} \DoxyCodeLine{00067 sym-\/>has\_section()} \DoxyCodeLine{00068 ? next\_sym(img, img-\/>get\_section(sym-\/>section\_index -\/ 1),} \DoxyCodeLine{00069 sym)} \DoxyCodeLine{00070 : 0u;} \DoxyCodeLine{00071 } \DoxyCodeLine{00072 m\_lookup\_tbl[sym\_hash].emplace\_back(img, sym, sym\_size);} \DoxyCodeLine{00073 \}} \DoxyCodeLine{00074 \}} \DoxyCodeLine{00075 \});} \DoxyCodeLine{00076 } \DoxyCodeLine{00077 \textcolor{comment}{// extract used symbols from objs and create a nice little set of them so that}} \DoxyCodeLine{00078 \textcolor{comment}{// we can easily decompose them... no need deal with every single symbol...}} \DoxyCodeLine{00079 spdlog::info(\textcolor{stringliteral}{"{}extracted \{\} symbols being used..."{}},} \DoxyCodeLine{00080 ext\_used\_syms(entry\_sym.data()));} \DoxyCodeLine{00081 } \DoxyCodeLine{00082 \textcolor{comment}{// generate symbols, populate section hash table, for each object file}} \DoxyCodeLine{00083 \textcolor{comment}{// extracted from the archive file...}} \DoxyCodeLine{00084 \textcolor{comment}{//}} \DoxyCodeLine{00085 std::for\_each(m\_used\_syms.begin(), m\_used\_syms.end(), [\&](\mbox{\hyperlink{namespacetheo_1_1decomp_abbf09e1f7eb9e42057ff9c9e8be41266}{sym\_data\_t}} \mbox{\hyperlink{namespacetheo_1_1decomp_af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112}{data}}) \{} \DoxyCodeLine{00086 auto [img, sym, size] = data;} \DoxyCodeLine{00087 } \DoxyCodeLine{00088 \textcolor{comment}{// populate section hash table with sections for the img of this}} \DoxyCodeLine{00089 \textcolor{comment}{// symbol... only populate the hash table if its not been populated for}} \DoxyCodeLine{00090 \textcolor{comment}{// this obj before...}} \DoxyCodeLine{00091 \textcolor{comment}{//}} \DoxyCodeLine{00092 if (m\_processed\_objs.emplace(img).second) \{} \DoxyCodeLine{00093 for (auto idx = 0u; idx < img-\/>file\_header.num\_sections; ++idx) \{} \DoxyCodeLine{00094 auto scn = img-\/>get\_section(idx);} \DoxyCodeLine{00095 auto scn\_sym\_name =} \DoxyCodeLine{00096 std::string(scn-\/>name.to\_string(img-\/>get\_strings()))} \DoxyCodeLine{00097 .append(\textcolor{stringliteral}{"{}\#"{}})} \DoxyCodeLine{00098 .append(std::to\_string(idx))} \DoxyCodeLine{00099 .append(\textcolor{stringliteral}{"{}!"{}})} \DoxyCodeLine{00100 .append(std::to\_string(img-\/>file\_header.timedate\_stamp));} \DoxyCodeLine{00101 } \DoxyCodeLine{00102 \textcolor{comment}{// hash the name of the section + the index + the timestamp of the}} \DoxyCodeLine{00103 \textcolor{comment}{// obj file it is in...}} \DoxyCodeLine{00104 \textcolor{comment}{//}} \DoxyCodeLine{00105 m\_scn\_hash\_tbl.insert(\{scn, decomp::symbol\_t::hash(scn\_sym\_name)\});} \DoxyCodeLine{00106 \}} \DoxyCodeLine{00107 \}} \DoxyCodeLine{00108 } \DoxyCodeLine{00109 \textcolor{comment}{// if the symbol is a function then we are going to decompose it...}} \DoxyCodeLine{00110 \textcolor{comment}{// data symbols are handled after this...}} \DoxyCodeLine{00111 \textcolor{comment}{//}} \DoxyCodeLine{00112 if (sym-\/>has\_section()) \{} \DoxyCodeLine{00113 if (sym-\/>derived\_type == coff::derived\_type\_id::function) \{} \DoxyCodeLine{00114 auto scn = img-\/>get\_section(sym-\/>section\_index -\/ 1);} \DoxyCodeLine{00115 auto dcmp\_type =} \DoxyCodeLine{00116 scn-\/>name.to\_string(img-\/>get\_strings()) == INSTR\_SPLIT\_SECTION\_NAME} \DoxyCodeLine{00117 ? decomp::sym\_type\_t::instruction} \DoxyCodeLine{00118 : decomp::sym\_type\_t::function;} \DoxyCodeLine{00119 } \DoxyCodeLine{00120 auto fn\_size = next\_sym(img, scn, sym);} \DoxyCodeLine{00121 auto fn\_bgn = scn-\/>ptr\_raw\_data + reinterpret\_cast(img) +} \DoxyCodeLine{00122 sym-\/>value;} \DoxyCodeLine{00123 } \DoxyCodeLine{00124 std::vector fn(fn\_bgn, fn\_bgn + fn\_size);} \DoxyCodeLine{00125 decomp::routine\_t rtn(sym, img, scn, fn, dcmp\_type);} \DoxyCodeLine{00126 } \DoxyCodeLine{00127 auto syms = rtn.decompose();} \DoxyCodeLine{00128 m\_syms-\/>put\_symbols(syms);} \DoxyCodeLine{00129 \} \textcolor{keywordflow}{else} if (sym-\/>storage\_class == coff::storage\_class\_id::public\_symbol ||} \DoxyCodeLine{00130 sym-\/>storage\_class == coff::storage\_class\_id::private\_symbol) \{} \DoxyCodeLine{00131 auto scn = img-\/>get\_section(sym-\/>section\_index -\/ 1);} \DoxyCodeLine{00132 auto scn\_sym = m\_syms-\/>sym\_from\_hash(m\_scn\_hash\_tbl[scn]);} \DoxyCodeLine{00133 } \DoxyCodeLine{00134 \textcolor{comment}{// if the section doesnt have a symbol then make one and put it into}} \DoxyCodeLine{00135 \textcolor{comment}{// the symbol table...}} \DoxyCodeLine{00136 \textcolor{comment}{//}} \DoxyCodeLine{00137 if (!scn\_sym.has\_value()) \{} \DoxyCodeLine{00138 auto scn\_sym\_name =} \DoxyCodeLine{00139 std::string(scn-\/>name.to\_string(img-\/>get\_strings()))} \DoxyCodeLine{00140 .append(\textcolor{stringliteral}{"{}\#"{}})} \DoxyCodeLine{00141 .append(std::to\_string(sym-\/>section\_index -\/ 1))} \DoxyCodeLine{00142 .append(\textcolor{stringliteral}{"{}!"{}})} \DoxyCodeLine{00143 .append(std::to\_string(img-\/>file\_header.timedate\_stamp));} \DoxyCodeLine{00144 } \DoxyCodeLine{00145 std::vector scn\_data(scn-\/>size\_raw\_data);} \DoxyCodeLine{00146 if (scn-\/>characteristics.cnt\_uninit\_data) \{} \DoxyCodeLine{00147 scn\_data.insert(scn\_data.begin(), scn-\/>size\_raw\_data, 0);} \DoxyCodeLine{00148 \} else \{} \DoxyCodeLine{00149 scn\_data.insert(} \DoxyCodeLine{00150 scn\_data.begin(),} \DoxyCodeLine{00151 reinterpret\_cast(img) + scn-\/>ptr\_raw\_data,} \DoxyCodeLine{00152 reinterpret\_cast(img) + scn-\/>ptr\_raw\_data +} \DoxyCodeLine{00153 scn-\/>size\_raw\_data);} \DoxyCodeLine{00154 \}} \DoxyCodeLine{00155 } \DoxyCodeLine{00156 std::vector relocs;} \DoxyCodeLine{00157 auto scn\_relocs = reinterpret\_cast(} \DoxyCodeLine{00158 scn-\/>ptr\_relocs + reinterpret\_cast(img));} \DoxyCodeLine{00159 } \DoxyCodeLine{00160 for (auto idx = 0u; idx < scn-\/>num\_relocs; ++idx) \{} \DoxyCodeLine{00161 auto scn\_reloc = \&scn\_relocs[idx];} \DoxyCodeLine{00162 auto sym\_reloc = img-\/>get\_symbol(scn\_relocs[idx].symbol\_index);} \DoxyCodeLine{00163 auto sym\_name = symbol\_t::name(img, sym\_reloc);} \DoxyCodeLine{00164 auto sym\_hash = decomp::symbol\_t::hash(sym\_name.data());} \DoxyCodeLine{00165 relocs.push\_back(} \DoxyCodeLine{00166 recomp::reloc\_t(scn\_reloc-\/>virtual\_address -\/ sym-\/>value,} \DoxyCodeLine{00167 sym\_hash, sym\_name.data()));} \DoxyCodeLine{00168 \}} \DoxyCodeLine{00169 } \DoxyCodeLine{00170 decomp::symbol\_t new\_scn\_sym(img, scn\_sym\_name, 0, scn\_data, scn, \{\},} \DoxyCodeLine{00171 relocs, sym\_type\_t::section);} \DoxyCodeLine{00172 } \DoxyCodeLine{00173 m\_syms-\/>put\_symbol(new\_scn\_sym);} \DoxyCodeLine{00174 \}} \DoxyCodeLine{00175 } \DoxyCodeLine{00176 \textcolor{comment}{// create a symbol for the data...}} \DoxyCodeLine{00177 \textcolor{comment}{//}} \DoxyCodeLine{00178 decomp::symbol\_t new\_sym(img, \mbox{\hyperlink{classtheo_1_1decomp_1_1symbol__t_a7c6dee036291ded334aa10d89293fc2a}{symbol\_t::name}}(img, sym).\mbox{\hyperlink{namespacetheo_1_1decomp_af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112}{data}}(),} \DoxyCodeLine{00179 sym-\/>value, \{\}, scn, sym, \{\},} \DoxyCodeLine{00180 \mbox{\hyperlink{namespacetheo_1_1decomp_af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112}{sym\_type\_t::data}});} \DoxyCodeLine{00181 } \DoxyCodeLine{00182 m\_syms-\/>\mbox{\hyperlink{classtheo_1_1recomp_1_1symbol__table__t_af9caf2d4d97b2498aa624c3750a7a601}{put\_symbol}}(new\_sym);} \DoxyCodeLine{00183 \}} \DoxyCodeLine{00184 \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (sym-\/>storage\_class ==} \DoxyCodeLine{00185 coff::storage\_class\_id::} \DoxyCodeLine{00186 external\_definition) \{ \textcolor{comment}{// else if the symbol has no}} \DoxyCodeLine{00187 \textcolor{comment}{// section... these symbols}} \DoxyCodeLine{00188 \textcolor{comment}{// require the linker to allocate}} \DoxyCodeLine{00189 \textcolor{comment}{// space for them...}} \DoxyCodeLine{00190 } \DoxyCodeLine{00191 std::vector data(sym-\/>value, 0);} \DoxyCodeLine{00192 decomp::symbol\_t bss\_sym(img, symbol\_t::name(img, sym).data(), \{\}, \mbox{\hyperlink{namespacetheo_1_1decomp_af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112}{data}},} \DoxyCodeLine{00193 \{\}, sym, \{\}, \mbox{\hyperlink{namespacetheo_1_1decomp_af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112}{sym\_type\_t::data}});} \DoxyCodeLine{00194 } \DoxyCodeLine{00195 m\_syms-\/>\mbox{\hyperlink{classtheo_1_1recomp_1_1symbol__table__t_af9caf2d4d97b2498aa624c3750a7a601}{put\_symbol}}(bss\_sym);} \DoxyCodeLine{00196 \}} \DoxyCodeLine{00197 \});} \DoxyCodeLine{00198 } \DoxyCodeLine{00199 \textcolor{comment}{// return the extract symbols to the caller...}} \DoxyCodeLine{00200 \textcolor{comment}{//}} \DoxyCodeLine{00201 \textcolor{keywordflow}{return} m\_syms;} \DoxyCodeLine{00202 \}} \end{DoxyCode} References \mbox{\hyperlink{decomp_8cpp_source_l00285}{lib()}}. Referenced by \mbox{\hyperlink{theo_8cpp_source_l00045}{theo\+::theo\+\_\+t\+::decompose()}}. \mbox{\Hypertarget{classtheo_1_1decomp_1_1decomp__t_aa728bde8ec1c5c28ec09f86adf427ae2}\label{classtheo_1_1decomp_1_1decomp__t_aa728bde8ec1c5c28ec09f86adf427ae2}} \index{theo::decomp::decomp\_t@{theo::decomp::decomp\_t}!lib@{lib}} \index{lib@{lib}!theo::decomp::decomp\_t@{theo::decomp::decomp\_t}} \doxysubsubsection{\texorpdfstring{lib()}{lib()}} {\footnotesize\ttfamily std\+::vector$<$ std\+::uint8\+\_\+t $>$ theo\+::decomp\+::decomp\+\_\+t\+::lib (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} gets a vector of bytes consisting of the lib file. \begin{DoxyReturn}{Returns} a vector of bytes consisting of the lib file. \end{DoxyReturn} Definition at line \mbox{\hyperlink{decomp_8cpp_source_l00285}{285}} of file \mbox{\hyperlink{decomp_8cpp_source}{decomp.\+cpp}}. \begin{DoxyCode}{0} \DoxyCodeLine{00285 \{} \DoxyCodeLine{00286 \textcolor{keywordflow}{return} m\_lib;} \DoxyCodeLine{00287 \}} \end{DoxyCode} Referenced by \mbox{\hyperlink{decomp_8cpp_source_l00037}{decompose()}}. \mbox{\Hypertarget{classtheo_1_1decomp_1_1decomp__t_a81ae70b313a9ef24ea5d8f404699baef}\label{classtheo_1_1decomp_1_1decomp__t_a81ae70b313a9ef24ea5d8f404699baef}} \index{theo::decomp::decomp\_t@{theo::decomp::decomp\_t}!objs@{objs}} \index{objs@{objs}!theo::decomp::decomp\_t@{theo::decomp::decomp\_t}} \doxysubsubsection{\texorpdfstring{objs()}{objs()}} {\footnotesize\ttfamily std\+::vector$<$ std\+::vector$<$ std\+::uint8\+\_\+t $>$ $>$ theo\+::decomp\+::decomp\+\_\+t\+::objs (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} gets all the obj files as a vector of a vector of bytes. \begin{DoxyReturn}{Returns} all the obj files as a vector of a vector of bytes. \end{DoxyReturn} Definition at line \mbox{\hyperlink{decomp_8cpp_source_l00289}{289}} of file \mbox{\hyperlink{decomp_8cpp_source}{decomp.\+cpp}}. \begin{DoxyCode}{0} \DoxyCodeLine{00289 \{} \DoxyCodeLine{00290 \textcolor{keywordflow}{return} m\_objs;} \DoxyCodeLine{00291 \}} \end{DoxyCode} \mbox{\Hypertarget{classtheo_1_1decomp_1_1decomp__t_a79c965ec0a996a936faae7f54b0e055e}\label{classtheo_1_1decomp_1_1decomp__t_a79c965ec0a996a936faae7f54b0e055e}} \index{theo::decomp::decomp\_t@{theo::decomp::decomp\_t}!rtns@{rtns}} \index{rtns@{rtns}!theo::decomp::decomp\_t@{theo::decomp::decomp\_t}} \doxysubsubsection{\texorpdfstring{rtns()}{rtns()}} {\footnotesize\ttfamily std\+::vector$<$ \mbox{\hyperlink{classtheo_1_1decomp_1_1routine__t}{routine\+\_\+t}} $>$ theo\+::decomp\+::decomp\+\_\+t\+::rtns (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} gets all of the routine objects. \begin{DoxyReturn}{Returns} vector of routine objects. \end{DoxyReturn} Definition at line \mbox{\hyperlink{decomp_8cpp_source_l00281}{281}} of file \mbox{\hyperlink{decomp_8cpp_source}{decomp.\+cpp}}. \begin{DoxyCode}{0} \DoxyCodeLine{00281 \{} \DoxyCodeLine{00282 \textcolor{keywordflow}{return} m\_rtns;} \DoxyCodeLine{00283 \}} \end{DoxyCode} \mbox{\Hypertarget{classtheo_1_1decomp_1_1decomp__t_a860dddc3a5d12231b685dbaa12a0db06}\label{classtheo_1_1decomp_1_1decomp__t_a860dddc3a5d12231b685dbaa12a0db06}} \index{theo::decomp::decomp\_t@{theo::decomp::decomp\_t}!scn\_hash\_tbl@{scn\_hash\_tbl}} \index{scn\_hash\_tbl@{scn\_hash\_tbl}!theo::decomp::decomp\_t@{theo::decomp::decomp\_t}} \doxysubsubsection{\texorpdfstring{scn\_hash\_tbl()}{scn\_hash\_tbl()}} {\footnotesize\ttfamily std\+::map$<$ coff\+::section\+\_\+header\+\_\+t $\ast$, std\+::size\+\_\+t $>$ \& theo\+::decomp\+::decomp\+\_\+t\+::scn\+\_\+hash\+\_\+tbl (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} gets the section hash table section header -\/-\/\texorpdfstring{$>$}{>} hash of the section header ptr. \begin{DoxyReturn}{Returns} the section hash table section header -\/-\/\texorpdfstring{$>$}{>} hash of the section header ptr. \end{DoxyReturn} Definition at line \mbox{\hyperlink{decomp_8cpp_source_l00297}{297}} of file \mbox{\hyperlink{decomp_8cpp_source}{decomp.\+cpp}}. \begin{DoxyCode}{0} \DoxyCodeLine{00297 \{} \DoxyCodeLine{00298 \textcolor{keywordflow}{return} m\_scn\_hash\_tbl;} \DoxyCodeLine{00299 \}} \end{DoxyCode} \mbox{\Hypertarget{classtheo_1_1decomp_1_1decomp__t_a8630f2ee0f4fb9516f5b20014e4c6120}\label{classtheo_1_1decomp_1_1decomp__t_a8630f2ee0f4fb9516f5b20014e4c6120}} \index{theo::decomp::decomp\_t@{theo::decomp::decomp\_t}!syms@{syms}} \index{syms@{syms}!theo::decomp::decomp\_t@{theo::decomp::decomp\_t}} \doxysubsubsection{\texorpdfstring{syms()}{syms()}} {\footnotesize\ttfamily \mbox{\hyperlink{classtheo_1_1recomp_1_1symbol__table__t}{recomp\+::symbol\+\_\+table\+\_\+t}} $\ast$ theo\+::decomp\+::decomp\+\_\+t\+::syms (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} gets the symbol table. \begin{DoxyReturn}{Returns} the symbol table. \end{DoxyReturn} Definition at line \mbox{\hyperlink{decomp_8cpp_source_l00293}{293}} of file \mbox{\hyperlink{decomp_8cpp_source}{decomp.\+cpp}}. \begin{DoxyCode}{0} \DoxyCodeLine{00293 \{} \DoxyCodeLine{00294 \textcolor{keywordflow}{return} m\_syms;} \DoxyCodeLine{00295 \}} \end{DoxyCode} Referenced by \mbox{\hyperlink{recomp_8cpp_source_l00040}{theo\+::recomp\+::recomp\+\_\+t\+::allocate()}}. The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} \item include/decomp/\mbox{\hyperlink{decomp_8hpp}{decomp.\+hpp}}\item src/decomp/\mbox{\hyperlink{decomp_8cpp}{decomp.\+cpp}}\end{DoxyCompactItemize}