7 const bool op0 = (insn >> 30) & 0
x1;
8 const bool op1 = (insn >> 28) & 0
x1;
9 const ut8 op2 = (insn >> 21) & 0xf;
12 if (!op0 && op1 && op2 == 6) {
13 const bool sf = (insn >> 31) & 0
x1;
14 const bool S = (insn >> 29) & 0
x1;
15 const ut8 opcode = (insn >> 10) & 0x1f;
22 }
else if (opcode == 0) {
26 }
else if (opcode == 5) {
31 }
else if (
S && opcode == 0) {
42 const ut8 op0 = (insn >> 28) & 0xf;
43 const bool op1 = (insn >> 26) & 0
x1;
44 ut8 op2 = (insn >> 23) & 0
x3;
45 const bool op3 = (insn >> 21) & 0
x1;
48 if (op0 == 13 && !op1 && (op2 == 2 || op2 == 3) && op3) {
50 op2 = (insn >> 10) & 0
x3;
70 }
else if (op2 == 0) {
91 }
else if ((op0 & 0
x3) == 2) {
93 const bool V = (insn >> 26) & 0
x1;
94 const bool L = (insn >> 22) & 0
x1;
95 if (
opc == 1 && !
V && !
L) {
105 const ut8 op0 = (insn >> 23) & 0
x7;
109 const bool sf = (insn >> 31) & 0
x1;
110 const bool op_ = (insn >> 30) & 0
x1;
111 const bool S = (insn >> 29) & 0
x1;
112 const bool o2 = (insn >> 22) & 0
x1;
113 if (sf && !
S && !
o2) {
128 const ut8 op0 = (insn >> 29) & 0
x7;
129 const ut16 op1 = (insn >> 12) & 0x3fff;
130 ut8 op2 = insn & 0x1f;
133 if (op0 == 6 && op1 == 4146 && op2 == 31) {
134 const ut8 CRm = (insn >> 8) & 0xf;
135 op2 = (insn >> 5) & 0
x7;
136 if (CRm == 4 && (op2 & 1) == 0) {
153 if (
a->bits == 64 &&
len >= 4) {
155 int insn_class = (insn >> 25) & 0xf;
157 if (!memcmp(
buf + 1,
"\x43\xc1\xda", 3)) {
162 if (!memcmp(
buf,
"\xff\x0b\x5f\xd6", 4)) {
167 if (!memcmp(
buf,
"\xff\x0f\x5f\xd6", 4)) {
172 switch (insn_class) {
177 ret = hack_handle_dp_reg(insn,
op);
183 ret = hack_handle_dp_imm(insn,
op);
188 ret = hack_handle_br_exc_sys(insn,
op);
196 ret = hack_handle_ldst(insn,
op);
@ RZ_ANALYSIS_OP_FAMILY_SECURITY
@ RZ_ANALYSIS_OP_TYPE_CMP
@ RZ_ANALYSIS_OP_TYPE_SUB
@ RZ_ANALYSIS_OP_TYPE_LOAD
@ RZ_ANALYSIS_OP_TYPE_ADD
@ RZ_ANALYSIS_OP_TYPE_STORE
@ RZ_ANALYSIS_OP_TYPE_MOV
@ RZ_ANALYSIS_OP_TYPE_RET
static ut32 rz_read_ble32(const void *src, bool big_endian)
#define V(handle, symbol)