{"name": "disas_cp15_insn", "code": "_BOOL8 __fastcall disas_cp15_insn ( __int64 @@a1@@ , int * @@a2@@ , unsigned int @@a3@@ ) { _BOOL8 @@result@@ ; int @@v5@@ ; unsigned int @@v6@@ ; unsigned int v7 ; unsigned int v8 ; if ( arm_feature ( @@a1@@ , Number ) ) return Number L ; if ( ( @@a3@@ & Number ) == Number ) return ( @@a3@@ & Number ) != Number ; if ( ( @@a3@@ & Number ) == Number ) return Number L ; if ( ! cp15_user_ok ( @@a3@@ ) ) return Number L ; if ( ( @@a3@@ & Number ) == Number || ( @@a3@@ & Number ) == Number ) { gen_set_pc_im ( * @@a2@@ ) ; @@a2@@ [ Number ] = Number ; @@result@@ = Number L ; } else { @@v5@@ = ( unsigned __int16 ) @@a3@@ >> Number ; if ( ( unsigned int ) cp15_tls_load_store ( @@a1@@ , @@a2@@ , @@a3@@ , @@v5@@ ) ) { @@result@@ = Number L ; } else { @@v6@@ = tcg_const_i32 ( @@a3@@ ) ; if ( ( @@a3@@ & Number ) != Number ) { v7 = new_tmp ( ) ; gen_helper_get_cp15 ( v7 , cpu_env , @@v6@@ ) ; if ( @@v5@@ == Number ) dead_tmp ( v7 ) ; else store_reg ( ( __int64 ) @@a2@@ , @@v5@@ , v7 ) ; } else { v8 = load_reg ( @@a2@@ , @@v5@@ ) ; gen_helper_set_cp15 ( cpu_env , @@v6@@ , v8 ) ; dead_tmp ( v8 ) ; if ( ! arm_feature ( @@a1@@ , Number ) || ( @@a3@@ & Number ) != Number ) gen_lookup_tb ( @@a2@@ ) ; } tcg_temp_free_i32 ( @@v6@@ ) ; @@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": "_BOOL8", "s": 8}, "location": "r8"}, {"n": "v6", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s16"}, {"n": "v5", "t": {"T": 1, "n": "int", "s": 4}, "location": "s20"}]}