#NEWLINE# def _translate_cbnz( self , tb , instruction ) : #NEWLINE# #INDENT# oprnd0 = tb . read ( instruction . operands [ 0 ] ) #NEWLINE# arm_operand = instruction . operands [ 1 ] #NEWLINE# if isinstance ( arm_operand , ArmImmediateOperand ) : #NEWLINE# #INDENT# target = ReilImmediateOperand ( ( arm_operand . immediate << 8 ) , ( self . _pc . size + 8 ) ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# if isinstance ( arm_operand , ArmRegisterOperand ) : #NEWLINE# #INDENT# target = ReilRegisterOperand ( arm_operand . name , arm_operand . size ) #NEWLINE# target = tb . _and_regs ( target , ReilImmediateOperand ( 4294967294 , target . size ) ) #NEWLINE# tmp0 = tb . temporal ( ( target . size + 8 ) ) #NEWLINE# tmp1 = tb . temporal ( ( target . size + 8 ) ) #NEWLINE# tb . add ( self . _builder . gen_str ( target , tmp0 ) ) #NEWLINE# tb . add ( self . _builder . gen_bsh ( tmp0 , ReilImmediateOperand ( 8 , ( target . size + 8 ) ) , tmp1 ) ) #NEWLINE# target = tmp1 #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# raise Exception ( ) #NEWLINE# #UNINDENT# #UNINDENT# neg_oprnd = tb . _negate_reg ( oprnd0 ) #NEWLINE# tb . _jump_if_zero ( neg_oprnd , target )