{"name": "s390_extract_operand", "code": "__int64 __fastcall s390_extract_operand ( __int64 @@a1@@ , __int64 @@a2@@ ) { unsigned __int8 * @@v2@@ ; unsigned __int8 * @@v4@@ ; unsigned int v5 ; unsigned int v6 ; int @@v7@@ ; @@v4@@ = ( unsigned __int8 * ) ( * ( _DWORD * ) ( @@a2@@ + Number ) / Number + @@a1@@ ) ; @@v7@@ = ( * ( _DWORD * ) ( @@a2@@ + Number ) & Number ) + * ( _DWORD * ) @@a2@@ ; v5 = Number ; do { @@v2@@ = @@v4@@ ++ ; v5 = * @@v2@@ | ( v5 << Number ) ; @@v7@@ -= Number ; } while ( @@v7@@ > Number ) ; v6 = ( Number * ( Number << ( * ( _BYTE * ) @@a2@@ - Number ) ) - Number ) & ( v5 >> - ( char ) @@v7@@ ) ; if ( * ( _DWORD * ) @@a2@@ == Number && * ( _DWORD * ) ( @@a2@@ + Number ) == Number ) v6 = ( v6 << Number ) & Number | ( v6 >> Number ) & Number ; if ( ( * ( _QWORD * ) ( @@a2@@ + Number ) & Number ) != Number && ( ( v6 >> ( * ( _BYTE * ) @@a2@@ - Number ) ) & Number ) != Number ) v6 |= Number * ( Number << ( * ( _BYTE * ) @@a2@@ - Number ) ) ; if ( ( * ( _QWORD * ) ( @@a2@@ + Number ) & Number ) != Number ) v6 *= Number ; if ( ( * ( _QWORD * ) ( @@a2@@ + Number ) & Number ) != Number ) ++ v6 ; return v6 ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}, {"n": "v2", "t": {"T": 3, "t": "unsigned __int8"}, "location": "r8"}, {"n": "v4", "t": {"T": 3, "t": "unsigned __int8"}, "location": "s24"}, {"n": "v7", "t": {"T": 1, "n": "int", "s": 4}, "location": "s4"}]}