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...

355 lines
22 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 $<$decomp.\+hpp$>$}
\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 -\/-\/$>$ 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.
\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}
\begin{DoxyCode}{0}
\DoxyCodeLine{35 : 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}
\begin{DoxyCode}{0}
\DoxyCodeLine{38 \{}
\DoxyCodeLine{39 \textcolor{comment}{// extract obj files from the archive file...}}
\DoxyCodeLine{40 \textcolor{comment}{//}}
\DoxyCodeLine{41 ar::view<false> \mbox{\hyperlink{classtheo_1_1decomp_1_1decomp__t_aa728bde8ec1c5c28ec09f86adf427ae2}{lib}}(m\_lib.data(), m\_lib.size());}
\DoxyCodeLine{42 std::for\_each(}
\DoxyCodeLine{43 \mbox{\hyperlink{classtheo_1_1decomp_1_1decomp__t_aa728bde8ec1c5c28ec09f86adf427ae2}{lib}}.begin(), \mbox{\hyperlink{classtheo_1_1decomp_1_1decomp__t_aa728bde8ec1c5c28ec09f86adf427ae2}{lib}}.end(),}
\DoxyCodeLine{44 [\&](std::pair<std::string\_view, ar::entry\_t\&> itr) \{}
\DoxyCodeLine{45 \textcolor{comment}{// if the entry isnt the symbol table or the string table}}
\DoxyCodeLine{46 \textcolor{comment}{// then we know its an obj file...}}
\DoxyCodeLine{47 \textcolor{comment}{//}}
\DoxyCodeLine{48 if (!itr.second.is\_symbol\_table() \&\& !itr.second.is\_string\_table()) \{}
\DoxyCodeLine{49 spdlog::info(\textcolor{stringliteral}{"{}extracted obj from archive: \{\}"{}}, itr.first);}
\DoxyCodeLine{50 std::vector<std::uint8\_t> data(itr.second.begin(), itr.second.end());}
\DoxyCodeLine{51 m\_objs.push\_back(data);}
\DoxyCodeLine{52 \}}
\DoxyCodeLine{53 \});}
\DoxyCodeLine{54 }
\DoxyCodeLine{55 std::for\_each(}
\DoxyCodeLine{56 m\_objs.begin(), m\_objs.end(), [\&](std::vector<std::uint8\_t>\& img\_data) \{}
\DoxyCodeLine{57 auto img = reinterpret\_cast<coff::image\_t*>(img\_data.data());}
\DoxyCodeLine{58 for (auto idx = 0u; idx < img-\/>file\_header.num\_symbols; ++idx) \{}
\DoxyCodeLine{59 auto sym = img-\/>get\_symbol(idx);}
\DoxyCodeLine{60 if (sym-\/>section\_index -\/ 1 > img-\/>file\_header.num\_sections)}
\DoxyCodeLine{61 continue;}
\DoxyCodeLine{62 }
\DoxyCodeLine{63 auto sym\_name = symbol\_t::name(img, sym);}
\DoxyCodeLine{64 if (sym\_name.length()) \{}
\DoxyCodeLine{65 auto sym\_hash = symbol\_t::hash(sym\_name.data());}
\DoxyCodeLine{66 auto sym\_size =}
\DoxyCodeLine{67 sym-\/>has\_section()}
\DoxyCodeLine{68 ? next\_sym(img, img-\/>get\_section(sym-\/>section\_index -\/ 1),}
\DoxyCodeLine{69 sym)}
\DoxyCodeLine{70 : 0u;}
\DoxyCodeLine{71 }
\DoxyCodeLine{72 m\_lookup\_tbl[sym\_hash].emplace\_back(img, sym, sym\_size);}
\DoxyCodeLine{73 \}}
\DoxyCodeLine{74 \}}
\DoxyCodeLine{75 \});}
\DoxyCodeLine{76 }
\DoxyCodeLine{77 \textcolor{comment}{// extract used symbols from objs and create a nice little set of them so that}}
\DoxyCodeLine{78 \textcolor{comment}{// we can easily decompose them... no need deal with every single symbol...}}
\DoxyCodeLine{79 spdlog::info(\textcolor{stringliteral}{"{}extracted \{\} symbols being used..."{}},}
\DoxyCodeLine{80 ext\_used\_syms(entry\_sym.data()));}
\DoxyCodeLine{81 }
\DoxyCodeLine{82 \textcolor{comment}{// generate symbols, populate section hash table, for each object file}}
\DoxyCodeLine{83 \textcolor{comment}{// extracted from the archive file...}}
\DoxyCodeLine{84 \textcolor{comment}{//}}
\DoxyCodeLine{85 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{86 auto [img, sym, size] = data;}
\DoxyCodeLine{87 }
\DoxyCodeLine{88 \textcolor{comment}{// populate section hash table with sections for the img of this}}
\DoxyCodeLine{89 \textcolor{comment}{// symbol... only populate the hash table if its not been populated for}}
\DoxyCodeLine{90 \textcolor{comment}{// this obj before...}}
\DoxyCodeLine{91 \textcolor{comment}{//}}
\DoxyCodeLine{92 if (m\_processed\_objs.emplace(img).second) \{}
\DoxyCodeLine{93 for (auto idx = 0u; idx < img-\/>file\_header.num\_sections; ++idx) \{}
\DoxyCodeLine{94 auto scn = img-\/>get\_section(idx);}
\DoxyCodeLine{95 auto scn\_sym\_name =}
\DoxyCodeLine{96 std::string(scn-\/>name.to\_string(img-\/>get\_strings()))}
\DoxyCodeLine{97 .append(\textcolor{stringliteral}{"{}\#"{}})}
\DoxyCodeLine{98 .append(std::to\_string(idx))}
\DoxyCodeLine{99 .append(\textcolor{stringliteral}{"{}!"{}})}
\DoxyCodeLine{100 .append(std::to\_string(img-\/>file\_header.timedate\_stamp));}
\DoxyCodeLine{101 }
\DoxyCodeLine{102 \textcolor{comment}{// hash the name of the section + the index + the timestamp of the}}
\DoxyCodeLine{103 \textcolor{comment}{// obj file it is in...}}
\DoxyCodeLine{104 \textcolor{comment}{//}}
\DoxyCodeLine{105 m\_scn\_hash\_tbl.insert(\{scn, decomp::symbol\_t::hash(scn\_sym\_name)\});}
\DoxyCodeLine{106 \}}
\DoxyCodeLine{107 \}}
\DoxyCodeLine{108 }
\DoxyCodeLine{109 \textcolor{comment}{// if the symbol is a function then we are going to decompose it...}}
\DoxyCodeLine{110 \textcolor{comment}{// data symbols are handled after this...}}
\DoxyCodeLine{111 \textcolor{comment}{//}}
\DoxyCodeLine{112 if (sym-\/>has\_section()) \{}
\DoxyCodeLine{113 if (sym-\/>derived\_type == coff::derived\_type\_id::function) \{}
\DoxyCodeLine{114 auto scn = img-\/>get\_section(sym-\/>section\_index -\/ 1);}
\DoxyCodeLine{115 auto dcmp\_type =}
\DoxyCodeLine{116 scn-\/>name.to\_string(img-\/>get\_strings()) == INSTR\_SPLIT\_SECTION\_NAME}
\DoxyCodeLine{117 ? decomp::sym\_type\_t::instruction}
\DoxyCodeLine{118 : decomp::sym\_type\_t::function;}
\DoxyCodeLine{119 }
\DoxyCodeLine{120 auto fn\_size = next\_sym(img, scn, sym);}
\DoxyCodeLine{121 auto fn\_bgn = scn-\/>ptr\_raw\_data + reinterpret\_cast<std::uint8\_t*>(img) +}
\DoxyCodeLine{122 sym-\/>value;}
\DoxyCodeLine{123 }
\DoxyCodeLine{124 std::vector<std::uint8\_t> fn(fn\_bgn, fn\_bgn + fn\_size);}
\DoxyCodeLine{125 decomp::routine\_t rtn(sym, img, scn, fn, dcmp\_type);}
\DoxyCodeLine{126 }
\DoxyCodeLine{127 auto syms = rtn.decompose();}
\DoxyCodeLine{128 m\_syms-\/>put\_symbols(syms);}
\DoxyCodeLine{129 \} \textcolor{keywordflow}{else} if (sym-\/>storage\_class == coff::storage\_class\_id::public\_symbol ||}
\DoxyCodeLine{130 sym-\/>storage\_class == coff::storage\_class\_id::private\_symbol) \{}
\DoxyCodeLine{131 auto scn = img-\/>get\_section(sym-\/>section\_index -\/ 1);}
\DoxyCodeLine{132 auto scn\_sym = m\_syms-\/>sym\_from\_hash(m\_scn\_hash\_tbl[scn]);}
\DoxyCodeLine{133 }
\DoxyCodeLine{134 \textcolor{comment}{// if the section doesnt have a symbol then make one and put it into}}
\DoxyCodeLine{135 \textcolor{comment}{// the symbol table...}}
\DoxyCodeLine{136 \textcolor{comment}{//}}
\DoxyCodeLine{137 if (!scn\_sym.has\_value()) \{}
\DoxyCodeLine{138 auto scn\_sym\_name =}
\DoxyCodeLine{139 std::string(scn-\/>name.to\_string(img-\/>get\_strings()))}
\DoxyCodeLine{140 .append(\textcolor{stringliteral}{"{}\#"{}})}
\DoxyCodeLine{141 .append(std::to\_string(sym-\/>section\_index -\/ 1))}
\DoxyCodeLine{142 .append(\textcolor{stringliteral}{"{}!"{}})}
\DoxyCodeLine{143 .append(std::to\_string(img-\/>file\_header.timedate\_stamp));}
\DoxyCodeLine{144 }
\DoxyCodeLine{145 std::vector<std::uint8\_t> scn\_data(scn-\/>size\_raw\_data);}
\DoxyCodeLine{146 if (scn-\/>characteristics.cnt\_uninit\_data) \{}
\DoxyCodeLine{147 scn\_data.insert(scn\_data.begin(), scn-\/>size\_raw\_data, 0);}
\DoxyCodeLine{148 \} else \{}
\DoxyCodeLine{149 scn\_data.insert(}
\DoxyCodeLine{150 scn\_data.begin(),}
\DoxyCodeLine{151 reinterpret\_cast<std::uint8\_t*>(img) + scn-\/>ptr\_raw\_data,}
\DoxyCodeLine{152 reinterpret\_cast<std::uint8\_t*>(img) + scn-\/>ptr\_raw\_data +}
\DoxyCodeLine{153 scn-\/>size\_raw\_data);}
\DoxyCodeLine{154 \}}
\DoxyCodeLine{155 }
\DoxyCodeLine{156 std::vector<recomp::reloc\_t> relocs;}
\DoxyCodeLine{157 auto scn\_relocs = reinterpret\_cast<coff::reloc\_t*>(}
\DoxyCodeLine{158 scn-\/>ptr\_relocs + reinterpret\_cast<std::uint8\_t*>(img));}
\DoxyCodeLine{159 }
\DoxyCodeLine{160 for (auto idx = 0u; idx < scn-\/>num\_relocs; ++idx) \{}
\DoxyCodeLine{161 auto scn\_reloc = \&scn\_relocs[idx];}
\DoxyCodeLine{162 auto sym\_reloc = img-\/>get\_symbol(scn\_relocs[idx].symbol\_index);}
\DoxyCodeLine{163 auto sym\_name = symbol\_t::name(img, sym\_reloc);}
\DoxyCodeLine{164 auto sym\_hash = decomp::symbol\_t::hash(sym\_name.data());}
\DoxyCodeLine{165 relocs.push\_back(}
\DoxyCodeLine{166 recomp::reloc\_t(scn\_reloc-\/>virtual\_address -\/ sym-\/>value,}
\DoxyCodeLine{167 sym\_hash, sym\_name.data()));}
\DoxyCodeLine{168 \}}
\DoxyCodeLine{169 }
\DoxyCodeLine{170 decomp::symbol\_t new\_scn\_sym(img, scn\_sym\_name, 0, scn\_data, scn, \{\},}
\DoxyCodeLine{171 relocs, sym\_type\_t::section);}
\DoxyCodeLine{172 }
\DoxyCodeLine{173 m\_syms-\/>put\_symbol(new\_scn\_sym);}
\DoxyCodeLine{174 \}}
\DoxyCodeLine{175 }
\DoxyCodeLine{176 \textcolor{comment}{// create a symbol for the data...}}
\DoxyCodeLine{177 \textcolor{comment}{//}}
\DoxyCodeLine{178 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{179 sym-\/>value, \{\}, scn, sym, \{\},}
\DoxyCodeLine{180 \mbox{\hyperlink{namespacetheo_1_1decomp_af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112}{sym\_type\_t::data}});}
\DoxyCodeLine{181 }
\DoxyCodeLine{182 m\_syms-\/>\mbox{\hyperlink{classtheo_1_1recomp_1_1symbol__table__t_af9caf2d4d97b2498aa624c3750a7a601}{put\_symbol}}(new\_sym);}
\DoxyCodeLine{183 \}}
\DoxyCodeLine{184 \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (sym-\/>storage\_class ==}
\DoxyCodeLine{185 coff::storage\_class\_id::}
\DoxyCodeLine{186 external\_definition) \{ \textcolor{comment}{// else if the symbol has no}}
\DoxyCodeLine{187 \textcolor{comment}{// section... these symbols}}
\DoxyCodeLine{188 \textcolor{comment}{// require the linker to allocate}}
\DoxyCodeLine{189 \textcolor{comment}{// space for them...}}
\DoxyCodeLine{190 }
\DoxyCodeLine{191 std::vector<std::uint8\_t> data(sym-\/>value, 0);}
\DoxyCodeLine{192 decomp::symbol\_t bss\_sym(img, symbol\_t::name(img, sym).data(), \{\}, \mbox{\hyperlink{namespacetheo_1_1decomp_af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112}{data}},}
\DoxyCodeLine{193 \{\}, sym, \{\}, \mbox{\hyperlink{namespacetheo_1_1decomp_af96177687d0ad683c5897d8fa01135f9acdb885c0ea7f6b2874224487c69b8112}{sym\_type\_t::data}});}
\DoxyCodeLine{194 }
\DoxyCodeLine{195 m\_syms-\/>\mbox{\hyperlink{classtheo_1_1recomp_1_1symbol__table__t_af9caf2d4d97b2498aa624c3750a7a601}{put\_symbol}}(bss\_sym);}
\DoxyCodeLine{196 \}}
\DoxyCodeLine{197 \});}
\DoxyCodeLine{198 }
\DoxyCodeLine{199 \textcolor{comment}{// return the extract symbols to the caller...}}
\DoxyCodeLine{200 \textcolor{comment}{//}}
\DoxyCodeLine{201 \textcolor{keywordflow}{return} m\_syms;}
\DoxyCodeLine{202 \}}
\end{DoxyCode}
\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}
\begin{DoxyCode}{0}
\DoxyCodeLine{285 \{}
\DoxyCodeLine{286 \textcolor{keywordflow}{return} m\_lib;}
\DoxyCodeLine{287 \}}
\end{DoxyCode}
\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}
\begin{DoxyCode}{0}
\DoxyCodeLine{289 \{}
\DoxyCodeLine{290 \textcolor{keywordflow}{return} m\_objs;}
\DoxyCodeLine{291 \}}
\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}
\begin{DoxyCode}{0}
\DoxyCodeLine{281 \{}
\DoxyCodeLine{282 \textcolor{keywordflow}{return} m\_rtns;}
\DoxyCodeLine{283 \}}
\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 -\/-\/$>$ hash of the section header ptr.
\begin{DoxyReturn}{Returns}
the section hash table section header -\/-\/$>$ hash of the section header ptr.
\end{DoxyReturn}
\begin{DoxyCode}{0}
\DoxyCodeLine{297 \{}
\DoxyCodeLine{298 \textcolor{keywordflow}{return} m\_scn\_hash\_tbl;}
\DoxyCodeLine{299 \}}
\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}
\begin{DoxyCode}{0}
\DoxyCodeLine{293 \{}
\DoxyCodeLine{294 \textcolor{keywordflow}{return} m\_syms;}
\DoxyCodeLine{295 \}}
\end{DoxyCode}
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}