package Ġconverter s . utils Ċ Ċ import Ġconverter s . BYTE _ PTR Ċ import Ġconverter s . DWORD _ PTR Ċ import Ġconverter s . WORD _ PTR Ċ import Ġmodel . Abstract Operand Ċ import Ġmodel . Command Ċ import Ġmodel . Size Ċ import Ġjava . math . BigInteger Ċ Ċ fun Ġis Register ( source : ĠString ): ĠBoolean Ġ= ĠAbstract Operand . find Register ( source ) Ġ!= Ġnull Ċ fun Ġis Memory ( source : ĠString ): ĠBoolean Ġ= Ġsource . contains ( Regex ("\\ [[ a - z 0 - 9 * Ġ] + ]", ĠRegex Option . IGNORE _ CASE )) Ċ fun Ġis Constant ( source : ĠString ): ĠBoolean Ġ= Ġsource . toInt OrNull ( 1 6 ) Ġ!= Ġnull Ċ Ċ fun Ġparse Memory ( mem : ĠString ): ĠAbstract Operand ? Ġ= Ġwhen Ġ{ ĊĠĠĠ Ġmem . startsWith ( BYTE _ PTR ) Ġ-> ĠAbstract Operand . Memory 8 ĊĠĠĠ Ġmem . startsWith ( WORD _ PTR ) Ġ-> ĠAbstract Operand . Memory 1 6 ĊĠĠĠ Ġmem . startsWith ( DWORD _ PTR ) Ġ-> ĠAbstract Operand . Memory 3 2 ĊĠĠĠ Ġis Memory ( mem ) Ġ-> ĠAbstract Operand . Memory 3 2 ĊĠĠĠ Ġelse Ġ-> Ġnull Ċ } Ċ Ċ fun Ġget Min Possible Constant ( num : ĠInt ) Ġ= Ġwhen Ġ{ ĊĠĠĠ Ġnum . toString ( 2 ). length Ġ< Ġ 8 Ġ-> ĠAbstract Operand . Constant 8 ĊĠĠĠ Ġnum . toString ( 2 ). length Ġ< Ġ 1 6 Ġ-> ĠAbstract Operand . Constant 1 6 ĊĠĠĠ Ġnum . toString ( 2 ). length Ġ< Ġ 3 2 Ġ-> ĠAbstract Operand . Constant 3 2 ĊĠĠĠ Ġelse Ġ-> Ġnull Ċ } Ċ Ċ fun Ġis Memory Address ( str : ĠString ) Ġ= Ġstr . matches ( Regex ("[ 0 - 9 a - f ]{ 1 , 8 }", ĠRegex Option . IGNORE _ CASE )) Ċ Ċ fun Ġsplit Memory Address ( source : ĠString ) Ġ= Ġsource . split ( Regex (" ]\\ [" )). map Ġ{ ĊĠĠĠ Ġit . replace ("[ ", Ġ""). replace (" ]", Ġ"") Ċ } Ċ Ċ fun Ġreverse Int ( num : ĠBigInteger , Ġbits : ĠInt ): ĠString Ġ{ ĊĠĠĠ Ġval Ġstr Ġ= Ġnum . toString ( 1 6 ). let Ġ{ ĊĠĠĠĠĠĠĠ Ġ" 0 ". repeat (( bits Ġ/ Ġ 4 ) Ġ- Ġit . length ) Ġ+ Ġit ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġstr . map Indexed NotNull Ġ{ Ġi , Ġ_ Ġ-> Ġif Ġ( i Ġ% Ġ 2 Ġ== Ġ 1 Ġ|| Ġi Ġ== Ġstr . length Ġ- Ġ 1 ) Ġnull Ġelse Ġstr . substring ( i , Ġi Ġ+ Ġ 2 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Re versed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ("") Ċ } Ċ Ċ val Ġstack Registers Ġ= ĠlistOf ( Abstract Operand . EB P , ĠAbstract Operand . ESP ) Ċ