{"name": "gen_helper_vfp_fcvtds", "code": "unsigned __int64 __fastcall gen_helper_vfp_fcvtds ( int @@a1@@ , int @@a2@@ , int @@a3@@ ) { __int64 @@v4@@ [ Number ] ; unsigned __int64 @@v5@@ ; @@v5@@ = __readfsqword ( Number ) ; @@v4@@ [ Number ] = @@a2@@ ; @@v4@@ [ Number ] = @@a3@@ ; tcg_gen_helperN ( ( __int64 ) & helper_vfp_fcvtds , Number , Number , @@a1@@ , Number , ( __int64 ) @@v4@@ ) ; return __readfsqword ( Number ) ^ @@v5@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "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": 2, "n": 3, "s": 8, "t": "__int64"}, "location": "s32"}, {"n": "v5", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]}
{"name": "tcg_gen_helperN", "code": "unsigned __int64 __fastcall tcg_gen_helperN ( __int64 @@a1@@ , unsigned int @@a2@@ , unsigned int @@a3@@ , __int64 @@a4@@ , unsigned int @@a5@@ , __int64 @@a6@@ ) { unsigned int @@v11@@ ; unsigned __int64 @@v12@@ ; @@v12@@ = __readfsqword ( Number ) ; @@v11@@ = tcg_const_i64 ( @@a1@@ ) ; tcg_gen_callN ( & tcg_ctx , @@v11@@ , @@a2@@ , @@a3@@ , @@a4@@ , @@a5@@ , @@a6@@ ) ; tcg_temp_free_i64 ( @@v11@@ ) ; return __readfsqword ( Number ) ^ @@v12@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r24"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r64"}, {"n": "a5", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r72"}, {"n": "a6", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r80"}, {"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_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"}]}