{"name": "store_reg", "code": "unsigned __int64 __fastcall store_reg ( __int64 @@a1@@ , int @@a2@@ , unsigned int @@a3@@ ) { unsigned __int64 @@v5@@ ; @@v5@@ = __readfsqword ( Number ) ; if ( @@a2@@ == Number ) { tcg_gen_andi_i32 ( @@a3@@ , @@a3@@ , Number ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = Number ; } tcg_gen_mov_i32 ( cpu_R [ @@a2@@ ] , @@a3@@ ) ; tcg_temp_free_i32 ( @@a3@@ ) ; return __readfsqword ( Number ) ^ @@v5@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "int", "s": 4}, "location": "r64"}, {"n": "v5", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]}
{"name": "tcg_gen_mov_i32", "code": "unsigned __int64 __fastcall tcg_gen_mov_i32 ( int @@a1@@ , int @@a2@@ ) { unsigned __int64 @@v3@@ ; @@v3@@ = __readfsqword ( Number ) ; if ( @@a1@@ != @@a2@@ ) tcg_gen_op2_i32 ( 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": "tcg_gen_andi_i32", "code": "unsigned __int64 __fastcall tcg_gen_andi_i32 ( int @@a1@@ , int @@a2@@ , unsigned int @@a3@@ ) { unsigned int @@v4@@ ; unsigned __int64 @@v5@@ ; @@v5@@ = __readfsqword ( Number ) ; if ( @@a3@@ ) { if ( @@a3@@ == Number ) { tcg_gen_mov_i32 ( @@a1@@ , @@a2@@ ) ; } else { @@v4@@ = tcg_const_i32 ( @@a3@@ ) ; tcg_gen_and_i32 ( @@a1@@ , @@a2@@ , @@v4@@ ) ; tcg_temp_free_i32 ( @@v4@@ ) ; } } else { tcg_gen_movi_i32 ( @@a1@@ , Number ) ; } return __readfsqword ( Number ) ^ @@v5@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "int", "s": 4}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "int", "s": 4}, "location": "r64"}, {"n": "v4", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s12"}, {"n": "v5", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "store_reg_bx", "code": "unsigned __int64 __fastcall store_reg_bx ( __int64 @@a1@@ , __int64 @@a2@@ , int @@a3@@ , unsigned int @@a4@@ ) { unsigned __int64 @@v7@@ ; @@v7@@ = __readfsqword ( Number ) ; if ( @@a3@@ == Number && arm_feature ( @@a1@@ , Number ) ) gen_bx ( @@a2@@ , @@a4@@ ) ; else store_reg ( @@a2@@ , @@a3@@ , @@a4@@ ) ; return __readfsqword ( Number ) ^ @@v7@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "int", "s": 4}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r24"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}, {"n": "v7", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "store_reg_from_load", "code": "unsigned __int64 __fastcall store_reg_from_load ( __int64 @@a1@@ , __int64 @@a2@@ , int @@a3@@ , unsigned int @@a4@@ ) { unsigned __int64 @@v7@@ ; @@v7@@ = __readfsqword ( Number ) ; if ( @@a3@@ == Number && arm_feature ( @@a1@@ , Number ) ) gen_bx ( @@a2@@ , @@a4@@ ) ; else store_reg ( @@a2@@ , @@a3@@ , @@a4@@ ) ; return __readfsqword ( Number ) ^ @@v7@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "int", "s": 4}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r24"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}, {"n": "v7", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "neon_store_reg", "code": "unsigned __int64 __fastcall neon_store_reg ( int @@a1@@ , int @@a2@@ , unsigned int @@a3@@ ) { __int64 @@v3@@ ; unsigned __int64 @@v6@@ ; @@v6@@ = __readfsqword ( Number ) ; @@v3@@ = neon_reg_offset ( @@a1@@ , @@a2@@ ) ; tcg_gen_st_i32 ( @@a3@@ , cpu_env , @@v3@@ ) ; tcg_temp_free_i32 ( @@a3@@ ) ; return __readfsqword ( Number ) ^ @@v6@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r16"}, {"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": "__int64", "s": 8}, "location": "r8"}, {"n": "v6", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "neon_store_reg64", "code": "unsigned __int64 __fastcall neon_store_reg64 ( int @@a1@@ , int @@a2@@ ) { __int64 @@v2@@ ; unsigned __int64 @@v4@@ ; @@v4@@ = __readfsqword ( Number ) ; @@v2@@ = vfp_reg_offset ( Number , @@a2@@ ) ; tcg_gen_st_i64 ( @@a1@@ , cpu_env , @@v2@@ ) ; return __readfsqword ( Number ) ^ @@v4@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "int", "s": 4}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "int", "s": 4}, "location": "r64"}, {"n": "v2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "v4", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "iwmmxt_store_reg", "code": "unsigned __int64 __fastcall iwmmxt_store_reg ( int @@a1@@ , int @@a2@@ ) { unsigned __int64 @@v3@@ ; @@v3@@ = __readfsqword ( Number ) ; tcg_gen_st_i64 ( @@a1@@ , cpu_env , Number * ( @@a2@@ + Number L ) ) ; 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_op_iwmmxt_movq_wRn_M0", "code": "unsigned __int64 __fastcall gen_op_iwmmxt_movq_wRn_M0 ( int @@a1@@ ) { unsigned __int64 @@v2@@ ; @@v2@@ = __readfsqword ( Number ) ; iwmmxt_store_reg ( cpu_M0 , @@a1@@ ) ; return __readfsqword ( Number ) ^ @@v2@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "int", "s": 4}, "location": "r56"}, {"n": "v2", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "gen_iwmmxt_address", "code": "_BOOL8 __fastcall gen_iwmmxt_address ( _DWORD * @@a1@@ , unsigned int @@a2@@ , int @@a3@@ ) { unsigned int @@v5@@ ; unsigned int @@v6@@ ; @@v5@@ = load_reg ( @@a1@@ , HIWORD ( @@a2@@ ) & Number ) ; @@v6@@ = ( unsigned __int8 ) @@a2@@ << ( ( @@a2@@ >> Number ) & Number ) ; if ( ( @@a2@@ & Number ) != Number ) { if ( ( @@a2@@ & Number ) != Number ) tcg_gen_addi_i32 ( @@v5@@ , @@v5@@ , @@v6@@ ) ; else tcg_gen_addi_i32 ( @@v5@@ , @@v5@@ , - @@v6@@ ) ; tcg_gen_mov_i32 ( @@a3@@ , @@v5@@ ) ; if ( ( @@a2@@ & Number ) == Number ) { tcg_temp_free_i32 ( @@v5@@ ) ; return Number L ; } goto LABEL_6 ; } if ( ( @@a2@@ & Number ) != Number ) { tcg_gen_mov_i32 ( @@a3@@ , @@v5@@ ) ; if ( ( @@a2@@ & Number ) != Number ) tcg_gen_addi_i32 ( @@v5@@ , @@v5@@ , @@v6@@ ) ; else tcg_gen_addi_i32 ( @@v5@@ , @@v5@@ , - @@v6@@ ) ; LABEL_6 : store_reg ( ( __int64 ) @@a1@@ , HIWORD ( @@a2@@ ) & Number , @@v5@@ ) ; return Number L ; } return ( @@a2@@ & Number ) == Number ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "int", "s": 4}, "location": "r16"}, {"n": "a1", "t": {"T": 3, "t": "_DWORD"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r64"}, {"n": "v6", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s12"}, {"n": "v5", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s16"}]} {"name": "disas_iwmmxt_insn", "code": "__int64 __fastcall disas_iwmmxt_insn ( __int64 @@a1@@ , _DWORD * @@a2@@ , unsigned int @@a3@@ ) { __int64 result ; unsigned int v4 ; int v5 ; int v6 ; int v7 ; unsigned int v8 ; int v9 ; int v10 ; unsigned int v11 ; int v12 ; int v13 ; int v14 ; int v15 ; int v16 ; int v17 ; int v18 ; int v19 ; int v20 ; int v21 ; int v22 ; int v23 ; int v24 ; int v25 ; unsigned int v26 ; int v28 ; int j ; int i ; int l ; int k ; 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@@ ; int v55 ; int v56 ; int v57 ; int v58 ; int v59 ; int v60 ; int v61 ; int v62 ; int v63 ; int @@v64@@ ; int v65 ; int v66 ; int v67 ; int v68 ; int v69 ; int v70 ; int v71 ; int v72 ; int v73 ; int v74 ; int v75 ; int v76 ; int v77 ; int v78 ; int v79 ; int v80 ; int v81 ; unsigned int @@v82@@ ; int @@v83@@ ; int @@v84@@ ; if ( ( @@a3@@ & Number ) != Number ) { if ( ( @@a3@@ & Number ) != Number ) return Number L ; v4 = ( @@a3@@ >> Number ) & Number | ( unsigned __int8 ) ( @@a3@@ >> Number ) ; if ( v4 > Number ) return Number L ; if ( v4 < Number ) { if ( v4 > Number ) return Number L ; if ( v4 >= Number ) { switch ( v4 ) { case Number : case Number : LABEL_271 : if ( ( ( @@a3@@ >> Number ) & Number ) == Number ) return Number L ; v62 = ( unsigned __int16 ) @@a3@@ >> Number ; gen_op_iwmmxt_movq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; v46 = tcg_temp_new_i32 ( ) ; if ( ( unsigned int ) gen_iwmmxt_shift ( @@a3@@ , Number , v46 ) ) goto LABEL_314 ; v19 = ( @@a3@@ >> Number ) & Number ; switch ( v19 ) { case Number : gen_helper_iwmmxt_srlq ( cpu_M0 , cpu_env , cpu_M0 , v46 ) ; break ; case Number : gen_helper_iwmmxt_srlw ( cpu_M0 , cpu_env , cpu_M0 , v46 ) ; break ; case Number : gen_helper_iwmmxt_srll ( cpu_M0 , cpu_env , cpu_M0 , v46 ) ; break ; } goto LABEL_316 ; case Number : goto LABEL_369 ; case Number : LABEL_258 : v59 = ( unsigned __int16 ) @@a3@@ >> Number ; gen_op_iwmmxt_movq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; v18 = ( @@a3@@ >> Number ) & Number ; if ( v18 == Number ) return Number L ; if ( v18 == Number ) { if ( ( @@a3@@ & Number ) != Number ) gen_op_iwmmxt_unpackhsl_M0 ( ) ; else gen_op_iwmmxt_unpackhul_M0 ( ) ; } else if ( v18 ) { if ( ( @@a3@@ & Number ) != Number ) gen_op_iwmmxt_unpackhsw_M0 ( ) ; else gen_op_iwmmxt_unpackhuw_M0 ( ) ; } else if ( ( @@a3@@ & Number ) != Number ) { gen_op_iwmmxt_unpackhsb_M0 ( ) ; } else { gen_op_iwmmxt_unpackhub_M0 ( ) ; } goto LABEL_385 ; case Number : LABEL_245 : v59 = ( unsigned __int16 ) @@a3@@ >> Number ; gen_op_iwmmxt_movq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; v17 = ( @@a3@@ >> Number ) & Number ; if ( v17 == Number ) return Number L ; if ( v17 == Number ) { if ( ( @@a3@@ & Number ) != Number ) gen_op_iwmmxt_unpacklsl_M0 ( ) ; else gen_op_iwmmxt_unpacklul_M0 ( ) ; } else if ( v17 ) { if ( ( @@a3@@ & Number ) != Number ) gen_op_iwmmxt_unpacklsw_M0 ( ) ; else gen_op_iwmmxt_unpackluw_M0 ( ) ; } else if ( ( @@a3@@ & Number ) != Number ) { gen_op_iwmmxt_unpacklsb_M0 ( ) ; } else { gen_op_iwmmxt_unpacklub_M0 ( ) ; } goto LABEL_385 ; case Number : LABEL_330 : v58 = ( unsigned __int16 ) @@a3@@ >> Number ; v75 = @@a3@@ & Number ; gen_op_iwmmxt_movq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; v24 = ( @@a3@@ >> Number ) & Number ; if ( v24 == Number ) return Number L ; if ( v24 == Number ) { if ( ( @@a3@@ & Number ) != Number ) gen_op_iwmmxt_maxsl_M0_wRn ( v75 ) ; else gen_op_iwmmxt_maxul_M0_wRn ( v75 ) ; } else if ( v24 ) { if ( ( @@a3@@ & Number ) != Number ) gen_op_iwmmxt_maxsw_M0_wRn ( v75 ) ; else gen_op_iwmmxt_maxuw_M0_wRn ( v75 ) ; } else if ( ( @@a3@@ & Number ) != Number ) { gen_op_iwmmxt_maxsb_M0_wRn ( v75 ) ; } else { gen_op_iwmmxt_maxub_M0_wRn ( v75 ) ; } break ; case Number : goto LABEL_357 ; case Number : goto LABEL_344 ; case Number : goto LABEL_356 ; default : return Number L ; } } else { if ( v4 > Number ) return Number L ; if ( v4 >= Number ) { switch ( v4 ) { case Number : LABEL_131 : v59 = ( unsigned __int16 ) @@a3@@ >> Number ; v72 = @@a3@@ & Number ; gen_op_iwmmxt_movq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; if ( ( @@a3@@ & Number ) != Number ) { if ( ( @@a3@@ & Number ) != Number ) gen_op_iwmmxt_avgw1_M0_wRn ( v72 ) ; else gen_op_iwmmxt_avgw0_M0_wRn ( v72 ) ; } else if ( ( @@a3@@ & Number ) != Number ) { gen_op_iwmmxt_avgb1_M0_wRn ( v72 ) ; } else { gen_op_iwmmxt_avgb0_M0_wRn ( v72 ) ; } goto LABEL_385 ; case Number : LABEL_222 : v81 = ( unsigned __int16 ) @@a3@@ >> Number ; if ( ( @@a3@@ & Number ) != Number || ( ( @@a3@@ >> Number ) & Number ) == Number ) return Number L ; gen_op_iwmmxt_movq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; v42 = tcg_temp_new_i32 ( ) ; v15 = ( @@a3@@ >> Number ) & Number ; if ( v15 == Number ) { gen_helper_iwmmxt_msbl ( v42 , cpu_M0 ) ; } else if ( ( ( @@a3@@ >> Number ) & Number ) != Number ) { if ( v15 ) gen_helper_iwmmxt_msbw ( v42 , cpu_M0 ) ; else gen_helper_iwmmxt_msbb ( v42 , cpu_M0 ) ; } goto LABEL_231 ; case Number : case Number : LABEL_292 : if ( ( ( @@a3@@ >> Number ) & Number ) == Number ) return Number L ; v62 = ( unsigned __int16 ) @@a3@@ >> Number ; gen_op_iwmmxt_movq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; v46 = tcg_temp_new_i32 ( ) ; if ( ( unsigned int ) gen_iwmmxt_shift ( @@a3@@ , Number , v46 ) ) goto LABEL_314 ; v21 = ( @@a3@@ >> Number ) & Number ; switch ( v21 ) { case Number : gen_helper_iwmmxt_sllq ( cpu_M0 , cpu_env , cpu_M0 , v46 ) ; break ; case Number : gen_helper_iwmmxt_sllw ( cpu_M0 , cpu_env , cpu_M0 , v46 ) ; break ; case Number : gen_helper_iwmmxt_slll ( cpu_M0 , cpu_env , cpu_M0 , v46 ) ; break ; } goto LABEL_316 ; case Number : goto LABEL_232 ; case Number : LABEL_150 : v81 = ( unsigned __int16 ) @@a3@@ >> Number ; if ( v81 == Number || ( ( @@a3@@ >> Number ) & Number ) == Number ) return Number L ; gen_op_iwmmxt_movq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; v42 = tcg_temp_new_i32 ( ) ; v9 = ( @@a3@@ >> Number ) & Number ; if ( v9 == Number ) { tcg_gen_shri_i64 ( cpu_M0 , cpu_M0 , ( Number * ( _BYTE ) @@a3@@ ) & Number ) ; tcg_gen_trunc_i64_i32 ( v42 , cpu_M0 ) ; } else if ( ( ( @@a3@@ >> Number ) & Number ) != Number ) { if ( v9 ) { tcg_gen_shri_i64 ( cpu_M0 , cpu_M0 , ( Number * ( _BYTE ) @@a3@@ ) & Number ) ; tcg_gen_trunc_i64_i32 ( v42 , cpu_M0 ) ; if ( ( @@a3@@ & Number ) != Number ) tcg_gen_ext16s_i32 ( v42 , v42 ) ; else tcg_gen_andi_i32 ( v42 , v42 , Number ) ; } else { tcg_gen_shri_i64 ( cpu_M0 , cpu_M0 , ( Number * ( _BYTE ) @@a3@@ ) & Number ) ; tcg_gen_trunc_i64_i32 ( v42 , cpu_M0 ) ; if ( ( @@a3@@ & Number ) != Number ) tcg_gen_ext8s_i32 ( v42 , v42 ) ; else tcg_gen_andi_i32 ( v42 , v42 , Number ) ; } } LABEL_231 : store_reg ( ( __int64 ) @@a2@@ , v81 , v42 ) ; return Number L ; case Number : goto LABEL_369 ; case Number : LABEL_98 : v59 = ( unsigned __int16 ) @@a3@@ >> Number ; v67 = @@a3@@ & Number ; gen_op_iwmmxt_movq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; v6 = ( @@a3@@ >> Number ) & Number ; if ( v6 == Number ) return Number L ; if ( v6 == Number ) { gen_op_iwmmxt_unpackhl_M0_wRn ( v67 ) ; } else if ( v6 ) { gen_op_iwmmxt_unpackhw_M0_wRn ( v67 ) ; } else { gen_op_iwmmxt_unpackhb_M0_wRn ( v67 ) ; } goto LABEL_385 ; case Number : LABEL_91 : v59 = ( unsigned __int16 ) @@a3@@ >> Number ; v66 = @@a3@@ & Number ; gen_op_iwmmxt_movq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; v5 = ( @@a3@@ >> Number ) & Number ; if ( v5 == Number ) return Number L ; if ( v5 == Number ) { gen_op_iwmmxt_unpackll_M0_wRn ( v66 ) ; } else if ( v5 ) { gen_op_iwmmxt_unpacklw_M0_wRn ( v66 ) ; } else { gen_op_iwmmxt_unpacklb_M0_wRn ( v66 ) ; } goto LABEL_385 ; case Number : LABEL_183 : if ( ( @@a3@@ & Number ) != Number || ( ( @@a3@@ >> Number ) & Number ) == Number ) return Number L ; v45 = iwmmxt_load_creg ( Number ) ; v52 = tcg_temp_new_i32 ( ) ; tcg_gen_mov_i32 ( v52 , v45 ) ; v12 = ( @@a3@@ >> Number ) & Number ; if ( v12 == Number ) { tcg_gen_shli_i32 ( v52 , v52 , Number ) ; tcg_gen_and_i32 ( v45 , v45 , v52 ) ; } else if ( ( ( @@a3@@ >> Number ) & Number ) != Number ) { if ( v12 ) { for ( i = Number ; i <= Number ; ++ i ) { tcg_gen_shli_i32 ( v52 , v52 , Number ) ; tcg_gen_and_i32 ( v45 , v45 , v52 ) ; } } else { for ( j = Number ; j <= Number ; ++ j ) { tcg_gen_shli_i32 ( v52 , v52 , Number ) ; tcg_gen_and_i32 ( v45 , v45 , v52 ) ; } } } goto LABEL_198 ; case Number : LABEL_206 : if ( ( @@a3@@ & Number ) != Number || ( ( @@a3@@ >> Number ) & Number ) == Number ) return Number L ; v45 = iwmmxt_load_creg ( Number ) ; v52 = tcg_temp_new_i32 ( ) ; tcg_gen_mov_i32 ( v52 , v45 ) ; v14 = ( @@a3@@ >> Number ) & Number ; if ( v14 == Number ) { tcg_gen_shli_i32 ( v52 , v52 , Number ) ; tcg_gen_or_i32 ( v45 , v45 , v52 ) ; } else if ( ( ( @@a3@@ >> Number ) & Number ) != Number ) { if ( v14 ) { for ( k = Number ; k <= Number ; ++ k ) { tcg_gen_shli_i32 ( v52 , v52 , Number ) ; tcg_gen_or_i32 ( v45 , v45 , v52 ) ; } } else { for ( l = Number ; l <= Number ; ++ l ) { tcg_gen_shli_i32 ( v52 , v52 , Number ) ; tcg_gen_or_i32 ( v45 , v45 , v52 ) ; } } } LABEL_198 : gen_set_cpsr ( v45 , Number ) ; tcg_temp_free_i32 ( v52 ) ; tcg_temp_free_i32 ( v45 ) ; return Number L ; case Number : goto LABEL_317 ; case Number : LABEL_164 : if ( ( @@a3@@ & Number ) != Number || ( ( @@a3@@ >> Number ) & Number ) == Number ) return Number L ; v43 = iwmmxt_load_creg ( Number ) ; v10 = ( @@a3@@ >> Number ) & Number ; if ( v10 == Number ) { tcg_gen_shri_i32 ( v43 , v43 , ( ( Number * ( _BYTE ) @@a3@@ ) & Number ) + Number ) ; } else if ( ( ( @@a3@@ >> Number ) & Number ) != Number ) { if ( v10 ) tcg_gen_shri_i32 ( v43 , v43 , ( ( Number * ( _BYTE ) @@a3@@ ) & Number ) + Number ) ; else tcg_gen_shri_i32 ( v43 , v43 , ( Number * ( _BYTE ) @@a3@@ ) & Number ) ; } tcg_gen_shli_i32 ( v43 , v43 , Number ) ; gen_set_cpsr ( v43 , Number ) ; tcg_temp_free_i32 ( v43 ) ; break ; case Number : goto LABEL_357 ; case Number : goto LABEL_344 ; case Number : goto LABEL_356 ; default : return Number L ; } return Number L ; } if ( v4 > Number ) return Number L ; if ( v4 < Number ) { if ( v4 <= Number ) { if ( v4 >= Number ) { switch ( v4 ) { case Number : LABEL_138 : gen_op_iwmmxt_movq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; v40 = iwmmxt_load_creg ( ( ( @@a3@@ >> Number ) & Number ) + Number ) ; tcg_gen_andi_i32 ( v40 , v40 , Number ) ; iwmmxt_load_reg ( cpu_V1 , @@a3@@ & Number ) ; gen_helper_iwmmxt_align ( cpu_M0 , cpu_M0 , cpu_V1 , v40 ) ; tcg_temp_free_i32 ( v40 ) ; gen_op_iwmmxt_movq_wRn_M0 ( ( unsigned __int16 ) @@a3@@ >> Number ) ; gen_op_iwmmxt_set_mup ( ) ; return Number L ; case Number : case Number : goto LABEL_302 ; case Number : goto LABEL_232 ; case Number : goto LABEL_369 ; case Number : goto LABEL_317 ; case Number : goto LABEL_357 ; case Number : goto LABEL_344 ; case Number : goto LABEL_356 ; default : return Number L ; } } if ( v4 <= Number ) { if ( v4 >= Number ) { switch ( v4 ) { case Number : goto LABEL_138 ; case Number : case Number : goto LABEL_271 ; case Number : goto LABEL_369 ; case Number : goto LABEL_258 ; case Number : goto LABEL_245 ; case Number : LABEL_88 : v58 = ( unsigned __int16 ) @@a3@@ >> Number ; v65 = HIWORD ( @@a3@@ ) & Number ; gen_op_iwmmxt_movq_M0_wRn ( @@a3@@ & Number ) ; if ( ( @@a3@@ & Number ) != Number ) gen_op_iwmmxt_maddsq_M0_wRn ( v65 ) ; else gen_op_iwmmxt_madduq_M0_wRn ( v65 ) ; goto LABEL_123 ; case Number : goto LABEL_330 ; case Number : goto LABEL_357 ; case Number : goto LABEL_344 ; case Number : goto LABEL_356 ; default : return Number L ; } } if ( v4 <= Number ) { if ( v4 >= Number ) { switch ( v4 ) { case Number : goto LABEL_131 ; case Number : goto LABEL_138 ; case Number : goto LABEL_222 ; case Number : case Number : goto LABEL_292 ; case Number : goto LABEL_232 ; case Number : goto LABEL_150 ; case Number : goto LABEL_369 ; case Number : goto LABEL_98 ; case Number : goto LABEL_91 ; case Number : goto LABEL_183 ; case Number : goto LABEL_206 ; case Number : goto LABEL_317 ; case Number : goto LABEL_164 ; case Number : goto LABEL_357 ; case Number : goto LABEL_344 ; case Number : goto LABEL_356 ; default : return Number L ; } } if ( v4 <= Number ) { if ( v4 >= Number ) { switch ( v4 ) { case Number : goto LABEL_131 ; case Number : goto LABEL_138 ; case Number : case Number : goto LABEL_282 ; case Number : goto LABEL_124 ; case Number : goto LABEL_369 ; case Number : goto LABEL_258 ; case Number : goto LABEL_245 ; case Number : goto LABEL_88 ; case Number : goto LABEL_330 ; case Number : goto LABEL_357 ; case Number : goto LABEL_344 ; case Number : goto LABEL_199 ; case Number : goto LABEL_356 ; default : return Number L ; } } if ( v4 <= Number ) { if ( v4 >= Number ) { switch ( v4 ) { case Number : LABEL_343 : gen_op_iwmmxt_movq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; v47 = tcg_const_i32 ( ( @@a3@@ >> Number ) & Number ) ; iwmmxt_load_reg ( cpu_V1 , @@a3@@ & Number ) ; gen_helper_iwmmxt_align ( cpu_M0 , cpu_M0 , cpu_V1 , v47 ) ; tcg_temp_free_i32 ( v47 ) ; gen_op_iwmmxt_movq_wRn_M0 ( ( unsigned __int16 ) @@a3@@ >> Number ) ; gen_op_iwmmxt_set_mup ( ) ; return Number L ; case Number : case Number : goto LABEL_302 ; case Number : goto LABEL_232 ; case Number : goto LABEL_369 ; case Number : LABEL_118 : v58 = ( unsigned __int16 ) @@a3@@ >> Number ; v70 = @@a3@@ & Number ; gen_op_iwmmxt_movq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; if ( ( @@a3@@ & Number ) != Number ) gen_op_iwmmxt_macsw_M0_wRn ( v70 ) ; else gen_op_iwmmxt_macuw_M0_wRn ( v70 ) ; if ( ( @@a3@@ & Number ) == Number ) { iwmmxt_load_reg ( cpu_V1 , v58 ) ; tcg_gen_add_i64 ( cpu_M0 , cpu_M0 , cpu_V1 ) ; } goto LABEL_123 ; case Number : goto LABEL_317 ; case Number : goto LABEL_357 ; case Number : goto LABEL_344 ; case Number : goto LABEL_356 ; default : return Number L ; } } if ( v4 <= Number ) { if ( v4 >= Number ) { switch ( v4 ) { case Number : case Number : case Number : case Number : if ( ( unsigned __int8 ) @@a3@@ >> Number == Number ) return Number L ; v60 = HIWORD ( @@a3@@ ) & Number ; v41 = load_reg ( @@a2@@ , ( unsigned __int16 ) @@a3@@ >> Number ) ; gen_op_iwmmxt_movq_M0_wRn ( v60 ) ; v8 = ( unsigned __int8 ) @@a3@@ >> Number ; if ( v8 == Number ) { v51 = tcg_const_i32 ( Number ) ; @@v54@@ = tcg_const_i32 ( ( Number * ( _BYTE ) @@a3@@ ) & Number ) ; gen_helper_iwmmxt_insr ( cpu_M0 , cpu_M0 , v41 , v51 , @@v54@@ ) ; } else if ( v8 > Number ) { v51 = Number ; @@v54@@ = Number ; gen_helper_iwmmxt_insr ( cpu_M0 , cpu_M0 , v41 , Number , Number ) ; } else { if ( ( unsigned __int8 ) @@a3@@ >> Number ) { v51 = tcg_const_i32 ( Number ) ; @@v54@@ = tcg_const_i32 ( ( Number * ( _BYTE ) @@a3@@ ) & Number ) ; } else { v51 = tcg_const_i32 ( Number L ) ; @@v54@@ = tcg_const_i32 ( ( Number * ( _BYTE ) @@a3@@ ) & Number ) ; } gen_helper_iwmmxt_insr ( cpu_M0 , cpu_M0 , v41 , v51 , @@v54@@ ) ; } tcg_temp_free_i32 ( @@v54@@ ) ; tcg_temp_free_i32 ( v51 ) ; tcg_temp_free_i32 ( v41 ) ; gen_op_iwmmxt_movq_wRn_M0 ( v60 ) ; gen_op_iwmmxt_set_mup ( ) ; break ; case Number : goto LABEL_343 ; case Number : case Number : goto LABEL_271 ; case Number : goto LABEL_369 ; case Number : goto LABEL_258 ; case Number : goto LABEL_245 ; case Number : goto LABEL_118 ; case Number : goto LABEL_330 ; case Number : goto LABEL_357 ; case Number : goto LABEL_344 ; case Number : goto LABEL_356 ; default : return Number L ; } return Number L ; } if ( v4 <= Number ) { if ( v4 >= Number ) { switch ( v4 ) { case Number : case Number : case Number : case Number : if ( ( unsigned __int8 ) @@a3@@ >> Number == Number ) return Number L ; v61 = HIWORD ( @@a3@@ ) & Number ; v44 = load_reg ( @@a2@@ , ( unsigned __int16 ) @@a3@@ >> Number ) ; v11 = ( unsigned __int8 ) @@a3@@ >> Number ; if ( v11 == Number ) { gen_helper_iwmmxt_bcstl ( cpu_M0 , v44 ) ; } else if ( v11 <= Number ) { if ( ( unsigned __int8 ) @@a3@@ >> Number ) gen_helper_iwmmxt_bcstw ( cpu_M0 , v44 ) ; else gen_helper_iwmmxt_bcstb ( cpu_M0 , v44 ) ; } tcg_temp_free_i32 ( v44 ) ; gen_op_iwmmxt_movq_wRn_M0 ( v61 ) ; gen_op_iwmmxt_set_mup ( ) ; break ; case Number : case Number : goto LABEL_343 ; case Number : case Number : goto LABEL_282 ; case Number : goto LABEL_124 ; case Number : case Number : goto LABEL_369 ; case Number : goto LABEL_258 ; case Number : goto LABEL_245 ; case Number : case Number : goto LABEL_118 ; case Number : case Number : LABEL_105 : v58 = ( unsigned __int16 ) @@a3@@ >> Number ; v68 = @@a3@@ & Number ; gen_op_iwmmxt_movq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; if ( ( @@a3@@ & Number ) != Number ) gen_op_iwmmxt_sadw_M0_wRn ( v68 ) ; else gen_op_iwmmxt_sadb_M0_wRn ( v68 ) ; if ( ( @@a3@@ & Number ) == Number ) gen_op_iwmmxt_addl_M0_wRn ( v58 ) ; goto LABEL_123 ; case Number : goto LABEL_330 ; case Number : case Number : goto LABEL_357 ; case Number : case Number : goto LABEL_344 ; case Number : goto LABEL_199 ; case Number : case Number : goto LABEL_356 ; case Number : goto LABEL_222 ; case Number : case Number : goto LABEL_292 ; case Number : goto LABEL_232 ; case Number : goto LABEL_150 ; case Number : goto LABEL_98 ; case Number : goto LABEL_91 ; case Number : goto LABEL_183 ; case Number : goto LABEL_206 ; case Number : goto LABEL_317 ; case Number : goto LABEL_164 ; default : return Number L ; } return Number L ; } if ( v4 <= Number ) { switch ( v4 ) { case Number : gen_op_iwmmxt_movq_M0_wRn ( @@a3@@ & Number ) ; gen_op_iwmmxt_orq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; gen_op_iwmmxt_setpsr_nz ( ) ; gen_op_iwmmxt_movq_wRn_M0 ( ( unsigned __int16 ) @@a3@@ >> Number ) ; gen_op_iwmmxt_set_mup ( ) ; gen_op_iwmmxt_set_cup ( ) ; return Number L ; case Number : case Number : goto LABEL_343 ; case Number : case Number : goto LABEL_282 ; case Number : goto LABEL_124 ; case Number : case Number : goto LABEL_369 ; case Number : goto LABEL_258 ; case Number : goto LABEL_245 ; case Number : case Number : goto LABEL_111 ; case Number : if ( ( @@a3@@ & Number ) == Number ) { v80 = ( unsigned __int16 ) @@a3@@ >> Number ; v57 = HIWORD ( @@a3@@ ) & Number ; switch ( v57 ) { case Number : case Number : return Number L ; case Number : gen_op_iwmmxt_set_cup ( ) ; goto LABEL_79 ; case Number : LABEL_79 : v37 = iwmmxt_load_creg ( v57 ) ; v50 = load_reg ( @@a2@@ , v80 ) ; tcg_gen_andc_i32 ( v37 , v37 , v50 ) ; tcg_temp_free_i32 ( v50 ) ; iwmmxt_store_creg ( v57 , v37 ) ; return Number L ; case Number : case Number : case Number : case Number : gen_op_iwmmxt_set_cup ( ) ; v38 = load_reg ( @@a2@@ , v80 ) ; iwmmxt_store_creg ( v57 , v38 ) ; return Number L ; default : return Number L ; } } return Number L ; case Number : case Number : goto LABEL_105 ; case Number : goto LABEL_330 ; case Number : case Number : goto LABEL_357 ; case Number : case Number : goto LABEL_344 ; case Number : goto LABEL_199 ; case Number : case Number : goto LABEL_356 ; case Number : gen_op_iwmmxt_movq_M0_wRn ( @@a3@@ & Number ) ; gen_op_iwmmxt_xorq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; gen_op_iwmmxt_setpsr_nz ( ) ; gen_op_iwmmxt_movq_wRn_M0 ( ( unsigned __int16 ) @@a3@@ >> Number ) ; gen_op_iwmmxt_set_mup ( ) ; gen_op_iwmmxt_set_cup ( ) ; return Number L ; case Number : goto LABEL_222 ; case Number : case Number : goto LABEL_292 ; case Number : goto LABEL_232 ; case Number : goto LABEL_150 ; case Number : goto LABEL_98 ; case Number : goto LABEL_91 ; case Number : if ( ( @@a3@@ & Number ) != Number ) return Number L ; v39 = iwmmxt_load_creg ( HIWORD ( @@a3@@ ) & Number ) ; store_reg ( ( __int64 ) @@a2@@ , ( unsigned __int16 ) @@a3@@ >> Number , v39 ) ; break ; case Number : goto LABEL_183 ; case Number : goto LABEL_206 ; case Number : goto LABEL_317 ; case Number : goto LABEL_164 ; default : return Number L ; } return Number L ; } if ( v4 <= Number && v4 >= Number ) { switch ( v4 ) { case Number : gen_op_iwmmxt_movq_M0_wRn ( @@a3@@ & Number ) ; gen_op_iwmmxt_andq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; gen_op_iwmmxt_setpsr_nz ( ) ; gen_op_iwmmxt_movq_wRn_M0 ( ( unsigned __int16 ) @@a3@@ >> Number ) ; gen_op_iwmmxt_set_mup ( ) ; gen_op_iwmmxt_set_cup ( ) ; return Number L ; case Number : case Number : case Number : case Number : case Number : case Number : case Number : case Number : case Number : case Number : case Number : case Number : case Number : case Number : case Number : case Number : v63 = ( @@a3@@ >> Number ) & Number ; @@v64@@ = ( unsigned __int16 ) @@a3@@ >> Number ; v79 = @@a3@@ & Number ; if ( @@v64@@ == Number || v79 == Number ) return Number L ; gen_op_iwmmxt_movq_M0_wRn ( v63 ) ; v49 = load_reg ( @@a2@@ , @@v64@@ ) ; v53 = load_reg ( @@a2@@ , v79 ) ; v26 = HIWORD ( @@a3@@ ) & Number ; if ( v26 >= Number ) { if ( ( @@a3@@ & Number ) != Number ) tcg_gen_shri_i32 ( v49 , v49 , Number ) ; if ( ( @@a3@@ & Number ) != Number ) tcg_gen_shri_i32 ( v53 , v53 , Number ) ; gen_helper_iwmmxt_muladdswl ( cpu_M0 , cpu_M0 , v49 , v53 ) ; } else if ( v26 ) { if ( v26 != Number ) { tcg_temp_free_i32 ( v53 ) ; tcg_temp_free_i32 ( v49 ) ; return Number L ; } gen_helper_iwmmxt_muladdsw ( cpu_M0 , cpu_M0 , v49 , v53 ) ; } else { gen_helper_iwmmxt_muladdsl ( cpu_M0 , cpu_M0 , v49 , v53 ) ; } tcg_temp_free_i32 ( v53 ) ; tcg_temp_free_i32 ( v49 ) ; gen_op_iwmmxt_movq_wRn_M0 ( v63 ) ; gen_op_iwmmxt_set_mup ( ) ; break ; case Number : case Number : goto LABEL_343 ; case Number : case Number : goto LABEL_271 ; case Number : case Number : goto LABEL_369 ; case Number : goto LABEL_258 ; case Number : goto LABEL_245 ; case Number : case Number : LABEL_111 : v58 = ( unsigned __int16 ) @@a3@@ >> Number ; v69 = @@a3@@ & Number ; gen_op_iwmmxt_movq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; if ( ( @@a3@@ & Number ) != Number ) { if ( ( @@a3@@ & Number ) != Number ) gen_op_iwmmxt_mulshw_M0_wRn ( v69 ) ; else gen_op_iwmmxt_mulslw_M0_wRn ( v69 ) ; } else if ( ( @@a3@@ & Number ) != Number ) { gen_op_iwmmxt_muluhw_M0_wRn ( v69 ) ; } else { gen_op_iwmmxt_mululw_M0_wRn ( v69 ) ; } goto LABEL_123 ; case Number : goto LABEL_330 ; case Number : case Number : goto LABEL_357 ; case Number : case Number : goto LABEL_344 ; case Number : case Number : goto LABEL_356 ; case Number : gen_op_iwmmxt_movq_M0_wRn ( @@a3@@ & Number ) ; tcg_gen_neg_i64 ( cpu_M0 , cpu_M0 ) ; gen_op_iwmmxt_andq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; gen_op_iwmmxt_setpsr_nz ( ) ; gen_op_iwmmxt_movq_wRn_M0 ( ( unsigned __int16 ) @@a3@@ >> Number ) ; gen_op_iwmmxt_set_mup ( ) ; gen_op_iwmmxt_set_cup ( ) ; return Number L ; case Number : case Number : goto LABEL_302 ; case Number : goto LABEL_232 ; case Number : goto LABEL_317 ; default : return Number L ; } return Number L ; } } } } } } } } return Number L ; } switch ( v4 ) { case Number : goto LABEL_131 ; case Number : case Number : LABEL_282 : if ( ( ( @@a3@@ >> Number ) & Number ) == Number ) return Number L ; v62 = ( unsigned __int16 ) @@a3@@ >> Number ; gen_op_iwmmxt_movq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; v46 = tcg_temp_new_i32 ( ) ; if ( ( unsigned int ) gen_iwmmxt_shift ( @@a3@@ , Number , v46 ) ) goto LABEL_314 ; v20 = ( @@a3@@ >> Number ) & Number ; switch ( v20 ) { case Number : gen_helper_iwmmxt_sraq ( cpu_M0 , cpu_env , cpu_M0 , v46 ) ; break ; case Number : gen_helper_iwmmxt_sraw ( cpu_M0 , cpu_env , cpu_M0 , v46 ) ; break ; case Number : gen_helper_iwmmxt_sral ( cpu_M0 , cpu_env , cpu_M0 , v46 ) ; break ; } goto LABEL_316 ; case Number : LABEL_124 : v59 = ( unsigned __int16 ) @@a3@@ >> Number ; v71 = @@a3@@ & Number ; gen_op_iwmmxt_movq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; v7 = ( @@a3@@ >> Number ) & Number ; if ( v7 == Number ) return Number L ; if ( v7 == Number ) { gen_op_iwmmxt_cmpeql_M0_wRn ( v71 ) ; } else if ( v7 ) { gen_op_iwmmxt_cmpeqw_M0_wRn ( v71 ) ; } else { gen_op_iwmmxt_cmpeqb_M0_wRn ( v71 ) ; } goto LABEL_385 ; case Number : goto LABEL_369 ; case Number : goto LABEL_258 ; case Number : goto LABEL_245 ; case Number : goto LABEL_330 ; case Number : goto LABEL_357 ; case Number : goto LABEL_344 ; case Number : LABEL_199 : v58 = ( unsigned __int16 ) @@a3@@ >> Number ; gen_op_iwmmxt_movq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; v13 = ( @@a3@@ >> Number ) & Number ; if ( v13 == Number ) return Number L ; if ( v13 == Number ) { gen_helper_iwmmxt_addcl ( cpu_M0 , cpu_M0 ) ; } else if ( v13 ) { gen_helper_iwmmxt_addcw ( cpu_M0 , cpu_M0 ) ; } else { gen_helper_iwmmxt_addcb ( cpu_M0 , cpu_M0 ) ; } break ; case Number : goto LABEL_356 ; default : return Number L ; } } LABEL_123 : gen_op_iwmmxt_movq_wRn_M0 ( v58 ) ; gen_op_iwmmxt_set_mup ( ) ; return Number L ; } switch ( v4 ) { case Number : case Number : LABEL_302 : if ( ( ( @@a3@@ >> Number ) & Number ) == Number ) return Number L ; v62 = ( unsigned __int16 ) @@a3@@ >> Number ; gen_op_iwmmxt_movq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; v46 = tcg_temp_new_i32 ( ) ; v22 = ( @@a3@@ >> Number ) & Number ; switch ( v22 ) { case Number : if ( ! ( unsigned int ) gen_iwmmxt_shift ( @@a3@@ , Number , v46 ) ) { gen_helper_iwmmxt_rorq ( cpu_M0 , cpu_env , cpu_M0 , v46 ) ; goto LABEL_316 ; } break ; case Number : if ( ! ( unsigned int ) gen_iwmmxt_shift ( @@a3@@ , Number , v46 ) ) { gen_helper_iwmmxt_rorw ( cpu_M0 , cpu_env , cpu_M0 , v46 ) ; LABEL_316 : tcg_temp_free_i32 ( v46 ) ; gen_op_iwmmxt_movq_wRn_M0 ( v62 ) ; gen_op_iwmmxt_set_mup ( ) ; gen_op_iwmmxt_set_cup ( ) ; return Number L ; } break ; case Number : if ( ! ( unsigned int ) gen_iwmmxt_shift ( @@a3@@ , Number , v46 ) ) { gen_helper_iwmmxt_rorl ( cpu_M0 , cpu_env , cpu_M0 , v46 ) ; goto LABEL_316 ; } break ; default : goto LABEL_316 ; } LABEL_314 : tcg_temp_free_i32 ( v46 ) ; return Number L ; case Number : LABEL_232 : v59 = ( unsigned __int16 ) @@a3@@ >> Number ; v73 = @@a3@@ & Number ; gen_op_iwmmxt_movq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; v16 = ( @@a3@@ >> Number ) & Number ; if ( v16 == Number ) return Number L ; if ( v16 == Number ) { if ( ( @@a3@@ & Number ) != Number ) gen_op_iwmmxt_cmpgtsl_M0_wRn ( v73 ) ; else gen_op_iwmmxt_cmpgtul_M0_wRn ( v73 ) ; } else if ( v16 ) { if ( ( @@a3@@ & Number ) != Number ) gen_op_iwmmxt_cmpgtsw_M0_wRn ( v73 ) ; else gen_op_iwmmxt_cmpgtuw_M0_wRn ( v73 ) ; } else if ( ( @@a3@@ & Number ) != Number ) { gen_op_iwmmxt_cmpgtsb_M0_wRn ( v73 ) ; } else { gen_op_iwmmxt_cmpgtub_M0_wRn ( v73 ) ; } goto LABEL_385 ; case Number : LABEL_369 : if ( ( @@a3@@ & Number ) == Number || ( ( @@a3@@ >> Number ) & Number ) == Number ) return Number L ; v59 = ( unsigned __int16 ) @@a3@@ >> Number ; v78 = @@a3@@ & Number ; gen_op_iwmmxt_movq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; v25 = ( @@a3@@ >> Number ) & Number ; switch ( v25 ) { case Number : if ( ( @@a3@@ & Number ) != Number ) gen_op_iwmmxt_packsq_M0_wRn ( v78 ) ; else gen_op_iwmmxt_packuq_M0_wRn ( v78 ) ; break ; case Number : if ( ( @@a3@@ & Number ) != Number ) gen_op_iwmmxt_packsw_M0_wRn ( v78 ) ; else gen_op_iwmmxt_packuw_M0_wRn ( v78 ) ; break ; case Number : if ( ( @@a3@@ & Number ) != Number ) gen_op_iwmmxt_packsl_M0_wRn ( v78 ) ; else gen_op_iwmmxt_packul_M0_wRn ( v78 ) ; break ; } LABEL_385 : gen_op_iwmmxt_movq_wRn_M0 ( v59 ) ; gen_op_iwmmxt_set_mup ( ) ; gen_op_iwmmxt_set_cup ( ) ; return Number L ; case Number : LABEL_317 : v58 = ( unsigned __int16 ) @@a3@@ >> Number ; v74 = @@a3@@ & Number ; gen_op_iwmmxt_movq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; v23 = ( @@a3@@ >> Number ) & Number ; if ( v23 == Number ) return Number L ; if ( v23 == Number ) { if ( ( @@a3@@ & Number ) != Number ) gen_op_iwmmxt_minsl_M0_wRn ( v74 ) ; else gen_op_iwmmxt_minul_M0_wRn ( v74 ) ; } else if ( v23 ) { if ( ( @@a3@@ & Number ) != Number ) gen_op_iwmmxt_minsw_M0_wRn ( v74 ) ; else gen_op_iwmmxt_minuw_M0_wRn ( v74 ) ; } else if ( ( @@a3@@ & Number ) != Number ) { gen_op_iwmmxt_minsb_M0_wRn ( v74 ) ; } else { gen_op_iwmmxt_minub_M0_wRn ( v74 ) ; } goto LABEL_123 ; case Number : LABEL_357 : v59 = ( unsigned __int16 ) @@a3@@ >> Number ; v77 = @@a3@@ & Number ; gen_op_iwmmxt_movq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; switch ( ( @@a3@@ >> Number ) & Number ) { case Number : gen_op_iwmmxt_addnb_M0_wRn ( v77 ) ; goto LABEL_385 ; case Number : gen_op_iwmmxt_addub_M0_wRn ( v77 ) ; goto LABEL_385 ; case Number : gen_op_iwmmxt_addsb_M0_wRn ( v77 ) ; goto LABEL_385 ; case Number : gen_op_iwmmxt_addnw_M0_wRn ( v77 ) ; goto LABEL_385 ; case Number : gen_op_iwmmxt_adduw_M0_wRn ( v77 ) ; goto LABEL_385 ; case Number : gen_op_iwmmxt_addsw_M0_wRn ( v77 ) ; goto LABEL_385 ; case Number : gen_op_iwmmxt_addnl_M0_wRn ( v77 ) ; goto LABEL_385 ; case Number : gen_op_iwmmxt_addul_M0_wRn ( v77 ) ; goto LABEL_385 ; case Number : gen_op_iwmmxt_addsl_M0_wRn ( v77 ) ; goto LABEL_385 ; default : result = Number L ; break ; } return result ; case Number : LABEL_344 : v59 = ( unsigned __int16 ) @@a3@@ >> Number ; v76 = @@a3@@ & Number ; gen_op_iwmmxt_movq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; switch ( ( @@a3@@ >> Number ) & Number ) { case Number : gen_op_iwmmxt_subnb_M0_wRn ( v76 ) ; goto LABEL_385 ; case Number : gen_op_iwmmxt_subub_M0_wRn ( v76 ) ; goto LABEL_385 ; case Number : gen_op_iwmmxt_subsb_M0_wRn ( v76 ) ; goto LABEL_385 ; case Number : gen_op_iwmmxt_subnw_M0_wRn ( v76 ) ; goto LABEL_385 ; case Number : gen_op_iwmmxt_subuw_M0_wRn ( v76 ) ; goto LABEL_385 ; case Number : gen_op_iwmmxt_subsw_M0_wRn ( v76 ) ; goto LABEL_385 ; case Number : gen_op_iwmmxt_subnl_M0_wRn ( v76 ) ; goto LABEL_385 ; case Number : gen_op_iwmmxt_subul_M0_wRn ( v76 ) ; goto LABEL_385 ; case Number : gen_op_iwmmxt_subsl_M0_wRn ( v76 ) ; goto LABEL_385 ; default : result = Number L ; break ; } return result ; case Number : LABEL_356 : gen_op_iwmmxt_movq_M0_wRn ( HIWORD ( @@a3@@ ) & Number ) ; v48 = tcg_const_i32 ( HIWORD ( @@a3@@ ) & Number | @@a3@@ & Number ) ; gen_helper_iwmmxt_shufh ( cpu_M0 , cpu_env , cpu_M0 , v48 ) ; tcg_temp_free_i32 ( v48 ) ; gen_op_iwmmxt_movq_wRn_M0 ( ( unsigned __int16 ) @@a3@@ >> Number ) ; gen_op_iwmmxt_set_mup ( ) ; gen_op_iwmmxt_set_cup ( ) ; return Number L ; default : return Number L ; } } if ( ( @@a3@@ & Number ) == Number ) { v55 = @@a3@@ & Number ; @@v83@@ = ( unsigned __int16 ) @@a3@@ >> Number ; @@v84@@ = HIWORD ( @@a3@@ ) & Number ; if ( ( @@a3@@ & Number ) != Number ) { iwmmxt_load_reg ( cpu_V0 , v55 ) ; tcg_gen_trunc_i64_i32 ( cpu_R [ @@v83@@ ] , cpu_V0 ) ; tcg_gen_shri_i64 ( cpu_V0 , cpu_V0 , Number L ) ; tcg_gen_trunc_i64_i32 ( cpu_R [ @@v84@@ ] , cpu_V0 ) ; } else { tcg_gen_concat_i32_i64 ( cpu_V0 , cpu_R [ ( unsigned __int16 ) @@a3@@ >> Number ] , cpu_R [ @@v84@@ ] ) ; iwmmxt_store_reg ( cpu_V0 , v55 ) ; gen_op_iwmmxt_set_mup ( ) ; } result = Number L ; } else { v56 = ( unsigned __int16 ) @@a3@@ >> Number ; @@v82@@ = tcg_temp_new_i32 ( ) ; if ( gen_iwmmxt_address ( @@a2@@ , @@a3@@ , @@v82@@ ) ) { tcg_temp_free_i32 ( @@v82@@ ) ; result = Number L ; } else { if ( ( @@a3@@ & Number ) != Number ) { if ( @@a3@@ >> Number == Number ) { v34 = tcg_temp_new_i32 ( ) ; tcg_gen_qemu_ld32u ( v34 , @@v82@@ , Number ) ; iwmmxt_store_creg ( v56 , v34 ) ; } else { v28 = Number ; if ( ( @@a3@@ & Number ) != Number ) { if ( ( @@a3@@ & Number ) != Number ) { tcg_gen_qemu_ld64 ( cpu_M0 , @@v82@@ , Number ) ; v28 = Number ; } else { v33 = gen_ld32 ( @@v82@@ , Number ) ; } } else if ( ( @@a3@@ & Number ) != Number ) { v33 = gen_ld16u ( @@v82@@ , Number ) ; } else { v33 = gen_ld8u ( @@v82@@ , Number ) ; } if ( v28 ) { tcg_gen_extu_i32_i64 ( cpu_M0 , v33 ) ; tcg_temp_free_i32 ( v33 ) ; } gen_op_iwmmxt_movq_wRn_M0 ( v56 ) ; } } else if ( @@a3@@ >> Number == Number ) { v35 = iwmmxt_load_creg ( v56 ) ; gen_st32 ( v35 , @@v82@@ , Number ) ; } else { gen_op_iwmmxt_movq_M0_wRn ( v56 ) ; v36 = tcg_temp_new_i32 ( ) ; if ( ( @@a3@@ & Number ) != Number ) { if ( ( @@a3@@ & Number ) != Number ) { tcg_temp_free_i32 ( v36 ) ; tcg_gen_qemu_st64 ( cpu_M0 , @@v82@@ , Number ) ; } else { tcg_gen_trunc_i64_i32 ( v36 , cpu_M0 ) ; gen_st32 ( v36 , @@v82@@ , Number ) ; } } else { tcg_gen_trunc_i64_i32 ( v36 , cpu_M0 ) ; if ( ( @@a3@@ & Number ) != Number ) gen_st16 ( v36 , @@v82@@ , Number ) ; else gen_st8 ( v36 , @@v82@@ , Number ) ; } } tcg_temp_free_i32 ( @@v82@@ ) ; result = Number L ; } } return result ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "_DWORD"}, "location": "r64"}, {"n": "v84", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}, {"n": "v83", "t": {"T": 1, "n": "int", "s": 4}, "location": "s16"}, {"n": "v82", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s20"}, {"n": "v64", "t": {"T": 1, "n": "int", "s": 4}, "location": "s32"}, {"n": "v54", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s40"}]} {"name": "disas_dsp_insn", "code": "__int64 __fastcall disas_dsp_insn ( __int64 @@a1@@ , _DWORD * @@a2@@ , unsigned int @@a3@@ ) { __int64 result ; unsigned int v4 ; int @@v6@@ ; int @@v7@@ ; int v8 ; int v9 ; int @@v10@@ ; unsigned int @@v11@@ ; unsigned int @@v12@@ ; if ( ( @@a3@@ & Number ) == Number ) { @@v10@@ = @@a3@@ & Number ; v8 = ( unsigned __int8 ) @@a3@@ >> Number ; if ( ( unsigned __int8 ) @@a3@@ >> Number ) return Number L ; @@v11@@ = load_reg ( @@a2@@ , ( unsigned __int16 ) @@a3@@ >> Number ) ; @@v12@@ = load_reg ( @@a2@@ , @@v10@@ ) ; v4 = HIWORD ( @@a3@@ ) & Number ; if ( v4 >= Number ) { if ( ( @@a3@@ & Number ) != Number ) tcg_gen_shri_i32 ( @@v11@@ , @@v11@@ , Number ) ; if ( ( @@a3@@ & Number ) != Number ) tcg_gen_shri_i32 ( @@v12@@ , @@v12@@ , Number ) ; gen_helper_iwmmxt_muladdswl ( cpu_M0 , cpu_M0 , @@v11@@ , @@v12@@ ) ; } else if ( v4 ) { if ( v4 != Number ) return Number L ; gen_helper_iwmmxt_muladdsw ( cpu_M0 , cpu_M0 , @@v11@@ , @@v12@@ ) ; } else { gen_helper_iwmmxt_muladdsl ( cpu_M0 , cpu_M0 , @@v11@@ , @@v12@@ ) ; } tcg_temp_free_i32 ( @@v12@@ ) ; tcg_temp_free_i32 ( @@v11@@ ) ; gen_op_iwmmxt_movq_wRn_M0 ( v8 ) ; result = Number L ; } else if ( ( @@a3@@ & Number ) == Number ) { @@v6@@ = HIWORD ( @@a3@@ ) & Number ; @@v7@@ = ( unsigned __int16 ) @@a3@@ >> Number ; v9 = @@a3@@ & Number ; if ( ( @@a3@@ & Number ) != Number ) { result = Number L ; } else { if ( ( @@a3@@ & Number ) != Number ) { iwmmxt_load_reg ( cpu_V0 , v9 ) ; tcg_gen_trunc_i64_i32 ( cpu_R [ @@v7@@ ] , cpu_V0 ) ; tcg_gen_shri_i64 ( cpu_V0 , cpu_V0 , Number L ) ; tcg_gen_trunc_i64_i32 ( cpu_R [ @@v6@@ ] , cpu_V0 ) ; tcg_gen_andi_i32 ( cpu_R [ @@v6@@ ] , cpu_R [ @@v6@@ ] , Number ) ; } else { tcg_gen_concat_i32_i64 ( cpu_V0 , cpu_R [ ( unsigned __int16 ) @@a3@@ >> Number ] , cpu_R [ @@v6@@ ] ) ; iwmmxt_store_reg ( cpu_V0 , v9 ) ; } result = Number L ; } } else { result = Number L ; } return result ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "_DWORD"}, "location": "r64"}, {"n": "v12", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s12"}, {"n": "v11", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s16"}, {"n": "v10", "t": {"T": 1, "n": "int", "s": 4}, "location": "s20"}, {"n": "v7", "t": {"T": 1, "n": "int", "s": 4}, "location": "s32"}, {"n": "v6", "t": {"T": 1, "n": "int", "s": 4}, "location": "s36"}]} {"name": "cp15_tls_load_store", "code": "__int64 __fastcall cp15_tls_load_store ( __int64 @@a1@@ , _DWORD * @@a2@@ , unsigned int @@a3@@ , int @@a4@@ ) { unsigned int v7 ; unsigned int v8 ; unsigned int v9 ; unsigned int v10 ; int @@v11@@ ; int @@v12@@ ; int @@v13@@ ; @@v11@@ = HIWORD ( @@a3@@ ) & Number ; @@v12@@ = @@a3@@ & Number ; @@v13@@ = ( ( unsigned __int8 ) @@a3@@ >> Number ) | ( @@a3@@ >> Number ) & Number ; if ( ! arm_feature ( @@a1@@ , Number ) ) return Number L ; if ( @@v11@@ != Number || @@v12@@ ) return Number L ; if ( ( @@a3@@ & Number ) != Number ) { if ( @@v13@@ == Number ) { v9 = load_cpu_offset ( Number ) ; store_reg ( ( __int64 ) @@a2@@ , @@a4@@ , v9 ) ; } else { if ( @@v13@@ > Number ) return Number L ; if ( @@v13@@ == Number ) { v7 = load_cpu_offset ( Number ) ; store_reg ( ( __int64 ) @@a2@@ , @@a4@@ , v7 ) ; } else { if ( @@v13@@ != Number ) return Number L ; v8 = load_cpu_offset ( Number ) ; store_reg ( ( __int64 ) @@a2@@ , @@a4@@ , v8 ) ; } } return Number L ; } v10 = load_reg ( @@a2@@ , @@a4@@ ) ; if ( @@v13@@ == Number ) { store_cpu_offset ( v10 , Number ) ; } else { if ( @@v13@@ > Number ) { LABEL_24 : tcg_temp_free_i32 ( v10 ) ; return Number L ; } if ( @@v13@@ == Number ) { store_cpu_offset ( v10 , Number ) ; } else { if ( @@v13@@ != Number ) goto LABEL_24 ; store_cpu_offset ( v10 , Number ) ; } } return Number L ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "int", "s": 4}, "location": "r24"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "_DWORD"}, "location": "r64"}, {"n": "v13", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}, {"n": "v12", "t": {"T": 1, "n": "int", "s": 4}, "location": "s16"}, {"n": "v11", "t": {"T": 1, "n": "int", "s": 4}, "location": "s20"}]} {"name": "disas_cp15_insn", "code": "_BOOL8 __fastcall disas_cp15_insn ( __int64 @@a1@@ , _DWORD * @@a2@@ , unsigned int @@a3@@ ) { unsigned int @@v4@@ ; int @@v6@@ ; unsigned int @@v7@@ ; unsigned int v8 ; unsigned int v9 ; if ( arm_feature ( @@a1@@ , Number ) ) return Number L ; if ( ( @@a3@@ & Number ) == Number ) return ( @@a3@@ & Number ) != Number ; if ( ( @@a3@@ & Number ) == Number ) return Number L ; @@v4@@ = @@a3@@ & Number ; if ( ( @@a3@@ & Number ) != Number ) { if ( @@v4@@ > Number ) goto LABEL_22 ; if ( @@v4@@ != Number ) { if ( @@v4@@ > Number ) goto LABEL_22 ; if ( @@v4@@ != Number ) { if ( @@v4@@ <= Number ) { if ( @@v4@@ == Number ) return Number L ; if ( @@v4@@ <= Number && @@v4@@ == Number && arm_feature ( @@a1@@ , Number ) ) return Number L ; } goto LABEL_22 ; } } } if ( arm_feature ( @@a1@@ , Number ) ) return Number L ; LABEL_22 : if ( ! ( unsigned int ) cp15_user_ok ( @@a1@@ , @@a3@@ ) ) return Number L ; @@v6@@ = ( unsigned __int16 ) @@a3@@ >> Number ; if ( ( unsigned int ) cp15_tls_load_store ( @@a1@@ , @@a2@@ , @@a3@@ , @@v6@@ ) ) return Number L ; @@v7@@ = tcg_const_i32 ( @@a3@@ ) ; if ( ( @@a3@@ & Number ) != Number ) { v8 = tcg_temp_new_i32 ( ) ; gen_helper_get_cp15 ( v8 , cpu_env , @@v7@@ ) ; if ( @@v6@@ == Number ) tcg_temp_free_i32 ( v8 ) ; else store_reg ( ( __int64 ) @@a2@@ , @@v6@@ , v8 ) ; } else { v9 = load_reg ( @@a2@@ , @@v6@@ ) ; gen_helper_set_cp15 ( cpu_env , @@v7@@ , v9 ) ; tcg_temp_free_i32 ( v9 ) ; if ( ! arm_feature ( @@a1@@ , Number ) || ( @@a3@@ & Number ) != Number ) gen_lookup_tb ( @@a2@@ ) ; } tcg_temp_free_i32 ( @@v7@@ ) ; return Number L ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "_DWORD"}, "location": "r64"}, {"n": "v4", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r8"}, {"n": "v7", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s16"}, {"n": "v6", "t": {"T": 1, "n": "int", "s": 4}, "location": "s20"}]} {"name": "disas_vfp_insn", "code": "__int64 __fastcall disas_vfp_insn ( __int64 @@a1@@ , _DWORD * @@a2@@ , unsigned int @@a3@@ ) { __int64 result ; unsigned int v4 ; int v5 ; __int64 v6 ; __int64 v7 ; unsigned int v9 ; unsigned int v10 ; unsigned int v11 ; int v13 ; int v14 ; int v15 ; int v16 ; int v17 ; unsigned int i ; int v19 ; int v20 ; unsigned int v21 ; unsigned int v22 ; unsigned int v23 ; unsigned int v24 ; int v25 ; int v26 ; int v27 ; int v28 ; int v29 ; int v30 ; unsigned int j ; unsigned int v32 ; unsigned int v33 ; int v34 ; int v35 ; unsigned int v36 ; unsigned int v37 ; int @@v38@@ ; int @@v39@@ ; int @@v40@@ ; 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 ; int @@v53@@ ; int @@v54@@ ; 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@@ ; int @@v64@@ ; int @@v65@@ ; if ( ! arm_feature ( @@a1@@ , Number ) ) return Number L ; if ( ! @@a2@@ [ Number ] ) { if ( ( @@a3@@ & Number ) != Number ) return Number L ; v19 = HIWORD ( @@a3@@ ) & Number ; if ( v19 ) { if ( v19 != Number && v19 != Number && v19 != Number ) return Number L ; } } @@v54@@ = ( @@a3@@ & Number ) == Number ; v4 = HIBYTE ( @@a3@@ ) & Number ; if ( v4 <= Number ) { if ( v4 < Number ) return Number L ; if ( ( @@a3@@ & Number ) == Number ) { v25 = HIWORD ( @@a3@@ ) & Number ; v29 = ( unsigned __int16 ) @@a3@@ >> Number ; if ( ( @@a3@@ & Number ) == Number ) { if ( arm_feature ( @@a1@@ , Number ) ) { v14 = @@a3@@ & Number | ( @@a3@@ >> Number ) & Number ; } else { if ( ( @@a3@@ & Number ) != Number ) return Number L ; v14 = @@a3@@ & Number ; } } else { v14 = ( Number * ( _BYTE ) @@a3@@ ) & Number | ( @@a3@@ >> Number ) & Number ; } if ( ( @@a3@@ & Number ) != Number ) { if ( ( @@a3@@ & Number ) == Number ) { gen_mov_F0_vreg ( Number , Number * v14 ) ; v9 = gen_vfp_mrs ( ) ; store_reg ( ( __int64 ) @@a2@@ , v29 , v9 ) ; gen_mov_F0_vreg ( Number , Number * v14 + Number ) ; } else { gen_mov_F0_vreg ( Number , v14 ) ; v10 = gen_vfp_mrs ( ) ; store_reg ( ( __int64 ) @@a2@@ , v29 , v10 ) ; gen_mov_F0_vreg ( Number , v14 + Number ) ; } v50 = gen_vfp_mrs ( ) ; store_reg ( ( __int64 ) @@a2@@ , v25 , v50 ) ; } else { v11 = load_reg ( @@a2@@ , v29 ) ; gen_vfp_msr ( v11 ) ; if ( ( @@a3@@ & Number ) == Number ) { gen_mov_vreg_F0 ( Number , Number * v14 ) ; v51 = load_reg ( @@a2@@ , v25 ) ; gen_vfp_msr ( v51 ) ; gen_mov_vreg_F0 ( Number , Number * v14 + Number ) ; } else { gen_mov_vreg_F0 ( Number , v14 ) ; v52 = load_reg ( @@a2@@ , v25 ) ; gen_vfp_msr ( v52 ) ; gen_mov_vreg_F0 ( Number , v14 + Number ) ; } } return Number L ; } v26 = HIWORD ( @@a3@@ ) & Number ; if ( ( @@a3@@ & Number ) == Number ) { if ( arm_feature ( @@a1@@ , Number ) ) { v30 = ( ( unsigned __int16 ) @@a3@@ >> Number ) | ( @@a3@@ >> Number ) & Number ; } else { if ( ( @@a3@@ & Number ) != Number ) return Number L ; v30 = ( unsigned __int16 ) @@a3@@ >> Number ; } } else { v30 = ( @@a3@@ >> Number ) & Number | ( @@a3@@ >> Number ) & Number ; } if ( ( @@a3@@ & Number ) == Number ) { v35 = ( Number * ( _WORD ) @@a3@@ ) & Number ; if ( ( @@a3@@ & Number ) == Number ) v35 = - v35 ; if ( @@a2@@ [ Number ] && v26 == Number ) { @@v42@@ = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( @@v42@@ , * @@a2@@ & Number ) ; } else { @@v42@@ = load_reg ( @@a2@@ , v26 ) ; } tcg_gen_addi_i32 ( @@v42@@ , @@v42@@ , v35 ) ; if ( ( @@a3@@ & Number ) != Number ) { gen_vfp_ld ( ( __int64 ) @@a2@@ , @@v54@@ , @@v42@@ ) ; gen_mov_vreg_F0 ( @@v54@@ , v30 ) ; } else { gen_mov_F0_vreg ( @@v54@@ , v30 ) ; gen_vfp_st ( ( __int64 ) @@a2@@ , @@v54@@ , @@v42@@ ) ; } goto LABEL_286 ; } @@v65@@ = @@a3@@ & Number ; if ( ( @@a3@@ & Number ) == Number ) v33 = ( unsigned __int8 ) @@a3@@ >> Number ; else v33 = ( unsigned __int8 ) @@a3@@ ; if ( @@v65@@ && ( ( ( unsigned __int8 ) ( @@a3@@ >> Number ) ^ HIBYTE ( @@a3@@ ) ) & Number ) == Number ) return Number L ; if ( ! v33 || v30 + v33 > Number || ( @@a3@@ & Number ) == Number && v33 > Number ) return Number L ; if ( v26 == Number && @@v65@@ ) return Number L ; if ( @@a2@@ [ Number ] && v26 == Number ) { @@v42@@ = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( @@v42@@ , * @@a2@@ & Number ) ; } else { @@v42@@ = load_reg ( @@a2@@ , v26 ) ; } if ( ( @@a3@@ & Number ) != Number ) tcg_gen_addi_i32 ( @@v42@@ , @@v42@@ , - ( ( Number * ( _WORD ) @@a3@@ ) & Number ) ) ; if ( ( @@a3@@ & Number ) == Number ) v36 = Number ; else v36 = Number ; for ( i = Number ; i < v33 ; ++ i ) { if ( ( @@a3@@ & Number ) != Number ) { gen_vfp_ld ( ( __int64 ) @@a2@@ , @@v54@@ , @@v42@@ ) ; gen_mov_vreg_F0 ( @@v54@@ , v30 + i ) ; } else { gen_mov_F0_vreg ( @@v54@@ , v30 + i ) ; gen_vfp_st ( ( __int64 ) @@a2@@ , @@v54@@ , @@v42@@ ) ; } tcg_gen_addi_i32 ( @@v42@@ , @@v42@@ , v36 ) ; } if ( ! @@v65@@ ) { LABEL_286 : tcg_temp_free_i32 ( @@v42@@ ) ; return Number L ; } if ( ( @@a3@@ & Number ) != Number ) { v37 = - v36 * v33 ; } else if ( ( @@a3@@ & Number ) == Number && ( @@a3@@ & Number ) != Number ) { v37 = Number ; } else { v37 = Number ; } if ( v37 ) tcg_gen_addi_i32 ( @@v42@@ , @@v42@@ , v37 ) ; store_reg ( ( __int64 ) @@a2@@ , v26 , @@v42@@ ) ; return Number L ; } if ( v4 != Number ) return Number L ; if ( ( @@a3@@ & Number ) == Number ) { @@v55@@ = ( @@a3@@ >> Number ) & Number | ( @@a3@@ >> Number ) & Number | ( @@a3@@ >> Number ) & Number ; if ( ( @@a3@@ & Number ) == Number ) { if ( @@v55@@ == Number ) { v24 = ( @@a3@@ >> Number ) & Number | ( @@a3@@ >> Number ) & Number ; } else if ( arm_feature ( @@a1@@ , Number ) ) { v24 = HIWORD ( @@a3@@ ) & Number | ( @@a3@@ >> Number ) & Number ; } else { if ( ( @@a3@@ & Number ) != Number ) return Number L ; v24 = HIWORD ( @@a3@@ ) & Number ; } if ( @@v55@@ == Number && ( v24 == Number || ( v24 & Number ) == Number ) ) { v28 = ( @@a3@@ >> Number ) & Number | ( @@a3@@ >> Number ) & Number ; } else if ( arm_feature ( @@a1@@ , Number ) ) { v28 = ( ( unsigned __int16 ) @@a3@@ >> Number ) | ( @@a3@@ >> Number ) & Number ; } else { if ( ( @@a3@@ & Number ) != Number ) return Number L ; v28 = ( unsigned __int16 ) @@a3@@ >> Number ; } if ( @@v55@@ == Number && ( ( v24 & Number ) == Number || ( v24 & Number ) == Number ) ) { v13 = ( Number * ( _BYTE ) @@a3@@ ) & Number | ( @@a3@@ >> Number ) & Number ; } else if ( arm_feature ( @@a1@@ , Number ) ) { v13 = @@a3@@ & Number | ( @@a3@@ >> Number ) & Number ; } else { if ( ( @@a3@@ & Number ) != Number ) return Number L ; v13 = @@a3@@ & Number ; } } else { v24 = ( @@a3@@ >> Number ) & Number | ( @@a3@@ >> Number ) & Number ; if ( @@v55@@ == Number && v24 == Number ) { if ( arm_feature ( @@a1@@ , Number ) ) { v28 = ( ( unsigned __int16 ) @@a3@@ >> Number ) | ( @@a3@@ >> Number ) & Number ; } else { if ( ( @@a3@@ & Number ) != Number ) return Number L ; v28 = ( unsigned __int16 ) @@a3@@ >> Number ; } } else { v28 = ( @@a3@@ >> Number ) & Number | ( @@a3@@ >> Number ) & Number ; } v13 = ( Number * ( _BYTE ) @@a3@@ ) & Number | ( @@a3@@ >> Number ) & Number ; } @@v41@@ = @@a2@@ [ Number ] ; if ( @@v55@@ == Number && v24 > Number ) @@v41@@ = Number ; @@v39@@ = Number ; @@v38@@ = Number ; @@v40@@ = Number ; if ( @@v41@@ > Number ) { if ( ( @@a3@@ & Number ) == Number ) @@v40@@ = Number ; else @@v40@@ = Number ; if ( ( @@v40@@ & v28 ) != Number ) { if ( ( @@a3@@ & Number ) == Number ) v5 = ( int ) @@a2@@ [ Number ] >> Number ; else v5 = @@a2@@ [ Number ] ; @@v38@@ = v5 + Number ; if ( ( @@v40@@ & v13 ) != Number ) @@v39@@ = v5 + Number ; else @@v39@@ = Number ; } else { @@v41@@ = Number ; } } if ( @@v55@@ == Number ) { switch ( v24 ) { case Number : case Number : case Number : case Number : if ( ( @@a3@@ & Number ) != Number && arm_feature ( @@a1@@ , Number ) ) goto LABEL_148 ; return Number L ; case Number : case Number : gen_mov_F0_vreg ( @@v54@@ , v28 ) ; gen_mov_F1_vreg ( @@v54@@ , v13 ) ; goto LABEL_150 ; case Number : case Number : gen_mov_F0_vreg ( @@v54@@ , v28 ) ; gen_vfp_F1_ld0 ( @@v54@@ ) ; goto LABEL_150 ; case Number : case Number : gen_mov_F0_vreg ( Number , v13 ) ; goto LABEL_150 ; case Number : case Number : case Number : case Number : case Number : case Number : case Number : case Number : gen_mov_F0_vreg ( @@v54@@ , v28 ) ; goto LABEL_150 ; default : LABEL_148 : gen_mov_F0_vreg ( @@v54@@ , v13 ) ; goto LABEL_150 ; } } gen_mov_F0_vreg ( @@v54@@ , v24 ) ; gen_mov_F1_vreg ( @@v54@@ , v13 ) ; while ( Number ) { LABEL_150 : switch ( @@v55@@ ) { case Number : gen_vfp_F1_mul ( @@v54@@ ) ; gen_mov_F0_vreg ( @@v54@@ , v28 ) ; gen_vfp_add ( @@v54@@ ) ; goto LABEL_230 ; case Number : gen_vfp_mul ( @@v54@@ ) ; gen_vfp_F1_neg ( @@v54@@ ) ; gen_mov_F0_vreg ( @@v54@@ , v28 ) ; gen_vfp_add ( @@v54@@ ) ; goto LABEL_230 ; case Number : gen_vfp_F1_mul ( @@v54@@ ) ; gen_mov_F0_vreg ( @@v54@@ , v28 ) ; gen_vfp_neg ( @@v54@@ ) ; gen_vfp_add ( @@v54@@ ) ; goto LABEL_230 ; case Number : gen_vfp_mul ( @@v54@@ ) ; gen_vfp_F1_neg ( @@v54@@ ) ; gen_mov_F0_vreg ( @@v54@@ , v28 ) ; gen_vfp_neg ( @@v54@@ ) ; gen_vfp_add ( @@v54@@ ) ; goto LABEL_230 ; case Number : gen_vfp_mul ( @@v54@@ ) ; goto LABEL_230 ; case Number : gen_vfp_mul ( @@v54@@ ) ; gen_vfp_neg ( @@v54@@ ) ; goto LABEL_230 ; case Number : gen_vfp_add ( @@v54@@ ) ; goto LABEL_230 ; case Number : gen_vfp_sub ( @@v54@@ ) ; goto LABEL_230 ; case Number : gen_vfp_div ( @@v54@@ ) ; goto LABEL_230 ; case Number : case Number : case Number : case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) return Number L ; if ( ( @@a3@@ & Number ) == Number ) { if ( ( @@v55@@ & Number ) != Number ) gen_helper_vfp_negd ( cpu_F0d , cpu_F0d ) ; @@v62@@ = tcg_temp_new_i64 ( ) ; v6 = vfp_reg_offset ( @@v54@@ , v28 ) ; tcg_gen_ld_i64 ( @@v62@@ , cpu_env , v6 ) ; if ( ( @@v55@@ & Number ) != Number ) gen_helper_vfp_negd ( @@v62@@ , @@v62@@ ) ; @@v63@@ = get_fpstatus_ptr ( Number ) ; gen_helper_vfp_muladdd ( cpu_F0d , cpu_F0d , cpu_F1d , @@v62@@ , @@v63@@ ) ; tcg_temp_free_i64 ( @@v63@@ ) ; tcg_temp_free_i64 ( @@v62@@ ) ; } else { if ( ( @@v55@@ & Number ) != Number ) gen_helper_vfp_negs ( cpu_F0s , cpu_F0s ) ; @@v60@@ = tcg_temp_new_i32 ( ) ; v7 = vfp_reg_offset ( Number , v28 ) ; tcg_gen_ld_i32 ( @@v60@@ , cpu_env , v7 ) ; if ( ( @@v55@@ & Number ) != Number ) gen_helper_vfp_negs ( @@v60@@ , @@v60@@ ) ; @@v61@@ = get_fpstatus_ptr ( Number ) ; gen_helper_vfp_muladds ( cpu_F0s , cpu_F0s , cpu_F1s , @@v60@@ , @@v61@@ ) ; tcg_temp_free_i64 ( @@v61@@ ) ; tcg_temp_free_i32 ( @@v60@@ ) ; } goto LABEL_230 ; case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) return Number L ; v32 = ( @@a3@@ << Number ) & Number ; v15 = ( @@a3@@ >> Number ) & Number | @@a3@@ & Number ; if ( ( @@a3@@ & Number ) == Number ) { if ( ( v15 & Number ) != Number ) v16 = v15 | Number ; else v16 = v15 | Number ; tcg_gen_movi_i64 ( cpu_F0d , ( unsigned __int64 ) ( ( v16 << Number ) | v32 ) << Number ) ; } else { if ( ( v15 & Number ) != Number ) v17 = v15 | Number ; else v17 = v15 | Number ; tcg_gen_movi_i32 ( cpu_F0s , ( v17 << Number ) | v32 ) ; } goto LABEL_230 ; case Number : switch ( v24 ) { case Number : goto LABEL_230 ; case Number : gen_vfp_abs ( @@v54@@ ) ; goto LABEL_230 ; case Number : gen_vfp_neg ( @@v54@@ ) ; goto LABEL_230 ; case Number : gen_vfp_sqrt ( @@v54@@ ) ; goto LABEL_230 ; case Number : v46 = gen_vfp_mrs ( ) ; tcg_gen_ext16u_i32 ( v46 , v46 ) ; gen_helper_vfp_fcvt_f16_to_f32 ( cpu_F0s , v46 , cpu_env ) ; tcg_temp_free_i32 ( v46 ) ; goto LABEL_230 ; case Number : v47 = gen_vfp_mrs ( ) ; tcg_gen_shri_i32 ( v47 , v47 , Number ) ; gen_helper_vfp_fcvt_f16_to_f32 ( cpu_F0s , v47 , cpu_env ) ; tcg_temp_free_i32 ( v47 ) ; goto LABEL_230 ; case Number : v48 = tcg_temp_new_i32 ( ) ; gen_helper_vfp_fcvt_f32_to_f16 ( v48 , cpu_F0s , cpu_env ) ; gen_mov_F0_vreg ( Number , v28 ) ; v58 = gen_vfp_mrs ( ) ; tcg_gen_andi_i32 ( v58 , v58 , Number ) ; tcg_gen_or_i32 ( v48 , v48 , v58 ) ; tcg_temp_free_i32 ( v58 ) ; gen_vfp_msr ( v48 ) ; goto LABEL_230 ; case Number : v49 = tcg_temp_new_i32 ( ) ; gen_helper_vfp_fcvt_f32_to_f16 ( v49 , cpu_F0s , cpu_env ) ; tcg_gen_shli_i32 ( v49 , v49 , Number ) ; gen_mov_F0_vreg ( Number , v28 ) ; v59 = gen_vfp_mrs ( ) ; tcg_gen_ext16u_i32 ( v59 , v59 ) ; tcg_gen_or_i32 ( v49 , v49 , v59 ) ; tcg_temp_free_i32 ( v59 ) ; gen_vfp_msr ( v49 ) ; goto LABEL_230 ; case Number : case Number : gen_vfp_cmp ( @@v54@@ ) ; goto LABEL_230 ; case Number : gen_vfp_cmpe ( @@v54@@ ) ; goto LABEL_230 ; case Number : gen_vfp_F1_ld0 ( @@v54@@ ) ; gen_vfp_cmpe ( @@v54@@ ) ; goto LABEL_230 ; case Number : if ( ( @@a3@@ & Number ) == Number ) gen_helper_vfp_fcvtsd ( cpu_F0s , cpu_F0d , cpu_env ) ; else gen_helper_vfp_fcvtds ( cpu_F0d , cpu_F0s , cpu_env ) ; goto LABEL_230 ; case Number : gen_vfp_uito ( @@v54@@ , Number ) ; goto LABEL_230 ; case Number : gen_vfp_sito ( @@v54@@ , Number ) ; goto LABEL_230 ; case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) return Number L ; gen_vfp_shto ( @@v54@@ , Number - v13 , Number ) ; goto LABEL_230 ; case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) return Number L ; gen_vfp_slto ( @@v54@@ , Number - v13 , Number ) ; goto LABEL_230 ; case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) return Number L ; gen_vfp_uhto ( @@v54@@ , Number - v13 , Number ) ; goto LABEL_230 ; case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) return Number L ; gen_vfp_ulto ( @@v54@@ , Number - v13 , Number ) ; goto LABEL_230 ; case Number : gen_vfp_toui ( @@v54@@ , Number ) ; goto LABEL_230 ; case Number : gen_vfp_touiz ( @@v54@@ , Number ) ; goto LABEL_230 ; case Number : gen_vfp_tosi ( @@v54@@ , Number ) ; goto LABEL_230 ; case Number : gen_vfp_tosiz ( @@v54@@ , Number ) ; goto LABEL_230 ; case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) return Number L ; gen_vfp_tosh ( @@v54@@ , Number - v13 , Number ) ; goto LABEL_230 ; case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) return Number L ; gen_vfp_tosl ( @@v54@@ , Number - v13 , Number ) ; goto LABEL_230 ; case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) return Number L ; gen_vfp_touh ( @@v54@@ , Number - v13 , Number ) ; goto LABEL_230 ; case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) return Number L ; gen_vfp_toul ( @@v54@@ , Number - v13 , Number ) ; LABEL_230 : if ( @@v55@@ != Number || v24 <= Number || v24 > Number ) { if ( @@v55@@ == Number && ( @@a3@@ & Number ) == Number && ( v24 & Number ) == Number ) { gen_mov_vreg_F0 ( Number , v28 ) ; } else if ( @@v55@@ == Number && v24 == Number ) { gen_mov_vreg_F0 ( ( @@a3@@ & Number ) != Number , v28 ) ; } else { gen_mov_vreg_F0 ( @@v54@@ , v28 ) ; } } if ( ! @@v41@@ ) return Number L ; if ( @@v55@@ == Number && ! @@v39@@ ) { while ( @@v41@@ -- ) { v28 = ( @@v40@@ - Number ) & ( @@v38@@ + v28 ) | @@v40@@ & v28 ; gen_mov_vreg_F0 ( @@v54@@ , v28 ) ; } return Number L ; } -- @@v41@@ ; v28 = ( @@v40@@ - Number ) & ( @@v38@@ + v28 ) | @@v40@@ & v28 ; if ( @@v55@@ == Number ) { v13 = ( @@v40@@ - Number ) & ( @@v39@@ + v13 ) | @@v40@@ & v13 ; gen_mov_F0_vreg ( @@v54@@ , v13 ) ; } else { v24 = ( @@v40@@ - Number ) & ( @@v38@@ + v24 ) | @@v40@@ & v24 ; gen_mov_F0_vreg ( @@v54@@ , v24 ) ; if ( @@v39@@ ) { v13 = ( @@v40@@ - Number ) & ( @@v39@@ + v13 ) | @@v40@@ & v13 ; gen_mov_F1_vreg ( @@v54@@ , v13 ) ; } } break ; default : return Number L ; } break ; default : return Number L ; } } } v27 = ( unsigned __int16 ) @@a3@@ >> Number ; if ( ( @@a3@@ & Number ) == Number ) { if ( arm_feature ( @@a1@@ , Number ) ) { v20 = HIWORD ( @@a3@@ ) & Number | ( @@a3@@ >> Number ) & Number ; } else { if ( ( @@a3@@ & Number ) != Number ) return Number L ; v20 = HIWORD ( @@a3@@ ) & Number ; } if ( ( @@a3@@ & Number ) != Number ) return Number L ; if ( ( @@a3@@ & Number ) != Number && ! arm_feature ( @@a1@@ , Number ) ) return Number L ; @@v64@@ = ( @@a3@@ >> Number ) & Number ; if ( ( @@a3@@ & Number ) != Number ) { @@v53@@ = Number ; v34 = Number * ( ( @@a3@@ >> Number ) & Number ) ; } else if ( ( @@a3@@ & Number ) != Number ) { @@v53@@ = Number ; v34 = ( @@a3@@ >> Number ) & Number ; } else { @@v53@@ = Number ; v34 = Number ; } if ( ( @@a3@@ & Number ) == Number ) { v44 = load_reg ( @@a2@@ , v27 ) ; if ( ( @@a3@@ & Number ) != Number ) { if ( @@v53@@ ) { if ( @@v53@@ == Number ) gen_neon_dup_low16 ( v44 ) ; } else { gen_neon_dup_u8 ( v44 , Number ) ; } for ( j = Number ; j <= Number * @@v64@@ ; ++ j ) { v56 = tcg_temp_new_i32 ( ) ; tcg_gen_mov_i32 ( v56 , v44 ) ; neon_store_reg ( v20 , j , v56 ) ; } neon_store_reg ( v20 , j , v44 ) ; } else { if ( @@v53@@ != Number ) { v57 = neon_load_reg ( v20 , @@v64@@ ) ; if ( @@v53@@ ) gen_bfi ( v44 , v57 , v44 , v34 , Number ) ; else gen_bfi ( v44 , v57 , v44 , v34 , Number ) ; tcg_temp_free_i32 ( v57 ) ; } neon_store_reg ( v20 , @@v64@@ , v44 ) ; } return Number L ; } v43 = neon_load_reg ( v20 , @@v64@@ ) ; if ( @@v53@@ != Number ) { if ( @@v53@@ ) { if ( ( @@a3@@ & Number ) != Number ) { if ( v34 ) tcg_gen_shri_i32 ( v43 , v43 , Number ) ; else tcg_gen_ext16u_i32 ( v43 , v43 ) ; } else if ( v34 ) { tcg_gen_sari_i32 ( v43 , v43 , Number ) ; } else { tcg_gen_ext16s_i32 ( v43 , v43 ) ; } } else { if ( v34 ) tcg_gen_shri_i32 ( v43 , v43 , v34 ) ; if ( ( @@a3@@ & Number ) != Number ) tcg_gen_ext8u_i32 ( v43 , v43 ) ; else tcg_gen_ext8s_i32 ( v43 , v43 ) ; } } LABEL_47 : store_reg ( ( __int64 ) @@a2@@ , v27 , v43 ) ; return Number L ; } if ( ( @@a3@@ & Number ) != Number ) return Number L ; v21 = ( @@a3@@ >> Number ) & Number | ( @@a3@@ >> Number ) & Number ; if ( ( @@a3@@ & Number ) != Number ) { if ( ( @@a3@@ & Number ) != Number ) { v22 = v21 >> Number ; switch ( v22 ) { case Number : if ( arm_feature ( @@a1@@ , Number ) ) return Number L ; v43 = load_cpu_offset ( Number * ( v22 + Number ) ) ; break ; case Number : if ( v27 == Number ) { v43 = load_cpu_offset ( Number ) ; tcg_gen_andi_i32 ( v43 , v43 , Number ) ; } else { v43 = tcg_temp_new_i32 ( ) ; gen_helper_vfp_get_fpscr ( v43 , cpu_env ) ; } break ; case Number : case Number : return Number L ; case Number : return Number L ; case Number : case Number : return Number L ; default : return Number L ; } } else { gen_mov_F0_vreg ( Number , v21 ) ; v43 = gen_vfp_mrs ( ) ; } if ( v27 == Number ) { gen_set_cpsr ( v43 , Number ) ; tcg_temp_free_i32 ( v43 ) ; return Number L ; } goto LABEL_47 ; } v45 = load_reg ( @@a2@@ , v27 ) ; if ( ( @@a3@@ & Number ) == Number ) { gen_vfp_msr ( v45 ) ; gen_mov_vreg_F0 ( Number , v21 ) ; return Number L ; } v23 = v21 >> Number ; switch ( v23 ) { case Number : case Number : case Number : return Number L ; case Number : gen_helper_vfp_set_fpscr ( cpu_env , v45 ) ; tcg_temp_free_i32 ( v45 ) ; gen_lookup_tb ( @@a2@@ ) ; return Number L ; case Number : result = Number L ; break ; case Number : case Number : store_cpu_offset ( v45 , Number * ( v23 + Number ) ) ; return Number L ; default : result = Number L ; break ; } return result ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "_DWORD"}, "location": "r64"}, {"n": "v65", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}, {"n": "v64", "t": {"T": 1, "n": "int", "s": 4}, "location": "s16"}, {"n": "v63", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s20"}, {"n": "v62", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s24"}, {"n": "v61", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s28"}, {"n": "v60", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s32"}, {"n": "v55", "t": {"T": 1, "n": "int", "s": 4}, "location": "s40"}, {"n": "v54", "t": {"T": 1, "n": "int", "s": 4}, "location": "s44"}, {"n": "v53", "t": {"T": 1, "n": "int", "s": 4}, "location": "s48"}, {"n": "v42", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s56"}, {"n": "v41", "t": {"T": 1, "n": "int", "s": 4}, "location": "s60"}, {"n": "v40", "t": {"T": 1, "n": "int", "s": 4}, "location": "s64"}, {"n": "v39", "t": {"T": 1, "n": "int", "s": 4}, "location": "s68"}, {"n": "v38", "t": {"T": 1, "n": "int", "s": 4}, "location": "s72"}]} {"name": "gen_exception_return", "code": "unsigned __int64 __fastcall gen_exception_return ( __int64 @@a1@@ , unsigned int @@a2@@ ) { unsigned int @@v3@@ ; unsigned __int64 @@v4@@ ; @@v4@@ = __readfsqword ( Number ) ; store_reg ( @@a1@@ , Number , @@a2@@ ) ; @@v3@@ = load_cpu_offset ( Number ) ; gen_set_cpsr ( @@v3@@ , Number ) ; tcg_temp_free_i32 ( @@v3@@ ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = Number ; return __readfsqword ( Number ) ^ @@v4@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r64"}, {"n": "v3", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s12"}, {"n": "v4", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "gen_rfe", "code": "unsigned __int64 __fastcall gen_rfe ( __int64 @@a1@@ , unsigned int @@a2@@ , unsigned int @@a3@@ ) { unsigned __int64 @@v5@@ ; @@v5@@ = __readfsqword ( Number ) ; gen_set_cpsr ( @@a3@@ , Number ) ; tcg_temp_free_i32 ( @@a3@@ ) ; store_reg ( @@a1@@ , Number , @@a2@@ ) ; * ( _DWORD * ) ( @@a1@@ + Number ) = Number ; return __readfsqword ( Number ) ^ @@v5@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r64"}, {"n": "v5", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "disas_neon_ls_insn", "code": "__int64 __fastcall disas_neon_ls_insn ( __int64 @@a1@@ , _DWORD * @@a2@@ , unsigned int @@a3@@ ) { int v4 ; __int64 v5 ; __int64 v6 ; __int64 v7 ; __int64 v8 ; int v9 ; __int64 v10 ; __int64 v11 ; int v12 ; int v13 ; unsigned int v14 ; int @@v16@@ ; unsigned int v17 ; unsigned int v18 ; int v19 ; int v20 ; int v21 ; int v22 ; int i ; int n ; int m ; int j ; int v27 ; unsigned int @@v28@@ ; int k ; int l ; 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 ; int @@v46@@ ; int @@v47@@ ; int @@v48@@ ; int v49 ; int v50 ; unsigned int v51 ; unsigned int v52 ; int @@v53@@ ; unsigned int @@v54@@ ; int @@v55@@ ; int @@v56@@ ; unsigned int v57 ; unsigned int v58 ; unsigned int @@v59@@ ; unsigned int @@v60@@ ; if ( ! @@a2@@ [ Number ] ) return Number L ; if ( arm_feature ( @@a1@@ , Number ) ) { @@v16@@ = ( ( unsigned __int16 ) @@a3@@ >> Number ) | ( @@a3@@ >> Number ) & Number ; } else { if ( ( @@a3@@ & Number ) != Number ) return Number L ; @@v16@@ = ( unsigned __int16 ) @@a3@@ >> Number ; } @@v46@@ = HIWORD ( @@a3@@ ) & Number ; @@v47@@ = @@a3@@ & Number ; if ( ( @@a3@@ & Number ) == Number ) { @@v54@@ = ( @@a3@@ >> Number ) & Number ; v21 = ( unsigned __int8 ) @@a3@@ >> Number ; if ( @@v54@@ > Number ) return Number L ; v4 = @@v54@@ & Number ; if ( v4 == Number ) { if ( ( @@a3@@ & Number ) != Number ) return Number L ; } else if ( v4 == Number && ( ( @@a3@@ >> Number ) & Number ) == Number ) { return Number L ; } v49 = * ( ( _DWORD * ) & neon_ls_element_type + Number * ( int ) @@v54@@ ) ; @@v55@@ = * ( ( _DWORD * ) & unk_2E644 + Number * ( int ) @@v54@@ ) ; @@v56@@ = dword_2E648 [ Number * @@v54@@ ] ; if ( v21 == Number && ( @@v56@@ | @@v55@@ ) != Number ) return Number L ; v51 = tcg_temp_new_i32 ( ) ; load_reg_var ( @@a2@@ , v51 , @@v46@@ ) ; v17 = @@v55@@ << v21 ; for ( i = Number ; i < v49 ; ++ i ) { if ( @@v55@@ > Number || @@v55@@ == Number && v49 == Number ) { load_reg_var ( @@a2@@ , v51 , @@v46@@ ) ; tcg_gen_addi_i32 ( v51 , v51 , i << v21 ) ; } else if ( @@v55@@ == Number && v49 == Number && i == Number ) { load_reg_var ( @@a2@@ , v51 , @@v46@@ ) ; tcg_gen_addi_i32 ( v51 , v51 , Number << v21 ) ; } if ( v21 == Number ) { if ( ( @@a3@@ & Number ) != Number ) { v57 = gen_ld64 ( v51 , Number ) ; neon_store_reg64 ( v57 , @@v16@@ ) ; tcg_temp_free_i64 ( v57 ) ; } else { v58 = tcg_temp_new_i64 ( ) ; neon_load_reg64 ( v58 , @@v16@@ ) ; gen_st64 ( v58 , v51 , Number ) ; } tcg_gen_addi_i32 ( v51 , v51 , v17 ) ; } else { for ( j = Number ; j <= Number ; ++ j ) { if ( v21 == Number ) { if ( ( @@a3@@ & Number ) != Number ) { v31 = gen_ld32 ( v51 , Number ) ; neon_store_reg ( @@v16@@ , j , v31 ) ; } else { v32 = neon_load_reg ( @@v16@@ , j ) ; gen_st32 ( v32 , v51 , Number ) ; } tcg_gen_addi_i32 ( v51 , v51 , v17 ) ; } else if ( v21 == Number ) { if ( ( @@a3@@ & Number ) != Number ) { v33 = gen_ld16u ( v51 , Number ) ; tcg_gen_addi_i32 ( v51 , v51 , v17 ) ; v41 = gen_ld16u ( v51 , Number ) ; tcg_gen_addi_i32 ( v51 , v51 , v17 ) ; tcg_gen_shli_i32 ( v41 , v41 , Number ) ; tcg_gen_or_i32 ( v33 , v33 , v41 ) ; tcg_temp_free_i32 ( v41 ) ; neon_store_reg ( @@v16@@ , j , v33 ) ; } else { v34 = neon_load_reg ( @@v16@@ , j ) ; v42 = tcg_temp_new_i32 ( ) ; tcg_gen_shri_i32 ( v42 , v34 , Number ) ; gen_st16 ( v34 , v51 , Number ) ; tcg_gen_addi_i32 ( v51 , v51 , v17 ) ; gen_st16 ( v42 , v51 , Number ) ; tcg_gen_addi_i32 ( v51 , v51 , v17 ) ; } } else if ( ( @@a3@@ & Number ) != Number ) { v43 = Number ; for ( k = Number ; k <= Number ; ++ k ) { v35 = gen_ld8u ( v51 , Number ) ; tcg_gen_addi_i32 ( v51 , v51 , v17 ) ; if ( k ) { tcg_gen_shli_i32 ( v35 , v35 , Number * k ) ; tcg_gen_or_i32 ( v43 , v43 , v35 ) ; tcg_temp_free_i32 ( v35 ) ; } else { v43 = v35 ; } } neon_store_reg ( @@v16@@ , j , v43 ) ; } else { v44 = neon_load_reg ( @@v16@@ , j ) ; for ( l = Number ; l <= Number ; ++ l ) { v36 = tcg_temp_new_i32 ( ) ; if ( l ) tcg_gen_shri_i32 ( v36 , v44 , Number * l ) ; else tcg_gen_mov_i32 ( v36 , v44 ) ; gen_st8 ( v36 , v51 , Number ) ; tcg_gen_addi_i32 ( v51 , v51 , v17 ) ; } tcg_temp_free_i32 ( v44 ) ; } } } @@v16@@ += @@v56@@ ; } tcg_temp_free_i32 ( v51 ) ; v18 = Number * v49 ; goto LABEL_148 ; } v22 = ( @@a3@@ >> Number ) & Number ; if ( v22 != Number ) { @@v48@@ = ( unsigned __int8 ) @@a3@@ >> Number ; v27 = ( @@a3@@ >> Number ) & Number ; if ( v22 == Number ) { @@v28@@ = Number ; if ( ( @@a3@@ & Number ) != Number ) v13 = Number ; else v13 = Number ; v20 = v13 ; } else if ( v22 ) { @@v28@@ = Number * ( ( @@a3@@ >> Number ) & Number ) ; if ( ( @@a3@@ & Number ) != Number ) v12 = Number ; else v12 = Number ; v20 = v12 ; } else { @@v28@@ = Number * ( ( @@a3@@ >> Number ) & Number ) ; v20 = Number ; } v50 = ( ( @@a3@@ >> Number ) & Number ) + Number ; if ( ( ( @@a3@@ >> Number ) & Number ) == Number ) { if ( v22 == Number && ( @@v48@@ & Number ) == Number ) return Number L ; goto LABEL_123 ; } if ( v50 > Number ) goto LABEL_122 ; if ( ( ( @@a3@@ >> Number ) & Number ) == Number ) { if ( ( @@a3@@ & Number ) != Number ) return Number L ; } else { if ( v50 > Number ) goto LABEL_122 ; if ( ( ( @@a3@@ >> Number ) & Number ) == Number ) { if ( ( ( @@v48@@ >> v22 ) & Number ) != Number || v22 == Number && ( ( @@v48@@ & Number ) == Number || ( @@v48@@ & Number ) == Number ) ) return Number L ; LABEL_123 : if ( ( int ) ( v20 * ( ( @@a3@@ >> Number ) & Number ) + @@v16@@ ) > Number ) return Number L ; v52 = tcg_temp_new_i32 ( ) ; load_reg_var ( @@a2@@ , v52 , @@v46@@ ) ; for ( m = Number ; m < v50 ; ++ m ) { if ( ( @@a3@@ & Number ) != Number ) { if ( v22 == Number ) { v39 = gen_ld32 ( v52 , Number ) ; } else if ( v22 ) { v39 = gen_ld16u ( v52 , Number ) ; } else { v39 = gen_ld8u ( v52 , Number ) ; } if ( v22 != Number ) { v45 = neon_load_reg ( @@v16@@ , v27 ) ; if ( v22 ) v14 = Number ; else v14 = Number ; gen_bfi ( v39 , v45 , v39 , @@v28@@ , v14 ) ; tcg_temp_free_i32 ( v45 ) ; } neon_store_reg ( @@v16@@ , v27 , v39 ) ; } else { v40 = neon_load_reg ( @@v16@@ , v27 ) ; if ( @@v28@@ ) tcg_gen_shri_i32 ( v40 , v40 , @@v28@@ ) ; if ( v22 == Number ) { gen_st32 ( v40 , v52 , Number ) ; } else if ( v22 ) { gen_st16 ( v40 , v52 , Number ) ; } else { gen_st8 ( v40 , v52 , Number ) ; } } @@v16@@ += v20 ; tcg_gen_addi_i32 ( v52 , v52 , Number << v22 ) ; } goto LABEL_147 ; } if ( ( ( @@a3@@ >> Number ) & Number ) != Number ) LABEL_122 : abort ( ) ; } if ( v22 == Number && ( @@v48@@ & Number ) != Number ) return Number L ; goto LABEL_123 ; } @@v53@@ = ( @@a3@@ >> Number ) & Number ; if ( ( @@a3@@ & Number ) == Number ) return Number L ; v22 = ( unsigned __int8 ) @@a3@@ >> Number ; v50 = ( ( @@a3@@ >> Number ) & Number ) + Number ; if ( v22 == Number ) { if ( ( ( @@a3@@ >> Number ) & Number ) != Number || ! @@v53@@ ) return Number L ; v22 = Number ; } if ( ( ( @@a3@@ >> Number ) & Number ) == Number && @@v53@@ == Number && ! v22 ) return Number L ; if ( ( ( @@a3@@ >> Number ) & Number ) == Number && @@v53@@ == Number ) return Number L ; v52 = tcg_temp_new_i32 ( ) ; load_reg_var ( @@a2@@ , v52 , @@v46@@ ) ; if ( ( ( @@a3@@ >> Number ) & Number ) != Number ) { if ( ( @@a3@@ & Number ) != Number ) v9 = Number ; else v9 = Number ; v19 = v9 ; for ( n = Number ; n < v50 ; ++ n ) { v38 = gen_load_and_replicate ( ( __int64 ) @@a2@@ , v52 , v22 ) ; v10 = neon_reg_offset ( @@v16@@ , Number ) ; tcg_gen_st_i32 ( v38 , cpu_env , v10 ) ; v11 = neon_reg_offset ( @@v16@@ , Number ) ; tcg_gen_st_i32 ( v38 , cpu_env , v11 ) ; tcg_temp_free_i32 ( v38 ) ; tcg_gen_addi_i32 ( v52 , v52 , Number << v22 ) ; @@v16@@ += v19 ; } } else { v37 = gen_load_and_replicate ( ( __int64 ) @@a2@@ , v52 , v22 ) ; v5 = neon_reg_offset ( @@v16@@ , Number ) ; tcg_gen_st_i32 ( v37 , cpu_env , v5 ) ; v6 = neon_reg_offset ( @@v16@@ , Number ) ; tcg_gen_st_i32 ( v37 , cpu_env , v6 ) ; if ( ( @@a3@@ & Number ) != Number ) { v7 = neon_reg_offset ( @@v16@@ + Number , Number ) ; tcg_gen_st_i32 ( v37 , cpu_env , v7 ) ; v8 = neon_reg_offset ( @@v16@@ + Number , Number ) ; tcg_gen_st_i32 ( v37 , cpu_env , v8 ) ; } tcg_temp_free_i32 ( v37 ) ; } LABEL_147 : tcg_temp_free_i32 ( v52 ) ; v18 = v50 << v22 ; LABEL_148 : if ( @@v47@@ != Number ) { @@v59@@ = load_reg ( @@a2@@ , @@v46@@ ) ; if ( @@v47@@ == Number ) { tcg_gen_addi_i32 ( @@v59@@ , @@v59@@ , v18 ) ; } else { @@v60@@ = load_reg ( @@a2@@ , @@v47@@ ) ; tcg_gen_add_i32 ( @@v59@@ , @@v59@@ , @@v60@@ ) ; tcg_temp_free_i32 ( @@v60@@ ) ; } store_reg ( ( __int64 ) @@a2@@ , @@v46@@ , @@v59@@ ) ; } return Number L ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "_DWORD"}, "location": "r64"}, {"n": "v60", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s12"}, {"n": "v59", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s16"}, {"n": "v56", "t": {"T": 1, "n": "int", "s": 4}, "location": "s24"}, {"n": "v55", "t": {"T": 1, "n": "int", "s": 4}, "location": "s28"}, {"n": "v54", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s32"}, {"n": "v53", "t": {"T": 1, "n": "int", "s": 4}, "location": "s36"}, {"n": "v48", "t": {"T": 1, "n": "int", "s": 4}, "location": "s48"}, {"n": "v47", "t": {"T": 1, "n": "int", "s": 4}, "location": "s56"}, {"n": "v46", "t": {"T": 1, "n": "int", "s": 4}, "location": "s60"}, {"n": "v28", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s76"}, {"n": "v16", "t": {"T": 1, "n": "int", "s": 4}, "location": "s96"}]} {"name": "disas_neon_data_insn", "code": "_BOOL8 __fastcall disas_neon_data_insn ( __int64 @@a1@@ , __int64 @@a2@@ , unsigned int @@a3@@ ) { _BOOL8 result ; int v4 ; _BOOL4 v5 ; int v6 ; int v7 ; int v8 ; int v9 ; _BOOL4 v10 ; __int64 v11 ; __int64 v12 ; int v13 ; unsigned int v14 ; int v15 ; int v16 ; int v17 ; int v18 ; unsigned int v19 ; int v20 ; __int64 v21 ; __int64 v22 ; __int64 v23 ; __int64 v24 ; __int64 v25 ; __int64 v26 ; __int64 v27 ; __int64 v28 ; __int64 v29 ; __int64 v30 ; int v31 ; int v32 ; int @@v34@@ ; unsigned int @@v35@@ ; int @@v36@@ ; int v37 ; int k ; int v39 ; int v40 ; int v41 ; signed int v42 ; unsigned int v43 ; int i8 ; int v45 ; int i7 ; int jj ; int n ; int ii ; int l ; int m ; int i ; int i6 ; int i4 ; int i5 ; int ll ; int mm ; int i1 ; int i2 ; int i3 ; int kk ; int @@v62@@ ; int @@v63@@ ; unsigned int v64 ; unsigned int v65 ; unsigned int v66 ; unsigned int v67 ; unsigned int v68 ; int v69 ; int v70 ; 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 ; unsigned int v80 ; unsigned int v81 ; unsigned int v82 ; unsigned int v83 ; unsigned int v84 ; unsigned int v85 ; unsigned int v86 ; unsigned int v87 ; unsigned int v88 ; unsigned int v89 ; unsigned int v90 ; unsigned int v91 ; unsigned int v92 ; unsigned int v93 ; unsigned int v94 ; unsigned int v95 ; unsigned int v96 ; unsigned int v97 ; unsigned int v98 ; unsigned int v99 ; unsigned int v100 ; unsigned int v101 ; unsigned int v102 ; unsigned int v103 ; unsigned int v104 ; unsigned int v105 ; unsigned int v106 ; unsigned int v107 ; unsigned int v108 ; unsigned int v109 ; unsigned int v110 ; unsigned int v111 ; unsigned int v112 ; unsigned int v113 ; unsigned int v114 ; unsigned int v115 ; unsigned int v116 ; unsigned int v117 ; unsigned int v118 ; unsigned int v119 ; unsigned int v120 ; unsigned int v121 ; unsigned int v122 ; unsigned int v123 ; unsigned int v124 ; unsigned int v125 ; unsigned int v126 ; unsigned int v127 ; unsigned int v128 ; unsigned int v129 ; unsigned int v130 ; unsigned int v131 ; unsigned int v132 ; unsigned int v133 ; unsigned int v134 ; unsigned int v135 ; int @@v136@@ ; int @@j@@ ; int @@v138@@ ; int @@nn@@ ; int @@v140@@ ; int @@v141@@ ; int v142 ; unsigned int v143 ; unsigned int v144 ; int v145 ; unsigned int v146 ; int v147 ; int v148 ; int v149 ; int v150 ; int v151 ; unsigned int @@v152@@ ; unsigned int @@v153@@ ; unsigned int @@v154@@ ; unsigned int @@v155@@ ; unsigned int @@v156@@ ; unsigned int v157 ; unsigned int v158 ; unsigned int @@v159@@ ; unsigned int @@v160@@ ; unsigned int @@v161@@ ; int @@v162@@ ; int @@v163@@ ; int @@v164@@ ; int @@v165@@ ; int @@v166@@ ; int @@v167@@ ; unsigned int @@v168@@ ; unsigned int @@v169@@ ; unsigned int @@v170@@ ; unsigned int @@v171@@ ; unsigned int @@v172@@ ; unsigned int @@v173@@ ; unsigned int @@v174@@ ; unsigned __int64 @@v175@@ ; unsigned __int64 @@v176@@ ; if ( ! * ( _DWORD * ) ( @@a2@@ + Number ) ) return Number L ; @@v140@@ = ( @@a3@@ & Number ) != Number ; @@v141@@ = HIBYTE ( @@a3@@ ) & Number ; if ( arm_feature ( @@a1@@ , Number ) ) { @@v34@@ = ( ( unsigned __int16 ) @@a3@@ >> Number ) | ( @@a3@@ >> Number ) & Number ; } else { if ( ( @@a3@@ & Number ) != Number ) return Number L ; @@v34@@ = ( unsigned __int16 ) @@a3@@ >> Number ; } if ( arm_feature ( @@a1@@ , Number ) ) { @@v35@@ = HIWORD ( @@a3@@ ) & Number | ( @@a3@@ >> Number ) & Number ; } else { if ( ( @@a3@@ & Number ) != Number ) return Number L ; @@v35@@ = HIWORD ( @@a3@@ ) & Number ; } if ( arm_feature ( @@a1@@ , Number ) ) { @@v36@@ = @@a3@@ & Number | ( @@a3@@ >> Number ) & Number ; } else { if ( ( @@a3@@ & Number ) != Number ) return Number L ; @@v36@@ = @@a3@@ & Number ; } v37 = ( @@a3@@ >> Number ) & Number ; if ( ( @@a3@@ & Number ) != Number ) { if ( ( @@a3@@ & Number ) != Number ) { if ( ( @@a3@@ & Number ) == Number ) { if ( @@v140@@ && ( @@v34@@ & Number ) != Number ) return Number L ; v149 = ( @@a3@@ >> Number ) & Number ; v67 = ( @@a3@@ >> Number ) & Number | ( @@v141@@ << Number ) | @@a3@@ & Number ; switch ( v149 ) { case Number : case Number : v67 <<= Number ; goto LABEL_566 ; case Number : case Number : v67 <<= Number ; goto LABEL_566 ; case Number : case Number : v67 <<= Number ; goto LABEL_566 ; case Number : case Number : v67 |= v67 << Number ; goto LABEL_566 ; case Number : case Number : v67 = ( v67 << Number ) | ( v67 << Number ) ; goto LABEL_566 ; case Number : v14 = v67 << Number ; LOBYTE ( v14 ) = Number ; v67 = v14 ; goto LABEL_566 ; case Number : v67 = ( v67 << Number ) | Number ; goto LABEL_566 ; case Number : v67 |= ( v67 << Number ) | ( v67 << Number ) | ( v67 << Number ) ; if ( ( @@a3@@ & Number ) != Number ) v67 = ~ v67 ; goto LABEL_566 ; case Number : if ( ( @@a3@@ & Number ) != Number ) return Number L ; if ( ( v67 & Number ) != Number ) v15 = Number ; else v15 = Number ; v67 = ( v67 << Number ) & Number | ( v67 << Number ) & Number | v15 ; LABEL_566 : if ( ( @@a3@@ & Number ) != Number ) v67 = ~ v67 ; for ( i = Number ; ; ++ i ) { v16 = @@v140@@ ? Number : Number ; if ( v16 <= i ) break ; if ( ( v149 & Number ) != Number && ( ( @@a3@@ >> Number ) & Number ) <= Number ) { v79 = neon_load_reg ( @@v34@@ , i ) ; if ( ( @@a3@@ & Number ) != Number ) tcg_gen_andi_i32 ( v79 , v79 , v67 ) ; else tcg_gen_ori_i32 ( v79 , v79 , v67 ) ; } else { v79 = tcg_temp_new_i32 ( ) ; if ( v149 == Number && ( @@a3@@ & Number ) != Number ) { @@v138@@ = Number ; for ( @@j@@ = Number ; @@j@@ <= Number ; ++ @@j@@ ) { if ( ( v67 & ( Number << ( Number * ( i & Number ) + @@j@@ ) ) ) != Number ) @@v138@@ |= Number << ( Number * @@j@@ ) ; } tcg_gen_movi_i32 ( v79 , @@v138@@ ) ; } else { tcg_gen_movi_i32 ( v79 , v67 ) ; } } neon_store_reg ( @@v34@@ , i , v79 ) ; } break ; default : goto LABEL_566 ; } return Number L ; } v148 = ( @@a3@@ >> Number ) & Number ; if ( ( @@a3@@ & Number ) != Number ) { if ( ( ( @@a3@@ >> Number ) & Number ) > Number ) return Number L ; k = Number ; } else { for ( k = Number ; ( @@a3@@ & ( Number << ( k + Number ) ) ) == Number ; -- k ) ; } v41 = HIWORD ( @@a3@@ ) & ( ( Number << ( k + Number ) ) - Number ) ; if ( ( ( @@a3@@ >> Number ) & Number ) > Number ) { if ( ( ( @@a3@@ >> Number ) & Number ) > Number ) { if ( v148 == Number ) { if ( @@v140@@ || ( @@v34@@ & Number ) != Number ) return Number L ; v78 = neon_load_reg ( @@v36@@ , Number ) ; v103 = neon_load_reg ( @@v36@@ , Number ) ; for ( l = Number ; l <= Number ; ++ l ) { if ( l == Number ) v78 = v103 ; gen_neon_widen ( cpu_V0 , v78 , k , @@v141@@ ) ; if ( v41 ) { tcg_gen_shli_i64 ( cpu_V0 , cpu_V0 , v41 ) ; if ( k <= Number || ! @@v141@@ ) { if ( k ) { if ( k == Number ) v66 = Number >> ( Number - ( BYTE2 ( @@a3@@ ) & ( ( Number << ( k + Number ) ) - Number ) ) ) ; else v66 = Number >> ( Number - ( BYTE2 ( @@a3@@ ) & ( ( Number << ( k + Number ) ) - Number ) ) ) ; } else { v66 = ( Number >> ( Number - v41 ) << Number ) | ( Number >> ( Number - v41 ) ) ; } if ( k > Number ) @@v176@@ = v66 ; else @@v176@@ = ( ( unsigned __int64 ) v66 << Number ) | v66 ; tcg_gen_andi_i64 ( cpu_V0 , cpu_V0 , ~ @@v176@@ ) ; } } neon_store_reg64 ( cpu_V0 , l + @@v34@@ ) ; } } else { if ( ( ( @@a3@@ >> Number ) & Number ) <= Number ) return Number L ; if ( ( @@a3@@ & Number ) == Number || @@v140@@ && ( ( ( unsigned __int8 ) @@v36@@ | ( unsigned __int8 ) @@v34@@ ) & Number ) != Number ) return Number L ; v43 = Number - v41 ; for ( m = Number ; ; ++ m ) { v13 = @@v140@@ ? Number : Number ; if ( v13 <= m ) break ; v11 = neon_reg_offset ( @@v36@@ , m ) ; tcg_gen_ld_i32 ( cpu_F0s , cpu_env , v11 ) ; if ( ( @@a3@@ & Number ) != Number ) { if ( @@v141@@ ) gen_vfp_toul ( Number , v43 , Number ) ; else gen_vfp_tosl ( Number , v43 , Number ) ; } else if ( @@v141@@ ) { gen_vfp_ulto ( Number , v43 , Number ) ; } else { gen_vfp_slto ( Number , v43 , Number ) ; } v12 = neon_reg_offset ( @@v34@@ , m ) ; tcg_gen_st_i32 ( cpu_F0s , cpu_env , v12 ) ; } } } else { if ( v148 == Number ) v10 = @@v141@@ == Number ; else v10 = @@v141@@ ; @@v166@@ = v10 ; if ( ( @@v36@@ & Number ) != Number ) return Number L ; v42 = v41 - ( Number << ( k + Number ) ) ; v39 = k + Number ; if ( v39 == Number ) { v157 = tcg_const_i64 ( v42 ) ; neon_load_reg64 ( cpu_V0 , @@v36@@ ) ; neon_load_reg64 ( cpu_V1 , @@v36@@ + Number ) ; for ( n = Number ; n <= Number ; ++ n ) { if ( n ) @@v136@@ = cpu_V1 ; else @@v136@@ = cpu_V0 ; if ( @@v140@@ ) { if ( @@v166@@ ) gen_helper_neon_rshl_u64 ( cpu_V0 , @@v136@@ , v157 ) ; else gen_helper_neon_rshl_s64 ( cpu_V0 , @@v136@@ , v157 ) ; } else if ( @@v166@@ ) { gen_helper_neon_shl_u64 ( cpu_V0 , @@v136@@ , v157 ) ; } else { gen_helper_neon_shl_s64 ( cpu_V0 , @@v136@@ , v157 ) ; } v75 = tcg_temp_new_i32 ( ) ; gen_neon_narrow_op ( v148 == Number , @@v141@@ , Number , v75 , cpu_V0 ) ; neon_store_reg ( @@v34@@ , n , v75 ) ; } tcg_temp_free_i64 ( v157 ) ; } else { if ( v39 == Number ) v65 = ( ( unsigned __int16 ) v42 << Number ) | ( unsigned __int16 ) v42 ; else v65 = v42 ; v102 = tcg_const_i32 ( v65 ) ; v142 = neon_load_reg ( @@v36@@ + Number , Number ) ; v145 = neon_load_reg ( @@v36@@ + Number , Number ) ; for ( ii = Number ; ii <= Number ; ++ ii ) { if ( ii ) { v76 = v142 ; gen_neon_shift_narrow ( v39 , v142 , v102 , @@v140@@ , @@v166@@ ) ; } else { v76 = neon_load_reg ( @@v36@@ , Number ) ; gen_neon_shift_narrow ( v39 , v76 , v102 , @@v140@@ , @@v166@@ ) ; } if ( ii ) { v131 = v145 ; gen_neon_shift_narrow ( v39 , v145 , v102 , @@v140@@ , @@v166@@ ) ; } else { v131 = neon_load_reg ( @@v36@@ , Number ) ; gen_neon_shift_narrow ( v39 , v131 , v102 , @@v140@@ , @@v166@@ ) ; } tcg_gen_concat_i32_i64 ( cpu_V0 , v76 , v131 ) ; tcg_temp_free_i32 ( v76 ) ; tcg_temp_free_i32 ( v131 ) ; v77 = tcg_temp_new_i32 ( ) ; gen_neon_narrow_op ( v148 == Number , @@v141@@ , v39 - Number , v77 , cpu_V0 ) ; neon_store_reg ( @@v34@@ , ii , v77 ) ; } tcg_temp_free_i32 ( v102 ) ; } } return Number L ; } if ( @@v140@@ && ( ( ( unsigned __int8 ) @@v36@@ | ( unsigned __int8 ) @@v34@@ ) & Number ) != Number ) return Number L ; if ( ! @@v141@@ && ( v148 == Number || v148 == Number ) ) return Number L ; if ( ( ( @@a3@@ >> Number ) & Number ) <= Number ) v41 -= Number << ( k + Number ) ; if ( k == Number ) { @@v62@@ = @@v140@@ + Number ; } else { if ( @@v140@@ ) v9 = Number ; else v9 = Number ; @@v62@@ = v9 ; } if ( k <= Number ) { if ( k >= Number ) { v64 = v41 ; } else if ( k ) { if ( k != Number ) goto LABEL_382 ; v64 = ( ( unsigned __int16 ) v41 << Number ) | ( unsigned __int16 ) v41 ; } else { v64 = ( ( ( ( unsigned __int8 ) v41 << Number ) | ( unsigned __int8 ) v41 ) << Number ) | ( ( unsigned __int8 ) v41 << Number ) | ( unsigned __int8 ) v41 ; } for ( jj = Number ; jj < @@v62@@ ; ++ jj ) { if ( k == Number ) { neon_load_reg64 ( cpu_V0 , jj + @@v36@@ ) ; tcg_gen_movi_i64 ( cpu_V1 , v64 ) ; switch ( v148 ) { case Number : case Number : if ( @@v141@@ ) goto LABEL_387 ; gen_helper_neon_shl_s64 ( cpu_V0 , cpu_V0 , cpu_V1 ) ; break ; case Number : case Number : if ( @@v141@@ ) gen_helper_neon_rshl_u64 ( cpu_V0 , cpu_V0 , cpu_V1 ) ; else gen_helper_neon_rshl_s64 ( cpu_V0 , cpu_V0 , cpu_V1 ) ; break ; case Number : case Number : LABEL_387 : gen_helper_neon_shl_u64 ( cpu_V0 , cpu_V0 , cpu_V1 ) ; break ; case Number : gen_helper_neon_qshlu_s64 ( cpu_V0 , cpu_env , cpu_V0 , cpu_V1 ) ; break ; case Number : if ( @@v141@@ ) gen_helper_neon_qshl_u64 ( cpu_V0 , cpu_env , cpu_V0 , cpu_V1 ) ; else gen_helper_neon_qshl_s64 ( cpu_V0 , cpu_env , cpu_V0 , cpu_V1 ) ; break ; default : break ; } if ( v148 == Number || v148 == Number ) { neon_load_reg64 ( cpu_V1 , jj + @@v34@@ ) ; tcg_gen_add_i64 ( cpu_V0 , cpu_V0 , cpu_V1 ) ; } else if ( v148 == Number || v148 == Number && @@v141@@ ) { neon_load_reg64 ( cpu_V1 , jj + @@v34@@ ) ; if ( v41 >= Number && v41 <= Number ) { if ( v148 == Number ) @@v175@@ = Number >> - ( char ) v41 ; else @@v175@@ = Number << v41 ; } else { @@v175@@ = Number L ; } tcg_gen_andi_i64 ( cpu_V1 , cpu_V1 , ~ @@v175@@ ) ; tcg_gen_or_i64 ( cpu_V0 , cpu_V0 , cpu_V1 ) ; } neon_store_reg64 ( cpu_V0 , jj + @@v34@@ ) ; } else { v74 = neon_load_reg ( @@v36@@ , jj ) ; v99 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v99 , v64 ) ; switch ( v148 ) { case Number : case Number : switch ( @@v141@@ | ( Number * k ) ) { case Number : gen_helper_neon_shl_s8 ( v74 , v74 , v99 ) ; goto LABEL_444 ; case Number : goto LABEL_413 ; case Number : gen_helper_neon_shl_s16 ( v74 , v74 , v99 ) ; goto LABEL_444 ; case Number : goto LABEL_428 ; case Number : gen_helper_neon_shl_s32 ( v74 , v74 , v99 ) ; goto LABEL_444 ; case Number : goto LABEL_416 ; default : result = Number L ; break ; } return result ; case Number : case Number : switch ( @@v141@@ | ( Number * k ) ) { case Number : gen_helper_neon_rshl_s8 ( v74 , v74 , v99 ) ; goto LABEL_444 ; case Number : gen_helper_neon_rshl_u8 ( v74 , v74 , v99 ) ; goto LABEL_444 ; case Number : gen_helper_neon_rshl_s16 ( v74 , v74 , v99 ) ; goto LABEL_444 ; case Number : gen_helper_neon_rshl_u16 ( v74 , v74 , v99 ) ; goto LABEL_444 ; case Number : gen_helper_neon_rshl_s32 ( v74 , v74 , v99 ) ; goto LABEL_444 ; case Number : gen_helper_neon_rshl_u32 ( v74 , v74 , v99 ) ; goto LABEL_444 ; default : result = Number L ; break ; } return result ; case Number : case Number : if ( k == Number ) { LABEL_416 : gen_helper_neon_shl_u32 ( v74 , v74 , v99 ) ; } else if ( k ) { LABEL_428 : gen_helper_neon_shl_u16 ( v74 , v74 , v99 ) ; } else { LABEL_413 : gen_helper_neon_shl_u8 ( v74 , v74 , v99 ) ; } goto LABEL_444 ; case Number : if ( k == Number ) { gen_helper_neon_qshlu_s32 ( v74 , cpu_env , v74 , v99 ) ; } else if ( k ) { gen_helper_neon_qshlu_s16 ( v74 , cpu_env , v74 , v99 ) ; } else { gen_helper_neon_qshlu_s8 ( v74 , cpu_env , v74 , v99 ) ; } goto LABEL_444 ; case Number : switch ( @@v141@@ | ( Number * k ) ) { case Number : gen_helper_neon_qshl_s8 ( v74 , cpu_env , v74 , v99 ) ; goto LABEL_444 ; case Number : gen_helper_neon_qshl_u8 ( v74 , cpu_env , v74 , v99 ) ; goto LABEL_444 ; case Number : gen_helper_neon_qshl_s16 ( v74 , cpu_env , v74 , v99 ) ; goto LABEL_444 ; case Number : gen_helper_neon_qshl_u16 ( v74 , cpu_env , v74 , v99 ) ; goto LABEL_444 ; case Number : gen_helper_neon_qshl_s32 ( v74 , cpu_env , v74 , v99 ) ; goto LABEL_444 ; case Number : gen_helper_neon_qshl_u32 ( v74 , cpu_env , v74 , v99 ) ; goto LABEL_444 ; default : result = Number L ; break ; } return result ; default : LABEL_444 : tcg_temp_free_i32 ( v99 ) ; if ( v148 == Number || v148 == Number ) { v100 = neon_load_reg ( @@v34@@ , jj ) ; gen_neon_add ( k , v74 , v100 ) ; tcg_temp_free_i32 ( v100 ) ; } else if ( v148 == Number || v148 == Number && @@v141@@ ) { if ( k == Number ) { if ( v41 >= Number && v41 <= Number ) { if ( v148 == Number ) v70 = Number >> - ( char ) v41 ; else v70 = Number << v41 ; } else { v70 = Number ; } } else if ( k ) { if ( v148 == Number ) v71 = Number >> - ( char ) v41 ; else v71 = ( unsigned __int16 ) ( Number << v41 ) ; v70 = ( v71 << Number ) | v71 ; } else { if ( v148 == Number ) v69 = Number >> - ( char ) v41 ; else v69 = ( unsigned __int8 ) ( Number << v41 ) ; v70 = ( ( ( v69 << Number ) | v69 ) << Number ) | ( v69 << Number ) | v69 ; } v101 = neon_load_reg ( @@v34@@ , jj ) ; tcg_gen_andi_i32 ( v74 , v74 , v70 ) ; tcg_gen_andi_i32 ( v101 , v101 , ~ v70 ) ; tcg_gen_or_i32 ( v74 , v74 , v101 ) ; tcg_temp_free_i32 ( v101 ) ; } neon_store_reg ( @@v34@@ , jj , v74 ) ; break ; } } } return Number L ; } LABEL_382 : abort ( ) ; } if ( v37 == Number ) { if ( @@v141@@ ) { if ( ( @@a3@@ & Number ) != Number ) { if ( ( @@a3@@ & Number ) != Number ) { if ( ( @@a3@@ & Number ) != Number ) return Number L ; if ( ( @@a3@@ & Number ) == Number || @@v140@@ && ( @@v34@@ & Number ) != Number ) return Number L ; if ( ( @@a3@@ & Number ) != Number ) v97 = neon_load_reg ( @@v36@@ , Number ) ; else v97 = neon_load_reg ( @@v36@@ , Number ) ; if ( ( @@a3@@ & Number ) != Number ) { gen_neon_dup_u8 ( v97 , Number * ( ( @@a3@@ >> Number ) & Number ) ) ; } else if ( ( @@a3@@ & Number ) != Number ) { if ( ( @@a3@@ & Number ) != Number ) gen_neon_dup_high16 ( v97 ) ; else gen_neon_dup_low16 ( v97 ) ; } for ( kk = Number ; ; ++ kk ) { v32 = @@v140@@ ? Number : Number ; if ( v32 <= kk ) break ; v127 = tcg_temp_new_i32 ( ) ; tcg_gen_mov_i32 ( v127 , v97 ) ; neon_store_reg ( @@v34@@ , kk , v127 ) ; } tcg_temp_free_i32 ( v97 ) ; } else { if ( ( int ) ( @@v35@@ + ( ( @@a3@@ >> Number ) & Number ) + Number ) > Number ) return Number L ; if ( ( @@a3@@ & Number ) != Number ) { v95 = neon_load_reg ( @@v34@@ , Number ) ; } else { v95 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v95 , Number ) ; } v126 = neon_load_reg ( @@v36@@ , Number ) ; v144 = tcg_const_i32 ( @@v35@@ ) ; v146 = tcg_const_i32 ( Number * ( ( ( @@a3@@ >> Number ) & Number ) + Number ) ) ; gen_helper_neon_tbl ( v126 , v126 , v95 , v144 , v146 ) ; tcg_temp_free_i32 ( v95 ) ; if ( ( @@a3@@ & Number ) != Number ) { v96 = neon_load_reg ( @@v34@@ , Number ) ; } else { v96 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v96 , Number ) ; } v135 = neon_load_reg ( @@v36@@ , Number ) ; gen_helper_neon_tbl ( v135 , v135 , v96 , v144 , v146 ) ; tcg_temp_free_i32 ( v146 ) ; tcg_temp_free_i32 ( v144 ) ; neon_store_reg ( @@v34@@ , Number , v126 ) ; neon_store_reg ( @@v34@@ , Number , v135 ) ; tcg_temp_free_i32 ( v96 ) ; } } else { v151 = ( @@a3@@ >> Number ) & Number | ( @@a3@@ >> Number ) & Number ; v40 = ( @@a3@@ >> Number ) & Number ; if ( ( ( ( int ) neon_2rm_sizes [ v151 ] >> ( ( @@a3@@ >> Number ) & Number ) ) & Number ) == Number ) return Number L ; if ( v151 != Number && v151 != Number && @@v140@@ && ( ( ( unsigned __int8 ) @@v34@@ | ( unsigned __int8 ) @@v36@@ ) & Number ) != Number ) return Number L ; switch ( v151 ) { case Number : for ( ll = Number ; ; ++ ll ) { v18 = @@v140@@ ? Number : Number ; if ( v18 <= ll ) break ; v87 = neon_load_reg ( @@v36@@ , Number * ll ) ; v108 = neon_load_reg ( @@v36@@ , Number * ll + Number ) ; if ( v40 != Number ) { if ( ( ( @@a3@@ >> Number ) & Number ) == Number ) abort ( ) ; if ( v40 ) gen_swap_half ( v87 ) ; else tcg_gen_bswap32_i32 ( v87 , v87 ) ; } neon_store_reg ( @@v34@@ , Number * ll + Number , v87 ) ; if ( v40 != Number ) { if ( v40 ) gen_swap_half ( v108 ) ; else tcg_gen_bswap32_i32 ( v108 , v108 ) ; } neon_store_reg ( @@v34@@ , Number * ll , v108 ) ; } return Number L ; case Number : case Number : case Number : case Number : for ( mm = Number ; @@v140@@ >= mm ; ++ mm ) { v19 = neon_load_reg ( @@v36@@ , Number * mm ) ; gen_neon_widen ( cpu_V0 , v19 , v40 , v151 & Number ) ; v88 = neon_load_reg ( @@v36@@ , Number * mm + Number ) ; gen_neon_widen ( cpu_V1 , v88 , v40 , v151 & Number ) ; if ( v40 == Number ) { tcg_gen_add_i64 ( cpu_V0 , cpu_V0 , cpu_V1 ) ; } else { if ( ( ( @@a3@@ >> Number ) & Number ) == Number ) abort ( ) ; if ( v40 ) gen_helper_neon_paddl_u32 ( cpu_V0 , cpu_V0 , cpu_V1 ) ; else gen_helper_neon_paddl_u16 ( cpu_V0 , cpu_V0 , cpu_V1 ) ; } if ( v151 > Number ) { neon_load_reg64 ( cpu_V1 , mm + @@v34@@ ) ; gen_neon_addl ( v40 ) ; } neon_store_reg64 ( cpu_V0 , mm + @@v34@@ ) ; } return Number L ; case Number : if ( v40 != Number ) goto LABEL_841 ; for ( @@nn@@ = Number ; ; @@nn@@ += Number ) { v20 = @@v140@@ ? Number : Number ; if ( v20 <= @@nn@@ ) break ; v89 = neon_load_reg ( @@v36@@ , @@nn@@ ) ; v109 = neon_load_reg ( @@v34@@ , @@nn@@ + Number ) ; neon_store_reg ( @@v36@@ , @@nn@@ , v109 ) ; neon_store_reg ( @@v34@@ , @@nn@@ + Number , v89 ) ; } return Number L ; case Number : return ( unsigned int ) gen_neon_unzip ( @@v34@@ , @@v36@@ , v40 , @@v140@@ ) != Number ; case Number : return ( unsigned int ) gen_neon_zip ( @@v34@@ , @@v36@@ , v40 , @@v140@@ ) != Number ; case Number : case Number : if ( ( @@v36@@ & Number ) != Number ) return Number L ; v110 = Number ; for ( i1 = Number ; i1 <= Number ; ++ i1 ) { neon_load_reg64 ( cpu_V0 , i1 + @@v36@@ ) ; v90 = tcg_temp_new_i32 ( ) ; gen_neon_narrow_op ( v151 == Number , @@v140@@ , v40 , v90 , cpu_V0 ) ; if ( i1 ) { neon_store_reg ( @@v34@@ , Number , v110 ) ; neon_store_reg ( @@v34@@ , Number , v90 ) ; } else { v110 = v90 ; } } return Number L ; case Number : if ( @@v140@@ || ( @@v34@@ & Number ) != Number ) return Number L ; v91 = neon_load_reg ( @@v36@@ , Number ) ; v111 = neon_load_reg ( @@v36@@ , Number ) ; for ( i2 = Number ; i2 <= Number ; ++ i2 ) { if ( i2 == Number ) v91 = v111 ; gen_neon_widen ( cpu_V0 , v91 , v40 , Number ) ; tcg_gen_shli_i64 ( cpu_V0 , cpu_V0 , Number << v40 ) ; neon_store_reg64 ( cpu_V0 , i2 + @@v34@@ ) ; } return Number L ; case Number : if ( ! arm_feature ( @@a1@@ , Number ) || @@v140@@ || ( @@v36@@ & Number ) != Number ) return Number L ; v92 = tcg_temp_new_i32 ( ) ; v112 = tcg_temp_new_i32 ( ) ; v21 = neon_reg_offset ( @@v36@@ , Number ) ; tcg_gen_ld_i32 ( cpu_F0s , cpu_env , v21 ) ; gen_helper_neon_fcvt_f32_to_f16 ( v92 , cpu_F0s , cpu_env ) ; v22 = neon_reg_offset ( @@v36@@ , Number ) ; tcg_gen_ld_i32 ( cpu_F0s , cpu_env , v22 ) ; gen_helper_neon_fcvt_f32_to_f16 ( v112 , cpu_F0s , cpu_env ) ; tcg_gen_shli_i32 ( v112 , v112 , Number ) ; tcg_gen_or_i32 ( v112 , v112 , v92 ) ; v23 = neon_reg_offset ( @@v36@@ , Number ) ; tcg_gen_ld_i32 ( cpu_F0s , cpu_env , v23 ) ; gen_helper_neon_fcvt_f32_to_f16 ( v92 , cpu_F0s , cpu_env ) ; v24 = neon_reg_offset ( @@v36@@ , Number ) ; tcg_gen_ld_i32 ( cpu_F0s , cpu_env , v24 ) ; neon_store_reg ( @@v34@@ , Number , v112 ) ; v113 = tcg_temp_new_i32 ( ) ; gen_helper_neon_fcvt_f32_to_f16 ( v113 , cpu_F0s , cpu_env ) ; tcg_gen_shli_i32 ( v113 , v113 , Number ) ; tcg_gen_or_i32 ( v113 , v113 , v92 ) ; neon_store_reg ( @@v34@@ , Number , v113 ) ; tcg_temp_free_i32 ( v92 ) ; return Number L ; case Number : if ( ! arm_feature ( @@a1@@ , Number ) || @@v140@@ || ( @@v34@@ & Number ) != Number ) return Number L ; v134 = tcg_temp_new_i32 ( ) ; v93 = neon_load_reg ( @@v36@@ , Number ) ; v114 = neon_load_reg ( @@v36@@ , Number ) ; tcg_gen_ext16u_i32 ( v134 , v93 ) ; gen_helper_neon_fcvt_f16_to_f32 ( cpu_F0s , v134 , cpu_env ) ; v25 = neon_reg_offset ( @@v34@@ , Number ) ; tcg_gen_st_i32 ( cpu_F0s , cpu_env , v25 ) ; tcg_gen_shri_i32 ( v134 , v93 , Number ) ; gen_helper_neon_fcvt_f16_to_f32 ( cpu_F0s , v134 , cpu_env ) ; v26 = neon_reg_offset ( @@v34@@ , Number ) ; tcg_gen_st_i32 ( cpu_F0s , cpu_env , v26 ) ; tcg_temp_free_i32 ( v93 ) ; tcg_gen_ext16u_i32 ( v134 , v114 ) ; gen_helper_neon_fcvt_f16_to_f32 ( cpu_F0s , v134 , cpu_env ) ; v27 = neon_reg_offset ( @@v34@@ , Number ) ; tcg_gen_st_i32 ( cpu_F0s , cpu_env , v27 ) ; tcg_gen_shri_i32 ( v134 , v114 , Number ) ; gen_helper_neon_fcvt_f16_to_f32 ( cpu_F0s , v134 , cpu_env ) ; v28 = neon_reg_offset ( @@v34@@ , Number ) ; tcg_gen_st_i32 ( cpu_F0s , cpu_env , v28 ) ; tcg_temp_free_i32 ( v114 ) ; tcg_temp_free_i32 ( v134 ) ; break ; default : LABEL_841 : for ( i3 = Number ; ; ++ i3 ) { v31 = @@v140@@ ? Number : Number ; if ( v31 <= i3 ) break ; if ( neon_2rm_is_float_op ( v151 ) ) { v29 = neon_reg_offset ( @@v36@@ , i3 ) ; tcg_gen_ld_i32 ( cpu_F0s , cpu_env , v29 ) ; v94 = Number ; } else { v94 = neon_load_reg ( @@v36@@ , i3 ) ; } switch ( v151 ) { case Number : if ( v40 ) { if ( v40 != Number ) abort ( ) ; gen_swap_half ( v94 ) ; } else { tcg_gen_bswap32_i32 ( v94 , v94 ) ; } break ; case Number : gen_rev16 ( v94 ) ; break ; case Number : if ( v40 == Number ) { gen_helper_neon_cls_s32 ( v94 , v94 ) ; } else { if ( ( ( @@a3@@ >> Number ) & Number ) == Number ) abort ( ) ; if ( v40 ) gen_helper_neon_cls_s16 ( v94 , v94 ) ; else gen_helper_neon_cls_s8 ( v94 , v94 ) ; } break ; case Number : if ( v40 == Number ) { gen_helper_clz ( v94 , v94 ) ; } else { if ( ( ( @@a3@@ >> Number ) & Number ) == Number ) abort ( ) ; if ( v40 ) gen_helper_neon_clz_u16 ( v94 , v94 ) ; else gen_helper_neon_clz_u8 ( v94 , v94 ) ; } break ; case Number : gen_helper_neon_cnt_u8 ( v94 , v94 ) ; break ; case Number : goto LABEL_898 ; case Number : if ( v40 == Number ) { gen_helper_neon_qabs_s32 ( v94 , cpu_env , v94 ) ; } else { if ( ( ( @@a3@@ >> Number ) & Number ) == Number ) abort ( ) ; if ( v40 ) gen_helper_neon_qabs_s16 ( v94 , cpu_env , v94 ) ; else gen_helper_neon_qabs_s8 ( v94 , cpu_env , v94 ) ; } break ; case Number : if ( v40 == Number ) { gen_helper_neon_qneg_s32 ( v94 , cpu_env , v94 ) ; } else { if ( ( ( @@a3@@ >> Number ) & Number ) == Number ) abort ( ) ; if ( v40 ) gen_helper_neon_qneg_s16 ( v94 , cpu_env , v94 ) ; else gen_helper_neon_qneg_s8 ( v94 , cpu_env , v94 ) ; } break ; case Number : case Number : v115 = tcg_const_i32 ( Number L ) ; if ( v40 == Number ) { gen_helper_neon_cgt_s32 ( v94 , v94 , v115 ) ; } else { if ( ( ( @@a3@@ >> Number ) & Number ) == Number ) abort ( ) ; if ( v40 ) gen_helper_neon_cgt_s16 ( v94 , v94 , v115 ) ; else gen_helper_neon_cgt_s8 ( v94 , v94 , v115 ) ; } tcg_temp_free_i32 ( v115 ) ; if ( v151 == Number ) goto LABEL_898 ; break ; case Number : case Number : v116 = tcg_const_i32 ( Number L ) ; if ( v40 == Number ) { gen_helper_neon_cge_s32 ( v94 , v94 , v116 ) ; } else { if ( ( ( @@a3@@ >> Number ) & Number ) == Number ) abort ( ) ; if ( v40 ) gen_helper_neon_cge_s16 ( v94 , v94 , v116 ) ; else gen_helper_neon_cge_s8 ( v94 , v94 , v116 ) ; } tcg_temp_free_i32 ( v116 ) ; if ( v151 == Number ) LABEL_898 : tcg_gen_not_i32 ( v94 , v94 ) ; break ; case Number : v117 = tcg_const_i32 ( Number L ) ; if ( v40 == Number ) { gen_helper_neon_ceq_u32 ( v94 , v94 , v117 ) ; } else { if ( ( ( @@a3@@ >> Number ) & Number ) == Number ) abort ( ) ; if ( v40 ) gen_helper_neon_ceq_u16 ( v94 , v94 , v117 ) ; else gen_helper_neon_ceq_u8 ( v94 , v94 , v117 ) ; } tcg_temp_free_i32 ( v117 ) ; break ; case Number : if ( v40 == Number ) { gen_helper_abs ( v94 , v94 ) ; } else { if ( ( ( @@a3@@ >> Number ) & Number ) == Number ) abort ( ) ; if ( v40 ) gen_helper_neon_abs_s16 ( v94 , v94 ) ; else gen_helper_neon_abs_s8 ( v94 , v94 ) ; } break ; case Number : v118 = tcg_const_i32 ( Number L ) ; gen_neon_rsb ( v40 , v94 , v118 ) ; tcg_temp_free_i32 ( v118 ) ; break ; case Number : @@v156@@ = get_fpstatus_ptr ( Number ) ; v119 = tcg_const_i32 ( Number L ) ; gen_helper_neon_cgt_f32 ( v94 , v94 , v119 , @@v156@@ ) ; tcg_temp_free_i32 ( v119 ) ; tcg_temp_free_i64 ( @@v156@@ ) ; break ; case Number : @@v155@@ = get_fpstatus_ptr ( Number ) ; v120 = tcg_const_i32 ( Number L ) ; gen_helper_neon_cge_f32 ( v94 , v94 , v120 , @@v155@@ ) ; tcg_temp_free_i32 ( v120 ) ; tcg_temp_free_i64 ( @@v155@@ ) ; break ; case Number : @@v154@@ = get_fpstatus_ptr ( Number ) ; v121 = tcg_const_i32 ( Number L ) ; gen_helper_neon_ceq_f32 ( v94 , v94 , v121 , @@v154@@ ) ; tcg_temp_free_i32 ( v121 ) ; tcg_temp_free_i64 ( @@v154@@ ) ; break ; case Number : @@v153@@ = get_fpstatus_ptr ( Number ) ; v122 = tcg_const_i32 ( Number L ) ; gen_helper_neon_cge_f32 ( v94 , v122 , v94 , @@v153@@ ) ; tcg_temp_free_i32 ( v122 ) ; tcg_temp_free_i64 ( @@v153@@ ) ; break ; case Number : @@v152@@ = get_fpstatus_ptr ( Number ) ; v123 = tcg_const_i32 ( Number L ) ; gen_helper_neon_cgt_f32 ( v94 , v123 , v94 , @@v152@@ ) ; tcg_temp_free_i32 ( v123 ) ; tcg_temp_free_i64 ( @@v152@@ ) ; break ; case Number : gen_vfp_abs ( Number ) ; break ; case Number : gen_vfp_neg ( Number ) ; break ; case Number : v124 = neon_load_reg ( @@v34@@ , i3 ) ; neon_store_reg ( @@v36@@ , i3 , v124 ) ; break ; case Number : v125 = neon_load_reg ( @@v34@@ , i3 ) ; if ( v40 ) { if ( v40 != Number ) abort ( ) ; gen_neon_trn_u16 ( v94 , v125 ) ; } else { gen_neon_trn_u8 ( v94 , v125 ) ; } neon_store_reg ( @@v36@@ , i3 , v125 ) ; break ; case Number : gen_helper_recpe_u32 ( v94 , v94 , cpu_env ) ; break ; case Number : gen_helper_rsqrte_u32 ( v94 , v94 , cpu_env ) ; break ; case Number : gen_helper_recpe_f32 ( cpu_F0s , cpu_F0s , cpu_env ) ; break ; case Number : gen_helper_rsqrte_f32 ( cpu_F0s , cpu_F0s , cpu_env ) ; break ; case Number : gen_vfp_sito ( Number , Number ) ; break ; case Number : gen_vfp_uito ( Number , Number ) ; break ; case Number : gen_vfp_tosiz ( Number , Number ) ; break ; case Number : gen_vfp_touiz ( Number , Number ) ; break ; default : abort ( ) ; } if ( neon_2rm_is_float_op ( v151 ) ) { v30 = neon_reg_offset ( @@v34@@ , i3 ) ; tcg_gen_st_i32 ( cpu_F0s , cpu_env , v30 ) ; } else { neon_store_reg ( @@v34@@ , i3 , v94 ) ; } } return Number L ; } } } else { v68 = ( @@a3@@ >> Number ) & Number ; if ( v68 > Number && ! @@v140@@ ) return Number L ; if ( @@v140@@ && ( ( ( unsigned __int8 ) @@v36@@ | ( unsigned __int8 ) ( @@v35@@ | @@v34@@ ) ) & Number ) != Number ) return Number L ; if ( v68 ) { if ( v68 == Number ) { neon_load_reg64 ( cpu_V0 , @@v35@@ + Number ) ; if ( @@v140@@ ) neon_load_reg64 ( cpu_V1 , @@v36@@ ) ; } else if ( @@v140@@ ) { v158 = tcg_temp_new_i64 ( ) ; if ( v68 > Number ) { neon_load_reg64 ( cpu_V0 , @@v35@@ + Number ) ; neon_load_reg64 ( v158 , @@v36@@ ) ; } else { neon_load_reg64 ( cpu_V0 , @@v35@@ ) ; neon_load_reg64 ( v158 , @@v35@@ + Number ) ; } tcg_gen_shri_i64 ( cpu_V0 , cpu_V0 , Number * ( BYTE1 ( @@a3@@ ) & Number ) ) ; tcg_gen_shli_i64 ( cpu_V1 , v158 , Number * ( Number - ( BYTE1 ( @@a3@@ ) & Number ) ) ) ; tcg_gen_or_i64 ( cpu_V0 , cpu_V0 , cpu_V1 ) ; if ( v68 > Number ) { neon_load_reg64 ( cpu_V1 , @@v36@@ + Number ) ; v68 -= Number ; } else { neon_load_reg64 ( cpu_V1 , @@v36@@ ) ; } tcg_gen_shli_i64 ( cpu_V1 , cpu_V1 , Number * ( Number - v68 ) ) ; tcg_gen_shri_i64 ( v158 , v158 , Number * v68 ) ; tcg_gen_or_i64 ( cpu_V1 , cpu_V1 , v158 ) ; tcg_temp_free_i64 ( v158 ) ; } else { neon_load_reg64 ( cpu_V0 , @@v35@@ ) ; tcg_gen_shri_i64 ( cpu_V0 , cpu_V0 , Number * v68 ) ; neon_load_reg64 ( cpu_V1 , @@v36@@ ) ; tcg_gen_shli_i64 ( cpu_V1 , cpu_V1 , Number * ( Number - v68 ) ) ; tcg_gen_or_i64 ( cpu_V0 , cpu_V0 , cpu_V1 ) ; } } else { neon_load_reg64 ( cpu_V0 , @@v35@@ ) ; if ( @@v140@@ ) neon_load_reg64 ( cpu_V1 , @@v35@@ + Number ) ; } neon_store_reg64 ( cpu_V0 , @@v34@@ ) ; if ( @@v140@@ ) neon_store_reg64 ( cpu_V1 , @@v34@@ + Number ) ; } return Number L ; } v150 = ( @@a3@@ >> Number ) & Number ; if ( ( @@a3@@ & Number ) != Number ) { if ( ! v37 ) return Number L ; switch ( v150 ) { case Number : case Number : case Number : case Number : case Number : goto LABEL_680 ; case Number : case Number : case Number : if ( v37 == Number ) return Number L ; LABEL_680 : if ( @@v141@@ && ( ( ( unsigned __int8 ) @@v35@@ | ( unsigned __int8 ) @@v34@@ ) & Number ) != Number ) return Number L ; v84 = neon_get_scalar ( v37 , @@v36@@ ) ; neon_store_scratch ( Number , v84 ) ; for ( i4 = Number ; ; ++ i4 ) { v17 = @@v141@@ ? Number : Number ; if ( v17 <= i4 ) break ; v85 = neon_load_scratch ( Number ) ; v105 = neon_load_reg ( @@v35@@ , i4 ) ; if ( v150 == Number ) { if ( v37 == Number ) gen_helper_neon_qdmulh_s16 ( v85 , cpu_env , v85 , v105 ) ; else gen_helper_neon_qdmulh_s32 ( v85 , cpu_env , v85 , v105 ) ; } else if ( v150 == Number ) { if ( v37 == Number ) gen_helper_neon_qrdmulh_s16 ( v85 , cpu_env , v85 , v105 ) ; else gen_helper_neon_qrdmulh_s32 ( v85 , cpu_env , v85 , v105 ) ; } else if ( ( @@a3@@ & Number ) != Number ) { @@v159@@ = get_fpstatus_ptr ( Number ) ; gen_helper_vfp_muls ( v85 , v85 , v105 , @@v159@@ ) ; tcg_temp_free_i64 ( @@v159@@ ) ; } else if ( v37 == Number ) { tcg_gen_mul_i32 ( v85 , v85 , v105 ) ; } else { gen_helper_neon_mul_u16 ( v85 , v85 , v105 ) ; } tcg_temp_free_i32 ( v105 ) ; if ( ( ( @@a3@@ >> Number ) & Number ) <= Number ) { v106 = neon_load_reg ( @@v34@@ , i4 ) ; if ( v150 == Number ) { @@v160@@ = get_fpstatus_ptr ( Number ) ; gen_helper_vfp_subs ( v85 , v106 , v85 , @@v160@@ ) ; tcg_temp_free_i64 ( @@v160@@ ) ; } else { if ( ( ( @@a3@@ >> Number ) & Number ) > Number ) goto LABEL_708 ; if ( v150 == Number ) { gen_neon_rsb ( v37 , v85 , v106 ) ; } else if ( v150 ) { if ( v150 != Number ) LABEL_708 : abort ( ) ; @@v161@@ = get_fpstatus_ptr ( Number ) ; gen_helper_vfp_adds ( v85 , v85 , v106 , @@v161@@ ) ; tcg_temp_free_i64 ( @@v161@@ ) ; } else { gen_neon_add ( v37 , v85 , v106 ) ; } } tcg_temp_free_i32 ( v106 ) ; } neon_store_reg ( @@v34@@ , i4 , v85 ) ; } break ; case Number : case Number : case Number : goto LABEL_718 ; case Number : case Number : case Number : if ( @@v141@@ == Number ) return Number L ; LABEL_718 : if ( ( @@v34@@ & Number ) != Number ) return Number L ; v107 = neon_get_scalar ( v37 , @@v36@@ ) ; v143 = tcg_temp_new_i32 ( ) ; tcg_gen_mov_i32 ( v143 , v107 ) ; v133 = neon_load_reg ( @@v35@@ , Number ) ; for ( i5 = Number ; i5 <= Number ; ++ i5 ) { if ( i5 ) { v107 = v143 ; gen_neon_mull ( cpu_V0 , v133 , v143 , v37 , @@v141@@ ) ; } else { v86 = neon_load_reg ( @@v35@@ , Number ) ; gen_neon_mull ( cpu_V0 , v86 , v107 , v37 , @@v141@@ ) ; } if ( v150 != Number ) neon_load_reg64 ( cpu_V1 , i5 + @@v34@@ ) ; switch ( v150 ) { case Number : goto LABEL_728 ; case Number : case Number : gen_neon_addl_saturate ( cpu_V0 , cpu_V0 , v37 ) ; if ( v150 == Number ) gen_neon_negl ( cpu_V0 , v37 ) ; gen_neon_addl_saturate ( cpu_V0 , cpu_V1 , v37 ) ; break ; case Number : gen_neon_negl ( cpu_V0 , v37 ) ; LABEL_728 : gen_neon_addl ( v37 ) ; break ; case Number : break ; case Number : gen_neon_addl_saturate ( cpu_V0 , cpu_V0 , v37 ) ; break ; default : abort ( ) ; } neon_store_reg64 ( cpu_V0 , i5 + @@v34@@ ) ; } return Number L ; default : return Number L ; } return Number L ; } @@v162@@ = * ( ( _DWORD * ) & neon_3reg_wide_23584 + Number * v150 ) ; @@v163@@ = * ( ( _DWORD * ) & unk_329E4 + Number * v150 ) ; @@v164@@ = * ( ( _DWORD * ) & unk_329E8 + Number * v150 ) ; @@v165@@ = dword_329EC [ Number * v150 ] ; if ( ( @@v165@@ & Number ) != Number && v37 || ( @@v165@@ & Number ) != Number && ! v37 || ( @@v165@@ & Number ) != Number && @@v141@@ ) return Number L ; if ( @@v163@@ && ( @@v35@@ & Number ) != Number || @@v164@@ && ( @@v36@@ & Number ) != Number || ! @@v164@@ && ( @@v34@@ & Number ) != Number ) return Number L ; if ( @@v34@@ != @@v36@@ || @@v164@@ ) { if ( @@v34@@ == @@v35@@ && ! @@v163@@ ) { v81 = neon_load_reg ( @@v35@@ , Number ) ; neon_store_scratch ( Number , v81 ) ; } } else { v80 = neon_load_reg ( @@v36@@ , Number ) ; neon_store_scratch ( Number , v80 ) ; } v132 = Number ; for ( i6 = Number ; ; ++ i6 ) { if ( i6 > Number ) return Number L ; if ( @@v163@@ ) { neon_load_reg64 ( cpu_V0 , i6 + @@v35@@ ) ; v82 = Number ; } else { if ( i6 == Number && @@v34@@ == @@v35@@ ) v82 = neon_load_scratch ( Number ) ; else v82 = neon_load_reg ( @@v35@@ , i6 ) ; if ( @@v162@@ ) gen_neon_widen ( cpu_V0 , v82 , v37 , @@v141@@ ) ; } if ( @@v164@@ ) { neon_load_reg64 ( cpu_V1 , i6 + @@v36@@ ) ; v104 = Number ; } else { if ( i6 == Number && @@v34@@ == @@v36@@ ) v104 = neon_load_scratch ( Number ) ; else v104 = neon_load_reg ( @@v36@@ , i6 ) ; if ( @@v162@@ ) gen_neon_widen ( cpu_V1 , v104 , v37 , @@v141@@ ) ; } switch ( v150 ) { case Number : case Number : case Number : gen_neon_addl ( v37 ) ; break ; case Number : case Number : case Number : gen_neon_subl ( v37 ) ; break ; case Number : case Number : switch ( @@v141@@ | ( Number * v37 ) ) { case Number : gen_helper_neon_abdl_s16 ( cpu_V0 , v82 , v104 ) ; break ; case Number : gen_helper_neon_abdl_u16 ( cpu_V0 , v82 , v104 ) ; break ; case Number : gen_helper_neon_abdl_s32 ( cpu_V0 , v82 , v104 ) ; break ; case Number : gen_helper_neon_abdl_u32 ( cpu_V0 , v82 , v104 ) ; break ; case Number : gen_helper_neon_abdl_s64 ( cpu_V0 , v82 , v104 ) ; break ; case Number : gen_helper_neon_abdl_u64 ( cpu_V0 , v82 , v104 ) ; break ; default : abort ( ) ; } tcg_temp_free_i32 ( v104 ) ; tcg_temp_free_i32 ( v82 ) ; break ; case Number : case Number : case Number : case Number : case Number : case Number : gen_neon_mull ( cpu_V0 , v82 , v104 , v37 , @@v141@@ ) ; break ; case Number : gen_helper_neon_mull_p8 ( cpu_V0 , v82 , v104 ) ; tcg_temp_free_i32 ( v104 ) ; tcg_temp_free_i32 ( v82 ) ; break ; default : abort ( ) ; } if ( v150 == Number ) { gen_neon_addl_saturate ( cpu_V0 , cpu_V0 , v37 ) ; neon_store_reg64 ( cpu_V0 , i6 + @@v34@@ ) ; continue ; } if ( v150 == Number || ( ( @@a3@@ >> Number ) & Number ) > Number && ( ( @@a3@@ >> Number ) & Number ) <= Number ) break ; if ( v150 != Number && v150 != Number ) goto LABEL_671 ; v83 = tcg_temp_new_i32 ( ) ; if ( @@v141@@ ) { if ( v37 == Number ) { tcg_gen_addi_i64 ( cpu_V0 , cpu_V0 , Number ) ; tcg_gen_shri_i64 ( cpu_V0 , cpu_V0 , Number L ) ; tcg_gen_trunc_i64_i32 ( v83 , cpu_V0 ) ; } else if ( v37 ) { gen_helper_neon_narrow_round_high_u16 ( v83 , cpu_V0 ) ; } else { gen_helper_neon_narrow_round_high_u8 ( v83 , cpu_V0 ) ; } } else if ( v37 == Number ) { tcg_gen_shri_i64 ( cpu_V0 , cpu_V0 , Number L ) ; tcg_gen_trunc_i64_i32 ( v83 , cpu_V0 ) ; } else if ( v37 ) { gen_helper_neon_narrow_high_u16 ( v83 , cpu_V0 ) ; } else { gen_helper_neon_narrow_high_u8 ( v83 , cpu_V0 ) ; } if ( i6 ) { neon_store_reg ( @@v34@@ , Number , v132 ) ; neon_store_reg ( @@v34@@ , Number , v83 ) ; } else { v132 = v83 ; } LABEL_672 : ; } neon_load_reg64 ( cpu_V1 , i6 + @@v34@@ ) ; switch ( v150 ) { case Number : case Number : goto LABEL_650 ; case Number : case Number : gen_neon_addl_saturate ( cpu_V0 , cpu_V0 , v37 ) ; if ( v150 == Number ) gen_neon_negl ( cpu_V0 , v37 ) ; gen_neon_addl_saturate ( cpu_V0 , cpu_V1 , v37 ) ; break ; case Number : gen_neon_negl ( cpu_V0 , v37 ) ; LABEL_650 : gen_neon_addl ( v37 ) ; break ; default : abort ( ) ; } LABEL_671 : neon_store_reg64 ( cpu_V0 , i6 + @@v34@@ ) ; goto LABEL_672 ; } v147 = ( @@a3@@ >> Number ) & Number | ( @@a3@@ >> Number ) & Number ; if ( ( ( ( int ) neon_3r_sizes [ v147 ] >> v37 ) & Number ) == Number ) return Number L ; if ( @@v140@@ && ( ( ( unsigned __int8 ) @@v36@@ | ( unsigned __int8 ) ( @@v35@@ | @@v34@@ ) ) & Number ) != Number ) return Number L ; if ( v37 != Number || v147 == Number ) { @@v63@@ = Number ; switch ( v147 ) { case Number : case Number : case Number : case Number : @@v167@@ = @@v35@@ ; @@v35@@ = @@v36@@ ; @@v36@@ = @@v167@@ ; goto LABEL_80 ; case Number : if ( ! @@v141@@ || ! v37 ) goto LABEL_80 ; return Number L ; case Number : case Number : goto LABEL_60 ; case Number : if ( @@v141@@ ) return Number L ; LABEL_60 : @@v63@@ = Number ; LABEL_80 : if ( @@v63@@ && @@v140@@ ) return Number L ; v45 = Number ; while ( Number ) { v7 = @@v140@@ ? Number : Number ; if ( v7 <= v45 ) break ; if ( @@v63@@ ) { if ( v45 > Number ) { v72 = neon_load_reg ( @@v36@@ , Number ) ; v98 = neon_load_reg ( @@v36@@ , Number ) ; } else { v72 = neon_load_reg ( @@v35@@ , Number ) ; v98 = neon_load_reg ( @@v35@@ , Number ) ; } } else { v72 = neon_load_reg ( @@v35@@ , v45 ) ; v98 = neon_load_reg ( @@v36@@ , v45 ) ; } switch ( v147 ) { case Number : switch ( @@v141@@ | ( Number * v37 ) ) { case Number : gen_helper_neon_hadd_s8 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_hadd_u8 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_hadd_s16 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_hadd_u16 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_hadd_s32 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_hadd_u32 ( v72 , v72 , v98 ) ; goto LABEL_331 ; default : return Number L ; } case Number : switch ( @@v141@@ | ( Number * v37 ) ) { case Number : gen_helper_neon_qadd_s8 ( v72 , cpu_env , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_qadd_u8 ( v72 , cpu_env , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_qadd_s16 ( v72 , cpu_env , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_qadd_u16 ( v72 , cpu_env , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_qadd_s32 ( v72 , cpu_env , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_qadd_u32 ( v72 , cpu_env , v72 , v98 ) ; goto LABEL_331 ; default : return Number L ; } case Number : switch ( @@v141@@ | ( Number * v37 ) ) { case Number : gen_helper_neon_rhadd_s8 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_rhadd_u8 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_rhadd_s16 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_rhadd_u16 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_rhadd_s32 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_rhadd_u32 ( v72 , v72 , v98 ) ; goto LABEL_331 ; default : return Number L ; } case Number : switch ( v37 | ( Number * @@v141@@ ) ) { case Number : tcg_gen_and_i32 ( v72 , v72 , v98 ) ; break ; case Number : tcg_gen_andc_i32 ( v72 , v72 , v98 ) ; break ; case Number : tcg_gen_or_i32 ( v72 , v72 , v98 ) ; break ; case Number : tcg_gen_orc_i32 ( v72 , v72 , v98 ) ; break ; case Number : tcg_gen_xor_i32 ( v72 , v72 , v98 ) ; break ; case Number : v128 = neon_load_reg ( @@v34@@ , v45 ) ; gen_neon_bsl ( v72 , v72 , v98 , v128 ) ; tcg_temp_free_i32 ( v128 ) ; break ; case Number : v129 = neon_load_reg ( @@v34@@ , v45 ) ; gen_neon_bsl ( v72 , v72 , v129 , v98 ) ; tcg_temp_free_i32 ( v129 ) ; break ; case Number : v130 = neon_load_reg ( @@v34@@ , v45 ) ; gen_neon_bsl ( v72 , v130 , v72 , v98 ) ; tcg_temp_free_i32 ( v130 ) ; break ; default : goto LABEL_331 ; } goto LABEL_331 ; case Number : switch ( @@v141@@ | ( Number * v37 ) ) { case Number : gen_helper_neon_hsub_s8 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_hsub_u8 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_hsub_s16 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_hsub_u16 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_hsub_s32 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_hsub_u32 ( v72 , v72 , v98 ) ; goto LABEL_331 ; default : return Number L ; } case Number : switch ( @@v141@@ | ( Number * v37 ) ) { case Number : gen_helper_neon_qsub_s8 ( v72 , cpu_env , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_qsub_u8 ( v72 , cpu_env , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_qsub_s16 ( v72 , cpu_env , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_qsub_u16 ( v72 , cpu_env , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_qsub_s32 ( v72 , cpu_env , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_qsub_u32 ( v72 , cpu_env , v72 , v98 ) ; goto LABEL_331 ; default : return Number L ; } case Number : switch ( @@v141@@ | ( Number * v37 ) ) { case Number : gen_helper_neon_cgt_s8 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_cgt_u8 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_cgt_s16 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_cgt_u16 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_cgt_s32 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_cgt_u32 ( v72 , v72 , v98 ) ; goto LABEL_331 ; default : return Number L ; } case Number : switch ( @@v141@@ | ( Number * v37 ) ) { case Number : gen_helper_neon_cge_s8 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_cge_u8 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_cge_s16 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_cge_u16 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_cge_s32 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_cge_u32 ( v72 , v72 , v98 ) ; goto LABEL_331 ; default : return Number L ; } case Number : switch ( @@v141@@ | ( Number * v37 ) ) { case Number : gen_helper_neon_shl_s8 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_shl_u8 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_shl_s16 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_shl_u16 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_shl_s32 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_shl_u32 ( v72 , v72 , v98 ) ; goto LABEL_331 ; default : return Number L ; } case Number : switch ( @@v141@@ | ( Number * v37 ) ) { case Number : gen_helper_neon_qshl_s8 ( v72 , cpu_env , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_qshl_u8 ( v72 , cpu_env , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_qshl_s16 ( v72 , cpu_env , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_qshl_u16 ( v72 , cpu_env , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_qshl_s32 ( v72 , cpu_env , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_qshl_u32 ( v72 , cpu_env , v72 , v98 ) ; goto LABEL_331 ; default : return Number L ; } case Number : switch ( @@v141@@ | ( Number * v37 ) ) { case Number : gen_helper_neon_rshl_s8 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_rshl_u8 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_rshl_s16 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_rshl_u16 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_rshl_s32 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_rshl_u32 ( v72 , v72 , v98 ) ; goto LABEL_331 ; default : return Number L ; } case Number : switch ( @@v141@@ | ( Number * v37 ) ) { case Number : gen_helper_neon_qrshl_s8 ( v72 , cpu_env , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_qrshl_u8 ( v72 , cpu_env , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_qrshl_s16 ( v72 , cpu_env , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_qrshl_u16 ( v72 , cpu_env , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_qrshl_s32 ( v72 , cpu_env , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_qrshl_u32 ( v72 , cpu_env , v72 , v98 ) ; goto LABEL_331 ; default : return Number L ; } case Number : switch ( @@v141@@ | ( Number * v37 ) ) { case Number : gen_helper_neon_max_s8 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_max_u8 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_max_s16 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_max_u16 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : goto LABEL_192 ; case Number : goto LABEL_193 ; default : return Number L ; } case Number : switch ( @@v141@@ | ( Number * v37 ) ) { case Number : gen_helper_neon_min_s8 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_min_u8 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_min_s16 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_min_u16 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : goto LABEL_200 ; case Number : goto LABEL_201 ; default : return Number L ; } case Number : switch ( @@v141@@ | ( Number * v37 ) ) { case Number : gen_helper_neon_abd_s8 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_abd_u8 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_abd_s16 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_abd_u16 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_abd_s32 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_abd_u32 ( v72 , v72 , v98 ) ; goto LABEL_331 ; default : return Number L ; } case Number : switch ( @@v141@@ | ( Number * v37 ) ) { case Number : gen_helper_neon_abd_s8 ( v72 , v72 , v98 ) ; goto LABEL_219 ; case Number : gen_helper_neon_abd_u8 ( v72 , v72 , v98 ) ; goto LABEL_219 ; case Number : gen_helper_neon_abd_s16 ( v72 , v72 , v98 ) ; goto LABEL_219 ; case Number : gen_helper_neon_abd_u16 ( v72 , v72 , v98 ) ; goto LABEL_219 ; case Number : gen_helper_neon_abd_s32 ( v72 , v72 , v98 ) ; goto LABEL_219 ; case Number : gen_helper_neon_abd_u32 ( v72 , v72 , v98 ) ; LABEL_219 : tcg_temp_free_i32 ( v98 ) ; v98 = neon_load_reg ( @@v34@@ , v45 ) ; gen_neon_add ( v37 , v72 , v98 ) ; goto LABEL_331 ; default : return Number L ; } case Number : if ( ! @@v141@@ ) goto LABEL_221 ; if ( v37 == Number ) { tcg_gen_sub_i32 ( v72 , v72 , v98 ) ; } else { if ( ( ( @@a3@@ >> Number ) & Number ) == Number ) abort ( ) ; if ( v37 ) gen_helper_neon_sub_u16 ( v72 , v72 , v98 ) ; else gen_helper_neon_sub_u8 ( v72 , v72 , v98 ) ; } goto LABEL_331 ; case Number : if ( @@v141@@ ) { if ( v37 == Number ) { gen_helper_neon_ceq_u32 ( v72 , v72 , v98 ) ; } else { if ( ( ( @@a3@@ >> Number ) & Number ) == Number ) abort ( ) ; if ( v37 ) gen_helper_neon_ceq_u16 ( v72 , v72 , v98 ) ; else gen_helper_neon_ceq_u8 ( v72 , v72 , v98 ) ; } } else if ( v37 == Number ) { gen_helper_neon_tst_u32 ( v72 , v72 , v98 ) ; } else { if ( ( ( @@a3@@ >> Number ) & Number ) == Number ) abort ( ) ; if ( v37 ) gen_helper_neon_tst_u16 ( v72 , v72 , v98 ) ; else gen_helper_neon_tst_u8 ( v72 , v72 , v98 ) ; } goto LABEL_331 ; case Number : if ( v37 == Number ) { tcg_gen_mul_i32 ( v72 , v72 , v98 ) ; } else { if ( ( ( @@a3@@ >> Number ) & Number ) == Number ) abort ( ) ; if ( v37 ) gen_helper_neon_mul_u16 ( v72 , v72 , v98 ) ; else gen_helper_neon_mul_u8 ( v72 , v72 , v98 ) ; } tcg_temp_free_i32 ( v98 ) ; v98 = neon_load_reg ( @@v34@@ , v45 ) ; if ( @@v141@@ ) gen_neon_rsb ( v37 , v72 , v98 ) ; else LABEL_221 : gen_neon_add ( v37 , v72 , v98 ) ; goto LABEL_331 ; case Number : if ( @@v141@@ ) { gen_helper_neon_mul_p8 ( v72 , v72 , v98 ) ; } else if ( v37 == Number ) { tcg_gen_mul_i32 ( v72 , v72 , v98 ) ; } else { if ( ( ( @@a3@@ >> Number ) & Number ) == Number ) abort ( ) ; if ( v37 ) gen_helper_neon_mul_u16 ( v72 , v72 , v98 ) ; else gen_helper_neon_mul_u8 ( v72 , v72 , v98 ) ; } goto LABEL_331 ; case Number : switch ( @@v141@@ | ( Number * v37 ) ) { case Number : gen_helper_neon_pmax_s8 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_pmax_u8 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_pmax_s16 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_pmax_u16 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : LABEL_192 : gen_helper_neon_max_s32 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : LABEL_193 : gen_helper_neon_max_u32 ( v72 , v72 , v98 ) ; goto LABEL_331 ; default : return Number L ; } case Number : switch ( @@v141@@ | ( Number * v37 ) ) { case Number : gen_helper_neon_pmin_s8 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_pmin_u8 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_pmin_s16 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : gen_helper_neon_pmin_u16 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : LABEL_200 : gen_helper_neon_min_s32 ( v72 , v72 , v98 ) ; goto LABEL_331 ; case Number : LABEL_201 : gen_helper_neon_min_u32 ( v72 , v72 , v98 ) ; goto LABEL_331 ; default : return Number L ; } case Number : if ( @@v141@@ ) { if ( v37 == Number ) { gen_helper_neon_qrdmulh_s16 ( v72 , cpu_env , v72 , v98 ) ; } else { if ( v37 != Number ) abort ( ) ; gen_helper_neon_qrdmulh_s32 ( v72 , cpu_env , v72 , v98 ) ; } } else if ( v37 == Number ) { gen_helper_neon_qdmulh_s16 ( v72 , cpu_env , v72 , v98 ) ; } else { if ( v37 != Number ) abort ( ) ; gen_helper_neon_qdmulh_s32 ( v72 , cpu_env , v72 , v98 ) ; } goto LABEL_331 ; case Number : if ( v37 == Number ) { tcg_gen_add_i32 ( v72 , v72 , v98 ) ; } else { if ( ( ( @@a3@@ >> Number ) & Number ) == Number ) abort ( ) ; if ( v37 ) gen_helper_neon_padd_u16 ( v72 , v72 , v98 ) ; else gen_helper_neon_padd_u8 ( v72 , v72 , v98 ) ; } goto LABEL_331 ; case Number : @@v173@@ = get_fpstatus_ptr ( Number ) ; @@v174@@ = neon_load_reg ( @@v34@@ , v45 ) ; if ( v37 ) gen_helper_vfp_negs ( v72 , v72 ) ; gen_helper_vfp_muladds ( v72 , v72 , v98 , @@v174@@ , @@v173@@ ) ; tcg_temp_free_i32 ( @@v174@@ ) ; tcg_temp_free_i64 ( @@v173@@ ) ; goto LABEL_331 ; case Number : @@v172@@ = get_fpstatus_ptr ( Number ) ; v6 = v37 | ( Number * @@v141@@ ) ; if ( v6 == Number ) { gen_helper_neon_abd_f32 ( v72 , v72 , v98 , @@v172@@ ) ; } else { if ( v6 > Number ) goto LABEL_303 ; if ( v6 == Number ) goto LABEL_300 ; if ( v6 > Number ) goto LABEL_303 ; if ( ! v6 ) { LABEL_300 : gen_helper_vfp_adds ( v72 , v72 , v98 , @@v172@@ ) ; } else { if ( v6 != Number ) LABEL_303 : abort ( ) ; gen_helper_vfp_subs ( v72 , v72 , v98 , @@v172@@ ) ; } } tcg_temp_free_i64 ( @@v172@@ ) ; LABEL_331 : tcg_temp_free_i32 ( v98 ) ; if ( @@v63@@ && @@v34@@ == @@v36@@ ) neon_store_scratch ( v45 , v72 ) ; else neon_store_reg ( @@v34@@ , v45 , v72 ) ; ++ v45 ; break ; case Number : @@v171@@ = get_fpstatus_ptr ( Number ) ; gen_helper_vfp_muls ( v72 , v72 , v98 , @@v171@@ ) ; if ( ! @@v141@@ ) { tcg_temp_free_i32 ( v98 ) ; v98 = neon_load_reg ( @@v34@@ , v45 ) ; if ( v37 ) gen_helper_vfp_subs ( v72 , v98 , v72 , @@v171@@ ) ; else gen_helper_vfp_adds ( v72 , v72 , v98 , @@v171@@ ) ; } tcg_temp_free_i64 ( @@v171@@ ) ; goto LABEL_331 ; case Number : @@v170@@ = get_fpstatus_ptr ( Number ) ; if ( @@v141@@ ) { if ( v37 ) gen_helper_neon_cgt_f32 ( v72 , v72 , v98 , @@v170@@ ) ; else gen_helper_neon_cge_f32 ( v72 , v72 , v98 , @@v170@@ ) ; } else { gen_helper_neon_ceq_f32 ( v72 , v72 , v98 , @@v170@@ ) ; } tcg_temp_free_i64 ( @@v170@@ ) ; goto LABEL_331 ; case Number : @@v169@@ = get_fpstatus_ptr ( Number ) ; if ( v37 ) gen_helper_neon_acgt_f32 ( v72 , v72 , v98 , @@v169@@ ) ; else gen_helper_neon_acge_f32 ( v72 , v72 , v98 , @@v169@@ ) ; tcg_temp_free_i64 ( @@v169@@ ) ; goto LABEL_331 ; case Number : @@v168@@ = get_fpstatus_ptr ( Number ) ; if ( v37 ) gen_helper_neon_min_f32 ( v72 , v72 , v98 , @@v168@@ ) ; else gen_helper_neon_max_f32 ( v72 , v72 , v98 , @@v168@@ ) ; tcg_temp_free_i64 ( @@v168@@ ) ; goto LABEL_331 ; case Number : if ( v37 ) gen_helper_rsqrts_f32 ( v72 , v72 , v98 , cpu_env ) ; else gen_helper_recps_f32 ( v72 , v72 , v98 , cpu_env ) ; goto LABEL_331 ; default : abort ( ) ; } } if ( @@v63@@ && @@v34@@ == @@v36@@ ) { for ( i7 = Number ; ; ++ i7 ) { v8 = @@v140@@ ? Number : Number ; if ( v8 <= i7 ) break ; v73 = neon_load_scratch ( i7 ) ; neon_store_reg ( @@v34@@ , i7 , v73 ) ; } } break ; case Number : if ( arm_feature ( @@a1@@ , Number ) && ! @@v141@@ ) goto LABEL_80 ; return Number L ; case Number : v5 = @@v141@@ && ( ( @@a3@@ >> Number ) & Number ) <= Number ; @@v63@@ = v5 ; goto LABEL_80 ; case Number : if ( @@v141@@ || ! v37 ) goto LABEL_80 ; return Number L ; case Number : if ( @@v141@@ ) goto LABEL_80 ; return Number L ; case Number : @@v63@@ = @@v141@@ ; goto LABEL_80 ; case Number : if ( ! @@v141@@ ) goto LABEL_80 ; return Number L ; default : goto LABEL_80 ; } return Number L ; } for ( i8 = Number ; ; ++ i8 ) { v4 = @@v140@@ ? Number : Number ; if ( v4 <= i8 ) break ; neon_load_reg64 ( cpu_V0 , i8 + @@v35@@ ) ; neon_load_reg64 ( cpu_V1 , i8 + @@v36@@ ) ; switch ( v147 ) { case Number : if ( @@v141@@ ) gen_helper_neon_qadd_u64 ( cpu_V0 , cpu_env , cpu_V0 , cpu_V1 ) ; else gen_helper_neon_qadd_s64 ( cpu_V0 , cpu_env , cpu_V0 , cpu_V1 ) ; break ; case Number : if ( @@v141@@ ) gen_helper_neon_qsub_u64 ( cpu_V0 , cpu_env , cpu_V0 , cpu_V1 ) ; else gen_helper_neon_qsub_s64 ( cpu_V0 , cpu_env , cpu_V0 , cpu_V1 ) ; break ; case Number : if ( @@v141@@ ) gen_helper_neon_shl_u64 ( cpu_V0 , cpu_V1 , cpu_V0 ) ; else gen_helper_neon_shl_s64 ( cpu_V0 , cpu_V1 , cpu_V0 ) ; break ; case Number : if ( @@v141@@ ) gen_helper_neon_qshl_u64 ( cpu_V0 , cpu_env , cpu_V1 , cpu_V0 ) ; else gen_helper_neon_qshl_s64 ( cpu_V0 , cpu_env , cpu_V1 , cpu_V0 ) ; break ; case Number : if ( @@v141@@ ) gen_helper_neon_rshl_u64 ( cpu_V0 , cpu_V1 , cpu_V0 ) ; else gen_helper_neon_rshl_s64 ( cpu_V0 , cpu_V1 , cpu_V0 ) ; break ; case Number : if ( @@v141@@ ) gen_helper_neon_qrshl_u64 ( cpu_V0 , cpu_env , cpu_V1 , cpu_V0 ) ; else gen_helper_neon_qrshl_s64 ( cpu_V0 , cpu_env , cpu_V1 , cpu_V0 ) ; break ; case Number : if ( @@v141@@ ) tcg_gen_sub_i64 ( cpu_V0 , cpu_V0 , cpu_V1 ) ; else tcg_gen_add_i64 ( cpu_V0 , cpu_V0 , cpu_V1 ) ; break ; default : abort ( ) ; } neon_store_reg64 ( cpu_V0 , i8 + @@v34@@ ) ; } return Number L ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}, {"n": "v156", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s100"}, {"n": "v155", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s104"}, {"n": "v154", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s108"}, {"n": "v153", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s112"}, {"n": "v152", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s116"}, {"n": "v141", "t": {"T": 1, "n": "int", "s": 4}, "location": "s136"}, {"n": "v140", "t": {"T": 1, "n": "int", "s": 4}, "location": "s140"}, {"n": "nn", "t": {"T": 1, "n": "int", "s": 4}, "location": "s144"}, {"n": "v138", "t": {"T": 1, "n": "int", "s": 4}, "location": "s148"}, {"n": "j", "t": {"T": 1, "n": "int", "s": 4}, "location": "s152"}, {"n": "v136", "t": {"T": 1, "n": "int", "s": 4}, "location": "s156"}, {"n": "v176", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s16"}, {"n": "v63", "t": {"T": 1, "n": "int", "s": 4}, "location": "s180"}, {"n": "v62", "t": {"T": 1, "n": "int", "s": 4}, "location": "s184"}, {"n": "v36", "t": {"T": 1, "n": "int", "s": 4}, "location": "s200"}, {"n": "v35", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s204"}, {"n": "v34", "t": {"T": 1, "n": "int", "s": 4}, "location": "s208"}, {"n": "v175", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s24"}, {"n": "v174", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s28"}, {"n": "v173", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s32"}, {"n": "v172", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s36"}, {"n": "v171", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s40"}, {"n": "v170", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s44"}, {"n": "v169", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s48"}, {"n": "v168", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s52"}, {"n": "v167", "t": {"T": 1, "n": "int", "s": 4}, "location": "s56"}, {"n": "v166", "t": {"T": 1, "n": "int", "s": 4}, "location": "s60"}, {"n": "v165", "t": {"T": 1, "n": "int", "s": 4}, "location": "s68"}, {"n": "v164", "t": {"T": 1, "n": "int", "s": 4}, "location": "s72"}, {"n": "v163", "t": {"T": 1, "n": "int", "s": 4}, "location": "s76"}, {"n": "v162", "t": {"T": 1, "n": "int", "s": 4}, "location": "s80"}, {"n": "v161", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s84"}, {"n": "v160", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s88"}, {"n": "v159", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s92"}]} {"name": "disas_cp14_read", "code": "__int64 __fastcall disas_cp14_read ( __int64 @@a1@@ , __int64 @@a2@@ , unsigned int @@a3@@ ) { _BOOL4 @@v3@@ ; int @@v5@@ ; int @@v6@@ ; int @@v7@@ ; int @@v8@@ ; int @@v9@@ ; unsigned int v10 ; unsigned int v11 ; @@v5@@ = HIWORD ( @@a3@@ ) & Number ; @@v6@@ = @@a3@@ & Number ; @@v7@@ = ( @@a3@@ >> Number ) & Number ; @@v8@@ = ( unsigned __int8 ) @@a3@@ >> Number ; @@v9@@ = ( unsigned __int16 ) @@a3@@ >> Number ; if ( ! @@v7@@ && ! @@v5@@ && ! ( ( unsigned __int8 ) @@a3@@ >> Number ) && ( ( @@a3@@ & Number ) == Number || ( unsigned int ) ( @@v6@@ - Number ) <= Number && ( @@v3@@ = arm_feature ( @@a1@@ , Number ) ) ) ) { v10 = tcg_const_i32 ( Number L ) ; store_reg ( @@a2@@ , @@v9@@ , v10 ) ; return Number L ; } if ( ! arm_feature ( @@a1@@ , Number ) ) return Number L ; if ( @@v7@@ == Number && ! @@v5@@ && ! @@v6@@ && ! @@v8@@ ) return Number L ; if ( @@v7@@ != Number || @@v5@@ != Number || @@v6@@ || @@v8@@ ) return Number L ; if ( ( * ( _DWORD * ) ( @@a1@@ + Number ) & Number ) != Number ) return Number L ; v11 = load_cpu_offset ( Number ) ; store_reg ( @@a2@@ , @@v9@@ , v11 ) ; return Number L ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}, {"n": "v3", "t": {"T": 1, "n": "_BOOL4", "s": 4}, "location": "r8"}, {"n": "v9", "t": {"T": 1, "n": "int", "s": 4}, "location": "s16"}, {"n": "v8", "t": {"T": 1, "n": "int", "s": 4}, "location": "s20"}, {"n": "v7", "t": {"T": 1, "n": "int", "s": 4}, "location": "s24"}, {"n": "v6", "t": {"T": 1, "n": "int", "s": 4}, "location": "s28"}, {"n": "v5", "t": {"T": 1, "n": "int", "s": 4}, "location": "s32"}]} {"name": "gen_storeq_reg", "code": "unsigned __int64 __fastcall gen_storeq_reg ( __int64 @@a1@@ , int @@a2@@ , int @@a3@@ , int @@a4@@ ) { unsigned int v7 ; unsigned int v8 ; unsigned __int64 @@v9@@ ; @@v9@@ = __readfsqword ( Number ) ; v7 = tcg_temp_new_i32 ( ) ; tcg_gen_trunc_i64_i32 ( v7 , @@a4@@ ) ; store_reg ( @@a1@@ , @@a2@@ , v7 ) ; v8 = tcg_temp_new_i32 ( ) ; tcg_gen_shri_i64 ( @@a4@@ , @@a4@@ , Number L ) ; tcg_gen_trunc_i64_i32 ( v8 , @@a4@@ ) ; store_reg ( @@a1@@ , @@a3@@ , v8 ) ; return __readfsqword ( Number ) ^ @@v9@@ ; }", "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": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "int", "s": 4}, "location": "r64"}, {"n": "v9", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "gen_load_exclusive", "code": "unsigned __int64 __fastcall gen_load_exclusive ( __int64 @@a1@@ , int @@a2@@ , int @@a3@@ , int @@a4@@ , int @@a5@@ ) { unsigned int v9 ; unsigned int v10 ; unsigned int @@v11@@ ; unsigned __int64 @@v12@@ ; @@v12@@ = __readfsqword ( Number ) ; if ( @@a5@@ > Number ) LABEL_9 : abort ( ) ; if ( @@a5@@ >= Number ) { v9 = gen_ld32 ( @@a4@@ , Number ) ; tcg_gen_mov_i32 ( cpu_exclusive_val , v9 ) ; } else if ( @@a5@@ ) { if ( @@a5@@ != Number ) goto LABEL_9 ; v9 = gen_ld16u ( @@a4@@ , Number ) ; tcg_gen_mov_i32 ( cpu_exclusive_val , v9 ) ; } else { v9 = gen_ld8u ( @@a4@@ , Number ) ; tcg_gen_mov_i32 ( cpu_exclusive_val , v9 ) ; } store_reg ( @@a1@@ , @@a2@@ , v9 ) ; if ( @@a5@@ == Number ) { @@v11@@ = tcg_temp_new_i32 ( ) ; tcg_gen_addi_i32 ( @@v11@@ , @@a4@@ , Number ) ; v10 = gen_ld32 ( @@v11@@ , Number ) ; tcg_temp_free_i32 ( @@v11@@ ) ; tcg_gen_mov_i32 ( cpu_exclusive_high , v10 ) ; store_reg ( @@a1@@ , @@a3@@ , v10 ) ; } tcg_gen_mov_i32 ( cpu_exclusive_addr , @@a4@@ ) ; return __readfsqword ( Number ) ^ @@v12@@ ; }", "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": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "int", "s": 4}, "location": "r64"}, {"n": "a5", "t": {"T": 1, "n": "int", "s": 4}, "location": "r72"}, {"n": "v11", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s12"}, {"n": "v12", "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"}]} {"name": "disas_thumb_insn", "code": "unsigned __int64 __fastcall disas_thumb_insn ( __int64 @@a1@@ , int * @@a2@@ ) { unsigned int v2 ; unsigned int v3 ; int i ; int j ; int k ; int v8 ; int v9 ; int v10 ; int v11 ; int v12 ; int v13 ; int v14 ; int @@v15@@ ; int v16 ; int v17 ; int v18 ; int v19 ; 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 ; int v50 ; unsigned int @@v51@@ ; int @@v52@@ ; unsigned int v53 ; unsigned int v54 ; unsigned int v55 ; int v56 ; int v57 ; int v58 ; int v59 ; unsigned int v60 ; unsigned __int64 @@v61@@ ; @@v61@@ = __readfsqword ( Number ) ; if ( @@a2@@ [ Number ] ) { v49 = @@a2@@ [ Number ] ; if ( v49 != Number ) { @@a2@@ [ Number ] = gen_new_label ( ) ; gen_test_cc ( v49 ^ Number , @@a2@@ [ Number ] ) ; @@a2@@ [ Number ] = Number ; } } @@v51@@ = lduw_be_p ( ( unsigned __int8 * ) ( ( unsigned int ) * @@a2@@ + guest_base ) ) ; * @@a2@@ += Number ; switch ( @@v51@@ >> Number ) { case Number : case Number : v8 = @@v51@@ & Number ; v56 = ( @@v51@@ >> Number ) & Number ; if ( v56 != Number ) { v23 = load_reg ( @@a2@@ , ( @@v51@@ >> Number ) & Number ) ; gen_arm_shift_im ( v23 , v56 , ( @@v51@@ >> Number ) & Number , @@a2@@ [ Number ] == Number ) ; if ( ! @@a2@@ [ Number ] ) gen_logic_CC ( v23 ) ; goto LABEL_187 ; } v22 = load_reg ( @@a2@@ , ( @@v51@@ >> Number ) & Number ) ; if ( ( @@v51@@ & Number ) != Number ) { v44 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v44 , ( @@v51@@ >> Number ) & Number ) ; } else { v44 = load_reg ( @@a2@@ , ( @@v51@@ >> Number ) & Number ) ; } if ( ( @@v51@@ & Number ) != Number ) { if ( @@a2@@ [ Number ] ) goto LABEL_28 ; goto LABEL_29 ; } if ( @@a2@@ [ Number ] ) goto LABEL_25 ; goto LABEL_13 ; case Number : case Number : v57 = ( @@v51@@ >> Number ) & Number ; v8 = ( @@v51@@ >> Number ) & Number ; if ( v57 ) { v22 = load_reg ( @@a2@@ , v8 ) ; v44 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v44 , ( unsigned __int8 ) @@v51@@ ) ; if ( v57 == Number ) { if ( @@a2@@ [ Number ] ) LABEL_28 : tcg_gen_sub_i32 ( v22 , v22 , v44 ) ; else LABEL_29 : gen_helper_sub_cc ( v22 , v22 , v44 ) ; } else { if ( v57 == Number ) { gen_helper_sub_cc ( v22 , v22 , v44 ) ; tcg_temp_free_i32 ( v22 ) ; tcg_temp_free_i32 ( v44 ) ; return __readfsqword ( Number ) ^ @@v61@@ ; } if ( @@a2@@ [ Number ] ) LABEL_25 : tcg_gen_add_i32 ( v22 , v22 , v44 ) ; else LABEL_13 : gen_helper_add_cc ( v22 , v22 , v44 ) ; } tcg_temp_free_i32 ( v44 ) ; store_reg ( ( __int64 ) @@a2@@ , v8 , v22 ) ; } else { v23 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v23 , ( unsigned __int8 ) @@v51@@ ) ; if ( ! @@a2@@ [ Number ] ) gen_logic_CC ( v23 ) ; LABEL_187 : store_reg ( ( __int64 ) @@a2@@ , v8 , v23 ) ; } return __readfsqword ( Number ) ^ @@v61@@ ; case Number : if ( ( @@v51@@ & Number ) != Number ) { v18 = ( Number * ( unsigned __int8 ) @@v51@@ + * @@a2@@ + Number ) & Number ; v53 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v53 , v18 ) ; v24 = gen_ld32 ( v53 , Number ) ; tcg_temp_free_i32 ( v53 ) ; store_reg ( ( __int64 ) @@a2@@ , ( @@v51@@ >> Number ) & Number , v24 ) ; return __readfsqword ( Number ) ^ @@v61@@ ; } if ( ( @@v51@@ & Number ) != Number ) { v9 = @@v51@@ & Number | ( @@v51@@ >> Number ) & Number ; v16 = ( @@v51@@ >> Number ) & Number ; v58 = ( @@v51@@ >> Number ) & Number ; if ( v58 == Number ) { v27 = load_reg ( @@a2@@ , v16 ) ; if ( ( @@v51@@ & Number ) != Number ) { if ( ! arm_feature ( @@a1@@ , Number ) ) { LABEL_219 : gen_exception_insn ( @@a2@@ , Number , Number ) ; return __readfsqword ( Number ) ^ @@v61@@ ; } v19 = * @@a2@@ | Number ; v46 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v46 , v19 ) ; store_reg ( ( __int64 ) @@a2@@ , Number , v46 ) ; } gen_bx ( ( __int64 ) @@a2@@ , v27 ) ; return __readfsqword ( Number ) ^ @@v61@@ ; } if ( v58 == Number ) { v26 = load_reg ( @@a2@@ , v16 ) ; store_reg ( ( __int64 ) @@a2@@ , v9 , v26 ) ; } else { v25 = load_reg ( @@a2@@ , v9 ) ; v45 = load_reg ( @@a2@@ , v16 ) ; if ( v58 ) { gen_helper_sub_cc ( v25 , v25 , v45 ) ; tcg_temp_free_i32 ( v45 ) ; tcg_temp_free_i32 ( v25 ) ; } else { tcg_gen_add_i32 ( v25 , v25 , v45 ) ; tcg_temp_free_i32 ( v45 ) ; store_reg ( ( __int64 ) @@a2@@ , v9 , v25 ) ; } } } else { v10 = @@v51@@ & Number ; v17 = ( @@v51@@ >> Number ) & Number ; v59 = ( @@v51@@ >> Number ) & Number ; if ( v59 == Number || v59 == Number || v59 == Number || v59 == Number ) { v17 = @@v51@@ & Number ; v10 = ( @@v51@@ >> Number ) & Number ; v20 = Number ; } else { v20 = Number ; } if ( v59 == Number ) { v28 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v28 , Number ) ; } else if ( v59 == Number ) { v28 = Number ; } else { v28 = load_reg ( @@a2@@ , v10 ) ; } v47 = load_reg ( @@a2@@ , v17 ) ; switch ( v59 ) { case Number : tcg_gen_and_i32 ( v28 , v28 , v47 ) ; if ( ! @@a2@@ [ Number ] ) goto LABEL_89 ; break ; case Number : tcg_gen_xor_i32 ( v28 , v28 , v47 ) ; if ( ! @@a2@@ [ Number ] ) goto LABEL_89 ; break ; case Number : if ( @@a2@@ [ Number ] ) { gen_helper_shl ( v47 , v47 , v28 ) ; } else { gen_helper_shl_cc ( v47 , v47 , v28 ) ; gen_logic_CC ( v47 ) ; } break ; case Number : if ( @@a2@@ [ Number ] ) { gen_helper_shr ( v47 , v47 , v28 ) ; } else { gen_helper_shr_cc ( v47 , v47 , v28 ) ; gen_logic_CC ( v47 ) ; } break ; case Number : if ( @@a2@@ [ Number ] ) { gen_helper_sar ( v47 , v47 , v28 ) ; } else { gen_helper_sar_cc ( v47 , v47 , v28 ) ; gen_logic_CC ( v47 ) ; } break ; case Number : if ( @@a2@@ [ Number ] ) gen_adc ( v28 , v47 ) ; else gen_helper_adc_cc ( v28 , v28 , v47 ) ; break ; case Number : if ( @@a2@@ [ Number ] ) gen_sub_carry ( v28 , v28 , v47 ) ; else gen_helper_sbc_cc ( v28 , v28 , v47 ) ; break ; case Number : if ( @@a2@@ [ Number ] ) { tcg_gen_andi_i32 ( v28 , v28 , Number ) ; tcg_gen_rotr_i32 ( v47 , v47 , v28 ) ; } else { gen_helper_ror_cc ( v47 , v47 , v28 ) ; gen_logic_CC ( v47 ) ; } break ; case Number : tcg_gen_and_i32 ( v28 , v28 , v47 ) ; gen_logic_CC ( v28 ) ; v10 = Number ; break ; case Number : if ( @@a2@@ [ Number ] ) tcg_gen_neg_i32 ( v28 , v47 ) ; else gen_helper_sub_cc ( v28 , v28 , v47 ) ; break ; case Number : gen_helper_sub_cc ( v28 , v28 , v47 ) ; v10 = Number ; break ; case Number : gen_helper_add_cc ( v28 , v28 , v47 ) ; v10 = Number ; break ; case Number : tcg_gen_or_i32 ( v28 , v28 , v47 ) ; if ( ! @@a2@@ [ Number ] ) goto LABEL_89 ; break ; case Number : tcg_gen_mul_i32 ( v28 , v28 , v47 ) ; if ( ! @@a2@@ [ Number ] ) goto LABEL_89 ; break ; case Number : tcg_gen_andc_i32 ( v28 , v28 , v47 ) ; if ( ! @@a2@@ [ Number ] ) LABEL_89 : gen_logic_CC ( v28 ) ; break ; case Number : tcg_gen_not_i32 ( v47 , v47 ) ; if ( ! @@a2@@ [ Number ] ) gen_logic_CC ( v47 ) ; v20 = Number ; v17 = v10 ; break ; default : break ; } if ( v10 == Number ) { tcg_temp_free_i32 ( v28 ) ; tcg_temp_free_i32 ( v47 ) ; } else if ( v20 ) { store_reg ( ( __int64 ) @@a2@@ , v17 , v47 ) ; if ( v59 != Number ) tcg_temp_free_i32 ( v28 ) ; } else { store_reg ( ( __int64 ) @@a2@@ , v10 , v28 ) ; tcg_temp_free_i32 ( v47 ) ; } } return __readfsqword ( Number ) ^ @@v61@@ ; case Number : v11 = @@v51@@ & Number ; v60 = ( @@v51@@ >> Number ) & Number ; v54 = load_reg ( @@a2@@ , ( @@v51@@ >> Number ) & Number ) ; v29 = load_reg ( @@a2@@ , ( @@v51@@ >> Number ) & Number ) ; tcg_gen_add_i32 ( v54 , v54 , v29 ) ; tcg_temp_free_i32 ( v29 ) ; if ( v60 <= Number ) v29 = load_reg ( @@a2@@ , v11 ) ; switch ( v60 ) { case Number : gen_st32 ( v29 , v54 , Number ) ; break ; case Number : gen_st16 ( v29 , v54 , Number ) ; break ; case Number : gen_st8 ( v29 , v54 , Number ) ; break ; case Number : v29 = gen_ld8s ( v54 , Number ) ; break ; case Number : v29 = gen_ld32 ( v54 , Number ) ; break ; case Number : v29 = gen_ld16u ( v54 , Number ) ; break ; case Number : v29 = gen_ld8u ( v54 , Number ) ; break ; case Number : v29 = gen_ld16s ( v54 , Number ) ; break ; default : break ; } if ( v60 > Number ) store_reg ( ( __int64 ) @@a2@@ , v11 , v29 ) ; goto LABEL_205 ; case Number : v12 = @@v51@@ & Number ; v54 = load_reg ( @@a2@@ , ( @@v51@@ >> Number ) & Number ) ; tcg_gen_addi_i32 ( v54 , v54 , ( @@v51@@ >> Number ) & Number ) ; if ( ( @@v51@@ & Number ) == Number ) goto LABEL_114 ; goto LABEL_122 ; case Number : v13 = @@v51@@ & Number ; v54 = load_reg ( @@a2@@ , ( @@v51@@ >> Number ) & Number ) ; tcg_gen_addi_i32 ( v54 , v54 , ( @@v51@@ >> Number ) & Number ) ; if ( ( @@v51@@ & Number ) != Number ) { v31 = gen_ld8u ( v54 , Number ) ; store_reg ( ( __int64 ) @@a2@@ , v13 , v31 ) ; } else { v32 = load_reg ( @@a2@@ , v13 ) ; gen_st8 ( v32 , v54 , Number ) ; } goto LABEL_205 ; case Number : v14 = @@v51@@ & Number ; v54 = load_reg ( @@a2@@ , ( @@v51@@ >> Number ) & Number ) ; tcg_gen_addi_i32 ( v54 , v54 , ( @@v51@@ >> Number ) & Number ) ; if ( ( @@v51@@ & Number ) != Number ) { v33 = gen_ld16u ( v54 , Number ) ; store_reg ( ( __int64 ) @@a2@@ , v14 , v33 ) ; } else { v34 = load_reg ( @@a2@@ , v14 ) ; gen_st16 ( v34 , v54 , Number ) ; } goto LABEL_205 ; case Number : v12 = ( @@v51@@ >> Number ) & Number ; v54 = load_reg ( @@a2@@ , Number ) ; tcg_gen_addi_i32 ( v54 , v54 , Number * ( unsigned __int8 ) @@v51@@ ) ; if ( ( @@v51@@ & Number ) != Number ) { LABEL_122 : v35 = gen_ld32 ( v54 , Number ) ; store_reg ( ( __int64 ) @@a2@@ , v12 , v35 ) ; } else { LABEL_114 : v30 = load_reg ( @@a2@@ , v12 ) ; gen_st32 ( v30 , v54 , Number ) ; } goto LABEL_205 ; case Number : if ( ( @@v51@@ & Number ) != Number ) { v36 = load_reg ( @@a2@@ , Number ) ; } else { v36 = tcg_temp_new_i32 ( ) ; tcg_gen_movi_i32 ( v36 , ( * @@a2@@ + Number ) & Number ) ; } tcg_gen_addi_i32 ( v36 , v36 , Number * ( unsigned __int8 ) @@v51@@ ) ; store_reg ( ( __int64 ) @@a2@@ , ( @@v51@@ >> Number ) & Number , v36 ) ; return __readfsqword ( Number ) ^ @@v61@@ ; case Number : switch ( ( @@v51@@ >> Number ) & Number ) { case Number : v37 = load_reg ( @@a2@@ , Number ) ; v21 = Number * ( @@v51@@ & Number ) ; if ( ( @@v51@@ & Number ) != Number ) v21 = Number * ( @@v51@@ & Number ) ; tcg_gen_addi_i32 ( v37 , v37 , v21 ) ; store_reg ( ( __int64 ) @@a2@@ , Number , v37 ) ; return __readfsqword ( Number ) ^ @@v61@@ ; case Number : case Number : case Number : case Number : v41 = load_reg ( @@a2@@ , @@v51@@ & Number ) ; @@a2@@ [ Number ] = gen_new_label ( ) ; @@a2@@ [ Number ] = Number ; if ( ( @@v51@@ & Number ) != Number ) tcg_gen_brcondi_i32 ( Number , v41 , Number , @@a2@@ [ Number ] ) ; else tcg_gen_brcondi_i32 ( Number , v41 , Number , @@a2@@ [ Number ] ) ; tcg_temp_free_i32 ( v41 ) ; gen_jmp ( @@a2@@ , ( ( @@v51@@ >> Number ) & Number | ( @@v51@@ >> Number ) & Number ) + * @@a2@@ + Number ) ; return __readfsqword ( Number ) ^ @@v61@@ ; case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_219 ; v8 = @@v51@@ & Number ; v23 = load_reg ( @@a2@@ , ( @@v51@@ >> Number ) & Number ) ; v2 = ( unsigned __int8 ) @@v51@@ >> Number ; if ( v2 == Number ) { tcg_gen_ext8u_i32 ( v23 , v23 ) ; } else if ( v2 <= Number ) { if ( v2 == Number ) { tcg_gen_ext16u_i32 ( v23 , v23 ) ; } else if ( ( unsigned __int8 ) @@v51@@ >> Number ) { tcg_gen_ext8s_i32 ( v23 , v23 ) ; } else { tcg_gen_ext16s_i32 ( v23 , v23 ) ; } } goto LABEL_187 ; case Number : case Number : case Number : case Number : v55 = load_reg ( @@a2@@ , Number ) ; if ( ( @@v51@@ & Number ) != Number ) @@v15@@ = Number ; else @@v15@@ = Number ; for ( i = Number ; i <= Number ; ++ i ) { if ( ( @@v51@@ & ( Number << i ) ) != Number ) @@v15@@ += Number ; } if ( ( @@v51@@ & Number ) == Number ) tcg_gen_addi_i32 ( v55 , v55 , - @@v15@@ ) ; for ( j = Number ; j <= Number ; ++ j ) { if ( ( @@v51@@ & ( Number << j ) ) != Number ) { if ( ( @@v51@@ & Number ) != Number ) { v38 = gen_ld32 ( v55 , Number ) ; store_reg ( ( __int64 ) @@a2@@ , j , v38 ) ; } else { v39 = load_reg ( @@a2@@ , j ) ; gen_st32 ( v39 , v55 , Number ) ; } tcg_gen_addi_i32 ( v55 , v55 , Number ) ; } } v40 = Number ; if ( ( @@v51@@ & Number ) != Number ) { if ( ( @@v51@@ & Number ) != Number ) { v40 = gen_ld32 ( v55 , Number ) ; } else { v40 = load_reg ( @@a2@@ , Number ) ; gen_st32 ( v40 , v55 , Number ) ; } tcg_gen_addi_i32 ( v55 , v55 , Number ) ; } if ( ( @@v51@@ & Number ) == Number ) tcg_gen_addi_i32 ( v55 , v55 , - @@v15@@ ) ; store_reg ( ( __int64 ) @@a2@@ , Number , v55 ) ; if ( ( @@v51@@ & Number ) == Number ) store_reg_from_load ( @@a1@@ , ( __int64 ) @@a2@@ , Number , v40 ) ; return __readfsqword ( Number ) ^ @@v61@@ ; case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_219 ; return __readfsqword ( Number ) ^ @@v61@@ ; case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_219 ; v8 = @@v51@@ & Number ; v23 = load_reg ( @@a2@@ , ( @@v51@@ >> Number ) & Number ) ; v3 = ( unsigned __int8 ) @@v51@@ >> Number ; if ( v3 == Number ) { gen_revsh ( v23 ) ; } else { if ( v3 > Number ) goto LABEL_219 ; if ( ( unsigned __int8 ) @@v51@@ >> Number ) { if ( v3 != Number ) goto LABEL_219 ; gen_rev16 ( v23 ) ; } else { tcg_gen_bswap32_i32 ( v23 , v23 ) ; } } break ; case Number : if ( ! arm_feature ( @@a1@@ , Number ) ) goto LABEL_219 ; gen_exception_insn ( @@a2@@ , Number , Number ) ; return __readfsqword ( Number ) ^ @@v61@@ ; case Number : if ( ( @@v51@@ & Number ) != Number ) { @@a2@@ [ Number ] = ( @@v51@@ >> Number ) & Number ; @@a2@@ [ Number ] = @@v51@@ & Number ; } else { gen_nop_hint ( @@a2@@ , ( unsigned __int8 ) @@v51@@ >> Number ) ; } return __readfsqword ( Number ) ^ @@v61@@ ; default : goto LABEL_219 ; } goto LABEL_187 ; case Number : @@v48@@ = Number ; @@v52@@ = ( @@v51@@ >> Number ) & Number ; v54 = load_reg ( @@a2@@ , @@v52@@ ) ; for ( k = Number ; k <= Number ; ++ k ) { if ( ( @@v51@@ & ( Number << k ) ) != Number ) { if ( ( @@v51@@ & Number ) != Number ) { v42 = gen_ld32 ( v54 , Number ) ; if ( @@v52@@ == k ) @@v48@@ = v42 ; else store_reg ( ( __int64 ) @@a2@@ , k , v42 ) ; } else { v43 = load_reg ( @@a2@@ , k ) ; gen_st32 ( v43 , v54 , Number ) ; } tcg_gen_addi_i32 ( v54 , v54 , Number ) ; } } if ( ( @@v51@@ & ( Number << @@v52@@ ) ) != Number ) { if ( ( @@v51@@ & Number ) != Number ) store_reg ( ( __int64 ) @@a2@@ , @@v52@@ , @@v48@@ ) ; LABEL_205 : tcg_temp_free_i32 ( v54 ) ; } else { store_reg ( ( __int64 ) @@a2@@ , @@v52@@ , v54 ) ; } return __readfsqword ( Number ) ^ @@v61@@ ; case Number : v50 = ( @@v51@@ >> Number ) & Number ; if ( v50 == Number ) goto LABEL_219 ; if ( v50 == Number ) { gen_set_pc_im ( * @@a2@@ ) ; @@a2@@ [ Number ] = Number ; } else { @@a2@@ [ Number ] = gen_new_label ( ) ; gen_test_cc ( v50 ^ Number , @@a2@@ [ Number ] ) ; @@a2@@ [ Number ] = Number ; gen_jmp ( @@a2@@ , Number * ( char ) @@v51@@ + * @@a2@@ + Number ) ; } return __readfsqword ( Number ) ^ @@v61@@ ; case Number : if ( ( @@v51@@ & Number ) != Number ) { if ( disas_thumb2_insn ( @@a1@@ , @@a2@@ , @@v51@@ ) ) LABEL_218 : gen_exception_insn ( @@a2@@ , Number , Number ) ; } else { gen_jmp ( @@a2@@ , Number * ( ( int ) ( @@v51@@ << Number ) >> Number ) + * @@a2@@ + Number ) ; } return __readfsqword ( Number ) ^ @@v61@@ ; case Number : if ( ! disas_thumb2_insn ( @@a1@@ , @@a2@@ , @@v51@@ ) ) return __readfsqword ( Number ) ^ @@v61@@ ; goto LABEL_218 ; default : return __readfsqword ( Number ) ^ @@v61@@ ; } }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "int"}, "location": "r64"}, {"n": "v52", "t": {"T": 1, "n": "int", "s": 4}, "location": "s24"}, {"n": "v51", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s28"}, {"n": "v48", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s36"}, {"n": "v15", "t": {"T": 1, "n": "int", "s": 4}, "location": "s56"}, {"n": "v61", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]}