- if (E->OPC == OP65_JSR &&
- (Shift = GetShift (E->Arg)) != SHIFT_NONE &&
- SHIFT_TYPE (Shift) == SHIFT_TYPE_ASR &&
- (Count = SHIFT_COUNT (Shift)) > 0 &&
- Count * 100 <= S->CodeSizeFactor &&
- !RegXUsed (S, I+1)) {
+ if (L[0]->OPC == OP65_BPL &&
+ L[0]->JumpTo != 0 &&
+ CS_GetEntries (S, L+1, I+1, 2) &&
+ L[1]->OPC == OP65_DEX &&
+ L[0]->JumpTo->Owner == L[2] &&
+ !CS_RangeHasLabel (S, I, 2) &&
+ L[2]->OPC == OP65_JSR &&
+ SHIFT_TYPE (Shift = GetShift (L[2]->Arg)) == SHIFT_TYPE_ASR &&
+ (Count = SHIFT_COUNT (Shift)) > 0 &&
+ Count * 100 <= S->CodeSizeFactor &&
+ !RegXUsed (S, I+3)) {