\hypertarget { classtheo_ 1_ 1decomp_ 1_ 1routine_ _ t} { } \doxysection { theo\+ ::decomp\+ ::routine\+ \_ \+ t Class Reference}
\label { classtheo_ 1_ 1decomp_ 1_ 1routine_ _ t} \index { theo::decomp::routine\_ t@{ theo::decomp::routine\_ t} }
the routine class which is responsible for creating symbols for routines. if the routine is located inside a section with the name \char `\" { } .\+ split\char `\" { } it will break functions into instruction symbols.
{ \ttfamily \# include \char `\" { } routine.\+ hpp\char `\" { } }
\doxysubsection * { Public Member Functions}
\begin { DoxyCompactItemize}
\item
\mbox { \hyperlink { classtheo_ 1_ 1decomp_ 1_ 1routine_ _ t_ ab9f0693c5ec50954d953b28bebe4426b} { routine\+ \_ \+ t} } (coff\+ ::symbol\+ \_ \+ t $ \ast $ sym, coff\+ ::image\+ \_ \+ t $ \ast $ img, coff\+ ::section\+ \_ \+ header\+ \_ \+ t $ \ast $ \mbox { \hyperlink { classtheo_ 1_ 1decomp_ 1_ 1routine_ _ t_ ad3a75cb97abbcd9b282772401b256f36} { scn} } , std\+ ::vector$ < $ std\+ ::uint8\+ \_ \+ t $ > $ \& fn, \mbox { \hyperlink { namespacetheo_ 1_ 1decomp_ af96177687d0ad683c5897d8fa01135f9} { sym\+ \_ \+ type\+ \_ \+ t} } dcmp\+ \_ \+ type)
\begin { DoxyCompactList} \small \item \em the explicit constructor for \mbox { \hyperlink { classtheo_ 1_ 1decomp_ 1_ 1routine_ _ t} { routine\+ \_ \+ t} } . \end { DoxyCompactList} \item
std\+ ::vector$ < $ \mbox { \hyperlink { classtheo_ 1_ 1decomp_ 1_ 1symbol_ _ t} { decomp\+ ::symbol\+ \_ \+ t} } $ > $ \mbox { \hyperlink { classtheo_ 1_ 1decomp_ 1_ 1routine_ _ t_ a1f790bd144badc71d6c4942cac8fc4e8} { decompose} } ()
\begin { DoxyCompactList} \small \item \em decompose the function into symbol(s). \end { DoxyCompactList} \item
coff\+ ::section\+ \_ \+ header\+ \_ \+ t $ \ast $ \mbox { \hyperlink { classtheo_ 1_ 1decomp_ 1_ 1routine_ _ t_ ad3a75cb97abbcd9b282772401b256f36} { scn} } ()
\begin { DoxyCompactList} \small \item \em gets the section header of the section in which the symbol is located in. \end { DoxyCompactList} \item
std\+ ::vector$ < $ std\+ ::uint8\+ \_ \+ t $ > $ \mbox { \hyperlink { classtheo_ 1_ 1decomp_ 1_ 1routine_ _ t_ a605a2be669a10a5a45325a5dca04401a} { data} } ()
\begin { DoxyCompactList} \small \item \em gets the function bytes. \end { DoxyCompactList} \end { DoxyCompactItemize}
\doxysubsection { Detailed Description}
the routine class which is responsible for creating symbols for routines. if the routine is located inside a section with the name \char `\" { } .\+ split\char `\" { } it will break functions into instruction symbols.
Definition at line \mbox { \hyperlink { routine_ 8hpp_ source_ l00053} { 53} } of file \mbox { \hyperlink { routine_ 8hpp_ source} { routine.\+ hpp} } .
\doxysubsection { Constructor \& Destructor Documentation}
\mbox { \Hypertarget { classtheo_ 1_ 1decomp_ 1_ 1routine_ _ t_ ab9f0693c5ec50954d953b28bebe4426b} \label { classtheo_ 1_ 1decomp_ 1_ 1routine_ _ t_ ab9f0693c5ec50954d953b28bebe4426b} }
\index { theo::decomp::routine\_ t@{ theo::decomp::routine\_ t} !routine\_ t@{ routine\_ t} }
\index { routine\_ t@{ routine\_ t} !theo::decomp::routine\_ t@{ theo::decomp::routine\_ t} }
\doxysubsubsection { \texorpdfstring { routine\_ t()} { routine\_ t()} }
{ \footnotesize \ttfamily theo\+ ::decomp\+ ::routine\+ \_ \+ t\+ ::routine\+ \_ \+ t (\begin { DoxyParamCaption} \item [{coff\+::symbol\+\_\+t $\ast$}] { sym, } \item [{coff\+::image\+\_\+t $\ast$}] { img, } \item [{coff\+::section\+\_\+header\+\_\+t $\ast$}] { scn, } \item [{std\+::vector$<$ std\+::uint8\+\_\+t $>$ \&}] { fn, } \item [{\mbox{\hyperlink{namespacetheo_1_1decomp_af96177687d0ad683c5897d8fa01135f9}{sym\+\_\+type\+\_\+t}}}] { dcmp\+ \_ \+ type } \end { DoxyParamCaption} )\hspace { 0.3cm} { \ttfamily [explicit]} }
the explicit constructor for \mbox { \hyperlink { classtheo_ 1_ 1decomp_ 1_ 1routine_ _ t} { routine\+ \_ \+ t} } .
\begin { DoxyParams} { Parameters}
{ \em sym} & the coff symbol for the routine.\\
\hline
{ \em img} & the coff image which contains the symbol.\\
\hline
{ \em scn} & the section header of the section that contains the symbol.\\
\hline
{ \em fn} & the data (bytes) of the function.\\
\hline
{ \em dcmp\+ \_ \+ type} & the type of decomp to do. if this is sym\+ \_ \+ type\+ \_ \+ t\+ ::function then this class wont split the function up into individual instructions.\\
\hline
\end { DoxyParams}
Definition at line \mbox { \hyperlink { routine_ 8cpp_ source_ l00034} { 34} } of file \mbox { \hyperlink { routine_ 8cpp_ source} { routine.\+ cpp} } .
\begin { DoxyCode} { 0}
\DoxyCodeLine { 00039 : m\_ img(img), m\_ scn(\mbox { \hyperlink { classtheo_ 1_ 1decomp_ 1_ 1routine_ _ t_ ad3a75cb97abbcd9b282772401b256f36} { scn} } ), m\_ data(fn), m\_ dcmp\_ type(dcmp\_ type), m\_ sym(sym) \{ \} }
\end { DoxyCode}
\doxysubsection { Member Function Documentation}
\mbox { \Hypertarget { classtheo_ 1_ 1decomp_ 1_ 1routine_ _ t_ a605a2be669a10a5a45325a5dca04401a} \label { classtheo_ 1_ 1decomp_ 1_ 1routine_ _ t_ a605a2be669a10a5a45325a5dca04401a} }
\index { theo::decomp::routine\_ t@{ theo::decomp::routine\_ t} !data@{ data} }
\index { data@{ data} !theo::decomp::routine\_ t@{ theo::decomp::routine\_ t} }
\doxysubsubsection { \texorpdfstring { data()} { data()} }
{ \footnotesize \ttfamily std\+ ::vector$ < $ std\+ ::uint8\+ \_ \+ t $ > $ theo\+ ::decomp\+ ::routine\+ \_ \+ t\+ ::data (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} )}
gets the function bytes.
\begin { DoxyReturn} { Returns}
the function bytes.
\end { DoxyReturn}
Definition at line \mbox { \hyperlink { routine_ 8cpp_ source_ l00172} { 172} } of file \mbox { \hyperlink { routine_ 8cpp_ source} { routine.\+ cpp} } .
\begin { DoxyCode} { 0}
\DoxyCodeLine { 00172 \{ }
\DoxyCodeLine { 00173 \textcolor { keywordflow} { return} m\_ data;}
\DoxyCodeLine { 00174 \} }
\end { DoxyCode}
Referenced by \mbox { \hyperlink { routine_ 8cpp_ source_ l00041} { decompose()} } .
\mbox { \Hypertarget { classtheo_ 1_ 1decomp_ 1_ 1routine_ _ t_ a1f790bd144badc71d6c4942cac8fc4e8} \label { classtheo_ 1_ 1decomp_ 1_ 1routine_ _ t_ a1f790bd144badc71d6c4942cac8fc4e8} }
\index { theo::decomp::routine\_ t@{ theo::decomp::routine\_ t} !decompose@{ decompose} }
\index { decompose@{ decompose} !theo::decomp::routine\_ t@{ theo::decomp::routine\_ t} }
\doxysubsubsection { \texorpdfstring { decompose()} { decompose()} }
{ \footnotesize \ttfamily std\+ ::vector$ < $ \mbox { \hyperlink { classtheo_ 1_ 1decomp_ 1_ 1symbol_ _ t} { decomp\+ ::symbol\+ \_ \+ t} } $ > $ theo\+ ::decomp\+ ::routine\+ \_ \+ t\+ ::decompose (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} )}
decompose the function into symbol(s).
\begin { DoxyReturn} { Returns}
symbol(s) of the function.
\end { DoxyReturn}
Definition at line \mbox { \hyperlink { routine_ 8cpp_ source_ l00041} { 41} } of file \mbox { \hyperlink { routine_ 8cpp_ source} { routine.\+ cpp} } .
\begin { DoxyCode} { 0}
\DoxyCodeLine { 00041 \{ }
\DoxyCodeLine { 00042 std::vector<decomp::symbol\_ t> result;}
\DoxyCodeLine { 00043 }
\DoxyCodeLine { 00044 \textcolor { keywordflow} { switch} (m\_ dcmp\_ type) \{ }
\DoxyCodeLine { 00045 \textcolor { keywordflow} { case} \mbox { \hyperlink { namespacetheo_ 1_ 1decomp_ af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a} { function} } : \{ }
\DoxyCodeLine { 00046 std::vector<recomp::reloc\_ t> relocs;}
\DoxyCodeLine { 00047 \textcolor { keyword} { auto} scn\_ relocs = \textcolor { keyword} { reinterpret\_ cast<} coff::reloc\_ t*\textcolor { keyword} { >} (}
\DoxyCodeLine { 00048 m\_ scn-\/ >ptr\_ relocs + \textcolor { keyword} { reinterpret\_ cast<} std::uint8\_ t*\textcolor { keyword} { >} (m\_ img));}
\DoxyCodeLine { 00049 }
\DoxyCodeLine { 00050 \textcolor { keywordflow} { for} (\textcolor { keyword} { auto} idx = 0u; idx < m\_ scn-\/ >num\_ relocs; ++idx) \{ }
\DoxyCodeLine { 00051 \textcolor { keyword} { auto} scn\_ reloc = \& scn\_ relocs[idx];}
\DoxyCodeLine { 00052 \textcolor { comment} { // if the reloc is in the current function...} }
\DoxyCodeLine { 00053 \textcolor { keywordflow} { if} (scn\_ reloc-\/ >virtual\_ address >= m\_ sym-\/ >value \& \& }
\DoxyCodeLine { 00054 scn\_ reloc-\/ >virtual\_ address < m\_ sym-\/ >value + m\_ data.size()) \{ }
\DoxyCodeLine { 00055 \textcolor { keyword} { auto} sym\_ reloc = m\_ img-\/ >get\_ symbol(scn\_ relocs[idx].symbol\_ index);}
\DoxyCodeLine { 00056 \textcolor { keyword} { auto} sym\_ name = \mbox { \hyperlink { classtheo_ 1_ 1decomp_ 1_ 1symbol_ _ t_ a7c6dee036291ded334aa10d89293fc2a} { symbol\_ t::name} } (m\_ img, sym\_ reloc);}
\DoxyCodeLine { 00057 \textcolor { keyword} { auto} sym\_ hash = \mbox { \hyperlink { classtheo_ 1_ 1decomp_ 1_ 1symbol_ _ t_ a8695d75670cc4d61d275464e9109ff06} { decomp::symbol\_ t::hash} } (sym\_ name.data());}
\DoxyCodeLine { 00058 relocs.push\_ back(}
\DoxyCodeLine { 00059 recomp::reloc\_ t(scn\_ reloc-\/ >virtual\_ address -\/ m\_ sym-\/ >value,}
\DoxyCodeLine { 00060 sym\_ hash, sym\_ name.data()));}
\DoxyCodeLine { 00061 \} }
\DoxyCodeLine { 00062 \} }
\DoxyCodeLine { 00063 }
\DoxyCodeLine { 00064 result.push\_ back(decomp::symbol\_ t(}
\DoxyCodeLine { 00065 m\_ img, \mbox { \hyperlink { classtheo_ 1_ 1decomp_ 1_ 1symbol_ _ t_ a7c6dee036291ded334aa10d89293fc2a} { symbol\_ t::name} } (m\_ img, m\_ sym).\mbox { \hyperlink { classtheo_ 1_ 1decomp_ 1_ 1routine_ _ t_ a605a2be669a10a5a45325a5dca04401a} { data} } (), m\_ sym-\/ >value, m\_ data,}
\DoxyCodeLine { 00066 m\_ scn, m\_ sym, relocs, \mbox { \hyperlink { namespacetheo_ 1_ 1decomp_ af96177687d0ad683c5897d8fa01135f9acf6baee49c2ddb7e89724231bbd75d4a} { sym\_ type\_ t::function} } ));}
\DoxyCodeLine { 00067 \textcolor { keywordflow} { break} ;}
\DoxyCodeLine { 00068 \} }
\DoxyCodeLine { 00069 \textcolor { keywordflow} { case} \mbox { \hyperlink { namespacetheo_ 1_ 1decomp_ af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9} { instruction} } : \{ }
\DoxyCodeLine { 00070 std::uint32\_ t offset = \{ \} ;}
\DoxyCodeLine { 00071 xed\_ error\_ enum\_ t err;}
\DoxyCodeLine { 00072 }
\DoxyCodeLine { 00073 xed\_ decoded\_ inst\_ t instr;}
\DoxyCodeLine { 00074 xed\_ state\_ t istate\{ XED\_ MACHINE\_ MODE\_ LONG\_ 64, XED\_ ADDRESS\_ WIDTH\_ 64b\} ;}
\DoxyCodeLine { 00075 xed\_ decoded\_ inst\_ zero\_ set\_ mode(\& instr, \& istate);}
\DoxyCodeLine { 00076 }
\DoxyCodeLine { 00077 \textcolor { comment} { // keep looping over the section, lower the number of bytes each time...} }
\DoxyCodeLine { 00078 \textcolor { comment} { //} }
\DoxyCodeLine { 00079 \textcolor { keywordflow} { while} ((err = xed\_ decode(\& instr, m\_ data.data() + offset,}
\DoxyCodeLine { 00080 m\_ data.size() -\/ offset)) == XED\_ ERROR\_ NONE) \{ }
\DoxyCodeLine { 00081 \textcolor { comment} { // symbol name is of the format: symbol@instroffset, I.E: main@11...} }
\DoxyCodeLine { 00082 \textcolor { comment} { //} }
\DoxyCodeLine { 00083 \textcolor { keyword} { auto} new\_ sym\_ name = \mbox { \hyperlink { classtheo_ 1_ 1decomp_ 1_ 1symbol_ _ t_ a7c6dee036291ded334aa10d89293fc2a} { symbol\_ t::name} } (m\_ img, m\_ sym);}
\DoxyCodeLine { 00084 }
\DoxyCodeLine { 00085 \textcolor { comment} { // first instruction doesnt need the @offset...} }
\DoxyCodeLine { 00086 \textcolor { comment} { //} }
\DoxyCodeLine { 00087 \textcolor { keywordflow} { if} (offset)}
\DoxyCodeLine { 00088 new\_ sym\_ name.append(\textcolor { stringliteral} { "{ } @"{ } } ).append(std::to\_ string(offset));}
\DoxyCodeLine { 00089 }
\DoxyCodeLine { 00090 std::vector<recomp::reloc\_ t> relocs;}
\DoxyCodeLine { 00091 \textcolor { keyword} { auto} scn\_ relocs = \textcolor { keyword} { reinterpret\_ cast<} coff::reloc\_ t*\textcolor { keyword} { >} (}
\DoxyCodeLine { 00092 m\_ scn-\/ >ptr\_ relocs + \textcolor { keyword} { reinterpret\_ cast<} std::uint8\_ t*\textcolor { keyword} { >} (m\_ img));}
\DoxyCodeLine { 00093 }
\DoxyCodeLine { 00094 \textcolor { comment} { // find if this instruction has a relocation or not...} }
\DoxyCodeLine { 00095 \textcolor { comment} { // if so, return the reloc\_ t...} }
\DoxyCodeLine { 00096 \textcolor { comment} { //} }
\DoxyCodeLine { 00097 \textcolor { keyword} { auto} reloc = std::find\_ if(}
\DoxyCodeLine { 00098 scn\_ relocs, scn\_ relocs + m\_ scn-\/ >num\_ relocs,}
\DoxyCodeLine { 00099 [\& ](coff::reloc\_ t reloc) \{ }
\DoxyCodeLine { 00100 return reloc.virtual\_ address >= m\_ sym-\/ >value + offset \& \& }
\DoxyCodeLine { 00101 reloc.virtual\_ address <}
\DoxyCodeLine { 00102 m\_ sym-\/ >value + offset +}
\DoxyCodeLine { 00103 xed\_ decoded\_ inst\_ get\_ length(\& instr);}
\DoxyCodeLine { 00104 \} );}
\DoxyCodeLine { 00105 }
\DoxyCodeLine { 00106 \textcolor { comment} { // if there is indeed a reloc for this instruction...} }
\DoxyCodeLine { 00107 \textcolor { comment} { //} }
\DoxyCodeLine { 00108 \textcolor { keywordflow} { if} (reloc != scn\_ relocs + m\_ scn-\/ >num\_ relocs) \{ }
\DoxyCodeLine { 00109 \textcolor { keyword} { auto} sym\_ reloc = m\_ img-\/ >get\_ symbol(reloc-\/ >symbol\_ index);}
\DoxyCodeLine { 00110 \textcolor { keyword} { auto} sym\_ name = \mbox { \hyperlink { classtheo_ 1_ 1decomp_ 1_ 1symbol_ _ t_ a7c6dee036291ded334aa10d89293fc2a} { symbol\_ t::name} } (m\_ img, sym\_ reloc);}
\DoxyCodeLine { 00111 \textcolor { keyword} { auto} sym\_ hash = \mbox { \hyperlink { classtheo_ 1_ 1decomp_ 1_ 1symbol_ _ t_ a8695d75670cc4d61d275464e9109ff06} { decomp::symbol\_ t::hash} } (sym\_ name.data());}
\DoxyCodeLine { 00112 \textcolor { keyword} { auto} reloc\_ offset = reloc-\/ >virtual\_ address -\/ m\_ sym-\/ >value -\/ offset;}
\DoxyCodeLine { 00113 }
\DoxyCodeLine { 00114 relocs.push\_ back(}
\DoxyCodeLine { 00115 recomp::reloc\_ t(reloc\_ offset, sym\_ hash, sym\_ name.data()));}
\DoxyCodeLine { 00116 \} }
\DoxyCodeLine { 00117 }
\DoxyCodeLine { 00118 \textcolor { comment} { // add a reloc to the next instruction...} }
\DoxyCodeLine { 00119 \textcolor { comment} { // note that the offset is ZERO... comp\_ t will understand that} }
\DoxyCodeLine { 00120 \textcolor { comment} { // relocs with offset ZERO means the next instructions...} }
\DoxyCodeLine { 00121 \textcolor { comment} { //} }
\DoxyCodeLine { 00122 \textcolor { keyword} { auto} next\_ inst\_ sym =}
\DoxyCodeLine { 00123 \mbox { \hyperlink { classtheo_ 1_ 1decomp_ 1_ 1symbol_ _ t_ a7c6dee036291ded334aa10d89293fc2a} { symbol\_ t::name} } (m\_ img, m\_ sym)}
\DoxyCodeLine { 00124 .append(\textcolor { stringliteral} { "{ } @"{ } } )}
\DoxyCodeLine { 00125 .append(std::to\_ string(offset +}
\DoxyCodeLine { 00126 xed\_ decoded\_ inst\_ get\_ length(\& instr)));}
\DoxyCodeLine { 00127 }
\DoxyCodeLine { 00128 relocs.push\_ back(recomp::reloc\_ t(}
\DoxyCodeLine { 00129 0, \mbox { \hyperlink { classtheo_ 1_ 1decomp_ 1_ 1symbol_ _ t_ a8695d75670cc4d61d275464e9109ff06} { decomp::symbol\_ t::hash} } (next\_ inst\_ sym), next\_ inst\_ sym.data()));}
\DoxyCodeLine { 00130 }
\DoxyCodeLine { 00131 \textcolor { comment} { // get the instructions bytes} }
\DoxyCodeLine { 00132 \textcolor { comment} { //} }
\DoxyCodeLine { 00133 std::vector<std::uint8\_ t> inst\_ bytes(}
\DoxyCodeLine { 00134 m\_ data.data() + offset,}
\DoxyCodeLine { 00135 m\_ data.data() + offset + xed\_ decoded\_ inst\_ get\_ length(\& instr));}
\DoxyCodeLine { 00136 }
\DoxyCodeLine { 00137 result.push\_ back(decomp::symbol\_ t(m\_ img, new\_ sym\_ name, offset,}
\DoxyCodeLine { 00138 inst\_ bytes, m\_ scn, m\_ sym, relocs,}
\DoxyCodeLine { 00139 \mbox { \hyperlink { namespacetheo_ 1_ 1decomp_ af96177687d0ad683c5897d8fa01135f9a4842f4c175b1ec87fc82ef3757d3a0e9} { sym\_ type\_ t::instruction} } ));}
\DoxyCodeLine { 00140 }
\DoxyCodeLine { 00141 \textcolor { comment} { // after creating the symbol and dealing with relocs then print the} }
\DoxyCodeLine { 00142 \textcolor { comment} { // information we have concluded...} }
\DoxyCodeLine { 00143 \textcolor { comment} { //} }
\DoxyCodeLine { 00144 \textcolor { keywordtype} { char} buff[255];}
\DoxyCodeLine { 00145 offset += xed\_ decoded\_ inst\_ get\_ length(\& instr);}
\DoxyCodeLine { 00146 xed\_ format\_ context(XED\_ SYNTAX\_ INTEL, \& instr, buff, \textcolor { keyword} { sizeof} buff, NULL,}
\DoxyCodeLine { 00147 NULL, NULL);}
\DoxyCodeLine { 00148 }
\DoxyCodeLine { 00149 spdlog::info(\textcolor { stringliteral} { "{ } \{ \} : \{ \} "{ } } , new\_ sym\_ name, buff);}
\DoxyCodeLine { 00150 \textcolor { comment} { // need to set this so that instr can be used to decode again...} }
\DoxyCodeLine { 00151 xed\_ decoded\_ inst\_ zero\_ set\_ mode(\& instr, \& istate);}
\DoxyCodeLine { 00152 \} }
\DoxyCodeLine { 00153 }
\DoxyCodeLine { 00154 \textcolor { comment} { // remove the relocation to the next symbol from the last instruction} }
\DoxyCodeLine { 00155 \textcolor { comment} { //} }
\DoxyCodeLine { 00156 \textcolor { keyword} { auto} \& last\_ inst = result.back();}
\DoxyCodeLine { 00157 \textcolor { keyword} { auto} \& last\_ inst\_ relocs = last\_ inst.relocs();}
\DoxyCodeLine { 00158 last\_ inst\_ relocs.erase(last\_ inst\_ relocs.end() -\/ 1);}
\DoxyCodeLine { 00159 \textcolor { keywordflow} { break} ;}
\DoxyCodeLine { 00160 \} }
\DoxyCodeLine { 00161 \textcolor { keywordflow} { default} :}
\DoxyCodeLine { 00162 \textcolor { keywordflow} { break} ;}
\DoxyCodeLine { 00163 \} }
\DoxyCodeLine { 00164 }
\DoxyCodeLine { 00165 \textcolor { keywordflow} { return} result;}
\DoxyCodeLine { 00166 \} }
\end { DoxyCode}
References \mbox { \hyperlink { routine_ 8cpp_ source_ l00172} { data()} } , \mbox { \hyperlink { symbol_ 8hpp_ source_ l00044} { theo\+ ::decomp\+ ::function} } , \mbox { \hyperlink { symbol_ 8cpp_ source_ l00088} { theo\+ ::decomp\+ ::symbol\+ \_ \+ t\+ ::hash()} } , \mbox { \hyperlink { symbol_ 8hpp_ source_ l00045} { theo\+ ::decomp\+ ::instruction} } , and \mbox { \hyperlink { symbol_ 8cpp_ source_ l00052} { theo\+ ::decomp\+ ::symbol\+ \_ \+ t\+ ::name()} } .
\mbox { \Hypertarget { classtheo_ 1_ 1decomp_ 1_ 1routine_ _ t_ ad3a75cb97abbcd9b282772401b256f36} \label { classtheo_ 1_ 1decomp_ 1_ 1routine_ _ t_ ad3a75cb97abbcd9b282772401b256f36} }
\index { theo::decomp::routine\_ t@{ theo::decomp::routine\_ t} !scn@{ scn} }
\index { scn@{ scn} !theo::decomp::routine\_ t@{ theo::decomp::routine\_ t} }
\doxysubsubsection { \texorpdfstring { scn()} { scn()} }
{ \footnotesize \ttfamily coff\+ ::section\+ \_ \+ header\+ \_ \+ t $ \ast $ theo\+ ::decomp\+ ::routine\+ \_ \+ t\+ ::scn (\begin { DoxyParamCaption} { } \end { DoxyParamCaption} )}
gets the section header of the section in which the symbol is located in.
\begin { DoxyReturn} { Returns}
the section header of the section in which the symbol is located in.
\end { DoxyReturn}
Definition at line \mbox { \hyperlink { routine_ 8cpp_ source_ l00168} { 168} } of file \mbox { \hyperlink { routine_ 8cpp_ source} { routine.\+ cpp} } .
\begin { DoxyCode} { 0}
\DoxyCodeLine { 00168 \{ }
\DoxyCodeLine { 00169 \textcolor { keywordflow} { return} m\_ scn;}
\DoxyCodeLine { 00170 \} }
\end { DoxyCode}
The documentation for this class was generated from the following files\+ :\begin { DoxyCompactItemize}
\item
include/decomp/\mbox { \hyperlink { routine_ 8hpp} { routine.\+ hpp} } \item
src/decomp/\mbox { \hyperlink { routine_ 8cpp} { routine.\+ cpp} } \end { DoxyCompactItemize}