+ emith_ret(); \
+}
+
+// assumes EBX is free temporary
+#define emith_sh2_wcall(a, tab, ret_ptr) { \
+ int arg2_; \
+ host_arg2reg(arg2_, 2); \
+ emith_lsr(xBX, a, SH2_WRITE_SHIFT); \
+ EMIT_OP_MODRM(0x8b, 0, xBX, 4); \
+ EMIT_SIB(2, xBX, tab); /* mov ebx, [tab + ebx * 4] */ \
+ emith_ctx_read(arg2_, offsetof(SH2, is_slave)); \
+ emith_push_imm((long)(ret_ptr)); \
+ emith_jump_reg(xBX); \