{"name": "decodeInstruction_4", "code": "__int64 __fastcall decodeInstruction_4 ( char * @@a1@@ , __int64 @@a2@@ , unsigned int @@a3@@ , __int64 @@a4@@ , __int64 @@a5@@ , char @@a6@@ ) { __int64 result ; char * v7 ; char * v8 ; char * v9 ; char * v10 ; char * v11 ; char * v12 ; bool v13 ; unsigned int @@v17@@ ; int @@v18@@ ; int @@v19@@ ; int @@v20@@ ; int @@v21@@ ; unsigned int @@v23@@ ; int @@v24@@ ; unsigned int @@v25@@ ; unsigned int @@v26@@ ; bool @@v27@@ ; int @@v28@@ ; int @@v29@@ ; __int64 @@v30@@ ; unsigned int @@v31@@ ; int @@v32@@ ; char * @@v33@@ ; @@v30@@ = ARM_getFeatureBits ( @@a6@@ ) ; @@v33@@ = @@a1@@ ; @@v32@@ = Number ; @@v31@@ = Number ; while ( Number ) { switch ( * @@v33@@ ) { case Number : @@v21@@ = ( unsigned __int8 ) * ++ @@v33@@ ; @@v17@@ = ( unsigned __int8 ) * ++ @@v33@@ ; ++ @@v33@@ ; @@v32@@ = fieldFromInstruction_4 ( @@a3@@ , @@v21@@ , @@v17@@ ) ; continue ; case Number : @@v18@@ = decodeULEB128 ( ++ @@v33@@ , & @@v17@@ ) ; @@v33@@ += @@v17@@ ; v7 = @@v33@@ ++ ; @@v23@@ = ( unsigned __int8 ) * v7 ; v8 = @@v33@@ ++ ; @@v23@@ |= ( unsigned __int8 ) * v8 << Number ; if ( @@v18@@ != @@v32@@ ) @@v33@@ += @@v23@@ ; continue ; case Number : @@v21@@ = ( unsigned __int8 ) * ++ @@v33@@ ; @@v17@@ = ( unsigned __int8 ) * ++ @@v33@@ ; @@v20@@ = fieldFromInstruction_4 ( @@a3@@ , @@v21@@ , @@v17@@ ) ; @@v19@@ = decodeULEB128 ( ++ @@v33@@ , & @@v17@@ ) ; @@v33@@ += @@v17@@ ; v9 = @@v33@@ ++ ; @@v23@@ = ( unsigned __int8 ) * v9 ; v10 = @@v33@@ ++ ; @@v23@@ |= ( unsigned __int8 ) * v10 << Number ; if ( @@v19@@ != @@v20@@ ) @@v33@@ += @@v23@@ ; continue ; case Number : @@v24@@ = decodeULEB128 ( ++ @@v33@@ , & @@v17@@ ) ; @@v33@@ += @@v17@@ ; v11 = @@v33@@ ++ ; @@v23@@ = ( unsigned __int8 ) * v11 ; v12 = @@v33@@ ++ ; @@v23@@ |= ( unsigned __int8 ) * v12 << Number ; if ( ! checkDecoderPredicate ( @@v24@@ , @@v30@@ ) ) @@v33@@ += @@v23@@ ; continue ; case Number : @@v26@@ = decodeULEB128 ( ++ @@v33@@ , & @@v17@@ ) ; @@v33@@ += @@v17@@ ; @@v25@@ = decodeULEB128 ( @@v33@@ , & @@v17@@ ) ; @@v33@@ += @@v17@@ ; MCInst_setOpcode ( @@a2@@ , @@v26@@ ) ; result = decodeToMCInst_4 ( @@v31@@ , @@v25@@ , @@a3@@ , @@a2@@ , @@a4@@ , @@a5@@ ) ; break ; case Number : @@v29@@ = decodeULEB128 ( ++ @@v33@@ , & @@v17@@ ) ; @@v33@@ += @@v17@@ ; @@v28@@ = decodeULEB128 ( @@v33@@ , & @@v17@@ ) ; @@v33@@ += @@v17@@ ; v13 = ( @@v29@@ & @@a3@@ ) != Number || ( @@v28@@ & ~ @@a3@@ ) != Number ; @@v27@@ = v13 ; if ( v13 ) @@v31@@ = Number ; continue ; case Number : result = Number L ; break ; default : result = Number L ; break ; } return result ; } }", "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": 3, "t": "char"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}, {"n": "a5", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r72"}, {"n": "a6", "t": {"T": 1, "n": "char", "s": 1}, "location": "r80"}, {"n": "v32", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}, {"n": "v31", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s16"}, {"n": "v30", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s24"}, {"n": "v29", "t": {"T": 1, "n": "int", "s": 4}, "location": "s28"}, {"n": "v28", "t": {"T": 1, "n": "int", "s": 4}, "location": "s32"}, {"n": "v27", "t": {"T": 1, "n": "bool", "s": 1}, "location": "s33"}, {"n": "v26", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s40"}, {"n": "v25", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s44"}, {"n": "v24", "t": {"T": 1, "n": "int", "s": 4}, "location": "s48"}, {"n": "v23", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s52"}, {"n": "v21", "t": {"T": 1, "n": "int", "s": 4}, "location": "s60"}, {"n": "v20", "t": {"T": 1, "n": "int", "s": 4}, "location": "s64"}, {"n": "v19", "t": {"T": 1, "n": "int", "s": 4}, "location": "s68"}, {"n": "v18", "t": {"T": 1, "n": "int", "s": 4}, "location": "s72"}, {"n": "v17", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s76"}, {"n": "v33", "t": {"T": 3, "t": "char"}, "location": "s8"}]}
{"name": "decodeULEB128", "code": "__int64 __fastcall decodeULEB128 ( char * @@a1@@ , _DWORD * @@a2@@ ) { char * @@v2@@ ; char * @@v4@@ ; int @@v5@@ ; __int64 @@v6@@ ; @@v4@@ = @@a1@@ ; @@v6@@ = Number L ; @@v5@@ = Number ; do { @@v6@@ += ( * @@v4@@ & Number ) << @@v5@@ ; @@v5@@ += Number ; @@v2@@ = @@v4@@ ++ ; } while ( * @@v2@@ < Number ) ; if ( @@a2@@ ) * @@a2@@ = ( _DWORD ) @@v4@@ - ( _DWORD ) @@a1@@ ; return @@v6@@ ; }", "source": [{"n": "a1", "t": {"T": 3, "t": "char"}, "location": "r56"}, {"n": "a2", "t": {"T": 3, "t": "_DWORD"}, "location": "r64"}, {"n": "v2", "t": {"T": 3, "t": "char"}, "location": "r8"}, {"n": "v5", "t": {"T": 1, "n": "int", "s": 4}, "location": "s12"}, {"n": "v4", "t": {"T": 3, "t": "char"}, "location": "s40"}, {"n": "v6", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s8"}]} {"name": "ARM_getFeatureBits", "code": "unsigned __int64 __fastcall ARM_getFeatureBits ( char @@a1@@ ) { unsigned __int64 @@v2@@ ; @@v2@@ = Number ; if ( ( @@a1@@ & Number ) == Number ) @@v2@@ = Number ; if ( ( @@a1@@ & Number ) == Number ) @@v2@@ &= Number ; if ( ( @@a1@@ & Number ) == Number ) @@v2@@ &= Number ; return @@v2@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "char", "s": 1}, "location": "r56"}, {"n": "v2", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "checkDecoderPredicate", "code": "bool __fastcall checkDecoderPredicate ( int @@a1@@ , __int64 @@a2@@ ) { bool result ; _BOOL4 v3 ; switch ( @@a1@@ ) { case Number : v3 = ( @@a2@@ & Number ) == Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) == Number && ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) == Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : return getbool ( ( @@a2@@ & Number ) == Number ) ; case Number : v3 = ( @@a2@@ & Number ) == Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) == Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) == Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) == Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) == Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) == Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) == Number && ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) == Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) == Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) == Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : return getbool ( @@a2@@ & Number ) ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( int ) @@a2@@ < Number ; goto LABEL_192 ; case Number : return getbool ( @@a2@@ & Number ) ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : return getbool ( ( @@a2@@ & Number ) == Number ) ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) == Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) == Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) == Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) == Number && ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number ; goto LABEL_192 ; case Number : return getbool ( @@a2@@ & Number ) ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) == Number ; goto LABEL_192 ; case Number : return getbool ( ( unsigned int ) @@a2@@ & Number ) ; case Number : v3 = ( int ) @@a2@@ < Number && ( @@a2@@ & Number ) == Number ; goto LABEL_192 ; case Number : return getbool ( @@a2@@ & Number ) ; case Number : return getbool ( @@a2@@ & Number ) ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) == Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) == Number ; goto LABEL_192 ; case Number : v3 = ( @@a2@@ & Number ) != Number && ( @@a2@@ & Number ) != Number ; LABEL_192 : result = getbool ( v3 ) ; break ; default : result = getbool ( ( @@a2@@ & Number ) == Number ) ; break ; } return result ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "int", "s": 4}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}]} {"name": "fieldFromInstruction_4", "code": "__int64 __fastcall fieldFromInstruction_4 ( unsigned int @@a1@@ , char @@a2@@ , int @@a3@@ ) { int @@v4@@ ; if ( @@a3@@ == Number ) @@v4@@ = Number ; else @@v4@@ = ( ( Number << @@a3@@ ) - Number ) << @@a2@@ ; return ( @@v4@@ & @@a1@@ ) >> @@a2@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "int", "s": 4}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "char", "s": 1}, "location": "r64"}, {"n": "v4", "t": {"T": 1, "n": "int", "s": 4}, "location": "s4"}]} {"name": "_ARM_getInstruction", "code": "__int64 __fastcall ARM_getInstruction ( __int64 @@a1@@ , __int64 @@a2@@ , unsigned int * @@a3@@ , unsigned __int64 @@a4@@ , _WORD * @@a5@@ , __int64 @@a6@@ ) { __int64 @@result@@ ; 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 @@i@@ ; int @@v20@@ ; if ( @@a4@@ <= Number ) return Number L ; if ( * ( _QWORD * ) ( * ( _QWORD * ) ( @@a2@@ + Number ) + Number L ) ) { memset ( ( void * ) ( * ( _QWORD * ) ( * ( _QWORD * ) ( @@a2@@ + Number ) + Number L ) + Number L ) , Number , Number ) ; for ( @@i@@ = Number ; @@i@@ <= Number ; ++ @@i@@ ) * ( _DWORD * ) ( * ( _QWORD * ) ( * ( _QWORD * ) ( @@a2@@ + Number ) + Number L ) + Number L * @@i@@ + Number ) = Number ; } @@v10@@ = * @@a3@@ ; if ( * ( _BYTE * ) ( @@a1@@ + Number ) ) @@v20@@ = _byteswap_ulong ( @@v10@@ ) ; else @@v20@@ = ( BYTE1 ( @@v10@@ ) << Number ) | ( BYTE2 ( @@v10@@ ) << Number ) | ( HIBYTE ( @@v10@@ ) << Number ) | ( unsigned __int8 ) @@v10@@ ; v11 = decodeInstruction_4 ( DecoderTableARM32 , @@a2@@ , @@v20@@ , @@a6@@ , Number L , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; if ( v11 ) { * @@a5@@ = Number ; @@result@@ = v11 ; } else { MCInst_clear ( @@a2@@ ) ; v12 = decodeInstruction_4 ( DecoderTableVFP32 , @@a2@@ , @@v20@@ , @@a6@@ , Number L , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; if ( v12 ) { * @@a5@@ = Number ; @@result@@ = v12 ; } else { MCInst_clear ( @@a2@@ ) ; v13 = decodeInstruction_4 ( DecoderTableVFPV832 , @@a2@@ , @@v20@@ , @@a6@@ , Number L , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; if ( v13 ) { * @@a5@@ = Number ; @@result@@ = v13 ; } else { MCInst_clear ( @@a2@@ ) ; v14 = decodeInstruction_4 ( DecoderTableNEONData32 , @@a2@@ , @@v20@@ , @@a6@@ , Number L , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; if ( v14 ) { * @@a5@@ = Number ; if ( ( unsigned int ) DecodePredicateOperand ( @@a2@@ , Number ) ) @@result@@ = v14 ; else @@result@@ = Number L ; } else { MCInst_clear ( @@a2@@ ) ; v15 = decodeInstruction_4 ( DecoderTableNEONLoadStore32 , @@a2@@ , @@v20@@ , @@a6@@ , Number L , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; if ( v15 ) { * @@a5@@ = Number ; if ( ( unsigned int ) DecodePredicateOperand ( @@a2@@ , Number ) ) @@result@@ = v15 ; else @@result@@ = Number L ; } else { MCInst_clear ( @@a2@@ ) ; v16 = decodeInstruction_4 ( DecoderTableNEONDup32 , @@a2@@ , @@v20@@ , @@a6@@ , Number L , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; if ( v16 ) { * @@a5@@ = Number ; if ( ( unsigned int ) DecodePredicateOperand ( @@a2@@ , Number ) ) @@result@@ = v16 ; else @@result@@ = Number L ; } else { MCInst_clear ( @@a2@@ ) ; v17 = decodeInstruction_4 ( DecoderTablev8NEON32 , @@a2@@ , @@v20@@ , @@a6@@ , Number L , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; if ( v17 ) { * @@a5@@ = Number ; @@result@@ = v17 ; } else { MCInst_clear ( @@a2@@ ) ; v18 = decodeInstruction_4 ( DecoderTablev8Crypto32 , @@a2@@ , @@v20@@ , @@a6@@ , Number L , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; if ( v18 ) { * @@a5@@ = Number ; @@result@@ = v18 ; } else { MCInst_clear ( @@a2@@ ) ; * @@a5@@ = Number ; @@result@@ = Number L ; } } } } } } } } return @@result@@ ; }", "source": [{"n": "a3", "t": {"T": 3, "t": "unsigned int"}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "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": "a5", "t": {"T": 3, "t": "_WORD"}, "location": "r72"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "a6", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r80"}, {"n": "v10", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s16"}, {"n": "v20", "t": {"T": 1, "n": "int", "s": 4}, "location": "s4"}, {"n": "i", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s8"}]} {"name": "_Thumb_getInstruction", "code": "__int64 __fastcall Thumb_getInstruction ( __int64 @@a1@@ , __int64 @@a2@@ , _WORD * @@a3@@ , unsigned __int64 @@a4@@ , _WORD * @@a5@@ , __int64 @@a6@@ ) { __int64 result ; unsigned int v7 ; unsigned int v8 ; unsigned int v9 ; __int64 v10 ; __int64 v11 ; unsigned int v12 ; unsigned int v13 ; unsigned int @@v18@@ ; unsigned int @@v19@@ ; int @@v20@@ ; int @@v21@@ ; bool @@v22@@ ; unsigned int @@v23@@ ; unsigned int @@v24@@ ; unsigned int @@v25@@ ; unsigned int @@v26@@ ; unsigned __int64 @@i@@ ; int @@v28@@ ; unsigned __int16 @@v29@@ ; if ( @@a4@@ <= Number ) return Number L ; if ( * ( _QWORD * ) ( * ( _QWORD * ) ( @@a2@@ + Number ) + Number L ) ) { memset ( ( void * ) ( * ( _QWORD * ) ( * ( _QWORD * ) ( @@a2@@ + Number ) + Number L ) + Number L ) , Number , Number ) ; for ( @@i@@ = Number L ; @@i@@ <= Number ; ++ @@i@@ ) * ( _DWORD * ) ( * ( _QWORD * ) ( * ( _QWORD * ) ( @@a2@@ + Number ) + Number L ) + Number * @@i@@ + Number ) = Number ; } LOWORD ( @@v19@@ ) = * @@a3@@ ; if ( * ( _BYTE * ) ( @@a1@@ + Number ) ) @@v29@@ = _byteswap_ushort ( @@v19@@ ) ; else @@v29@@ = @@v19@@ ; @@v18@@ = decodeInstruction_2 ( DecoderTableThumb16 , @@a2@@ , @@v29@@ , @@a6@@ , Number L , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; if ( @@v18@@ ) { * @@a5@@ = Number ; v7 = AddThumbPredicate ( @@a1@@ , @@a2@@ ) ; Check ( & @@v18@@ , v7 ) ; return @@v18@@ ; } MCInst_clear ( @@a2@@ ) ; @@v18@@ = decodeInstruction_2 ( DecoderTableThumbSBit16 , @@a2@@ , @@v29@@ , @@a6@@ , Number L , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; if ( @@v18@@ ) { * @@a5@@ = Number ; @@v22@@ = ITStatus_instrInITBlock ( @@a1@@ + Number ) ; v8 = AddThumbPredicate ( @@a1@@ , @@a2@@ ) ; Check ( & @@v18@@ , v8 ) ; AddThumb1SBit ( @@a2@@ , @@v22@@ ) ; return @@v18@@ ; } MCInst_clear ( @@a2@@ ) ; @@v18@@ = decodeInstruction_2 ( DecoderTableThumb216 , @@a2@@ , @@v29@@ , @@a6@@ , Number L , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; if ( @@v18@@ ) { * @@a5@@ = Number ; if ( ( unsigned int ) MCInst_getOpcode ( @@a2@@ ) == Number && ITStatus_instrInITBlock ( @@a1@@ + Number ) ) { result = Number L ; } else { v9 = AddThumbPredicate ( @@a1@@ , @@a2@@ ) ; Check ( & @@v18@@ , v9 ) ; if ( ( unsigned int ) MCInst_getOpcode ( @@a2@@ ) == Number ) { v10 = MCInst_getOperand ( @@a2@@ , Number L ) ; @@v21@@ = MCOperand_getImm ( v10 ) ; v11 = MCInst_getOperand ( @@a2@@ , Number L ) ; @@v20@@ = MCOperand_getImm ( v11 ) ; ITStatus_setITState ( @@a1@@ + Number , @@v21@@ , @@v20@@ ) ; } result = @@v18@@ ; } } else { if ( @@a4@@ <= Number ) return Number L ; @@v19@@ = * ( _DWORD * ) @@a3@@ ; if ( * ( _BYTE * ) ( @@a1@@ + Number ) ) @@v28@@ = _byteswap_ulong ( @@v19@@ ) ; else @@v28@@ = ( BYTE1 ( @@v19@@ ) << Number ) | HIWORD ( @@v19@@ ) | ( ( unsigned __int8 ) @@v19@@ << Number ) ; MCInst_clear ( @@a2@@ ) ; @@v18@@ = decodeInstruction_4 ( DecoderTableThumb32 , @@a2@@ , @@v28@@ , @@a6@@ , Number L , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; if ( @@v18@@ ) { * @@a5@@ = Number ; @@v22@@ = ITStatus_instrInITBlock ( @@a1@@ + Number ) ; v12 = AddThumbPredicate ( @@a1@@ , @@a2@@ ) ; Check ( & @@v18@@ , v12 ) ; AddThumb1SBit ( @@a2@@ , @@v22@@ ) ; return @@v18@@ ; } MCInst_clear ( @@a2@@ ) ; @@v18@@ = decodeInstruction_4 ( DecoderTableThumb232 , @@a2@@ , @@v28@@ , @@a6@@ , Number L , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; if ( @@v18@@ ) goto LABEL_42 ; MCInst_clear ( @@a2@@ ) ; @@v18@@ = decodeInstruction_4 ( DecoderTableVFP32 , @@a2@@ , @@v28@@ , @@a6@@ , Number L , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; if ( @@v18@@ || ( unsigned int ) fieldFromInstruction_4 ( @@v28@@ , Number , Number ) == Number && ( MCInst_clear ( @@a2@@ ) , ( @@v18@@ = decodeInstruction_4 ( DecoderTableVFP32 , @@a2@@ , @@v28@@ , @@a6@@ , Number L , * ( _DWORD * ) ( @@a1@@ + Number ) ) ) != Number ) ) { * @@a5@@ = Number ; UpdateThumbVFPPredicate ( @@a1@@ , @@a2@@ ) ; return @@v18@@ ; } MCInst_clear ( @@a2@@ ) ; @@v18@@ = decodeInstruction_4 ( DecoderTableVFPV832 , @@a2@@ , @@v28@@ , @@a6@@ , Number L , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; if ( @@v18@@ ) { * @@a5@@ = Number ; return @@v18@@ ; } if ( ( unsigned int ) fieldFromInstruction_4 ( @@v28@@ , Number , Number ) == Number ) { MCInst_clear ( @@a2@@ ) ; @@v18@@ = decodeInstruction_4 ( DecoderTableNEONDup32 , @@a2@@ , @@v28@@ , @@a6@@ , Number L , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; if ( @@v18@@ ) goto LABEL_42 ; } if ( ( unsigned int ) fieldFromInstruction_4 ( @@v28@@ , Number , Number ) == Number && ( MCInst_clear ( @@a2@@ ) , @@v26@@ = @@v28@@ & Number | Number , ( @@v18@@ = decodeInstruction_4 ( DecoderTableNEONLoadStore32 , @@a2@@ , @@v26@@ , @@a6@@ , Number L , * ( _DWORD * ) ( @@a1@@ + Number ) ) ) != Number ) || ( unsigned int ) fieldFromInstruction_4 ( @@v28@@ , Number , Number ) == Number && ( MCInst_clear ( @@a2@@ ) , @@v25@@ = ( ( @@v28@@ & Number ) >> Number ) & Number | @@v28@@ & Number | Number , ( @@v18@@ = decodeInstruction_4 ( DecoderTableNEONData32 , @@a2@@ , @@v25@@ , @@a6@@ , Number L , * ( _DWORD * ) ( @@a1@@ + Number ) ) ) != Number ) ) { LABEL_42 : * @@a5@@ = Number ; v13 = AddThumbPredicate ( @@a1@@ , @@a2@@ ) ; Check ( & @@v18@@ , v13 ) ; result = @@v18@@ ; } else { MCInst_clear ( @@a2@@ ) ; @@v24@@ = ( ( @@v28@@ & Number ) >> Number ) & Number | @@v28@@ & Number | Number ; @@v18@@ = decodeInstruction_4 ( DecoderTablev8Crypto32 , @@a2@@ , @@v24@@ , @@a6@@ , Number L , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; if ( @@v18@@ ) { * @@a5@@ = Number ; result = @@v18@@ ; } else { MCInst_clear ( @@a2@@ ) ; @@v23@@ = @@v28@@ & Number ; @@v18@@ = decodeInstruction_4 ( DecoderTablev8NEON32 , @@a2@@ , @@v28@@ & Number , @@a6@@ , Number L , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; if ( @@v18@@ ) { * @@a5@@ = Number ; result = @@v18@@ ; } else { MCInst_clear ( @@a2@@ ) ; * @@a5@@ = Number ; result = Number L ; } } } } return result ; }", "source": [{"n": "a3", "t": {"T": 3, "t": "_WORD"}, "location": "r16"}, {"n": "a4", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "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": "a5", "t": {"T": 3, "t": "_WORD"}, "location": "r72"}, {"n": "a6", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r80"}, {"n": "i", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s16"}, {"n": "v29", "t": {"T": 1, "n": "unsigned __int16", "s": 2}, "location": "s2"}, {"n": "v26", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s20"}, {"n": "v25", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s24"}, {"n": "v24", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s28"}, {"n": "v23", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s32"}, {"n": "v22", "t": {"T": 1, "n": "bool", "s": 1}, "location": "s33"}, {"n": "v21", "t": {"T": 1, "n": "int", "s": 4}, "location": "s40"}, {"n": "v20", "t": {"T": 1, "n": "int", "s": 4}, "location": "s44"}, {"n": "v19", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s48"}, {"n": "v18", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s52"}, {"n": "v28", "t": {"T": 1, "n": "int", "s": 4}, "location": "s8"}]}