You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Theodosius/doxygen/latex/d6/d0e/classtheo_1_1decomp_1_1deco...

401 lines
24 KiB

\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<false> \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<std::string\_view, ar::entry\_t\&> 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<std::uint8\_t> 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<std::uint8\_t>\& img\_data) \{}
\DoxyCodeLine{00057 auto img = reinterpret\_cast<coff::image\_t*>(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<std::uint8\_t*>(img) +}
\DoxyCodeLine{00122 sym-\/>value;}
\DoxyCodeLine{00123 }
\DoxyCodeLine{00124 std::vector<std::uint8\_t> 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<std::uint8\_t> 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<std::uint8\_t*>(img) + scn-\/>ptr\_raw\_data,}
\DoxyCodeLine{00152 reinterpret\_cast<std::uint8\_t*>(img) + scn-\/>ptr\_raw\_data +}
\DoxyCodeLine{00153 scn-\/>size\_raw\_data);}
\DoxyCodeLine{00154 \}}
\DoxyCodeLine{00155 }
\DoxyCodeLine{00156 std::vector<recomp::reloc\_t> relocs;}
\DoxyCodeLine{00157 auto scn\_relocs = reinterpret\_cast<coff::reloc\_t*>(}
\DoxyCodeLine{00158 scn-\/>ptr\_relocs + reinterpret\_cast<std::uint8\_t*>(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<std::uint8\_t> 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}