{"name": "disas_coproc_insn", "code": "__int64 __fastcall disas_coproc_insn ( __int64 @@a1@@ , int * @@a2@@ , unsigned int @@a3@@ ) { __int64 @@result@@ ; int @@v5@@ ; @@v5@@ = ( @@a3@@ >> Number ) & Number ; if ( arm_feature ( @@a1@@ , Number ) && ( ( * ( _DWORD * ) ( @@a1@@ + Number ) ^ Number ) & ( Number << @@v5@@ ) ) != Number ) return Number L ; if ( @@v5@@ == Number ) return disas_cp15_insn ( @@a1@@ , @@a2@@ , @@a3@@ ) ; if ( @@v5@@ == Number ) { if ( arm_feature ( @@a1@@ , Number ) ) return disas_cp_insn ( @@a1@@ , @@a2@@ , @@a3@@ ) ; if ( ( @@a3@@ & Number ) != Number ) @@result@@ = disas_cp14_read ( @@a1@@ , ( __int64 ) @@a2@@ , @@a3@@ ) ; else @@result@@ = disas_cp14_write ( @@a1@@ , @@a2@@ , @@a3@@ ) ; } else { if ( @@v5@@ > Number ) { if ( ( unsigned int ) ( @@v5@@ - Number ) <= Number ) return disas_vfp_insn ( @@a1@@ , @@a2@@ , @@a3@@ ) ; return disas_cp_insn ( @@a1@@ , @@a2@@ , @@a3@@ ) ; } if ( arm_feature ( @@a1@@ , Number ) ) { @@result@@ = disas_iwmmxt_insn ( @@a1@@ , @@a2@@ , @@a3@@ ) ; } else if ( arm_feature ( @@a1@@ , Number ) ) { @@result@@ = disas_dsp_insn ( @@a1@@ , @@a2@@ , @@a3@@ ) ; } else { @@result@@ = Number L ; } } return @@result@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "int"}, "location": "r64"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "v5", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}]}