{"name": "DecodeAddrMode3Instruction", "code": "__int64 __fastcall DecodeAddrMode3Instruction ( __int64 @@a1@@ , unsigned int @@a2@@ ) { int v2 ; unsigned int v3 ; unsigned int v4 ; unsigned int v5 ; unsigned int v6 ; __int64 result ; unsigned int v8 ; unsigned int v9 ; unsigned int v10 ; unsigned int v11 ; unsigned int v12 ; unsigned int v13 ; unsigned int v14 ; unsigned int @@v15@@ ; bool @@v16@@ ; int @@v17@@ ; int @@v18@@ ; int @@v19@@ ; unsigned int @@v20@@ ; int @@v21@@ ; int @@v22@@ ; unsigned int @@v23@@ ; unsigned int @@v24@@ ; unsigned int @@v25@@ ; unsigned int @@v26@@ ; @@v15@@ = Number ; @@v25@@ = fieldFromInstruction_4 ( @@a2@@ , Number , Number ) ; @@v24@@ = fieldFromInstruction_4 ( @@a2@@ , Number , Number ) ; @@v23@@ = fieldFromInstruction_4 ( @@a2@@ , Number , Number ) ; @@v22@@ = fieldFromInstruction_4 ( @@a2@@ , Number , Number ) ; @@v21@@ = fieldFromInstruction_4 ( @@a2@@ , Number , Number ) ; if ( ( fieldFromInstruction_4 ( @@a2@@ , Number , Number ) & Number ) != Number ) v2 = Number ; else v2 = Number ; @@v26@@ = v2 ; @@v20@@ = fieldFromInstruction_4 ( @@a2@@ , Number , Number ) ; @@v19@@ = fieldFromInstruction_4 ( @@a2@@ , Number , Number ) ; @@v18@@ = fieldFromInstruction_4 ( @@a2@@ , Number , Number ) ; @@v17@@ = @@v25@@ + Number ; @@v16@@ = @@v19@@ == Number || @@v18@@ == Number ; v3 = MCInst_getOpcode ( @@a1@@ ) ; if ( v3 > Number ) { if ( v3 - Number > Number ) goto LABEL_10 ; } else if ( v3 < Number ) { goto LABEL_10 ; } if ( ( @@v25@@ & Number ) != Number ) @@v15@@ = Number ; LABEL_10 : v4 = MCInst_getOpcode ( @@a1@@ ) ; if ( v4 <= Number ) { if ( v4 >= Number || v4 == Number ) { if ( @@v25@@ == Number ) @@v15@@ = Number ; if ( @@v16@@ && ( @@v24@@ == Number || @@v24@@ == @@v25@@ ) ) @@v15@@ = Number ; if ( ! @@v22@@ && @@v23@@ == Number ) @@v15@@ = Number ; } else if ( v4 <= Number ) { if ( v4 > Number ) { if ( v4 - Number <= Number ) { if ( ! @@v18@@ && @@v19@@ == Number ) @@v15@@ = Number ; if ( @@v16@@ && ( @@v24@@ == Number || @@v24@@ == @@v25@@ || @@v24@@ == @@v17@@ ) ) @@v15@@ = Number ; if ( @@v22@@ && @@v23@@ == Number ) @@v15@@ = Number ; if ( @@v17@@ == Number ) @@v15@@ = Number ; if ( ! @@v22@@ && ( unsigned int ) fieldFromInstruction_4 ( @@a2@@ , Number , Number ) ) @@v15@@ = Number ; } } else if ( v4 >= Number ) { switch ( v4 ) { case Number : case Number : case Number : if ( @@v22@@ && @@v24@@ == Number ) { if ( @@v17@@ == Number ) @@v15@@ = Number ; } else { if ( ! @@v18@@ && @@v19@@ == Number ) @@v15@@ = Number ; if ( ! @@v22@@ && ( @@v17@@ == Number || @@v23@@ == Number || @@v23@@ == @@v25@@ || @@v23@@ == @@v17@@ ) ) @@v15@@ = Number ; if ( ! @@v22@@ && @@v16@@ && @@v24@@ == Number ) @@v15@@ = Number ; if ( @@v16@@ && ( @@v24@@ == @@v25@@ || @@v24@@ == @@v17@@ ) ) @@v15@@ = Number ; } break ; case Number : case Number : case Number : if ( @@v22@@ && @@v24@@ == Number ) { if ( @@v25@@ == Number ) @@v15@@ = Number ; } else { if ( @@v25@@ == Number ) @@v15@@ = Number ; if ( ! @@v22@@ && @@v23@@ == Number ) @@v15@@ = Number ; if ( ! @@v22@@ && @@v16@@ && ( @@v24@@ == Number || @@v24@@ == @@v25@@ ) ) @@v15@@ = Number ; } break ; case Number : case Number : case Number : case Number : case Number : case Number : if ( @@v22@@ && @@v24@@ == Number ) { if ( @@v25@@ == Number ) @@v15@@ = Number ; } else { if ( @@v22@@ && ( @@v25@@ == Number || @@v16@@ && @@v24@@ == @@v25@@ ) ) @@v15@@ = Number ; if ( ! @@v22@@ && ( @@v25@@ == Number || @@v23@@ == Number ) ) @@v15@@ = Number ; if ( ! @@v22@@ && @@v16@@ && ( @@v24@@ == Number || @@v24@@ == @@v25@@ ) ) @@v15@@ = Number ; } break ; default : break ; } } } } if ( @@v16@@ ) { * ( _BYTE * ) ( @@a1@@ + Number ) = Number ; @@v26@@ |= @@v18@@ ? Number : Number ; v5 = MCInst_getOpcode ( @@a1@@ ) - Number ; if ( v5 <= Number && ( ( Number L << v5 ) & Number ) != Number ) { v6 = DecodeGPRRegisterClass ( @@a1@@ , @@v24@@ ) ; if ( ( unsigned __int8 ) Check ( & @@v15@@ , v6 ) != Number ) return Number L ; } } v8 = DecodeGPRRegisterClass ( @@a1@@ , @@v25@@ ) ; if ( ( unsigned __int8 ) Check ( & @@v15@@ , v8 ) != Number ) return Number L ; v9 = MCInst_getOpcode ( @@a1@@ ) ; if ( v9 > Number ) { if ( v9 - Number > Number ) goto LABEL_112 ; } else if ( v9 < Number ) { goto LABEL_112 ; } v10 = DecodeGPRRegisterClass ( @@a1@@ , @@v25@@ + Number ) ; if ( ( unsigned __int8 ) Check ( & @@v15@@ , v10 ) != Number ) return Number L ; LABEL_112 : if ( @@v16@@ ) { switch ( ( unsigned int ) MCInst_getOpcode ( @@a1@@ ) ) { 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 : v11 = DecodeGPRRegisterClass ( @@a1@@ , @@v24@@ ) ; if ( ( unsigned __int8 ) Check ( & @@v15@@ , v11 ) == Number ) goto LABEL_116 ; result = Number L ; break ; default : goto LABEL_116 ; } } else { LABEL_116 : v12 = DecodeGPRRegisterClass ( @@a1@@ , @@v24@@ ) ; if ( ( unsigned __int8 ) Check ( & @@v15@@ , v12 ) != Number ) return Number L ; if ( @@v22@@ ) { MCOperand_CreateReg0 ( @@a1@@ , Number L ) ; MCOperand_CreateImm0 ( @@a1@@ , @@v23@@ | @@v26@@ | ( Number * @@v21@@ ) ) ; } else { v13 = DecodeGPRRegisterClass ( @@a1@@ , @@v23@@ ) ; if ( ( unsigned __int8 ) Check ( & @@v15@@ , v13 ) != Number ) return Number L ; MCOperand_CreateImm0 ( @@a1@@ , @@v26@@ ) ; } v14 = DecodePredicateOperand ( @@a1@@ , @@v20@@ ) ; if ( ( unsigned __int8 ) Check ( & @@v15@@ , v14 ) != Number ) result = Number L ; else result = @@v15@@ ; } return result ; }", "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": "v24", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s12"}, {"n": "v23", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s16"}, {"n": "v22", "t": {"T": 1, "n": "int", "s": 4}, "location": "s20"}, {"n": "v21", "t": {"T": 1, "n": "int", "s": 4}, "location": "s24"}, {"n": "v20", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s28"}, {"n": "v19", "t": {"T": 1, "n": "int", "s": 4}, "location": "s32"}, {"n": "v18", "t": {"T": 1, "n": "int", "s": 4}, "location": "s36"}, {"n": "v26", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s4"}, {"n": "v17", "t": {"T": 1, "n": "int", "s": 4}, "location": "s40"}, {"n": "v16", "t": {"T": 1, "n": "bool", "s": 1}, "location": "s41"}, {"n": "v15", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s48"}, {"n": "v25", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s8"}]}
{"name": "Check", "code": "__int64 __fastcall Check ( _DWORD * @@a1@@ , unsigned int @@a2@@ ) { if ( @@a2@@ == Number ) return Number L ; if ( @@a2@@ <= Number ) { if ( ! @@a2@@ ) { * @@a1@@ = Number ; return Number L ; } if ( @@a2@@ == Number ) { * @@a1@@ = Number ; return Number L ; } } return Number L ; }", "source": [{"n": "a1", "t": {"T": 3, "t": "_DWORD"}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "unsigned int", "s": 4}, "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": "DecodePredicateOperand", "code": "__int64 __fastcall DecodePredicateOperand ( __int64 @@a1@@ , unsigned int @@a2@@ ) { if ( @@a2@@ == Number ) return Number L ; if ( ( unsigned int ) MCInst_getOpcode ( @@a1@@ ) == Number && @@a2@@ == Number ) return Number L ; MCOperand_CreateImm0 ( @@a1@@ , @@a2@@ ) ; if ( @@a2@@ == Number ) MCOperand_CreateReg0 ( @@a1@@ , Number L ) ; else MCOperand_CreateReg0 ( @@a1@@ , Number L ) ; return Number L ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r64"}]} {"name": "DecodeGPRRegisterClass", "code": "__int64 __fastcall DecodeGPRRegisterClass ( __int64 @@a1@@ , unsigned int @@a2@@ ) { if ( @@a2@@ > Number ) return Number L ; MCOperand_CreateReg0 ( @@a1@@ , ( unsigned __int16 ) GPRDecoderTable [ @@a2@@ ] ) ; return Number L ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "r64"}]}