{"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 ; int @@v10@@ ; int @@v11@@ ; int @@v12@@ ; int i ; int j ; 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 ; int v42 ; int v43 ; unsigned int v44 ; int v45 ; unsigned int v46 ; unsigned int v47 ; unsigned int v48 ; int v49 ; int v50 ; int v51 ; 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 ; unsigned int v65 ; unsigned int v66 ; unsigned int v67 ; unsigned int v68 ; unsigned int v69 ; unsigned int v70 ; int v71 ; int v72 ; int @@v73@@ ; int @@v74@@ ; int @@v75@@ ; int v76 ; int v77 ; int v78 ; int v79 ; int v80 ; int v81 ; int v82 ; int v83 ; int v84 ; unsigned int @@v85@@ ; int v86 ; unsigned int v87 ; unsigned int v88 ; unsigned int v89 ; if ( ! arm_feature ( @@a1@@ , Number ) && ! arm_feature ( @@a1@@ , Number ) ) { if ( ( @@a3@@ & Number ) == Number ) { v23 = load_reg ( @@a2@@ , Number ) ; tcg_gen_addi_i32 ( v23 , v23 , ( Number * @@a3@@ ) & Number ) ; tcg_gen_andi_i32 ( v23 , v23 , Number ) ; v56 = new_tmp ( ) ; tcg_gen_movi_i32 ( v56 , * @@a2@@ | Number ) ; store_reg ( ( __int64 ) @@a2@@ , Number , v56 ) ; gen_bx ( ( __int64 ) @@a2@@ , v23 ) ; return Number L ; } if ( ( @@a3@@ & Number ) != Number ) { v24 = load_reg ( @@a2@@ , Number ) ; tcg_gen_addi_i32 ( v24 , v24 , ( Number * @@a3@@ ) & Number | Number ) ; v57 = new_tmp ( ) ; tcg_gen_movi_i32 ( v57 , * @@a2@@ | Number ) ; store_reg ( ( __int64 ) @@a2@@ , Number , v57 ) ; gen_bx ( ( __int64 ) @@a2@@ , v24 ) ; return Number L ; } if ( ( * @@a2@@ & Number ) == Number ) { tcg_gen_movi_i32 ( dword_297F8 , * @@a2@@ + ( @@a3@@ << Number >> Number ) + Number ) ; return Number L ; } } v4 = lduw_le_p ( ( unsigned __int16 * ) ( ( unsigned int ) * @@a2@@ + guest_base ) ) ; * @@a2@@ += Number ; @@v55@@ = ( @@a3@@ << Number ) | v4 ; if ( ( @@v55@@ & Number ) != Number && ! arm_feature ( @@a1@@ , Number ) ) return Number L ; v71 = HIWORD ( @@v55@@ ) & Number ; @@v73@@ = ( unsigned __int16 ) @@v55@@ >> Number ; @@v74@@ = ( @@v55@@ >> Number ) & Number ; @@v75@@ = @@v55@@ & Number ; switch ( ( @@v55@@ >> Number ) & Number ) { case Number : case Number : case Number : case Number : abort ( ) ; case Number : if ( ( @@v55@@ & Number ) != Number ) { if ( ( @@v55@@ & Number ) != Number ) { if ( v71 == Number ) { v15 = new_tmp ( ) ; tcg_gen_movi_i32 ( v15 , * @@a2@@ & Number ) ; } else { v15 = load_reg ( @@a2@@ , v71 ) ; } v41 = Number * ( unsigned __int8 ) @@v55@@ ; if ( ( @@v55@@ & Number ) == Number ) v41 = Number * ( unsigned __int8 ) @@v55@@ ; if ( ( @@v55@@ & Number ) != Number ) { tcg_gen_addi_i32 ( v15 , v15 , v41 ) ; v41 = Number ; } if ( ( @@v55@@ & Number ) != Number ) { v5 = gen_ld32 ( v15 , Number ) ; store_reg ( ( __int64 ) @@a2@@ , @@v73@@ , v5 ) ; tcg_gen_addi_i32 ( v15 , v15 , Number ) ; v25 = gen_ld32 ( v15 , Number ) ; store_reg ( ( __int64 ) @@a2@@ , @@v74@@ , v25 ) ; } else { v6 = load_reg ( @@a2@@ , @@v73@@ ) ; gen_st32 ( v6 , v15 , Number ) ; tcg_gen_addi_i32 ( v15 , v15 , Number ) ; v26 = load_reg ( @@a2@@ , @@v74@@ ) ; gen_st32 ( v26 , v15 , Number ) ; } if ( ( @@v55@@ & Number ) != Number ) { if ( v71 == Number ) return Number L ; tcg_gen_addi_i32 ( v15 , v15 , v41 - Number ) ; store_reg ( ( __int64 ) @@a2@@ , v71 , v15 ) ; return Number L ; } goto LABEL_318 ; } if ( ( @@v55@@ & Number ) == Number ) { v16 = tcg_temp_local_new_i32 ( ) ; load_reg_var ( @@a2@@ , v16 , v71 ) ; tcg_gen_addi_i32 ( v16 , v16 , ( Number * ( _WORD ) @@v55@@ ) & Number ) ; if ( ( @@v55@@ & Number ) != Number ) gen_load_exclusive ( ( __int64 ) @@a2@@ , @@v73@@ , Number , v16 , Number ) ; else gen_store_exclusive ( @@a2@@ , @@v74@@ , @@v73@@ , Number , v16 , Number ) ; LABEL_33 : tcg_temp_free_i32 ( v16 ) ; return Number L ; } if ( ( @@v55@@ & Number ) == Number ) { if ( v71 == Number ) { v17 = new_tmp ( ) ; tcg_gen_movi_i32 ( v17 , * @@a2@@ ) ; } else { v17 = load_reg ( @@a2@@ , v71 ) ; } v27 = load_reg ( @@a2@@ , @@v75@@ ) ; tcg_gen_add_i32 ( v17 , v17 , v27 ) ; if ( ( @@v55@@ & Number ) != Number ) { tcg_gen_add_i32 ( v17 , v17 , v27 ) ; dead_tmp ( v27 ) ; v28 = gen_ld16u ( v17 , Number ) ; } else { dead_tmp ( v27 ) ; v28 = gen_ld8u ( v17 , Number ) ; } dead_tmp ( v17 ) ; tcg_gen_shli_i32 ( v28 , v28 , Number ) ; tcg_gen_addi_i32 ( v28 , v28 , * @@a2@@ ) ; store_reg ( ( __int64 ) @@a2@@ , Number , v28 ) ; return Number L ; } if ( arm_feature ( @@a1@@ , Number ) ) { v76 = ( @@v55@@ >> Number ) & Number ; if ( v76 != Number ) { v16 = tcg_temp_local_new_i32 ( ) ; load_reg_var ( @@a2@@ , v16 , v71 ) ; if ( ( @@v55@@ & Number ) != Number ) gen_load_exclusive ( ( __int64 ) @@a2@@ , @@v73@@ , @@v74@@ , v16 , v76 ) ; else gen_store_exclusive ( @@a2@@ , @@v75@@ , @@v73@@ , @@v74@@ , v16 , v76 ) ; goto LABEL_33 ; } } } else if ( ( ( ( unsigned __int8 ) ( @@v55@@ >> Number ) ^ HIBYTE ( @@v55@@ ) ) & Number ) != Number ) { v15 = load_reg ( @@a2@@ , v71 ) ; v42 = Number ; for ( i = Number ; i <= Number ; ++ i ) { if ( ( @@v55@@ & ( Number << i ) ) != Number ) v42 += Number ; } if ( ( @@v55@@ & Number ) != Number ) tcg_gen_addi_i32 ( v15 , v15 , - v42 ) ; for ( j = Number ; j <= Number ; ++ j ) { if ( ( @@v55@@ & ( Number << j ) ) != Number ) { if ( ( @@v55@@ & Number ) != Number ) { v29 = gen_ld32 ( v15 , Number ) ; if ( j == Number ) gen_bx ( ( __int64 ) @@a2@@ , v29 ) ; else store_reg ( ( __int64 ) @@a2@@ , j , v29 ) ; } else { v30 = load_reg ( @@a2@@ , j ) ; gen_st32 ( v30 , v15 , Number ) ; } tcg_gen_addi_i32 ( v15 , v15 , Number ) ; } } if ( ( @@v55@@ & Number ) == Number ) { LABEL_318 : dead_tmp ( v15 ) ; return Number L ; } if ( ( @@v55@@ & Number ) != Number ) tcg_gen_addi_i32 ( v15 , v15 , - v42 ) ; if ( ( @@v55@@ & ( Number << ( BYTE2 ( @@v55@@ ) & Number ) ) ) == Number ) { LABEL_69 : store_reg ( ( __int64 ) @@a2@@ , v71 , v15 ) ; return Number L ; } } return Number L ; case Number : if ( v71 == Number ) { v31 = new_tmp ( ) ; tcg_gen_movi_i32 ( v31 , Number ) ; } else { v31 = load_reg ( @@a2@@ , v71 ) ; } v58 = load_reg ( @@a2@@ , @@v75@@ ) ; v77 = ( @@v55@@ >> Number ) & Number ; v7 = ( @@v55@@ & Number ) != Number && thumb2_logic_op ( v77 ) ; gen_arm_shift_im ( v58 , ( @@v55@@ >> Number ) & Number , ( ( unsigned __int8 ) @@v55@@ >> Number ) | ( @@v55@@ >> Number ) & Number , v7 ) ; if ( ( unsigned int ) gen_thumb2_data_op ( ( __int64 ) @@a2@@ , v77 , ( @@v55@@ & Number ) != Number , Number , v31 , v58 ) ) return Number L ; dead_tmp ( v58 ) ; if ( @@v74@@ == Number ) goto LABEL_80 ; goto LABEL_267 ; case Number : case Number : case Number : case Number : if ( ( HIBYTE ( @@v55@@ ) & Number ) == Number ) { if ( ! ( unsigned int ) disas_neon_data_insn ( @@a1@@ , ( __int64 ) @@a2@@ , @@v55@@ & Number | ( @@v55@@ >> Number ) & Number ) ) return Number L ; } else if ( ( @@v55@@ & Number ) == Number && ! ( unsigned int ) disas_coproc_insn ( @@a1@@ , @@a2@@ , @@v55@@ ) ) { return Number L ; } return Number L ; case Number : case Number : case Number : case Number : if ( ( @@v55@@ & Number ) == Number ) { if ( ( @@v55@@ & Number ) != Number ) { if ( ( @@v55@@ & Number ) != Number ) { if ( ( @@v55@@ & Number ) != Number ) return Number L ; v83 = ( @@v55@@ >> Number ) & Number ; v46 = @@v55@@ & Number ; v87 = ( ( unsigned __int8 ) @@v55@@ >> Number ) | ( @@v55@@ >> Number ) & Number ; if ( v71 == Number ) { v31 = new_tmp ( ) ; tcg_gen_movi_i32 ( v31 , Number ) ; } else { v31 = load_reg ( @@a2@@ , v71 ) ; } switch ( v83 ) { case Number : return Number L ; case Number : v48 = v46 + Number ; if ( v87 + v48 > Number ) return Number L ; if ( v48 <= Number ) gen_ubfx ( v31 , v87 , ( Number << v48 ) - Number ) ; break ; case Number : v47 = v46 + Number ; if ( v87 + v47 > Number ) return Number L ; if ( v47 <= Number ) gen_sbfx ( v31 , v87 , v47 ) ; break ; case Number : if ( v46 < v87 ) return Number L ; v49 = v46 - v87 + Number ; if ( v49 != Number ) { v68 = load_reg ( @@a2@@ , @@v74@@ ) ; gen_bfi ( v31 , v68 , v31 , v87 , ( Number << v49 ) - Number ) ; dead_tmp ( v68 ) ; } break ; default : if ( v87 ) { if ( ( @@v55@@ & Number ) != Number ) tcg_gen_sari_i32 ( v31 , v31 , v87 ) ; else tcg_gen_shli_i32 ( v31 , v31 , v87 ) ; } v69 = tcg_const_i32 ( @@v55@@ & Number ) ; if ( ( ( @@v55@@ >> Number ) & Number ) != Number ) { if ( ( @@v55@@ & Number ) == Number || v87 ) gen_helper_usat ( v31 , v31 , v69 ) ; else gen_helper_usat16 ( v31 , v31 , v69 ) ; } else if ( ( @@v55@@ & Number ) == Number || v87 ) { gen_helper_ssat ( v31 , v31 , v69 ) ; } else { gen_helper_ssat16 ( v31 , v31 , v69 ) ; } tcg_temp_free_i32 ( v69 ) ; break ; } } else { v50 = ( @@v55@@ >> Number ) & Number | ( @@v55@@ >> Number ) & Number | ( unsigned __int8 ) @@v55@@ ; if ( ( @@v55@@ & Number ) != Number ) { v51 = ( @@v55@@ >> Number ) & Number | v50 ; if ( ( @@v55@@ & Number ) != Number ) { v31 = load_reg ( @@a2@@ , @@v74@@ ) ; tcg_gen_ext16u_i32 ( v31 , v31 ) ; tcg_gen_ori_i32 ( v31 , v31 , v51 << Number ) ; } else { v31 = new_tmp ( ) ; tcg_gen_movi_i32 ( v31 , v51 ) ; } } else if ( v71 == Number ) { v44 = * @@a2@@ & Number ; if ( ( @@v55@@ & Number ) != Number ) v45 = v44 - v50 ; else v45 = v50 + v44 ; v31 = new_tmp ( ) ; tcg_gen_movi_i32 ( v31 , v45 ) ; } else { v31 = load_reg ( @@a2@@ , v71 ) ; if ( ( @@v55@@ & Number ) != Number ) tcg_gen_subi_i32 ( v31 , v31 , v50 ) ; else tcg_gen_addi_i32 ( v31 , v31 , v50 ) ; } } } else { @@v12@@ = Number ; v88 = ( @@v55@@ >> Number ) & Number | ( @@v55@@ >> Number ) & Number ; v52 = ( unsigned __int8 ) @@v55@@ ; if ( v88 == Number ) { v52 = ( ( ( ( unsigned __int8 ) @@v55@@ << Number ) | ( unsigned __int8 ) @@v55@@ ) << Number ) | ( ( unsigned __int8 ) @@v55@@ << Number ) | ( unsigned __int8 ) @@v55@@ ; } else if ( v88 > Number ) { v52 = ( ( unsigned __int8 ) @@v55@@ | Number ) << ( Number - ( ( Number * v88 ) | ( ( unsigned __int8 ) @@v55@@ >> Number ) ) ) ; @@v12@@ = Number ; } else if ( v88 == Number ) { v52 = ( ( ( unsigned __int8 ) @@v55@@ << Number ) | ( unsigned __int8 ) @@v55@@ ) << Number ; } else if ( v88 ) { v52 = ( ( unsigned __int8 ) @@v55@@ << Number ) | ( unsigned __int8 ) @@v55@@ ; } v70 = new_tmp ( ) ; tcg_gen_movi_i32 ( v70 , v52 ) ; v72 = HIWORD ( @@v55@@ ) & Number ; if ( v72 == Number ) { v31 = new_tmp ( ) ; tcg_gen_movi_i32 ( v31 , Number ) ; } else { v31 = load_reg ( @@a2@@ , v72 ) ; } if ( ( unsigned int ) gen_thumb2_data_op ( ( __int64 ) @@a2@@ , ( @@v55@@ >> Number ) & Number , ( @@v55@@ & Number ) != Number , @@v12@@ , v31 , v70 ) ) return Number L ; dead_tmp ( v70 ) ; @@v74@@ = ( @@v55@@ >> Number ) & Number ; if ( @@v74@@ == Number ) { LABEL_80 : dead_tmp ( v31 ) ; return Number L ; } } LABEL_267 : store_reg ( ( __int64 ) @@a2@@ , @@v74@@ , v31 ) ; return Number L ; } if ( ( @@v55@@ & Number ) != Number ) { if ( ( @@v55@@ & Number ) != Number ) tcg_gen_movi_i32 ( dword_297F8 , * @@a2@@ | Number ) ; v43 = * @@a2@@ + ( ( ~ @@v55@@ << Number ) & Number ^ ( ~ @@v55@@ << Number ) & Number ^ ( ( Number * ( _WORD ) @@v55@@ ) & Number | ( ( int ) ( Number * @@v55@@ ) >> Number ) & Number ) ) ; if ( ( @@v55@@ & Number ) != Number ) gen_jmp ( @@a2@@ , v43 ) ; else gen_bx_im ( ( __int64 ) @@a2@@ , v43 & Number ) ; return Number L ; } if ( ( ( @@v55@@ >> Number ) & Number ) != Number ) { @@a2@@ [ Number ] = gen_new_label ( ) ; gen_test_cc ( ( @@v55@@ >> Number ) & Number ^ Number , @@a2@@ [ Number ] ) ; @@a2@@ [ Number ] = Number ; gen_jmp ( @@a2@@ , ( ( @@v55@@ << Number ) & Number | ( Number * @@v55@@ ) & Number | ( ( int ) ( Number * @@v55@@ ) >> Number ) & Number | ( @@v55@@ >> Number ) & Number | ( Number * ( _WORD ) @@v55@@ ) & Number ) + * @@a2@@ ) ; return Number L ; } if ( ( @@v55@@ & Number ) == Number && ( @@v55@@ & Number ) == Number ) { v81 = ( @@v55@@ >> Number ) & Number ; switch ( v81 ) { case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_190 ; v35 = load_reg ( @@a2@@ , v71 ) ; v18 = tcg_const_i32 ( ( unsigned __int8 ) @@v55@@ ) ; gen_helper_v7m_msr ( cpu_env , v18 , v35 ) ; tcg_temp_free_i32 ( v18 ) ; dead_tmp ( v35 ) ; gen_lookup_tb ( @@a2@@ ) ; return Number L ; case Number : LABEL_190 : if ( arm_feature ( @@a1@@ , Number ) ) return Number L ; v36 = load_reg ( @@a2@@ , v71 ) ; v8 = msr_mask ( @@a1@@ , ( __int64 ) @@a2@@ , BYTE1 ( @@v55@@ ) & Number , v81 == Number ) ; return ( unsigned int ) gen_set_psr ( @@a2@@ , v8 , v81 == Number , v36 ) != Number ; case Number : if ( ( ( @@v55@@ >> Number ) & Number ) == Number ) gen_nop_hint ( @@a2@@ , ( unsigned __int8 ) @@v55@@ ) ; return Number L ; case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) return Number L ; v82 = ( unsigned __int8 ) @@v55@@ >> Number ; if ( v82 == Number ) { gen_clrex ( ) ; return Number L ; } return ( unsigned __int8 ) ( ( unsigned __int8 ) @@v55@@ >> Number ) < Number || ( unsigned int ) ( v82 - Number ) > Number ; case Number : v37 = load_reg ( @@a2@@ , v71 ) ; gen_bx ( ( __int64 ) @@a2@@ , v37 ) ; return Number L ; case Number : case Number : return Number L ; case Number : v31 = new_tmp ( ) ; if ( arm_feature ( @@a1@@ , Number ) ) { v19 = tcg_const_i32 ( ( unsigned __int8 ) @@v55@@ ) ; gen_helper_v7m_mrs ( v31 , cpu_env , v19 ) ; tcg_temp_free_i32 ( v19 ) ; } else { gen_helper_cpsr_read ( v31 ) ; } goto LABEL_267 ; default : return Number L ; } } return Number L ; case Number : @@v10@@ = Number ; @@v11@@ = Number ; if ( ( @@v55@@ & Number ) == Number ) return ( unsigned int ) disas_neon_ls_insn ( @@a1@@ , @@a2@@ , @@v55@@ ) != Number ; if ( v71 == Number ) { v15 = new_tmp ( ) ; v53 = * @@a2@@ & Number ; if ( ( @@v55@@ & Number ) != Number ) v54 = ( @@v55@@ & Number ) + v53 ; else v54 = v53 - ( @@v55@@ & Number ) ; tcg_gen_movi_i32 ( v15 , v54 ) ; } else { v15 = load_reg ( @@a2@@ , v71 ) ; if ( ( @@v55@@ & Number ) != Number ) { v54 = @@v55@@ & Number ; tcg_gen_addi_i32 ( v15 , v15 , v54 ) ; } else { v54 = ( unsigned __int8 ) @@v55@@ ; switch ( ( @@v55@@ >> Number ) & Number ) { case Number : case Number : v89 = ( unsigned __int8 ) @@v55@@ >> Number ; if ( v89 > Number ) return Number L ; v38 = load_reg ( @@a2@@ , @@v75@@ ) ; if ( ( unsigned __int8 ) @@v55@@ >> Number ) tcg_gen_shli_i32 ( v38 , v38 , v89 ) ; tcg_gen_add_i32 ( v15 , v15 , v38 ) ; dead_tmp ( v38 ) ; break ; case Number : v54 = - ( unsigned __int8 ) @@v55@@ ; goto LABEL_289 ; case Number : LABEL_289 : @@v10@@ = Number ; @@v11@@ = Number ; break ; case Number : tcg_gen_addi_i32 ( v15 , v15 , - ( unsigned __int8 ) @@v55@@ ) ; break ; case Number : v54 = - ( unsigned __int8 ) @@v55@@ ; goto LABEL_291 ; case Number : tcg_gen_addi_i32 ( v15 , v15 , ( unsigned __int8 ) @@v55@@ ) ; break ; case Number : LABEL_291 : tcg_gen_addi_i32 ( v15 , v15 , v54 ) ; @@v11@@ = Number ; break ; default : return Number L ; } } } v84 = ( @@v55@@ >> Number ) & Number | ( @@v55@@ >> Number ) & Number ; if ( ( @@v55@@ & Number ) != Number ) { if ( @@v73@@ != Number || v84 == Number ) { switch ( v84 ) { case Number : v39 = gen_ld8u ( v15 , Number ) ; break ; case Number : v39 = gen_ld16u ( v15 , Number ) ; break ; case Number : v39 = gen_ld32 ( v15 , Number ) ; break ; case Number : v39 = gen_ld8s ( v15 , Number ) ; break ; case Number : v39 = gen_ld16s ( v15 , Number ) ; break ; default : return Number L ; } if ( @@v73@@ == Number ) gen_bx ( ( __int64 ) @@a2@@ , v39 ) ; else store_reg ( ( __int64 ) @@a2@@ , @@v73@@ , v39 ) ; } else if ( ( v84 & Number ) != Number ) { return Number L ; } } else { if ( @@v73@@ == Number ) return Number L ; v40 = load_reg ( @@a2@@ , @@v73@@ ) ; if ( v84 == Number ) { gen_st32 ( v40 , v15 , Number ) ; } else { if ( v84 > Number ) return Number L ; if ( v84 ) { if ( v84 != Number ) return Number L ; gen_st16 ( v40 , v15 , Number ) ; } else { gen_st8 ( v40 , v15 , Number ) ; } } } if ( @@v10@@ ) tcg_gen_addi_i32 ( v15 , v15 , v54 ) ; if ( ! @@v11@@ ) goto LABEL_318 ; goto LABEL_69 ; case Number : v78 = ( @@v55@@ >> Number ) & Number | ( @@v55@@ >> Number ) & Number ; if ( v78 <= Number && ( @@v55@@ & Number ) != Number ) return Number L ; switch ( v78 ) { case Number : v32 = load_reg ( @@a2@@ , v71 ) ; v59 = load_reg ( @@a2@@ , @@v75@@ ) ; if ( ( @@v55@@ & Number ) != Number ) return Number L ; gen_arm_shift_reg ( v32 , ( @@v55@@ >> Number ) & Number , v59 , ( @@v55@@ & Number ) != Number ) ; if ( ( @@v55@@ & Number ) != Number ) gen_logic_CC ( v32 ) ; store_reg_bx ( @@a1@@ , ( __int64 ) @@a2@@ , @@v74@@ , v32 ) ; return Number L ; case Number : v31 = load_reg ( @@a2@@ , @@v75@@ ) ; v86 = ( @@v55@@ >> Number ) & Number ; if ( v86 ) tcg_gen_rotri_i32 ( v31 , v31 , Number * v86 ) ; switch ( ( @@v55@@ >> Number ) & Number ) { case Number : tcg_gen_ext16s_i32 ( v31 , v31 ) ; break ; case Number : tcg_gen_ext16u_i32 ( v31 , v31 ) ; break ; case Number : gen_helper_sxtb16 ( v31 , v31 ) ; break ; case Number : gen_helper_uxtb16 ( v31 , v31 ) ; break ; case Number : tcg_gen_ext8s_i32 ( v31 , v31 ) ; break ; case Number : tcg_gen_ext8u_i32 ( v31 , v31 ) ; break ; default : return Number L ; } if ( v71 != Number ) { v60 = load_reg ( @@a2@@ , v71 ) ; if ( ( int ) ( ( @@v55@@ >> Number ) & Number ) >> Number == Number ) { gen_add16 ( v31 , v60 ) ; } else { tcg_gen_add_i32 ( v31 , v31 , v60 ) ; dead_tmp ( v60 ) ; } } goto LABEL_267 ; case Number : if ( ( ( @@v55@@ >> Number ) & Number ) == Number || ( ( @@v55@@ >> Number ) & Number ) == Number ) return Number L ; v33 = load_reg ( @@a2@@ , v71 ) ; v61 = load_reg ( @@a2@@ , @@v75@@ ) ; gen_thumb2_parallel_addsub ( ( @@v55@@ >> Number ) & Number , ( @@v55@@ >> Number ) & Number , v33 , v61 ) ; dead_tmp ( v61 ) ; store_reg ( ( __int64 ) @@a2@@ , @@v74@@ , v33 ) ; return Number L ; case Number : v79 = ( @@v55@@ >> Number ) & Number | ( @@v55@@ >> Number ) & Number ; if ( v79 > Number ) { v31 = load_reg ( @@a2@@ , v71 ) ; switch ( v79 ) { case Number : tcg_gen_bswap32_i32 ( v31 , v31 ) ; goto LABEL_267 ; case Number : gen_rev16 ( v31 ) ; goto LABEL_267 ; case Number : gen_helper_rbit ( v31 , v31 ) ; goto LABEL_267 ; case Number : gen_revsh ( v31 ) ; goto LABEL_267 ; case Number : v63 = load_reg ( @@a2@@ , @@v75@@ ) ; @@v85@@ = new_tmp ( ) ; tcg_gen_ld_i32 ( @@v85@@ , cpu_env , Number L ) ; gen_helper_sel_flags ( v31 , @@v85@@ , v31 , v63 ) ; dead_tmp ( @@v85@@ ) ; dead_tmp ( v63 ) ; goto LABEL_267 ; case Number : gen_helper_clz ( v31 , v31 ) ; goto LABEL_267 ; default : return Number L ; } } v31 = load_reg ( @@a2@@ , v71 ) ; v62 = load_reg ( @@a2@@ , @@v75@@ ) ; if ( ( v79 & Number ) != Number ) gen_helper_double_saturate ( v31 , v31 ) ; if ( ( v79 & Number ) != Number ) gen_helper_sub_saturate ( v31 , v62 , v31 ) ; else gen_helper_add_saturate ( v31 , v31 , v62 ) ; LABEL_111 : dead_tmp ( v62 ) ; goto LABEL_267 ; case Number : case Number : v31 = load_reg ( @@a2@@ , v71 ) ; v64 = load_reg ( @@a2@@ , @@v75@@ ) ; switch ( ( @@v55@@ >> Number ) & Number ) { case Number : tcg_gen_mul_i32 ( v31 , v31 , v64 ) ; dead_tmp ( v64 ) ; if ( @@v73@@ != Number ) { v62 = load_reg ( @@a2@@ , @@v73@@ ) ; if ( ! ( ( unsigned __int8 ) @@v55@@ >> Number ) ) goto LABEL_124 ; goto LABEL_123 ; } break ; case Number : gen_mulxy ( v31 , v64 , ( ( unsigned __int8 ) @@v55@@ >> Number ) & Number , ( @@v55@@ & Number ) != Number ) ; dead_tmp ( v64 ) ; if ( @@v73@@ != Number ) goto LABEL_138 ; break ; case Number : case Number : if ( ( unsigned __int8 ) @@v55@@ >> Number ) gen_swap_half ( v64 ) ; gen_smul_dual ( v31 , v64 ) ; if ( ( @@v55@@ & Number ) != Number ) tcg_gen_sub_i32 ( v31 , v31 , v64 ) ; else tcg_gen_add_i32 ( v31 , v31 , v64 ) ; dead_tmp ( v64 ) ; if ( @@v73@@ != Number ) goto LABEL_138 ; break ; case Number : if ( ( unsigned __int8 ) @@v55@@ >> Number ) tcg_gen_sari_i32 ( v64 , v64 , Number ) ; else tcg_gen_ext16s_i32 ( v64 , v64 ) ; v20 = gen_muls_i64_i32 ( v31 , v64 ) ; tcg_gen_shri_i64 ( v20 , v20 , Number L ) ; v31 = new_tmp ( ) ; tcg_gen_trunc_i64_i32 ( v31 , v20 ) ; tcg_temp_free_i64 ( v20 ) ; if ( @@v73@@ != Number ) { LABEL_138 : v65 = load_reg ( @@a2@@ , @@v73@@ ) ; gen_helper_add_setq ( v31 , v31 , v65 ) ; dead_tmp ( v65 ) ; } break ; case Number : case Number : gen_imull ( v31 , v64 ) ; if ( ( @@v55@@ & Number ) != Number ) { gen_roundqd ( v31 , v64 ) ; dead_tmp ( v64 ) ; } else { dead_tmp ( v31 ) ; v31 = v64 ; } if ( @@v73@@ != Number ) { v62 = load_reg ( @@a2@@ , @@v73@@ ) ; if ( ( @@v55@@ & Number ) != Number ) LABEL_124 : tcg_gen_add_i32 ( v31 , v31 , v62 ) ; else LABEL_123 : tcg_gen_sub_i32 ( v31 , v62 , v31 ) ; goto LABEL_111 ; } break ; case Number : gen_helper_usad8 ( v31 , v31 , v64 ) ; dead_tmp ( v64 ) ; if ( @@v73@@ != Number ) { v66 = load_reg ( @@a2@@ , @@v73@@ ) ; tcg_gen_add_i32 ( v31 , v31 , v66 ) ; dead_tmp ( v66 ) ; } break ; default : goto LABEL_267 ; } goto LABEL_267 ; case Number : case Number : v34 = load_reg ( @@a2@@ , v71 ) ; v67 = load_reg ( @@a2@@ , @@v75@@ ) ; if ( ( ( ( ( unsigned __int8 ) @@v55@@ >> Number ) | BYTE2 ( @@v55@@ ) & Number ) & Number ) == Number ) { if ( ! arm_feature ( @@a1@@ , Number ) ) return Number L ; if ( ( ( ( ( unsigned __int8 ) @@v55@@ >> Number ) | BYTE2 ( @@v55@@ ) & Number ) & Number ) != Number ) gen_helper_udiv ( v34 , v34 , v67 ) ; else gen_helper_sdiv ( v34 , v34 , v67 ) ; dead_tmp ( v67 ) ; store_reg ( ( __int64 ) @@a2@@ , @@v74@@ , v34 ) ; } else if ( ( ( ( ( unsigned __int8 ) @@v55@@ >> Number ) | BYTE2 ( @@v55@@ ) & Number ) & Number ) == Number ) { if ( ( ( ( ( unsigned __int8 ) @@v55@@ >> Number ) | BYTE2 ( @@v55@@ ) & Number ) & Number ) != Number ) gen_swap_half ( v67 ) ; gen_smul_dual ( v34 , v67 ) ; if ( ( ( ( ( unsigned __int8 ) @@v55@@ >> Number ) | BYTE2 ( @@v55@@ ) & Number ) & Number ) != Number ) tcg_gen_sub_i32 ( v34 , v34 , v67 ) ; else tcg_gen_add_i32 ( v34 , v34 , v67 ) ; dead_tmp ( v67 ) ; v21 = tcg_temp_new_i64 ( ) ; tcg_gen_ext_i32_i64 ( v21 , v34 ) ; dead_tmp ( v34 ) ; gen_addq ( @@a2@@ , v21 , @@v73@@ , @@v74@@ ) ; gen_storeq_reg ( ( __int64 ) @@a2@@ , @@v73@@ , @@v74@@ , v21 ) ; tcg_temp_free_i64 ( v21 ) ; } else { if ( ( ( ( ( unsigned __int8 ) @@v55@@ >> Number ) | BYTE2 ( @@v55@@ ) & Number ) & Number ) != Number ) { v22 = gen_mulu_i64_i32 ( v34 , v67 ) ; } else if ( ( ( ( ( unsigned __int8 ) @@v55@@ >> Number ) | BYTE2 ( @@v55@@ ) & Number ) & Number ) != Number ) { v80 = ( ( unsigned __int8 ) @@v55@@ >> Number ) | HIWORD ( @@v55@@ ) & Number ; gen_mulxy ( v34 , v67 , v80 & Number , v80 & Number ) ; dead_tmp ( v67 ) ; v22 = tcg_temp_new_i64 ( ) ; tcg_gen_ext_i32_i64 ( v22 , v34 ) ; dead_tmp ( v34 ) ; } else { v22 = gen_muls_i64_i32 ( v34 , v67 ) ; } if ( ( ( ( ( unsigned __int8 ) @@v55@@ >> Number ) | BYTE2 ( @@v55@@ ) & Number ) & Number ) != Number ) { gen_addq_lo ( @@a2@@ , v22 , @@v73@@ ) ; gen_addq_lo ( @@a2@@ , v22 , @@v74@@ ) ; } else if ( ( ( ( ( unsigned __int8 ) @@v55@@ >> Number ) | BYTE2 ( @@v55@@ ) & Number ) & Number ) != Number ) { gen_addq ( @@a2@@ , v22 , @@v73@@ , @@v74@@ ) ; } gen_storeq_reg ( ( __int64 ) @@a2@@ , @@v73@@ , @@v74@@ , v22 ) ; tcg_temp_free_i64 ( v22 ) ; } 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": "v12", "t": {"T": 1, "n": "int", "s": 4}, "location": "s100"}, {"n": "v11", "t": {"T": 1, "n": "int", "s": 4}, "location": "s104"}, {"n": "v10", "t": {"T": 1, "n": "int", "s": 4}, "location": "s108"}, {"n": "v85", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s44"}, {"n": "v75", "t": {"T": 1, "n": "int", "s": 4}, "location": "s52"}, {"n": "v74", "t": {"T": 1, "n": "int", "s": 4}, "location": "s56"}, {"n": "v73", "t": {"T": 1, "n": "int", "s": 4}, "location": "s60"}, {"n": "v55", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s72"}]}