{"name": "tcg_out_addi", "code": "unsigned __int64 __fastcall tcg_out_addi ( __int64 @@a1@@ , int @@a2@@ , __int64 @@a3@@ ) { unsigned __int64 @@v4@@ ; @@v4@@ = __readfsqword ( Number ) ; if ( @@a3@@ ) tgen_arithi ( @@a1@@ , Number , @@a2@@ , @@a3@@ , Number ) ; return __readfsqword ( Number ) ^ @@v4@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r16"}, {"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "a2", "t": {"T": 1, "n": "int", "s": 4}, "location": "r64"}, {"n": "v4", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]}
{"name": "tgen_arithi", "code": "unsigned __int64 __fastcall tgen_arithi ( __int64 @@a1@@ , int @@a2@@ , int @@a3@@ , __int64 @@a4@@ , int @@a5@@ ) { int @@v6@@ ; int @@v7@@ ; unsigned int @@v8@@ ; unsigned __int64 @@v9@@ ; @@v6@@ = @@a4@@ ; @@v9@@ = __readfsqword ( Number ) ; @@v8@@ = @@a2@@ & Number ; @@v7@@ = @@a2@@ & Number ; if ( ! @@a5@@ && ( ( @@a2@@ & Number ) == Number || @@v7@@ == Number ) && ( @@a4@@ == Number || @@a4@@ == Number ) ) { tcg_out_modrm ( @@a1@@ , @@v8@@ + Number , ( @@v7@@ == Number ) == @@a4@@ < Number , @@a3@@ ) ; } else { if ( @@v7@@ == Number ) { if ( @@a4@@ == Number ) { tcg_out_ext32u ( @@a1@@ , @@a3@@ , @@a3@@ ) ; return __readfsqword ( Number ) ^ @@v9@@ ; } if ( @@a4@@ == ( unsigned int ) @@a4@@ ) @@v8@@ = Number ; if ( @@a4@@ == Number ) { tcg_out_ext8u ( @@a1@@ , @@a3@@ , @@a3@@ ) ; return __readfsqword ( Number ) ^ @@v9@@ ; } if ( @@a4@@ == Number ) { tcg_out_ext16u ( @@a1@@ , @@a3@@ , @@a3@@ ) ; return __readfsqword ( Number ) ^ @@v9@@ ; } } if ( @@a4@@ == ( char ) @@a4@@ ) { tcg_out_modrm ( @@a1@@ , @@v8@@ + Number , @@v7@@ , @@a3@@ ) ; tcg_out8 ( @@a1@@ , @@v6@@ ) ; } else { if ( @@v8@@ && @@a4@@ != ( int ) @@a4@@ ) { fprintf ( stderr , String , String , Number L ) ; abort ( ) ; } tcg_out_modrm ( @@a1@@ , @@v8@@ + Number , @@v7@@ , @@a3@@ ) ; tcg_out32 ( @@a1@@ , @@v6@@ ) ; } } return __readfsqword ( Number ) ^ @@v9@@ ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "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": "int", "s": 4}, "location": "r64"}, {"n": "a5", "t": {"T": 1, "n": "int", "s": 4}, "location": "r72"}, {"n": "v8", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s16"}, {"n": "v7", "t": {"T": 1, "n": "int", "s": 4}, "location": "s28"}, {"n": "v6", "t": {"T": 1, "n": "int", "s": 4}, "location": "s40"}, {"n": "v9", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "tcg_target_qemu_prologue", "code": "unsigned __int64 __fastcall tcg_target_qemu_prologue ( __int64 @@a1@@ ) { unsigned int i ; int j ; unsigned __int64 @@v4@@ ; @@v4@@ = __readfsqword ( Number ) ; for ( i = Number ; i <= Number ; ++ i ) tcg_out_push ( @@a1@@ , tcg_target_callee_save_regs [ i ] ) ; tcg_out_addi ( @@a1@@ , Number , Number ) ; tcg_out_modrm ( @@a1@@ , Number , Number , Number ) ; optimization_ret_addr = * ( _QWORD * ) ( @@a1@@ + Number ) ; tcg_out_movi ( @@a1@@ , Number , Number , Number L ) ; tb_ret_addr = * ( _QWORD * ) ( @@a1@@ + Number ) ; tcg_out_addi ( @@a1@@ , Number , Number L ) ; for ( j = Number ; j >= Number ; -- j ) tcg_out_pop ( @@a1@@ , tcg_target_callee_save_regs [ j ] ) ; tcg_out_opc ( @@a1@@ , Number , Number , Number , Number ) ; return __readfsqword ( Number ) ^ @@v4@@ ; }", "source": [{"n": "a1", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "r56"}, {"n": "v4", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}]} {"name": "tcg_reg_alloc_call", "code": "__int64 __fastcall tcg_reg_alloc_call ( __int64 @@a1@@ , __int64 @@a2@@ , int @@a3@@ , __int64 * @@a4@@ , unsigned int @@a5@@ ) { __int64 * @@v6@@ ; int @@v9@@ ; int @@v10@@ ; int @@i@@ ; int @@j@@ ; int @@v13@@ ; int @@v14@@ ; int @@v15@@ ; int @@v16@@ ; unsigned int @@v17@@ ; _BOOL4 @@v18@@ ; __int64 @@v19@@ ; __int64 @@v20@@ ; unsigned __int64 @@v21@@ ; __int64 @@v22@@ ; __int16 * @@v23@@ ; __int64 @@v24@@ ; __int64 @@v25@@ ; unsigned __int64 @@v26@@ ; @@v26@@ = __readfsqword ( Number ) ; @@v6@@ = @@a4@@ + Number ; @@v21@@ = * @@a4@@ ; @@v14@@ = @@v21@@ >> Number ; @@v15@@ = ( unsigned __int16 ) @@v21@@ ; @@v16@@ = ( unsigned __int16 ) @@v21@@ - Number ; @@v17@@ = @@a4@@ [ @@v14@@ + Number + ( unsigned __int16 ) @@v21@@ ] ; @@v10@@ = tcg_target_get_call_iarg_regs_count ( @@v17@@ ) ; if ( @@v10@@ > @@v16@@ ) @@v10@@ = @@v16@@ ; @@v22@@ = ( Number L * ( @@v16@@ - @@v10@@ ) + Number ) & Number ; @@v18@@ = @@v22@@ > Number ; if ( @@v22@@ > Number ) tcg_out_addi ( @@a1@@ , Number , - @@v22@@ ) ; @@v20@@ = Number L ; for ( @@i@@ = @@v10@@ ; @@i@@ < @@v16@@ ; ++ @@i@@ ) { @@v21@@ = @@v6@@ [ @@v14@@ + @@i@@ ] ; if ( @@v21@@ != Number ) { @@v24@@ = * ( _QWORD * ) ( @@a1@@ + Number ) + Number * @@v21@@ ; switch ( * ( _DWORD * ) ( @@v24@@ + Number ) ) { case Number : tcg_out_st ( @@a1@@ , * ( _DWORD * ) ( @@v24@@ + Number ) , * ( _DWORD * ) ( @@v24@@ + Number ) , Number , @@v20@@ ) ; break ; case Number : @@j@@ = tcg_reg_alloc ( @@a1@@ , tcg_target_available_regs [ * ( unsigned int * ) ( @@v24@@ + Number ) ] , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; tcg_out_ld ( @@a1@@ , * ( _DWORD * ) ( @@v24@@ + Number ) , @@j@@ , * ( _DWORD * ) ( @@v24@@ + Number ) , * ( _QWORD * ) ( @@v24@@ + Number ) ) ; tcg_out_st ( @@a1@@ , * ( _DWORD * ) ( @@v24@@ + Number ) , @@j@@ , Number , @@v20@@ ) ; break ; case Number : @@j@@ = tcg_reg_alloc ( @@a1@@ , tcg_target_available_regs [ * ( unsigned int * ) ( @@v24@@ + Number ) ] , * ( _DWORD * ) ( @@a1@@ + Number ) ) ; tcg_out_movi ( @@a1@@ , * ( _DWORD * ) ( @@v24@@ + Number ) , @@j@@ , * ( _QWORD * ) ( @@v24@@ + Number ) ) ; tcg_out_st ( @@a1@@ , * ( _DWORD * ) ( @@v24@@ + Number ) , @@j@@ , Number , @@v20@@ ) ; break ; default : fprintf ( stderr , String , String , Number L ) ; abort ( ) ; } } @@v20@@ += Number L ; } @@v13@@ = * ( _DWORD * ) ( @@a1@@ + Number ) ; for ( @@i@@ = Number ; @@i@@ < @@v10@@ ; ++ @@i@@ ) { @@v21@@ = @@v6@@ [ @@v14@@ + @@i@@ ] ; if ( @@v21@@ != Number ) { @@v24@@ = * ( _QWORD * ) ( @@a1@@ + Number ) + Number * @@v21@@ ; @@j@@ = tcg_target_call_iarg_regs [ @@i@@ ] ; tcg_reg_free ( @@a1@@ , @@j@@ ) ; switch ( * ( _DWORD * ) ( @@v24@@ + Number ) ) { case Number : if ( @@j@@ != * ( _DWORD * ) ( @@v24@@ + Number ) ) tcg_out_mov ( @@a1@@ , * ( _DWORD * ) ( @@v24@@ + Number ) , @@j@@ , * ( _DWORD * ) ( @@v24@@ + Number ) ) ; break ; case Number : tcg_out_ld ( @@a1@@ , * ( _DWORD * ) ( @@v24@@ + Number ) , @@j@@ , * ( _DWORD * ) ( @@v24@@ + Number ) , * ( _QWORD * ) ( @@v24@@ + Number ) ) ; break ; case Number : tcg_out_movi ( @@a1@@ , * ( _DWORD * ) ( @@v24@@ + Number ) , @@j@@ , * ( _QWORD * ) ( @@v24@@ + Number ) ) ; break ; default : fprintf ( stderr , String , String , Number L ) ; abort ( ) ; } @@v13@@ |= Number L << @@j@@ ; } } @@v19@@ = @@v6@@ [ @@v14@@ - Number + @@v15@@ ] ; @@v23@@ = * ( __int16 * * ) ( @@a2@@ + Number ) ; @@v24@@ = * ( _QWORD * ) ( @@a1@@ + Number ) + Number * @@v19@@ ; @@v25@@ = * ( _QWORD * ) ( @@v24@@ + Number ) ; @@v9@@ = Number ; switch ( * ( _DWORD * ) ( @@v24@@ + Number ) ) { case Number : @@j@@ = tcg_reg_alloc ( @@a1@@ , * ( ( _DWORD * ) @@v23@@ + Number ) , @@v13@@ ) ; tcg_out_ld ( @@a1@@ , * ( _DWORD * ) ( @@v24@@ + Number ) , @@j@@ , * ( _DWORD * ) ( @@v24@@ + Number ) , * ( _QWORD * ) ( @@v24@@ + Number ) ) ; @@v19@@ = @@j@@ ; @@v13@@ |= Number L << @@j@@ ; break ; case Number : @@j@@ = * ( _DWORD * ) ( @@v24@@ + Number ) ; if ( ( ( * ( ( _DWORD * ) @@v23@@ + Number ) >> @@j@@ ) & Number ) == Number ) { @@j@@ = tcg_reg_alloc ( @@a1@@ , * ( ( _DWORD * ) @@v23@@ + Number ) , @@v13@@ ) ; tcg_out_mov ( @@a1@@ , * ( _DWORD * ) ( @@v24@@ + Number ) , @@j@@ , * ( _DWORD * ) ( @@v24@@ + Number ) ) ; } @@v19@@ = @@j@@ ; @@v13@@ |= Number L << @@j@@ ; break ; case Number : if ( tcg_target_const_match ( @@v25@@ , @@v23@@ ) ) { @@v9@@ = Number ; @@v19@@ = @@v25@@ ; } else { @@j@@ = tcg_reg_alloc ( @@a1@@ , * ( ( _DWORD * ) @@v23@@ + Number ) , @@v13@@ ) ; tcg_out_movi ( @@a1@@ , * ( _DWORD * ) ( @@v24@@ + Number ) , @@j@@ , @@v25@@ ) ; @@v19@@ = @@j@@ ; @@v13@@ |= Number L << @@j@@ ; } break ; default : fprintf ( stderr , String , String , Number L ) ; abort ( ) ; } for ( @@i@@ = Number ; @@i@@ < @@v15@@ ; ++ @@i@@ ) { @@v21@@ = @@v6@@ [ @@v14@@ + @@i@@ ] ; if ( ( ( @@a5@@ >> @@i@@ ) & Number ) != Number ) { @@v24@@ = * ( _QWORD * ) ( @@a1@@ + Number ) + Number * @@v21@@ ; if ( ( * ( _BYTE * ) ( @@v24@@ + Number ) & Number ) == Number ) { if ( * ( _DWORD * ) ( @@v24@@ + Number ) == Number ) * ( _DWORD * ) ( @@a1@@ + Number * ( * ( int * ) ( @@v24@@ + Number ) + Number L ) + Number ) = Number ; * ( _DWORD * ) ( @@v24@@ + Number ) = Number ; } } } for ( @@j@@ = Number ; @@j@@ <= Number ; ++ @@j@@ ) { if ( ( ( ( unsigned int ) tcg_target_call_clobber_regs >> @@j@@ ) & Number ) != Number ) tcg_reg_free ( @@a1@@ , @@j@@ ) ; } if ( ( @@v17@@ & Number ) == Number ) save_globals ( @@a1@@ , @@v13@@ ) ; tcg_out_op ( @@a1@@ , @@a3@@ , & @@v19@@ , & @@v9@@ ) ; if ( @@v18@@ ) tcg_out_addi ( @@a1@@ , Number , @@v22@@ ) ; for ( @@i@@ = Number ; @@i@@ < @@v14@@ ; ++ @@i@@ ) { @@v21@@ = @@v6@@ [ @@i@@ ] ; @@v24@@ = * ( _QWORD * ) ( @@a1@@ + Number ) + Number * @@v21@@ ; @@j@@ = tcg_target_call_oarg_regs [ @@i@@ ] ; if ( ( * ( _BYTE * ) ( @@v24@@ + Number ) & Number ) != Number ) { if ( @@j@@ != * ( _DWORD * ) ( @@v24@@ + Number ) ) tcg_out_mov ( @@a1@@ , * ( _DWORD * ) ( @@v24@@ + Number ) , * ( _DWORD * ) ( @@v24@@ + Number ) , @@j@@ ) ; } else { if ( * ( _DWORD * ) ( @@v24@@ + Number ) == Number ) * ( _DWORD * ) ( @@a1@@ + Number * ( * ( int * ) ( @@v24@@ + Number ) + Number L ) + Number ) = Number ; * ( _DWORD * ) ( @@v24@@ + Number ) = Number ; * ( _DWORD * ) ( @@v24@@ + Number ) = @@j@@ ; * ( _BYTE * ) ( @@v24@@ + Number ) &= Number ; * ( _DWORD * ) ( @@a1@@ + Number * ( @@j@@ + Number L ) + Number ) = @@v21@@ ; } } return @@v14@@ + @@v15@@ + ( unsigned int ) * ( unsigned __int8 * ) ( @@a2@@ + Number ) + Number ; }", "source": [{"n": "a3", "t": {"T": 1, "n": "int", "s": 4}, "location": "r16"}, {"n": "a4", "t": {"T": 3, "t": "__int64"}, "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": 1, "n": "unsigned int", "s": 4}, "location": "r72"}, {"n": "v10", "t": {"T": 1, "n": "int", "s": 4}, "location": "s100"}, {"n": "v9", "t": {"T": 1, "n": "int", "s": 4}, "location": "s104"}, {"n": "v6", "t": {"T": 3, "t": "__int64"}, "location": "s144"}, {"n": "v25", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s16"}, {"n": "v24", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s24"}, {"n": "v23", "t": {"T": 3, "t": "__int16"}, "location": "s32"}, {"n": "v22", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s40"}, {"n": "v21", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s48"}, {"n": "v20", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s56"}, {"n": "v19", "t": {"T": 1, "n": "__int64", "s": 8}, "location": "s64"}, {"n": "v18", "t": {"T": 1, "n": "_BOOL4", "s": 4}, "location": "s68"}, {"n": "v17", "t": {"T": 1, "n": "unsigned int", "s": 4}, "location": "s72"}, {"n": "v16", "t": {"T": 1, "n": "int", "s": 4}, "location": "s76"}, {"n": "v26", "t": {"T": 1, "n": "unsigned __int64", "s": 8}, "location": "s8"}, {"n": "v15", "t": {"T": 1, "n": "int", "s": 4}, "location": "s80"}, {"n": "v14", "t": {"T": 1, "n": "int", "s": 4}, "location": "s84"}, {"n": "v13", "t": {"T": 1, "n": "int", "s": 4}, "location": "s88"}, {"n": "j", "t": {"T": 1, "n": "int", "s": 4}, "location": "s92"}, {"n": "i", "t": {"T": 1, "n": "int", "s": 4}, "location": "s96"}]}