{"name": "tcg_gen_ext_i32_i64", "code": "unsigned __int64 __fastcall tcg_gen_ext_i32_i64 ( int @@a1@@ , int @@a2@@ ) { unsigned __int64 @@v3@@ ; @@v3@@ = __readfsqword ( Number ) ; tcg_gen_ext32s_i64 ( @@a1@@ , @@a2@@ ) ; return __readfsqword ( Number ) ^ @@v3@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "int", "s": 4}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "int", "s": 4}, "location": "r64"}, {"n": "v3", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]}
{"name": "tcg_gen_ext32s_i64", "code": "unsigned __int64 __fastcall tcg_gen_ext32s_i64 ( int @@a1@@ , int @@a2@@ ) { unsigned __int64 @@v3@@ ; @@v3@@ = __readfsqword ( Number ) ; tcg_gen_op2_i64 ( Number , @@a1@@ , @@a2@@ ) ; return __readfsqword ( Number ) ^ @@v3@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "int", "s": 4}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "int", "s": 4}, "location": "r64"}, {"n": "v3", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "gen_muls_i64_i32", "code": "__int64 __fastcall gen_muls_i64_i32 ( unsigned int @@a1@@ , unsigned int @@a2@@ ) { unsigned int @@v3@@ ; unsigned int @@v4@@ ; @@v3@@ = tcg_temp_new_i64 ( ) ; @@v4@@ = tcg_temp_new_i64 ( ) ; tcg_gen_ext_i32_i64 ( @@v3@@ , @@a1@@ ) ; tcg_temp_free_i32 ( @@a1@@ ) ; tcg_gen_ext_i32_i64 ( @@v4@@ , @@a2@@ ) ; tcg_temp_free_i32 ( @@a2@@ ) ; tcg_gen_mul_i64 ( @@v3@@ , @@v3@@ , @@v4@@ ) ; tcg_temp_free_i64 ( @@v4@@ ) ; return @@v3@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r64"}, {"n": "v4", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s12"}, {"n": "v3", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s16"}]} {"name": "gen_neon_widen", "code": "unsigned __int64 __fastcall gen_neon_widen ( int @@a1@@ , unsigned int @@a2@@ , int @@a3@@ , int @@a4@@ ) { unsigned __int64 @@v5@@ ; @@v5@@ = __readfsqword ( Number ) ; if ( ! @@a4@@ ) { if ( @@a3@@ == Number ) { tcg_gen_ext_i32_i64 ( @@a1@@ , @@a2@@ ) ; goto LABEL_20 ; } if ( @@a3@@ <= Number ) { if ( ! @@a3@@ ) { gen_helper_neon_widen_s8 ( @@a1@@ , @@a2@@ ) ; goto LABEL_20 ; } if ( @@a3@@ == Number ) { gen_helper_neon_widen_s16 ( @@a1@@ , @@a2@@ ) ; goto LABEL_20 ; } } abort ( ) ; } if ( @@a3@@ == Number ) { tcg_gen_extu_i32_i64 ( @@a1@@ , @@a2@@ ) ; } else { if ( @@a3@@ > Number ) goto LABEL_10 ; if ( @@a3@@ ) { if ( @@a3@@ != Number ) LABEL_10 : abort ( ) ; gen_helper_neon_widen_u16 ( @@a1@@ , @@a2@@ ) ; } else { gen_helper_neon_widen_u8 ( @@a1@@ , @@a2@@ ) ; } } LABEL_20 : tcg_temp_free_i32 ( @@a2@@ ) ; return __readfsqword ( Number ) ^ @@v5@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "int", "s": 4}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "int", "s": 4}, "location": "r24"}, {"n": "a1", "t": {"T": 1, "n": "int", "s": 4}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r64"}, {"n": "v5", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "disas_arm_insn", "code": "unsigned __int64 __fastcall disas_arm_insn ( __int64 @@a1@@ , int * @@a2@@ ) { int v2 ; unsigned int v4 ; unsigned int v5 ; unsigned int v6 ; unsigned int v7 ; int v8 ; int @@v10@@ ; unsigned int v11 ; unsigned int v12 ; unsigned int v13 ; unsigned int v14 ; unsigned int v15 ; unsigned int v16 ; unsigned int @@v17@@ ; unsigned int v18 ; unsigned int v19 ; unsigned int v20 ; unsigned int v21 ; unsigned int v22 ; unsigned int v23 ; unsigned int v24 ; unsigned int v25 ; unsigned int v26 ; unsigned int v27 ; unsigned int v28 ; unsigned int v29 ; unsigned int v30 ; unsigned int v31 ; unsigned int v32 ; unsigned int v33 ; unsigned int v34 ; unsigned int v35 ; unsigned int v36 ; unsigned int v37 ; unsigned int v38 ; unsigned int v39 ; unsigned int v40 ; unsigned int v41 ; unsigned int v42 ; unsigned int v43 ; unsigned int v44 ; unsigned int v45 ; unsigned int v46 ; unsigned int v47 ; unsigned int v48 ; unsigned int v49 ; unsigned int v50 ; unsigned int v51 ; unsigned int v52 ; unsigned int v53 ; unsigned int v54 ; unsigned int v55 ; unsigned int v56 ; unsigned int v57 ; unsigned int v58 ; unsigned int v59 ; unsigned int v60 ; unsigned int v61 ; unsigned int v62 ; unsigned int v63 ; unsigned int v64 ; unsigned int v65 ; unsigned int v66 ; unsigned int v67 ; unsigned int v68 ; unsigned int v69 ; int v70 ; int v71 ; int v72 ; int v73 ; int v74 ; int v75 ; int v76 ; int v77 ; int v78 ; int v79 ; int v80 ; unsigned int v81 ; unsigned int i ; unsigned int j ; int v84 ; int v85 ; int v86 ; int v87 ; int v88 ; int v89 ; int @@v90@@ ; int @@v91@@ ; int @@v92@@ ; unsigned int @@v93@@ ; unsigned int @@v94@@ ; unsigned int @@v95@@ ; int v96 ; unsigned int v97 ; int v98 ; unsigned int v99 ; int v100 ; int v101 ; int v102 ; char v103 ; int v104 ; int v105 ; int v106 ; int v107 ; int v108 ; int v109 ; int v110 ; int v111 ; int v112 ; int v113 ; int v114 ; int v115 ; int v116 ; int v117 ; int v118 ; int v119 ; unsigned int v120 ; unsigned int v121 ; unsigned int v122 ; unsigned int v123 ; unsigned int @@v124@@ ; int @@v125@@ ; int @@v126@@ ; int @@v127@@ ; unsigned __int64 @@v128@@ ; @@v128@@ = __readfsqword ( Number ) ; @@v94@@ = ldl_be_p ( ( unsigned int * ) ( ( unsigned int ) * @@a2@@ + guest_base ) ) ; * @@a2@@ += Number ; if ( arm_feature ( @@a1@@ , Number ) ) goto LABEL_426 ; @@v95@@ = @@v94@@ >> Number ; if ( @@v94@@ >> Number != Number ) { if ( @@v95@@ != Number ) { @@a2@@ [ Number ] = gen_new_label ( ) ; gen_test_cc ( @@v95@@ ^ Number , @@a2@@ [ Number ] ) ; @@a2@@ [ Number ] = Number ; } if ( ( @@v94@@ & Number ) == Number ) { if ( ( @@v94@@ & Number ) != Number ) { if ( ( unsigned __int16 ) @@v94@@ >> Number == Number ) { if ( ( @@v94@@ & Number ) != Number ) { v86 = ( unsigned __int8 ) @@v94@@ ; v74 = Number * ( ( @@v94@@ >> Number ) & Number ) ; if ( v74 ) v86 = __ROR4__ ( ( unsigned __int8 ) @@v94@@ , v74 ) ; v4 = msr_mask ( @@a1@@ , ( __int64 ) @@a2@@ , BYTE2 ( @@v94@@ ) & Number , ( @@v94@@ & Number ) != Number ) ; if ( ( unsigned int ) gen_set_psr_im ( @@a2@@ , v4 , ( @@v94@@ & Number ) != Number , v86 ) ) goto LABEL_426 ; } else { gen_nop_hint ( @@a2@@ , ( unsigned __int8 ) @@v94@@ ) ; } return __readfsqword ( Number ) ^ @@v128@@ ; } goto LABEL_426 ; } if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_426 ; v70 = ( unsigned __int16 ) @@v94@@ >> Number ; v85 = ( @@v94@@ >> Number ) & Number | @@v94@@ & Number ; if ( ( @@v94@@ & Number ) != Number ) { v44 = load_reg ( @@a2@@ , v70 ) ; tcg_gen_ext16u_i32 ( v44 , v44 ) ; tcg_gen_ori_i32 ( v44 , v44 , v85 << Number ) ; } else { v44 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v44 , v85 ) ; } LABEL_360 : store_reg ( ( __int64 ) @@a2@@ , v70 , v44 ) ; return __readfsqword ( Number ) ^ @@v128@@ ; } if ( ( @@v94@@ & Number ) == Number && ( @@v94@@ & Number ) != Number ) { v96 = ( @@v94@@ >> Number ) & Number ; v103 = ( unsigned __int8 ) @@v94@@ >> Number ; v106 = @@v94@@ & Number ; switch ( ( unsigned __int8 ) @@v94@@ >> Number ) { case Number : if ( ( @@v94@@ & Number ) != Number ) { v45 = load_reg ( @@a2@@ , v106 ) ; v5 = msr_mask ( @@a1@@ , ( __int64 ) @@a2@@ , BYTE2 ( @@v94@@ ) & Number , ( ( @@v94@@ >> Number ) & Number ) != Number ) ; if ( ! ( unsigned int ) gen_set_psr ( @@a2@@ , v5 , ( ( @@v94@@ >> Number ) & Number ) != Number , v45 ) ) return __readfsqword ( Number ) ^ @@v128@@ ; goto LABEL_426 ; } if ( ( ( @@v94@@ >> Number ) & Number ) != Number ) goto LABEL_426 ; v46 = tcg_temp_new_i32 ( ) ; gen_helper_cpsr_read ( v46 ) ; store_reg ( ( __int64 ) @@a2@@ , ( unsigned __int16 ) @@v94@@ >> Number , v46 ) ; return __readfsqword ( Number ) ^ @@v128@@ ; case Number : if ( v96 == Number ) { if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_426 ; v47 = load_reg ( @@a2@@ , v106 ) ; gen_bx ( ( __int64 ) @@a2@@ , v47 ) ; return __readfsqword ( Number ) ^ @@v128@@ ; } if ( v96 == Number && arm_feature ( @@a1@@ , Number ) ) { v48 = load_reg ( @@a2@@ , v106 ) ; gen_helper_clz ( v48 , v48 ) ; store_reg ( ( __int64 ) @@a2@@ , ( unsigned __int16 ) @@v94@@ >> Number , v48 ) ; return __readfsqword ( Number ) ^ @@v128@@ ; } goto LABEL_426 ; case Number : if ( v96 != Number || ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_426 ; v49 = load_reg ( @@a2@@ , v106 ) ; v18 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v18 , * @@a2@@ ) ; store_reg ( ( __int64 ) @@a2@@ , Number , v18 ) ; gen_bx ( ( __int64 ) @@a2@@ , v49 ) ; return __readfsqword ( Number ) ^ @@v128@@ ; case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_426 ; v70 = ( unsigned __int16 ) @@v94@@ >> Number ; v50 = load_reg ( @@a2@@ , v106 ) ; v19 = load_reg ( @@a2@@ , HIWORD ( @@v94@@ ) & Number ) ; if ( ( ( @@v94@@ >> Number ) & Number ) != Number ) gen_helper_double_saturate ( v19 , v19 ) ; if ( ( @@v94@@ & Number ) != Number ) gen_helper_sub_saturate ( v50 , v50 , v19 ) ; else gen_helper_add_saturate ( v50 , v50 , v19 ) ; goto LABEL_288 ; case Number : if ( v96 != Number || ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_426 ; gen_exception_insn ( @@a2@@ , Number , Number ) ; return __readfsqword ( Number ) ^ @@v128@@ ; case Number : case Number : case Number : case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_426 ; v110 = ( @@v94@@ >> Number ) & Number ; v113 = ( unsigned __int16 ) @@v94@@ >> Number ; v70 = HIWORD ( @@v94@@ ) & Number ; if ( v96 == Number ) { v51 = load_reg ( @@a2@@ , v106 ) ; v20 = load_reg ( @@a2@@ , v110 ) ; if ( ( v103 & Number ) != Number ) tcg_gen_sari_i32 ( v20 , v20 , Number ) ; else tcg_gen_ext16s_i32 ( v20 , v20 ) ; v11 = gen_muls_i64_i32 ( v51 , v20 ) ; tcg_gen_shri_i64 ( v11 , v11 , Number L ) ; v44 = tcg_temp_new_i32 ( ) ; tcg_gen_trunc_i64_i32 ( v44 , v11 ) ; tcg_temp_free_i64 ( v11 ) ; if ( ( v103 & Number ) == Number ) { v21 = load_reg ( @@a2@@ , v113 ) ; gen_helper_add_setq ( v44 , v44 , v21 ) ; tcg_temp_free_i32 ( v21 ) ; } } else { v44 = load_reg ( @@a2@@ , v106 ) ; v22 = load_reg ( @@a2@@ , v110 ) ; gen_mulxy ( v44 , v22 , v103 & Number , v103 & Number ) ; tcg_temp_free_i32 ( v22 ) ; if ( v96 == Number ) { v12 = tcg_temp_new_i64 ( ) ; tcg_gen_ext_i32_i64 ( v12 , v44 ) ; tcg_temp_free_i32 ( v44 ) ; gen_addq ( @@a2@@ , v12 , v113 , v70 ) ; gen_storeq_reg ( ( __int64 ) @@a2@@ , v113 , v70 , v12 ) ; tcg_temp_free_i64 ( v12 ) ; return __readfsqword ( Number ) ^ @@v128@@ ; } if ( ! v96 ) { v23 = load_reg ( @@a2@@ , v113 ) ; gen_helper_add_setq ( v44 , v44 , v23 ) ; tcg_temp_free_i32 ( v23 ) ; } } break ; default : goto LABEL_426 ; } goto LABEL_360 ; } if ( ( @@v94@@ & Number ) == Number && ( @@v94@@ & Number ) != Number || ( @@v94@@ & Number ) == Number ) { v97 = ( @@v94@@ >> Number ) & Number ; @@v125@@ = ( @@v94@@ >> Number ) & Number ; @@v126@@ = ( ( @@v94@@ & Number ) != Number ) & table_logic_cc [ v97 ] ; if ( ( @@v94@@ & Number ) != Number ) { v87 = ( unsigned __int8 ) @@v94@@ ; v75 = Number * ( ( @@v94@@ >> Number ) & Number ) ; if ( v75 ) v87 = __ROR4__ ( ( unsigned __int8 ) @@v94@@ , v75 ) ; v24 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v24 , v87 ) ; if ( @@v126@@ && v75 ) gen_set_CF_bit31 ( v24 ) ; } else { v24 = load_reg ( @@a2@@ , @@v94@@ & Number ) ; @@v127@@ = ( @@v94@@ >> Number ) & Number ; if ( ( @@v94@@ & Number ) != Number ) { v52 = load_reg ( @@a2@@ , ( @@v94@@ >> Number ) & Number ) ; gen_arm_shift_reg ( v24 , @@v127@@ , v52 , @@v126@@ ) ; } else { gen_arm_shift_im ( v24 , @@v127@@ , ( @@v94@@ >> Number ) & Number , @@v126@@ ) ; } } if ( v97 == Number || v97 == Number ) v53 = Number ; else v53 = load_reg ( @@a2@@ , HIWORD ( @@v94@@ ) & Number ) ; v71 = ( unsigned __int16 ) @@v94@@ >> Number ; switch ( v97 ) { case Number : tcg_gen_and_i32 ( v53 , v53 , v24 ) ; if ( @@v126@@ ) gen_logic_CC ( v53 ) ; goto LABEL_173 ; case Number : tcg_gen_xor_i32 ( v53 , v53 , v24 ) ; if ( @@v126@@ ) gen_logic_CC ( v53 ) ; goto LABEL_173 ; case Number : if ( @@v125@@ && v71 == Number ) goto LABEL_426 ; if ( @@v125@@ ) gen_helper_sub_cc ( v53 , v53 , v24 ) ; else tcg_gen_sub_i32 ( v53 , v53 , v24 ) ; goto LABEL_173 ; case Number : if ( @@v125@@ ) gen_helper_sub_cc ( v53 , v24 , v53 ) ; else tcg_gen_sub_i32 ( v53 , v24 , v53 ) ; goto LABEL_173 ; case Number : if ( @@v125@@ ) gen_helper_add_cc ( v53 , v53 , v24 ) ; else tcg_gen_add_i32 ( v53 , v53 , v24 ) ; goto LABEL_173 ; case Number : if ( @@v125@@ ) gen_helper_adc_cc ( v53 , v53 , v24 ) ; else gen_add_carry ( v53 , v53 , v24 ) ; goto LABEL_173 ; case Number : if ( @@v125@@ ) gen_helper_sbc_cc ( v53 , v53 , v24 ) ; else gen_sub_carry ( v53 , v53 , v24 ) ; goto LABEL_173 ; case Number : if ( @@v125@@ ) gen_helper_sbc_cc ( v53 , v24 , v53 ) ; else gen_sub_carry ( v53 , v24 , v53 ) ; goto LABEL_173 ; case Number : if ( @@v125@@ ) { tcg_gen_and_i32 ( v53 , v53 , v24 ) ; gen_logic_CC ( v53 ) ; } goto LABEL_162 ; case Number : if ( @@v125@@ ) { tcg_gen_xor_i32 ( v53 , v53 , v24 ) ; gen_logic_CC ( v53 ) ; } goto LABEL_162 ; case Number : if ( @@v125@@ ) gen_helper_sub_cc ( v53 , v53 , v24 ) ; goto LABEL_162 ; case Number : if ( @@v125@@ ) gen_helper_add_cc ( v53 , v53 , v24 ) ; LABEL_162 : tcg_temp_free_i32 ( v53 ) ; break ; case Number : tcg_gen_or_i32 ( v53 , v53 , v24 ) ; if ( @@v126@@ ) gen_logic_CC ( v53 ) ; goto LABEL_173 ; case Number : if ( @@v126@@ && v71 == Number ) goto LABEL_426 ; if ( @@v126@@ ) gen_logic_CC ( v24 ) ; goto LABEL_176 ; case Number : tcg_gen_andc_i32 ( v53 , v53 , v24 ) ; if ( @@v126@@ ) gen_logic_CC ( v53 ) ; LABEL_173 : store_reg_bx ( @@a1@@ , ( __int64 ) @@a2@@ , v71 , v53 ) ; break ; default : tcg_gen_not_i32 ( v24 , v24 ) ; if ( @@v126@@ ) gen_logic_CC ( v24 ) ; LABEL_176 : store_reg_bx ( @@a1@@ , ( __int64 ) @@a2@@ , v71 , v24 ) ; break ; } if ( v97 != Number && v97 != Number ) tcg_temp_free_i32 ( v24 ) ; return __readfsqword ( Number ) ^ @@v128@@ ; } v98 = HIBYTE ( @@v94@@ ) & Number ; switch ( v98 ) { case Number : case Number : v104 = ( @@v94@@ >> Number ) & Number ; if ( ! v104 ) { if ( v98 ) { v115 = HIWORD ( @@v94@@ ) & Number ; v72 = ( unsigned __int16 ) @@v94@@ >> Number ; if ( ( @@v94@@ & Number ) != Number ) { v100 = ( @@v94@@ >> Number ) & Number ; if ( v100 ) { if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_426 ; } else if ( ! arm_feature ( @@a1@@ , Number ) ) { goto LABEL_426 ; } v120 = tcg_temp_local_new_i32 ( ) ; load_reg_var ( @@a2@@ , v120 , v115 ) ; if ( ( @@v94@@ & Number ) != Number ) { if ( v100 == Number ) { gen_load_exclusive ( ( __int64 ) @@a2@@ , v72 , Number , v120 , Number ) ; } else if ( v100 == Number ) { gen_load_exclusive ( ( __int64 ) @@a2@@ , v72 , Number , v120 , Number ) ; } else if ( v100 ) { gen_load_exclusive ( ( __int64 ) @@a2@@ , v72 , v72 + Number , v120 , Number ) ; } else { gen_load_exclusive ( ( __int64 ) @@a2@@ , v72 , Number , v120 , Number ) ; } } else { v108 = @@v94@@ & Number ; if ( v100 == Number ) { gen_store_exclusive ( @@a2@@ , v72 , v108 , Number , v120 , Number ) ; } else if ( v100 == Number ) { gen_store_exclusive ( @@a2@@ , v72 , v108 , Number , v120 , Number ) ; } else if ( v100 ) { gen_store_exclusive ( @@a2@@ , v72 , v108 , v108 + Number , v120 , Number ) ; } else { gen_store_exclusive ( @@a2@@ , v72 , v108 , Number , v120 , Number ) ; } } tcg_temp_free_i32 ( v120 ) ; } else { v121 = load_reg ( @@a2@@ , v115 ) ; v56 = load_reg ( @@a2@@ , @@v94@@ & Number ) ; if ( ( @@v94@@ & Number ) != Number ) { v30 = gen_ld8u ( v121 , Number ) ; gen_st8 ( v56 , v121 , Number ) ; } else { v30 = gen_ld32 ( v121 , Number ) ; gen_st32 ( v56 , v121 , Number ) ; } tcg_temp_free_i32 ( v121 ) ; store_reg ( ( __int64 ) @@a2@@ , v72 , v30 ) ; } return __readfsqword ( Number ) ^ @@v128@@ ; } v70 = HIWORD ( @@v94@@ ) & Number ; v114 = ( unsigned __int16 ) @@v94@@ >> Number ; v111 = ( @@v94@@ >> Number ) & Number ; v107 = @@v94@@ & Number ; v99 = ( @@v94@@ >> Number ) & Number ; if ( v99 >= Number ) { v55 = load_reg ( @@a2@@ , v111 ) ; v29 = load_reg ( @@a2@@ , v107 ) ; if ( ( @@v94@@ & Number ) != Number ) v14 = gen_muls_i64_i32 ( v55 , v29 ) ; else v14 = gen_mulu_i64_i32 ( v55 , v29 ) ; if ( ( @@v94@@ & Number ) != Number ) gen_addq ( @@a2@@ , v14 , v114 , v70 ) ; if ( ( @@v94@@ & Number ) != Number ) gen_logicq_cc ( v14 ) ; gen_storeq_reg ( ( __int64 ) @@a2@@ , v114 , v70 , v14 ) ; tcg_temp_free_i64 ( v14 ) ; return __readfsqword ( Number ) ^ @@v128@@ ; } if ( v99 == Number ) goto LABEL_189 ; if ( v99 > Number ) goto LABEL_426 ; if ( v99 <= Number ) { LABEL_189 : v44 = load_reg ( @@a2@@ , v111 ) ; v25 = load_reg ( @@a2@@ , v107 ) ; tcg_gen_mul_i32 ( v44 , v44 , v25 ) ; tcg_temp_free_i32 ( v25 ) ; if ( ( @@v94@@ & Number ) != Number ) { if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_426 ; v26 = load_reg ( @@a2@@ , v114 ) ; tcg_gen_sub_i32 ( v44 , v26 , v44 ) ; tcg_temp_free_i32 ( v26 ) ; } else if ( ( @@v94@@ & Number ) != Number ) { v27 = load_reg ( @@a2@@ , v114 ) ; tcg_gen_add_i32 ( v44 , v44 , v27 ) ; tcg_temp_free_i32 ( v27 ) ; } if ( ( @@v94@@ & Number ) != Number ) gen_logic_CC ( v44 ) ; goto LABEL_360 ; } if ( v99 == Number && arm_feature ( @@a1@@ , Number ) ) { v54 = load_reg ( @@a2@@ , v111 ) ; v28 = load_reg ( @@a2@@ , v107 ) ; v13 = gen_mulu_i64_i32 ( v54 , v28 ) ; gen_addq_lo ( @@a2@@ , v13 , v114 ) ; gen_addq_lo ( @@a2@@ , v13 , v70 ) ; gen_storeq_reg ( ( __int64 ) @@a2@@ , v114 , v70 , v13 ) ; tcg_temp_free_i64 ( v13 ) ; return __readfsqword ( Number ) ^ @@v128@@ ; } goto LABEL_426 ; } v116 = HIWORD ( @@v94@@ ) & Number ; v70 = ( unsigned __int16 ) @@v94@@ >> Number ; v122 = load_reg ( @@a2@@ , v116 ) ; if ( ( @@v94@@ & Number ) != Number ) gen_add_datah_offset ( @@a2@@ , @@v94@@ , Number , v122 ) ; @@v17@@ = Number ; if ( ( @@v94@@ & Number ) != Number ) { if ( v104 == Number ) { v44 = gen_ld16u ( v122 , Number ) ; } else if ( v104 == Number ) { v44 = gen_ld8s ( v122 , Number ) ; } else { v44 = gen_ld16s ( v122 , Number ) ; } @@v10@@ = Number ; } else if ( ( ( @@v94@@ >> Number ) & Number ) != Number ) { if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_426 ; if ( ( @@v94@@ & Number ) != Number ) { v6 = load_reg ( @@a2@@ , v70 ) ; gen_st32 ( v6 , v122 , Number ) ; tcg_gen_addi_i32 ( v122 , v122 , Number ) ; v44 = load_reg ( @@a2@@ , v70 + Number ) ; gen_st32 ( v44 , v122 , Number ) ; @@v10@@ = Number ; } else { v7 = gen_ld32 ( v122 , Number ) ; store_reg ( ( __int64 ) @@a2@@ , v70 , v7 ) ; tcg_gen_addi_i32 ( v122 , v122 , Number ) ; v44 = gen_ld32 ( v122 , Number ) ; ++ v70 ; @@v10@@ = Number ; } @@v17@@ = Number ; } else { v44 = load_reg ( @@a2@@ , v70 ) ; gen_st16 ( v44 , v122 , Number ) ; @@v10@@ = Number ; } if ( ( @@v94@@ & Number ) != Number ) { if ( ( @@v94@@ & Number ) != Number ) { if ( @@v17@@ ) tcg_gen_addi_i32 ( v122 , v122 , @@v17@@ ) ; store_reg ( ( __int64 ) @@a2@@ , v116 , v122 ) ; } else { tcg_temp_free_i32 ( v122 ) ; } } else { gen_add_datah_offset ( @@a2@@ , @@v94@@ , @@v17@@ , v122 ) ; store_reg ( ( __int64 ) @@a2@@ , v116 , v122 ) ; } if ( ! @@v10@@ ) return __readfsqword ( Number ) ^ @@v128@@ ; goto LABEL_360 ; case Number : case Number : goto LABEL_361 ; case Number : case Number : if ( ( @@v94@@ & Number ) == Number ) { LABEL_361 : if ( v98 == Number && ( @@v94@@ & Number ) == Number ) goto LABEL_426 ; v118 = HIWORD ( @@v94@@ ) & Number ; v73 = ( unsigned __int16 ) @@v94@@ >> Number ; v42 = load_reg ( @@a2@@ , v118 ) ; if ( ( @@v94@@ & Number ) != Number ) gen_add_data_offset ( @@a2@@ , @@v94@@ , v42 ) ; if ( ( @@v94@@ & Number ) != Number ) { if ( ( @@v94@@ & Number ) != Number ) v65 = gen_ld8u ( v42 , Number ) ; else v65 = gen_ld32 ( v42 , Number ) ; } else { v65 = load_reg ( @@a2@@ , v73 ) ; if ( ( @@v94@@ & Number ) != Number ) gen_st8 ( v65 , v42 , Number ) ; else gen_st32 ( v65 , v42 , Number ) ; } if ( ( @@v94@@ & Number ) != Number ) { if ( ( @@v94@@ & Number ) != Number ) store_reg ( ( __int64 ) @@a2@@ , v118 , v42 ) ; else tcg_temp_free_i32 ( v42 ) ; } else { gen_add_data_offset ( @@a2@@ , @@v94@@ , v42 ) ; store_reg ( ( __int64 ) @@a2@@ , v118 , v42 ) ; } if ( ( @@v94@@ & Number ) != Number ) store_reg_from_load ( @@a1@@ , ( __int64 ) @@a2@@ , v73 , v65 ) ; return __readfsqword ( Number ) ^ @@v128@@ ; } if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_426 ; v109 = @@v94@@ & Number ; v117 = HIWORD ( @@v94@@ ) & Number ; v70 = ( unsigned __int16 ) @@v94@@ >> Number ; v112 = ( @@v94@@ >> Number ) & Number ; v8 = ( @@v94@@ >> Number ) & Number ; switch ( v8 ) { case Number : v102 = ( @@v94@@ >> Number ) & Number | ( ( unsigned __int8 ) @@v94@@ >> Number ) ; switch ( v102 ) { case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_426 ; v63 = load_reg ( @@a2@@ , v109 ) ; v39 = load_reg ( @@a2@@ , v112 ) ; gen_helper_usad8 ( v63 , v63 , v39 ) ; tcg_temp_free_i32 ( v39 ) ; if ( v70 != Number ) { v40 = load_reg ( @@a2@@ , v70 ) ; tcg_gen_add_i32 ( v63 , v63 , v40 ) ; tcg_temp_free_i32 ( v40 ) ; } goto LABEL_334 ; case Number : case Number : case Number : case Number : case Number : case Number : case Number : case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_426 ; v44 = load_reg ( @@a2@@ , v109 ) ; v80 = ( @@v94@@ >> Number ) & Number ; v81 = ( HIWORD ( @@v94@@ ) & Number ) + Number ; if ( v80 + v81 > Number ) goto LABEL_426 ; if ( v81 <= Number ) { if ( ( v102 & Number ) != Number ) gen_ubfx ( v44 , v80 , ( Number << v81 ) - Number ) ; else gen_sbfx ( v44 , v80 , v81 ) ; } goto LABEL_360 ; case Number : case Number : case Number : case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_426 ; v79 = ( @@v94@@ >> Number ) & Number ; if ( v109 == Number ) { v44 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v44 , Number ) ; } else { v44 = load_reg ( @@a2@@ , v109 ) ; } if ( ( HIWORD ( @@v94@@ ) & Number ) - v79 != Number ) { v41 = load_reg ( @@a2@@ , v70 ) ; gen_bfi ( v44 , v41 , v44 , v79 , ( Number << ( ( BYTE2 ( @@v94@@ ) & Number ) - v79 + Number ) ) - Number ) ; tcg_temp_free_i32 ( v41 ) ; } goto LABEL_360 ; default : goto LABEL_426 ; } case Number : switch ( ( @@v94@@ >> Number ) & Number ) { case Number : case Number : if ( ( @@v94@@ & Number ) != Number ) goto LABEL_426 ; v63 = load_reg ( @@a2@@ , v109 ) ; v36 = load_reg ( @@a2@@ , v112 ) ; if ( ( @@v94@@ & Number ) != Number ) gen_swap_half ( v36 ) ; gen_smul_dual ( v63 , v36 ) ; if ( ( @@v94@@ & Number ) != Number ) tcg_gen_sub_i32 ( v63 , v63 , v36 ) ; else gen_helper_add_setq ( v63 , v63 , v36 ) ; tcg_temp_free_i32 ( v36 ) ; if ( ( @@v94@@ & Number ) != Number ) { v16 = tcg_temp_new_i64 ( ) ; tcg_gen_ext_i32_i64 ( v16 , v63 ) ; tcg_temp_free_i32 ( v63 ) ; gen_addq ( @@a2@@ , v16 , v70 , v117 ) ; gen_storeq_reg ( ( __int64 ) @@a2@@ , v70 , v117 , v16 ) ; tcg_temp_free_i64 ( v16 ) ; return __readfsqword ( Number ) ^ @@v128@@ ; } if ( v70 != Number ) { v37 = load_reg ( @@a2@@ , v70 ) ; gen_helper_add_setq ( v63 , v63 , v37 ) ; tcg_temp_free_i32 ( v37 ) ; } break ; case Number : case Number : if ( ! arm_feature ( @@a1@@ , Number ) || ( unsigned __int8 ) @@v94@@ >> Number || v70 != Number ) goto LABEL_426 ; v64 = load_reg ( @@a2@@ , v109 ) ; v38 = load_reg ( @@a2@@ , v112 ) ; if ( ( @@v94@@ & Number ) != Number ) gen_helper_udiv ( v64 , v64 , v38 ) ; else gen_helper_sdiv ( v64 , v64 , v38 ) ; tcg_temp_free_i32 ( v38 ) ; store_reg ( ( __int64 ) @@a2@@ , v117 , v64 ) ; return __readfsqword ( Number ) ^ @@v128@@ ; case Number : if ( ( ( ( unsigned __int8 ) ( @@v94@@ >> Number ) ^ ( unsigned __int8 ) ( @@v94@@ >> Number ) ) & Number ) != Number ) goto LABEL_426 ; v60 = load_reg ( @@a2@@ , v109 ) ; v35 = load_reg ( @@a2@@ , v112 ) ; v15 = gen_muls_i64_i32 ( v60 , v35 ) ; if ( v70 != Number ) { v61 = load_reg ( @@a2@@ , v70 ) ; if ( ( @@v94@@ & Number ) != Number ) v15 = gen_subq_msw ( v15 , v61 ) ; else v15 = gen_addq_msw ( v15 , v61 ) ; } if ( ( @@v94@@ & Number ) != Number ) tcg_gen_addi_i64 ( v15 , v15 , Number ) ; tcg_gen_shri_i64 ( v15 , v15 , Number L ) ; v62 = tcg_temp_new_i32 ( ) ; tcg_gen_trunc_i64_i32 ( v62 , v15 ) ; tcg_temp_free_i64 ( v15 ) ; store_reg ( ( __int64 ) @@a2@@ , v117 , v62 ) ; return __readfsqword ( Number ) ^ @@v128@@ ; default : goto LABEL_426 ; } LABEL_334 : store_reg ( ( __int64 ) @@a2@@ , v117 , v63 ) ; return __readfsqword ( Number ) ^ @@v128@@ ; case Number : v57 = load_reg ( @@a2@@ , v117 ) ; v31 = load_reg ( @@a2@@ , v109 ) ; v105 = ( unsigned __int8 ) @@v94@@ >> Number ; if ( ( ( @@v94@@ >> Number ) & Number ) != Number && v105 != Number && v105 != Number ) { gen_arm_parallel_addsub ( ( @@v94@@ >> Number ) & Number , v105 , v57 , v31 ) ; tcg_temp_free_i32 ( v31 ) ; store_reg ( ( __int64 ) @@a2@@ , v70 , v57 ) ; return __readfsqword ( Number ) ^ @@v128@@ ; } goto LABEL_426 ; } if ( ( @@v94@@ & Number ) == Number ) { v58 = load_reg ( @@a2@@ , v117 ) ; v32 = load_reg ( @@a2@@ , v109 ) ; v76 = ( @@v94@@ >> Number ) & Number ; if ( ( @@v94@@ & Number ) != Number ) { if ( ! v76 ) v76 = Number ; tcg_gen_sari_i32 ( v32 , v32 , v76 ) ; tcg_gen_andi_i32 ( v58 , v58 , Number ) ; tcg_gen_ext16u_i32 ( v32 , v32 ) ; } else { if ( v76 ) tcg_gen_shli_i32 ( v32 , v32 , v76 ) ; tcg_gen_ext16u_i32 ( v58 , v58 ) ; tcg_gen_andi_i32 ( v32 , v32 , Number ) ; } tcg_gen_or_i32 ( v58 , v58 , v32 ) ; tcg_temp_free_i32 ( v32 ) ; store_reg ( ( __int64 ) @@a2@@ , v70 , v58 ) ; return __readfsqword ( Number ) ^ @@v128@@ ; } if ( ( @@v94@@ & Number ) == Number ) { v50 = load_reg ( @@a2@@ , v109 ) ; v77 = ( @@v94@@ >> Number ) & Number ; if ( ( @@v94@@ & Number ) != Number ) { if ( ! v77 ) v77 = Number ; tcg_gen_sari_i32 ( v50 , v50 , v77 ) ; } else { tcg_gen_shli_i32 ( v50 , v50 , v77 ) ; } v19 = tcg_const_i32 ( HIWORD ( @@v94@@ ) & Number ) ; if ( ( @@v94@@ & Number ) != Number ) gen_helper_usat ( v50 , v50 , v19 ) ; else gen_helper_ssat ( v50 , v50 , v19 ) ; } else { if ( ( @@v94@@ & Number ) != Number ) { if ( ( @@v94@@ & Number ) == Number ) { v59 = load_reg ( @@a2@@ , v117 ) ; v33 = load_reg ( @@a2@@ , v109 ) ; @@v124@@ = tcg_temp_new_i32 ( ) ; tcg_gen_ld_i32 ( @@v124@@ , cpu_env , Number L ) ; gen_helper_sel_flags ( v59 , @@v124@@ , v59 , v33 ) ; tcg_temp_free_i32 ( @@v124@@ ) ; tcg_temp_free_i32 ( v33 ) ; store_reg ( ( __int64 ) @@a2@@ , v70 , v59 ) ; return __readfsqword ( Number ) ^ @@v128@@ ; } if ( ( @@v94@@ & Number ) == Number ) { v44 = load_reg ( @@a2@@ , v109 ) ; v78 = ( @@v94@@ >> Number ) & Number ; if ( v78 ) tcg_gen_rotri_i32 ( v44 , v44 , Number * v78 ) ; v101 = ( @@v94@@ >> Number ) & Number ; switch ( v101 ) { case Number : gen_helper_sxtb16 ( v44 , v44 ) ; break ; case Number : tcg_gen_ext8s_i32 ( v44 , v44 ) ; break ; case Number : tcg_gen_ext16s_i32 ( v44 , v44 ) ; break ; case Number : gen_helper_uxtb16 ( v44 , v44 ) ; break ; case Number : tcg_gen_ext8u_i32 ( v44 , v44 ) ; break ; case Number : tcg_gen_ext16u_i32 ( v44 , v44 ) ; break ; default : goto LABEL_426 ; } if ( v117 != Number ) { v34 = load_reg ( @@a2@@ , v117 ) ; if ( ( v101 & Number ) != Number ) { tcg_gen_add_i32 ( v44 , v44 , v34 ) ; tcg_temp_free_i32 ( v34 ) ; } else { gen_add16 ( v44 , v34 ) ; } } } else { if ( ( @@v94@@ & Number ) != Number ) goto LABEL_426 ; v44 = load_reg ( @@a2@@ , v109 ) ; if ( ( @@v94@@ & Number ) != Number ) { if ( ( @@v94@@ & Number ) != Number ) { gen_revsh ( v44 ) ; } else { if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_426 ; gen_helper_rbit ( v44 , v44 ) ; } } else if ( ( @@v94@@ & Number ) != Number ) { gen_rev16 ( v44 ) ; } else { tcg_gen_bswap32_i32 ( v44 , v44 ) ; } } goto LABEL_360 ; } v50 = load_reg ( @@a2@@ , v109 ) ; v19 = tcg_const_i32 ( HIWORD ( @@v94@@ ) & Number ) ; if ( ( @@v94@@ & Number ) != Number ) gen_helper_usat16 ( v50 , v50 , v19 ) ; else gen_helper_ssat16 ( v50 , v50 , v19 ) ; } LABEL_288 : tcg_temp_free_i32 ( v19 ) ; store_reg ( ( __int64 ) @@a2@@ , v70 , v50 ) ; return __readfsqword ( Number ) ^ @@v128@@ ; case Number : case Number : if ( ( @@v94@@ & Number ) != Number ) goto LABEL_426 ; v119 = HIWORD ( @@v94@@ ) & Number ; v123 = load_reg ( @@a2@@ , v119 ) ; @@v92@@ = Number ; @@v93@@ = Number ; @@v91@@ = Number ; for ( i = Number ; i <= Number ; ++ i ) { if ( ( @@v94@@ & ( Number << i ) ) != Number ) ++ @@v91@@ ; } if ( ( @@v94@@ & Number ) != Number ) { if ( ( @@v94@@ & Number ) != Number ) tcg_gen_addi_i32 ( v123 , v123 , Number ) ; } else if ( ( @@v94@@ & Number ) != Number ) { tcg_gen_addi_i32 ( v123 , v123 , Number * @@v91@@ ) ; } else if ( @@v91@@ != Number ) { tcg_gen_addi_i32 ( v123 , v123 , Number * ( Number - @@v91@@ ) ) ; } @@v90@@ = Number ; for ( j = Number ; j <= Number ; ++ j ) { if ( ( @@v94@@ & ( Number << j ) ) != Number ) { if ( ( @@v94@@ & Number ) != Number ) { v66 = gen_ld32 ( v123 , Number ) ; if ( j == v119 ) { @@v93@@ = v66 ; @@v92@@ = Number ; } else { store_reg_from_load ( @@a1@@ , ( __int64 ) @@a2@@ , j , v66 ) ; } } else { if ( j == Number ) { v88 = * @@a2@@ + Number ; v67 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v67 , v88 ) ; } else { v67 = load_reg ( @@a2@@ , j ) ; } gen_st32 ( v67 , v123 , Number ) ; } if ( ++ @@v90@@ != @@v91@@ ) tcg_gen_addi_i32 ( v123 , v123 , Number ) ; } } if ( ( @@v94@@ & Number ) != Number ) { if ( ( @@v94@@ & Number ) != Number ) { if ( ( @@v94@@ & Number ) == Number ) tcg_gen_addi_i32 ( v123 , v123 , Number ) ; } else if ( ( @@v94@@ & Number ) != Number ) { if ( @@v91@@ != Number ) tcg_gen_addi_i32 ( v123 , v123 , Number * ( Number - @@v91@@ ) ) ; } else { tcg_gen_addi_i32 ( v123 , v123 , Number * @@v91@@ ) ; } store_reg ( ( __int64 ) @@a2@@ , v119 , v123 ) ; } else { tcg_temp_free_i32 ( v123 ) ; } if ( @@v92@@ ) store_reg ( ( __int64 ) @@a2@@ , v119 , @@v93@@ ) ; if ( ( @@v94@@ & Number ) != Number ) { v68 = load_cpu_offset ( Number ) ; gen_set_cpsr ( v68 , Number ) ; tcg_temp_free_i32 ( v68 ) ; @@a2@@ [ Number ] = Number ; } return __readfsqword ( Number ) ^ @@v128@@ ; case Number : case Number : v89 = * @@a2@@ ; if ( ( @@v94@@ & Number ) != Number ) { v69 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v69 , v89 ) ; store_reg ( ( __int64 ) @@a2@@ , Number , v69 ) ; } gen_jmp ( @@a2@@ , Number * ( ( int ) ( @@v94@@ << Number ) >> Number ) + v89 + Number ) ; return __readfsqword ( Number ) ^ @@v128@@ ; case Number : case Number : case Number : if ( ( unsigned int ) disas_coproc_insn ( @@a1@@ , @@a2@@ , @@v94@@ ) ) goto LABEL_426 ; return __readfsqword ( Number ) ^ @@v128@@ ; case Number : gen_set_pc_im ( * @@a2@@ ) ; @@a2@@ [ Number ] = Number ; return __readfsqword ( Number ) ^ @@v128@@ ; default : goto LABEL_426 ; } } if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_426 ; if ( ( ( @@v94@@ >> Number ) & Number ) != Number ) { if ( ( @@v94@@ & Number ) == Number ) { if ( ! arm_feature ( @@a1@@ , Number ) || ( unsigned int ) disas_neon_ls_insn ( @@a1@@ , @@a2@@ , @@v94@@ ) ) goto LABEL_426 ; return __readfsqword ( Number ) ^ @@v128@@ ; } if ( ( @@v94@@ & Number ) == Number || ( @@v94@@ & Number ) == Number ) { if ( ( @@v94@@ & Number ) == Number && ! arm_feature ( @@a1@@ , Number ) || ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_426 ; return __readfsqword ( Number ) ^ @@v128@@ ; } if ( ( @@v94@@ & Number ) == Number || ( @@v94@@ & Number ) == Number ) { if ( arm_feature ( @@a1@@ , Number ) ) return __readfsqword ( Number ) ^ @@v128@@ ; } else if ( ( @@v94@@ & Number ) == Number || ( @@v94@@ & Number ) == Number ) { if ( arm_feature ( @@a1@@ , Number ) ) return __readfsqword ( Number ) ^ @@v128@@ ; } else { if ( ( @@v94@@ & Number ) == Number ) { if ( ! arm_feature ( @@a1@@ , Number ) || ( @@v94@@ & Number ) != Number ) goto LABEL_426 ; return __readfsqword ( Number ) ^ @@v128@@ ; } if ( ( @@v94@@ & Number ) == Number ) { v2 = ( unsigned __int8 ) @@v94@@ >> Number ; if ( v2 != Number ) { if ( ! ( ( unsigned __int8 ) @@v94@@ >> Number ) ) goto LABEL_426 ; if ( ( unsigned int ) ( v2 - Number ) > Number ) goto LABEL_426 ; if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_426 ; return __readfsqword ( Number ) ^ @@v128@@ ; } if ( arm_feature ( @@a1@@ , Number ) ) { gen_clrex ( ) ; return __readfsqword ( Number ) ^ @@v128@@ ; } } else { if ( ( @@v94@@ & Number ) == Number || ( @@v94@@ & Number ) == Number ) goto LABEL_426 ; if ( ( @@v94@@ & Number ) == Number ) { v84 = * @@a2@@ ; v43 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v43 , v84 ) ; store_reg ( ( __int64 ) @@a2@@ , Number , v43 ) ; gen_bx_im ( ( __int64 ) @@a2@@ , ( ( Number * ( ( int ) ( @@v94@@ << Number ) >> Number ) ) | ( @@v94@@ >> Number ) & Number | Number ) + v84 + Number ) ; return __readfsqword ( Number ) ^ @@v128@@ ; } if ( ( @@v94@@ & Number ) == Number ) { if ( ! arm_feature ( @@a1@@ , Number ) || ( * ( _DWORD * ) ( @@a1@@ + Number ) & Number ) == Number || ( unsigned int ) disas_iwmmxt_insn ( @@a1@@ , @@a2@@ , @@v94@@ ) ) goto LABEL_426 ; return __readfsqword ( Number ) ^ @@v128@@ ; } if ( ( @@v94@@ & Number ) != Number ) { if ( ( @@v94@@ & Number ) == Number || ( @@v94@@ & Number ) != Number ) goto LABEL_426 ; return __readfsqword ( Number ) ^ @@v128@@ ; } arm_feature ( @@a1@@ , Number ) ; } } LABEL_426 : gen_exception_insn ( @@a2@@ , Number , Number ) ; return __readfsqword ( Number ) ^ @@v128@@ ; } if ( ! arm_feature ( @@a1@@ , Number ) || disas_neon_data_insn ( @@a1@@ , ( __int64 ) @@a2@@ , @@v94@@ ) ) goto LABEL_426 ; return __readfsqword ( Number ) ^ @@v128@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "int"}, "location": "r64"}, {"n": "v90", "t": {"T": 1, "n": "int", "s": 4}, "location": "s100"}, {"n": "v17", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s128"}, {"n": "v10", "t": {"T": 1, "n": "int", "s": 4}, "location": "s136"}, {"n": "v128", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s24"}, {"n": "v127", "t": {"T": 1, "n": "int", "s": 4}, "location": "s32"}, {"n": "v126", "t": {"T": 1, "n": "int", "s": 4}, "location": "s36"}, {"n": "v125", "t": {"T": 1, "n": "int", "s": 4}, "location": "s40"}, {"n": "v124", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s44"}, {"n": "v95", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s80"}, {"n": "v94", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s84"}, {"n": "v93", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s88"}, {"n": "v92", "t": {"T": 1, "n": "int", "s": 4}, "location": "s92"}, {"n": "v91", "t": {"T": 1, "n": "int", "s": 4}, "location": "s96"}]} {"name": "disas_thumb2_insn", "code": "_BOOL8 __fastcall disas_thumb2_insn ( __int64 @@a1@@ , int * @@a2@@ , unsigned __int16 @@a3@@ ) { int v4 ; unsigned int v5 ; unsigned int v6 ; int v7 ; unsigned int v8 ; unsigned int v10 ; unsigned int v11 ; unsigned int v12 ; unsigned int v13 ; unsigned int v14 ; unsigned int v15 ; unsigned int v16 ; unsigned int v17 ; unsigned int v18 ; unsigned int v19 ; unsigned int v20 ; unsigned int v21 ; unsigned int v22 ; unsigned int v23 ; unsigned int v24 ; unsigned int v25 ; unsigned int v26 ; unsigned int v27 ; unsigned int v28 ; unsigned int v29 ; unsigned int v30 ; unsigned int v31 ; unsigned int v32 ; unsigned int v33 ; unsigned int v34 ; unsigned int v35 ; unsigned int v36 ; unsigned int v37 ; unsigned int v38 ; int v39 ; int v40 ; unsigned int v41 ; int v42 ; int v43 ; int v44 ; unsigned int v45 ; unsigned int v46 ; unsigned int v47 ; unsigned int v48 ; unsigned int v49 ; unsigned int v50 ; int v51 ; int v52 ; int v53 ; int v54 ; unsigned int v55 ; int v56 ; int i ; int j ; int @@v59@@ ; unsigned int @@v60@@ ; int @@v61@@ ; int @@v62@@ ; int @@v63@@ ; unsigned int @@v64@@ ; unsigned int v65 ; unsigned int v66 ; unsigned int v67 ; unsigned int v68 ; unsigned int v69 ; unsigned int v70 ; unsigned int v71 ; unsigned int v72 ; unsigned int v73 ; unsigned int v74 ; unsigned int v75 ; unsigned int v76 ; unsigned int v77 ; unsigned int v78 ; unsigned int v79 ; int v80 ; int v81 ; int @@v82@@ ; int @@v83@@ ; int @@v84@@ ; int v85 ; int v86 ; int v87 ; int v88 ; int v89 ; int v90 ; int v91 ; int v92 ; int v93 ; unsigned int @@v94@@ ; if ( ! arm_feature ( @@a1@@ , Number ) && ! arm_feature ( @@a1@@ , Number ) ) { if ( ( @@a3@@ & Number ) == Number ) { if ( arm_feature ( @@a1@@ , Number ) ) { v18 = load_reg ( @@a2@@ , Number ) ; tcg_gen_addi_i32 ( v18 , v18 , ( Number * @@a3@@ ) & Number ) ; tcg_gen_andi_i32 ( v18 , v18 , Number ) ; v65 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v65 , * @@a2@@ | Number ) ; store_reg ( ( __int64 ) @@a2@@ , Number , v65 ) ; gen_bx ( ( __int64 ) @@a2@@ , v18 ) ; return Number L ; } return Number L ; } if ( ( @@a3@@ & Number ) != Number ) { v19 = load_reg ( @@a2@@ , Number ) ; tcg_gen_addi_i32 ( v19 , v19 , ( Number * @@a3@@ ) & Number | Number ) ; v66 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v66 , * @@a2@@ | Number ) ; store_reg ( ( __int64 ) @@a2@@ , Number , v66 ) ; gen_bx ( ( __int64 ) @@a2@@ , v19 ) ; return Number L ; } if ( ( * @@a2@@ & Number ) == Number ) { tcg_gen_movi_i32 ( dword_2F138 , * @@a2@@ + ( @@a3@@ << Number >> Number ) + Number ) ; return Number L ; } } v4 = lduw_be_p ( ( unsigned __int8 * ) ( ( unsigned int ) * @@a2@@ + guest_base ) ) ; * @@a2@@ += Number ; @@v64@@ = ( @@a3@@ << Number ) | v4 ; if ( ( @@v64@@ & Number ) != Number && ! arm_feature ( @@a1@@ , Number ) ) return Number L ; v80 = HIWORD ( @@v64@@ ) & Number ; @@v82@@ = ( unsigned __int16 ) @@v64@@ >> Number ; @@v83@@ = ( @@v64@@ >> Number ) & Number ; @@v84@@ = @@v64@@ & Number ; switch ( ( @@v64@@ >> Number ) & Number ) { case Number : case Number : case Number : case Number : abort ( ) ; case Number : if ( ( @@v64@@ & Number ) == Number ) { if ( ( ( ( unsigned __int8 ) ( @@v64@@ >> Number ) ^ HIBYTE ( @@v64@@ ) ) & Number ) == Number ) return Number L ; @@v59@@ = Number ; v14 = load_reg ( @@a2@@ , v80 ) ; v39 = Number ; for ( i = Number ; i <= Number ; ++ i ) { if ( ( @@v64@@ & ( Number << i ) ) != Number ) v39 += Number ; } if ( ( @@v64@@ & Number ) != Number ) tcg_gen_addi_i32 ( v14 , v14 , - v39 ) ; @@v60@@ = Number ; for ( j = Number ; j <= Number ; ++ j ) { if ( ( @@v64@@ & ( Number << j ) ) != Number ) { if ( ( @@v64@@ & Number ) != Number ) { v24 = gen_ld32 ( v14 , Number ) ; if ( j == Number ) { gen_bx ( ( __int64 ) @@a2@@ , v24 ) ; } else if ( v80 == j ) { @@v60@@ = v24 ; @@v59@@ = Number ; } else { store_reg ( ( __int64 ) @@a2@@ , j , v24 ) ; } } else { v25 = load_reg ( @@a2@@ , j ) ; gen_st32 ( v25 , v14 , Number ) ; } tcg_gen_addi_i32 ( v14 , v14 , Number ) ; } } if ( @@v59@@ ) store_reg ( ( __int64 ) @@a2@@ , v80 , @@v60@@ ) ; if ( ( @@v64@@ & Number ) == Number ) goto LABEL_340 ; if ( ( @@v64@@ & Number ) != Number ) tcg_gen_addi_i32 ( v14 , v14 , - v39 ) ; if ( ( @@v64@@ & ( Number << ( BYTE2 ( @@v64@@ ) & Number ) ) ) != Number ) return Number L ; goto LABEL_73 ; } if ( ( @@v64@@ & Number ) == Number ) { if ( ( @@v64@@ & Number ) == Number ) { v14 = tcg_temp_local_new_i32 ( ) ; load_reg_var ( @@a2@@ , v14 , v80 ) ; tcg_gen_addi_i32 ( v14 , v14 , ( Number * ( _WORD ) @@v64@@ ) & Number ) ; if ( ( @@v64@@ & Number ) != Number ) gen_load_exclusive ( ( __int64 ) @@a2@@ , @@v82@@ , Number , v14 , Number ) ; else gen_store_exclusive ( @@a2@@ , @@v83@@ , @@v82@@ , Number , v14 , Number ) ; goto LABEL_340 ; } if ( ( @@v64@@ & Number ) == Number ) { if ( v80 == Number ) { v15 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v15 , * @@a2@@ ) ; } else { v15 = load_reg ( @@a2@@ , v80 ) ; } v22 = load_reg ( @@a2@@ , @@v84@@ ) ; tcg_gen_add_i32 ( v15 , v15 , v22 ) ; if ( ( @@v64@@ & Number ) != Number ) { tcg_gen_add_i32 ( v15 , v15 , v22 ) ; tcg_temp_free_i32 ( v22 ) ; v23 = gen_ld16u ( v15 , Number ) ; } else { tcg_temp_free_i32 ( v22 ) ; v23 = gen_ld8u ( v15 , Number ) ; } tcg_temp_free_i32 ( v15 ) ; tcg_gen_shli_i32 ( v23 , v23 , Number ) ; tcg_gen_addi_i32 ( v23 , v23 , * @@a2@@ ) ; store_reg ( ( __int64 ) @@a2@@ , Number , v23 ) ; return Number L ; } if ( arm_feature ( @@a1@@ , Number ) ) { v85 = ( @@v64@@ >> Number ) & Number ; if ( v85 != Number ) { v14 = tcg_temp_local_new_i32 ( ) ; load_reg_var ( @@a2@@ , v14 , v80 ) ; if ( ( @@v64@@ & Number ) != Number ) gen_load_exclusive ( ( __int64 ) @@a2@@ , @@v82@@ , @@v83@@ , v14 , v85 ) ; else gen_store_exclusive ( @@a2@@ , @@v84@@ , @@v82@@ , @@v83@@ , v14 , v85 ) ; goto LABEL_340 ; } } return Number L ; } if ( v80 == Number ) { v14 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v14 , * @@a2@@ & Number ) ; } else { v14 = load_reg ( @@a2@@ , v80 ) ; } v38 = Number * ( unsigned __int8 ) @@v64@@ ; if ( ( @@v64@@ & Number ) == Number ) v38 = Number * ( unsigned __int8 ) @@v64@@ ; if ( ( @@v64@@ & Number ) != Number ) { tcg_gen_addi_i32 ( v14 , v14 , v38 ) ; v38 = Number ; } if ( ( @@v64@@ & Number ) != Number ) { v5 = gen_ld32 ( v14 , Number ) ; store_reg ( ( __int64 ) @@a2@@ , @@v82@@ , v5 ) ; tcg_gen_addi_i32 ( v14 , v14 , Number ) ; v20 = gen_ld32 ( v14 , Number ) ; store_reg ( ( __int64 ) @@a2@@ , @@v83@@ , v20 ) ; } else { v6 = load_reg ( @@a2@@ , @@v82@@ ) ; gen_st32 ( v6 , v14 , Number ) ; tcg_gen_addi_i32 ( v14 , v14 , Number ) ; v21 = load_reg ( @@a2@@ , @@v83@@ ) ; gen_st32 ( v21 , v14 , Number ) ; } if ( ( @@v64@@ & Number ) == Number ) goto LABEL_340 ; if ( v80 == Number ) return Number L ; tcg_gen_addi_i32 ( v14 , v14 , v38 - Number ) ; store_reg ( ( __int64 ) @@a2@@ , v80 , v14 ) ; return Number L ; case Number : v86 = ( @@v64@@ >> Number ) & Number ; if ( v86 == Number ) { v26 = load_reg ( @@a2@@ , v80 ) ; v67 = load_reg ( @@a2@@ , @@v84@@ ) ; v43 = ( @@v64@@ >> Number ) & Number | ( ( unsigned __int8 ) @@v64@@ >> Number ) ; if ( ( @@v64@@ & Number ) != Number ) { if ( ! v43 ) v43 = Number ; tcg_gen_sari_i32 ( v67 , v67 , v43 ) ; tcg_gen_andi_i32 ( v26 , v26 , Number ) ; tcg_gen_ext16u_i32 ( v67 , v67 ) ; } else { if ( v43 ) tcg_gen_shli_i32 ( v67 , v67 , v43 ) ; tcg_gen_ext16u_i32 ( v26 , v26 ) ; tcg_gen_andi_i32 ( v67 , v67 , Number ) ; } tcg_gen_or_i32 ( v26 , v26 , v67 ) ; tcg_temp_free_i32 ( v67 ) ; store_reg ( ( __int64 ) @@a2@@ , @@v83@@ , v26 ) ; return Number L ; } if ( v80 == Number ) { v27 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v27 , Number ) ; } else { v27 = load_reg ( @@a2@@ , v80 ) ; } v68 = load_reg ( @@a2@@ , @@v84@@ ) ; v7 = ( @@v64@@ & Number ) != Number && thumb2_logic_op ( v86 ) ; gen_arm_shift_im ( v68 , ( @@v64@@ >> Number ) & Number , ( ( unsigned __int8 ) @@v64@@ >> Number ) | ( @@v64@@ >> Number ) & Number , v7 ) ; if ( ( unsigned int ) gen_thumb2_data_op ( ( __int64 ) @@a2@@ , v86 , ( @@v64@@ & Number ) != Number , Number , v27 , v68 ) ) return Number L ; tcg_temp_free_i32 ( v68 ) ; if ( @@v83@@ != Number ) goto LABEL_280 ; goto LABEL_93 ; case Number : case Number : case Number : case Number : if ( ( HIBYTE ( @@v64@@ ) & Number ) == Number ) { if ( ! disas_neon_data_insn ( @@a1@@ , ( __int64 ) @@a2@@ , @@v64@@ & Number | ( @@v64@@ >> Number ) & Number | Number ) ) return Number L ; } else if ( ( @@v64@@ & Number ) == Number && ! ( unsigned int ) disas_coproc_insn ( @@a1@@ , @@a2@@ , @@v64@@ ) ) { return Number L ; } return Number L ; case Number : case Number : case Number : case Number : if ( ( @@v64@@ & Number ) == Number ) { if ( ( @@v64@@ & Number ) != Number ) { if ( ( @@v64@@ & Number ) != Number ) { if ( ( @@v64@@ & Number ) != Number ) return Number L ; v92 = ( @@v64@@ >> Number ) & Number ; v48 = @@v64@@ & Number ; v45 = ( ( unsigned __int8 ) @@v64@@ >> Number ) | ( @@v64@@ >> Number ) & Number ; if ( v80 == Number ) { v27 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v27 , Number ) ; } else { v27 = load_reg ( @@a2@@ , v80 ) ; } switch ( v92 ) { case Number : return Number L ; case Number : v50 = v48 + Number ; if ( v45 + v50 > Number ) return Number L ; if ( v50 <= Number ) gen_ubfx ( v27 , v45 , ( Number << v50 ) - Number ) ; break ; case Number : v49 = v48 + Number ; if ( v45 + v49 > Number ) return Number L ; if ( v49 <= Number ) gen_sbfx ( v27 , v45 , v49 ) ; break ; case Number : if ( v48 < v45 ) return Number L ; v51 = v48 - v45 + Number ; if ( v51 != Number ) { v78 = load_reg ( @@a2@@ , @@v83@@ ) ; gen_bfi ( v27 , v78 , v27 , v45 , ( Number << v51 ) - Number ) ; tcg_temp_free_i32 ( v78 ) ; } break ; default : if ( v45 ) { if ( ( @@v64@@ & Number ) != Number ) tcg_gen_sari_i32 ( v27 , v27 , v45 ) ; else tcg_gen_shli_i32 ( v27 , v27 , v45 ) ; } v72 = tcg_const_i32 ( @@v64@@ & Number ) ; if ( ( ( @@v64@@ >> Number ) & Number ) != Number ) { if ( ( @@v64@@ & Number ) == Number || v45 ) gen_helper_usat ( v27 , v27 , v72 ) ; else gen_helper_usat16 ( v27 , v27 , v72 ) ; } else if ( ( @@v64@@ & Number ) == Number || v45 ) { gen_helper_ssat ( v27 , v27 , v72 ) ; } else { gen_helper_ssat16 ( v27 , v27 , v72 ) ; } LABEL_253 : tcg_temp_free_i32 ( v72 ) ; break ; } } else { v52 = ( @@v64@@ >> Number ) & Number | ( @@v64@@ >> Number ) & Number | ( unsigned __int8 ) @@v64@@ ; if ( ( @@v64@@ & Number ) != Number ) { v53 = ( @@v64@@ >> Number ) & Number | v52 ; if ( ( @@v64@@ & Number ) != Number ) { v27 = load_reg ( @@a2@@ , @@v83@@ ) ; tcg_gen_ext16u_i32 ( v27 , v27 ) ; tcg_gen_ori_i32 ( v27 , v27 , v53 << Number ) ; } else { v27 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v27 , v53 ) ; } } else if ( v80 == Number ) { v41 = * @@a2@@ & Number ; if ( ( @@v64@@ & Number ) != Number ) v42 = v41 - v52 ; else v42 = v52 + v41 ; v27 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v27 , v42 ) ; } else { v27 = load_reg ( @@a2@@ , v80 ) ; if ( ( @@v64@@ & Number ) != Number ) tcg_gen_subi_i32 ( v27 , v27 , v52 ) ; else tcg_gen_addi_i32 ( v27 , v27 , v52 ) ; } } } else { @@v61@@ = Number ; v46 = ( @@v64@@ >> Number ) & Number | ( @@v64@@ >> Number ) & Number ; v54 = ( unsigned __int8 ) @@v64@@ ; if ( v46 == Number ) { v54 = ( ( ( ( unsigned __int8 ) @@v64@@ << Number ) | ( unsigned __int8 ) @@v64@@ ) << Number ) | ( ( unsigned __int8 ) @@v64@@ << Number ) | ( unsigned __int8 ) @@v64@@ ; } else if ( v46 > Number ) { v54 = ( ( unsigned __int8 ) @@v64@@ | Number ) << ( Number - ( ( Number * v46 ) | ( ( unsigned __int8 ) @@v64@@ >> Number ) ) ) ; @@v61@@ = Number ; } else if ( v46 == Number ) { v54 = ( ( ( unsigned __int8 ) @@v64@@ << Number ) | ( unsigned __int8 ) @@v64@@ ) << Number ; } else if ( v46 ) { v54 = ( ( unsigned __int8 ) @@v64@@ << Number ) | ( unsigned __int8 ) @@v64@@ ; } v79 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v79 , v54 ) ; v81 = HIWORD ( @@v64@@ ) & Number ; if ( v81 == Number ) { v27 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v27 , Number ) ; } else { v27 = load_reg ( @@a2@@ , v81 ) ; } if ( ( unsigned int ) gen_thumb2_data_op ( ( __int64 ) @@a2@@ , ( @@v64@@ >> Number ) & Number , ( @@v64@@ & Number ) != Number , @@v61@@ , v27 , v79 ) ) return Number L ; tcg_temp_free_i32 ( v79 ) ; @@v83@@ = ( @@v64@@ >> Number ) & Number ; if ( @@v83@@ == Number ) { LABEL_93 : tcg_temp_free_i32 ( v27 ) ; return Number L ; } } LABEL_280 : store_reg ( ( __int64 ) @@a2@@ , @@v83@@ , v27 ) ; return Number L ; } if ( ( @@v64@@ & Number ) != Number ) { if ( ( @@v64@@ & Number ) != Number ) tcg_gen_movi_i32 ( dword_2F138 , * @@a2@@ | Number ) ; v40 = * @@a2@@ + ( ( ~ @@v64@@ << Number ) & Number ^ ( ~ @@v64@@ << Number ) & Number ^ ( ( Number * ( _WORD ) @@v64@@ ) & Number | ( ( int ) ( Number * @@v64@@ ) >> Number ) & Number ) ) ; if ( ( @@v64@@ & Number ) != Number ) gen_jmp ( @@a2@@ , v40 ) ; else gen_bx_im ( ( __int64 ) @@a2@@ , v40 & Number ) ; return Number L ; } if ( ( ( @@v64@@ >> Number ) & Number ) != Number ) { @@a2@@ [ Number ] = gen_new_label ( ) ; gen_test_cc ( ( @@v64@@ >> Number ) & Number ^ Number , @@a2@@ [ Number ] ) ; @@a2@@ [ Number ] = Number ; gen_jmp ( @@a2@@ , ( ( @@v64@@ << Number ) & Number | ( Number * @@v64@@ ) & Number | ( ( int ) ( Number * @@v64@@ ) >> Number ) & Number | ( @@v64@@ >> Number ) & Number | ( Number * ( _WORD ) @@v64@@ ) & Number ) + * @@a2@@ ) ; return Number L ; } if ( ( @@v64@@ & Number ) == Number && ( @@v64@@ & Number ) == Number ) { v90 = ( @@v64@@ >> Number ) & Number ; switch ( v90 ) { case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_203 ; v32 = load_reg ( @@a2@@ , v80 ) ; v16 = tcg_const_i32 ( ( unsigned __int8 ) @@v64@@ ) ; gen_helper_v7m_msr ( cpu_env , v16 , v32 ) ; tcg_temp_free_i32 ( v16 ) ; tcg_temp_free_i32 ( v32 ) ; gen_lookup_tb ( @@a2@@ ) ; return Number L ; case Number : LABEL_203 : if ( arm_feature ( @@a1@@ , Number ) ) return Number L ; v33 = load_reg ( @@a2@@ , v80 ) ; v8 = msr_mask ( @@a1@@ , ( __int64 ) @@a2@@ , BYTE1 ( @@v64@@ ) & Number , v90 == Number ) ; return ( unsigned int ) gen_set_psr ( @@a2@@ , v8 , v90 == Number , v33 ) != Number ; case Number : if ( ( ( @@v64@@ >> Number ) & Number ) == Number ) gen_nop_hint ( @@a2@@ , ( unsigned __int8 ) @@v64@@ ) ; return Number L ; case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) return Number L ; v91 = ( unsigned __int8 ) @@v64@@ >> Number ; if ( v91 == Number ) { gen_clrex ( ) ; return Number L ; } return ( unsigned __int8 ) ( ( unsigned __int8 ) @@v64@@ >> Number ) < Number || ( unsigned int ) ( v91 - Number ) > Number ; case Number : v34 = load_reg ( @@a2@@ , v80 ) ; gen_bx ( ( __int64 ) @@a2@@ , v34 ) ; return Number L ; case Number : case Number : return Number L ; case Number : v27 = tcg_temp_new_i32 ( ) ; if ( arm_feature ( @@a1@@ , Number ) ) { v17 = tcg_const_i32 ( ( unsigned __int8 ) @@v64@@ ) ; gen_helper_v7m_mrs ( v27 , cpu_env , v17 ) ; tcg_temp_free_i32 ( v17 ) ; } else { gen_helper_cpsr_read ( v27 ) ; } goto LABEL_280 ; default : return Number L ; } } return Number L ; case Number : @@v62@@ = Number ; @@v63@@ = Number ; if ( ( @@v64@@ & Number ) == Number ) return ( unsigned int ) disas_neon_ls_insn ( @@a1@@ , @@a2@@ , @@v64@@ ) != Number ; v93 = ( @@v64@@ >> Number ) & Number | ( @@v64@@ >> Number ) & Number ; if ( @@v82@@ != Number ) goto LABEL_299 ; if ( ( @@v64@@ & Number ) == Number ) return Number L ; if ( v93 == Number ) { LABEL_299 : if ( v80 == Number ) { v14 = tcg_temp_new_i32 ( ) ; v55 = * @@a2@@ & Number ; if ( ( @@v64@@ & Number ) != Number ) v56 = ( @@v64@@ & Number ) + v55 ; else v56 = v55 - ( @@v64@@ & Number ) ; tcg_gen_movi_i32 ( v14 , v56 ) ; } else { v14 = load_reg ( @@a2@@ , v80 ) ; if ( ( @@v64@@ & Number ) != Number ) { v56 = @@v64@@ & Number ; tcg_gen_addi_i32 ( v14 , v14 , v56 ) ; } else { v56 = ( unsigned __int8 ) @@v64@@ ; switch ( ( @@v64@@ >> Number ) & Number ) { case Number : v47 = ( unsigned __int8 ) @@v64@@ >> Number ; if ( v47 > Number ) goto LABEL_308 ; v35 = load_reg ( @@a2@@ , @@v84@@ ) ; if ( ( unsigned __int8 ) @@v64@@ >> Number ) tcg_gen_shli_i32 ( v35 , v35 , v47 ) ; tcg_gen_add_i32 ( v14 , v14 , v35 ) ; tcg_temp_free_i32 ( v35 ) ; break ; case Number : v56 = - ( unsigned __int8 ) @@v64@@ ; goto LABEL_315 ; case Number : LABEL_315 : @@v62@@ = Number ; @@v63@@ = Number ; break ; case Number : tcg_gen_addi_i32 ( v14 , v14 , - ( unsigned __int8 ) @@v64@@ ) ; break ; case Number : v56 = - ( unsigned __int8 ) @@v64@@ ; goto LABEL_317 ; case Number : tcg_gen_addi_i32 ( v14 , v14 , ( unsigned __int8 ) @@v64@@ ) ; break ; case Number : LABEL_317 : tcg_gen_addi_i32 ( v14 , v14 , v56 ) ; @@v63@@ = Number ; break ; default : goto LABEL_308 ; } } } if ( ( @@v64@@ & Number ) != Number ) { switch ( v93 ) { case Number : v36 = gen_ld8u ( v14 , Number ) ; break ; case Number : v36 = gen_ld16u ( v14 , Number ) ; break ; case Number : v36 = gen_ld32 ( v14 , Number ) ; break ; case Number : v36 = gen_ld8s ( v14 , Number ) ; break ; case Number : v36 = gen_ld16s ( v14 , Number ) ; break ; default : goto LABEL_308 ; } if ( @@v82@@ == Number ) gen_bx ( ( __int64 ) @@a2@@ , v36 ) ; else store_reg ( ( __int64 ) @@a2@@ , @@v82@@ , v36 ) ; } else { v37 = load_reg ( @@a2@@ , @@v82@@ ) ; if ( v93 == Number ) { gen_st32 ( v37 , v14 , Number ) ; } else { if ( v93 > Number ) goto LABEL_308 ; if ( ! v93 ) { gen_st8 ( v37 , v14 , Number ) ; goto LABEL_337 ; } if ( v93 != Number ) { LABEL_308 : tcg_temp_free_i32 ( v14 ) ; return Number L ; } gen_st16 ( v37 , v14 , Number ) ; } } LABEL_337 : if ( @@v62@@ ) tcg_gen_addi_i32 ( v14 , v14 , v56 ) ; if ( @@v63@@ ) LABEL_73 : store_reg ( ( __int64 ) @@a2@@ , v80 , v14 ) ; else LABEL_340 : tcg_temp_free_i32 ( v14 ) ; return Number L ; } if ( ( v93 & Number ) != Number ) return Number L ; if ( v80 == Number ) return Number L ; if ( ( @@v64@@ & Number ) != Number ) return Number L ; return ( ( @@v64@@ >> Number ) & Number ) != Number && ( ( @@v64@@ >> Number ) & Number ) != Number ; case Number : v87 = ( @@v64@@ >> Number ) & Number | ( @@v64@@ >> Number ) & Number ; if ( v87 <= Number && ( @@v64@@ & Number ) != Number ) return Number L ; switch ( v87 ) { case Number : v28 = load_reg ( @@a2@@ , v80 ) ; v69 = load_reg ( @@a2@@ , @@v84@@ ) ; if ( ( @@v64@@ & Number ) != Number ) return Number L ; gen_arm_shift_reg ( v28 , ( @@v64@@ >> Number ) & Number , v69 , ( @@v64@@ & Number ) != Number ) ; if ( ( @@v64@@ & Number ) != Number ) gen_logic_CC ( v28 ) ; store_reg_bx ( @@a1@@ , ( __int64 ) @@a2@@ , @@v83@@ , v28 ) ; return Number L ; case Number : v27 = load_reg ( @@a2@@ , @@v84@@ ) ; v44 = ( @@v64@@ >> Number ) & Number ; if ( v44 ) tcg_gen_rotri_i32 ( v27 , v27 , Number * v44 ) ; switch ( ( @@v64@@ >> Number ) & Number ) { case Number : tcg_gen_ext16s_i32 ( v27 , v27 ) ; break ; case Number : tcg_gen_ext16u_i32 ( v27 , v27 ) ; break ; case Number : gen_helper_sxtb16 ( v27 , v27 ) ; break ; case Number : gen_helper_uxtb16 ( v27 , v27 ) ; break ; case Number : tcg_gen_ext8s_i32 ( v27 , v27 ) ; break ; case Number : tcg_gen_ext8u_i32 ( v27 , v27 ) ; break ; default : return Number L ; } if ( v80 != Number ) { v70 = load_reg ( @@a2@@ , v80 ) ; if ( ( int ) ( ( @@v64@@ >> Number ) & Number ) >> Number == Number ) { gen_add16 ( v27 , v70 ) ; } else { tcg_gen_add_i32 ( v27 , v27 , v70 ) ; tcg_temp_free_i32 ( v70 ) ; } } goto LABEL_280 ; case Number : if ( ( ( @@v64@@ >> Number ) & Number ) == Number || ( ( @@v64@@ >> Number ) & Number ) == Number ) return Number L ; v29 = load_reg ( @@a2@@ , v80 ) ; v71 = load_reg ( @@a2@@ , @@v84@@ ) ; gen_thumb2_parallel_addsub ( ( @@v64@@ >> Number ) & Number , ( @@v64@@ >> Number ) & Number , v29 , v71 ) ; tcg_temp_free_i32 ( v71 ) ; store_reg ( ( __int64 ) @@a2@@ , @@v83@@ , v29 ) ; return Number L ; case Number : v88 = ( @@v64@@ >> Number ) & Number | ( @@v64@@ >> Number ) & Number ; if ( v88 > Number ) { v27 = load_reg ( @@a2@@ , v80 ) ; switch ( v88 ) { case Number : tcg_gen_bswap32_i32 ( v27 , v27 ) ; goto LABEL_280 ; case Number : gen_rev16 ( v27 ) ; goto LABEL_280 ; case Number : gen_helper_rbit ( v27 , v27 ) ; goto LABEL_280 ; case Number : gen_revsh ( v27 ) ; goto LABEL_280 ; case Number : v73 = load_reg ( @@a2@@ , @@v84@@ ) ; @@v94@@ = tcg_temp_new_i32 ( ) ; tcg_gen_ld_i32 ( @@v94@@ , cpu_env , Number L ) ; gen_helper_sel_flags ( v27 , @@v94@@ , v27 , v73 ) ; tcg_temp_free_i32 ( @@v94@@ ) ; tcg_temp_free_i32 ( v73 ) ; goto LABEL_280 ; case Number : gen_helper_clz ( v27 , v27 ) ; goto LABEL_280 ; default : return Number L ; } } v27 = load_reg ( @@a2@@ , v80 ) ; v72 = load_reg ( @@a2@@ , @@v84@@ ) ; if ( ( v88 & Number ) != Number ) gen_helper_double_saturate ( v27 , v27 ) ; if ( ( v88 & Number ) != Number ) gen_helper_sub_saturate ( v27 , v72 , v27 ) ; else gen_helper_add_saturate ( v27 , v27 , v72 ) ; goto LABEL_253 ; case Number : case Number : v27 = load_reg ( @@a2@@ , v80 ) ; v74 = load_reg ( @@a2@@ , @@v84@@ ) ; switch ( ( @@v64@@ >> Number ) & Number ) { case Number : tcg_gen_mul_i32 ( v27 , v27 , v74 ) ; tcg_temp_free_i32 ( v74 ) ; if ( @@v82@@ != Number ) { v72 = load_reg ( @@a2@@ , @@v82@@ ) ; if ( ( unsigned __int8 ) @@v64@@ >> Number ) tcg_gen_sub_i32 ( v27 , v72 , v27 ) ; else tcg_gen_add_i32 ( v27 , v27 , v72 ) ; goto LABEL_253 ; } break ; case Number : gen_mulxy ( v27 , v74 , ( ( unsigned __int8 ) @@v64@@ >> Number ) & Number , ( @@v64@@ & Number ) != Number ) ; tcg_temp_free_i32 ( v74 ) ; if ( @@v82@@ != Number ) goto LABEL_150 ; break ; case Number : case Number : if ( ( unsigned __int8 ) @@v64@@ >> Number ) gen_swap_half ( v74 ) ; gen_smul_dual ( v27 , v74 ) ; if ( ( @@v64@@ & Number ) != Number ) tcg_gen_sub_i32 ( v27 , v27 , v74 ) ; else gen_helper_add_setq ( v27 , v27 , v74 ) ; tcg_temp_free_i32 ( v74 ) ; if ( @@v82@@ != Number ) goto LABEL_150 ; break ; case Number : if ( ( unsigned __int8 ) @@v64@@ >> Number ) tcg_gen_sari_i32 ( v74 , v74 , Number ) ; else tcg_gen_ext16s_i32 ( v74 , v74 ) ; v10 = gen_muls_i64_i32 ( v27 , v74 ) ; tcg_gen_shri_i64 ( v10 , v10 , Number L ) ; v27 = tcg_temp_new_i32 ( ) ; tcg_gen_trunc_i64_i32 ( v27 , v10 ) ; tcg_temp_free_i64 ( v10 ) ; if ( @@v82@@ != Number ) { LABEL_150 : v75 = load_reg ( @@a2@@ , @@v82@@ ) ; gen_helper_add_setq ( v27 , v27 , v75 ) ; tcg_temp_free_i32 ( v75 ) ; } break ; case Number : case Number : v11 = gen_muls_i64_i32 ( v27 , v74 ) ; if ( @@v82@@ != Number ) { v30 = load_reg ( @@a2@@ , @@v82@@ ) ; if ( ( @@v64@@ & Number ) != Number ) v11 = gen_addq_msw ( v11 , v30 ) ; else v11 = gen_subq_msw ( v11 , v30 ) ; } if ( ( @@v64@@ & Number ) != Number ) tcg_gen_addi_i64 ( v11 , v11 , Number ) ; tcg_gen_shri_i64 ( v11 , v11 , Number L ) ; v27 = tcg_temp_new_i32 ( ) ; tcg_gen_trunc_i64_i32 ( v27 , v11 ) ; tcg_temp_free_i64 ( v11 ) ; break ; case Number : gen_helper_usad8 ( v27 , v27 , v74 ) ; tcg_temp_free_i32 ( v74 ) ; if ( @@v82@@ != Number ) { v76 = load_reg ( @@a2@@ , @@v82@@ ) ; tcg_gen_add_i32 ( v27 , v27 , v76 ) ; tcg_temp_free_i32 ( v76 ) ; } break ; default : goto LABEL_280 ; } goto LABEL_280 ; case Number : case Number : v31 = load_reg ( @@a2@@ , v80 ) ; v77 = load_reg ( @@a2@@ , @@v84@@ ) ; if ( ( ( ( ( unsigned __int8 ) @@v64@@ >> Number ) | BYTE2 ( @@v64@@ ) & Number ) & Number ) == Number ) { if ( ! arm_feature ( @@a1@@ , Number ) ) return Number L ; if ( ( ( ( ( unsigned __int8 ) @@v64@@ >> Number ) | BYTE2 ( @@v64@@ ) & Number ) & Number ) != Number ) gen_helper_udiv ( v31 , v31 , v77 ) ; else gen_helper_sdiv ( v31 , v31 , v77 ) ; tcg_temp_free_i32 ( v77 ) ; store_reg ( ( __int64 ) @@a2@@ , @@v83@@ , v31 ) ; } else if ( ( ( ( ( unsigned __int8 ) @@v64@@ >> Number ) | BYTE2 ( @@v64@@ ) & Number ) & Number ) == Number ) { if ( ( ( ( ( unsigned __int8 ) @@v64@@ >> Number ) | BYTE2 ( @@v64@@ ) & Number ) & Number ) != Number ) gen_swap_half ( v77 ) ; gen_smul_dual ( v31 , v77 ) ; if ( ( ( ( ( unsigned __int8 ) @@v64@@ >> Number ) | BYTE2 ( @@v64@@ ) & Number ) & Number ) != Number ) tcg_gen_sub_i32 ( v31 , v31 , v77 ) ; else tcg_gen_add_i32 ( v31 , v31 , v77 ) ; tcg_temp_free_i32 ( v77 ) ; v12 = tcg_temp_new_i64 ( ) ; tcg_gen_ext_i32_i64 ( v12 , v31 ) ; tcg_temp_free_i32 ( v31 ) ; gen_addq ( @@a2@@ , v12 , @@v82@@ , @@v83@@ ) ; gen_storeq_reg ( ( __int64 ) @@a2@@ , @@v82@@ , @@v83@@ , v12 ) ; tcg_temp_free_i64 ( v12 ) ; } else { if ( ( ( ( ( unsigned __int8 ) @@v64@@ >> Number ) | BYTE2 ( @@v64@@ ) & Number ) & Number ) != Number ) { v13 = gen_mulu_i64_i32 ( v31 , v77 ) ; } else if ( ( ( ( ( unsigned __int8 ) @@v64@@ >> Number ) | BYTE2 ( @@v64@@ ) & Number ) & Number ) != Number ) { v89 = ( ( unsigned __int8 ) @@v64@@ >> Number ) | HIWORD ( @@v64@@ ) & Number ; gen_mulxy ( v31 , v77 , v89 & Number , v89 & Number ) ; tcg_temp_free_i32 ( v77 ) ; v13 = tcg_temp_new_i64 ( ) ; tcg_gen_ext_i32_i64 ( v13 , v31 ) ; tcg_temp_free_i32 ( v31 ) ; } else { v13 = gen_muls_i64_i32 ( v31 , v77 ) ; } if ( ( ( ( ( unsigned __int8 ) @@v64@@ >> Number ) | BYTE2 ( @@v64@@ ) & Number ) & Number ) != Number ) { gen_addq_lo ( @@a2@@ , v13 , @@v82@@ ) ; gen_addq_lo ( @@a2@@ , v13 , @@v83@@ ) ; } else if ( ( ( ( ( unsigned __int8 ) @@v64@@ >> Number ) | BYTE2 ( @@v64@@ ) & Number ) & Number ) != Number ) { gen_addq ( @@a2@@ , v13 , @@v82@@ , @@v83@@ ) ; } gen_storeq_reg ( ( __int64 ) @@a2@@ , @@v82@@ , @@v83@@ , v13 ) ; tcg_temp_free_i64 ( v13 ) ; } break ; default : return Number L ; } return Number L ; default : return Number L ; } }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned __int16", "s": 2}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "int"}, "location": "r64"}, {"n": "v59", "t": {"T": 1, "n": "int", "s": 4}, "location": "s100"}, {"n": "v94", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s48"}, {"n": "v84", "t": {"T": 1, "n": "int", "s": 4}, "location": "s56"}, {"n": "v83", "t": {"T": 1, "n": "int", "s": 4}, "location": "s60"}, {"n": "v82", "t": {"T": 1, "n": "int", "s": 4}, "location": "s64"}, {"n": "v64", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s76"}, {"n": "v63", "t": {"T": 1, "n": "int", "s": 4}, "location": "s84"}, {"n": "v62", "t": {"T": 1, "n": "int", "s": 4}, "location": "s88"}, {"n": "v61", "t": {"T": 1, "n": "int", "s": 4}, "location": "s92"}, {"n": "v60", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s96"}]}