package Ġdev . bin club . bin sc ure . processors . ind irection Ċ Ċ import Ġdev . bin club . bin sc ure . CO bf usc ator . random Ċ import Ġdev . bin club . bin sc ure . utils . add Ċ import Ġdev . bin club . bin sc ure . utils . internal Name Ċ import Ġdev . bin club . bin sc ure . utils .* Ċ import Ġorg . object web . asm . Class Reader Ċ import Ġorg . object web . asm . Class Writer Ċ import Ġorg . object web . asm . Op codes .* Ċ import Ġorg . object web . asm . tree .* Ċ import Ġkotlin . math . max Ċ Ċ /** Ċ Ġ* Ġ@ author Ġcook ied rag on 2 3 4 Ġ 1 2 / Feb / 2 0 2 0 Ċ Ġ*/ Ċ Ċ fun Ġgenerate Decrypt or Method ( class Node : ĠClass Node , Ġmethod Node : ĠMethod Node ) Ġ{ Ċ ĉ method Node . instructions . apply Ġ{ Ċĉ ĉ val Ġloop Start Ġ= Ġnew Label () Ċĉ ĉ val Ġexit Loop Ġ= Ġnew Label () Ċĉ ĉ val Ġset Char Arr Val Ġ= Ġnew Label () Ċĉ ĉ val Ġthrow Null Ġ= Ġnew Label () Ċĉ ĉ val Ġget Thread Ġ= Ġnew Label () Ċĉ ĉ val Ġt ble 0 Ġ= Ġnew Label () Ċĉ ĉ val Ġt ble 1 Ġ= Ġnew Label () Ċĉ ĉ val Ġt ble 2 Ġ= Ġnew Label () Ċĉ ĉ val Ġt ble 3 Ġ= Ġnew Label () Ċĉ ĉ val Ġt ble 4 Ġ= Ġnew Label () Ċĉ ĉ val Ġcatch Ġ= Ġnew Label () Ċĉ ĉ val Ġcatch 2 Ġ= Ġnew Label () Ċĉ ĉ val Ġstart Ġ= Ġnew Label () Ċĉ ĉ val Ġend Ġ= Ġnew Label () Ċĉ ĉ val Ġpre 1 5 Ġ= Ġnew Label () ĊĉĉĊĉ ĉ add ( AC ON ST _ NULL ) Ċĉ ĉ add ( Var Insn Node ( AST ORE , Ġ 1 )) Ċĉ ĉ add ( AC ON ST _ NULL ) Ċĉ ĉ add ( Var Insn Node ( AST ORE , Ġ 2 )) Ċĉ ĉ add ( AC ON ST _ NULL ) Ċĉ ĉ add ( Var Insn Node ( AST ORE , Ġ 3 )) Ċĉ ĉ add ( AC ON ST _ NULL ) Ċĉ ĉ add ( Var Insn Node ( AST ORE , Ġ 4 )) Ċĉ ĉ add ( ICON ST _ M 1 ) Ċĉ ĉ add ( Var Insn Node ( IST ORE , Ġ 5 )) Ċĉ ĉ add ( ICON ST _ M 1 ) Ċĉ ĉ add ( Var Insn Node ( IST ORE , Ġ 6 )) Ċĉ ĉ add ( ICON ST _ M 1 ) Ċĉ ĉ add ( Var Insn Node ( IST ORE , Ġ 7 )) Ċĉ ĉ add ( ldc Int ( 7 )) Ċĉ ĉ add ( Var Insn Node ( IST ORE , Ġ 8 )) Ċĉ ĉ add ( AC ON ST _ NULL ) Ċĉ ĉ add ( Var Insn Node ( AST ORE , Ġ 9 )) Ċĉ ĉ add ( ldc Int ( 2 )) Ċĉ ĉ add ( Var Insn Node ( IST ORE , Ġ 1 0 )) ĊĉĉĊĉĉ ĊĉĉĊĉ ĉ val Ġroot Switch Ġ= Ġnew Label () ĊĉĉĊĉ ĉ val Ġswitch 5 Ġ= Ġnew Label () Ċĉ ĉ val Ġswitch 6 Ġ= Ġnew Label () Ċĉ ĉ val Ġswitch 7 Ġ= Ġnew Label () Ċĉ ĉ val Ġswitch 8 Ġ= Ġnew Label () Ċĉ ĉ val Ġswitch 9 Ġ= Ġnew Label () Ċĉ ĉ val Ġswitch 1 0 Ġ= Ġnew Label () Ċĉ ĉ val Ġswitch 1 1 Ġ= Ġnew Label () Ċĉ ĉ val Ġswitch 1 2 Ġ= Ġnew Label () Ċĉ ĉ val Ġswitch 1 3 Ġ= Ġnew Label () Ċĉ ĉ val Ġswitch 1 4 Ġ= Ġnew Label () Ċĉ ĉ val Ġswitch 1 5 Ġ= Ġnew Label () Ċĉ ĉ val Ġswitch 1 6 Ġ= Ġnew Label () Ċĉ ĉ val Ġswitch 1 7 Ġ= Ġnew Label () Ċĉ ĉ val Ġswitch 1 8 Ġ= Ġnew Label () ĊĉĉĊĉĉĊĉ ĉ val Ġopaque T cb Start 1 Ġ= Ġnew Label () Ċĉ ĉ val Ġopaque T cb End 1 Ġ= Ġnew Label () Ċĉ ĉ val Ġopaque T cb Handler 1 Ġ= Ġnew Label () ĊĉĉĊĉĉĊĉ ĉ add ( Jump Insn Node ( GOTO , Ġstart )) ĊĉĉĊĉ ĉ val Ġblocks Ġ= Ġarray ListOf ( Ċĉĉ ĉ Insn List (). apply Ġ{ Ċĉĉĉ ĉ add ( start ) Ċĉĉĉ ĉ add ( root Switch ) Ċĉĉĉ ĉ add ( Var Insn Node ( I LOAD , Ġ 8 )) Ċĉĉĉ ĉ add ( Ċĉĉĉĉ ĉ construct Table Switch ( Ċĉĉĉĉĉĉ 0 , Ġ// ĠMin Ċĉĉĉĉĉ ĉ throw Null , Ġ// ĠDefault Ċĉĉĉĉĉ ĉ t ble 0 , Ġt ble 1 , Ġt ble 2 , Ġt ble 3 , Ġt ble 4 , Ġswitch 5 , Ġswitch 6 , Ġswitch 7 , Ġswitch 8 , Ġswitch 9 , Ġswitch 1 0 , Ġswitch 1 1 , Ġswitch 1 2 , Ġswitch 1 3 , Ċĉĉĉĉĉ ĉ switch 1 4 , Ġswitch 1 5 , Ġswitch 1 6 , Ġswitch 1 7 , Ġswitch 1 8 Ċĉĉĉĉ ĉ ) Ċĉĉĉ ĉ ) Ċĉĉ ĉ }, Ċĉĉ ĉ Insn List (). apply Ġ{ Ċĉĉĉ ĉ add ( switch 7 ) Ċĉĉĉ ĉ // ĠFirst Ġwe Ġneed Ġto Ġdecrypt Ġthe Ġmethod Ġdescription Ġstored Ġat Ġlocal Ġvar Ġ 1 Ċĉĉĉ ĉ // ĠWe Ġwill Ġturn Ġit Ġinto Ġa Ġchar Ġarray Ċĉĉĉ ĉ add ( Var Insn Node ( AL O AD , Ġ 0 )) Ċĉĉĉ ĉ add ( Method Insn Node ( IN VOKE VIRTUAL , Ġ" java / lang / String ", Ġ" toCharArray ", Ġ" ()[ C ", Ġfalse )) Ċĉĉĉ ĉ add ( Var Insn Node ( AST ORE , Ġ 1 )) Ċĉĉĉ ĉ add ( ldc Int ( 9 )) Ċĉĉĉ ĉ add ( Var Insn Node ( IST ORE , Ġ 8 )) Ċĉĉĉ ĉ add ( Jump Insn Node ( GOTO , Ġroot Switch )) Ċĉĉ ĉ }, Ċĉĉ ĉ Insn List (). apply Ġ{ Ċĉĉĉ ĉ add ( switch 9 ) Ċĉĉĉ ĉ add ( Var Insn Node ( AL O AD , Ġ 1 )) Ċĉĉĉ ĉ // ĠFind Ġthe Ġarray Ġlength Ġand Ġcreate Ġour Ġdecrypted Ġchar Ġarray Ġ( store Ġin Ġslot Ġ 4 ) Ċĉĉĉ ĉ add ( ARRAY LENGTH ) Ċĉĉĉ ĉ add ( Int Insn Node ( NE WAR R AY , ĠT _ CHAR )) Ċĉĉĉ ĉ add ( Var Insn Node ( AST ORE , Ġ 2 )) Ċĉĉĉ ĉ add ( ldc Int ( 6 )) Ċĉĉĉ ĉ add ( Var Insn Node ( IST ORE , Ġ 8 )) Ċĉĉĉ ĉ add ( Jump Insn Node ( GOTO , Ġroot Switch )) Ċĉĉ ĉ }, Ċĉĉ ĉ Insn List (). apply Ġ{ Ċĉĉĉ ĉ add ( switch 6 ) Ċĉĉĉ ĉ // ĠGet Ġthe Ġclass Ġand Ġmethod Ġhash Ċĉĉĉ ĉ add ( get Thread ) Ċĉĉĉ ĉ add ( Method Insn Node ( IN VOKE STATIC , Ġ" java / lang / Thread ", Ġ" currentThread ", Ġ" () Ljava / lang / Thread ;", Ġfalse )) Ċĉĉĉ ĉ add ( Var Insn Node ( AST ORE , Ġ 3 )) Ġ// ĠStored Ġin Ġvar Ġ 7 Ċĉĉĉ ĉ add ( ldc Int ( 8 )) Ċĉĉĉ ĉ add ( Var Insn Node ( IST ORE , Ġ 8 )) Ċĉĉĉ ĉ add ( Jump Insn Node ( GOTO , Ġroot Switch )) Ċĉĉ ĉ }, Ċĉĉ ĉ Insn List (). apply Ġ{ Ċĉĉĉ ĉ add ( opaque T cb Start 1 ) Ċĉĉĉ ĉ add ( switch 8 ) Ċĉĉĉ ĉ add ( Var Insn Node ( AL O AD , Ġ 3 )) Ċĉĉĉ ĉ add ( Method Insn Node ( IN VOKE VIRTUAL , Ġ" java / lang / Thread ", Ġ" get StackTrace ", Ġ" ()[ Ljava / lang / StackTrace Element ;", Ġfalse )) Ċĉĉĉ ĉ add ( Var Insn Node ( AST ORE , Ġ 9 )) ĊĉĉĉĉĊĉĉĉ ĉ add ( ldc Int ( 2 )) Ċĉĉĉ ĉ add ( Insn Node ( DUP )) Ċĉĉĉ ĉ add ( Var Insn Node ( IST ORE , Ġ 1 0 )) Ċĉĉĉ ĉ add ( Type Insn Node ( NEW , Ġ" java / lang / Integer ")) Ċĉĉĉ ĉ add ( Insn Node ( DUP _ X 1 )) Ċĉĉĉ ĉ add ( Insn Node ( SWAP )) Ċĉĉĉ ĉ add ( Method Insn Node ( INV OK ES PE CIAL , Ġ" java / lang / Integer ", Ġ"< init >", Ġ"( I ) V ")) Ċĉĉĉ ĉ add ( Insn Node ( MON IT ORE X IT )) Ċĉĉĉĉ ĊĉĉĉĉĊĉĉĉ ĉ add ( switch 5 ) Ċĉĉĉ ĉ add ( Var Insn Node ( AL O AD , Ġ 4 )) Ċĉĉĉ ĉ add ( Method Insn Node ( IN VOKE VIRTUAL , ĠStack Trace Element :: class . internal Name , Ġ" get ClassName ", Ġ" () Ljava / lang / String ;", Ġfalse )) Ċĉĉĉ ĉ add ( Method Insn Node ( IN VOKE VIRTUAL , Ġ" java / lang / Object ", Ġ" hashCode ", Ġ" () I ", Ġfalse )) Ċĉĉĉ ĉ add ( Var Insn Node ( IST ORE , Ġ 5 )) Ċĉĉĉ ĉ add ( ldc Int ( 1 1 )) Ċĉĉĉ ĉ add ( Var Insn Node ( IST ORE , Ġ 8 )) Ċĉĉĉ ĉ add ( Jump Insn Node ( GOTO , Ġroot Switch )) ĊĉĉĉĉĊĉĉĉ ĉ add ( opaque T cb Handler 1 ) Ċĉĉĉ ĉ add ( Insn Node ( POP )) Ċĉĉĉ ĉ add ( Jump Insn Node ( GOTO , Ġopaque T cb End 1 )) ĊĉĉĉĉĊĉĉĉ ĉ add ( Insn Node ( AC ON ST _ NULL )) Ċĉĉĉ ĉ val Ġstack Loop Start Ġ= Ġnew Label () Ċĉĉĉ ĉ add ( stack Loop Start ) Ċĉĉĉ ĉ add ( Insn Node ( POP )) ĊĉĉĉĉĊĉĉĉ ĉ add ( opaque T cb End 1 ) Ċĉĉĉ ĉ add ( Var Insn Node ( AL O AD , Ġ 9 )) Ċĉĉĉ ĉ add ( Var Insn Node ( I LOAD , Ġ 1 0 )) Ċĉĉĉ ĉ add ( ldc Int ( 1 )) Ċĉĉĉ ĉ add ( Insn Node ( I ADD )) Ċĉĉĉ ĉ add ( Insn Node ( DUP )) Ċĉĉĉ ĉ add ( Var Insn Node ( IST ORE , Ġ 1 0 )) Ċĉĉĉ ĉ add ( A AL O AD ) Ċĉĉĉ ĉ add ( DUP ) Ċĉĉĉ ĉ add ( Method Insn Node ( IN VOKE VIRTUAL , ĠStack Trace Element :: class . internal Name , Ġ" get ClassName ", Ġ" () Ljava / lang / String ;", Ġfalse )) Ċĉĉĉ ĉ /* add ( Insn Node ( DUP )) Ċĉĉĉ ĉ add ( println Asm (" Class ")) Ċĉĉĉ ĉ add ( println Asm ()) */ Ċĉĉĉ ĉ add ( L dc Insn Node (" java . lang .")) Ċĉĉĉ ĉ add ( Method Insn Node ( IN VOKE VIRTUAL , Ġ" java / lang / String ", Ġ" startsWith ", Ġ"( Ljava / lang / String ;) Z ", Ġfalse )) Ċĉĉĉ ĉ add ( Jump Insn Node ( IF GT , Ġstack Loop Start )) ĊĉĉĉĉĊĉĉĉ ĉ add ( Var Insn Node ( AST ORE , Ġ 4 )) Ċĉĉĉ ĉ add ( ldc Int ( 5 )) Ċĉĉĉ ĉ add ( Var Insn Node ( IST ORE , Ġ 8 )) Ċĉĉĉ ĉ add ( Jump Insn Node ( GOTO , Ġroot Switch )) Ċĉĉ ĉ }, Ċĉĉ ĉ Insn List (). apply Ġ{ Ċĉĉ ĉ }, Ċĉĉ ĉ Insn List (). apply Ġ{ Ċĉĉĉ ĉ add ( switch 1 1 ) Ċĉĉĉ ĉ add ( Var Insn Node ( AL O AD , Ġ 4 )) Ċĉĉĉ ĉ add ( Method Insn Node ( IN VOKE VIRTUAL , ĠStack Trace Element :: class . internal Name , Ġ" get MethodName ", Ġ" () Ljava / lang / String ;", Ġfalse )) Ċĉĉĉ ĉ add ( Method Insn Node ( IN VOKE VIRTUAL , Ġ" java / lang / Object ", Ġ" hashCode ", Ġ" () I ", Ġfalse )) Ċĉĉĉ ĉ add ( Var Insn Node ( IST ORE , Ġ 6 )) Ċĉĉĉ ĉ add ( ldc Int ( 1 0 )) Ċĉĉĉ ĉ add ( Var Insn Node ( IST ORE , Ġ 8 )) Ċĉĉĉ ĉ add ( Jump Insn Node ( GOTO , Ġroot Switch )) Ċĉĉ ĉ }, Ċĉĉ ĉ Insn List (). apply Ġ{ Ċĉĉĉ ĉ // ĠNow Ġloop Ġover Ġour Ġnew Ġarray Ċĉĉĉ ĉ add ( switch 1 0 ) Ċĉĉĉ ĉ add ( ldc Int ( 0 )) Ċĉĉĉ ĉ add ( Var Insn Node ( IST ORE , Ġ 7 )) Ċĉĉĉ ĉ add ( ldc Int ( 1 2 )) Ċĉĉĉ ĉ add ( Var Insn Node ( IST ORE , Ġ 8 )) Ċĉĉĉ ĉ add ( Jump Insn Node ( GOTO , Ġroot Switch )) Ċĉĉ ĉ }, Ċĉĉ ĉ Insn List (). apply Ġ{ Ċĉĉĉ ĉ add ( switch 1 2 ) Ċĉĉĉ ĉ add ( loop Start ) Ċĉĉĉ ĉ add ( Var Insn Node ( I LOAD , Ġ 7 )) Ċĉĉĉ ĉ add ( Var Insn Node ( AL O AD , Ġ 2 )) Ċĉĉĉ ĉ add ( ARRAY LENGTH ) Ċĉĉĉ ĉ add ( Jump Insn Node ( IF _ IC MP GE , Ġexit Loop )) Ġ// ĠIf Ġat Ġthe Ġend Ġof Ġthe Ġloop Ġgo Ġto Ġexit Ċĉĉĉ ĉ add ( ldc Int ( 1 3 )) Ċĉĉĉ ĉ add ( Var Insn Node ( IST ORE , Ġ 8 )) Ċĉĉĉ ĉ add ( Jump Insn Node ( GOTO , Ġroot Switch )) Ċĉĉ ĉ }, Ċĉĉ ĉ Insn List (). apply Ġ{ Ċĉĉĉ ĉ add ( switch 1 3 ) Ċĉĉĉ ĉ add ( Var Insn Node ( I LOAD , Ġ 7 )) Ċĉĉĉ ĉ add ( ldc Int ( 5 )) Ċĉĉĉ ĉ add ( I REM ) Ċĉĉĉ ĉ add ( Var Insn Node ( IST ORE , Ġ 8 )) Ċĉĉĉ ĉ add ( Jump Insn Node ( GOTO , Ġroot Switch )) Ċĉĉ ĉ }, Ċĉĉ ĉ Insn List (). apply Ġ{ Ċĉĉĉ ĉ add ( t ble 0 ) Ċĉĉĉ ĉ add ( Var Insn Node ( AL O AD , Ġ 1 )) Ġ// ĠEn crypted ĠChar ĠArray Ċĉĉĉ ĉ add ( Var Insn Node ( I LOAD , Ġ 7 )) Ġ// Ġindex Ċĉĉĉ ĉ add ( CAL O AD ) Ċĉĉĉ ĉ add ( ldc Int ( 2 )) Ċĉĉĉ ĉ add ( IX OR ) Ċĉĉĉ ĉ add ( Jump Insn Node ( GOTO , Ġset Char Arr Val )) Ċĉĉ ĉ }, Ċĉĉ ĉ Insn List (). apply Ġ{ Ċĉĉĉ ĉ add ( t ble 1 ) Ċĉĉĉ ĉ add ( Var Insn Node ( AL O AD , Ġ 1 )) Ġ// ĠEn crypted ĠChar ĠArray Ċĉĉĉ ĉ add ( Var Insn Node ( I LOAD , Ġ 7 )) Ġ// Ġindex Ċĉĉĉ ĉ add ( CAL O AD ) Ċĉĉĉ ĉ add ( Var Insn Node ( I LOAD , Ġ 5 )) Ġ// ĠClass ĠHash Ċĉĉĉ ĉ add ( IX OR ) Ċĉĉĉ ĉ add ( Jump Insn Node ( GOTO , Ġset Char Arr Val )) Ċĉĉ ĉ }, Ċĉĉ ĉ Insn List (). apply Ġ{ Ċĉĉĉ ĉ add ( t ble 2 ) Ċĉĉĉ ĉ add ( Var Insn Node ( AL O AD , Ġ 1 )) Ġ// ĠEn crypted ĠChar ĠArray Ċĉĉĉ ĉ add ( Var Insn Node ( I LOAD , Ġ 7 )) Ġ// Ġindex Ċĉĉĉ ĉ add ( CAL O AD ) Ċĉĉĉ ĉ add ( Var Insn Node ( I LOAD , Ġ 6 )) Ġ// Ġmethod ĠHash Ċĉĉĉ ĉ add ( IX OR ) Ċĉĉĉ ĉ add ( Jump Insn Node ( GOTO , Ġset Char Arr Val )) Ċĉĉ ĉ }, Ċĉĉ ĉ Insn List (). apply Ġ{ Ċĉĉĉ ĉ add ( t ble 3 ) Ċĉĉĉ ĉ add ( Var Insn Node ( AL O AD , Ġ 1 )) Ġ// ĠEn crypted ĠChar ĠArray Ċĉĉĉ ĉ add ( Var Insn Node ( I LOAD , Ġ 7 )) Ġ// Ġindex Ċĉĉĉ ĉ add ( CAL O AD ) Ċĉĉĉ ĉ add ( Var Insn Node ( I LOAD , Ġ 5 )) Ġ// ĠClass ĠHash Ċĉĉĉ ĉ add ( Var Insn Node ( I LOAD , Ġ 6 )) Ġ// Ġmethod ĠHash Ċĉĉĉ ĉ add ( I ADD ) Ċĉĉĉ ĉ add ( IX OR ) Ċĉĉĉ ĉ add ( Jump Insn Node ( GOTO , Ġset Char Arr Val )) Ċĉĉ ĉ }, Ċĉĉ ĉ Insn List (). apply Ġ{ Ċĉĉĉ ĉ add ( t ble 4 ) Ċĉĉĉ ĉ add ( Var Insn Node ( AL O AD , Ġ 1 )) Ġ// ĠEn crypted ĠChar ĠArray Ċĉĉĉ ĉ add ( Var Insn Node ( I LOAD , Ġ 7 )) Ġ// Ġindex Ċĉĉĉ ĉ add ( CAL O AD ) Ċĉĉĉ ĉ add ( Var Insn Node ( I LOAD , Ġ 7 )) Ġ// Ġindex Ċĉĉĉ ĉ add ( IX OR ) Ċĉĉĉ ĉ add ( Jump Insn Node ( GOTO , Ġset Char Arr Val )) Ċĉĉ ĉ }, Ċĉĉ ĉ Insn List (). apply Ġ{ Ċĉĉĉ ĉ add ( set Char Arr Val ) Ċĉĉĉ ĉ add ( I 2 C ) Ċĉĉĉ ĉ add ( Var Insn Node ( AL O AD , Ġ 1 )) Ġ// ĠDecrypt ed ĠChar ĠArray Ċĉĉĉ ĉ add ( SWAP ) Ċĉĉĉ ĉ add ( Var Insn Node ( I LOAD , Ġ 7 )) Ġ// ĠIndex Ċĉĉĉ ĉ add ( SWAP ) Ċĉĉĉ ĉ add ( CA STORE ) Ċĉĉĉ ĉ add ( ldc Int ( 1 6 )) Ċĉĉĉ ĉ add ( Var Insn Node ( IST ORE , Ġ 8 )) Ċĉĉĉ ĉ add ( Jump Insn Node ( GOTO , Ġroot Switch )) Ċĉĉ ĉ }, Ċĉĉ ĉ Insn List (). apply Ġ{ Ċĉĉĉ ĉ add ( switch 1 6 ) Ċĉĉĉ ĉ add ( ldc Int ( 1 8 )) Ċĉĉĉ ĉ add ( Var Insn Node ( IST ORE , Ġ 8 )) Ċĉĉĉ ĉ add ( Jump Insn Node ( GOTO , Ġroot Switch )) Ċĉĉ ĉ }, Ċĉĉ ĉ Insn List (). apply Ġ{ Ċĉĉĉ ĉ add ( switch 1 8 ) Ċĉĉĉ ĉ add ( ldc Int ( 1 4 )) Ċĉĉĉ ĉ add ( Var Insn Node ( IST ORE , Ġ 8 )) Ċĉĉĉ ĉ add ( Jump Insn Node ( GOTO , Ġroot Switch )) Ċĉĉ ĉ }, Ċĉĉ ĉ Insn List (). apply Ġ{ Ċĉĉĉ ĉ add ( switch 1 4 ) Ċĉĉĉ ĉ add ( ldc Int ( 1 7 )) Ċĉĉĉ ĉ add ( Var Insn Node ( IST ORE , Ġ 8 )) Ċĉĉĉ ĉ add ( Jump Insn Node ( GOTO , Ġroot Switch )) Ċĉĉ ĉ }, Ċĉĉ ĉ Insn List (). apply Ġ{ Ċĉĉĉ ĉ add ( switch 1 7 ) Ċĉĉĉ ĉ // ĠIncrement Ġand Ġgo Ġto Ġtop Ġof Ġloop Ċĉĉĉ ĉ add ( I inc Insn Node ( 7 , Ġ 1 )) Ċĉĉĉ ĉ add ( Jump Insn Node ( GOTO , Ġloop Start )) Ċĉĉ ĉ }, Ċĉĉ ĉ Insn List (). apply Ġ{ Ċĉĉĉ ĉ // ĠIf Ġwe Ġare Ġhere Ġthen Ġwe Ġhave Ġa Ġdecrypted Ġchar Ġarray Ġin Ġslot Ġ 4 Ċĉĉĉ ĉ add ( exit Loop ) Ċĉĉĉ ĉ add ( Type Insn Node ( NEW , Ġ" java / lang / String ")) Ċĉĉĉ ĉ add ( DUP ) Ċĉĉĉ ĉ add ( Var Insn Node ( AL O AD , Ġ 1 )) Ġ// ĠDecrypt ed ĠChar ĠArray Ċĉĉĉ ĉ add ( Method Insn Node ( INV OK ES PE CIAL , Ġ" java / lang / String ", Ġ"< init >", Ġ" ([ C ) V ")) Ċĉĉĉ ĉ add ( ARE T URN ) Ċĉĉ ĉ }, Ċĉĉ ĉ Insn List (). apply Ġ{ Ċĉĉĉ ĉ add ( throw Null ) Ċĉĉĉ ĉ add ( ldc Int ( 1 5 )) Ċĉĉĉ ĉ add ( Var Insn Node ( IST ORE , Ġ 8 )) Ċĉĉĉ ĉ add ( Jump Insn Node ( GOTO , Ġroot Switch )) Ċĉĉ ĉ }, Ċĉĉ ĉ Insn List (). apply Ġ{ Ċĉĉĉ ĉ add ( catch ) Ċĉĉĉ ĉ add ( DUP ) Ċĉĉĉ ĉ add ( Jump Insn Node ( IF NULL , Ġpre 1 5 )) Ċĉĉĉ ĉ add ( ATH ROW ) Ċĉĉ ĉ }, Ċĉĉ ĉ Insn List (). apply Ġ{ Ċĉĉĉ ĉ add ( catch 2 ) Ċĉĉĉ ĉ add ( DUP ) Ċĉĉĉ ĉ add ( Jump Insn Node ( IF NONNULL , Ġpre 1 5 )) Ċĉĉĉ ĉ add ( ATH ROW ) Ċĉĉ ĉ }, Ċĉĉ ĉ Insn List (). apply Ġ{ Ċĉĉĉ ĉ add ( pre 1 5 ) Ċĉĉĉ ĉ add ( POP ) Ċĉĉĉ ĉ add ( switch 1 5 ) Ċĉĉĉ ĉ add ( AC ON ST _ NULL ) Ċĉĉĉ ĉ add ( ATH ROW ) Ċĉĉĉ ĉ add ( end ) Ċĉĉ ĉ } Ċĉ ĉ ). sh uffled ( random ) ĊĉĉĊĉ ĉ for Ġ( block Ġin Ġblocks ) Ġ{ Ċĉĉ ĉ add ( block ) Ċĉ ĉ } ĊĉĉĊĉĉĊĉ ĉ method Node . try Catch Blocks . add ( Try Catch Block Node ( Ċĉĉ ĉ opaque T cb Start 1 , Ċĉĉ ĉ opaque T cb End 1 , Ċĉĉ ĉ opaque T cb Handler 1 , Ċĉĉ ĉ " java / lang / Illegal Monitor StateException " Ċĉ ĉ )) Ċ ĉ } Ċ } Ċ