- p = translate_if_needed(data, p, &last_x86_pos, last_target_usages, undo);
+#ifdef __x86_64__
+ if (x86_have_cpu_feature(X86_CPU_FEATURE_SSE4_2)) {
+ u8 saved_byte = *tail_ptr;
+ *tail_ptr = 0xE8;
+ for (;;) {
+ u8 *new_p = find_next_opcode_sse4_2(p);
+ if (new_p >= tail_ptr - 8)
+ break;
+ p = new_p;
+ p = translate_if_needed(data, p, &last_x86_pos,
+ last_target_usages, undo);
+ }
+ *tail_ptr = saved_byte;
+ }
+#endif
+ {
+ u8 saved_byte = *(tail_ptr + 8);
+ *(tail_ptr + 8) = 0xE8;
+ for (;;) {
+ p = find_next_opcode_default(p);
+ if (p >= tail_ptr)
+ break;
+ p = translate_if_needed(data, p, &last_x86_pos,
+ last_target_usages, undo);
+ }
+ *(tail_ptr + 8) = saved_byte;