protected static Pair<String,String> rorRegister(final long offset,final ITranslationEnvironment environment,final List<ReilInstruction> instructions,final String registerNodeValue1,final String registerNodeValue2){
  final String shifterOperand=environment.getNextVariableString();
  final String shifterCarryOut=environment.getNextVariableString();
  final String tmpRsFour=environment.getNextVariableString();
  final String tmpRsFourNegative=environment.getNextVariableString();
  final String tmpRsSeven=environment.getNextVariableString();
  final String isZeroConditionFour=environment.getNextVariableString();
  final String isNotZeroConditionFour=environment.getNextVariableString();
  final String isZeroConditionSeven=environment.getNextVariableString();
  final String tmpVar1=environment.getNextVariableString();
  final String tmpVar2=environment.getNextVariableString();
  final String tmpVar3=environment.getNextVariableString();
  final String tmpVar4=environment.getNextVariableString();
  final String tmpVar5=environment.getNextVariableString();
  final String tmpVar6=environment.getNextVariableString();
  final String tmpVar7=environment.getNextVariableString();
  final String tmpVar8=environment.getNextVariableString();
  final String shifterCarryOutTmp1=environment.getNextVariableString();
  final String shifterCarryOutTmp2=environment.getNextVariableString();
  final String shifterCarryOutTmp3=environment.getNextVariableString();
  final String shifterCarryOutTmp4=environment.getNextVariableString();
  long baseOffset=offset;
  instructions.add(ReilHelpers.createAnd(baseOffset++,dWordSize,registerNodeValue2,dWordSize,String.valueOf(0xFFL),dWordSize,tmpRsSeven));
  instructions.add(ReilHelpers.createBisz(baseOffset++,dWordSize,tmpRsSeven,byteSize,isZeroConditionSeven));
  instructions.add(ReilHelpers.createAnd(baseOffset++,dWordSize,tmpRsSeven,dWordSize,String.valueOf(0x1FL),dWordSize,tmpRsFour));
  instructions.add(ReilHelpers.createBisz(baseOffset++,dWordSize,tmpRsFour,byteSize,isZeroConditionFour));
  instructions.add(ReilHelpers.createBisz(baseOffset++,byteSize,isZeroConditionFour,byteSize,isNotZeroConditionFour));
  instructions.add(ReilHelpers.createSub(baseOffset++,dWordSize,zeroSet,dWordSize,tmpRsFour,dWordSize,tmpRsFourNegative));
  instructions.add(ReilHelpers.createBsh(baseOffset++,dWordSize,registerNodeValue1,dWordSize,tmpRsFourNegative,dWordSize,tmpVar1));
  instructions.add(ReilHelpers.createSub(baseOffset++,dWordSize,String.valueOf(32L),dWordSize,tmpRsFour,dWordSize,tmpVar2));
  instructions.add(ReilHelpers.createBsh(baseOffset++,dWordSize,registerNodeValue1,dWordSize,tmpVar2,dWordSize,tmpVar3));
  instructions.add(ReilHelpers.createOr(baseOffset++,dWordSize,tmpVar1,dWordSize,tmpVar3,dWordSize,tmpVar4));
  instructions.add(ReilHelpers.createAnd(baseOffset++,dWordSize,tmpVar4,dWordSize,bitMaskAllBitsSet,dWordSize,shifterOperand));
  instructions.add(ReilHelpers.createAnd(baseOffset++,byteSize,"C",byteSize,isZeroConditionSeven,byteSize,shifterCarryOutTmp1));
  instructions.add(ReilHelpers.createBsh(baseOffset++,dWordSize,registerNodeValue1,dWordSize,minusThirtyOneSet,byteSize,tmpVar5));
  instructions.add(ReilHelpers.createAnd(baseOffset++,byteSize,tmpVar5,byteSize,isZeroConditionFour,byteSize,shifterCarryOutTmp2));
  instructions.add(ReilHelpers.createSub(baseOffset++,dWordSize,tmpRsFour,byteSize,oneSet,dWordSize,tmpVar6));
  instructions.add(ReilHelpers.createSub(baseOffset++,dWordSize,zeroSet,dWordSize,tmpVar6,dWordSize,tmpVar7));
  instructions.add(ReilHelpers.createBsh(baseOffset++,dWordSize,registerNodeValue1,dWordSize,tmpVar7,dWordSize,tmpVar8));
  instructions.add(ReilHelpers.createAnd(baseOffset++,dWordSize,tmpVar8,byteSize,isNotZeroConditionFour,byteSize,shifterCarryOutTmp3));
  instructions.add(ReilHelpers.createOr(baseOffset++,byteSize,shifterCarryOutTmp1,byteSize,shifterCarryOutTmp2,byteSize,shifterCarryOutTmp4));
  instructions.add(ReilHelpers.createOr(baseOffset++,byteSize,shifterCarryOutTmp3,byteSize,shifterCarryOutTmp4,byteSize,shifterCarryOut));
  return new Pair<String,String>(shifterOperand,shifterCarryOut);
}

protected static Pair < String , String > rorRegister ( final long offset , final ITranslationEnvironment environment , final List < ReilInstruction > instructions , final String registerNodeValue1 , final String registerNodeValue2 ) { final String shifterOperand = environment . getNextVariableString ( ) ; final String shifterCarryOut = environment . getNextVariableString ( ) ; final String tmpRsFour = environment . getNextVariableString ( ) ; final String tmpRsFourNegative = environment . getNextVariableString ( ) ; final String tmpRsSeven = environment . getNextVariableString ( ) ; final String isZeroConditionFour = environment . getNextVariableString ( ) ; final String isNotZeroConditionFour = environment . getNextVariableString ( ) ; final String isZeroConditionSeven = environment . getNextVariableString ( ) ; final String tmpVar1 = environment . getNextVariableString ( ) ; final String tmpVar2 = environment . getNextVariableString ( ) ; final String tmpVar3 = environment . getNextVariableString ( ) ; final String tmpVar4 = environment . getNextVariableString ( ) ; final String tmpVar5 = environment . getNextVariableString ( ) ; final String tmpVar6 = environment . getNextVariableString ( ) ; final String tmpVar7 = environment . getNextVariableString ( ) ; final String tmpVar8 = environment . getNextVariableString ( ) ; final String shifterCarryOutTmp1 = environment . getNextVariableString ( ) ; final String shifterCarryOutTmp2 = environment . getNextVariableString ( ) ; final String shifterCarryOutTmp3 = environment . getNextVariableString ( ) ; final String shifterCarryOutTmp4 = environment . getNextVariableString ( ) ; long baseOffset = offset ; instructions . add ( ReilHelpers . createAnd ( baseOffset ++ , dWordSize , registerNodeValue2 , dWordSize , String . valueOf ( 0xFFL ) , dWordSize , tmpRsSeven ) ) ; instructions . add ( ReilHelpers . createBisz ( baseOffset ++ , dWordSize , tmpRsSeven , byteSize , isZeroConditionSeven ) ) ; instructions . add ( ReilHelpers . createAnd ( baseOffset ++ , dWordSize , tmpRsSeven , dWordSize , String . valueOf ( 0x1FL ) , dWordSize , tmpRsFour ) ) ; instructions . add ( ReilHelpers . createBisz ( baseOffset ++ , dWordSize , tmpRsFour , byteSize , isZeroConditionFour ) ) ; instructions . add ( ReilHelpers . createBisz ( baseOffset ++ , byteSize , isZeroConditionFour , byteSize , isNotZeroConditionFour ) ) ; instructions . add ( ReilHelpers . createSub ( baseOffset ++ , dWordSize , zeroSet , dWordSize , tmpRsFour , dWordSize , tmpRsFourNegative ) ) ; instructions . add ( ReilHelpers . createBsh ( baseOffset ++ , dWordSize , registerNodeValue1 , dWordSize , tmpRsFourNegative , dWordSize , tmpVar1 ) ) ; instructions . add ( ReilHelpers . createSub ( baseOffset ++ , dWordSize , String . valueOf ( 32L ) , dWordSize , tmpRsFour , dWordSize , tmpVar2 ) ) ; instructions . add ( ReilHelpers . createBsh ( baseOffset ++ , dWordSize , registerNodeValue1 , dWordSize , tmpVar2 , dWordSize , tmpVar3 ) ) ; instructions . add ( ReilHelpers . createOr ( baseOffset ++ , dWordSize , tmpVar1 , dWordSize , tmpVar3 , dWordSize , tmpVar4 ) ) ; instructions . add ( ReilHelpers . createAnd ( baseOffset ++ , dWordSize , tmpVar4 , dWordSize , bitMaskAllBitsSet , dWordSize , shifterOperand ) ) ; instructions . add ( ReilHelpers . createAnd ( baseOffset ++ , byteSize , "C" , byteSize , isZeroConditionSeven , byteSize , shifterCarryOutTmp1 ) ) ; instructions . add ( ReilHelpers . createBsh ( baseOffset ++ , dWordSize , registerNodeValue1 , dWordSize , minusThirtyOneSet , byteSize , tmpVar5 ) ) ; instructions . add ( ReilHelpers . createAnd ( baseOffset ++ , byteSize , tmpVar5 , byteSize , isZeroConditionFour , byteSize , shifterCarryOutTmp2 ) ) ; instructions . add ( ReilHelpers . createSub ( baseOffset ++ , dWordSize , tmpRsFour , byteSize , oneSet , dWordSize , tmpVar6 ) ) ; instructions . add ( ReilHelpers . createSub ( baseOffset ++ , dWordSize , zeroSet , dWordSize , tmpVar6 , dWordSize , tmpVar7 ) ) ; instructions . add ( ReilHelpers . createBsh ( baseOffset ++ , dWordSize , registerNodeValue1 , dWordSize , tmpVar7 , dWordSize , tmpVar8 ) ) ; instructions . add ( ReilHelpers . createAnd ( baseOffset ++ , dWordSize , tmpVar8 , byteSize , isNotZeroConditionFour , byteSize , shifterCarryOutTmp3 ) ) ; instructions . add ( ReilHelpers . createOr ( baseOffset ++ , byteSize , shifterCarryOutTmp1 , byteSize , shifterCarryOutTmp2 , byteSize , shifterCarryOutTmp4 ) ) ; instructions . add ( ReilHelpers . createOr ( baseOffset ++ , byteSize , shifterCarryOutTmp3 , byteSize , shifterCarryOutTmp4 , byteSize , shifterCarryOut ) ) ; return new Pair < String , String > ( shifterOperand , shifterCarryOut ) ; }
< rm > , ror < rs > operation : if rs [ 7 : 0 ] = = 0 then shifter_operand = rm shifter_carry_out = c flag else if rs [ 4 : 0 ] = = 0 then shifter_operand = rm shifter_carry_out = rm [ 31 ] else / rs [ 4 : 0 ] > 0 / shifter_operand = rm rotate_right rs [ 4 : 0 ] shifter_carry_out = rm [ rs [ 4 : 0 ] - 1 ]
