{"name": "print_insn_s390", "code": "__int64 __fastcall print_insn_s390 ( __int64 @@a1@@ , __int64 @@a2@@ ) { __int64 @@result@@ ; char @@v3@@ ; unsigned int @@v4@@ ; int @@v5@@ ; int @@i@@ ; unsigned int @@v7@@ ; void * * @@j@@ ; _BYTE * @@k@@ ; char * @@v10@@ ; char @@s@@ [ Number ] ; unsigned __int64 @@v12@@ ; @@v12@@ = __readfsqword ( Number ) ; if ( ! init_flag ) init_disasm ( @@a2@@ ) ; * ( _DWORD * ) ( @@a2@@ + Number ) = Number ; memset ( @@s@@ , Number , sizeof ( @@s@@ ) ) ; @@v4@@ = ( * ( __int64 ( __fastcall * * ) ( __int64 , char * , __int64 , __int64 ) ) ( @@a2@@ + Number ) ) ( @@a1@@ , @@s@@ , Number L , @@a2@@ ) ; if ( @@v4@@ ) { for ( @@i@@ = Number ; @@i@@ <= Number && ! ( * ( unsigned int ( __fastcall * * ) ( __int64 , char * , _QWORD , __int64 ) ) ( @@a2@@ + Number ) ) ( @@a1@@ , @@s@@ , ( unsigned int ) ( @@i@@ + Number ) , @@a2@@ ) ; ++ @@i@@ ) { ; } if ( @@i@@ <= Number ) { ( * ( void ( __fastcall * * ) ( _QWORD , __int64 , __int64 ) ) ( @@a2@@ + Number ) ) ( @@v4@@ , @@a1@@ , @@a2@@ ) ; return Number ; } @@v5@@ = Number * ( ( ( ( ( unsigned __int8 ) @@s@@ [ Number ] >> Number ) + Number ) >> Number ) + Number ) ; @@v4@@ = @@v5@@ > @@i@@ ; } else { @@i@@ = Number ; @@v5@@ = Number * ( ( ( ( ( unsigned __int8 ) @@s@@ [ Number ] >> Number ) + Number ) >> Number ) + Number ) ; } if ( ! @@v4@@ ) { for ( @@j@@ = & s390_opcodes + Number * opc_index [ ( unsigned __int8 ) @@s@@ [ Number ] ] ; ; @@j@@ += Number ) { if ( @@j@@ >= & s390_opcodes + Number || @@s@@ [ Number ] != * ( ( _BYTE * ) @@j@@ + Number ) ) goto LABEL_58 ; if ( ( * ( ( _BYTE * ) @@j@@ + Number ) & @@s@@ [ Number ] ) == * ( ( _BYTE * ) @@j@@ + Number ) && ( ( _BYTE ) @@j@@ [ Number ] & @@s@@ [ Number ] ) == * ( ( _BYTE * ) @@j@@ + Number ) && ( * ( ( _BYTE * ) @@j@@ + Number ) & @@s@@ [ Number ] ) == * ( ( _BYTE * ) @@j@@ + Number ) && ( * ( ( _BYTE * ) @@j@@ + Number ) & @@s@@ [ Number ] ) == * ( ( _BYTE * ) @@j@@ + Number ) && ( * ( ( _BYTE * ) @@j@@ + Number ) & @@s@@ [ Number ] ) == * ( ( _BYTE * ) @@j@@ + Number ) ) { break ; } } ( * ( void ( __fastcall * * ) ( _QWORD , void * , void * ) ) @@a2@@ ) ( * ( _QWORD * ) ( @@a2@@ + Number ) , & unk_21A0 , * @@j@@ ) ; if ( ( qword_1E28 [ Number * * ( ( unsigned __int8 * ) @@j@@ + Number ) ] & Number ) != Number ) @@v3@@ = Number ; else @@v3@@ = Number ; for ( @@k@@ = @@j@@ + Number ; ; ++ @@k@@ ) { if ( ! * @@k@@ ) return ( unsigned int ) @@v5@@ ; @@v10@@ = ( char * ) & s390_operands + Number * ( unsigned __int8 ) * @@k@@ ; @@v7@@ = s390_extract_operand ( ( __int64 ) @@s@@ , ( __int64 ) @@v10@@ ) ; if ( ( * ( ( _QWORD * ) @@v10@@ + Number ) & Number ) == Number || @@v7@@ ) { if ( ( * ( ( _QWORD * ) @@v10@@ + Number ) & Number ) != Number && ! @@v7@@ && @@v3@@ == Number ) { @@v3@@ = Number ; continue ; } if ( @@v3@@ ) ( * ( void ( __fastcall * * ) ( _QWORD , void * , _QWORD ) ) @@a2@@ ) ( * ( _QWORD * ) ( @@a2@@ + Number ) , & unk_21A3 , ( unsigned int ) @@v3@@ ) ; if ( ( * ( ( _QWORD * ) @@v10@@ + Number ) & Number L ) != Number ) { ( * ( void ( * * ) ( _QWORD , const char * , ... ) ) @@a2@@ ) ( * ( _QWORD * ) ( @@a2@@ + Number ) , String , @@v7@@ ) ; } else if ( ( * ( ( _QWORD * ) @@v10@@ + Number ) & Number L ) != Number ) { ( * ( void ( * * ) ( _QWORD , const char * , ... ) ) @@a2@@ ) ( * ( _QWORD * ) ( @@a2@@ + Number ) , String , @@v7@@ ) ; } else if ( ( * ( ( _QWORD * ) @@v10@@ + Number ) & Number L ) != Number ) { ( * ( void ( * * ) ( _QWORD , const char * , ... ) ) @@a2@@ ) ( * ( _QWORD * ) ( @@a2@@ + Number ) , String , @@v7@@ ) ; } else if ( ( * ( ( _QWORD * ) @@v10@@ + Number ) & Number L ) != Number ) { ( * ( void ( * * ) ( _QWORD , const char * , ... ) ) @@a2@@ ) ( * ( _QWORD * ) ( @@a2@@ + Number ) , String , @@v7@@ ) ; } else if ( ( * ( ( _QWORD * ) @@v10@@ + Number ) & Number ) != Number ) { ( * ( void ( __fastcall * * ) ( __int64 , __int64 ) ) ( @@a2@@ + Number ) ) ( @@a1@@ + ( int ) @@v7@@ , @@a2@@ ) ; } else if ( ( * ( ( _QWORD * ) @@v10@@ + Number ) & Number ) != Number ) { ( * ( void ( * * ) ( _QWORD , const char * , ... ) ) @@a2@@ ) ( * ( _QWORD * ) ( @@a2@@ + Number ) , String , @@v7@@ ) ; } else { if ( ( * ( ( _QWORD * ) @@v10@@ + Number ) & Number ) != Number ) { ( * ( void ( __fastcall * * ) ( _QWORD , void * , char * ) ) @@a2@@ ) ( * ( _QWORD * ) ( @@a2@@ + Number ) , & unk_21A0 , & s390_ccode_name [ Number * @@v7@@ ] ) ; @@v3@@ = Number ; continue ; } ( * ( void ( * * ) ( _QWORD , const char * , ... ) ) @@a2@@ ) ( * ( _QWORD * ) ( @@a2@@ + Number ) , String , @@v7@@ ) ; } if ( ( * ( ( _QWORD * ) @@v10@@ + Number ) & Number ) != Number ) { @@v3@@ = Number ; } else { if ( ( * ( ( _QWORD * ) @@v10@@ + Number ) & Number ) != Number ) ( * ( void ( __fastcall * * ) ( _QWORD , const char * ) ) @@a2@@ ) ( * ( _QWORD * ) ( @@a2@@ + Number ) , String ) ; @@v3@@ = Number ; } } } } LABEL_58 : if ( @@i@@ <= Number ) { if ( @@i@@ <= Number ) { ( * ( void ( * * ) ( _QWORD , const char * , ... ) ) @@a2@@ ) ( * ( _QWORD * ) ( @@a2@@ + Number ) , String , ( unsigned __int8 ) @@s@@ [ Number ] ) ; @@result@@ = Number L ; } else { ( * ( void ( * * ) ( _QWORD , const char * , ... ) ) @@a2@@ ) ( * ( _QWORD * ) ( @@a2@@ + Number ) , String , ( ( unsigned __int8 ) @@s@@ [ Number ] << Number ) + ( unsigned int ) ( unsigned __int8 ) @@s@@ [ Number ] ) ; @@result@@ = Number L ; } } else { ( * ( void ( * * ) ( _QWORD , const char * , ... ) ) @@a2@@ ) ( * ( _QWORD * ) ( @@a2@@ + Number ) , String , ( ( ( ( ( ( unsigned __int8 ) @@s@@ [ Number ] << Number ) + ( unsigned __int8 ) @@s@@ [ Number ] ) << Number ) + ( unsigned __int8 ) @@s@@ [ Number ] ) << Number ) + ( unsigned int ) ( unsigned __int8 ) @@s@@ [ Number ] ) ; @@result@@ = Number L ; } return @@result@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r64"}, {"n": "result", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r8"}, {"n": "s", "t": {"T": 2, "n": 6, "s": 1, "t": "char"}, "location": "s14"}, {"n": "v10", "t": {"T": 3, "t": "char"}, "location": "s24"}, {"n": "k", "t": {"T": 3, "t": "_BYTE"}, "location": "s40"}, {"n": "j", "t": {"T": 3, "t": "void *"}, "location": "s48"}, {"n": "v7", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s56"}, {"n": "i", "t": {"T": 1, "n": "int", "s": 4}, "location": "s60"}, {"n": "v5", "t": {"T": 1, "n": "int", "s": 4}, "location": "s64"}, {"n": "v4", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s68"}, {"n": "v3", "t": {"T": 1, "n": "char", "s": 1}, "location": "s69"}, {"n": "v12", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]}