{"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@@ ; int @@v11@@ ; 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 ; 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 ; int v65 ; int v66 ; int v67 ; int v68 ; int v69 ; int v70 ; int v71 ; int v72 ; int v73 ; int v74 ; unsigned int v75 ; unsigned int i ; unsigned int j ; int v78 ; int v79 ; int v80 ; int v81 ; int v82 ; int v83 ; int @@v84@@ ; unsigned int @@v85@@ ; unsigned int @@v86@@ ; unsigned int @@v87@@ ; int v88 ; int v89 ; int v90 ; unsigned int v91 ; int v92 ; int v93 ; int v94 ; char v95 ; int v96 ; int v97 ; unsigned int v98 ; unsigned int v99 ; int v100 ; int v101 ; int v102 ; int v103 ; int v104 ; int v105 ; int v106 ; int v107 ; int v108 ; int v109 ; int v110 ; int v111 ; int v112 ; int v113 ; unsigned int v114 ; unsigned int v115 ; unsigned int v116 ; unsigned int v117 ; unsigned int @@v118@@ ; int @@v119@@ ; int @@v120@@ ; int @@v121@@ ; unsigned __int64 @@v122@@ ; @@v122@@ = __readfsqword ( Number ) ; @@v86@@ = ldl_le_p ( ( unsigned int * ) ( ( unsigned int ) * @@a2@@ + guest_base ) ) ; * @@a2@@ += Number ; if ( arm_feature ( @@a1@@ , Number ) ) goto LABEL_402 ; @@v87@@ = @@v86@@ >> Number ; if ( @@v86@@ >> Number != Number ) { if ( @@v87@@ != Number ) { @@a2@@ [ Number ] = gen_new_label ( ) ; gen_test_cc ( @@v87@@ ^ Number , @@a2@@ [ Number ] ) ; @@a2@@ [ Number ] = Number ; } if ( ( @@v86@@ & Number ) == Number ) { if ( ( @@v86@@ & Number ) != Number ) { if ( ( unsigned __int16 ) @@v86@@ >> Number == Number ) { if ( ( @@v86@@ & Number ) != Number ) { v80 = ( unsigned __int8 ) @@v86@@ ; v68 = Number * ( ( @@v86@@ >> Number ) & Number ) ; if ( v68 ) v80 = __ROR4__ ( ( unsigned __int8 ) @@v86@@ , v68 ) ; v4 = msr_mask ( @@a1@@ , ( __int64 ) @@a2@@ , BYTE2 ( @@v86@@ ) & Number , ( @@v86@@ & Number ) != Number ) ; if ( ( unsigned int ) gen_set_psr_im ( @@a2@@ , v4 , ( @@v86@@ & Number ) != Number , v80 ) ) goto LABEL_402 ; } else { gen_nop_hint ( @@a2@@ , ( unsigned __int8 ) @@v86@@ ) ; } return __readfsqword ( Number ) ^ @@v122@@ ; } goto LABEL_402 ; } if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_402 ; v65 = ( unsigned __int16 ) @@v86@@ >> Number ; v79 = ( @@v86@@ >> Number ) & Number | @@v86@@ & Number ; if ( ( @@v86@@ & Number ) != Number ) { v45 = load_reg ( @@a2@@ , v65 ) ; tcg_gen_ext16u_i32 ( v45 , v45 ) ; tcg_gen_ori_i32 ( v45 , v45 , v79 << Number ) ; } else { v45 = new_tmp ( ) ; tcg_gen_movi_i32 ( v45 , v79 ) ; } } else { if ( ( @@v86@@ & Number ) != Number || ( @@v86@@ & Number ) == Number ) { if ( ( ( @@v86@@ & Number ) != Number || ( @@v86@@ & Number ) == Number ) && ( @@v86@@ & Number ) != Number ) { v90 = HIBYTE ( @@v86@@ ) & Number ; switch ( v90 ) { case Number : case Number : v96 = ( @@v86@@ >> Number ) & Number ; if ( v96 ) { v110 = HIWORD ( @@v86@@ ) & Number ; v65 = ( unsigned __int16 ) @@v86@@ >> Number ; v116 = load_reg ( @@a2@@ , v110 ) ; if ( ( @@v86@@ & Number ) != Number ) gen_add_datah_offset ( @@a2@@ , @@v86@@ , Number , v116 ) ; @@v13@@ = Number ; if ( ( @@v86@@ & Number ) != Number ) { if ( v96 == Number ) { v45 = gen_ld16u ( v116 , Number ) ; } else if ( v96 == Number ) { v45 = gen_ld8s ( v116 , Number ) ; } else { v45 = gen_ld16s ( v116 , Number ) ; } @@v12@@ = Number ; } else if ( ( ( @@v86@@ >> Number ) & Number ) != Number ) { if ( ( @@v86@@ & Number ) != Number ) { v6 = load_reg ( @@a2@@ , v65 ) ; gen_st32 ( v6 , v116 , Number ) ; tcg_gen_addi_i32 ( v116 , v116 , Number ) ; v45 = load_reg ( @@a2@@ , v65 + Number ) ; gen_st32 ( v45 , v116 , Number ) ; @@v12@@ = Number ; } else { v7 = gen_ld32 ( v116 , Number ) ; store_reg ( ( __int64 ) @@a2@@ , v65 , v7 ) ; tcg_gen_addi_i32 ( v116 , v116 , Number ) ; v45 = gen_ld32 ( v116 , Number ) ; ++ v65 ; @@v12@@ = Number ; } @@v13@@ = Number ; } else { v45 = load_reg ( @@a2@@ , v65 ) ; gen_st16 ( v45 , v116 , Number ) ; @@v12@@ = Number ; } if ( ( @@v86@@ & Number ) != Number ) { if ( ( @@v86@@ & Number ) != Number ) { if ( @@v13@@ ) tcg_gen_addi_i32 ( v116 , v116 , @@v13@@ ) ; store_reg ( ( __int64 ) @@a2@@ , v110 , v116 ) ; } else { dead_tmp ( v116 ) ; } } else { gen_add_datah_offset ( @@a2@@ , @@v86@@ , @@v13@@ , v116 ) ; store_reg ( ( __int64 ) @@a2@@ , v110 , v116 ) ; } if ( ! @@v12@@ ) return __readfsqword ( Number ) ^ @@v122@@ ; goto LABEL_332 ; } if ( v90 ) { v109 = HIWORD ( @@v86@@ ) & Number ; v67 = ( unsigned __int16 ) @@v86@@ >> Number ; if ( ( @@v86@@ & Number ) != Number ) { v92 = ( @@v86@@ >> Number ) & Number ; if ( v92 ) { if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_402 ; } else if ( ! arm_feature ( @@a1@@ , Number ) ) { goto LABEL_402 ; } v114 = tcg_temp_local_new_i32 ( ) ; load_reg_var ( @@a2@@ , v114 , v109 ) ; if ( ( @@v86@@ & Number ) != Number ) { if ( v92 == Number ) { gen_load_exclusive ( ( __int64 ) @@a2@@ , v67 , Number , v114 , Number ) ; } else if ( v92 == Number ) { gen_load_exclusive ( ( __int64 ) @@a2@@ , v67 , Number , v114 , Number ) ; } else if ( v92 ) { gen_load_exclusive ( ( __int64 ) @@a2@@ , v67 , v67 + Number , v114 , Number ) ; } else { gen_load_exclusive ( ( __int64 ) @@a2@@ , v67 , Number , v114 , Number ) ; } } else { v102 = @@v86@@ & Number ; if ( v92 == Number ) { gen_store_exclusive ( @@a2@@ , v67 , v102 , Number , v114 , Number ) ; } else if ( v92 == Number ) { gen_store_exclusive ( @@a2@@ , v67 , v102 , Number , v114 , Number ) ; } else if ( v92 ) { gen_store_exclusive ( @@a2@@ , v67 , v102 , v102 + Number , v114 , Number ) ; } else { gen_store_exclusive ( @@a2@@ , v67 , v102 , Number , v114 , Number ) ; } } tcg_temp_free_i32 ( v114 ) ; } else { v115 = load_reg ( @@a2@@ , v109 ) ; v56 = load_reg ( @@a2@@ , @@v86@@ & Number ) ; if ( ( @@v86@@ & Number ) != Number ) { v25 = gen_ld8u ( v115 , Number ) ; gen_st8 ( v56 , v115 , Number ) ; } else { v25 = gen_ld32 ( v115 , Number ) ; gen_st32 ( v56 , v115 , Number ) ; } dead_tmp ( v115 ) ; store_reg ( ( __int64 ) @@a2@@ , v67 , v25 ) ; } } else { v65 = HIWORD ( @@v86@@ ) & Number ; v108 = ( unsigned __int16 ) @@v86@@ >> Number ; v105 = ( @@v86@@ >> Number ) & Number ; v101 = @@v86@@ & Number ; v91 = ( @@v86@@ >> Number ) & Number ; if ( v91 <= Number || v91 == Number ) { v45 = load_reg ( @@a2@@ , v105 ) ; v21 = load_reg ( @@a2@@ , v101 ) ; tcg_gen_mul_i32 ( v45 , v45 , v21 ) ; dead_tmp ( v21 ) ; if ( ( @@v86@@ & Number ) != Number ) { if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_402 ; v22 = load_reg ( @@a2@@ , v108 ) ; tcg_gen_sub_i32 ( v45 , v22 , v45 ) ; dead_tmp ( v22 ) ; } else if ( ( @@v86@@ & Number ) != Number ) { v23 = load_reg ( @@a2@@ , v108 ) ; tcg_gen_add_i32 ( v45 , v45 , v23 ) ; dead_tmp ( v23 ) ; } if ( ( @@v86@@ & Number ) != Number ) gen_logic_CC ( v45 ) ; goto LABEL_332 ; } v55 = load_reg ( @@a2@@ , v105 ) ; v24 = load_reg ( @@a2@@ , v101 ) ; if ( ( @@v86@@ & Number ) != Number ) v41 = gen_muls_i64_i32 ( v55 , v24 ) ; else v41 = gen_mulu_i64_i32 ( v55 , v24 ) ; if ( ( @@v86@@ & Number ) != Number ) gen_addq ( @@a2@@ , v41 , v108 , v65 ) ; if ( ( @@v86@@ & Number ) == Number ) { if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_402 ; gen_addq_lo ( @@a2@@ , v41 , v108 ) ; gen_addq_lo ( @@a2@@ , v41 , v65 ) ; } if ( ( @@v86@@ & Number ) != Number ) gen_logicq_cc ( v41 ) ; gen_storeq_reg ( ( __int64 ) @@a2@@ , v108 , v65 , v41 ) ; tcg_temp_free_i64 ( v41 ) ; } return __readfsqword ( Number ) ^ @@v122@@ ; case Number : case Number : goto LABEL_333 ; case Number : case Number : if ( ( @@v86@@ & Number ) == Number ) { LABEL_333 : if ( v90 == Number && ( @@v86@@ & Number ) == Number ) goto LABEL_402 ; v112 = HIWORD ( @@v86@@ ) & Number ; v65 = ( unsigned __int16 ) @@v86@@ >> Number ; v38 = load_reg ( @@a2@@ , v112 ) ; if ( ( @@v86@@ & Number ) != Number ) gen_add_data_offset ( @@a2@@ , @@v86@@ , v38 ) ; if ( ( @@v86@@ & Number ) != Number ) { if ( ( @@v86@@ & Number ) != Number ) v45 = gen_ld8u ( v38 , Number ) ; else v45 = gen_ld32 ( v38 , Number ) ; } else { v45 = load_reg ( @@a2@@ , v65 ) ; if ( ( @@v86@@ & Number ) != Number ) gen_st8 ( v45 , v38 , Number ) ; else gen_st32 ( v45 , v38 , Number ) ; } if ( ( @@v86@@ & Number ) != Number ) { if ( ( @@v86@@ & Number ) != Number ) store_reg ( ( __int64 ) @@a2@@ , v112 , v38 ) ; else dead_tmp ( v38 ) ; } else { gen_add_data_offset ( @@a2@@ , @@v86@@ , v38 ) ; store_reg ( ( __int64 ) @@a2@@ , v112 , v38 ) ; } if ( ( @@v86@@ & Number ) != Number ) { if ( v65 != Number ) goto LABEL_332 ; gen_bx ( ( __int64 ) @@a2@@ , v45 ) ; } return __readfsqword ( Number ) ^ @@v122@@ ; } if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_402 ; v103 = @@v86@@ & Number ; v111 = HIWORD ( @@v86@@ ) & Number ; v65 = ( unsigned __int16 ) @@v86@@ >> Number ; v106 = ( @@v86@@ >> Number ) & Number ; v8 = ( @@v86@@ >> Number ) & Number ; if ( v8 == Number ) { v94 = ( @@v86@@ >> Number ) & Number | ( ( unsigned __int8 ) @@v86@@ >> Number ) ; switch ( v94 ) { case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_402 ; v60 = load_reg ( @@a2@@ , v103 ) ; v35 = load_reg ( @@a2@@ , v106 ) ; gen_helper_usad8 ( v60 , v60 , v35 ) ; dead_tmp ( v35 ) ; if ( v65 != Number ) { v36 = load_reg ( @@a2@@ , v65 ) ; tcg_gen_add_i32 ( v60 , v60 , v36 ) ; dead_tmp ( v36 ) ; } goto LABEL_318 ; case Number : case Number : case Number : case Number : case Number : case Number : case Number : case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_402 ; v45 = load_reg ( @@a2@@ , v103 ) ; v74 = ( @@v86@@ >> Number ) & Number ; v75 = ( HIWORD ( @@v86@@ ) & Number ) + Number ; if ( v74 + v75 > Number ) goto LABEL_402 ; if ( v75 <= Number ) { if ( ( v94 & Number ) != Number ) gen_ubfx ( v45 , v74 , ( Number << v75 ) - Number ) ; else gen_sbfx ( v45 , v74 , v75 ) ; } goto LABEL_332 ; case Number : case Number : case Number : case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_402 ; v73 = ( @@v86@@ >> Number ) & Number ; if ( v103 == Number ) { v45 = new_tmp ( ) ; tcg_gen_movi_i32 ( v45 , Number ) ; } else { v45 = load_reg ( @@a2@@ , v103 ) ; } if ( ( HIWORD ( @@v86@@ ) & Number ) - v73 != Number ) { v37 = load_reg ( @@a2@@ , v65 ) ; gen_bfi ( v45 , v37 , v45 , v73 , ( Number << ( ( BYTE2 ( @@v86@@ ) & Number ) - v73 + Number ) ) - Number ) ; dead_tmp ( v37 ) ; } goto LABEL_332 ; default : goto LABEL_402 ; } } if ( v8 == Number ) { v60 = load_reg ( @@a2@@ , v103 ) ; v32 = load_reg ( @@a2@@ , v106 ) ; if ( ( @@v86@@ & Number ) != Number ) { v42 = gen_muls_i64_i32 ( v60 , v32 ) ; if ( ( @@v86@@ & Number ) != Number ) tcg_gen_addi_i64 ( v42 , v42 , Number ) ; tcg_gen_shri_i64 ( v42 , v42 , Number L ) ; v60 = new_tmp ( ) ; tcg_gen_trunc_i64_i32 ( v60 , v42 ) ; tcg_temp_free_i64 ( v42 ) ; if ( v65 != Number ) { v33 = load_reg ( @@a2@@ , v65 ) ; if ( ( @@v86@@ & Number ) != Number ) tcg_gen_sub_i32 ( v60 , v60 , v33 ) ; else tcg_gen_add_i32 ( v60 , v60 , v33 ) ; dead_tmp ( v33 ) ; } } else { if ( ( @@v86@@ & Number ) != Number ) gen_swap_half ( v32 ) ; gen_smul_dual ( v60 , v32 ) ; if ( ( @@v86@@ & Number ) != Number ) tcg_gen_sub_i32 ( v60 , v60 , v32 ) ; else tcg_gen_add_i32 ( v60 , v60 , v32 ) ; dead_tmp ( v32 ) ; if ( ( @@v86@@ & Number ) != Number ) { v43 = tcg_temp_new_i64 ( ) ; tcg_gen_ext_i32_i64 ( v43 , v60 ) ; dead_tmp ( v60 ) ; gen_addq ( @@a2@@ , v43 , v65 , v111 ) ; gen_storeq_reg ( ( __int64 ) @@a2@@ , v65 , v111 , v43 ) ; tcg_temp_free_i64 ( v43 ) ; return __readfsqword ( Number ) ^ @@v122@@ ; } if ( v65 != Number ) { v34 = load_reg ( @@a2@@ , v65 ) ; gen_helper_add_setq ( v60 , v60 , v34 ) ; dead_tmp ( v34 ) ; } } LABEL_318 : store_reg ( ( __int64 ) @@a2@@ , v111 , v60 ) ; return __readfsqword ( Number ) ^ @@v122@@ ; } if ( v8 ) { if ( ( @@v86@@ & Number ) == Number ) { v58 = load_reg ( @@a2@@ , v111 ) ; v27 = load_reg ( @@a2@@ , v103 ) ; v70 = ( @@v86@@ >> Number ) & Number ; if ( ( @@v86@@ & Number ) != Number ) { if ( ! v70 ) v70 = Number ; tcg_gen_sari_i32 ( v27 , v27 , v70 ) ; tcg_gen_andi_i32 ( v58 , v58 , Number ) ; tcg_gen_ext16u_i32 ( v27 , v27 ) ; } else { if ( v70 ) tcg_gen_shli_i32 ( v27 , v27 , v70 ) ; tcg_gen_ext16u_i32 ( v58 , v58 ) ; tcg_gen_andi_i32 ( v27 , v27 , Number ) ; } tcg_gen_or_i32 ( v58 , v58 , v27 ) ; dead_tmp ( v27 ) ; store_reg ( ( __int64 ) @@a2@@ , v65 , v58 ) ; return __readfsqword ( Number ) ^ @@v122@@ ; } if ( ( @@v86@@ & Number ) == Number ) { v45 = load_reg ( @@a2@@ , v103 ) ; v71 = ( @@v86@@ >> Number ) & Number ; if ( ( @@v86@@ & Number ) != Number ) { if ( ! v71 ) v71 = Number ; tcg_gen_sari_i32 ( v45 , v45 , v71 ) ; } else { tcg_gen_shli_i32 ( v45 , v45 , v71 ) ; } v98 = HIWORD ( @@v86@@ ) & Number ; if ( v98 ) { v28 = tcg_const_i32 ( v98 ) ; if ( ( @@v86@@ & Number ) != Number ) gen_helper_usat ( v45 , v45 , v28 ) ; else gen_helper_ssat ( v45 , v45 , v28 ) ; tcg_temp_free_i32 ( v28 ) ; } goto LABEL_332 ; } if ( ( @@v86@@ & Number ) == Number ) { v45 = load_reg ( @@a2@@ , v103 ) ; v99 = HIWORD ( @@v86@@ ) & Number ; if ( v99 ) { v29 = tcg_const_i32 ( v99 ) ; if ( ( @@v86@@ & Number ) != Number ) gen_helper_usat16 ( v45 , v45 , v29 ) ; else gen_helper_ssat16 ( v45 , v45 , v29 ) ; tcg_temp_free_i32 ( v29 ) ; } goto LABEL_332 ; } if ( ( @@v86@@ & Number ) == Number ) { v59 = load_reg ( @@a2@@ , v111 ) ; v30 = load_reg ( @@a2@@ , v103 ) ; @@v118@@ = new_tmp ( ) ; tcg_gen_ld_i32 ( @@v118@@ , cpu_env , Number L ) ; gen_helper_sel_flags ( v59 , @@v118@@ , v59 , v30 ) ; dead_tmp ( @@v118@@ ) ; dead_tmp ( v30 ) ; store_reg ( ( __int64 ) @@a2@@ , v65 , v59 ) ; return __readfsqword ( Number ) ^ @@v122@@ ; } if ( ( @@v86@@ & Number ) == Number ) { v45 = load_reg ( @@a2@@ , v103 ) ; v72 = ( @@v86@@ >> Number ) & Number ; if ( v72 ) tcg_gen_rotri_i32 ( v45 , v45 , Number * v72 ) ; v93 = ( @@v86@@ >> Number ) & Number ; switch ( v93 ) { case Number : gen_helper_sxtb16 ( v45 , v45 ) ; break ; case Number : tcg_gen_ext8s_i32 ( v45 , v45 ) ; break ; case Number : tcg_gen_ext16s_i32 ( v45 , v45 ) ; break ; case Number : gen_helper_uxtb16 ( v45 , v45 ) ; break ; case Number : tcg_gen_ext8u_i32 ( v45 , v45 ) ; break ; case Number : tcg_gen_ext16u_i32 ( v45 , v45 ) ; break ; default : goto LABEL_402 ; } if ( v111 != Number ) { v31 = load_reg ( @@a2@@ , v111 ) ; if ( ( v93 & Number ) != Number ) { tcg_gen_add_i32 ( v45 , v45 , v31 ) ; dead_tmp ( v31 ) ; } else { gen_add16 ( v45 , v31 ) ; } } goto LABEL_332 ; } if ( ( @@v86@@ & Number ) != Number ) goto LABEL_402 ; v45 = load_reg ( @@a2@@ , v103 ) ; if ( ( @@v86@@ & Number ) == Number ) { if ( ( @@v86@@ & Number ) != Number ) gen_rev16 ( v45 ) ; else tcg_gen_bswap32_i32 ( v45 , v45 ) ; goto LABEL_332 ; } if ( ( @@v86@@ & Number ) != Number ) { gen_revsh ( v45 ) ; goto LABEL_332 ; } if ( arm_feature ( @@a1@@ , Number ) ) { gen_helper_rbit ( v45 , v45 ) ; goto LABEL_332 ; } } else { v57 = load_reg ( @@a2@@ , v111 ) ; v26 = load_reg ( @@a2@@ , v103 ) ; v97 = ( unsigned __int8 ) @@v86@@ >> Number ; if ( ( ( @@v86@@ >> Number ) & Number ) != Number && v97 != Number && v97 != Number ) { gen_arm_parallel_addsub ( ( @@v86@@ >> Number ) & Number , v97 , v57 , v26 ) ; dead_tmp ( v26 ) ; store_reg ( ( __int64 ) @@a2@@ , v65 , v57 ) ; return __readfsqword ( Number ) ^ @@v122@@ ; } } break ; case Number : case Number : if ( ( @@v86@@ & Number ) != Number ) goto LABEL_402 ; v113 = HIWORD ( @@v86@@ ) & Number ; v117 = load_reg ( @@a2@@ , v113 ) ; @@v84@@ = Number ; @@v85@@ = Number ; @@v10@@ = Number ; for ( i = Number ; i <= Number ; ++ i ) { if ( ( @@v86@@ & ( Number << i ) ) != Number ) ++ @@v10@@ ; } if ( ( @@v86@@ & Number ) != Number ) { if ( ( @@v86@@ & Number ) != Number ) tcg_gen_addi_i32 ( v117 , v117 , Number ) ; } else if ( ( @@v86@@ & Number ) != Number ) { tcg_gen_addi_i32 ( v117 , v117 , Number * @@v10@@ ) ; } else if ( @@v10@@ != Number ) { tcg_gen_addi_i32 ( v117 , v117 , Number * ( Number - @@v10@@ ) ) ; } @@v11@@ = Number ; for ( j = Number ; j <= Number ; ++ j ) { if ( ( @@v86@@ & ( Number << j ) ) != Number ) { if ( ( @@v86@@ & Number ) != Number ) { v61 = gen_ld32 ( v117 , Number ) ; if ( j == Number ) { gen_bx ( ( __int64 ) @@a2@@ , v61 ) ; } else if ( j == v113 ) { @@v85@@ = v61 ; @@v84@@ = Number ; } else { store_reg ( ( __int64 ) @@a2@@ , j , v61 ) ; } } else { if ( j == Number ) { v82 = * @@a2@@ + Number ; v62 = new_tmp ( ) ; tcg_gen_movi_i32 ( v62 , v82 ) ; } else { v62 = load_reg ( @@a2@@ , j ) ; } gen_st32 ( v62 , v117 , Number ) ; } if ( ++ @@v11@@ != @@v10@@ ) tcg_gen_addi_i32 ( v117 , v117 , Number ) ; } } if ( ( @@v86@@ & Number ) != Number ) { if ( ( @@v86@@ & Number ) != Number ) { if ( ( @@v86@@ & Number ) == Number ) tcg_gen_addi_i32 ( v117 , v117 , Number ) ; } else if ( ( @@v86@@ & Number ) != Number ) { if ( @@v10@@ != Number ) tcg_gen_addi_i32 ( v117 , v117 , Number * ( Number - @@v10@@ ) ) ; } else { tcg_gen_addi_i32 ( v117 , v117 , Number * @@v10@@ ) ; } store_reg ( ( __int64 ) @@a2@@ , v113 , v117 ) ; } else { dead_tmp ( v117 ) ; } if ( @@v84@@ ) store_reg ( ( __int64 ) @@a2@@ , v113 , @@v85@@ ) ; if ( ( @@v86@@ & Number ) != Number ) { v63 = load_cpu_offset ( Number ) ; gen_set_cpsr ( v63 , Number ) ; dead_tmp ( v63 ) ; @@a2@@ [ Number ] = Number ; } return __readfsqword ( Number ) ^ @@v122@@ ; case Number : case Number : v83 = * @@a2@@ ; if ( ( @@v86@@ & Number ) != Number ) { v64 = new_tmp ( ) ; tcg_gen_movi_i32 ( v64 , v83 ) ; store_reg ( ( __int64 ) @@a2@@ , Number , v64 ) ; } gen_jmp ( @@a2@@ , Number * ( ( int ) ( @@v86@@ << Number ) >> Number ) + v83 + Number ) ; return __readfsqword ( Number ) ^ @@v122@@ ; case Number : case Number : case Number : if ( ( unsigned int ) disas_coproc_insn ( @@a1@@ , @@a2@@ , @@v86@@ ) ) goto LABEL_402 ; return __readfsqword ( Number ) ^ @@v122@@ ; case Number : gen_set_pc_im ( * @@a2@@ ) ; @@a2@@ [ Number ] = Number ; return __readfsqword ( Number ) ^ @@v122@@ ; default : goto LABEL_402 ; } goto LABEL_402 ; } v89 = ( @@v86@@ >> Number ) & Number ; @@v119@@ = ( @@v86@@ >> Number ) & Number ; @@v120@@ = ( ( @@v86@@ & Number ) != Number ) & ( unsigned __int8 ) table_logic_cc [ v89 ] ; if ( ( @@v86@@ & Number ) != Number ) { v81 = ( unsigned __int8 ) @@v86@@ ; v69 = Number * ( ( @@v86@@ >> Number ) & Number ) ; if ( v69 ) v81 = __ROR4__ ( ( unsigned __int8 ) @@v86@@ , v69 ) ; v20 = new_tmp ( ) ; tcg_gen_movi_i32 ( v20 , v81 ) ; if ( @@v120@@ && v69 ) gen_set_CF_bit31 ( v20 ) ; } else { v20 = load_reg ( @@a2@@ , @@v86@@ & Number ) ; @@v121@@ = ( @@v86@@ >> Number ) & Number ; if ( ( @@v86@@ & Number ) != Number ) { v53 = load_reg ( @@a2@@ , ( @@v86@@ >> Number ) & Number ) ; gen_arm_shift_reg ( v20 , @@v121@@ , v53 , @@v120@@ ) ; } else { gen_arm_shift_im ( v20 , @@v121@@ , ( @@v86@@ >> Number ) & Number , @@v120@@ ) ; } } if ( v89 == Number || v89 == Number ) v54 = Number ; else v54 = load_reg ( @@a2@@ , HIWORD ( @@v86@@ ) & Number ) ; v66 = ( unsigned __int16 ) @@v86@@ >> Number ; switch ( v89 ) { case Number : tcg_gen_and_i32 ( v54 , v54 , v20 ) ; if ( @@v120@@ ) gen_logic_CC ( v54 ) ; goto LABEL_152 ; case Number : tcg_gen_xor_i32 ( v54 , v54 , v20 ) ; if ( @@v120@@ ) gen_logic_CC ( v54 ) ; goto LABEL_152 ; case Number : if ( @@v119@@ && v66 == Number ) goto LABEL_402 ; if ( @@v119@@ ) gen_helper_sub_cc ( v54 , v54 , v20 ) ; else tcg_gen_sub_i32 ( v54 , v54 , v20 ) ; goto LABEL_152 ; case Number : if ( @@v119@@ ) gen_helper_sub_cc ( v54 , v20 , v54 ) ; else tcg_gen_sub_i32 ( v54 , v20 , v54 ) ; goto LABEL_152 ; case Number : if ( @@v119@@ ) gen_helper_add_cc ( v54 , v54 , v20 ) ; else tcg_gen_add_i32 ( v54 , v54 , v20 ) ; goto LABEL_152 ; case Number : if ( @@v119@@ ) gen_helper_adc_cc ( v54 , v54 , v20 ) ; else gen_add_carry ( v54 , v54 , v20 ) ; goto LABEL_152 ; case Number : if ( @@v119@@ ) gen_helper_sbc_cc ( v54 , v54 , v20 ) ; else gen_sub_carry ( v54 , v54 , v20 ) ; goto LABEL_152 ; case Number : if ( @@v119@@ ) gen_helper_sbc_cc ( v54 , v20 , v54 ) ; else gen_sub_carry ( v54 , v20 , v54 ) ; goto LABEL_152 ; case Number : if ( @@v119@@ ) { tcg_gen_and_i32 ( v54 , v54 , v20 ) ; gen_logic_CC ( v54 ) ; } goto LABEL_141 ; case Number : if ( @@v119@@ ) { tcg_gen_xor_i32 ( v54 , v54 , v20 ) ; gen_logic_CC ( v54 ) ; } goto LABEL_141 ; case Number : if ( @@v119@@ ) gen_helper_sub_cc ( v54 , v54 , v20 ) ; goto LABEL_141 ; case Number : if ( @@v119@@ ) gen_helper_add_cc ( v54 , v54 , v20 ) ; LABEL_141 : dead_tmp ( v54 ) ; break ; case Number : tcg_gen_or_i32 ( v54 , v54 , v20 ) ; if ( @@v120@@ ) gen_logic_CC ( v54 ) ; goto LABEL_152 ; case Number : if ( @@v120@@ && v66 == Number ) goto LABEL_402 ; if ( @@v120@@ ) gen_logic_CC ( v20 ) ; goto LABEL_155 ; case Number : tcg_gen_andc_i32 ( v54 , v54 , v20 ) ; if ( @@v120@@ ) gen_logic_CC ( v54 ) ; LABEL_152 : store_reg_bx ( @@a1@@ , ( __int64 ) @@a2@@ , v66 , v54 ) ; break ; default : tcg_gen_not_i32 ( v20 , v20 ) ; if ( @@v120@@ ) gen_logic_CC ( v20 ) ; LABEL_155 : store_reg_bx ( @@a1@@ , ( __int64 ) @@a2@@ , v66 , v20 ) ; break ; } if ( v89 != Number && v89 != Number ) dead_tmp ( v20 ) ; return __readfsqword ( Number ) ^ @@v122@@ ; } v88 = ( @@v86@@ >> Number ) & Number ; v95 = ( unsigned __int8 ) @@v86@@ >> Number ; v100 = @@v86@@ & Number ; switch ( ( unsigned __int8 ) @@v86@@ >> Number ) { case Number : if ( ( @@v86@@ & Number ) != Number ) { v46 = load_reg ( @@a2@@ , v100 ) ; v5 = msr_mask ( @@a1@@ , ( __int64 ) @@a2@@ , BYTE2 ( @@v86@@ ) & Number , ( ( @@v86@@ >> Number ) & Number ) != Number ) ; if ( ! ( unsigned int ) gen_set_psr ( @@a2@@ , v5 , ( ( @@v86@@ >> Number ) & Number ) != Number , v46 ) ) return __readfsqword ( Number ) ^ @@v122@@ ; goto LABEL_402 ; } if ( ( ( @@v86@@ >> Number ) & Number ) != Number ) goto LABEL_402 ; v47 = new_tmp ( ) ; gen_helper_cpsr_read ( v47 ) ; store_reg ( ( __int64 ) @@a2@@ , ( unsigned __int16 ) @@v86@@ >> Number , v47 ) ; return __readfsqword ( Number ) ^ @@v122@@ ; case Number : if ( v88 == Number ) { v48 = load_reg ( @@a2@@ , v100 ) ; gen_bx ( ( __int64 ) @@a2@@ , v48 ) ; return __readfsqword ( Number ) ^ @@v122@@ ; } if ( v88 != Number ) goto LABEL_402 ; v49 = load_reg ( @@a2@@ , v100 ) ; gen_helper_clz ( v49 , v49 ) ; store_reg ( ( __int64 ) @@a2@@ , ( unsigned __int16 ) @@v86@@ >> Number , v49 ) ; return __readfsqword ( Number ) ^ @@v122@@ ; case Number : if ( v88 != Number ) goto LABEL_402 ; v50 = load_reg ( @@a2@@ , v100 ) ; v14 = new_tmp ( ) ; tcg_gen_movi_i32 ( v14 , * @@a2@@ ) ; store_reg ( ( __int64 ) @@a2@@ , Number , v14 ) ; gen_bx ( ( __int64 ) @@a2@@ , v50 ) ; return __readfsqword ( Number ) ^ @@v122@@ ; case Number : v51 = load_reg ( @@a2@@ , v100 ) ; v15 = load_reg ( @@a2@@ , HIWORD ( @@v86@@ ) & Number ) ; if ( ( ( @@v86@@ >> Number ) & Number ) != Number ) gen_helper_double_saturate ( v15 , v15 ) ; if ( ( @@v86@@ & Number ) != Number ) gen_helper_sub_saturate ( v51 , v51 , v15 ) ; else gen_helper_add_saturate ( v51 , v51 , v15 ) ; dead_tmp ( v15 ) ; store_reg ( ( __int64 ) @@a2@@ , ( unsigned __int16 ) @@v86@@ >> Number , v51 ) ; return __readfsqword ( Number ) ^ @@v122@@ ; case Number : gen_set_condexec ( ( __int64 ) @@a2@@ ) ; gen_set_pc_im ( * @@a2@@ - Number ) ; gen_exception ( Number ) ; @@a2@@ [ Number ] = Number ; return __readfsqword ( Number ) ^ @@v122@@ ; case Number : case Number : case Number : case Number : v104 = ( @@v86@@ >> Number ) & Number ; v107 = ( unsigned __int16 ) @@v86@@ >> Number ; v65 = HIWORD ( @@v86@@ ) & Number ; if ( v88 == Number ) { v52 = load_reg ( @@a2@@ , v100 ) ; v16 = load_reg ( @@a2@@ , v104 ) ; if ( ( v95 & Number ) != Number ) tcg_gen_sari_i32 ( v16 , v16 , Number ) ; else tcg_gen_ext16s_i32 ( v16 , v16 ) ; v39 = gen_muls_i64_i32 ( v52 , v16 ) ; tcg_gen_shri_i64 ( v39 , v39 , Number L ) ; v45 = new_tmp ( ) ; tcg_gen_trunc_i64_i32 ( v45 , v39 ) ; tcg_temp_free_i64 ( v39 ) ; if ( ( v95 & Number ) == Number ) { v17 = load_reg ( @@a2@@ , v107 ) ; gen_helper_add_setq ( v45 , v45 , v17 ) ; dead_tmp ( v17 ) ; } } else { v45 = load_reg ( @@a2@@ , v100 ) ; v18 = load_reg ( @@a2@@ , v104 ) ; gen_mulxy ( v45 , v18 , v95 & Number , v95 & Number ) ; dead_tmp ( v18 ) ; if ( v88 == Number ) { v40 = tcg_temp_new_i64 ( ) ; tcg_gen_ext_i32_i64 ( v40 , v45 ) ; dead_tmp ( v45 ) ; gen_addq ( @@a2@@ , v40 , v107 , v65 ) ; gen_storeq_reg ( ( __int64 ) @@a2@@ , v107 , v65 , v40 ) ; tcg_temp_free_i64 ( v40 ) ; return __readfsqword ( Number ) ^ @@v122@@ ; } if ( ! v88 ) { v19 = load_reg ( @@a2@@ , v107 ) ; gen_helper_add_setq ( v45 , v45 , v19 ) ; dead_tmp ( v19 ) ; } } break ; default : goto LABEL_402 ; } } LABEL_332 : store_reg ( ( __int64 ) @@a2@@ , v65 , v45 ) ; return __readfsqword ( Number ) ^ @@v122@@ ; } if ( ( ( @@v86@@ >> Number ) & Number ) != Number ) { if ( ( @@v86@@ & Number ) == Number ) { if ( ! arm_feature ( @@a1@@ , Number ) || ( unsigned int ) disas_neon_ls_insn ( @@a1@@ , @@a2@@ , @@v86@@ ) ) goto LABEL_402 ; return __readfsqword ( Number ) ^ @@v122@@ ; } if ( ( @@v86@@ & Number ) == Number ) return __readfsqword ( Number ) ^ @@v122@@ ; if ( ( @@v86@@ & Number ) == Number ) { if ( ! arm_feature ( @@a1@@ , Number ) || ( @@v86@@ & Number ) != Number ) goto LABEL_402 ; return __readfsqword ( Number ) ^ @@v122@@ ; } if ( ( @@v86@@ & Number ) != Number ) { if ( ( @@v86@@ & Number ) == Number || ( @@v86@@ & Number ) == Number ) goto LABEL_402 ; if ( ( @@v86@@ & Number ) == Number ) { v78 = * @@a2@@ ; v44 = new_tmp ( ) ; tcg_gen_movi_i32 ( v44 , v78 ) ; store_reg ( ( __int64 ) @@a2@@ , Number , v44 ) ; gen_bx_im ( ( __int64 ) @@a2@@ , ( ( Number * ( ( int ) ( @@v86@@ << Number ) >> Number ) ) | ( @@v86@@ >> Number ) & Number | Number ) + v78 + Number ) ; } else if ( ( @@v86@@ & Number ) == Number ) { if ( ! arm_feature ( @@a1@@ , Number ) || ( * ( _DWORD * ) ( @@a1@@ + Number ) & Number ) == Number || ( unsigned int ) disas_iwmmxt_insn ( @@a1@@ , @@a2@@ , @@v86@@ ) ) goto LABEL_402 ; } else if ( ( @@v86@@ & Number ) == Number || ( @@v86@@ & Number ) == Number || ( @@v86@@ & Number ) != Number ) { goto LABEL_402 ; } return __readfsqword ( Number ) ^ @@v122@@ ; } v2 = ( unsigned __int8 ) @@v86@@ >> Number ; if ( v2 != Number ) { if ( ! ( ( unsigned __int8 ) @@v86@@ >> Number ) ) goto LABEL_402 ; if ( ( unsigned int ) ( v2 - Number ) > Number ) goto LABEL_402 ; if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_402 ; return __readfsqword ( Number ) ^ @@v122@@ ; } if ( arm_feature ( @@a1@@ , Number ) ) { gen_clrex ( ) ; return __readfsqword ( Number ) ^ @@v122@@ ; } LABEL_402 : gen_set_condexec ( ( __int64 ) @@a2@@ ) ; gen_set_pc_im ( * @@a2@@ - Number ) ; gen_exception ( Number ) ; @@a2@@ [ Number ] = Number ; return __readfsqword ( Number ) ^ @@v122@@ ; } if ( ! arm_feature ( @@a1@@ , Number ) || ( unsigned int ) disas_neon_data_insn ( @@a1@@ , ( __int64 ) @@a2@@ , @@v86@@ ) ) goto LABEL_402 ; return __readfsqword ( Number ) ^ @@v122@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "int"}, "location": "r64"}, {"n": "v13", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s124"}, {"n": "v12", "t": {"T": 1, "n": "int", "s": 4}, "location": "s128"}, {"n": "v11", "t": {"T": 1, "n": "int", "s": 4}, "location": "s132"}, {"n": "v10", "t": {"T": 1, "n": "int", "s": 4}, "location": "s136"}, {"n": "v122", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s24"}, {"n": "v121", "t": {"T": 1, "n": "int", "s": 4}, "location": "s32"}, {"n": "v120", "t": {"T": 1, "n": "int", "s": 4}, "location": "s36"}, {"n": "v119", "t": {"T": 1, "n": "int", "s": 4}, "location": "s40"}, {"n": "v118", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s44"}, {"n": "v87", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s80"}, {"n": "v86", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s84"}, {"n": "v85", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s88"}, {"n": "v84", "t": {"T": 1, "n": "int", "s": 4}, "location": "s92"}]}