question: private static Pair < String , String > offsetASR ( final long offset , final ITranslationEnvironment environment , final List < ReilInstruction > instructions , final String registerNodeValue1 , final String registerNodeValue2 , final String immediateNodeValue ) { final String address = environment . getNextVariableString ( ) ; final String index = environment . getNextVariableString ( ) ; final String tmpVar = environment . getNextVariableString ( ) ; long baseOffset = offset ; if ( immediateNodeValue . equals ( "0" ) ) { final String isZeroCondition = environment . getNextVariableString ( ) ; final String tmpVar1 = environment . getNextVariableString ( ) ; instructions . add ( ReilHelpers . createBsh ( baseOffset ++ , dw , registerNodeValue2 , wd , String . valueOf ( - 31 ) , dw , tmpVar1 ) ) ; instructions . add ( ReilHelpers . createBisz ( baseOffset ++ , dw , tmpVar1 , bt , isZeroCondition ) ) ; instructions . add ( ReilHelpers . createSub ( baseOffset ++ , dw , String . valueOf ( 0x0L ) , bt , isZeroCondition , dw , index ) ) ; } else { final String tmpVar1 = environment . getNextVariableString ( ) ; final String tmpVar2 = environment . getNextVariableString ( ) ; final String tmpVar3 = environment . getNextVariableString ( ) ; final String tmpVar4 = environment . getNextVariableString ( ) ; instructions . add ( ReilHelpers . createAdd ( baseOffset ++ , dw , registerNodeValue2 , dw , String . valueOf ( 0x80000000L ) , dw , tmpVar1 ) ) ; instructions . add ( ReilHelpers . createBsh ( baseOffset ++ , dw , tmpVar1 , dw , "-" + immediateNodeValue , dw , tmpVar2 ) ) ; instructions . add ( ReilHelpers . createBsh ( baseOffset ++ , dw , String . valueOf ( 0x80000000L ) , dw , "-" + immediateNodeValue , dw , tmpVar3 ) ) ; instructions . add ( ReilHelpers . createSub ( baseOffset ++ , dw , tmpVar2 , dw , tmpVar3 , qw , tmpVar4 ) ) ; instructions . add ( ReilHelpers . createAnd ( baseOffset ++ , qw , tmpVar4 , dw , dWordBitMask , dw , index ) ) ; } instructions . add ( ReilHelpers . createAdd ( baseOffset ++ , dw , registerNodeValue1 , dw , index , dw , tmpVar ) ) ; instructions . add ( ReilHelpers . createAnd ( baseOffset ++ , dw , tmpVar , dw , dWordBitMask , dw , address ) ) ; return new Pair < String , String > ( address , registerNodeValue1 ) ; }
target:  Operation: [<Rn>, +/-<Rm>, ASR #<shift_imm>] 0b10 / ASR / if shift_imm == 0 then / ASR #32 / if Rm[31] == 1 then index = 0xFFFFFFFF else index = 0 else index = Rm Arithmetic_Shift_Right shift_imm endcase if U == 1 then address = Rn + index else / U == 0 / address = Rn - index